ToolTime#2::Ping (Teil 2::QoS mittels Ping testen)

Neulich wurde ich von einen Kunden, der mal einen Wireshark Kurs bei mir besuchte, gefragt ob ich ein gutes Tool (Zitat „am liebsten kostenlos“) kenne welches Quality of Service (QoS)-Pakete generiert damit er testen kann ob seine Switche/Router diese Packet auch richtig verarbeiten.

Wer mich kennt, weiß das ich neugierig bin und gerne eine Frage mit einer Gegenfrage beantworte. Ich weiß das ist gemein und unhöflich aber gewöhnt euch dran.

Der Kunde hat gerade sein QoS-Konzept für sein VoIP VLAN fertig gestellt welches auf Differentiated Services (DiffServ) basiert, das auf Klassifizierung von Paketen  und Verwaltung des Netzwerkverkehrs basiert.

Hierbei wird das Type of Services (ToS) Feld (8 Bits) welches sich heutzutage in den Differentiated Services Codepoint (DSCP) Wert (0-5 Bits), dass die Dienstgüte bestimmt,  und den Explicit Congestion Notification (ECN) , welches für die Überlastkontrolle verwendet wird, aufgeteilt.

Zur Aufklärung: Das ToS-Feld wurde in der Vergangheit schon oft für verschiedene Arten von QoS verwendet. Seit September 2001 (RFC 3168) gilt neuerdings folgende Aufteilung:

Bits 0-5:   DSCP (Differentiated Services Code Point)
Bits 6-7:   ECN (Explicit Congestion Notification – IP-Staukontrolle)

Nun beim Kunden hat nun irgend ein Tele-Komiker behauptet durch QoS wird alles besser und alle VoIP Probleme sind vorbei. Das man auch das ganze Netzwerk bzw. das entsprechende VLAN dafür präparieren sollte hat er nicht erwähnt. Nun gut ich habe hierzu wie so oft eine ganz eigene Meinung hierzu. Aber mehr zu QoS und VoIP in einen zukünftigen Blogeintrag.

Wie auch immer, zurück zum Problem bzw. kostenlosen QoS Testtool.  Was will mein Kunde wirklich? Er möchte einfach nur kontrollieren ob seine QoS Einstellungen die er auf den Switchen getroffen hat funktionieren.

Sicherlich gibt es viele ausgefeilte und Spektakuläre Methoden, um Sein QoS Konfiguration zu validieren, testen und zu überprüfen, aber es gibt auch eine wirklich einfache, die Sie von jedem Windows- oder Linux-PC aus als erste Überprüfung durchführen kann.

Und bitte lieber Leser fall jetzt nicht vom Stuhl, aber du wirst es nicht glauben – das Programm heißt PING.

PING? Ja das alt „(un)“bekannte PING

Auf X Systemen verwendest du die Option -q, auf Systemen der Firma Microsoft die Option -v  um den ToS-Wert der Pakete festzulegen.

-shit differences-

Wie auch immer, in beiden Fällen musst du den Dezimalen Type-of-Service (TOS) Wert angeben. Obwohl dies nicht der gewünschte DSCP-Wert ist, umfasst das ToS-Feld nunmal 1 Byte (8-Bit).  What The Fuck

Aber DiffServ verwendet im DSCP wie gesagt nur die ersten 6 Bits des ToS-Felds und ignoriert die Bits 7 – 8.

Es gibt eine recht einfache Möglichkeit, von einem zum anderen zu gelangen:

DSCP-Dezimal Wert x 4 = ToS-Dezimal Wert

Die meisten VoIP-Systeme verwenden:

  • AF31 (DSCP 26) für die Signalisierung (z.B. SIP)
26 DSCP x 4 = TOS 104
ping -Q 104 10.10.10.10
  • EF (DSCP 46) für Sprache/Medien (z.B. RTP)
46 DSCP x 4 = TOS 184
ping -Q 184 10.10.10.10

Nach dem Aufruf dieser Befehle kannst du die QoS-Counter im Switch/Router  leicht auf die korrekte Schrittweite überprüfen.

Danach die Verbindung z.B. mit iPerf etwas belasten um extremen Netzwerk-Traffic zu simulieren  und den Ping laufen lassen, er sollte stabil und mit geringer Latenz sein.

Wenn nicht, dann funktioniert das VoIP Zeugs vom Tele-Komiker nicht.

Dieser Test mit System eigenen Board-Mitteln kann auch bei anderen Problemen helfen.

Vielleicht löscht ja ein System einen gesetzten ToS-Wert und du bist der unglückliche Netzwerk Kollege der wieder beweisen muss, dass es nicht am Netzwerk liegt.

Hiermit kannst du schauen ob auf dem Weg zum Ziel irgendwo das ToS Feld verändert wird in dem du an verschieden Messpunkte im Netzwerk speziell nach diesem Packet in Wireshark-Filters. Dazu benutzt du den obigen Befehl und lässt Wireshark an verschieden Punkte per TAP oder SPAN/Mirror Port laufen.

Ich denke das wird auch wieder ein Blog-Eintrag Wert sein.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.