Todor wrote:

Чети по-долу.

 > 
 > 
 >   256K
 > --------------|
 >               |
 >               |
 >   128K        |  512K
 > --------------|--------------
 >   64K         |
 > --------------|
 >   64K         |
 > --------------|
 > 
 > 
 > Възможни ли да се направи такова разпределение на трафика.
 > 
 > Линия с капацитет 512K
 > Разделя се на 4 класа.
 > - 256К
 > - 128К
 > - 2x64
 > 
 > 1. клас (256К) се използва само от USER1
 > 2. клас (128К) се използва само от USER2 и не се дели с друг
 > 3. клас (64К)  се използва само от USER3 и не се дели с друг
 > 4. клас (64К)  се използва от всички останали участващи в мрежата
 > 
 > При неизползване на 1. клас (256К) от USER1
 > тя да може да се използва от всички останали
 > но при влизане на USER1 да се заема пак от него.
 > 
 > Всичко това се отнася за download трафик.
 > 
 > Благодаря на всички помогнали.

Прилагам примерен скрипт, който може да ти свърши работа. Общо взето е
коментиран, така че ще ти трябва минимална намеса. За повече информация
виж на www.lartc.org и www.docum.org.

________________________________________________________________________

Всичко най-хубаво,
Никола

#!/bin/bash

# изходящ интерфейс
dev=eth0

# път до tc
tc=/sbin/tc

htb_stats ()
{
# show class stats
$tc -s -d class show dev $dev
# show qdisc stats
$tc -s -d qdisc show dev $dev
} #htb_stats

htb_stop ()
{
# remove all qdiscs from $dev
$tc qdisc del dev $dev root &>/dev/null
} # htb_stop

htb_start ()
{
set -x

# attach root discipline
$tc qdisc add dev $dev root handle 1: htb default 1000 r2q 10

# клас за клиент с гарантирани 256Кбита
$tc class add dev $dev parent 1: classid 1:10 htb rate 256Kbit
$tc filter add dev $dev protocol ip parent 1:0 prio 4 u32 \
match ip dst <ip на клиента с 256Кбита> flowid 1:10
$tc qdisc add dev $dev parent 1:10 handle 10: sfq perturb 20

# клас за клиент с гарантирани 128Кбита
$tc class add dev $dev parent 1: classid 1:20 htb rate 128Kbit
$tc filter add dev $dev protocol ip parent 1:0 prio 4 u32 \
match ip dst <ip на клиента с 128Кбита> flowid 1:20
$tc qdisc add dev $dev parent 1:20 handle 20: sfq perturb 20

# клас за клиент с гарантирани 64Кбита
$tc class add dev $dev parent 1: classid 1:30 htb rate 64Kbit
$tc filter add dev $dev protocol ip parent 1:0 prio 4 u32 \
match ip dst <ip на клиента с 64Кбита> flowid 1:30
$tc qdisc add dev $dev parent 1:30 handle 30: sfq perturb 20

# default клас, в който попадат всички останали
# за него заделяме 64Кбита

$tc class add dev $dev parent 1:0 classid 1:1000 htb \
rate 64Kbit ceil 64Kbit
$tc qdisc add dev $dev parent 1:1000 handle 1000: sfq perturb 20
} # htb_start

case "$1" in

    ### START ###
    start)
        htb_start
    ;;

    ### STOP ###
    stop)
        htb_stop
    ;;

    ### RESTART ###
    restart)
        $0 stop
        $0 start
    ;;

    ### STATS ###
    stats)
        htb_stats
    ;;

    ### default ###
    *)
        echo "Usage: " `basename $0` "{start|stop|restart|stats}"
esac

Attachment: pgp00000.pgp
Description: PGP signature

Reply via email to