Performance Engineering Flashcards
Wovon sind die Anforderungen von Anwendungen an die Performance eines Computernetzes abhängig?
Die Anforderungen sind abhängig von verschiedenen Parametern. Anwendungen mit Echtzeitkommunikation haben beispielsweise andere Anforderungen als E-Mail-Verkehr. Anwendungen mit unterschiedlichen Anforderungen konkurrieren stets um die zur Verfügung stehenden Ressourcen. Um allen Anforderungen gerecht zu werden, sind Mechanismen vorgesehen, die es erlauben den Verkehr differenziert zu behandeln und entsprechend ihren Anforderungen im Computernetz weiterzuleiten.
Welche Mechanismen sind massgebend für den Quality of Service?
Massgeblich sind die auf der Vermittlungsschicht vorgesehenen Mechanismen für die Verkehrssteuerung und Verkehrsflussüberwachung, deren Verhalten direkten Einfluss auf die Congestion Management Mechanismen der Protokolle auf der Transportschicht haben.
Was versteht man unter Quality of Service, welche Mechanismen werden eingesetzt und welche Parameter werden beachtet?
Die Quality of Service (Qos), oder auch Dienstgüte, bezieht sich auf die Fähigkeit des Computernetzes, die in einem Service Level Agreement (SLA) spezifizierten Anforderungen einzuhalten. Dazu werden verschiedene Mechanismen eingesetzt:
* Priorisierung von Datenflüssen
* Überwachung und Steuerung der Ressourcenaufteilung
* Verzögerung der Datenflüsse
Anforderungen beziehen sich stets auf den einzelnen Datenfluss einer Anwendung oder eines Dienstes und werden anhand von Perfomance-Parameter beschrieben:
* Maximal zulässige Verzögerung
* Maximal zulässige Verzögerungsjitter
* Maximal zulässige Paketverlustrate
* Minimal zur Verfügung stehende Übertragungsrate
* Durchschnittlich zur Verfügung stehende Übertragungsrate mit zulässiger Abweichung
Verschiedene QoS-Anforderungen für unterschiedliche Anwendungen und Dienste
Existieren, bezogen auf unterschiedliche Anwendungen und Dienste, verschiedene QoS-Anforderungen, wird von einem unterschiedlichen Grad der Dienstgüte gesprochen. Die unterschiedlichen Arten der QoS-Anforderungen stehen in einer hierarchischen Relation zueinander. Die QoS-Anforderungen beziehen sich immer auf ein Paket, einen Datenfluss oder eine Anwendung.
QoS: Verzögerung
Unter Verzögerung versteht man die Zeitdifferenz bei einer Informationsübertragung zwischen einem Sender- und einem Empfängerknoten. Sie setzt sich zusammen aus den vom Computernetz als auch von weiteren Systemkomponenten verursachten Verzögerungen. Je nach Anwendungsfall sind unterschiedliche Abschnitte der Kommunikationsstrecke von Bedeutung. Betrachtet man die Dienstgüte, wird die Ende-zu-Ende-Verzögerung angeschaut. Bei einer Analyse des Computernetzes beschränkt man sich hingegen auf einen Pfad zwischen den Endpunkten.
QoS: Verzögerungsjitter
Da die verschiedenen Varianten der Verzögerung lediglich eine Momentaufnahme der Verzögerung erlauben wird meist auch die Abweichung von der mittleren Verzögerungszeit berücksichtigt. Diese wird als Jitter bezeichnet. Wird der definierte Wert über eine längere Zeit in einer negativen Weise überschritten, gilt die QoS-Anforderung nicht mehr als eingehalten.
QoS: Datenrate (Definition, 3 Formen von Datenraten)
Die Datenrate definiert die Fähigkeit eines Systems eine bestimmte Anzahl Datenbits in einem Zeitintervall zwischen zwei Punkten zu übertragen. Es werden drei Formen der Datenrate unterschieden:
* Spitzendatenrate (SDR): kurzzeitig, höchstmögliche Datenrate
* Durchschnittliche Datenrate (DDR)
* Minimale Datenrate (MDR): in der Regel die Mindestauslastung des Übertragungsmediums
Von Bedeutung für das Performance-Engineering sind die minimale Datenrate (MDR), die eine untere, häufig feste Schranke definiert, sowie die durchschnittliche Datenrate (DDR).
QoS: Zuverlässigkeit
Die Zuverlässigkeit gibt an, inwieweit ein System deterministisch und korrekt arbeitet und gibt Auskunft darüber, wie schnell sich ein System nach einem Ausfall wieder in den normalen Zustand versetzen lässt.
Zuverlässigkeit kann aber auch definieren, dass ein Dienst in jedem Fall zur Verfügung stehen muss, d.h. von diesem Dienst gesendete Pakete in jedem Fall weitergeleitet werden müssen. Damit dies funktioniert muss aber nicht nur die Verfügbarkeit sondern auch die minimal Datenrate betrachtet werden.
Was versteht man unter Differenzierung von Paketen und Datenflüssen?
Eine Differenzierung von Paketen und Datenflüssen bedeutet, dass die ursprüngliche Reihenfolge manipuliert wird, zugunsten der Datenflüsse, die hohe Anforderungen an die Performance des Computernetzes haben. Einzelne Datenflüsse oder Klassen von Datenflüssen werden dabei priorisiert. Die Differenzierung erfolgt in der Regel auf den Edge-Routern eines Netzwerkes.
Ohne Differenzierung erfolgt keine Manipulation der Reihenfolge, somit würden die Pakete im Netzwerk entsprechend ihrer Eingangsreihenfolge unpriorisiert weitergeleitet werden.
Prozess zur Gewährleistung von Dienstgüte
Der Grundlegende Prozess zur Gewährleistung von Dienstgüte ist eine Aneinanderkettung mehrere Mechanismen, welche in ihrer Summe notwendig sind, um eine bestimmte Qualität im Netzwerk für einzelne Datenflüsse gewährleisten zu können. In den Architekturen IntServ und DiffServ werden diese in unterschiedlicher Ausprägung und mit verschiedenen Eigenschaften realisiert.
Zuerst werden die eingehenden Pakete analysiert, damit eine Identifizierung des eingehenden Dienstes durchgeführt werden kann. Danach erfolgt eine Klassifizierung. Die Klassifizierung ist Voraussetzung für die nachfolgende Markierung der Pakete.
Wo werden die Congestion Management Mechanismen der Vermittlungsschicht angewandt und mit welchem Ziel?
Bevor Pakete in die Warteschlange der Koppelelemente eingereiht werden, werden Congestion Avoidance Mechanismen angewandt. Dadurch werden einerseits Überlastsituationen in den Warteschlangen gezielt vermieden, andererseits einzelne Datenflüsse entsprechend des ihnen zugewiesenen Ressourcenanteils reguliert. Danach erfolgt die Einordnung in unterschiedliche Warteschlangen und darauf die Abarbeitung der Warteschlangen.
Identifikation und Klassifizierung von Datenflüssen
Damit eine differenzierte Behandlung von Datenflüssen möglich ist, müssen zuerst die Anwendungen, welche die verschiedenen Datenflüsse erzeugen, identifiziert und entsprechend klassifiziert werden. Dies ist Voraussetzung für den Prozess der Gewährleistung von Dienstgüte. Die Ergebnisse der Identifizierung und Klassifizierung bestimmen, wie die Datenflüsse differenziert werden müssen. Da dieser Schritt sehr rechenintensiv ist, wird er in der Regel nur einmal für eine Verbindung bzw. einen Datenfluss durchgeführt. Durch die nachfolgende Markierung können Ergebnisse der Klassifizierung auch auf weiteren Koppelelementen verwendet werden.
Analyse von IP-Paketen auf Vermittlungsschicht
Bei der Analyse von IP-Paketen auf der Vermittlungsschicht werden in der Regel folgende Parameter analysiert:
* Quell-IP-Adresse
* Ziel-IP-Adresse
* ISO/OSI-Layer-4-Protokoll
Die Quell-IP-Adresse erlaubt es Benutzer zu identifizieren, die eine Anwendung nutzen und für die Qualitätsanforderungen vorliegen. So können unterschiedliche Qualitäten für verschiedene Nutzer gewährleistet werden.
Mit der Ziel-IP-Adresse kann der angebotene Dienst identifiziert werden.
Über das ISO/OSI-Layer-4-Protokoll lassen sich die infrage kommenden Dienste einschränken, da es viele Dienste gibt, für die eindeutig ist, ob sie z.B. UDP oder TCP verwenden.
Erweiterte Analyse auf der Transportschicht
Bei der erweiterten Analyse auf der Transportschicht werden zusätzlich Quell-Port und Ziel-Port analysiert.
Quell-Port bietet keine signifikante Aussagekraft, da der Quell-Port zufällig gewählt wird und der Aufruf eines Dienstes durch den Client erfolgt.
Ziel-Port gibt Aufschluss darüber, welcher Dienst aufgerufen wird und der Verkehr kann dementsprechend durch Dienstgüte-Mechanismen differenziert behandelt werden.
Probleme bei der Identifikation und Klassifizierung
Probleme können auftreten, wenn Anwendungen gezielt falsche Ports verwenden, um sich einen Vorteil bei der Differenzierung zu verschaffen. z.B. kann eine eigentlich interaktive Anwendung die Ports von Echtzeitanwendungen nutzen und dem System so vortäuschen, eine höhere Anforderung zu haben.
Durch die gezielte Kombination der Analyse von Parametern der Vermittlungsschicht sowie der Transportschicht, lässt sich dieses Problem zumindest minimieren.
Identifizierung und Klassifizierung auf der Anwendungsschicht und Probleme damit (wieso, Lösung für Problem)
Führen die Analysen der Daten der Transportschicht und Vermittlungsschicht häufig zu Fehlern ist es möglich, Informationen der Anwendungsschicht für die Identifizierung und Klassifizierung heranzuziehen. Dafür wird das Anwendungsprotokoll identifiziert, anhand dessen der jeweilige Dienst erkannt werden kann.
Protokolle wie HTTP werden jedoch oft als Trägerprotokolle für Daten anderer Anwendungen missbraucht. Daher kann es nötig sein auch den Pyload auf der Application Layer zu analysieren.
Was muss bei der Auswahl der Analysemethode beachtet werden?
Bei der Auswahl der Analysemethode müssen zwei Dingen abgewogen werden. Bei Analyse zusätzlicher Informationen Steigt die Identifizierungsgenauigkeit, jedoch auch die Performanceeinbussen.
Erfolg die Identifizierung und Klassifizierung auf dem verkehrsverursachenden Host selbst, kann auch der paketerzeugende Systemprozess zur Analyse herangezogen werden. Dies birgt jedoch die Gefahr, dass der Host einfacher zu manipulieren ist. Der Benutzer darf keinen Eingriff in die Klassifizierung verüben können und auch die Anwendung selbst darf nicht opportunistisch handeln. Da die rechenintensiven Vorgänge dabei jedoch von den Routern auf die Hosts verlagern werden ergibt sich ein signifikanter Performancevorteil.
Markierung von Netzwerkpaketen
Um den rechenintensiven Schritt der Identifizierung und Klassifizierung nicht auf jedem Router wiederholen zu müssen, können Pakete markiert werden. Es muss dann nur noch die Markierung ausgelesen und ausgewertet werden.
Bei Einsatz von IPv4 und DiffServ erfolgt die Markierung z.B. über das Type-of-Service-Feld, bei Ipv6 über das Traffic-Class-Feld. Die Art der Markierung ist ausserdem architekturabhängig. Aufgrund der beschränkten Anzahl von Verkehrsklassen werden in der Regel mehrere Anwendungen einer Verkehrsklasse zugeordnet.
Ursache einer Überlast in Computernetzen
Eine Überlast in einem Computernetz kommt von einer Überlastung von mindestem einem Router. Dies bedeutet, das im internen Puffer des Routers die Eingangsrate der Daten grösser ist als die Ausgangsrate. Wenn der Puffer voll ist können Pakete nicht mehr zwischengespeichert und weitere eingehende Pakete müssen direkt verworfen werden, da keine Zwischenspeicherung mehr möglich ist. Dieses Verhalten wird Tail-Drop genannt, da am Ende des Puffers die eingehenden Pakete verworfen werden.
Problem beim Tail-Drop
Auf der Transportschicht sorgt TCP dafür, dass ein Byte-Strom vollständig von Sender zu Empfänger übertragen wird. Das Congestion Management von TCP reagiert auf Pakete, die übermässig verzögert beim Empfänger ankommen sowie auf den Paketverlust, der bei einem überfülten Puffer eintritt. Da die verworfenen Pakete in der Regel zu unterschiedlichen Anwendungen von unterschiedlichen Hosts gehören, werden alle TCP-Verbindungen auf die Überlast reagieren und die Senderate drosseln. Dies führt zunächst zu einer Unterauslastung des Netzes, worauf die Senderate wieder von allen TCP-Verbindungen erhöht wird und es wieder zu einer Überlastsituation kommt. Erst das Beenden mehrere Verbindungen kann den Netzzustand wieder stabilisieren.
Wozu wird Random Early Detection (RED) verwended?
RED ermöglicht die weitestgehende Beseitung des Problems der globalen Synchronisation von TCP-Verbindungen, indem es zufällig eingehende Pakete auf einem Router verwirft, auch wenn der Eingangspuffer noch nicht voll ist. Überlastsituationen lassen sich so nahezu unterbinden. Durch das zufällige Verwerfen einzelner Pakete werden Überlastsituationen frühzeitig erkannt und TCP kann frühzeitig reagieren.
Arbeitsweise von Random Early Detection (RED)
Für die Entscheidung, ob ein Paket verworfen wird, sind verschiedene Eigenschaften des Eingangspuffers von Bedeutung.
* Durchschnittliche Warteschlangenlänge
* Unterer Schwellenwert der Warteschlangenlänge
* Oberer Schwellenwert der Warteschlangenlänge
Die durchschnittliche Warteschlangenlänge wird als gleitender Mittelwert berechnet, um die Auswirkungen von auftretenden Bursts zu minimieren.
Bei jedem Paket wird zunächst überprüft, wie stark die Warteschlange beim Eintreffen des Pakets ausgelastet ist:
* Wird der untere Schwellenwert nicht erreicht, wird das Paket der Warteschlange angehängt.
* Wird der obere Schwellenwert überschritten, wird das Paket direkt verworfen
* Wird der untere Schwellenwert überschritte, der obere Schwellenwert aber nicht erreicht, wird die Verwurfswahrscheinlichkeit berechnet.
Weighted Random Early Detection (WRED)
Da RED keine Differenzierung unterschiedlicher Verkehrsklassen unterstützt, wurde die Ergänzung WRED entwickelt. Es ermöglicht eine zusätzliche Gewichtung der Schwellenwerte für jede Verkehrsklasse. Entsprechend dem Gewicht kann die Verwurfswahrscheinlichkeit für jede Verkehrsklasse anders sein.
Explicit Congestion Notification
Explicit Congestion Notification wurde eingeführt, um den bei RED entstehenden Zeitverlust und Overhead zu reduzieren. Ein Router der vor der Überlast steht oder bereits überlastet ist, sendet ein Paket, mit dem Explicit Congestion Notification Flag, weiter, anstatt es zu verwerfen. In der Antwort an den Sender wird diesem so mitgeteilt, dass er die Congestion Window Size reduzieren und somit beim nächsten Versenden nur einen Byte-Stream mit vermindertem Maximum übertragen darf.