от Todor Lazarov(18-02-2004)
рейтинг (-62)
[ добре ]
[ зле ]
Вариант за отпечатване
Днес като се рових из http://freshmeat.net/
открих един доста интересен util, с който всеки може лесно и бързо да си направи своя трафик контрол.
Разбира се, няма да може да ползва всичките възможности на iproute2+tc но затова пък ще се отървете от писане на сложен tc синтаксис.
Та ето и няколко думи за самото приложение
Pol-IP. То има за цел лесно и бързо да се прави трафик контрол под Linux, като се използва HTB3. Препоръчително е да имате по-ново ядро - например 2.4.20 и нагоре или ако не, трябва да
използвате patch дадени в тази страница.
Идеята е следната:
Чрез лесен за използване конфигуратор
да се направи конфигурационен файл, който впоследствие да се прочете от сървърната част на приложението и да се изпълни.
Това програмче се състои от две части.
- сърверна част - polipd
- конфигуратор - polipconfig
polipd - е програмa, която се
стратира като демон и има за задача да изгради трафик контрола и да дава информация на клиентите, поискали справка, каква скорост използват.
т.е. Програмата е клиент сървер.
polipconfig - е програмa, която прави конфигурационния файл (/etc/polip.conf), който се прочита от polipd. Между другото, прави го в доста четаем вид.
За да се направи трафик контрола, е нужно да имате инсталиран iproute2 + tc и подръжка от кернела на HTB3.
Демонът polipd чете конфигурациония файл /etc/polip.conf и го преобръща в tc синтаксис, който изпълнява.
Направих и следната проба.
Задачата е следната:
Имаме входяш интерфейс eth1 с капацитет 10Mbit и изходящ интерфейс eth0 с капацитет 1024Kbit.
Задачата е на трима клиенти да се даде по 16Кbit на всеки и общо те да не ползват по-вече от 128Kbit.
т.е.
min speed = 16Kbit
max speed = 128Kbit
Видът на конфигурациония файл, направен от polipconfig, стана
такъв:
================================================================= ###Root Structure # [root] netdevice=eth1 netspeed=100mbit linkdevice=eth0 linkspeed=1024kbit # # #Grupo # [grupo] name=user16k parent=root rate=128kbit borrow=no
# #Cliente # [Cliente] name=PC1 parent=user16k rate=16kbit borrow=yes ip=192.168.0.2
# #Cliente # [Cliente] name=PC2 parent=user16k rate=16kbit borrow=yes ip=192.168.0.3
# #Cliente # [Cliente] name=PC3 parent=user16k rate=16kbit borrow=yes ip=192.168.0.4 =================================================================
А програмата polipd изпълни това:
================================================================= tc qdisc del dev eth1 root 2>/dev/null
tc qdisc add dev eth1 root handle 1:0 htb default 1 tc class add dev eth1 parent 1:0 classid 1:2 htb rate 103809024 tc qdisc add dev eth1 parent 1:2 handle 2:0 sfq perturb 10 tc filter add dev eth1 parent 1:0 protocol ip prio 1 u32 match ip src 192.168.1.1 flowid 1:2
tc class add dev eth1 parent 1:0 classid 1:3 htb rate 1024kbit tc class add dev eth1 parent 1:3 classid 1:4 htb rate 128kbit ceil 0
tc class add dev eth1 parent 1:4 classid 1:5 htb rate 16kbit ceil 1024kbit tc qdisc add dev eth1 parent 1:5 handle 5:0 sfq perturb 10 tc filter add dev eth1 parent 1:0 protocol ip prio 1 u32 match ip dst 192.168.0.2 flowid 1:5
tc class add dev eth1 parent 1:4 classid 1:6 htb rate 16kbit ceil 1024kbit tc qdisc add dev eth1 parent 1:6 handle 6:0 sfq perturb 10 tc filter add dev eth1 parent 1:0 protocol ip prio 1 u32 match ip dst 192.168.0.3 flowid 1:6
tc class add dev eth1 parent 1:4 classid 1:7 htb rate 16kbit ceil 1024kbit tc qdisc add dev eth1 parent 1:7 handle 7:0 sfq perturb 10 tc filter add dev eth1 parent 1:0 protocol ip prio 1 u32 match ip dst 192.168.0.4 flowid 1:7 =================================================================
Тестовете потвърдиха заданието.
Потребителите теглиха общо със скорост не повече от 128Kbit, а когато теглят едновремено то те си деляха тази скорост,
като минималната скорост ми бе 16Kbit
Вярно, че няма някои работи като задаване на prio, маркиране с fw (iptables MARK) или ограничаване по порт, но ако се пипне в server.c, може да смени вместо с uc32 да се работи с fw и iptables.
Другото което е хубаво, че има и клиентски софтуер под win, java, с който клиентите могат да виждат скороста си.
Ето и малко screenshost
Мисля, че този utils заслужава един поглед.
Особено ако се ползва от хора, на които tc им е труден като синтаксис.
<< SCO - заплаха за свободния софтуер или блъф? | За качествения софтуер и интеграцията >>
|