End2End-PathPing

Dieses Skript erwartet eine Liste von Stationen, die zwischen ihrem Sender und der Gegenstelle liegen. Es sendet dann PINGs an die Gegenstelle und sobald die Antwort ausbleibt, sendet es ganz schnell PING an die vorab festgelegten Zwischenstationen, damit so die Stelle erkannt wird, an der die Verbindung nicht mehr beantwortet ist.

Umsetzung

Das Script testet erst mal genau ein Ziel und erwartet die Zwischenstationen im Fehlerfall als Parameter. Folgende Parameter sind verfügbar:

  • Ziel
    Sie können hier einen Namen angeben aber ich ziehe eine IPv4-Adresse vor, da VoIP in der Regel noch nicht mit IPv6 arbeitet und die Namensauflösung ebenfalls entfällt.
  • Hoplist []
    Ein Array von IP-Adressen oder Namen der vom Administrator als interessant bestimmten Zwischenstationen, die im Fehlerfall geprobt werden.

Wenn Sie Verbindungen über das Internet prüfen, sollten Sie regelmäßig die Hopliste überprüfen. Im internen LAN dürfte das seltener erforderlich sein.

  • Buffersize(default 160)
    Größe des Buffers, der übertragen wird. Ich nutze hier 160 Byte, da VoIP bei G.711 mit 20ms und Narrowband diese Paketgröße nutzt
  • Timeout(Default 1000ms)
    Das Skript wartet bis zu eine Sekunden auf die Rückantwort. Das sind also 500ms in jede Richtung, die ein Paket verzögert sein muss, ehe ich von einem "Vorfall" ausgehe, welcher dann eine weitere Prüfung nach sich zieht.
  • Sleeptime
    Per Default lässt das Skript immer 100ms zwischen zwei Pings vergehen. Damit werden nur 20% der bei VoIP üblichen Paketanzahl gesendet. Wer mag kann den Wert gerne auf 20ms heruntersetzen und hat dann annähernd die VoIP-Rate.
  • CSVFile
    Dateiname der Ausgabedatei.

Das Skript initialisiert das ICMP-Objekt und den Sendepuffer und versendet über eine Endlosschleife die ICMP-Pakete und sammelt die Ergebnisse ein. Sollte ein Paket Ausbleiben oder zu lange brauchen, dann werden die hinterlegten Zwischenstationen mit 5 Sekunden Timeout angesprochen und das Ergebnis in eine CSV-Datei protokolliert.

Da das Skript ICMP-Pakete immer "hintereinander" und Synchron sendet, ist die maximale Anzahl der Pakete abhängig von der Roundtripzeit. Es sind also nie mehrere ICMP-Pakete parallel "unterwegs", wie dies bei VoIP aber natürlich der Fall ist. Ich habe mir nur nicht die Mühe gemacht, die ganzen Prozesse asynchron auszulegen.

Ausgabe

Natürlich wollten wie ja noch wissen, wie die Ausgabe aussieht. In der PowerShell Box ist die Arbeit des Skripts zu sehen:

Interessanter ist natürlich, später die Ausgabe in der CSV-Datei auszuwerten.

Hier ist gut zu sehen, dass in der gesamten Test-Zeit drei mal ein Timeout aufgetreten ist und die drei "Prüfpunkt" auf dem Weg zum Edge-Server ganz normale Laufzeiten hatten. Also muss es zwischen dem letzten Stück und dem Edge- Server ein kurzes aber seltenes Problem geben. Es kann aber auch sein, dass der "Engpass" so kurz war, dass nach dem Timeout zum Prüfsystem die nachfolgenden Tests schon wieder hinfällig waren. Die ist aktuell noch eine Einschränkung die nur lösbar wäre, indem mehrere ICMPs parallel gesendet werden. Mittelfristig könnte das Skript natürlich gleich noch eine Alarmierungsmail, einen Eventlog-Eintrag o.ä. generieren. Das ist sicher interessant, wenn das Skript unbewacht im Hintergrund läuft.

Download

Für die Ausführung sind keinerlei privilegierte Rechte erforderlich. Das Skript kann auf jedem PC mit PowerShell 2.0 ausgeführt werden.

end2end/end2end-pathping.2.2.ps1.txt
Bitte nach dem Download die Erweiterung nach ps1 umstellen.

Die vorab hinterlegten Adressen sind "internetbeacon.msedge.net"" als Ziel und die Hops, die für mich als T-DSL-Kunde im Bereich Bielefeld und der Telekom-Übergang interessant sind:

Achtung
Wenn Sie sinnvolle Ergebnisse erhalten wollen, dann müssen Sie die Parameter an ihre Umgebung anpassen! Suchen Sie sich das interessante Ziel und starten Sie einen TraceRt um die Zwischenstationen zu ernmitten

Es bietet sich an, das Skript in einem leeren Verzeichnis zu starten.

Offen

Nur eine Gegenstelle "anzupingen" ist etwas trivial. Interessanter könnte es sein, wenn man parallel mehrere Systeme und auch sehr häufig anpingt. Auch den Weg zum Ziel könnte man am Anfang oder acuh immer mal dazwischen eigenständig ermitteln.

Es bleibt als noch etwas zu tun.

Weitere Links