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/27 00:28] trskaj1vyuka: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
 +
 +
 +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.1243384081.txt.gz
  • Last modified: 2009/05/27 00:28
  • by trskaj1