处理bgp协议包大小

时间:2015-11-20 15:21:33

标签: routes protocols bgp

为什么BGP协议会将其数据包大小设置为小于4096字节?

如果BGP数据包大小超过4096字节,我应该如何处理?

2 个答案:

答案 0 :(得分:1)

"为什么BGP协议会将其数据包大小重写为小于4096字节?"

Tony Li在此IDR thread给出了正式答复。引用他的回答:

  

1)首先,实现不应该使用的信息大小为   不同于指定的4k消息大小限制。如果是   实现发送超过4k的消息,然后发送其他
  实现将无法解析它们。如果实施
  不能接收4k消息,那么它也将无法接收   互操作。

     
    

1a)固定尺寸是好的,因为它使协议成为可能     实现简单。没有必要复杂化     实施,如​​果没有提供任何好处。大信息不是     提供一个很好的好处,因为它们需要足够大才能携带     路径属性和关联的前缀。为此目的,4k是
    可能已经足够了。

         1b)从历史上看,4k被认为有点浪费。当然,它     与使用碎片的EGP相比,它非常简单     数据包。需要解析16k jumbo-gram?关心调试吗?信托
    我,这不好玩。

  
     

2)4k消息大小是TCP窗口的完全独立的   尺寸。一个实现完全可以自由地组成任意数量的   消息,每个消息都在4k限制范围内。实施
  然后可以将任意数量的消息塞入其TCP套接字,直至到   缓冲该TCP的限制。

     
    

2a)因此,消息大小 NOT 性能限制,除非是
    实现实际上可能会溢出消息。乡亲
    保持当前的实施可能会在这里说明是否为     他们是否看到了这一点。     因此,总而言之,是的,4k消息大小限制是一个很好的情况
    BGP
,用于它的行为方式和它所做的工作。这
     NOT 是否必须推广到其他协议(例如OSPF)     其中4k超过最常见的MTU。在这种情况下,你最终会结束     碎片化,这很糟糕。

  

如何处理大小超过4096的BGP数据包?

在现实世界中,我们通过记录BGP格式错误的消息来处理这种情况,然后通过发送带有代码消息头错误(1)和子代码错误消息长度(2)的BGP通知来终止会话。终止会话是BGP错误处理的方法之一。您可以参考BGP错误处理rfc7606

答案 1 :(得分:0)

该规范是如何编写的。查看http://www.faqs.org/rfcs/rfc1771.html了解更多详情。这意味着理论上你不应该收到大于4k的BGP数据包。也许他们认为发送包含大型路由表更新等的大数据包不应该干扰大数据传输,因此他们分解数据包以利用不同的队列。这是一个完整的SWAG。 :)