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?
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?
Respuestas:
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?
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.
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 malloc
espacio para cada mensaje al tamaño máximo de mensaje.
Preguntas retóricas obligatorias ...
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 UPDATE
mensajes con un 100% de eficiencia. Por lo tanto, necesitamos 15,000 BGP UPDATE
mensajes.
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
¿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.