Нещодавно я провів свято великоднього банку з батьками, які живуть у дуже сільській місцевості у Великобританії. У них є (жахливий) інтернет-з'єднання ADSL, яке проходить через кілька кілометрів хитрої міді і періодично переривається, коли сусідні фермери переводять свої трактори на телефонні лінії.
Я помітив, що їх маршрутизатор неодноразово кидав pptp
рукостискання і переговорював це, ефективно вбиваючи з'єднання. Це засмучувало. Отже, намагаючись уникнути божевілля, я сказав їй подвоїти мінімально допустимий запас SNR і рукостискання для менших швидкостей:
$ 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.
Це покращило питання, і річ отримала (дещо) стабільну, якщо неймовірно повільну, трубу до зовнішнього світу:
$ 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
...
Приблизно в цей момент втрутилося реальне життя, і я потім кілька годин грав у кішок, дивлячись на котики на моїм телефоні, фактично розмовляючи зі своєю родиною тощо. Я забув, що покину цей процес пінгу, і повернувся через день вдарити ctrl-c
.
Зведена підсумкова статистика враховувала мене:
--- 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
Як бачимо, максимальний записаний час відповіді для пакету ICMP, який здійснює короткий трансатлантичний перехід на DNS-сервер Google, становить 3600577,732 мс . Це майже рівно годину , і, звичайно, набагато довший, ніж час ping
очікування за замовчуванням.
Як на Землі це може бути? Це точно? Який маршрутизатор із задоволенням триматиметься за пакет шістдесят хвилин, перш ніж відправити його в дорогу? Чому цей пакет не випав? Це результат переповнення 8-бітового лічильника пакетів у поєднанні з великими затримками?
Нарешті, мені було б цікаво дізнатись, чи є у Великобританії якийсь кодекс поведінки, який говорить про те, що очікується, що споживачі ADSL мають менші затримки та краще управління трафіком, ніж у RFC 1149 та RFC 2549 ;-).
ping
вихідний код (від ~ l 761), я бачу, що часові пояси ігноруються при наступному обчисленні ( gettimeofday(nv, NULL)
повертає епохальні мікросекунди). Це дійсно зайняло годину!