Evo detalja. Lnux ruter je preko eth0 povezan na lokalnu mrežu, a preko eth1 ima izlaz na internet 256kbit (koristiću tc oznake po kojima je kbit = kilobita u sekundi, a kbps = kilobajta u sekundi). Ruter ima adresu (lokalnu) 192.168.0.1, a mašine 192.168.0.2 i 192.168.0.3.
Želeo sam da uredim saobraćaj tako da ni jedna mašina ne može da zauzme više od pola linka (osim kad jedino ona downloaduje). Problem je u tome što to jednostavno ne radi, kao da nema tih klasa i garantovanog protoka. Iako po dokumentaciji bi tebalo da radi. Korsitio sam HTB Linux queuing discipline manual - user guide.
Koristio sam sledeći skript:
#!/bin/bash
PATH=/usr/local/sbin:/usr/sbin:/sbin:/root/bin:/usr/local/bin:/usr/bin:/bin
INET_SPEED=256 # brzina interneta
TOTAL_SPEED=102400 # ukupna brzina, 100mbit = 102400kbit
LOC_SPEED=`expr $TOTAL_SPEED - $INET_SPEED` # deo bandwidth-a za lokalni saobraćaj
tc qdisc add dev eth0 handle 1: root htb default 21
tc class add dev eth0 classid 1:1 parent 1: htb rate ${TOTAL_SPEED}kbit ceil ${TOTAL_SPEED}kbit
tc class add dev eth0 classid 1:10 parent 1:1 htb rate ${LOC_SPEED}kbit ceil ${TOTAL_SPEED}kbit
tc class add dev eth0 classid 1:11 parent 1:1 htb rate ${INET_SPEED}kbit ceil ${INET_SPEED}kbit
tc class add dev eth0 classid 1:21 parent 1:11 htb rate 128kbit ceil ${INET_SPEED}kbit
tc class add dev eth0 classid 1:22 parent 1:11 htb rate 128kbit ceil ${INET_SPEED}kbit
tc filter add dev eth0 parent 1:0 prio 1 protocol ip u32 match ip src 192.168.0.0/16 flowid 1:10
tc filter add dev eth0 parent 1:0 prio 2 protocol ip u32 match ip dst 192.168.0.2 flowid 1:21
tc filter add dev eth0 parent 1:0 prio 3 protocol ip u32 match ip dst 192.168.0.3 flowid 1:22
Kad na jednoj mašini pustim 6 paralelnih download-a a na drugoj samo jedan, ona dobije oko 3 puta više.
Da li je možda trebalo da koristim cbq?
[Ovu poruku je menjao Marko_R dana 18.03.2006. u 18:34 GMT+1]