[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: трафик-шейпер (?)



On 05.07.2010 11:06, Alex Kicelew wrote:
Есть ip-телефония, которая время от времени (не всегда) затыкается,

Конечно есть множество gui, но зная как работает основа и gui становиться понятнее.

Вот простой пример конфига для tc (шейпера):

#!/bin/bash
#создаем для интерфейса "wlan0" root "1:" и шейпер (дисциплину) htb, с дефолтным потоком (руковом) 9991
tc qdisc add dev wlan0 root handle 1: htb default  9991

#создаем основной "рукав" 9999 также с htb и указываем общую ширину канала
tc class add dev wlan0 parent 1: classid 1:9999 htb rate 1mbps burst 150k

#создаем дефолтный "подрукав" 9991 и с помощью htb даем полосу для трафика не попадающего ни под одно правило
#(как видите дефолтный 1:9991 у нас вытекает из основного 1:9999)
tc class add dev wlan0 parent 1:9999 classid 1:9991 htb rate 64kbps ceil 128kbps burst 150k


#для "подрукава" 9991 определим оконечную дисциплину sqf
tc qdisc add dev wlan0 parent 1:9991 handle 9991: sfq perturb 10
#..............................................................................................................
#теперь создадим уже "нормальный" подрукав, например "22" и определим ему ширину с помощью htb (rate - желаемая, ceil - максимальная, burst - "точность") tc class add dev wlan0 parent 1:9999 classid 1:22 htb rate 64kbps ceil 128kbps burst 15k

#для "подрукава" 22 определим оконечную дисциплину sqf
#(оконечная дисциплина sqf - рекомендация ведущих линуксоводов)
tc qdisc add dev wlan0 parent 1:22 handle 22: sfq perturb 10


#Теперь самое интересное - создадим фильтры по которым будем забирать #нужный трафик из дефолтного в свежесозданный 22-ой. tc filter add dev wlan0 parent 1: protocol ip prio 1 u32 match ip dport 22 0xffff flowid 1:22 tc filter add dev wlan0 parent 1: protocol ip prio 1 u32 match ip tos 0x10 0xff flowid 1:22

#(приведенный пример - не самый лучший - проще фильтровать по "dst ip" и порту, без 0xff...)

Все.


PS
И рукавов, и фильтров для них можно насоздавать множество.
Фильтровать можно и по ip и по портам и по меткам - примеры легко гуглятся.

http://www.opennet.ru/docs/RUS/LARTC/

tc - это просто, проще чем с gui разбираться.

Если есть желание, можно использовать плагины для iptables, что бы давать метки, например, p2p или скайпу и, вроде бы, эти метки увидит tc.

Шейпится только исходящий трафик:
Для сервера-посредника - в любом случае любой трафик в какой-то момент является исходящим. Если нельзя, но очень хочется, то можно шейпить и входящий трафик (есть спец дисциплина), но смысла в этом нет никогого - трафик уже пришел, все что вы можете сделать - запросить его еще раз, загрузив канал еще больше. Желание шейпить входящий трафик обычно проходит после прочтения документации.


Посмотреть правила:
#!/bin/bash.
tc -s -d qdisc show dev wlan0
tc -s -d class show dev wlan0
tc -s -d filter show dev wlan0

Удалить:
#!/bin/bash.
tc qdisc del dev wlan0 root


--
Sincerely,
	Nicholas


Reply to: