Victoria - Fotolia
Netzwerküberlastung: Ursachen und Tools zur Abhilfe
Lesen Sie, wie es zu einer hohen Netzwerkauslastung kommt und wie Sie sie erkennen. Außerdem stellen wir Gegenmaßnahmen vor, damit die Anwendungs-Performance nicht leidet.
Zu einer Netzwerküberlastung kommt es dann, wenn das Datenvolumen auf einem Netzwerk-Link sich der Kapazitätsgrenze dieser Verbindung nähert. Der Traffic von Netzwerkdaten ist unterschiedlich intensiv und steigt schnell bis zum maximalen Durchsatz an, was letztlich zu Paketverlusten bei allen Traffic-Flüssen führt, die den gleichen Link nutzen.
Wenn die Netzwerk-Links die maximale Kapazität erreichen, erhöht sich die Latenz, weil die Paket-Bursts gepuffert werden. Große Puffer behindern die Algorithmen von TCP, die eine Überlastung des Netzwerks verhindern sollen, und es kommt gelegentlich zu einem Bufferbloat. Das Resultat ist eine schlechte Anwendungs-Performance.
TCP verlässt sich auf einen gewissen Paketverlust, um die maximale Geschwindigkeit zu bestimmen, mit der es Daten senden kann. Wenn TCP Paketverluste entdeckt, reduziert das Protokoll die Rate, mit der Pakete übertragen werden, um anschließend langsam wieder den Durchsatz zu erhöhen, bis erneut Paketverluste auftreten.
Dieser Algorithmus ermöglicht es TCP, Änderungen in Pfadcharakteristiken zu erkennen, während der Durchsatz maximiert wird. Infolgedessen sind bestimmte Paketverluste notwendig, damit der TCP-Algorithmus für die Netzwerküberlastung Feedback erhält. Es ist jedoch wichtig, große Mengen an Paketverlusten zu vermeiden.
Wir müssen uns daher darauf konzentrieren, die Anwendungs-Performance zu verbessern, und nicht darauf, Latenz und Paketverluste zu minimieren. Entscheidend ist es, zu wissen, wie Sie eine hohe Netzwerkauslastung erkennen und wie Sie dagegen vorgehen.
Erkennen einer hohen Auslastung
Es stehen mehrere Methoden zur Verfügung, um eine hohe Netzwerkauslastung zu erkennen:
Schnittstellen-Monitoring mit SNMP
Die heutigen Monitoring-Systeme verwenden SNMP, um Performance-Statistiken der Schnittstellen zu erfassen. Das geschieht in der Regel auf einer Basis von 5, 10 oder 15 Minuten. Im Wesentlichen wird die Nutzung der Verbindung über das Erfassungsintervall gemittelt. Für die gesammelten Daten wird zu Archivierungszwecken häufig am Ende jedes Tages der Durchschnitt über längere Zeitabschnitte gebildet – ein Schritt, der die Genauigkeit reduziert.
Ein besserer Ansatz ist die Nutzung eines Netzwerkmanagement-Systems, das eine Reporting-Möglichkeit für die Top-N des 95. Perzentils bietet – zum Beispiel einen Bericht über die Top-10-Schnittstellen mit dem höchsten 95. Perzentilwert. SNMP erfasst Daten zur Schnittstellen-Performance. Der 95. Perzentilwert spiegelt die Auslastung durch die obersten 5 Prozent der Schnittstellen-Nutzungsmuster wider. Bei einer fünfminütigen Mustererfassung entspricht das den Top-14-Mustern für den Tag, was 70 Minuten des Tages abdeckt. Da dies lediglich etwas über eine Stunde am Tag ausmacht, betrachte ich das 95. Perzentil als das Messen der aggregierten Spitzennutzung über gut eine Stunde.
Es gibt ein Problem mit dem SNMP-basierten Monitoring der Schnittstellen-Performance. Diese Überwachung kann nicht zuverlässig Traffic-Spitzen entdecken, die kleiner sind als die Hälfte des Polling-Intervalls (siehe Nyquist-Theorem). Verwenden Sie stattdessen SNMP, um Verluste an den Schnittstellen – sogenannte verworfene Pakete zu erfassen. Wie oben beschrieben basiert TCP auf Paketverlusten, um eine Überlastung zu erkennen. Ein gewisses Maß an verloren gegangenen Paketen ist also normal. Der Top-N-Bericht über verworfene Pakete ist eine gute Möglichkeit, um Schnittstellen zu entdecken, bei denen es zu ungewöhnlich hohen Paketverlusten aufgrund von Überlastung kommt.
Flow Monitoring
Flow Tools, die NetFlow-, sFlow- und IPFIX-Daten erfassen und analysieren, können ebenfalls nützlich sein, um Links mit hoher Auslastung zu identifizieren. Sie können nicht nur Aufschluss über das Datenvolumen geben, sondern auch über Quell- und Zieladressen sowie TCP/UDP-Ports, die die Anwendungen nutzen. Diese zusätzlichen Daten liefern einen Hinweis darauf, wer einen Link verwendet. Die Flow-Daten machen zirka 2 Prozent des Traffic-Volumens auf einer Schnittstelle aus und müssen an ein Tool zur Flow-Analyse gesendet werden. Diese Datenanforderung lässt Netzwerkmanager oft auf SNMP-Polling zurückgreifen, um die Top-Schnittstellen zu identifizieren, die eine nähere Betrachtung wert sind. Nachfolgend dienen dann die Flow-Daten dazu, die Endpunkte und Anwendungen zu ermitteln, die diese Links nutzen.
Paketmitschnitte
Ein einfacher Paketmitschnitt kann auch Informationen über die Link-Nutzung liefern. Diese Methodologie erleichtert es, die Quelle, das Ziel und die TCP/UDP-Port-Informationen zu finden, die sich verwenden lassen, um Endpunkte und Anwendungen zu identifizieren. Doch das Erfassen und die Analyse von Paketen ist äußerst zeitaufwendig.
APM-Tools (Application Performance Monitoring) basieren auf Paketmitschnitten, aber mit Erweiterungen, die es einfach machen, Anwendungen zu identifizieren. Sie können sie sich als eine Art von Super-Tools für die Paketerfassung und -analyse vorstellen. Die Kombination von APM mit Netzwerkpaket-Brokern, um Daten von mehreren Punkten im Netzwerk zu sammeln, ist eine wirkungsvolle Methode, der Ursache einer langsamen Anwendung auf den Grund zu gehen. Die Langsamkeit lässt sich vielleicht auf eine schlecht geschriebene Datenbanktransaktion zurückführen und nicht unbedingt auf Paketverluste im Data Center. Ein richtig bereitgestelltes APM-System kann diese Art von Analyse schnell durchführen.
Traffic-Generierung
Der brachiale Weg, einer Netzwerküberlastung auf die Spur zu kommen, ist der Einsatz eines Traffic-Generators auf dem Pfad. Dann misst man die zur Verfügung stehende Bandbreite. Die Traffic-Generierung eignet sich idealerweise für Links, die nicht von echten Anwendungen genutzt werden. Auf diese Weise lässt sich zum Beispiel der Durchsatz eines neuen Links prüfen oder der WAN-Durchsatz außerhalb der normalen Bürozeiten ermitteln.
Dieses Verfahren hat allerdings einen Nachteil: Es misst das Traffic-Volumen, das erforderlich ist, um einen Link auszulasten, was sich wiederum auf vorhandene Anwendungen auswirkt, die versuchen, den Pfad zu nutzen. Das Durchführen und Analysieren von Tests ist mühsam und kann schwierig zu interpretierende Resultate hervorbringen. Bei TCP-Durchsatztests kommen andere Anwendungen in die Quere, weshalb es nützlich ist, einen Traffic-Generator auf einem ansonsten ungenutzten Link zu verwenden.
Darüber hinaus gibt es bei UDP-Tests keinen Feedback-Mechanismus, um die Menge der gesendeten Daten zu begrenzen. Die Daten, die übertragen werden, bestimmen die verfügbare Bandbreite. Wenn jedoch der UDP-Test sehr lange läuft, werden auf Überlastung basierende Paketverluste bewirken, dass die TCP-Anwendungen, die den Link nutzen, langsamer werden.
Die Herausforderungen, die Tools zur Traffic-Generierung mit sich bringen, legen nahe, dass einer der anderen Ansätze besser geeignet ist. Praktisch nutzbar ist die Traffic-Generierung nur für nicht verwendete Pfade, wo Bruttowerte der gesamten zur Verfügung stehenden Bandbreite hilfreich sind. So lässt sich etwa die Frage beantworten, ob Sie die Übertragungsrate erreichen, die ein Carrier Ihnen versprochen hat. Beachten Sie, dass Bufferbloat Ihre Messungen verändern kann.
Aktive Messprobensysteme
Messprobenbasierte Systeme bieten eine Möglichkeit, Informationen über einen Pfad zu erhalten, indem sie Testpakete unterschiedlicher Länge senden, um Paketverluste und Latenz zu analysieren, ohne dass dabei eine nennenswerte Last erzeugt wird. Optimal ist der Ansatz, synthetische Transaktionen zu verwenden, die echte Anwendungspakete emulieren. An jedem Ende eines Pfads vorhandene Sender und Empfänger von Testpaketen liefern die besten Ergebnisse, aber gute Resultate sind auch möglich, wenn Sie ICMP-Pakete nutzen.
Das hilft gegen eine hohe Netzwerkauslastung
Nachdem Sie eine hohe Auslastung anhand der aufgeführten Punkte festgestellt haben, bleiben Ihnen nur zwei Möglichkeiten für Gegenmaßnahmen: Entweder Sie priorisieren wichtigen Traffic per Quality of Service (QoS), oder Sie rüsten Bandbreite nach.
Der bevorzugte Ansatz besteht darin, bei einer Überlastung mittels QoS unerwünschten Traffic zu verwerfen. Falls es keinen unerwünschten Traffic gibt, kann es unumgänglich sein, die Link-Bandbreite zu erhöhen.
Quality of Service
Die Netzwerkbranche favorisiert Differentiated Services (DiffServ) gegenüber Integrated Services (IntServ). DiffServ basiert auf Traffic-Klassifizierung und Kennzeichnung von Paket-Headern durch Switches und Router am Netzwerk-Edge. IntServ nutzt das Resource Reservation Protocol (RSVP), um Bandbreitenreservierungen über einen Netzwerkpfad dynamisch anzufordern. Zugriffssteuerungslisten sind der häufigste Mechanismus für eine Einteilung des Traffics in unterschiedliche Klassen. Das DiffServ-Feld – ehemals Type of Service – im Header jedes Pakets wird entsprechend dem gewünschten Service modifiziert, mit bis zu 64 möglichen Werten. Industriestandards haben eine Untermenge dieser Werte und das Pro-Hop-Verhalten von jedem Wert festgelegt, das von Expedited Forwarding bis zu Less Than Best Effort – mitunter als Scavenger Class bezeichnet – reicht.
QoS funktioniert am besten, wenn es Traffic mit geringer Priorität gibt, der bei Überlastung verworfen werden kann. Der Traffic mit höherer Priorität muss die Bandbreitenbeschränkungen des Links oder Pfads einhalten.
Bandbreite nachrüsten
Wenn der gesamte Traffic auf einem Link wichtig und die Überlastung extrem ist, dann muss die Link-Bandbreite erhöht werden. Beachten Sie, dass es der normalen Funktion von TCP entspricht, schnell den maximalen Durchsatz zu erreichen, so dass es im regulären Betrieb zwangsläufig zu einer gewissen Überlastung kommt. Die TCP-Performance leidet ab einem Paketverlust von 0,0001 Prozent. Daher ist dies ein sinnvoller Schwellenwert für das Monitoring- und Alerting-System einer Netzwerkmanagement-Plattform.
Gelegentlich ist es notwendig, die Pufferung für eine Schnittstelle zu erhöhen. Das gilt insbesondere dann, wenn die Anwendungen, die diese Pfade nutzen, kleine Paketgrößen verwenden. Aber die Anzahl der Puffer sollte nicht allzu stark vergrößert werden, weil diese mit den TCP-Algorithmen, die eine Überlastung des Netzwerks verhindern, interagieren. Im Worst Case kann es aufgrund von Bufferbloat zu mehreren Kopien übertragener Pakete kommen, was den Goodput, also den Durchsatz der tatsächlich gelieferten Anwendungsdaten, effektiv reduziert.