¿Por qué el tamaño máximo de mensaje BGP se elige como 4096? ¿Por qué no 2 ^ 16?


7

Longitud del mensaje BGP de 2 bytes. Entonces, ¿por qué el tamaño máximo de mensaje bgp no puede ser 65535? ¿Por qué es 4096?


¿Alguna respuesta te ayudó? Si es así, debe aceptar la respuesta para que la pregunta no siga apareciendo para siempre, buscando una respuesta. Alternativamente, puede proporcionar y aceptar su propia respuesta.
Ron Maupin

Respuestas:


14

Longitud del mensaje BGP de 2 bytes. Entonces, ¿por qué el tamaño máximo de mensaje bgp no puede ser 65535? ¿Por qué es 4096?

Respuesta oficial

Citando a Tony Li cuando respondió a esta pregunta en la lista IDR :

1a) Tener un tamaño fijo es bueno porque facilita la implementación del protocolo. No tiene sentido tener complejidad en una implementación si no proporciona ningún beneficio. Los mensajes grandes no proporcionan un beneficio maravilloso, ya que deben ser lo suficientemente grandes como para llevar los atributos de ruta y los prefijos asociados. Para este propósito, 4k es probablemente adecuado hasta la fecha.

1b) Históricamente, 4k fue considerado un poco despilfarrador. Por supuesto, fue maravillosamente simple en comparación con EGP que usaba paquetes fragmentados. ¿Te gustaría analizar un jumbo de 16k? ¿Quieres depurar eso? Confía en mí, no es divertido.

2) El tamaño del mensaje 4k es completamente independiente del tamaño de la ventana TCP. Una implementación es perfectamente libre para componer cualquier número de mensajes, cada uno de los cuales está dentro del límite de 4k. Luego, la implementación puede incluir cualquier cantidad de mensajes en su socket TCP, hasta los límites de búfer de ese TCP.

2a) Por lo tanto, el tamaño del mensaje NO limita el rendimiento, excepto cuando una implementación podría sobrecargar un mensaje. Las personas que mantienen las implementaciones actuales pueden intervenir aquí para ver si ven esto o no.

Entonces, en resumen, sí, un límite de tamaño de mensaje de 4k es una buena situación para BGP , por la forma en que se comporta y el trabajo que realiza. Esto NO necesariamente se generaliza a otros protocolos (por ejemplo, OSPF) donde 4k excede las MTU más comunes. En esos casos, terminarías con fragmentación, y eso es malo.

Otros pensamientos

65536/4096 = 16

¿Realmente queremos que los requisitos de RAM transitoria de BGP se multipliquen por 16? Recuerde que debajo de las cubiertas, muchas implementaciones de BGP están escritas en C, lo que significa que BGP podría necesitar mallocespacio para cada mensaje al tamaño máximo de mensaje.

Preguntas retóricas obligatorias ...

  • ¿Por qué tenemos límites de tamaño variable en el software?
  • ¿Por qué no todos los C enteros son long long?

Supongamos que tenemos 100,000 prefijos BGP con 15,000 combinaciones de atributos únicos; supongamos también que nuestra implementación de BGP empaqueta los prefijos en BGP UPDATEmensajes con un 100% de eficiencia. Por lo tanto, necesitamos 15,000 BGP UPDATEmensajes.

15000 mensajes * 4096 bytes / mensaje = 58 MB de almacenamiento intermedio de mensajes BGP agregado

15000 mensajes * 65536 bytes / mensaje = 937 MB de almacenamiento intermedio de mensajes BGP agregado


0

¿Porque RFC4271 lo dice? El límite también estaba presente en BGP 3 . Dado el pequeño internet en el momento en que BGP se creó en una servilleta legendaria, diría que se eligió exactamente la cantidad de bits en IPv4.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.