Не совсем Ваш случай, но все же любопытная идея. Здесь: http://www.voip-info.org/wiki/view/Q...g+PRIO+and+HTB автор утверждает, что он отслеживает на своей сипуре начало разговора и резко уменьшает траффик качалкам буде такой начнется и восстанавливает обратно по окончании. К сожалению, без конкретики
Добрый всем день.
Купил сегодня данный девайс, но не могу найти в нем траффик-шейпера (именно резать вх/исх скорость по IP). Хотя на скринах видел в инете
Видимо прошивку надо поменять? Есть ли какая-то, которая умеет это делать, и с Web-интерфейсом ?
Вот с помощью добрых людей наваял такой скриптик для ASUS WL-500gP.
Задача:
резать канал интернета (по PPPoE) на 3 машины (0.2 - 400Кбит/с, 0.4,0.5-128Кбит/с на обоих) с условием, что если вторые не работают, то первая забирает всю полосу. При этом, чтобы скорость доступа к модему (LAN) не резалась.
Еще - на машине 0.2 установить приоритеты траффика от высшего к низшему: DNS, ICMP, HTTP, Other...
Вот что получил:
Вроде все работает, но с приоритетами по траффику какая-то проблемаCode:#!/bin/sh DOWNLINK=520 DOWN1=400 DOWN2=110 COMP2=192.168.0.2 COMP3=192.168.0.4 COMP4=192.168.0.5 LANMASK=`nvram get lan_ipaddr`/24 DEV=br0 DEV1=ppp0 # cleanup tc qdisc del dev $DEV root > /dev/null 2>&1 tc qdisc del dev $DEV ingress > /dev/null 2>&1 # root qdisc tc qdisc add dev $DEV root handle 1: htb default 1 # 100 mbit default from asus tc class add dev $DEV parent 1: classid 1:100 htb rate 100mbit prio 1 # 512kbit internet tc class add dev $DEV parent 1: classid 1:1 htb rate ${DOWNLINK}kbit burst 6k # default filters tc filter add dev $DEV parent 1: protocol ip prio 1 u32 match ip src $LANMASK flowid 1:100 tc filter add dev $DEV parent 1: protocol ip prio 2 u32 match ip src 0.0.0.0/0 flowid 1:1 # Classes for limit bandwidth tc class add dev $DEV parent 1:1 classid 1:10 htb rate ${DOWN2}kbit ceil $(($DOWN2+30))kbit burst 6k prio 1 tc class add dev $DEV parent 1:1 classid 1:20 htb rate ${DOWN1}kbit ceil ${DOWNLINK}kbit burst 6k prio 2 # all get Stochastic Fairness: tc qdisc add dev $DEV parent 1:100 handle 100: sfq perturb 10 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 # Shape traffic by dst IP tc filter add dev $DEV parent 1:1 protocol ip prio 1 u32 match ip dst $COMP2 flowid 1:20 tc filter add dev $DEV parent 1:1 protocol ip prio 1 u32 match ip dst $COMP3 flowid 1:10 tc filter add dev $DEV parent 1:1 protocol ip prio 1 u32 match ip dst $COMP4 flowid 1:10 # Traffic priority, prio by speed to 1:20 tc class add dev $DEV parent 1:20 classid 1:21 htb rate $(($DOWN1/4))kbit ceil ${DOWNLINK}kbit burst 6k prio 1 tc class add dev $DEV parent 1:20 classid 1:22 htb rate $(($DOWN1/4))kbit ceil ${DOWNLINK}kbit burst 6k prio 2 tc class add dev $DEV parent 1:20 classid 1:23 htb rate $(($DOWN1/4))kbit ceil ${DOWNLINK}kbit burst 6k prio 3 tc class add dev $DEV parent 1:20 classid 1:24 htb rate $(($DOWN1/4))kbit ceil ${DOWNLINK}kbit burst 6k prio 4 # Fairnes to priority tc qdisc add dev $DEV parent 1:21 handle 21: sfq perturb 10 tc qdisc add dev $DEV parent 1:22 handle 22: sfq perturb 10 tc qdisc add dev $DEV parent 1:23 handle 23: sfq perturb 10 tc qdisc add dev $DEV parent 1:24 handle 24: sfq perturb 10 # Priority by port/protocol # DNS requests tc filter add dev $DEV parent 1:20 protocol ip prio 1 u32 match ip sport 53 0xffff match ip protocol 0x06 0xff flowid 1:21 tc filter add dev $DEV parent 1:20 protocol ip prio 1 u32 match ip sport 53 0xffff match ip protocol 0x11 0xff flowid 1:21 # ICMP tc filter add dev $DEV parent 1:20 protocol ip prio 1 u32 match ip protocol 0x01 0xff flowid 1:22 # HTTP tc filter add dev $DEV parent 1:20 protocol ip prio 1 u32 match ip sport 80 0xffff match ip protocol 0x06 0xff flowid 1:23 # Other traffic tc filter add dev $DEV parent 1:20 protocol ip prio 1 u32 match ip protocol 0 0 flowid 1:24 #------------------- #Output channel # cleanup tc qdisc del dev $DEV1 root > /dev/null 2>&1 tc qdisc del dev $DEV1 ingress > /dev/null 2>&1 # root qdisc tc qdisc add dev $DEV1 root handle 1: htb default 1 # 512kbit internet tc class add dev $DEV1 parent 1: classid 1:1 htb rate ${DOWNLINK}kbit burst 6k # default filters tc filter add dev $DEV1 parent 1: protocol ip prio 2 u32 match ip src 0.0.0.0/0 flowid 1:1 tc class add dev $DEV1 parent 1:1 classid 1:10 htb rate ${DOWN2}kbit ceil $((DOWN2+30))kbit burst 6k prio 1 tc class add dev $DEV1 parent 1:1 classid 1:20 htb rate ${DOWN1}kbit ceil ${DOWNLINK}kbit burst 6k prio 2 # all get Stochastic Fairness: tc qdisc add dev $DEV1 parent 1:10 handle 10: sfq perturb 10 #tc qdisc add dev $DEV1 parent 1:20 handle 20: sfq perturb 10 # Mark packets to pass throw NAT iptables -t mangle -A PREROUTING -s $COMP2 -j MARK --set-mark 2 iptables -t mangle -A PREROUTING -s $COMP3 -j MARK --set-mark 3 iptables -t mangle -A PREROUTING -s $COMP4 -j MARK --set-mark 3 # Shape traffic by MARK tc filter add dev $DEV1 parent 1:1 protocol ip prio 1 handle 2 fw flowid 1:20 tc filter add dev $DEV1 parent 1:1 protocol ip prio 1 handle 3 fw flowid 1:10 # Traffic priority, prio by speed to 1:20 tc class add dev $DEV1 parent 1:20 classid 1:21 htb rate $((DOWN1/4))kbit ceil ${DOWNLINK}kbit burst 6k prio 1 tc class add dev $DEV1 parent 1:20 classid 1:22 htb rate $((DOWN1/4))kbit ceil ${DOWNLINK}kbit burst 6k prio 2 tc class add dev $DEV1 parent 1:20 classid 1:23 htb rate $((DOWN1/4))kbit ceil ${DOWNLINK}kbit burst 6k prio 3 tc class add dev $DEV1 parent 1:20 classid 1:24 htb rate $((DOWN1/4))kbit ceil ${DOWNLINK}kbit burst 6k prio 4 # Fairnes to priority tc qdisc add dev $DEV1 parent 1:21 handle 21: sfq perturb 10 tc qdisc add dev $DEV1 parent 1:22 handle 22: sfq perturb 10 tc qdisc add dev $DEV1 parent 1:23 handle 23: sfq perturb 10 tc qdisc add dev $DEV1 parent 1:24 handle 24: sfq perturb 10 # Priority by port/protocol # DNS requests tc filter add dev $DEV1 parent 1:20 protocol ip prio 1 u32 match ip dport 53 0xffff match ip protocol 0x06 0xff flowid 1:21 tc filter add dev $DEV1 parent 1:20 protocol ip prio 1 u32 match ip dport 53 0xffff match ip protocol 0x11 0xff flowid 1:21 # ICMP tc filter add dev $DEV1 parent 1:20 protocol ip prio 1 u32 match ip protocol 0x01 0xff flowid 1:22 # HTTP tc filter add dev $DEV1 parent 1:20 protocol ip prio 1 u32 match ip dport 80 0xffff match ip protocol 0x06 0xff flowid 1:23 # Other traffic tc filter add dev $DEV1 parent 1:20 protocol ip prio 1 u32 match ip protocol 0 0 flowid 1:24
При закачке пинги выростают до нескольких тысяч, хотя у них приоритет выше. DNS тоже отвечает долго. И HTTP странно работает, вроде забирает полосу, но больше, чем надо ...
Посмотрите правильно ли пакеты классифицируются с помощью(удалил замечания, т.к. не актуально)Code:tc -s class ls dev br0
Last edited by dadittoz; 19-04-2008 at 19:39.
Вот.
В DNS и Пингах - пустоCode:$ tc -s class ls dev br0 class htb 1:22 parent 1:20 leaf 22: prio 2 rate 100Kbit ceil 510Kbit burst 6Kb cburst 2251b Sent 0 bytes 0 pkts (dropped 0, overlimits 0) lended: 0 borrowed: 0 giants: 0 tokens: 393216 ctokens: 28259 class htb 1:100 root leaf 100: prio 1 rate 100Mbit ceil 100Mbit burst 132644b cburst 132644b Sent 54089 bytes 278 pkts (dropped 0, overlimits 0) rate 48bps lended: 278 borrowed: 0 giants: 0 tokens: 8288 ctokens: 8288 class htb 1:1 root rate 510Kbit ceil 510Kbit burst 6Kb cburst 2251b Sent 329523785 bytes 303442 pkts (dropped 0, overlimits 0) rate 18023bps 15pps lended: 63925 borrowed: 0 giants: 0 tokens: 59432 ctokens: 10591 class htb 1:10 parent 1:1 leaf 10: prio 1 rate 110Kbit ceil 140Kbit burst 6Kb cburst 1778b Sent 329260744 bytes 303089 pkts (dropped 1059, overlimits 0) rate 17985bps 15pps backlog 68p lended: 239096 borrowed: 63925 giants: 0 tokens: -23909 ctokens: -60061 class htb 1:23 parent 1:20 leaf 23: prio 3 rate 100Kbit ceil 510Kbit burst 6Kb cburst 2251b Sent 165914 bytes 259 pkts (dropped 0, overlimits 0) rate 30bps lended: 223 borrowed: 36 giants: 0 tokens: 390144 ctokens: 27657 class htb 1:20 parent 1:1 rate 400Kbit ceil 510Kbit burst 6Kb cburst 2251b Sent 236311 bytes 421 pkts (dropped 0, overlimits 0) rate 34bps lended: 40 borrowed: 0 giants: 0 tokens: 95873 ctokens: 26352 class htb 1:21 parent 1:20 leaf 21: prio 1 rate 100Kbit ceil 510Kbit burst 6Kb cburst 2251b Sent 0 bytes 0 pkts (dropped 0, overlimits 0) lended: 0 borrowed: 0 giants: 0 tokens: 393216 ctokens: 28259 class htb 1:24 parent 1:20 leaf 24: prio 4 rate 100Kbit ceil 510Kbit burst 6Kb cburst 2251b Sent 70397 bytes 162 pkts (dropped 0, overlimits 0) rate 10bps lended: 158 borrowed: 4 giants: 0 tokens: 383488 ctokens: 26352
Вечером попробую переделать скрипт, учтя все замечания...
Last edited by masters; 19-04-2008 at 15:31.
Вообще судя по статистике, вроде бы все правильно.
Насчет ДНС я даже не знаю, может быть запросов вообще не было, а возможно 1:24 забирает себе их, надо проверить экспериментально.
А насчет того, что хттп работает быстрее чем надо, это быстрее скольки работает? Быстрее 510кб/с? Если нет, то все правильно, rate 100Kbit ceil 510Kbit - означает, что минимальная скорость 100 кбит, а максимальная 510. Т.е. если другие классы не будут использовать скорость, то этот класс заберет неиспользумую скорость у других дочерних классов своего родителя.
А еще попробуйте уменьшить скорость DOWNLINK. Возможно она слишком высока, и пакеты задерживаются у провайдера, а не на вашем шейпере.
Last edited by dadittoz; 19-04-2008 at 19:09.
Пардон, с ДНС - это я затупил
Я же использую ДНС роутера, надо эту строку вообще убить!
А вот почему в пингах пусто??? Специально все пинговал!!!
После добавления в фильтры по приоритетам IP-адреса (по Вашему совету), что-то появилось в ICMP - очереди.
Но всеравно при скачивании с HTTP - пинги около 1000
Last edited by Omega; 25-12-2011 at 20:00.
Попробуйте все-таки уменьшить значение DOWNLINK. Возможно реальная скорость вашего провайдера ниже, чем та, что у вас стоит в DOWNLINK. Тогда пакеты будут скапливаться у провайдера, а не на вашем рутере, это лишает вас возможности управлять их приоритетами. Поэкспериментируйте с этим значением. У меня например скорость канала 512, но я шейпер ставлю на 480.
условия:
wl500g premium + rtorrent (192.168.0.179)
comp1 192.168.0.101
comp2 192.168.0.50
по WAN подключен модем, 1 мбит скорость приема
512 скорость отдачи
задача:
торент должен постоянно занимать полосу
в случае подключения обоих компов - 1/3
в случае подключения одного - 2/3
когда не работает никто - 3/3
делится и исходяший и входящий трафик
подскажите плизз как это сделать
заранее спасибо...
Вот здесь решена Ваша задачка только для mlDonkey. Вам нужно оттуда взять идею. И переделать управление с mlDonkey на rTorrent. И будет Вам счастье.
Катящиеся камни не обрастают мхом...
1) Я сильно не уверен, что в планировщик rTorrent-а можно запихнуть проверку наличия файла. Я лично не знаю как. Возможно, кто-нибудь подскажет?
2) cron каждую минуту - это, IMHO, нехорошо. По крайней мере у меня такие фишки приводили к неприятностям с диском и к излишней загрузке роутера.
3) Проще не мучиться, а выставить у rTorrent ограничение на скорость днем, и снимать его ночью. Эффект практически тот же, решается двумя дополнительными строками в планировщике.
Катящиеся камни не обрастают мхом...
Привет!
Есть желание сделать так, чтобы пользователи с определенными IP адресами выходили в интернет через определенный порт. А этот порт был ограничен по ширине канала. Подскажите, как это можно сделать?
И вообще, как закрыть все порты, кроме определенных все для тех же определенных IP?
Заранее спасибо!