|
Как да си направим по-лесно нашия трафик контрол
|
|
|
|
|
|
от Todor Lazarov(18-02-2004)
рейтинг (-63)
[ добре ]
[ зле ]
Вариант за отпечатване
Днес като се рових из 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 - заплаха за свободния софтуер или блъф? | За качествения софтуер и интеграцията >>
|
|
|
|
|
не се компилира под ...
От: compile
На: 18-02-2004@9:11 GMT+2
Оценка:
/не се компилира на slackware current:
gcc 3.3, kernel 2.4.24, etc, etc ...
[Отговори на този коментар]
компилиране
От: alabala
На: 18-02-2004@13:07 GMT+2
Оценка:
/Трябва ти да си инсталираш: newt-0.51.4
http://mirror.caosity.org/cAos-1/creation/newt-0.51.4-2.caos/SOURCES/newt-0.51.4.tar.gz
Прочети INSTALL файла там е писано от какво се нуждае. Аз си го изкомпилираш точно на Slack.
[Отговори на този коментар]
Rutirane
От: Bars <bars (a) hotmail __точка__ bg>
На: 8-03-2008@12:29 GMT+2
Оценка: 1/НеутраленИмам компютър с три мрежови карти.
Инсталирам Слак.
Записвам настройките на картите, давам дефаулт гейтуей, после тествам от трети компютър - виждам айпи адреса на БТК рутера, но интернет нанайкиш!
Някой може ли да ми каже къде точно на проклетия Линукс трябва да бръкна, та да се сети, че преди всичко ОС създадена за мрежова администрация, а не за печатарски изпълнения?
[Отговори на този коментар]
модем
От: X client
На: 18-02-2004@13:50 GMT+2
Оценка:
/Каква е минималната скорост , която може да бъде разделяна по този начин.
Имам на предвид, че ако една мрежа е свъразна с най-обикновен dial-up модем към аналогова телефонна линия, това решение дали би било ефективно?
[Отговори на този коментар]
speed
От: alabala
На: 18-02-2004@15:42 GMT+2
Оценка:
/Може да вкарваш данни в kbit.
t.e. 8kbit = 1K
Така че при скорост от 33600 то може да задаваш някакъв трафик контрол. Но незнам колко ще е ефекно при полужение че самия модем те ограничава.
[Отговори на този коментар]
сорс
От: D
На: 18-02-2004@19:37 GMT+2
Оценка:
/а как видя сорса на хтб скрипта или по-точно това
tc qdisc del dev eth1 root 2>/dev/nulltc qdisc add dev eth1 root handle 1:0 htb default 1tc class add dev eth1 parent 1:0 classid 1:2 htb rate 103809024tc qdisc add dev eth1 parent 1:2 handle 2:0 sfq perturb 10tc filter add dev eth1 parent 1:0 protocol ip prio 1 u32 match ip src 192.168.1.1 flowid 1:2tc class add dev eth1 parent 1:0 classid 1:3 htb rate 1024kbit ...
[Отговори на този коментар]
Kак бидяш изпълнимите команди
От: alabala
На: 19-02-2004@5:58 GMT+2
Оценка:
/polipd прави лог файл: /var/run/polipd
в който записва какво изпълнява.
иначе:
tc -s qdisc show dev ethX
tc -s class show dev ethX
tc -s filter show dev ethX
[Отговори на този коментар]
polipconfig ne raboti
От: Ludmil
На: 23-02-2004@11:38 GMT+2
Оценка:
/zdraveite rabotj s Slackware 9.0. Kacih neobhodimia newt. Kompilira se polip no polipconfig ne raboti.. pri kompiliraneto mi se pojvjvat njkakvi warningi. Kakav e problema ?
[Отговори на този коментар]
Polipd Error:
От: Martin <lazcorp __@__ mail __точка__ bg>
На: 26-02-2004@21:13 GMT+2
Оценка:
/Идеята е супер, но явно има още какво да се прави по нея. Все още е много нова и неизвестна ...
имам проблем с нея:
polipconfig
Polipd Error: /etc/polipc.conf
в google няма нищо за тази програма, на страницата на програмата няма никаква информация...общо взето хубава идедя ама още в началото :(
[Отговори на този коментар]
за Тс
От: kyle <kyle< at >tea__dot__bg>
На: 4-03-2004@6:48 GMT+2
Оценка:
/Ми пичове то ако ставаше така да кажеш на
програмата в прав текст кво искаш да ти стане с канала дето го имаш такива хора кат мене трябваше гладни да седят:)
Айде земете и попрочетете малко преди да се опитате да правите нещо с нея. Не искам изказването ми да обижда никого просто синтаксиса на тс е достатъчно изчанчен за да може да се направи елементарен парсър който на тва да работи и от първа версия :)
http://www.docum.org/
ако не ви се поизясни малко пробвайте поне с cbq-init
[Отговори на този коментар]
broi users
От: stojanb <stojanb< at >abv< dot >bg>
На: 5-03-2004@19:57 GMT+2
Оценка:
/интерисува ме някои пробвал ли го е това
нещо да прави трафик контрол на повече
юзера примерно над 200 и как се държи
системата товари ли се много
[Отговори на този коментар]
Grshka pri compile
От: Iceshape
На: 6-03-2004@23:20 GMT+2
Оценка:
/sas SuSE 9.0 sam i imam newt i slang,izliza
slednata greshka...
polipd.c:36: warning: (near initialization
for `optionsTable[4]')
polipd.c:31: error: array size missing in
`optionsTable'
polipd.c:31: error: storage size of
`optionsTable' isn't known
polipd.c:53: error: `optCon' undeclared
(first use in this function)
polipd.c:53: warning: implicit declaration
of function `poptGetContext'
polipd.c:55: warning: implicit declaration
of function `poptGetNextOpt'
polipd.c:31: warning: unused variable
`optionsTable'
make: *** [polipd.o] Error 1
B.T.W niama li niakade *.rpm
Ima i drugi GUI-ta za shape--->ktctool.
[Отговори на този коментар]
Няма страшно
От: steve
На: 11-05-2004@5:02 GMT+2
Оценка:
/Почти нищо не товари!!!
[Отговори на този коментар]
polipconfig error
От: Pisach
На: 24-05-2004@11:00 GMT+2
Оценка:
/polipconfig: error while loading shared
libraries: libnewt.so.0.51: cannot open
shared object file: No such file or direc
tory
Sas Slack 9.1 sam i si instalirah vsi4ko
kakto si trjabva?
[Отговори на този коментар]