Netzwerk-Monitoring

Für die Inventur der Einstellungen auf der Ebene der Netzzugangsschicht bietet sich das »mii‑tool« an, das zeigt, ob ein Link besteht sowie welche Geschwindigkeit und welche Duplex-Settings das Interface verwendet. Gerade bei der selbstständigen Aushandlung der Duplex-Einstellungen (Autonegotiation) kommt es mitunter zu Problemen, die man so einfach enttarnt. Nicht nur anzeigen, sondern auch setzen lassen sich diese und viele andere Einstellungen für Interface und Treiber mit dem »ethtool« (Abbildung 6), das außerdem mit der Option »‑S« eine umfangreiche Statistik der gesendeten und empfangenen Bytes und Pakete liefert, letztere sortiert nach Größenklassen. Beide Werkzeuge eignen sich allerdings nicht für WLAN-Interfaces.

Abbildung 6: Das »mii‑tool« liefert Angaben zu Interface und Treiber.

Eine ähnliche Statistik, aber auf der Ebene des Internet-Layers, offeriert »ifconfig«. Neben den MAC- und IP-Adressen liefert das Tool auch Hinweise auf Übertragungsfehler (»errors«) oder überlaufende Queues (»overrun«). Der Nachfolger von »ifconfig« ist das deutlich mächtigere Werkzeug »ip«, das auf Wunsch ebenfalls Statistiken ausspuckt: »ip ‑s link«. Wo das nicht reicht, bieten sich zahlreiche Netzwerkmonitore an. Ein Beispiel ist »iptraf« [6] (Abbildung 7), das umfängliche Netzwerkstatistiken ausgibt und beispielsweise auch gleich Transferraten berechnet (auch für WLAN).

Abbildung 7: »iptraf« zeigt detaillierte Netzwerkstatistiken in der Konsole an und berechnet auch Transferraten.

Auf der Suche nach den Quellen des Netzwerkverkehrs ist »netstat« ein nützlicher Helfer. Zunächst aber produziert auch »netstat« – ebenfalls mit der Option »‑s« – eine aufschlussreiche Statistik, hier nach Protokollen sortiert. Möchte man den Netzwerkverkehr über einen gewissen Zeitraum beobachten, kann man jeweils am Anfang und Ende der Periode eine Netstat-Statistik in eine Datei umleiten und anschließend beide mit »diff« vergleichen. Für die Differenzbildung wäre man aber selber zuständig. Viel bequemer geht das mit einem kleinen von HP entwickelten C-Programm namens »beforeafter«. Das findet sich auf [7] und ist schnell mit

gcc ‑O2 beforeafter.c ‑o beforeafter

übersetzt. Danach nimmt es zwei Netstat-Outputs als Argumente entgegen, vergleicht sie und berechnet die Differenz. Eine Alternative ist wieder der Langzeit-Spezialist »sar«.

Alle aktiven Netzwerkverbindungen präsentiert »netstat«, wenn man es ohne Optionen startet. Einen dynamischen Einblick in den Netzwerkverkehr gewährt dagegen beispielsweise »jnettop« [8]. Möchte man zusätzlich noch in die Pakete sehen, bieten sich Sniffer wie »tcpdump« auf der Kommandozeile oder der Klassiker »wireshark« (vormals »ethereal«) [9] an. Die so erzeugten Dumpfiles lassen sich noch weiter auswerten: »tcptrace« [10] zeichnet eine Reihe raffinierter Graphen im Xplot-Format (Abbildung 8), mit deren Hilfe man genau das Timing der Kommunikation oder die dynamische Anpassung der Fenstergröße, Paketwiederholungen und vieles mehr studieren kann.

Abbildung 8: Ein Time-Sequence-Graph von »tcptrace«. Die Y-Achse zeigt die Sequenznummern, die X-Achse die Zeit. Die grüne Linie steht für empfangene ACK-Pakete und die gelbe für das offerierte Empfangsfenster. Kleine rote Rs zeigen Paketwiederholungen an.

Benchmark-Programme fürs Netzwerk sind sehr zahlreich. Unterscheiden lassen sich dabei solche, die Protokolle der Anwendungsschicht messen, etwa »httpperf« [11] oder »dkftpbench« [12], und Benchmarks der Transport- und Internetschicht wie »netperf« [13] oder »iperf« [14]. Letzteres kann auch die CPU-Auslastung durch die Netzwerkaktivitäten mit messen, die der Admin – ebenso wie beim Platten-I/O – ebenfalls im Blick behalten muss.

Netzwerk-Stellschrauben

Die Netzwerkperformance lässt sich auf verschiedenen Ebenen mit zahlreichen Parametern beeinflussen:

  • auf dem Hardware-Level hilft auch hier Lastverteilung. Mehrere Netzwerkinterfaces können parallel arbeiten oder lassen sich für eine höhere Bandbreite bündeln, Stichwort Lastverteilung via Bonding im Modus 0 oder 2.
  • im TCP-Stack von Linux lassen sich zahlreiche Puffergrößen und Zeitparameter konfigurieren – solange man weiß, was man tut.
  • die Paketgröße ist ein weiterer Ansatzpunkt. Gigabit-Ethernet-Interfaces bei allen Rechnern im Subnetz vorausgesetzt, lassen sich Jumbo-Frames mit einer MTU größer 1500 Byte konfigurieren. Die zweite Voraussetzung ist aber eine sehr stabile Verbindung, denn sonst verkehrt sich der Effekt ins Gegenteil, weil unter diesen Umständen auch bei Paketwiederholungen mehr Daten zu übertragen sind.
  • Schließlich bieten viele Applikationen und insbesondere Web-, Datenbank- oder Mailserver viele spezifische, netzwerkrelevante Einstellmöglichkeiten.
comments powered by Disqus

Artikel der Woche

Eigene Registry für Docker-Images

Wer selber Docker-Images herstellt, braucht auch eine eigene Registry. Diese gibt es ebenfalls als Docker-Image, aber nur mit eingeschränkter Funktionalität. Mit einem Auth-Server wird daraus ein brauchbares Repository für Images. (mehr)
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Google+

Ausgabe /2019