Недавно я проводил пасхальные выходные с моими родителями, которые живут в очень сельской местности в Великобритании. У них есть (ужасное) 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
исходный код (из ~ 1761), я вижу, что часовые пояса игнорируются в последующих вычислениях ( gettimeofday(nv, NULL)
возвращает микросекунды эпох). Это действительно заняло час!