Por que o tamanho máximo da mensagem do BGP é escolhido como 4096? por que não 2 ^ 16?


7

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?


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?

Resposta oficial

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.

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?
  • Por que nem todo C inteiro é um 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 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


0

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.

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.