Kontrola ruchu/przepustowości za pomocą tcng

Mieszko Kaczmarczyk linux_mdk w wp.pl
Pią, 28 Maj 2010, 23:36:32 CEST


Dnia piątek 28 maj 2010 o 13:30:05 Piotr Kakietek napisał(a):
> Chcę aby pasmo było dynamicznie, na przykład:
> - mam połączenie 5 Mbit/s duplex z intenetem (eth0)
> - sieć eth2 ma współczynnik rate ustawiony na 4 Mbit/s a ceil
> 5Mbit/s, - sieć eth3 ma współczynnik rate ustawiony na 1 Mbit/s a
> ceil 5Mbit/s,
> 
> Teraz, przykładowo w pewnej chwili eth2 wysysa 5Mbit/s i wchodzi
> połączenie na eth3 (które ma przepustowość 1Mbit/s).
> 
> Jak to zaimplementować w tcng lub tc aby te dwa interfejsy
> wsþółdzieliły połączenie czyli nasza rurę 5Mbit/s?


Poszukaj opisów HTB/shapera/IMQ itd.


Ja uzywam rcthb


tu fragmenty mojego skryptu:


# INTERFEJS eth1 (ruch przychodzacy)
 /sbin/rchtb_tc qdisc add dev eth1 root handle 1:0 htb default 1 r2q 1
 
 # G��wna klasa dla eth1
 /sbin/rchtb_tc class add dev eth1 parent 1:0 classid 1:1 htb rate 1Mbit 
ceil 1Mbit
 
 # Podzial na pasmo dla lacza internetowego i reszte
 /sbin/rchtb_tc class add dev eth1 parent 1:0 classid 1:2 htb rate 
$max_total ceil $max_total
# /sbin/rchtb_tc class add dev eth1 parent 1:1 classid 1:3 htb rate 
98367kbit ceil 98367kbit prio 9
 /sbin/rchtb_tc qdisc add dev eth1 parent 1:2 handle 20:0 sfq perturb 10
 /sbin/rchtb_tc qdisc add dev eth1 parent 1:3 handle 30:0 sfq perturb 10

 /sbin/rchtb_tc class add dev eth1 parent 1:2 classid 1:53 htb rate $min 
ceil $min prio 1 quantum 1500
 /sbin/rchtb_tc filter add dev eth1 protocol ip prio 2 parent 1:0 u32 
match ip sport 53 0xffff flowid 1:2	# dns
 
 
 # pasmo priorytetowe dla ICMP, TOS 0x10 (min. delay) oraz wybranego 
portu 22
 /sbin/rchtb_tc class add dev eth1 parent 1:2 classid 1:20 htb rate $min 
ceil $min prio 1 quantum 1500

 /sbin/rchtb_tc filter add dev eth1 protocol ip prio 2 parent 1:0 u32 
match ip sport 22 0xffff flowid 1:20	# ssh
 /sbin/rchtb_tc filter add dev eth1 protocol ip prio 2 parent 1:0 u32 
match ip sport 6000 0xffff flowid 1:20	# x-ssh

 /sbin/rchtb_tc filter add dev eth1 protocol ip prio 2 parent 1:0 u32 
match ip sport 1429 0xffff flowid 1:20	# Tibia.pl
 /sbin/rchtb_tc filter add dev eth1 protocol ip prio 2 parent 1:0 u32 
match ip sport 7171 0xffff flowid 1:20	# Tibia.pl

 /sbin/rchtb_tc filter add dev eth1 protocol ip prio 2 parent 1:0 u32 
match ip sport 8074 0xffff flowid 1:20	# GG

 
# /sbin/rchtb_tc filter add dev eth1 protocol ip prio 1 parent 1:0 u32 
match ip tos 0x10 0xff flowid 1:20
# /sbin/rchtb_tc filter add dev eth1 protocol ip prio 1 parent 1:0 u32 
match ip protocol 1 0xff flowid 1:20
 /sbin/rchtb_tc qdisc add dev eth1 parent 1:20 sfq perturb 10





I dalej przycinasz pasma po adresach IP - nawet mozesz d razu po rzucać 
na różne klasy:




    # pasmo priorytetowe dla http-s wybranego portu 443 i radio, mms 
/sbin/rchtb_tc class add dev eth1 parent 1:2 classid 1:81$x htb rate 
$min ceil $max prio 3 quantum 1500 
/sbin/rchtb_tc filter add dev eth1 protocol ip prio 3 parent 1:0 u32 
match ip dst 192.168.1.$x match ip sport 443 0xffff flowid 1:81$x # www
/sbin/rchtb_tc filter add dev eth1 protocol ip prio 3 parent 1:0 u32 
match ip dst 192.168.1.$x match ip sport 1755 0xffff flowid 1:81$x # www
/sbin/rchtb_tc filter add dev eth1 protocol ip prio 3 parent 1:0 u32 
match ip dst 192.168.1.$x match ip sport 8000 0xffff flowid 1:81$x # 
Radio
/sbin/rchtb_tc filter add dev eth1 protocol ip prio 3 parent 1:0 u32 
match ip dst 192.168.1.$x match ip sport 8002 0xffff flowid 1:81$x # 
Radio
/sbin/rchtb_tc filter add dev eth1 protocol ip prio 3 parent 1:0 u32 
match ip dst 192.168.1.$x match ip sport 9000 0xffff flowid 1:81$x # 
Radio
/sbin/rchtb_tc qdisc add dev eth1 parent 1:81$x handle 81$x:0 sfq 
perturb 10





  dla ruchu wychodzącego - oznaczasz źródło pakietów po adresach IP:



 # INTERFEJS ETH0 (ruch wychodzacy)
 /sbin/rchtb_tc qdisc add dev eth0 root handle 2:0 htb default 11 r2q 1
 
 
max_total_wy=256kbit
max_wy=180kbit
max_wy2=80kbit
min_wy=8kbit
 
 # glowna klasa
 /sbin/rchtb_tc class add dev eth0 parent 2:0 classid 2:1 htb rate 
$max_total_wy ceil $max_total_wy

 # klasa priorytetowa ACK
 /sbin/rchtb_tc class add dev eth0 parent 2:1 classid 2:10 htb rate 
$min_wy ceil $max_wy prio 1 quantum 1500
 /sbin/rchtb_tc qdisc add dev eth0 parent 2:10 sfq perturb 10
 /sbin/rchtb_tc filter add dev eth0 parent 2:0 protocol ip prio 2 u32 
match ip protocol 6 0xff match u8 0x05 0x0f at 0 match u16 0x0000 0xffc0 
at 1 match u8
 0x10 0xff at 33 flowid 2:10 # ACK
 
 # klasa priorytetowa TOS 0x10 oraz ICMP
# /sbin/rchtb_tc class add dev eth0 parent 2:1 classid 2:9 htb rate 
24kbit ceil $wyjscie prio 2 quantum 1500
# /sbin/rchtb_tc qdisc add dev eth0 parent 2:9 sfq perturb 10
# /sbin/rchtb_tc filter add dev eth0 parent 2:0 protocol ip prio 1 u32 
match ip tos 0x10 0xff flowid 2:10 # TOS 0x10
 
 /sbin/rchtb_tc filter add dev eth0 parent 2:0 protocol ip prio 1 u32 
match ip dport 22 0xffff flowid 2:10 # port 22
 /sbin/rchtb_tc filter add dev eth0 parent 2:0 protocol ip prio 1 u32 
match ip dport 443 0xffff flowid 2:10 # port GG? http_S_
 /sbin/rchtb_tc filter add dev eth0 parent 2:0 protocol ip prio 1 u32 
match ip dport 8074 0xffff flowid 2:10 # port GG
 /sbin/rchtb_tc filter add dev eth0 parent 2:0 protocol ip prio 1 u32 
