Navigation

Quality of Service (QoS)

Inhalt

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








QoS im CSN

QoS im CSN

Chemnitzer Studentennetz (CSN)

QoS im CSN

Netztopologie CSN

QoS im CSN

Motivation

QoS im CSN

Prinzipielle Funktionsweise

QoS 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 im CSN

Automatische Regelung

Tm = T * Dm / D
                         Lm
Tm > Lm:  Bneu = Balt * ----  ____
                         Tm  /
                        _   / Lm
Tm < Lm:  Bneu = Balt *  | / ----
                         |/   Tm

QoS im CSN

Architektur des Systems



Demo: Benutzeroberfläche des Managers

QoS im CSN

Warum XML-RPC?









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








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

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








Einsatzerfahrungen

Einsatzerfahrungen

Auswertung der Daten von Januar-März 2001 (1561 Rechner)

Einsatzerfahrungen

Test mit vorhandenen Daten

Einsatzerfahrungen

Anzahl der Nutzer in den Gruppen

Einsatzerfahrungen

Test auf dem CSN-Server

Einsatzerfahrungen

Einsatzverlauf

Einsatzerfahrungen

Probleme und Lösungen

Einsatzerfahrungen

Verhalten bei vielen Klassen

Einsatzerfahrungen

Verhalten bei vielen Filtern

Einsatzerfahrungen

Neue Auswertung

Weighted Moving Average

_                 _
T = (1-gewicht) * T + gewicht * T

Einsatzerfahrungen

Initialwerte der Gruppen

Einsatzerfahrungen

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

Einsatzerfahrungen

Neue Regelung - Variante 1 (mpa)

- Last = 7-Tage-Traffic / 7-Tage-Limit (gesamtes CSN)
- wenn Last < 1 dann Last := sqrt(Last)
- Delta(Last) := Last - 1 (> 0: Limit überschritten)
- Negator (hohe Last -> BB verringern)
- Integrator (entspricht fortlaufender Multiplikation im bisherigen System)
- Tiefpass mit Grenzfrequenz 1/(7 Tage)  (Durchschnitt: "Bremsen" der Stellgröße)
- BB = InitialBB * (1 + Delta(BB))

Einsatzerfahrungen

Neue Regelung - Variante 2 (scno)

     7-Tage-Durchschnittstraffic des gesamten CSN
x = ---------------------------------------------
    14-Tage-Durchschnittstraffic des gesamten CSN

- wenn x > 1,1 dann Faktor = Faktor / (x^y)
  (1,1 -> nur sprunghafte Erhöhungen des Traffics; y >= 2)
- BB = InitialBB * Faktor

Einsatzerfahrungen

Neue Regelung - Diagramm









Ausblick

Ausblick

Geplant für die Zukunft









Vielen Dank für Ihre Aufmerksamkeit :-)