Quality of Service (QoS) Hauptseminar Virtuelle Präsenz WS 03/04 Netzwerkprotokolle Quality of Service (QoS) 2003-11-20 Steffen Moser <steffen.moser@informatik.uni-ulm.de>
Übersicht Was ist QoS? Situation heute Gründe für Bedarf nach QoS Ansätze zur Realisierung von QoS Integrated Services (Intserv) Differentiated Services (Diffserv) Beispiel Linux Zusammenfassung
Was ist QoS? Definition nach ITU-T E.800: Collective effect of service performances which determine the degree of satisfaction of a user of a service. Verschiedene Kriterien, die die Güte eines Dienstes in einem Datennetz beschreiben, sowie die Möglichkeiten, die ein Netzwerk bietet, einer Anwendung bestimmte Qualitäten verbindlich zuzusichern. Ressourcen (Bandbreite, Pufferspeicher, CPU, usw.) sind nicht unbeschränkt verfügbar. Details und mögliche Realisierungen später.
Situation heute Das Internet als Beispiel für ein paketvermitteltes Netz: Datenübermittlung in Form von kleinen Datenpakten des Internet Protokolls ( IP -Pakete). IP-Pakete bestehen aus IP-Header + Nutzdaten (Payload): 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Version IHL Type of Service Total Length +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Identification Flags Fragment Offset +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Time to Live Protocol Header Checksum +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Source Address +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Destination Address +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Options Padding +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ IP-Header (IPv4)
Situation heute (Forts.) Shared medium Insbesondere keine physikalische Verbindung oder Leitung, die einer Sitzung (z.b. Zugriff eines Webclients auf einen Webserver) fest zugeordnet bleibt - Gegensatz zu Telefonnetz. Pakete (auch innerhalb einer Sitzung) können verschiedene Wege nehmen, Wegewahl erfolgt anhand von Tabellen. Rechner, die Datenpakete weiterleiten, werden Router bzw. speziell IP-Router genannt.
Situation heute (Forts.) IP-Router im heutigen Internet arbeiten nach dem Best-Effort - Prinzip, d.h.: Auslieferung von Daten nach bestem Bemühen. Konkret: Router besitzt Warteschlange für weiterzuleitende IP-Pakete, Abarbeitung der Warteschlange nach dem FIFO-Prinzip. Ist die Warteschlange voll, und es kommen dennoch weitere IP- Pakete an, werden diese verworfen. Man spricht von Paketverlusten (packet loss).
Situation heute (Forts.) IP-Pakete können also offensichtlich verloren gehen. Insbesondere keine Garantien seitens des Netzes bzgl. Zustellung, maximaler Paketlaufzeit, Bandbreite, usw. vorhanden. Eine höhere Protokollschicht muss sich um die erneute Zustellung eines verloren gegangenen Pakets kümmern. Im Allgemeinen ist dies die Transportschicht (im Falle von TCP), im Falle von UDP muss die Anwendung selber den Fehler behandeln.
Gründe für Bedarf nach QoS Verschiedene Anwendungen haben unterschiedliche Anforderungen an ein Netz: Anwendungen im Bereich der virtuellen Präsenzen sind stark interaktiv, d.h., Paketlaufzeiten (Pufferfüllstand in Routern) sollten möglichst klein gehalten werden. Übertragung von multimedialen Daten in Echtzeit (z.b. für virtuelle Treffen, Videokonferenzen) benötigt zugesicherte Bandbreite. Unterschiedliche Prioritäten z.b. bei layered video coding. Herunterladen von Software, Mail, News, usw. problemlos mit niedrigerer Priorität möglich (insbesondere keine Zusicherungen erforderlich).
Ansätze zur Realisierung von QoS Geändertes Drop-Verhalten von Routern in Abhängigkeit des Inhalts der Datenpakete und der gemachten Zusicherungen. Dazu Einordnen der Pakete in Datenflüsse, anschließend Behandlung mittels verschiedener Algorithmen: Fair Queuing, Class Based Fair Queuing, Token Bucket Filter,... Zugangsknoten des Netzes überprüft, ob die Ressourcen, die eine Anwendung anfordert, verfügbar sind. Falls ja, Reservierung der Ressourcen und Erlauben des Zugangs. Falls nein, wird der Anwendung nur Best Effort zugeteilt (wie heute üblich)
Ansätze zur Realisierung von QoS Zwei verschiedene Ansätze bzw. Vorschläge zur konkreten Realisierung der vorgestellten Konzepte: Integrated Services (IntServ) RFC 1633 Differentiated Services (DiffServ) RFC 2475
Integrated Services Verschiedene Service-Klassen: Guaranteed Service (für Echtzeitanwendungen) Controlled Load (statistische Garantie) Best Effort (wie bekannt) Resource Reservation Protocol (RSVP) dient zur Reservierung von Ressourcen: Medien-Server teilt den einzelnen Routern zwischen Server und Client mit, wieviel Ressourcen (z.b. Bandbreite) benötigt wird. Anschließend erhält er eine Nachricht, ob die Reservierung erfolgreich war.
Integrated Services (Forts.) Bewertung: Modulares Konzept: RSVP ist vollkommen unabhängig von den konkret verwendeten Mechanismen in den Routern (Abstraktion). Sehr detaillierte Möglichkeiten: Pro Datenfluss verschiedene Qualitäten möglich. Ressourcenbedarf in den Routern sehr hoch: für jeden Datenfluss benötigt der Router einen eigenen Zustand. Skaliert in großen Netzen schlecht.
Integrated Services (Forts.) Was passiert bei Änderung des IP-Routings (dynamisches Routing)? Würde ein einfacheres Konzept für viele Anwendungen nicht bereits ausreichen?
Differentiated Services Grundsätze: Unterscheidung zwischen Kern- (core) und Randnetzen (edge). Router in Kernnetzen (hoher Datendurchsatz) sollen möglichst wenig Last durch QoS haben, möglichst viel Arbeit soll zu den Randnetzen verlagert werden. Router sollen keine Zustände für einzelne Flüsse benötigen, stattdessen Abstraktion von Datenflüssen und Definition einiger Traffic-Klassen. Umfunktionierung des Type of Service-Feldes (TOS) im IPv4-Header als sog. DiffServ CodePoint (DSCP)
Differentiated Services (Forts.) TOS-Feld: 0 1 2 3 4 5 6 7 +-----+-----+-----+-----+-----+-----+-----+-----+ PRECEDENCE TOS MBZ +-----+-----+-----+-----+-----+-----+-----+-----+ 1000 -- minimize delay 0100 -- maximize throughput 0010 -- maximize reliability 0001 -- minimize monetary cost 0000 -- normal service DSCP-Feld: 0 1 2 3 4 5 6 7 +---+---+---+---+---+---+---+---+ DSCP CU +---+---+---+---+---+---+---+---+ DSCP: differentiated services codepoint CU: currently unused Expedited Forwarding (Premium Service) EF 101110 Best Effort BE 000000 Assured Service Class 1 Drop Prec Low AF11 001010 Assured Service Class 1 Drop Pred Med. AF12 001100 Assured Service Class 1 Drop Pred High AF13 001110 Assured Service Class 2 Drop Pred Low AF21 010010 Assured Service Class 2 Drop Pred Med. AF22 010100.. Assured Service Class 4 Drop Pred High AF43 100110
Differentiated Services (Forts.) Router in Randnetzen klassifizieren IP-Pakete anhand verschiedener Kriterien (Source-/Dest.-IP, Source-/Dest.-Port, Medienlayer) und setzen den DSCP für jedes Paket. Router in Kernnetzen interpretieren lediglich den DSCP und teilen die Pakete in unterschiedliche Per Hop Behaviour -Klassen (PHB) ein.
Differentiated Services (Forts.) Angeboten werden: vier Klassen Assured Service mit je drei unterschiedlichen Drop Precedences (siehe Beschreibung DSCP-Feld). Anwendung: Layered video coding eine Klasse Premium Service (Expedited Forwarding) für gut zahlende Kunden. Emuliert eine gemietete Leitung (d.h. leere Puffer in Routern) Garantien Best-Effort
Differentiated Services (Forts.) Bewertung: Wie wird geregelt, wie viele Pakete für Expedited Forwarding markiert werden dürfen? Wie viel Last dieser Art verkraftet das Netz? Zugangskontrolle Bandwidth broker Gute Skalierbarkeit Entlastung der Kernnetze von Klassifierzungsaufgaben
Beispiel Linux Linux-Kernel 2.4 kann DiffServ von Haus aus Konfiguration von Filtern, Queuing Disciplines und Traffic-Klassen mit Hilfe des Utilities tc. Konzept:
Beispiel Linux (Forts.) Beispielkonfiguration: Edge Router (Klassifizierung): 1. tc qdisc add dev eth0 handle 1:0 root dsmark indices 64 2. tc class change dev eth0 classid 1:1 dsmark mask 0x3 value 0xb8 3. tc class change dev eth0 classid 1:2 dsmark mask 0x3 value 0x68 4. tc class change dev eth0 classid 1:3 dsmark mask 0x3 value 0x48 5. tc filter add dev eth0 parent 1:0 protocol ip prio 4 handle 1: u32 divisor 1 6. tc filter add dev eth0 parent 1:0 protocol ip prio 5 handle 2: u32 divisor 1 7. tc filter add dev eth0 parent 1:0 prio 4 u32 match ip dst 10.0.0.0/24 police rate 1Mbit burst 2K continue flowid 1:1 8. tc filter add dev eth0 parent 1:0 prio 5 u32 match ip dst 10.0.0.0/24 flowid 1:2 9. tc filter add dev eth0 parent 1:0 prio 4 u32 match ip dst 10.1.0.0/16 match ip src 192.1.0.0/16 match ip protocol 6 0xff match ip dport 0x17 0xffff flowid 1:3
Beispiel Linux (Forts.) Beispielkonfiguration: Core Router (Umsetzung PHB) 1. tc qdisc add dev eth0 handle 1:0 root dsmark indices 64 set_tc_index 2. tc filter add dev eth0 parent 1:0 protocol ip prio 1 tcindex mask 0xfc shift 2 3. tc qdisc add dev eth0 parent 1:0 handle 2:0 cbq bandwidth 10Mbit allot 1514 cell 8 avpkt 1000 mpu 64 4. tc class add dev eth0 parent 2:0 classid 2:1 cbq bandwidth 10Mbit rate 1500Kbit avpkt 1000 prio 1 bounded isolated allot 1514 weight 1 maxburst 10 defmap 1 5. tc qdisc add dev eth0 parent 2:1 pfifo limit 5 6. tc filter add dev eth0 parent 2:0 protocol ip prio 1 handle 0x2e tcindex classid 2:1 pass_on 7. tc class add dev eth0 parent 2:0 classid 2:2 cbq bandwidth 10Mbit rate 5Mbit avpkt 1000 prio 7 allot 1514 weight 1 maxburst 21 borrow 8. tc qdisc add dev eth0 parent 2:2 red limit 60KB min 15KB max 45KB burst 20 avpkt 1000 bandwidth 10Mbit probability 0.4 9. tc filter add dev eth0 parent 2:0 protocol ip prio 2 handle 0 tcindex mask 0 classid 2:2 pass_on
Zusammenfassung IntServ und DiffServ mächtige Konzepte zur Realisierung von QoS in IP-Netzen. Insbesondere DiffServ skaliert in großen Netzen gut Bis heute allerdings Einsatz dieser Technologien nur in Versuchs-netzen (Test beds). Keine Versuchsanwendung aus dem Bereich der virtuellen Präsenzen bekannt, die von QoS eines zu Grunde liegenden Netzes direkt Gebrauch macht. Langfristige Entwicklung in Richtung: You get what you pay for.
Zusammenfassung (Forts.) Diskussion, Fragen und Anregungen