Determinando a causa da queda de conexões TCP

1

Portanto, há um serviço escutando em uma porta e há um cliente conectando-se a ele (protocolo TCP). O cliente e o servidor tentam "pingar" uns aos outros de tempos em tempos. Por exemplo, este é o cliente que faz ping no servidor:

00:34:04.343401 IP 192.168.1.10.57927 > myserver.com.mmcc: Flags [P.], seq 86470:86624, ack 6652727, win 4096, options [nop,nop,TS val 585141111 ecr 389969418], length 154
00:34:04.344196 IP myserver.com.mmcc > 192.168.1.10.57927: Flags [.], ack 86624, win 65535, options [nop,nop,TS val 389970019 ecr 585141111], length 0
00:34:04.344419 IP myserver.com.mmcc > 192.168.1.10.57927: Flags [P.], seq 6652727:6652833, ack 86624, win 65535, options [nop,nop,TS val 389970019 ecr 585141111], length 106
00:34:04.344467 IP 192.168.1.10.57927 > myserver.com.mmcc: Flags [.], ack 6652833, win 4092, options [nop,nop,TS val 585141112 ecr 389970019], length 0

Mas há um caso peculiar com um provedor de internet móvel / GSM que mudou recentemente algo em sua configuração e agora a mesma conexão quebra silenciosamente após menos de 15 segundos (!) de ficar ocioso. Se você continuar enviando pacotes a cada dois segundos, usando ativamente o serviço, tudo estará bem. Não faça nada por um pouco mais e isso acaba com as duas partes tentando falar com o outro e não receber resposta, o que acontece em pontos aleatórios no tempo, mas tudo dentro de um minuto da última atividade:

lado do cliente (a primeira linha é repetida apenas com o timestamp sendo diferente por cerca de 45 segundos):

00:44:57.224638 IP macpro.office.58180 > myserver.com.mmcc: Flags [P.], seq 99638:99792, ack 6984799, win 4096, options [nop,nop,TS val 585785321 ecr 389975387], length 154
00:45:03.319226 IP macpro.office.58180 > myserver.com.mmcc: Flags [R.], seq 99792, ack 6984799, win 4096, length 0

lado do servidor (vai exatamente assim e depois silencioso):

23:59:37.369320 IP 192.168.1.3.fmpro-internal > my.gprs.network.com.27581: P 59596370:59596460(90) ack 21549606 win 65535 <nop,nop,timestamp 389985343 586356990>
23:59:37.369415 IP 192.168.1.3.fmpro-internal > my.gprs.network.com.27581: F 90:90(0) ack 1 win 65535 <nop,nop,timestamp 389985343 586356990>
23:59:38.288366 IP 192.168.1.3.fmpro-internal > my.gprs.network.com.27581: FP 0:90(90) ack 1 win 65535 <nop,nop,timestamp 389985352 586356990>
23:59:40.288991 IP 192.168.1.3.fmpro-internal > my.gprs.network.com.27581: FP 0:90(90) ack 1 win 65535 <nop,nop,timestamp 389985372 586356990>
23:59:44.290952 IP 192.168.1.3.fmpro-internal > my.gprs.network.com.27581: FP 0:90(90) ack 1 win 65535 <nop,nop,timestamp 389985412 586356990>

Isso acontece em diferentes servidores localizados em locais diferentes e quando testados com diferentes serviços que mantêm conexões abertas e também com diferentes máquinas cliente. A única coisa comum entre eles é esse acesso à Internet móvel que só pode ser usado pelos clientes. Somente quando usado, o problema ocorre.

Então a questão é por que isso pode estar acontecendo e o que eu posso fazer para entender o que realmente está acontecendo.

    
por Захар Joe 07.12.2016 / 23:24

0 respostas