Zum Hauptinhalt springen
Ich wurde kürzlich gebeten, eine Trace-Datei zu analysieren. Sie war nur 161 Sekunden lang und enthielt etwas mehr als 2,6 Millionen Frames. Ich war erstaunt zu entdecken, dass etwa 75 % dieser Frames entweder Ping-Anfragen oder Ping-Antworten waren. Wenn ich die Quell-IP-Adresse nicht erkannt hätte, wäre ich zu dem Schluss gekommen, dass das Ziel unter einem Denial-of-Service-Angriff stand. Stattdessen erfuhr ich, dass das Argument "run_forever" des STCP-Befehls "ping" verwendet wurde, um die Erreichbarkeit des Ziels zu überwachen.

 

Anders als der Ping-Befehl auf den meisten UNIX- oder Linux-Systemen macht der Ping-Befehl von STCP keine Pause zwischen dem Empfang einer Ping-Antwort und der nächsten Ping-Anforderung. Da die Standardanzahl der Pings nur 4 beträgt, ist dies kein großes Problem. Wenn jedoch die Anzahl der Anfragen mit dem Argument count erhöht wird oder das Argument run_forever verwendet wird, kann dies zu einer erheblichen Belastung des Systems, des Ethernet-Adapters und des Netzwerks führen. Damit ist das Standardverhalten des STCP-Befehls ping für die Langzeitüberwachung eines Zielhosts völlig ungeeignet.

 

Aber nur weil das Standardverhalten ungeeignet ist, heißt das nicht, dass Sie den Ping-Befehl nicht für die Langzeitüberwachung verwenden können. Der Trick besteht darin, den Befehl wiederholt auszuführen und jeweils eine Ping-Anforderung zu senden, anstatt den Befehl einmal auszuführen und einen kontinuierlichen Strom von Ping-Anforderungen zu senden. Das folgende Makro wird das tun.
ping_forever Befehlsmakro
& ping_forever begins here
&
& Version 1.0 09-08-30
& noah.davids@stratus.com
&
&begin_parameters
TARGET   target:string,required
SECONDS  seconds:number=1
TIMEOUT  timeout:number=1
TIMESTAMP switch(-timestamp),=1
&end_parameters
&
&label again
display_line
&if &TIMESTAMP& &then display_line *** (date).(time) ***
ping &TARGET& -count 1 -timeout &TIMEOUT&
sleep -seconds &SECONDS&
&goto again
&
& ping_forever ends here

 

Wie Sie sehen können, werden die ersten beiden Argumente direkt an den Ping-Befehl übergeben und entsprechen den Argumenten host und timeout von ping. Der Standard-Timeout von Ping ist 15 Sekunden, aber ich denke, das ist zu lang und habe das im Makro auf 1 Sekunde geändert. Sie können ihn natürlich entweder im Makro oder durch Angabe eines Wertes als Argument anpassen. Das dritte Argument ist die Anzahl der Sekunden, die zwischen den Pings pausiert werden soll, der Standardwert ist 1 Sekunde. Da es Zeit braucht, um das Makro zu starten und den Ping-Befehl zu laden und auszuführen, ist die tatsächliche Zeit zwischen den Pings etwas länger. Packet_monitor zeigte die Zeiten zwischen 1,05 und 1,1 Sekunden an. Das letzte Argument ist etwas, das Ihnen UNIX- oder Linux-Ping nicht geben wird - einen Zeitstempel für jeden Ping, so dass Sie feststellen können, wann das Ziel aufhört zu antworten und wann es wieder anfängt. Wenn Sie die Zeitstempel nicht wollen, können Sie sie mit dem Argument -no_timestamp ausschalten.

 

ping_forever Beispiel-Ausgabe
ping_forever 164.152.77.6
*** 09-08-30.11:45:38 ***
Pinging host 164.152.77.6 : 164.152.77.6
ICMP Echo Reply:TTL 60 time = 2 ms
Host 164.152.77.6 replied to the ping
*** 09-08-30.11:45:40 ***
Pinging host 164.152.77.6 : 164.152.77.6
ICMP Echo Reply:TTL 60 time = 2 ms
Host 164.152.77.6 replied to the ping
*** 09-08-30.11:45:41 ***
Pinging host 164.152.77.6 : 164.152.77.6
ping: No reply. Time Out !!
Host 164.152.77.6 didn't reply to the ping
*** 09-08-30.11:45:44 ***
Pinging host 164.152.77.6 : 164.152.77.6
ping: No reply. Time Out !!
Host 164.152.77.6 didn't reply to the ping
*** 09-08-30.11:45:47 ***
Pinging host 164.152.77.6 : 164.152.77.6
ICMP Echo Reply:TTL 60 time = 4 ms
Host 164.152.77.6 replied to the ping
*** 09-08-30.11:45:48 ***
Pinging host 164.152.77.6 : 164.152.77.6
ICMP Echo Reply:TTL 60 time = 3 ms
Host 164.152.77.6 replied to the ping

 

© 2020 Stratus Technologies.