Page 1 of 5 123 ... LastLast
Results 1 to 15 of 66

Thread: Шейпер с приоретизацией по портам

  1. #1

    Question Как разделить входящий WAN трафик на 4 LAN порта с приоритетом раздачи? (shaping)

    Добрый день, Друзья!

    Искал на форуме ответ, но положительных результатов это не дало, потому прошу о помощи!

    Исходные:
    Dev: Wl500g Premium
    Firmware Version: 1.9.2.7
    Firmware Release: 1.9.2.7-7f

    Задача: Порезать входящий трафик из условий: Что бы на каждый LAN уходило 256 КБит минимум, т.е. гарантированно, а максимум 1 МБит, когда другие LAN не используют сеть.

    Вот такую задачку поставил сам себе...

    Вопрос. КАК это можно сделать?!

  2. #2
    Join Date
    Dec 2003
    Location
    Russian Federation
    Posts
    8,356
    С ЛАН портами наверное можно, но тяжеловато. Вот с Ip Адресами - попроще...

  3. #3
    Quote Originally Posted by Oleg View Post
    С ЛАН портами наверное можно, но тяжеловато. Вот с Ip Адресами - попроще...
    Спаибо, что откликнулся

    Я пробовал штатными средствами через Вебфейс... результат непонятен был.

    Схема делитантская, если что поправь пожалуйста:
    1. настраиваем тригер таким образом, что бы все, что приходит из вне на определенный ИП (в ЛАНе) сваливалось в один порт (взял 80 за основу)
    2. Настраиваем ширину канала для заданного ИП мин. и макс. с привязкой на порт 80
    3. смотрим результат при скачивании фильма (проверенно быстрый хост)...

    Результат не совсем понятен... При указании малых значений ширины канала, закачивание либо слишком медленное, и не сопоставимо с заданными цифрами на самом роутере. И только при более или менее крупных значений, от 10-15 КБит скорость адекватная, но как то, все равно не сопоставимо, но теперь в сторону увеличения, т.е. больше заданного значения.

    Логика есть в моих домыслах?

    Замер делал на "скорую руку" штатными средстави Вин ХР. (тикер - число байт переданных-принятых в интервале времени)

  4. #4

    Равномерное деление полосы на N пользователей (решение)

    Была задача - поделить 128 кбит на 5 пользователей предоставляя каждому как минимум 24 кбита (фактически делить полосу поровну между всеми работающими компьютерами). Кроме того была задача уменьшить потерю пакетов у провайдера.

    Решение:

    Железо - маршрутизатор asus wl-500g Premium с прошивкой 1.9.2.7-7f (2006-11-06) http://oleg.wl500g.info/

    Родной bandwidth management надо отрубить в панели управления.

    ----------------------------------
    Создать /usr/local/sbin
    Там создать
    -rwxr-xr-x post-firewall
    -rwxr-xr-x wshaper

    ----------------------------------
    содержание post-firewall:
    #!/bin/sh
    /usr/local/sbin/wshaper start vlan0 120 120

    ----------------------------------
    содержание wshaper (оригинальный скрипт лежит в /sbin)
    #/bin/sh
    # Wonder Shaper
    # please read the README before filling out these values
    #
    # Set the following values to somewhat less than your actual download
    # and uplink speed. In kilobits. Also set the device that is to be shaped.

    DOWNLINK=$3
    UPLINK=$4
    DEV=$2

    #echo Please read the documentation in 'README' first
    #exit

    if [ "$1" = "status" ]
    then
    # tc -s qdisc ls dev $DEV
    tc -s class ls dev $DEV
    exit
    fi


    # clean existing down- and uplink qdiscs, hide errors
    tc qdisc del dev $DEV root 2> /dev/null > /dev/null
    tc qdisc del dev $DEV ingress 2> /dev/null > /dev/null

    if [ "$1" = "stop" ]
    then
    exit
    fi


    ###### uplink

    # install root HTB, point default traffic to 1:99:
    tc qdisc add dev $DEV root handle 1: htb default 99

    # root class 1
    tc class add dev $DEV parent 1: classid 1:1 htb rate 100mbit

    # router traffic subslass 2 (router IP=192.168.0.254)
    tc class add dev $DEV parent 1:1 classid 1:2 htb rate 100mbit
    tc qdisc add dev $DEV parent 1:2 handle 2: sfq perturb 10
    tc filter add dev $DEV parent 1: protocol ip prio 10 u32 \
    match ip src 192.168.0.254 flowid 1:2

    # internet traffic subclass 10
    tc class add dev $DEV parent 1:1 classid 1:10 htb rate ${UPLINK}kbit \
    ceil ${UPLINK}kbit

    # internet traffic subclasses 11, 12, 13,... for each client IP
    tc class add dev $DEV parent 1:10 classid 1:11 htb rate 1kbit \
    ceil ${UPLINK}kbit prio 2
    tc class add dev $DEV parent 1:10 classid 1:12 htb rate 1kbit \
    ceil ${UPLINK}kbit prio 2
    tc class add dev $DEV parent 1:10 classid 1:13 htb rate 1kbit \
    ceil ${UPLINK}kbit prio 2
    tc class add dev $DEV parent 1:10 classid 1:14 htb rate 1kbit \
    ceil ${UPLINK}kbit prio 2
    tc class add dev $DEV parent 1:10 classid 1:15 htb rate 1kbit \
    ceil ${UPLINK}kbit prio 2
    tc class add dev $DEV parent 1:10 classid 1:99 htb rate 1kbit \
    ceil ${UPLINK}kbit prio 2

    # creating quques for each class
    tc qdisc add dev $DEV parent 1:11 handle 11: sfq perturb 10
    tc qdisc add dev $DEV parent 1:12 handle 12: sfq perturb 10
    tc qdisc add dev $DEV parent 1:13 handle 13: sfq perturb 10
    tc qdisc add dev $DEV parent 1:14 handle 14: sfq perturb 10
    tc qdisc add dev $DEV parent 1:15 handle 15: sfq perturb 10
    tc qdisc add dev $DEV parent 1:99 handle 99: sfq perturb 10

    #sending traffic from clinet's IP's to classes
    tc filter add dev $DEV parent 1: protocol ip prio 20 u32 \
    match ip dst 192.168.0.1 flowid 1:11

    tc filter add dev $DEV parent 1: protocol ip prio 20 u32 \
    match ip dst 192.168.0.2 flowid 1:12

    tc filter add dev $DEV parent 1: protocol ip prio 20 u32 \
    match ip dst 192.168.0.3 flowid 1:13

    tc filter add dev $DEV parent 1: protocol ip prio 20 u32 \
    match ip dst 192.168.0.4 flowid 1:14

    tc filter add dev $DEV parent 1: protocol ip prio 20 u32 \
    match ip dst 192.168.0.5 flowid 1:15

    ########## downlink #############
    # slow downloads down to somewhat less than the real speed to prevent
    # queuing at our ISP. Tune to see how high you can set it.
    # ISPs tend to have *huge* queues to make sure big downloads are fast
    #
    # attach ingress policer:

    tc qdisc add dev $DEV handle ffff: ingress

    # filter *everything* to it (0.0.0.0/0), drop everything that's
    # coming in too fast:

    tc filter add dev $DEV parent ffff: protocol ip prio 50 u32 match ip src \
    0.0.0.0/0 police rate ${DOWNLINK}kbit burst 1k drop flowid :1


    ----------------------------------
    сохранить настройки и перезапустить роутер:
    flashfs save
    flashfs commit
    flashfs enable
    reboot

    Шейпинг повешен на vlan0 (это локальная сеть) а не на pppoe потому что шейпер может разруливать только исходящий трафик на итнерфейсе. Из за этого пришлось отдельно обозначать локальный трафик чтобы не пропускать его через шейпер. Общая скорость ограничена 120 кбит чтобы уменьшить потери пакетов у провайдера (чтобы у провайдера не скапливалась большая очередь и не дропались пакеты).

    Шейпинг исходящего трафика пока что не делал. Приоритеты трафика не задавал. Не было необходимости пока что . То что сделано - проверено и работает как следует.

  5. #5
    Join Date
    Apr 2007
    Location
    Ua, Odessa
    Posts
    22
    Добрый день!
    А можно ли с помощью выше изложенного поделить трафик pppoe на три компа?

    комп по проводу 1 - 256к
    комп по проводу 2 - 128к
    комп по проводу 3 - 128к
    ноут по wifi - 128k
    КПК по wifi - 128k

    комп 1 работает редко.

    И ещё, между компами (в сети 192.168.1.1/6) должна быть максимальная скорость!

    Вот собственно и всё, жду вашого ответа!
    Attached Images Attached Images  
    WL500gP (1.9.2.7-10) + USB HDD Samsung 200gb
    My home page - MyLan.Od.Ua

  6. #6
    Можно, только нужно вешать шейпер на интерфейс br0 чтобы он работал еще и с вайфай. К сожалению я не знаю как сделать неравномерное деление трафика - только каждому поровну. (Правда можно задавать приоритеты. Еще есть идея - можно попробовать делать более ветвистое дерево классов трафика)

    Привожу последний мой вариант скриптов- добавил ограничение на исходящий трафик на ppp0, убрал класс 99, добавил еще айпишников и сделал чтобы и по вайфаю все это работало в том числе.

    192.168.1.1/6 это неправильное обозначение подсети судя по всему. 192.168.1.1 - 192.168.1.6 - надо было писать. оно там вроде бы будет ходить без ограничений, во всяком случае у меня так и есть... почемуто...

    P.s. wifi антенна из консервной банки это мощно...

    post-firewall:

    #!/bin/sh
    /usr/local/sbin/wshaper start br0 115
    /sbin/wshaper start ppp0 1000 115


    wshaper:

    #/bin/sh
    # Wonder Shaper
    # please read the README before filling out these values
    #
    # Set the following values to somewhat less than your actual download
    # and uplink speed. In kilobits. Also set the device that is to be shaped.

    UPLINK=$3
    DEV=$2

    # Now remove the following two lines :-)

    #echo Please read the documentation in 'README' first
    #exit

    if [ "$1" = "status" ]
    then
    # tc -s qdisc ls dev $DEV
    tc -s class ls dev $DEV
    exit
    fi


    # clean existing down- and uplink qdiscs, hide errors
    tc qdisc del dev $DEV root 2> /dev/null > /dev/null
    tc qdisc del dev $DEV ingress 2> /dev/null > /dev/null

    if [ "$1" = "stop" ]
    then
    exit
    fi


    ###### uplink

    # install root HTB, point default traffic to 1:99:
    tc qdisc add dev $DEV root handle 1: htb default 99

    # root class 1
    tc class add dev $DEV parent 1: classid 1:1 htb rate 100mbit

    # router traffic subslass 2 (router IP=192.168.0.254)
    tc class add dev $DEV parent 1:1 classid 1:2 htb rate 100mbit
    tc qdisc add dev $DEV parent 1:2 handle 2: sfq perturb 10
    tc filter add dev $DEV parent 1: protocol ip prio 10 u32 \
    match ip src 192.168.0.254 flowid 1:2

    # internet traffic subclass 10
    tc class add dev $DEV parent 1:1 classid 1:10 htb rate ${UPLINK}kbit \
    ceil ${UPLINK}kbit

    # internet traffic subclasses 11, 12, 13,... for each client IP
    tc class add dev $DEV parent 1:10 classid 1:11 htb rate 1kbit \
    ceil ${UPLINK}kbit prio 2
    tc class add dev $DEV parent 1:10 classid 1:12 htb rate 1kbit \
    ceil ${UPLINK}kbit prio 2
    tc class add dev $DEV parent 1:10 classid 1:13 htb rate 1kbit \
    ceil ${UPLINK}kbit prio 2
    tc class add dev $DEV parent 1:10 classid 1:14 htb rate 1kbit \
    ceil ${UPLINK}kbit prio 2
    tc class add dev $DEV parent 1:10 classid 1:15 htb rate 1kbit \
    ceil ${UPLINK}kbit prio 2
    tc class add dev $DEV parent 1:10 classid 1:16 htb rate 1kbit \
    ceil ${UPLINK}kbit prio 2
    tc class add dev $DEV parent 1:10 classid 1:17 htb rate 1kbit \
    ceil ${UPLINK}kbit prio 2
    tc class add dev $DEV parent 1:10 classid 1:18 htb rate 1kbit \
    ceil ${UPLINK}kbit prio 2
    tc class add dev $DEV parent 1:10 classid 1:19 htb rate 1kbit \
    ceil ${UPLINK}kbit prio 2

    # creating quques for each class
    tc qdisc add dev $DEV parent 1:11 handle 11: sfq perturb 10
    tc qdisc add dev $DEV parent 1:12 handle 12: sfq perturb 10
    tc qdisc add dev $DEV parent 1:13 handle 13: sfq perturb 10
    tc qdisc add dev $DEV parent 1:14 handle 14: sfq perturb 10
    tc qdisc add dev $DEV parent 1:15 handle 15: sfq perturb 10
    tc qdisc add dev $DEV parent 1:16 handle 16: sfq perturb 10
    tc qdisc add dev $DEV parent 1:17 handle 17: sfq perturb 10
    tc qdisc add dev $DEV parent 1:18 handle 18: sfq perturb 10
    tc qdisc add dev $DEV parent 1:19 handle 19: sfq perturb 10

    #sending traffic from clinet's IP's to classes
    tc filter add dev $DEV parent 1: protocol ip prio 20 u32 \
    match ip dst 192.168.0.1 flowid 1:11

    tc filter add dev $DEV parent 1: protocol ip prio 20 u32 \
    match ip dst 192.168.0.2 flowid 1:12

    tc filter add dev $DEV parent 1: protocol ip prio 20 u32 \
    match ip dst 192.168.0.3 flowid 1:13

    tc filter add dev $DEV parent 1: protocol ip prio 20 u32 \
    match ip dst 192.168.0.4 flowid 1:14

    tc filter add dev $DEV parent 1: protocol ip prio 20 u32 \
    match ip dst 192.168.0.5 flowid 1:15

    tc filter add dev $DEV parent 1: protocol ip prio 20 u32 \
    match ip dst 192.168.0.6 flowid 1:16

    tc filter add dev $DEV parent 1: protocol ip prio 20 u32 \
    match ip dst 192.168.0.7 flowid 1:17

    tc filter add dev $DEV parent 1: protocol ip prio 20 u32 \
    match ip dst 192.168.0.8 flowid 1:18

    tc filter add dev $DEV parent 1: protocol ip prio 20 u32 \
    match ip dst 192.168.0.9 flowid 1:19
    Last edited by AlexeyA; 21-09-2007 at 15:59.

  7. #7
    Join Date
    Apr 2007
    Location
    Ua, Odessa
    Posts
    22
    Нее, такое не устраивает..
    А возможно установить доп. соф на wl-500gP что бы он занимался делением трафика по моей схеме?
    Кстати Wi-Fi клиенты могут ходить без ограничений(это в идеале можно им порезать скорость).

    P.s. wifi антенна из консервной банки это мощно...
    За то дешево и работает не хуже заводской!

    Новая схемка сетки (без Wi-FI клиентов):
    Attached Images Attached Images  
    Last edited by Janik; 23-09-2007 at 17:27.
    WL500gP (1.9.2.7-10) + USB HDD Samsung 200gb
    My home page - MyLan.Od.Ua

  8. #8
    Если надо жестко ограничить максимальную скорость на каждый хост то это делается элементарно задав параметр ceil= rate=max speed для каждого IP в этих скриптах. У меня то задача была в динамическом перераспределении нашего дохлого канала (128) если он свободен на всех желающих. Чтобы при этом если один запустил мега-качалку на 10 потоков у остальных все не умирало.
    Last edited by AlexeyA; 24-09-2007 at 00:05.

  9. #9
    Join Date
    Apr 2007
    Location
    Ua, Odessa
    Posts
    22
    Quote Originally Posted by AlexeyA View Post
    Если надо жестко ограничить максимальную скорость на каждый хост то это делается элементарно задав параметр ceil= rate=max speed для каждого IP в этих скриптах. У меня то задача была в динамическом перераспределении нашего дохлого канала (128) если он свободен на всех желающих. Чтобы при этом если один запустил мега-качалку на 10 потоков у остальных все не умирало.
    А можно показать это на примере?
    WL500gP (1.9.2.7-10) + USB HDD Samsung 200gb
    My home page - MyLan.Od.Ua

  10. #10
    Ну в вашем случае это будет видимо так :

    post-firewall:

    #!/bin/sh
    /usr/local/sbin/wshaper start br0 512
    /sbin/wshaper start ppp0 1000 512


    wshaper:

    #/bin/sh
    # Wonder Shaper
    # please read the README before filling out these values
    #
    # Set the following values to somewhat less than your actual download
    # and uplink speed. In kilobits. Also set the device that is to be shaped.

    UPLINK=$3
    DEV=$2

    # Now remove the following two lines :-)

    #echo Please read the documentation in 'README' first
    #exit

    if [ "$1" = "status" ]
    then
    # tc -s qdisc ls dev $DEV
    tc -s class ls dev $DEV
    exit
    fi


    # clean existing down- and uplink qdiscs, hide errors
    tc qdisc del dev $DEV root 2> /dev/null > /dev/null
    tc qdisc del dev $DEV ingress 2> /dev/null > /dev/null

    if [ "$1" = "stop" ]
    then
    exit
    fi


    ###### uplink

    # install root HTB, point default traffic to 1:99:
    tc qdisc add dev $DEV root handle 1: htb default 99

    # root class 1
    tc class add dev $DEV parent 1: classid 1:1 htb rate 100mbit

    # router traffic subslass 2 (router IP=192.168.0.1)
    tc class add dev $DEV parent 1:1 classid 1:2 htb rate 100mbit
    tc qdisc add dev $DEV parent 1:2 handle 2: sfq perturb 10
    tc filter add dev $DEV parent 1: protocol ip prio 10 u32 \
    match ip src 192.168.0.1 flowid 1:2

    # internet traffic subclass 10
    tc class add dev $DEV parent 1:1 classid 1:10 htb rate ${UPLINK}kbit \
    ceil ${UPLINK}kbit

    # internet traffic subclasses 12, 13,... for each client IP
    tc class add dev $DEV parent 1:10 classid 1:12 htb rate 256kbit \
    burst 6k prio 2
    tc class add dev $DEV parent 1:10 classid 1:13 htb rate 128kbit \
    burst 6k prio 2
    tc class add dev $DEV parent 1:10 classid 1:14 htb rate 128kbit \
    burst 6k prio 2

    # creating quques for each class
    tc qdisc add dev $DEV parent 1:12 handle 12: sfq perturb 10
    tc qdisc add dev $DEV parent 1:13 handle 13: sfq perturb 10
    tc qdisc add dev $DEV parent 1:14 handle 14: sfq perturb 10

    #sending traffic from clinet's IP's to classes

    tc filter add dev $DEV parent 1: protocol ip prio 20 u32 \
    match ip dst 192.168.0.2 flowid 1:12

    tc filter add dev $DEV parent 1: protocol ip prio 20 u32 \
    match ip dst 192.168.0.3 flowid 1:13

    tc filter add dev $DEV parent 1: protocol ip prio 20 u32 \
    match ip dst 192.168.0.4 flowid 1:14
    Last edited by AlexeyA; 25-09-2007 at 01:48.

  11. #11
    Join Date
    Apr 2007
    Location
    Ua, Odessa
    Posts
    22

    Wink

    Quote Originally Posted by AlexeyA View Post
    Ну в вашем случае это будет видимо так :

    post-firewall:

    #!/bin/sh
    /usr/local/sbin/wshaper start br0 512
    /sbin/wshaper start ppp0 1000 512


    wshaper:

    #/bin/sh
    # Wonder Shaper
    # please read the README before filling out these values
    #
    # Set the following values to somewhat less than your actual download
    # and uplink speed. In kilobits. Also set the device that is to be shaped.

    UPLINK=$3
    DEV=$2

    # Now remove the following two lines :-)

    #echo Please read the documentation in 'README' first
    #exit

    if [ "$1" = "status" ]
    then
    # tc -s qdisc ls dev $DEV
    tc -s class ls dev $DEV
    exit
    fi


    # clean existing down- and uplink qdiscs, hide errors
    tc qdisc del dev $DEV root 2> /dev/null > /dev/null
    tc qdisc del dev $DEV ingress 2> /dev/null > /dev/null

    if [ "$1" = "stop" ]
    then
    exit
    fi


    ###### uplink

    # install root HTB, point default traffic to 1:99:
    tc qdisc add dev $DEV root handle 1: htb default 99

    # root class 1
    tc class add dev $DEV parent 1: classid 1:1 htb rate 100mbit

    # router traffic subslass 2 (router IP=192.168.0.1)
    tc class add dev $DEV parent 1:1 classid 1:2 htb rate 100mbit
    tc qdisc add dev $DEV parent 1:2 handle 2: sfq perturb 10
    tc filter add dev $DEV parent 1: protocol ip prio 10 u32 \
    match ip src 192.168.0.1 flowid 1:2

    # internet traffic subclass 10
    tc class add dev $DEV parent 1:1 classid 1:10 htb rate ${UPLINK}kbit \
    ceil ${UPLINK}kbit

    # internet traffic subclasses 12, 13,... for each client IP
    tc class add dev $DEV parent 1:10 classid 1:12 htb rate 256kbit \
    burst 6k prio 2
    tc class add dev $DEV parent 1:10 classid 1:13 htb rate 128kbit \
    burst 6k prio 2
    tc class add dev $DEV parent 1:10 classid 1:14 htb rate 128kbit \
    burst 6k prio 2

    # creating quques for each class
    tc qdisc add dev $DEV parent 1:12 handle 12: sfq perturb 10
    tc qdisc add dev $DEV parent 1:13 handle 13: sfq perturb 10
    tc qdisc add dev $DEV parent 1:14 handle 14: sfq perturb 10

    #sending traffic from clinet's IP's to classes

    tc filter add dev $DEV parent 1: protocol ip prio 20 u32 \
    match ip dst 192.168.0.2 flowid 1:12

    tc filter add dev $DEV parent 1: protocol ip prio 20 u32 \
    match ip dst 192.168.0.3 flowid 1:13

    tc filter add dev $DEV parent 1: protocol ip prio 20 u32 \
    match ip dst 192.168.0.4 flowid 1:14
    Спасибо большое! Это то что нужно!!!
    А исходящий трафик можно таким же макаром нарезать?
    Last edited by Janik; 25-09-2007 at 17:37.
    WL500gP (1.9.2.7-10) + USB HDD Samsung 200gb
    My home page - MyLan.Od.Ua

  12. #12
    Можно, заместо стандартного /sbin/wshaper start ppp0 1000 512
    надо запускать наш переделанный скрипт, но в нем надо поменять правила фильтров - match ip src <-> match ip dst. Также не нужно станет правило для локального трафика. Ну короче подумайте сами
    Last edited by AlexeyA; 25-09-2007 at 20:53.

  13. #13
    Join Date
    Apr 2007
    Location
    Ua, Odessa
    Posts
    22
    Quote Originally Posted by AlexeyA View Post
    Можно, заместо стандартного /sbin/wshaper start ppp0 1000 512
    надо запускать наш переделанный скрипт, но в нем надо поменять правила фильтров - match ip src <-> match ip dst. Также не нужно станет правило для локального трафика. Ну короче подумайте сами
    Всё понял, спасибо!
    WL500gP (1.9.2.7-10) + USB HDD Samsung 200gb
    My home page - MyLan.Od.Ua

  14. #14
    задача. В сети три компьютера. все они ходят в интэрнет через локалку. подключение в WAN обычный TCP/IP. статический айпи. нужно динамически распределять скорость между этими компами. так же есть приоритеты. наивыший приоритет .8, средний .10, наименьший .55
    Скорость инета внешнего 2М, скорость локальных ресурсов провайдера 100Мб.
    Составил скрипт. но не уверен в правельности его составления. проверьте кто-то.
    #/bin/sh
    # Wonder Shaper
    # please read the README before filling out these values
    #
    # Set the following values to somewhat less than your actual download
    # and uplink speed. In kilobits. Also set the device that is to be shaped.

    if [ "$1" = "status" ]
    then
    echo "[qdisc br0]"
    /usr/sbin/tc -s qdisc show dev br0
    echo "[qdisc vlan1]"
    /usr/sbin/tc -s qdisc show dev vlan1
    echo "[class br0]"
    /usr/sbin/tc -s class show dev br0
    echo "[class vlan1]"
    /usr/sbin/tc -s class show dev vlan1
    echo "[filter br0]"
    /usr/sbin/tc -s filter show dev br0
    echo "[filter vlan1]"
    /usr/sbin/tc -s filter show dev vlan1
    exit
    fi

    # clean existing down- and uplink qdiscs, hide errors
    /usr/sbin/tc qdisc del dev br0 root 2> /dev/null > /dev/null
    /usr/sbin/tc qdisc del dev br0 ingress 2> /dev/null > /dev/null
    /usr/sbin/tc qdisc del dev vlan1 root 2> /dev/null > /dev/null
    /usr/sbin/tc qdisc del dev vlan1 ingress 2> /dev/null > /dev/null

    if [ "$1" = "stop" ]
    then
    exit
    fi


    if [ "$1" = "start" ]
    then
    # install root HTB, point default traffic to 1:99
    /usr/sbin/tc qdisc add dev br0 root handle 1:0 htb default 99

    # root class 1
    /usr/sbin/tc class add dev br0 parent 1:0 classid 1:1 htb rate 100mbit

    # router traffic subslass 2 (router IP=192.168.15.1)
    /usr/sbin/tc class add dev br0 parent 1:1 classid 1:2 htb rate 100mbit ceil 100mbit
    /usr/sbin/tc qdisc add dev br0 parent 1:2 handle 2: sfq perturb 2
    /usr/sbin/tc filter add dev br0 parent 1: protocol ip prio 10 u32 match ip src 192.168.15.1 flowid 1:2

    # internet traffic subclass 10
    /usr/sbin/tc class add dev br0 parent 1:1 classid 1:10 htb rate 100mbit ceil 100mbit

    # internet traffic subclasses 12, 13,... for each client IP
    /usr/sbin/tc class add dev br0 parent 1:10 classid 1:12 htb rate 512kbit ceil 100mbit burst 6k prio 10
    /usr/sbin/tc class add dev br0 parent 1:10 classid 1:13 htb rate 128kbit ceil 100mbit burst 6k prio 20
    /usr/sbin/tc class add dev br0 parent 1:10 classid 1:14 htb rate 128kbit ceil 100mbit burst 6k prio 30

    # creating quques for each class
    /usr/sbin/tc qdisc add dev br0 parent 1:12 handle 12: sfq perturb 2
    /usr/sbin/tc qdisc add dev br0 parent 1:13 handle 13: sfq perturb 2
    /usr/sbin/tc qdisc add dev br0 parent 1:14 handle 14: sfq perturb 2

    #sending traffic from clinet's IP's to classes
    /usr/sbin/tc filter add dev br0 parent 1: protocol ip prio 10 u32 match ip dst 192.168.15.8 flowid 1:12
    /usr/sbin/tc filter add dev br0 parent 1: protocol ip prio 10 u32 match ip dst 192.168.15.10 flowid 1:13
    /usr/sbin/tc filter add dev br0 parent 1: protocol ip prio 10 u32 match ip dst 192.168.15.55 flowid 1:14

    # install root HTB, point default traffic to 1:99
    /usr/sbin/tc qdisc add dev vlan1 root handle 1:0 htb default 99

    # root class 1
    /usr/sbin/tc class add dev vlan1 parent 1:0 classid 1:1 htb rate 100mbit

    # router traffic subslass 2 (router IP=192.168.15.1)
    /usr/sbin/tc class add dev vlan1 parent 1:1 classid 1:2 htb rate 100mbit ceil 100mbit
    /usr/sbin/tc qdisc add dev vlan1 parent 1:2 handle 2: sfq perturb 2
    /usr/sbin/tc filter add dev vlan1 parent 1: protocol ip prio 10 u32 match ip dst 192.168.15.1 flowid 1:2

    # internet traffic subclass 10
    /usr/sbin/tc class add dev vlan1 parent 1:1 classid 1:10 htb rate 100mbit ceil 100mbit

    # internet traffic subclasses 12, 13,... for each client IP
    /usr/sbin/tc class add dev vlan1 parent 1:10 classid 1:12 htb rate 512kbit ceil 100mbit burst 6k prio 10
    /usr/sbin/tc class add dev vlan1 parent 1:10 classid 1:13 htb rate 128kbit ceil 100mbit burst 6k prio 20
    /usr/sbin/tc class add dev vlan1 parent 1:10 classid 1:14 htb rate 128kbit ceil 100mbit burst 6k prio 30

    # creating quques for each class
    /usr/sbin/tc qdisc add dev vlan1 parent 1:12 handle 12: sfq perturb 2
    /usr/sbin/tc qdisc add dev vlan1 parent 1:13 handle 13: sfq perturb 2
    /usr/sbin/tc qdisc add dev vlan1 parent 1:14 handle 14: sfq perturb 2

    # sending traffic from clinet's IP's to classes
    /usr/sbin/tc filter add dev vlan1 parent 1: protocol ip prio 10 u32 match ip src 192.168.15.8 flowid 1:12
    /usr/sbin/tc filter add dev vlan1 parent 1: protocol ip prio 10 u32 match ip src 192.168.15.10 flowid 1:13
    /usr/sbin/tc filter add dev vlan1 parent 1: protocol ip prio 10 u32 match ip src 192.168.15.55 flowid 1:14
    fi

  15. #15
    Join Date
    Dec 2007
    Location
    Санкт-Петербург
    Posts
    125
    Quote Originally Posted by Janik View Post
    Всё понял, спасибо!
    А я вот что-то не соображу никак. Не нарезается исходящий траф и все... Входящий без проблем нарезается. Help!!!

Page 1 of 5 123 ... LastLast

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •