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 ;-).
źródło
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ę!Odpowiedzi:
Pakiet ICMP i odpowiedź na ping mają długość 32 bajtów, więc wydaje się, że dla godzinnego pingowania przesyłanie każdego bajtu trwało prawie minutę.
Można to wytłumaczyć jedynie bardzo hojną liczbą ponownych prób błędów (co robisz?) W połączeniu z bardzo wolnym routerem i bolesnym oczekiwaniem lub ponawianiem prób dla każdego przesyłanego bajtu.
Protokół internetowy (IP) przesyła dane przez datagramy i stara się nie wysyłać częściowych. Po uruchomieniu transmisji będzie domyślnie czekał przez 200 milisekund, aby dodać więcej bajtów do datagramu. Po upływie tego czasu oprogramowanie / oprogramowanie wewnętrzne wyśle wszystko, co ma jako jeden datagram. W przypadku godzinnego pingowania ładunek pakietu mógł być tak mały jak jeden bajt. Dopóki dane wciąż docierają, połączenie nie zostanie zakończone przez dwie uczestniczące strony.
Co możesz zrobić :
Znalezienie problematycznego przełącznika może być dość skomplikowane, jak w przypadku firmy telekomunikacyjnej, ale dostawca usług internetowych może mieć także własne przełączniki. Zwykle problem z przełącznikiem dotyczy całego obszaru, co pomaga zlokalizować nieprawidłowo działający przełącznik. Ale na obszarach wiejskich, gdzie nie korzysta zbyt wielu abonentów, ten przełącznik może pozostać niewykryty. Jeśli niektórzy sąsiedzi korzystają z tego samego usługodawcy internetowego, spróbuj dowiedzieć się, jakie jest ich połączenie.
źródło
Widzę tę sprawę w bardzo dużym stopniu związaną z zarządzaniem ograniczeniami danych, chociaż bardzo źle zarządzaną z jakiegokolwiek powodu. O ile mi wiadomo, w systemie transmisji jest bufor pakietów - źle zarządzany, co powoduje tę anomalię w pakietach żądań / odpowiedzi echa ICMP.
Tak więc połączenie złej polityki zarządzania ograniczeniami z godzinną sesją ping może oczywiście doprowadzić do tak dziwnego scenariusza.
Więcej informacji na temat zarządzania ograniczeniami tutaj .
źródło