Navigation

Dynamische Bandbreitenbeschränkung mit QoS



Inhalt

  1. Einleitung
  2. Was ist QoS?
  3. QoS in Linux
  4. Realisierung
  5. Einsatzerfahrungen
  6. Ausblick




Jan Horbach, Rechnernetze und verteilte Systeme, TU Chemnitz
jan.horbach@informatik.tu-chemnitz.de








Einleitung

Motivation

Chemnitzer Studentennetz (CSN)









Was ist QoS?

QoS = Quality of Service

Einsatzgebiet

Probleme bei der Umsetzung von QoS

Neue Anwendungsdomäne

Integrated Services (IntServ)

Schlüsselkomponenten

Differentiated Services (DiffServ)

Grundlegende Serviceklassen

Traffic Shaping

Leaky Bucket
  • Traffic-Bursts gepuffert und in konstanten Raten abgegeben
  • wenn Puffer überläuft, neue Pakete gedroppt
  • Nachteil: bei genügend Bandbreite Verkehr unnötig eingeschränkt
Token Bucket
  • Bucket in bestimmten Abständen mit Tokens versorgt
  • repräsentieren gewisse Menge von Datenbytes
  • Daten nur bei genügend Tokens sendbar, Bursts möglich

Preferential Queuing

Priority Queuing
  • hochpriorisierte Pakete vor anderen in Queue eingeordnet
  • langsamer als FIFO (Analyse, Umordnung), unfair
Weighted Fair Queuing (WFQ)
  • Traffic mit niedriger Datenmenge bevorzugt behandelt
Stochastic Fair Queuing (SFQ)
  • Hashbildung über Quell- und Zieladresse -> Queues -> Round Robin
  • Alternative: Weighted Round Robin (WRR)
Class-Based Queuing (CBQ)
  • Bandbreite hierarchisch (Baum) auf Klassen verteilt, borgbar
  • Fairness: jede Klasse behandelt, auch niedrigpriorisierte
  • Alternative: Hierarchical Token Bucket (HTB)








QoS in Linux

QoS in Linux

modprobe sch_qdisc
modprobe cls_classifier

Zuweisung der Queuing Discipline

Unterstützte QDiscs (Auswahl)

tc qdisc add dev eth0 root handle 1: cbq bandwidth 100MBit avpkt 1000 cell 8

Einrichten der Klassenhierarchie

tc class add dev eth0 parent 1:0 classid 1:1 cbq bandwidth 100MBit rate 100MBit\
   allot 1514 cell 8 weight 10MBit prio 8 maxburst 20 avpkt 1000
tc class add dev eth0 parent 1:1 classid 1:3 cbq bandwidth 100MBit rate 100MBit\
   allot 1514 cell 8 weight 10MBit prio 8 maxburst 20 avpkt 1000
# Klasse fuer Gruppe 5
tc class add dev eth0 parent 1:3 classid 1:35 cbq bandwidth 100MBit rate 100KBit\
   allot 1514 cell 8 weight 10KBit prio 5 maxburst 20 avpkt 1000 bounded
tc qdisc add dev eth0 parent 1:35 tbf rate 100KBit buffer 10Kb/8 limit 15Kb

Klassenhierarchie im CSN (alt)

Klassifizierung der Pakete

Filterarten

# Filter fuer Gruppe 5, fuer jede IP
tc filter add dev eth0 parent 1:0 protocol ip prio 100 u32\
   match ip dst 134.109.96.165/32 flowid 1:35








Realisierung

Prinzipielle Funktionsweise

Architektur des Systems

Regelungsstrategien

Beispiel Semesterbeginn









Einsatzerfahrungen

Einsatzverlauf

Probleme und Lösungen

Initialwerte der Gruppen

Neue Gruppenaufteilung

GruppeBandbreiteNutzerAb MengeVorher Klasse
012345
1 98 MBit/s94955,4% 0 MByte/Tag92511 7 4 20
2 53 MBit/s22213,0% 17 MByte/Tag19318 7 2 11
3 29 MBit/s151 8,8% 29 MByte/Tag11323 5 8 11
4 15 MBit/s111 6,5% 40 MByte/Tag 532418 8 80
58400 KBit/s 82 4,8% 54 MByte/Tag 271233 6 31
64500 KBit/s 64 3,7% 69 MByte/Tag 5102511 85
72500 KBit/s 49 2,9% 92 MByte/Tag 4 41514 48
81300 KBit/s 39 2,3%114 MByte/Tag 0 0 916 95
9 720 KBit/s 30 1,8%150 MByte/Tag 1 1 414 55
10 390 KBit/s 16 0,9%223 MByte/Tag 0 0 1 2112

Verhalten bei vielen Klassen

Verhalten bei vielen Filtern









Ausblick

Ausblick









Vielen Dank für Ihre Aufmerksamkeit



Dipl.-Inf. Jan Horbach

Rechnernetze und verteilte Systeme
Fakultät für Informatik
Technische Universität Chemnitz

jan.horbach@informatik.tu-chemnitz.de