Recentemente, conversei com alguém que teve problemas com as configurações do firewall corporativo. O firewall limpa sua tabela de estado de qualquer conexão que fique inativa por mais de 10 minutos. Infelizmente, quando recebe um segmento para uma conexão que não está em sua tabela de estado, ele descarta o segmento silenciosamente. Isso significa que pode levar mais de 8 minutos para que um aplicativo STCP perceba que não pode mais se comunicar com seu ponto final e restabeleça a conexão. Isso estava incomodando seus usuários.
Nesse momento, sugeri que o aplicativo fosse modificado para incluir uma mensagem keep-alive configurável na camada de aplicativo. Infelizmente, alterar o aplicativo não é uma opção. O aplicativo também não define a opção de soquete SO_KEEPALIVE, portanto, mesmo alterando o temporizador keep-alive do sistema de 2 horas (padrão) para 9 minutos, o problema não será resolvido.
A solução é um segmento keep-alive da camada TCP de terceiros. Trata-se de um segmento keep-alive da camada TCP que parece vir do aplicativo (usando o endereço IP do módulo como endereço de origem e a porta TCP do aplicativo como porta de origem) e é enviado para o endereço IP e a porta do host remoto. O firewall registra isso como atividade e mantém a conexão em sua tabela de estados.
A explicação e os exemplos da minha ferramenta 3rd_party_keep_alive são muito longos para esta publicação no blog, por isso pode encontrar os detalhes aqui.
