Титла: Tc, qos Публикувано от: lod в Aug 31, 2008, 22:23 здравейте, искам да огранича скоростта на торентите. интернет скоростта ми е 10МБит/с, pppoe, и ограничението което се опитвам да направя е на вътрешният интерфейс, като целият трафик без торенти искам да ми е 96Мбит/с, а торентите 4Мбит/с. попаднах на предишни статии тук и от други места и скалъпих един скрипт, но не мога да си намеря грешката и защо не се получава, ако можете да ми помогнете да намеря къде греша. идеята ми е на три таблици, като последните 2 са за торенти и разпределям трафика на входящ и изходящ, да са независими и да не могат да пипат от другите траблици.
това ми е скрипта: dev=eth0 RATE1=96mbit RATE2=4mbit PRIO1="prio 5" PRIO2="prio 0" OPTION="allot 1514 maxburst 20 avpkt 1000" OPTION2=bounded policy=cbq case $policy in cbq) tc qdisc add dev $dev root handle 1: cbq bandwidth 100Mbit avpkt 1000 tc class add dev $dev parent 1: classid 1:1 cbq bandwidth 100Mbit rate 100Mbit \ allot 1514 weight 100Mbit prio 8 maxburst 20 avpkt 1000 #all trafic tc class add dev $dev parent 1:1 classid 1:10 cbq bandwidth 100Mbit \ rate $RATE1 $OPTION $PRIO1 $OPTION2 #torrents up tc class add dev $dev parent 1:1 classid 1:11 cbq bandwidth 100Mbit \ rate $RATE2 $OPTION $PRIO2 $OPTION2 #torrents down tc class add dev $dev parent 1:1 classid 1:12 cbq bandwidth 100Mbit \ rate $RATE2 $OPTION $PRIO2 $OPTION2 ;; htb) tc qdisc add dev $dev root handle 1: htb default 10 tc class add dev $dev parent 1: classid 1:1 htb rate 100Mbit #all trafic tc class add dev $dev parent 1:1 classid 1:10 htb rate $RATE1 ceil 100Mbit #torrents up tc class add dev $dev parent 1:1 classid 1:11 htb rate $RATE2 bounded #torrents down tc class add dev $dev parent 1:1 classid 1:12 htb rate $RATE2 bounded ;; esac tc qdisc add dev $dev parent 1:10 sfq quantum 1514b perturb 15 tc qdisc add dev $dev parent 1:11 sfq quantum 1514b perturb 15 tc qdisc add dev $dev parent 1:12 sfq quantum 1514b perturb 15 tc filter add dev $dev protocol ip parent 1:0 prio 5 handle 1 fw flowid 1:10 tc filter add dev $dev protocol ip parent 1:0 prio 0 handle 2 fw flowid 1:11 tc filter add dev $dev protocol ip parent 1:0 prio 0 handle 3 fw flowid 1:12 това са ми правилата в iptables за mangle: qos_unpriv=1024:65535 for i in tcp udp; do $ipt -t mangle -A PREROUTING -i eth0 -p $i --dport ${qos_unpriv} -j MARK --set-mark 2 $ipt -t mangle -A POSTROUTING -o eth0 -p $i --sport ${qos_unpriv} -j MARK --set-mark 3 $ipt -t mangle -A PREROUTING -i eth0 -p $i --dport 1:1024 -j MARK --set-mark 1 $ipt -t mangle -A POSTROUTING -o eth0 -p $i --sport 1:1024 -j MARK --set-mark 1 done благодаря предварително Титла: Tc, qos Публикувано от: Warstomp в Sep 01, 2008, 08:20
10 или 100 ти е? Титла: Tc, qos Публикувано от: lod в Sep 01, 2008, 09:01 скоростта ми е 10мбит, по - точно 8, но достигам 10
![]() но тъйкато правя ограничението на вътрешен интерфейс където скоростта ми е 100мбит/с в едната посока, не искам да ги губя. ползвам разни неща по рутера и е досадно да прехвърлям файлове с 300кб/с Титла: Tc, qos Публикувано от: gat3way в Sep 01, 2008, 10:23 На първо време може да се опрости до известна степен, разкарваме маркирането с iptables и flowid филтрите направо си караме с u32 филтри:
За портовете 1024-65535: 65535-1024=64511 (0xfbff) 0xfbff XOR 0xffff = 0x0400 1024 = 0x0400 (hex) => (за 1024-65535, tcp/udp): tc filter add dev $dev protocol ip parent 1:0 prio 0 u32 match sport 0x0400 0x0400 flowid 1:11 за 0-1024, tcp/udp: 1024-0=1024 (0x0400) 0x0400 XOR 0xffff = 0xfbff => tc filter add dev $dev protocol ip parent 1:0 prio 5 u32 match sport 0x0000 0xfbff flowid 1:10 Титла: Tc, qos Публикувано от: lod в Sep 01, 2008, 10:26 хм, това е интересен подход, не го знаех.. благодаря много!!!! ще пробвам и с него, но за да бъда нахален до край, ако някой може да ми помогне да го направя с iptables.
Титла: Tc, qos Публикувано от: Gaara в Sep 01, 2008, 11:12 Има две великолепни статии на VladSun, които много ще ти помогнат, ако знаеш какво точно правиш. Използването на IPMARK или IPCLASSIFY ще ти направят живота доста по-лесен.
По отношение на трафика ти във вътрешната ти мрежа, то просто създай един user chain и трафика, който ти е от вътрешната мрежа, го прекарай оттам, като му зададеш default класа или не му задаваш нищо ![]() |