Niedawno wielkanocne wakacje spędziłem z rodzicami, którzy mieszkają na bardzo wiejskim obszarze w Wielkiej Brytanii. Mają (okropne) połączenie z Internetem ADSL, które biegnie przez kilka kilometrów mglistej miedzi i jest okresowo przerywane, gdy pobliscy rolnicy odwracają ciągniki na linie telefoniczne.
Zauważyłem, że ich router wielokrotnie upuszczał pptp
uścisk dłoni i renegocjował go, skutecznie zabijając połączenie. To było frustrujące. Tak więc, próbując uniknąć szaleństwa, powiedziałem, aby podwoić minimalny dopuszczalny margines SNR i uścisk dłoni dla niższych prędkości:
$ 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.
To się poprawiło, a rzecz stała się (nieco) stabilna, choć niesamowicie wolna, do świata zewnętrznego:
$ 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
...
Mniej więcej w tym momencie interweniowało prawdziwe życie, a następnie spędziłem kilka godzin, bawiąc się z kotami, patrząc na gify z kotów na moim telefonie, rozmawiając z rodziną itp. Zapomniałem, że zostawiłem ten proces ping uruchomiony i wróciłem dzień później trafić ctrl-c
.
Pokazane statystyki podsumowujące mnie unosiły:
--- 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
Jak widać, maksymalny zarejestrowany czas odpowiedzi dla pakietu ICMP wykonującego krótki transatlantycki przeskok do serwera DNS Google wynosi 3600577,732 ms . To prawie dokładnie godzina , a na pewno znacznie dłużej niż ping
domyślny limit czasu.
Jak to może być na ziemi ? Jest to jest dokładne? Który router z radością utrzyma pakiet przez sześćdziesiąt minut, zanim wyśle go po drodze? Dlaczego ten pakiet nie został odrzucony? Czy jest to wynikiem przepełnienia 8-bitowego licznika pakietów w połączeniu z dużymi opóźnieniami?
Na koniec chciałbym wiedzieć, czy istnieje jakiś kodeks postępowania w Wielkiej Brytanii stwierdzający, że oczekuje się, że połączenia ADSL dla konsumentów będą miały mniejsze opóźnienia i lepsze zarządzanie ruchem niż w przypadku RFC 1149 i RFC 2549 ;-).
ping
kod źródłowy (od ~ l 761) widzę, że strefy czasowe są ignorowane w późniejszych obliczeniach ( gettimeofday(nv, NULL)
zwraca epokę mikrosekund). Naprawdę zajęło to godzinę!