Ativando keepalives TCP em todo o sistema em um sistema Windows

4

Posso alterar / adicionar o KeepAliveTime e as variáveis de registro relacionadas para fazer com que uma máquina Windows envie pacotes keepalive de TCP em uma conexão ociosa?

Eu quero saber se alguém conseguiu isso funcionar. Especificamente, quando o aplicativo inativo na conexão TCP não está fazendo nada em particular (setsockopt) para manter a conexão ativa.

Estes detalhes do Microsoft TechNet sobre Configurando o Keep-Alives em todo o sistema com o KeepAliveTime e variáveis de registro relacionadas.

HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\KeepAliveTime

Parece que a configuração ampla do sistema Linux para usar o keep-alive .
Mas, isso requer que os programas usem o setsockopt() e solicitem keep-alive (certo?).

Remember that keepalive support, even if configured in the kernel, is not the default behavior in Linux. Programs must request keepalive control for their sockets using the setsockopt interface. There are relatively few programs implementing keepalive...

    
por nik 14.07.2009 / 04:49

1 resposta

5

Sua avaliação da funcionalidade TCP keepalive no Windows como o Linux está correta.

Você pode manipular os parâmetros de registro relacionados a keepalives de TCP o quanto quiser, mas, a menos que o aplicativo use setsockopt() para solicitar keepalives, nenhum será enviado por padrão.

Se você quiser ver o keepalive em ação no Windows e não quiser escrever código, marque a opção "Ativar keepalives de TCP (SO_KEEPALIVE)" nas propriedades "Connection" no PuTTY Cliente SSH / TELNET / etc, inicie uma conexão, deixe-a ficar ociosa e cheire o tráfego. (É o primeiro aplicativo que eu poderia pensar que eu sabia que poderia ser configurado para usar SO_KEEPALIVE ...)

    
por 01.07.2010 / 01:51