match ip dport 53 0xffff flowid 2:10 # port DNS

 /sbin/rchtb_tc filter add dev eth0 parent 2:0 protocol ip prio 1 u32 
match ip dport 1429 0xffff flowid 2:10 # Tibia.pl
 /sbin/rchtb_tc filter add dev eth0 parent 2:0 protocol ip prio 1 u32 
match ip dport 7171 0xffff flowid 2:10 # Tibia.pl

# Klasa priorytetowa Mail, NFS
/sbin/rchtb_tc class add dev eth0 parent 2:1 classid 2:25 htb rate 
$min_wy ceil $max_wy prio 2 quantum 1500
/sbin/rchtb_tc qdisc add dev eth0 parent 2:25 sfq perturb 10
/sbin/rchtb_tc filter add dev eth0 parent 2:0 protocol ip prio 2 u32 
match ip dport 21 0xffff  flowid 2:25 # port mail
/sbin/rchtb_tc filter add dev eth0 parent 2:0 protocol ip prio 2 u32 
match ip dport 25 0xffff  flowid 2:25 # port mail
/sbin/rchtb_tc filter add dev eth0 parent 2:0 protocol ip prio 2 u32 
match ip dport 465 0xffff flowid 2:25 # smtp-gmail
/sbin/rchtb_tc filter add dev eth0 parent 2:0 protocol ip prio 2 u32 
match ip dport 587 0xffff flowid 2:25 # smtp-gmail



a dalej po źródłach z adresów IP


IPT=/sbin/iptables

stop()
{
    $IPT -F -t mangle
    $IPT -X -t mangle
}
  
start()
  {
   $IPT -t mangle -A OUTPUT -j MARK --set-mark 1
   $IPT -t mangle -A PREROUTING -s 192.168.1.2 -j MARK --set-mark 102
   $IPT -t mangle -A PREROUTING -s 192.168.1.6 -j MARK --set-mark 106
}



 /sbin/rchtb_tc class add dev eth0 parent 2:1 classid 2:102 htb rate 
$min_wy ceil $max_wy2 prio 5 quantum 1500
 /sbin/rchtb_tc qdisc add dev eth0 parent 2:102 sfq perturb 10
 /sbin/rchtb_tc filter add dev eth0 parent 2:0 protocol ip prio 5 handle 
102 fw flowid 2:102
 

   $IPT -t mangle -A PREROUTING -s 192.168.1.6 -j MARK --set-mark 106

 /sbin/rchtb_tc class add dev eth0 parent 2:1 classid 2:106 htb rate 
$min_wy ceil $max_wy2 prio 5 quantum 1500
 /sbin/rchtb_tc qdisc add dev eth0 parent 2:106 sfq perturb 10
 /sbin/rchtb_tc filter add dev eth0 parent 2:0 protocol ip prio 5 handle 
106 fw flowid 2:106



na końcu jeszcze dopisuję:

 /sbin/rchtb_tc filter add dev eth0 parent 2:0 protocol ip prio 9 u32 
match ip dst 0/0 flowid 2:11
 
 
# ruch serwerowy (pasmo dla gosci z zewnatrz)
 /sbin/rchtb_tc class add dev eth0 parent 2:1 classid 2:11 htb rate 
$min_wy ceil $max_wy2 prio 9 quantum 1500
 /sbin/rchtb_tc qdisc add dev eth0 parent 2:11 sfq perturb 10
 /sbin/rchtb_tc filter add dev eth0 parent 2:0 protocol ip prio 5 handle 
1 fw flowid 2:11






Powodzenia
Mieszko Kaczmarczyk

-- 
Duże wydatki? Znajdź najtańszy kredyt: 
http://info.totalmoney.pl/k2/kredyt_gotowkowy_m1.php









.


Więcej informacji o liście dyskusyjnej pld-users-pl