vyuka:cviceni:y36sps:semestralky:trskaj1

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
vyuka:cviceni:y36sps:semestralky:trskaj1 [2009/05/29 06:44] rootvyuka:cviceni:y36sps:semestralky:trskaj1 [2009/06/05 00:09] (current) trskaj1
Line 5: Line 5:
 Úkolem je tedy:   Úkolem je tedy:  
   * pomocí HTB (Hierarchy Token Bucket) rozklasifikovat provoz na síti (jedna aplikace nesmí výrazně omezit jiné, podle jejich charakteru nastavit priority, méně důležité mohou být skoro úplně omezeny, ale také klidně i využívat celou šíři pásma, pokud ji jiné aplikace nepotřebují)   * pomocí HTB (Hierarchy Token Bucket) rozklasifikovat provoz na síti (jedna aplikace nesmí výrazně omezit jiné, podle jejich charakteru nastavit priority, méně důležité mohou být skoro úplně omezeny, ale také klidně i využívat celou šíři pásma, pokud ji jiné aplikace nepotřebují)
-  * přes iptables přiřadit jednotlivé pakety k třídám a nastavit TOS podle potřeby+  * přes iptables přiřadit jednotlivé pakety k třídám
   * z toho vytvořit skript, který se bude automaticky spouštět na routeru (možnost nastavení výchozího stavu přes parametr skriptu)   * z toho vytvořit skript, který se bude automaticky spouštět na routeru (možnost nastavení výchozího stavu přes parametr skriptu)
  
