Ich habe vor kurzem den Osterfeiertag mit meinen Eltern verbracht, die in einer sehr ländlichen Gegend in Großbritannien leben. Sie haben eine (schreckliche) ADSL-Internetverbindung, die über mehrere Kilometer zwielichtigen Kupfers läuft und regelmäßig unterbrochen wird, wenn die Bauern in der Nähe ihre Traktoren in die Telefonleitungen stecken.
Ich bemerkte, dass der Router den pptp
Handshake wiederholt ablegte und neu aushandelte, wodurch die Verbindung effektiv unterbrochen wurde. Das war frustrierend. Um nicht verrückt zu werden, forderte ich ihn auf, die minimal akzeptable SNR-Marge und den Handshake für niedrigere Geschwindigkeiten zu verdoppeln:
$ telnet 192.168.1.1
Trying 192.168.1.1...
Connected to 192.168.1.1.
Escape character is '^]'.
U.S. Robotics Wireless MAXg ADSL Gateway
Login: ***********
Password:
> sh
BusyBox v1.00 (2006.02.17-20:30+0000) Built-in shell (msh)
Enter 'help' for a list of built-in commands.
# adsl configure --snr 200; exit
Connection closed by foreign host.
Das verbesserte die Sache und das Ding bekam eine (etwas) stabile, wenn auch unglaublich langsame Leitung zur Außenwelt:
$ ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8): 56 data bytes
Request timeout for icmp_seq 0
Request timeout for icmp_seq 1
Request timeout for icmp_seq 2
64 bytes from 8.8.8.8: icmp_seq=0 ttl=55 time=3236.679 ms
64 bytes from 8.8.8.8: icmp_seq=1 ttl=55 time=3699.541 ms
...
Ungefähr zu diesem Zeitpunkt mischte sich das wirkliche Leben ein und ich verbrachte einige Stunden damit, mit Katzen zu spielen, mir Katzengifs auf meinem Handy anzusehen, tatsächlich mit meiner Familie zu sprechen usw. Ich vergaß, dass ich diesen Ping-Prozess laufen ließ, und kam zurück einen Tag später zu schlagen ctrl-c
.
Die zusammenfassende Statistik sagte mir:
--- 8.8.8.8 ping statistics ---
103074 packets transmitted, 100564 packets received, 2.4% packet loss
round-trip min/avg/max/stddev = 32.986/3034.479/3600577.732/87527.276 ms
Wie Sie sehen, beträgt die maximale Antwortzeit für ein ICMP-Paket, das einen kurzen transatlantischen Sprung zum DNS-Server von Google durchführt, 3600577,732 ms . Das ist fast genau eine Stunde und sicherlich viel länger als ping
das Standard-Timeout.
Wie um alles in der Welt kann das sein? Ist es richtig? Welcher Router hält ein Paket gerne 60 Minuten lang fest, bevor er es auf seinem Weg sendet? Warum wurde dieses Paket nicht gelöscht? Ist es das Ergebnis eines Überlaufs des 8-Bit-Paketzählers in Kombination mit großen Latenzen?
Abschließend möchte ich wissen, ob es in Großbritannien einen Verhaltenskodex gibt, der besagt, dass für Consumer-ADSL-Verbindungen eine geringere Latenz und ein besseres Verkehrsmanagement erwartet wird als für RFC 1149 und RFC 2549 ;-).
ping
Quellcodes (von ~ l 761) feststellen, dass Zeitzonen in der nachfolgenden Berechnung ignoriert werden ( gettimeofday(nv, NULL)
gibt Mikrosekunden in der Epoche zurück). Es hat wirklich eine Stunde gedauert!