Recentemente, passei o feriado bancário da Páscoa com meus pais, que moram em uma área muito rural do Reino Unido. Eles possuem uma conexão à Internet ADSL (terrível), que percorre vários quilômetros de cobre desonesto e é interrompida periodicamente quando fazendeiros próximos invertem seus tratores nas linhas telefônicas.
Percebi que o roteador deles estava largando repetidamente o pptp
aperto de mão e renegociando-o, matando a conexão efetivamente. Isso foi frustrante. Então, na tentativa de evitar enlouquecer, eu disse para dobrar a margem SNR e o aperto de mão mínimos aceitáveis para velocidades mais baixas:
$ 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.
Isso melhorou as coisas, e a coisa ganhou uma tubulação (um tanto) estável, embora incrivelmente lenta, para o mundo exterior:
$ 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
...
Nesse ponto, a vida real interveio e eu passei várias horas brincando com gatos, olhando gifs de gatos no meu telefone, conversando com minha família etc. Esqueci que havia deixado esse processo de ping em funcionamento e voltei um dia depois para bater ctrl-c
.
As estatísticas resumidas mostradas me impressionaram:
--- 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
Como você pode ver, o tempo máximo de resposta registrado para um pacote ICMP que faz um pequeno salto transatlântico para o servidor DNS do Google é de 3600577,732 ms . Isso é quase exatamente uma hora e certamente muito mais que ping
o tempo limite padrão.
Como pode ser isso na Terra ? É preciso? Que roteador manterá felizmente um pacote por sessenta minutos antes de enviá-lo a caminho? Por que esse pacote não foi descartado? É o resultado de um estouro do contador de pacotes de 8 bits combinado com grandes latências?
Finalmente, eu gostaria de saber se existe algum código de conduta no Reino Unido que indique que as conexões ADSL dos consumidores devem ter menos latência e melhor gerenciamento de tráfego do que as das RFC 1149 e RFC 2549 ;-).
ping
código fonte (de ~ l 761), posso ver que os fusos horários são ignorados no cálculo subsequente ( gettimeofday(nv, NULL)
retorna microssegundos da época). Realmente levou uma hora!