Klasifikace provozu sítě
Adam Dobiáš, 451044@muni.cz
Obsah
Dátové toky
Parametre:
- spoľahlivosť
- opozdenie
- rozptyl opozdenia
- prenosová kapacita
Quality of Service
Internet je navrhnutý ako spravodlivý a best effort.
Niektoré služby (VoIP, kriticke data, ...) potrebujú definovať parametre spojenia.
Mechanizmy:
- Plánovanie (scheduling)
- Formovanie (shaping)
- množstvo a rýchlosť odosielania paketov
- leaky bucket, token bucket
- Prevencia zahltenia (congestion avoidance)
Implementácia:
- Integrated Services
- kontrakt, rezervácia zdrojov, udržovanie stavu
- Differentiated Services
- rozdelenie paketov do tried
- napr. zdrojová/cieľová adresa, zdrojový/cieľový port
- pole DS (v IP4 nahradilo ToS)
- per hop behavior (PHB)
- Expedited Forwarding - low delay, low loss, low jitter
- Assured Forwarding - garancia doručenia, ak to neprekročí nejaký bandwidth
- Default Forwarding
- Class Selectors - spätná komtatibilita s IP precedence
Fronty paketov
CBQ - Class Based Queueing
- rozdelí pakety do tried (napr. podľa priority, rozhrania, IP, protokolu, ...)
TBF - Token Bucket Filter
HTB - hierarchical token bucket
- vylepšená verzia CQB
- rate, ceil
SFQ - Stochastic Fairenss Queueing
- toky rozdelené do front pomocou hashovacej funkcie
- fronty sú obsluhované spravodlivo
- perturb, quantum, limit
WFQ - Weighted Fair Queueing
- každý tok dostane pomernú časť šírky pásma, podľa jeho váhy
PRIO
- rozdeľuje toky na základe filterov
- nerobí shaping
Bufferbloat
príliš veľké buffery na sieťových prvkoch
keď je potom na sieti problém, môže trvať dlho kým si to TCP uvedomí a zareguje
riešenie:
- AQM - Adaptive Queue Management (CoDel)
- BBR congestion control
- Micto Transport Protocol (BitTorrent klienti)
- HTTP pipelining, HTTP/2
Monitoring
iftop
iptraf
Konfigurácia
Prevzaté z lartc.org.
Vytvoríme hierarchiu tried:
CEIL=240
tc qdisc add dev eth0 root handle 1: htb default 15
tc class add dev eth0 parent 1: classid 1:1 htb rate ${CEIL}kbit ceil ${CEIL}kbit
tc class add dev eth0 parent 1:1 classid 1:10 htb rate 80kbit ceil 80kbit prio 0
tc class add dev eth0 parent 1:1 classid 1:11 htb rate 80kbit ceil ${CEIL}kbit prio 1
tc class add dev eth0 parent 1:1 classid 1:12 htb rate 20kbit ceil ${CEIL}kbit prio 2
tc class add dev eth0 parent 1:1 classid 1:13 htb rate 20kbit ceil ${CEIL}kbit prio 2
tc class add dev eth0 parent 1:1 classid 1:14 htb rate 10kbit ceil ${CEIL}kbit prio 3
tc class add dev eth0 parent 1:1 classid 1:15 htb rate 30kbit ceil ${CEIL}kbit prio 3
tc qdisc add dev eth0 parent 1:12 handle 120: sfq perturb 10
tc qdisc add dev eth0 parent 1:13 handle 130: sfq perturb 10
tc qdisc add dev eth0 parent 1:14 handle 140: sfq perturb 10
tc qdisc add dev eth0 parent 1:15 handle 150: sfq perturb 10
Vytvoril sa HTB strom s hĺbkou 1:
+---------+
| root 1: |
+---------+
|
+---------------------------------------+
| class 1:1 |
+---------------------------------------+
| | | | | |
+----+ +----+ +----+ +----+ +----+ +----+
|1:10| |1:11| |1:12| |1:13| |1:14| |1:15|
+----+ +----+ +----+ +----+ +----+ +----+
Pakety s markerom X (handle X fw) pošleme do danej fronty (classid Y:Z):
tc filter add dev eth0 parent 1:0 protocol ip prio 1 handle 1 fw classid 1:10
tc filter add dev eth0 parent 1:0 protocol ip prio 2 handle 2 fw classid 1:11
tc filter add dev eth0 parent 1:0 protocol ip prio 3 handle 3 fw classid 1:12
tc filter add dev eth0 parent 1:0 protocol ip prio 4 handle 4 fw classid 1:13
tc filter add dev eth0 parent 1:0 protocol ip prio 5 handle 5 fw classid 1:14
tc filter add dev eth0 parent 1:0 protocol ip prio 6 handle 6 fw classid 1:15
Priradenie markeru pomocou iptables:
iptables -t mangle -A PREROUTING -p tcp -m tcp --sport 22 -j MARK --set-mark 0x1
iptables -t mangle -A PREROUTING -p tcp -m tcp --sport 22 -j RETURN
Modelovanie Záťaže
iperf
- jeden PC je server, druhý je klient
iperf -s
iperf -c <ip serveru> -t 60
Literatura