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