Last edited by leniviy; 15-03-2008 at 14:49.
у меня скорость закачки без шейпинга 120 килобайт. сайты не открываются.
с шейпингом 110 килобайт и резко проседает, когда скачивается страничка. сайты открываются быстро
ABATAPA, нет. dport
shape-test filter vlan1 2 d
все равно фильтрует исходящие пакеты
для приоритизации скачиваний я использую задержку ACK пакетов.
Но соотношение ACKCOEF зависит от количества активных соединений.
Чем их больше, тем мельче входящие пакеты.
Если в ACK пакете указан размер входящего пакета, то эту проблему можно решить. Если нет, то только следить за сетевой активностью и перезапускать shape-test с разными параметрами.
Last edited by Omega; 08-01-2012 at 21:51. Reason: fixed
ну что тут непонятного?
Чтобы заставить ту сторону слать нам пакеты медленнее мы задерживаем пакеты с подтверждением доставки. У пакетов с подтверждением мы - ОТПРАВИТЕЬ, а тот, с кого мы качаем - ПОЛУЧАТЕЛЬ
я буду очень признателен, если кто-нибудь подскажет, ответ
Где обычно берут эти модули?
Нужно ли перекомпилировать iptables?
можно ли собрать этот модуль на роутере или надо ставить тулчейн?
Last edited by Omega; 08-01-2012 at 21:47. Reason: fixed
Интересно... И что, в обоих случаях destination port = 80?!
Или же все же речь тут идет о трафике ОТ 80 порта на удаленной стороне, и с любого порта на локальной стороне К 80 порту удаленной?
Обычно там же, где и другие. Но в прошивках Олега этот модуль не собран.
О сборке для роутера есть немало тем, почитайте их.
Last edited by Omega; 08-01-2012 at 21:53. Reason: fixed
Тема QoS иногда всплывает, но все ограничивается советом использовать слабенький wshaper. Если на роутере не стоит качалка, то можно этим и ограничиться. Но у многих эта качалка есть.
Предлагаю заняться этим вопросом. На первую страницу будем класть ссылки на реально работающие инструкции, как настроить шейпинг.
например так:
Авангард СПб http://wl500g.info/showthread.php?p=88238#post88238
Здесь лежит скрипт для удобного просмотра скоростей по классам http://wl500g.info/showthread.php?p=101369#post101369
Last edited by leniviy; 25-06-2008 at 18:57.
1) Если у прова есть LAN с высокой скоростью (MAN), то надо подготовиться.
Надо сделать файл-список ip адресов провайдера.
Файл назовем "/etc/isp-ip-addrs.lst"
формат такой:в /usr/local/.files добавим строчку /etc/isp-ip-addrs.lstCode:89.110.48.0/21 89.110.56.0/22 ... 78.37.112.0/20
Если ip прова внешние, то можно достать их из интернетовской базы, иначе заполним список вручную. Я сижу на Авангарде СПб, вот скрипт для него
/opt/sbin/avangard
2) тепрь сам скрипт /usr/loscal/sbin/shape-test:Code:#!/bin/sh # требуется пакет lynx FILEPATH="/etc/isp-ip-addrs.lst" UPDATE=1 if [ -e "$FILEPATH" ]; then FILEAGE=$(((`date +%s`-`stat -c %Y "$FILEPATH"`)/60/60/24)) if [ "$FILEAGE" -lt 30 ]; then UPDATE=0 fi fi if [ $UPDATE = 1 ]; then echo updating lynx -dump "http://www.db.ripe.net/whois?form_type=simple&full_query_string=&searchtext=RU-AVANGARD-DSL&do_search=Search" | \ grep "inetnum\:" | awk ' func ceil(f) { {split(0+f,a,".")} {if ((a[1]==(0+f))||(a[1]<0)) {return a[1]}} {return a[1]+1} } \ {split($2,a1,".")} {split($4,a2,".")} \ {print $2 "/" \ 32-ceil(log((a2[1]*16777216+a2[2]*65536+a2[3]*256+a2[4])-(a1[1]*16777216+a1[2]*65536+a1[3]*256+a1[4]))/log(2)) \ " #" $1 " " $2 " " $3 " " $4 \ } \ ' > "$FILEPATH" fi #printf '%02X' `echo ${IP_ADDR}| sed -e "s/\./ /g"` #let __x=0x; echo $__x
Code:#!/bin/sh DEV=$2 CLSPREF=$3 DOWNLINK=$4 UPLINK=$5 DISC=$7 ROOTCLS=$8 ACKCOEF=$6 FILTERUD=$4 FILTERPRIO=$5 FILTERSTR="$6" if [ -z "$1" ]; then echo "Использование:" echo "shape-test start DEV CLSPREF DOWNLINK UPLINK [ACKCOEF] [DISC] [ROOTCLS]" echo "shape-test status DEV" echo "shape-test stop DEV" echo "shape-test filter DEV CLSPREF <u|d> <1|2|3> \"prio и условие в формате tc filter\" [DISC] [ROOTCLS]" echo "shape-test start можно запускать повторно с другим CLSPREF, тогда" echo "надо указать DISC" echo "shape-test filter можно вызывать многократно после shape-test start" echo "<1|2|3> - приоритет траффика" echo "prio должен быть больше 10" echo "пример:" echo "shape-test filter vlan1 2 u 1 \"protocol ip prio 10 u32 match ip dport 80 0xffff\" " echo "с DOWNLINK, UPLINK и DEV должно быть все понятно" echo "ACKCOEF - объем скачанного поделить на объем соответствуюющего ACK траффика" echo "ACKCOEF надо увеличивать, пока не начнет падать скорость закачки" echo "число 125 получил опытным путем на закачке с ftp сервера" echo "число 50 получил опытным путем на торренте" echo "CLSPREF - префикс создаваемого дерева (от 2 до fff)" echo "DISC - дисциплина, к которой присоединяется дерево классов" echo "если DISC пусто, то создается корневая дисциплина" echo "ROOTCLS - класс, к которому присоединяется дерево классов (может быть 0)" echo "если ROOTCLS пусто, то ROOTCLS=0" echo "" echo "" exit 1 fi if [ "$1" = "status" ] then tc -s qdisc ls dev $DEV tc -s class ls dev $DEV exit fi if [ -z "$ROOTCLS" ]; then ROOTCLS=0 fi CREATEROOT=0 if [ -z "$DISC" ]; then DISC=1 CREATEROOT=1 fi if [ -z "$ACKCOEF" ]; then ACKCOEF=50 fi D=$DISC C=$ROOTCLS N=$CLSPREF DC=${D}:${C} DCN=${DC}${N} CN=${C}${N} if [ "$1" = "stop" ] then tc qdisc del dev $DEV root > /dev/null 2>&1 tc qdisc del dev $DEV ingress > /dev/null 2>&1 exit fi if [ "$1" = "filter" ]; then echo "$1 DEV=$DEV CLSPREF=$CLSPREF FILTERUD=$FILTERUD FILTERPRIO=$FILTERPRIO FILTERSTR=\"$FILTERSTR\" DISC=$DISC ROOTCLS=$ROOTCLS" if [ "$FILTERUD" = "u" ]; then tc filter add dev $DEV parent ${DCN}0 $FILTERSTR flowid ${DCN}${FILTERPRIO} fi if [ "$FILTERUD" = "d" ]; then tc filter add dev $DEV parent ${DCN}f $FILTERSTR flowid ${DCN}`printf "%x" $((15-$FILTERPRIO))` fi exit fi echo $1 DEV=$DEV CLSPREF=$CLSPREF DOWNLINK=$DOWNLINK UPLINK=$UPLINK ACKCOEF=$ACKCOEF DISC=$DISC ROOTCLS=$ROOTCLS if [ $CREATEROOT = 1 ]; then DISC=1 R=1 tc qdisc del dev $DEV root > /dev/null 2>&1 tc qdisc del dev $DEV ingress > /dev/null 2>&1 # очищаем дерево шейперов tc qdisc add dev $DEV root handle ${DC} htb default 555 # корневая дисциплина. по умолчанию направляет пакеты в несуществующий класс 555 # все равно придется добавлять фильтр на корневой класс # иначе не будут работать фильтры второго порядка tc filter add dev $DEV parent ${DC} protocol ip prio 9999 u32 match ip dst 0.0.0.0/0 flowid ${DCN}0 # фильтр по умолчанию на корневой класс fi tc class add dev $DEV parent ${DC} classid ${DCN}0 htb rate $(($UPLINK))kbit # канал ${N} tc class add dev $DEV parent ${DCN}0 classid ${DCN}1 htb \ rate $((6*$UPLINK/10))kbit ceil $(($UPLINK))kbit prio 1 # высокий приоритет отдачи tc class add dev $DEV parent ${DCN}0 classid ${DCN}2 htb \ rate $((3*$UPLINK/10))kbit ceil $((10*$UPLINK/10))kbit prio 2 # средний приоритет отдачи tc class add dev $DEV parent ${DCN}0 classid ${DCN}3 htb \ rate $((1*$UPLINK/10))kbit ceil $((10*$UPLINK/10))kbit prio 3 # низкий приоритет отдачи tc qdisc add dev $DEV parent ${DCN}1 handle ${CN}1: sfq perturb 10 tc qdisc add dev $DEV parent ${DCN}2 handle ${CN}2: sfq perturb 10 tc qdisc add dev $DEV parent ${DCN}3 handle ${CN}3: sfq perturb 10 # если не добавить sfq, пакеты будут отбрасываться даже если скорость # отдачи ниже лимита tc class add dev $DEV parent ${DCN}0 classid ${DCN}f htb \ rate $((10*$DOWNLINK*1024/10/$ACKCOEF)) # класс для ACK пакетов. в 2 раза больше расчетной скорости, чтобы # никогда не отбрасывать пакеты приоритетного траффика tc class add dev $DEV parent ${DCN}f classid ${DCN}e htb rate $((10*$DOWNLINK*1024/10/$ACKCOEF)) # высокий приоритет tc qdisc add dev $DEV parent ${DCN}e handle ${CN}e: sfq perturb 10 tc class add dev $DEV parent ${DCN}f classid ${DCN}d htb rate $((3*$DOWNLINK*1024/10/$ACKCOEF)) ceil $((10*$DOWNLINK*1024/10/$ACKCOEF)) # средний приоритет #tc qdisc add dev $DEV parent ${DCN}d handle ${CN}d: sfq perturb 10 tc class add dev $DEV parent ${DCN}f classid ${DCN}c htb rate $((1*$DOWNLINK*1024/10/$ACKCOEF)) ceil $((10*$DOWNLINK*1024/10/$ACKCOEF)) # низкий приоритет #tc qdisc add dev $DEV parent ${DCN}c handle ${CN}c: sfq perturb 10 # # # ***** фильтры ****** # # tc filter add dev $DEV parent ${DCN}0 protocol ip prio 9999 u32 match ip dst 0.0.0.0/0 flowid ${DCN}2 # фильтр по умолчанию на средний приоритет # # *********** download # tc filter add dev $DEV parent ${DCN}0 protocol ip prio 1 u32 \ match ip protocol 6 0xff \ match u8 0x05 0x0f at 0 \ match u16 0x0000 0xffc0 at 2 \ match u8 0x10 0xff at 33 \ flowid ${DCN}f # фильтровать ACK пакеты в класс *f tc filter add dev $DEV parent ${DCN}f protocol ip prio 9999 u32 \ match ip dst 0.0.0.0/0 flowid ${DCN}d # фильтр ACK пакетов по умолчанию на средний приоритет # *ACK TOS Minimum Delay (ssh, NOT scp) tc filter add dev $DEV parent ${DCN}f protocol ip prio 5 u32 \ match ip tos 0x10 0xff flowid ${DCN}e # # *********** /download # # TOS Minimum Delay (ssh, NOT scp) tc filter add dev $DEV parent ${DCN}0 protocol ip prio 2 u32 \ match ip tos 0x10 0xff flowid ${DCN}1 # ICMP (ip protocol 1) in the interactive class 1:10 so we # can do measurements & impress our friends: tc filter add dev $DEV parent ${DCN}0 protocol ip prio 2 u32 \ match ip protocol 1 0xff flowid ${DCN}1 # prioritize small packets (<64 bytes) tc filter add dev $DEV parent ${DCN}0 protocol ip prio 2 u32 \ match ip protocol 6 0xff \ match u8 0x05 0x0f at 0 \ match u16 0x0000 0xffc0 at 2 \ flowid ${DCN}1
Last edited by leniviy; 22-05-2008 at 10:38.
3) скрипт запуска по авангард
UPD: перешел на тариф 1024, переделал скрипт запуска с учетом VoIP и UDP, DNS больше не тормозит. Спасибо YAG
/usr/local/sbin/shape-avangard
4) добавить в /usr/local/sbin/post-firewallCode:#!/bin/sh if [ -z "$1" ]; then echo must specify device exit 1 fi DEV=$1 # авангард 1024 # реальная скорость аплода в сумме 528 даже если с тебя качает авангардовец # скорость даунлода 1056 # + скорость даунлода с авангардовцев 1024 DOWNLINK=1056 UPLINK=528 DOWNLINKMAN=1024 UPLINKMAN=757 FASTMANUPLOAD=0 # FASTMANUPLOAD=0 - MAN и WAN делят общий канал аплод # FASTMANUPLOAD=1 - независимый канал аплод для MAN shape-test start $DEV 2 $DOWNLINK $UPLINK 40 # интернет shape-test filter $DEV 2 u 1 "protocol ip prio 10 u32 match ip dport 80 0xffff" shape-test filter $DEV 2 d 1 "protocol ip prio 10 u32 match ip dport 80 0xffff" shape-test filter $DEV 2 u 1 "protocol ip prio 10 u32 match ip dport 443 0xffff" shape-test filter $DEV 2 d 1 "protocol ip prio 10 u32 match ip dport 443 0xffff" shape-test filter $DEV 2 u 1 "protocol ip prio 10 u32 match ip dport 21 0xffff" shape-test filter $DEV 2 d 1 "protocol ip prio 10 u32 match ip dport 21 0xffff" shape-test filter $DEV 2 u 1 "protocol ip prio 10 u32 match ip dport 25 0xffff" shape-test filter $DEV 2 d 1 "protocol ip prio 10 u32 match ip dport 25 0xffff" shape-test filter $DEV 2 u 1 "protocol ip prio 10 u32 match ip dport 110 0xffff" shape-test filter $DEV 2 d 1 "protocol ip prio 10 u32 match ip dport 110 0xffff" # Приоритет для обычного интернета shape-test filter $DEV 2 u 3 "protocol ip prio 10 u32 match ip sport 65533 0xffff" shape-test filter $DEV 2 d 3 "protocol ip prio 10 u32 match ip sport 65533 0xffff" # Приоритет для rtorrent shape-test filter $DEV 2 u 3 "protocol ip prio 10 u32 match ip sport 63128 0xffff" shape-test filter $DEV 2 d 3 "protocol ip prio 10 u32 match ip sport 63128 0xffff" # Приоритет для публичного 3proxy shape-test filter $DEV 2 u 1 "protocol ip prio 5 u32 match ip tos 0x68 0xff match ip protocol 0x11 0xff" shape-test filter $DEV 2 d 1 "protocol ip prio 5 u32 match ip tos 0x68 0xff match ip protocol 0x11 0xff" shape-test filter $DEV 2 u 1 "protocol ip prio 5 u32 match ip tos 0xb8 0xff match ip protocol 0x11 0xff" shape-test filter $DEV 2 d 1 "protocol ip prio 5 u32 match ip tos 0xb8 0xff match ip protocol 0x11 0xff" # high priority for VoIP traffic (by TOS) shape-test filter $DEV 2 u 1 "protocol ip prio 5 u32 match ip sport 5004 0xffff match ip protocol 0x11 0xff" shape-test filter $DEV 2 d 1 "protocol ip prio 5 u32 match ip sport 5004 0xffff match ip protocol 0x11 0xff" shape-test filter $DEV 2 u 1 "protocol ip prio 5 u32 match ip sport 5060 0xffff match ip protocol 0x11 0xff" shape-test filter $DEV 2 d 1 "protocol ip prio 5 u32 match ip sport 5060 0xffff match ip protocol 0x11 0xff" # high priority for VoIP traffic (by source port) shape-test filter $DEV 2 u 1 "protocol ip prio 5 u32 match ip protocol 0x11 0xff" # all UDP traffic tc qdisc del dev $DEV ingress > /dev/null 2>&1 tc qdisc add dev $DEV ingress handle ffff: tc filter add dev $DEV parent ffff: protocol ip prio 15 u32 match ip protocol 0x11 0xff \ police index 15 rate ${DOWNLINK}kbit buffer 50k drop flowid :2 # all UDP traffic tc filter add dev $DEV parent ffff: protocol ip prio 20 u32 match ip src \ 0.0.0.0/0 police index 20 rate $((DOWNLINK*98/100))kbit buffer 50k drop flowid :2 # чтобы даунлод был чуть меньше $DOWNLINK и не мешал UDP пакетам #****************************************************************** # локалка провайдера shape-test start $DEV 3 $DOWNLINKMAN $UPLINKMAN 40 1 # локалка провайдера (используем это дерево только для даунлода параметр UPLINK Не имеет особого значения) if [ "$FASTMANUPLOAD" = "1" ]; then while read ADDR B; do tc filter add dev $DEV parent 1: protocol ip prio 1 \ u32 match ip dst $ADDR flowid 1:30; done < /etc/isp-ip-addrs.lst # добавить фильтры, чтобы даунлод и аплод из MAN шли через дерево 3 else while read ADDR B; do tc filter add dev $DEV parent 1:2f protocol ip prio 1 \ u32 match ip dst $ADDR flowid 1:3f; done < /etc/isp-ip-addrs.lst # добавить фильтры, чтобы даунлод из MAN шел через дерево 3 fi while read ADDR B; do tc filter add dev $DEV parent ffff: protocol ip \ prio 10 u32 match ip dst $ADDR police index 10 rate ${DOWNLINKMAN}kbit buffer 50k \ drop flowid :1; done < /etc/isp-ip-addrs.lst # добавить фильтры, чтобы даунлод с авангардовцев был $DOWNLINKMAN shape-test filter $DEV 3 u 3 "protocol ip prio 10 u32 match ip sport 65533 0xffff" shape-test filter $DEV 3 d 3 "protocol ip prio 10 u32 match ip sport 65533 0xffff" # Приоритет для rtorrent shape-test filter $DEV 3 u 3 "protocol ip prio 10 u32 match ip sport 63128 0xffff" shape-test filter $DEV 3 d 3 "protocol ip prio 10 u32 match ip sport 63128 0xffff" # Приоритет для публичного 3proxy
Code:#traffic shaping /usr/local/sbin/shape-avangard $1
Last edited by leniviy; 25-06-2008 at 18:45. Reason: обновил скрипт shape-avangard. Добавил UPLINKMAN, FASTMANUPLOAD
Корбина, тариф 9200 килобит.
Ограничения: не работает при наличии качалки на роутере.
Преимущества: работает шейпинг как исходящего, так и входящего трафика с приоритезацией.
Базовый скрипт (shape.sh):
Устанавливает на указанном девайсе ограничение скорости, делит траффик на 3 полосы в соотношении 50/40/10 процентов, устанавливает базовые фильтры.
Code:#!/bin/sh # Wonder Shaper, last modified by Oleg King (aka king2) # # wshaper-king2 (start|stop|status) WAN LAN DOWNLINK UPLINK # shape_device(device, speed) DEV="$1" SPEED="$2" # install root HTB, shape everything to collect all the queue in our router, and divide traffic into 3 parts tc qdisc add dev $DEV root handle 1: htb default 777 tc class add dev $DEV parent 1:0 classid 1:1 htb burst 256k rate 100mbit ceil 100mbit tc class add dev $DEV parent 1:1 classid 1:2 htb burst 64k rate ${SPEED}kbit ceil ${SPEED}kbit # setclass: device, class_id, prio, total uplink, percentage of uplink tc class add dev $DEV parent 1:2 classid 1:10 htb burst 64k rate $((50*$SPEED/100))kbit ceil ${SPEED}kbit prio 1 tc class add dev $DEV parent 1:2 classid 1:20 htb burst 64k rate $((40*$SPEED/100))kbit ceil ${SPEED}kbit prio 2 tc class add dev $DEV parent 1:2 classid 1:30 htb burst 64k rate $((10*$SPEED/100))kbit ceil ${SPEED}kbit prio 3 tc qdisc add dev $DEV parent 1:10 handle 10: sfq perturb 10 tc qdisc add dev $DEV parent 1:20 handle 20: sfq perturb 10 #tc qdisc add dev $DEV parent 1:30 handle 30: sfq perturb 10 # PRIO1 --- Business class traffic --- # high priority for VoIP traffic (by TOS) tc filter add dev $DEV parent 1:0 protocol ip prio 1 u32 \ match ip tos 0x68 0xff \ match ip protocol 0x11 0xff \ flowid 1:10 tc filter add dev $DEV parent 1:0 protocol ip prio 1 u32 \ match ip tos 0xb8 0xff \ match ip protocol 0x11 0xff \ flowid 1:10 # ICMP (ip protocol 1) in the interactive class tc filter add dev $DEV parent 1:0 protocol ip prio 1 u32 \ match ip protocol 1 0xff \ flowid 1:10 # all UDP traffic are interractive tc filter add dev $DEV parent 1:0 protocol ip prio 1 u32 \ match ip protocol 0x11 0xff \ flowid 1:10 # to make downloads fast while an upload is going on, speed up ACK packets tc filter add dev $DEV parent 1:0 protocol ip prio 1 u32 \ match ip protocol 6 0xff \ match u8 0x05 0x0f at 0 \ match u16 0x0000 0xffc0 at 2 \ match u8 0x10 0xff at 33 \ flowid 1:10 # TOS Minimum Delay (ssh, NOT scp) tc filter add dev $DEV parent 1:0 protocol ip prio 1 u32 \ match ip tos 0x10 0xff \ flowid 1:10 # PRIO2 --- Economy class traffic --- # web browsing is better than other traffic tc filter add dev $DEV parent 1:0 protocol ip prio 1 u32 \ match ip sport 80 0xffff flowid 1:20 tc filter add dev $DEV parent 1:0 protocol ip prio 1 u32 \ match ip dport 80 0xffff flowid 1:20 tc filter add dev $DEV parent 1:0 protocol ip prio 1 u32 \ match ip sport 433 0xffff flowid 1:20 tc filter add dev $DEV parent 1:0 protocol ip prio 1 u32 \ match ip dport 433 0xffff flowid 1:20 # other traffic goes to default 1:20 tc filter add dev $DEV parent 1:0 protocol ip prio 7 u32 \ match ip dst 0.0.0.0/0 flowid 1:20
Основной скрипт (wshaper-king2.sh):
Вызывается из post-firewall, устанавливает базовые ограничения для WAN и LAN интерфейсов, плюс дополнительно устанавливает:
- торренты как приоритет 3 для WAN и LAN
- 192.168.1.1 плюс все, что вытащено из маршрутов - как траффик без ограничений скорости для LAN
Более подробное описание скрипта имеется здесь (сообщение #74 и далее).Code:#!/bin/sh # Wonder Shaper, last modified by Oleg King (aka king2) # # wshaper-king2 (start|stop|status) WAN LAN UPLINK DOWNLINK WAN=$2 LAN=$3 UPLINK=$4 DOWNLINK=$5 # show status and exit if [ "$1" = "status" ] then echo "Outgoing traffic:"; echo "-----------------"; tc -s class ls dev $WAN echo "Incoming traffic:"; echo "-----------------"; tc -s class ls dev $LAN exit fi # clean existing downlink and uplink qdiscs, hide errors tc qdisc del dev $WAN root 2> /dev/null > /dev/null tc qdisc del dev $LAN root 2> /dev/null > /dev/null if [ "$1" = "stop" ] then exit fi ### WAN ### /usr/local/sbin/shape.sh $WAN $UPLINK # PRIO3 --- torrents will fly with laggage ToS=0x3f and ports 4663 + 21760-22015 --- tc filter add dev $WAN parent 1:0 protocol ip prio 5 u32 \ match ip tos 0x3f 0xff \ flowid 1:30 tc filter add dev $WAN parent 1:0 protocol ip prio 5 u32 \ match ip sport 0x5500 0xff00 \ flowid 1:30 tc filter add dev $WAN parent 1:0 protocol ip prio 5 u32 \ match ip sport 4663 0xffff \ flowid 1:30 ### LAN ### /usr/local/sbin/shape.sh $LAN $DOWNLINK # PRIO0 --- MAN always first and unlimited tc filter add dev $LAN parent 1:0 protocol ip prio 1 u32 \ match ip src 192.168.1.1/32 \ flowid 1:2 tc filter add dev $LAN parent 1:0 protocol ip prio 1 u32 \ match ip dst 192.168.1.1/32 \ flowid 1:2 MANLIST=`ip route | grep vlan1 | grep -v default | awk '{print $1}'` for a in $MANLIST do tc filter add dev $LAN parent 1:0 protocol ip prio 1 u32 \ match ip src $a flowid 1:2 tc filter add dev $LAN parent 1:0 protocol ip prio 1 u32 \ match ip dst $a flowid 1:2 echo "adding $a to MAN filter..." done # PRIO3 --- torrents will fly with laggage --- (dst ports 4663 + 21760-22015) tc filter add dev $LAN parent 1:0 protocol ip prio 5 u32 \ match ip dport 4663 0xffff \ flowid 1:30 tc filter add dev $LAN parent 1:0 protocol ip prio 5 u32 \ match ip dport 0x5500 0xff00 \ flowid 1:30
Запуск скрипта - в post-firewall:
Code:#!/bin/sh /usr/local/sbin/wshaper-king2.sh start "$1" br0 9200 9200
еще один хороший шейпер, с подробным описанием установки (для чайников, таких как я) есть сдесь http://wl500g.info/showthread.php?t=13877
Last edited by A-r-t; 30-04-2008 at 13:09.
leniviy, спасибо за работу. Испытал Ваш вариант. Пока нравицца. Вопрос следующий. Каким образом можно отделить трафик интернет-радио, в частности, www.101.ru. Хочется его отправить в высокий приоритет в шейпере на br0. Понятно, что качалку на роутере радио не обскачет, но среди всего остального должно же заиграть, если я правильно понимаю. Так ведь? Или может быть радио можно как-то отделить по ACK пакетам, они там вообще есть? )))
Last edited by YAG; 04-05-2008 at 17:26.
Катящиеся камни не обрастают мхом...
YAG, попробуй в скрипт запуска (который у меня shape-avangard) , добавить
Code:shape-test filter $DEV 2 u 1 "protocol ip prio 5 u32 match ip dport 554 0xffff" shape-test filter $DEV 2 d 1 "protocol ip prio 5 u32 match ip dport 554 0xffff"