ot Todor Lazarov(18-02-2004)

reiting (-63)   [ dobre ]  [ zle ]

Printer Friendly Variant za otpechatvane

Dnes kato se rovih iz http://freshmeat.net/ otkrih edin dosta interesen util, s koito vseki mozhe lesno i burzo da si napravi svoia trafik kontrol.

Razbira se, niama da mozhe da polzva vsichkite vuzmozhnosti na iproute2+tc no zatova puk shte se oturvete ot pisane na slozhen tc sintaksis.

Ta eto i niakolko dumi za samoto prilozhenie Pol-IP. To ima za tsel lesno i burzo da se pravi trafik kontrol pod Linux, kato se izpolzva HTB3. Preporuchitelno e da imate po-novo iadro - naprimer 2.4.20 i nagore ili ako ne, triabva da izpolzvate patch dadeni v tazi stranitsa.

Ideiata e slednata:
CHrez lesen za izpolzvane konfigurator da se napravi konfiguratsionen fail, koito vposledstvie da se prochete ot survurnata chast na prilozhenieto i da se izpulni.

Tova programche se sustoi ot dve chasti.
- surverna chast - polipd
- konfigurator - polipconfig

polipd - e programa, koiato se stratira kato demon i ima za zadacha da izgradi trafik kontrola i da dava informatsiia na klientite, poiskali spravka, kakva skorost izpolzvat.
t.e. Programata e klient surver.

polipconfig - e programa, koiato pravi konfiguratsionniia fail (/etc/polip.conf), koito se prochita ot polipd. Mezhdu drugoto, pravi go v dosta chetaem vid.

Za da se napravi trafik kontrola, e nuzhno da imate instaliran iproute2 + tc i podruzhka ot kernela na HTB3.
Demonut polipd chete konfiguratsioniia fail /etc/polip.conf i go preobrushta v tc sintaksis, koito izpulniava.

Napravih i slednata proba.

Zadachata e slednata:
Imame vhodiash interfeis eth1 s kapatsitet 10Mbit i izhodiasht interfeis eth0 s kapatsitet 1024Kbit.
Zadachata e na trima klienti da se dade po 16Kbit na vseki i obshto te da ne polzvat po-veche ot 128Kbit.
t.e.
min speed = 16Kbit
max speed = 128Kbit

Vidut na konfiguratsioniia fail, napraven ot polipconfig, stana takuv:

=================================================================
###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
=================================================================
A programata polipd izpulni tova:
=================================================================
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
=================================================================
Testovete potvurdiha zadanieto.

Potrebitelite tegliha obshto sus skorost ne poveche ot 128Kbit, a kogato tegliat ednovremeno to te si deliaha tazi skorost,
kato minimalnata skorost mi be 16Kbit

Viarno, che niama niakoi raboti kato zadavane na prio, markirane s fw (iptables MARK) ili ogranichavane po port, no ako se pipne v server.c, mozhe da smeni vmesto s uc32 da se raboti s fw i iptables.

Drugoto koeto e hubavo, che ima i klientski softuer pod win, java, s koito klientite mogat da vizhdat skorosta si.
Eto i malko screenshost

Mislia, che tozi utils zasluzhava edin pogled. Osobeno ako se polzva ot hora, na koito tc im e truden kato sintaksis.


<< SCO - zaplaha za svobodniia softuer ili bluf? | Za kachestveniia softuer i integratsiiata >>