Comprimento da mensagem BGP em 2 bytes. Então, por que o tamanho máximo da mensagem bgp não pode ser 65535? por que é 4096?
Comprimento da mensagem BGP em 2 bytes. Então, por que o tamanho máximo da mensagem bgp não pode ser 65535? por que é 4096?
Respostas:
Comprimento da mensagem BGP em 2 bytes. Então, por que o tamanho máximo da mensagem bgp não pode ser 65535? por que é 4096?
Citando Tony Li quando ele respondeu a esta pergunta na lista de IDR :
1a) Ter um tamanho fixo é bom porque facilita as implementações do protocolo. Não há sentido em ter complexidade em uma implementação se ela não fornecer nenhum benefício. Mensagens grandes não fornecem um benefício maravilhoso, pois precisam ser grandes o suficiente para transportar os atributos do caminho e os prefixos associados. Para esse fim, provavelmente 4k é adequado até o momento.
1b) Historicamente, 4k foi considerado um pouco desperdício. Obviamente, era maravilhosamente simples comparado ao EGP, que usava pacotes fragmentados. Gostaria de analisar um jumbo-grama de 16k? Gostaria de depurar isso? Confie em mim, não é divertido.
2) O tamanho da mensagem de 4k é completamente independente do tamanho da janela TCP. Uma implementação é perfeitamente livre para compor qualquer número de mensagens, cada uma delas dentro do limite de 4k. A implementação pode amontoar qualquer número de mensagens em seu soquete TCP, até os limites de buffer desse TCP.
2a) Assim, o tamanho da mensagem NÃO limita o desempenho, exceto quando uma implementação pode realmente sobrecarregar uma mensagem. As pessoas que mantêm implementações atuais podem gritar aqui se veem ou não isso.
Portanto, em resumo, sim, um limite de tamanho de mensagem de 4k é uma boa situação para o BGP , pela maneira como ele se comporta e pelo trabalho que realiza. Isso NÃO necessariamente generaliza para outros protocolos (por exemplo, OSPF) em que 4k excede as MTUs mais comuns. Nesses casos, você acabaria com a fragmentação, e isso é ruim.
65536/4096 = 16
Realmente queremos que os requisitos de RAM transitórios do BGP se multipliquem por 16? Lembre-se de que, sob as cobertas, muitas implementações de BGP são escritas em C, o que significa que o BGP pode precisar de malloc
espaço para cada mensagem no tamanho máximo da mensagem.
Perguntas retóricas obrigatórias ...
long long
?Vamos supor que temos 100.000 prefixos de BGP com 15.000 combinações de atributos exclusivos; vamos também assumir que nossa implementação do BGP empacota os prefixos em BGP UPDATE
mensagens com 100% de eficiência. Portanto, precisamos de 15.000 BGP UPDATE
mensagens.
15000 mensagens * 4096 bytes / mensagem = 58MB de buffer de mensagem agregado BGP usado
15000 mensagens * 65536 bytes / mensagem = 937MB de buffer de mensagem BGP agregado usado