Alguma resposta o ajudou? Nesse caso, você deve aceitar a resposta para que a pergunta não apareça para sempre, procurando uma resposta. Como alternativa, você pode fornecer e aceitar sua própria resposta.
Ron Maupin
Respostas:
14
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?
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.
Outros pensamentos
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 mallocespaço para cada mensagem no tamanho máximo da mensagem.
Perguntas retóricas obrigatórias ...
Por que temos limites de tamanho variável no software?
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 UPDATEmensagens com 100% de eficiência. Portanto, precisamos de 15.000 BGP UPDATEmensagens.
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
Porque RFC4271 diz isso? O limite também estava presente no BGP 3 . Dada a pequena internet no momento em que o BGP foi criado em um guardanapo lendário, eu diria que foi escolhido exatamente como era o número de bits no IPv4.
Respostas:
Resposta oficial
Citando Tony Li quando ele respondeu a esta pergunta na lista de IDR :
Outros pensamentos
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.000BGP 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
fonte
Porque RFC4271 diz isso? O limite também estava presente no BGP 3 . Dada a pequena internet no momento em que o BGP foi criado em um guardanapo lendário, eu diria que foi escolhido exatamente como era o número de bits no IPv4.
fonte