Por que o BGP implementa seu próprio keepalive em vez de usar o tcp keepalive?


14

O BGP não usa o keepalive TCP, ele usa seu próprio mecanismo de keepalive. Minha pergunta é por que o bgp não pode ativar o SO_KEEPaLIVE do TCP e viver feliz? por que ele não usa o tcp keepalive e implementa seu próprio keepalive?

Respostas:


19

O TCP "keepalive" é um recurso que não está presente em todos os sistemas operacionais. Não está no próprio padrão TCP e não é confiável. O RC1122 o especifica, mas afirma explicitamente:

Os implementadores PODEM incluir "manter-vivos" em suas implementações de TCP, embora essa prática não seja universalmente aceita. Se keep-alives estão incluídos, o aplicativo DEVE ser capaz de ativá-los ou desativá-los para cada conexão TCP, e eles DEVEM desativar como padrão.

Ainda mais importante:

É extremamente importante lembrar que os segmentos ACK que não contêm dados não são transmitidos com segurança pelo TCP. Conseqüentemente, se um mecanismo keep-alive for implementado, NÃO DEVE interpretar a falha em responder a qualquer investigação específica como uma conexão morta.

O keepalive do TCP usa o protocolo TCP de uma maneira especial, enviando um ACK duplicado sem dados anexados. A coisa é: você não pode contar com a disponibilidade. Alguns firewalls também filtram os keepalives do TCP.

Para que o BGP funcione corretamente, você precisa de uma maneira de implementar temporizadores específicos para keepalive (com que frequência enviamos uma mensagem) e hold (após o qual declaramos que um par não responde) que são enviados com confiabilidade . Portanto, o BGP está usando sua própria mensagem de manutenção de atividade, que não apresenta muita sobrecarga (19 bytes) em comparação com a manutenção de atividade TCP.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.