Navigation

Quality of Service (QoS)

Inhalt

  1. Was ist QoS?
  2. Herangehensweisen
  3. Grundlegende Verfahren
  4. Einsatz im CSN
  5. QoS in Linux
  6. Ausblick
Jan Horbach, Rechnernetze und verteilte Systeme, TU Chemnitz
jan.horbach@informatik.tu-chemnitz.de








Was ist QoS?

Was ist QoS?

Szenario

Anforderungen

Was ist QoS?

Quality of Service (QoS)

Quality

Service

Was ist QoS?

Probleme bei der Umsetzung von QoS









Herangehensweisen

Herangehensweisen

Integrated Services (IntServ)

Schlüsselkomponenten

Herangehensweisen

Differentiated Services (DiffServ)

Grundlegende Serviceklassen









Grundlegende Verfahren

Grundlegende Verfahren

Admission Control

Grundlegende Verfahren

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

Grundlegende Verfahren

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)

Grundlegende Verfahren

TCP-Mechanismen

Random Early Detection/Drop (RED)
  • Unterstützung der TCP-Flusskontrolle
  • abhängig vom Füllstand der Queue Wegwerfen von Paketen
  • TCP-Flows zu verschiedenen Zeitpunkten langsamer, Überlastung verhindert
  • Problem: UDP (Multimedia!) nicht erfasst
Weighted RED (WRED)
  • Dropwahrscheinlichkeit von Priorität abhängig
  • Token-Bucket-Schwellen (Tresholds)
  • überschritten -> niedrigere Priorität (Treshold Triggering)
Generalized RED (GRED)
  • Drop-Precedences und -Wahrscheinlichkeiten pro Queue








Einsatz im CSN

Einsatz im CSN

Chemnitzer Studentennetz (CSN)

Einsatz im CSN

Netztopologie CSN

Einsatz im CSN

Motivation

Einsatz im CSN

Prinzipielle Funktionsweise

Einsatz im CSN

Architektur des Systems

Einsatz im CSN

Einordnung in eine Gruppe

GruppeAb MengeBandbreiteTageBegrenzungSofort
1100 MByte/Tag 10 MBit/s 2--
2200 MByte/Tag 5 MBit/s 4X-
3300 MByte/Tag 3 MBit/s 6X-
4400 MByte/Tag500 KBit/s 8X-
5500 MByte/Tag100 KBit/s10XX








QoS in Linux

QoS in Linux

modprobe sch_qdisc
modprobe cls_classifier

QoS in Linux

Zuweisung der Queuing Discipline

Unterstützte QDiscs (Auswahl)

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

QoS in Linux

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

QoS in Linux

Klassenhierarchie im CSN

QoS in Linux

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

QoS in Linux

Verhalten bei vielen Filtern

QoS in Linux

Zusammenfassung

modprobe sch_qdisc
modprobe cls_classifier

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

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
# 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








Ausblick

Ausblick

Aktueller Einsatz im CSN

Geplant für die nähere Zukunft









Vielen Dank für Ihre Aufmerksamkeit :-)