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