-Schválení: ANO+**Schválení:** ANO 
 + 
 + 
 +Jednotlivé třídy: 
 +  -Herní klienty, dns, ssh 
 +  -Herní servery 
 +  -Prohlížení internetu 
 +  -Apache a jiné 
 +  -bittorent, dc, ... 
 + 
 +takhle nějak vypadá navrhnutý strom (na každém z listů je ještě zavěšeno sfq):  
 +<HTML> 
 ++---------+ 
 +| root 1: | 
 ++---------+ 
 +     | 
 ++--------------------------------+ 
 +| class 1:1                      | 
 ++--------------------------------+ 
 +  |      |      |      |      | 
 ++----+ +----+ +----+ +----+ +----+ 
 +|1:10| |1:20| |1:30| |1:40| |1:50| 
 ++----+ +----+ +----+ +----+ +----+ 
 +</HTML> 
 + 
 +Skript pro router: parametr start nastaví pravidla, stop je smaže, stats vypíše informace (jakými třídami proudí data atd..) 
 +<HTML> 
 +#!/bin/sh 
 +I=vlan1 
 +TQA="tc qdisc add dev $I" 
 +TCA="tc class add dev $I" 
 +TFA="tc filter add dev $I" 
 +Q="sfq perturb 10" 
 + 
 +case "$1" in 
 +start) 
 + tc qdisc del dev $I root 2>/dev/null 
 + $TQA root handle 1: htb default 40 
 + $TCA parent 1: classid 1:1 htb rate 1060kbit ceil 1060kbit  
 +# herni klienty, dns 
 + $TCA parent 1:1 classid 1:10 htb rate 400kbit ceil 1060kbit prio 1 quantum 1500 
 + $TQA parent 1:10 handle 10: $Q 
 + $TFA parent 1: prio 1 protocol ip handle 1 fw flowid 1:10 
 +# herni servery 
 + $TCA parent 1:1 classid 1:20 htb rate 400kbit ceil 1060kbit prio 2 quantum 1500 
 + $TQA parent 1:20 handle 20: $Q 
 + $TFA parent 1: prio 2 protocol ip handle 2 fw flowid 1:20 
 +# www 
 + $TCA parent 1:1 classid 1:20 htb rate 120kbit ceil 1060kbit prio 3 quantum 1500 
 + $TQA parent 1:20 handle 20: $Q 
 + $TFA parent 1: prio 3 protocol ip handle 3 fw flowid 1:30 
 +# www 1MB+, apache, default 
 + $TCA parent 1:1 classid 1:40 htb rate 80kbit ceil 1060kbit prio 3 quantum 1500 
 + $TQA parent 1:40 handle 40: $Q 
 + $TFA parent 1: prio 4 protocol ip handle 4 fw flowid 1:40 
 +# porty 1024+, dns 2KB+ 
 + $TCA parent 1:1 classid 1:50 htb rate 60kbit ceil 1000kbit prio 4 quantum 1500 
 + $TQA parent 1:50 handle 50: $Q 
 + $TFA parent 1: prio 5 protocol ip handle 5 fw flowid 1:50 
 + 
 + ;; 
 +stop) 
 + tc qdisc del dev $I root 2>/dev/null 
 + tc qdisc del dev $I ingress 2>/dev/null 
 + ;; 
 +stats) 
 + tc -s -d qdisc ls dev $I 
 + tc -s -d class ls dev $I 
 +esac 
 +</HTML> 
 + 
 +nastavení mark hodnoty pro jednotlivé pakety přes iptables: 
 +<HTML> 
 +iptables -t mangle -A QOS -p tcp -m mport --dports 80,443 -m bcount --range 0x0-0xfffff -j MARK --set-mark 2 
 +iptables -t mangle -A QOS -p tcp -m mport --dports 80,443 -m bcount --range 0x100000 -j MARK --set-mark 4 
 +iptables -t mangle -A QOS -p tcp -m mport --dports 80,443 -j RETURN 
 +iptables -t mangle -A QOS -p udp --dport 53 -m bcount --range 0x0-0x7ff -j MARK --set-mark 1 
 +iptables -t mangle -A QOS -p tcp --dport 53 -m bcount --range 0x0-0x7ff -j MARK --set-mark 1 
 +iptables -t mangle -A QOS -p udp --dport 53 -m bcount --range 0x800 -j MARK --set-mark 5 
 +iptables -t mangle -A QOS -p tcp --dport 53 -m bcount --range 0x800 -j MARK --set-mark 5 
 +iptables -t mangle -A QOS -p tcp --dport 53 -j RETURN 
 +iptables -t mangle -A QOS -p udp --dport 53 -j RETURN 
 +iptables -t mangle -A QOS -p tcp --sport 80 -j MARK --set-mark 4 
 +iptables -t mangle -A QOS -p tcp --sport 80 -j RETURN 
 +iptables -t mangle -A QOS -p tcp --dport 22 -j MARK --set-mark 1 
 +iptables -t mangle -A QOS -p tcp --dport 22 -j RETURN 
 +iptables -t mangle -A QOS -p tcp --sport 6000 -j MARK --set-mark 2 
 +iptables -t mangle -A QOS -p tcp --sport 6000 -j RETURN 
 +iptables -t mangle -A QOS -p tcp --sport 6001 -j MARK --set-mark 2 
 +iptables -t mangle -A QOS -p tcp --sport 6001 -j RETURN 
 +iptables -t mangle -A QOS -p udp --sport 27005 -j MARK --set-mark 1 
 +iptables -t mangle -A QOS -p udp --sport 27005 -j RETURN 
 +iptables -t mangle -A QOS -p udp --dport 27005 -j MARK --set-mark 2 
 +iptables -t mangle -A QOS -p udp --dport 27005 -j RETURN 
 +iptables -t mangle -A QOS -p tcp --sport 6112 -j MARK --set-mark 1 
 +iptables -t mangle -A QOS -p tcp --sport 6112 -j RETURN 
 +iptables -t mangle -A QOS -p tcp --dport 7777 -j MARK --set-mark 1 
 +iptables -t mangle -A QOS -p tcp --dport 7777 -j RETURN 
 +iptables -t mangle -A QOS -p tcp --sport 7777 -j MARK --set-mark 2 
 +iptables -t mangle -A QOS -p tcp --sport 7777 -j RETURN 
 +iptables -t mangle -A QOS -p udp --dport 1024:65535 -j MARK --set-mark 5 
 +iptables -t mangle -A QOS -p udp --dport 1024:65535 -j RETURN 
 +iptables -t mangle -A QOS -p tcp --dport 1024:65535 -j MARK --set-mark 5 
 +iptables -t mangle -A QOS -p tcp --dport 1024:65535 -j RETURN 
 +iptables -t mangle -A QOS -j MARK --set-mark 4 
 +</HTML> 
 +\\  
 +\\  
 +výtah z TC 
 +<HTML> 
 +tc qdisc [ add | change | replace | link ] dev DEV [ parent qdisc-id | root ] [ handle qdisc-id ] qdisc [ qdisc specific parameters ] 
 +tc class [ add | change | replace ] dev DEV parent qdisc-id [ classid class-id ] qdisc [ qdisc specific parameters ] 
 +tc filter [ add | change | replace ] dev DEV [ parent qdisc-id | root ] protocol protocol prio priority filtertype [ filtertype specific parameters ] flowid flow-id 
 +tc [-s | -d ] qdisc show [ dev DEV ] 
 +tc [-s | -d ] class show dev DEV 
 +tc filter show dev DEV 
 + 
 +pro htb: 
 +tc qdisc ... dev dev ( parent classid | root) [ handle major: ] htb [ default minor-id ] 
 +tc class ... dev dev parent major:[minor] [ classid major:minor ] htb rate rate [ ceil rate ] [ burst bytes ] [ cburst bytes ] [ prio priority ]  
 +</HTML> 
 + 
 + 
 + 
 +Odkazy: 
 +[[http://luxik.cdi.cz/~devik/qos/htb/|HTB home]] 
 +[[http://linux.die.net/man/8/tc|tc man page]] 
 +[[http://www.root.cz/clanky/htb-jemny-uvod/|HTB jemný úvod (root.cz)]] 
 + 
 +{{:vyuka:cviceni:y36sps:semestralky:trskaj1.pdf|}}
  
 ~~DISCUSSION~~ ~~DISCUSSION~~
  • vyuka/cviceni/y36sps/semestralky/trskaj1.1243579446.txt.gz
  • Last modified: 2009/05/29 06:44
  • by root