Recentemente, tive uma discussão com alguém que tinha cometido uma falta nas configurações do firewall corporativo. O firewall irá limpar sua tabela de estado de qualquer conexão que tenha estado ociosa por mais de 10 minutos. Infelizmente, seu comportamento quando recebe um segmento para uma conexão que não está em sua tabela de estado é o de deixar o segmento silenciosamente. Isto significa que pode levar mais de 8 minutos para que uma aplicação STCP perceba que não pode mais se comunicar com seu ponto final e restabelecer a conexão. Isto estava incomodando seus usuários.
Neste ponto, sugeri que a aplicação fosse modificada para incluir uma camada de aplicação configurável keep-alive message. Infelizmente, mudar a aplicação não é uma opção. A aplicação também não configura a opção SO_KEEPALIVE socket, portanto, mesmo a mudança do timer keep-alive de 2 horas para 9 minutos não resolverá o problema.
A solução é um segmento keep-alive da camada TCP de terceiros. Este é um segmento keep-alive da camada TCP que parece vir da aplicação (usando o endereço IP do módulo como endereço de origem e a porta TCP da aplicação como porta de origem) e é enviado para o endereço IP e porta do host remoto. O firewall observa isso como atividade e mantém a conexão em sua tabela de estados.
A explicação e os exemplos da minha ferramenta de 3ª_manutenção_alive são muito longos para este post no blog para que você possa encontrar os detalhes aqui.