大部分异厂商,BGP故障,查看BGP报文交互,经常看到UPdate报文0更新,都是MTU惹的祸
MTU 以太网MTU1500 ,IP数据包16位最大为65535,传输当然需要分片
网络是比较复杂的,每个网络的MTU值是不同的。我们假设,如果接受/发送端都是以太网1500,我们假设发送的时候,数据包会以1500来封装,然而,不幸的是,传输中有一段X.25网,它的MTU是576,这会发生什么呢?这个数据包会被再次分片,如果IP包被设置了“不允许分片标志”,那数据包将被丢弃,然后收到一份ICMP不可达差错,告诉你,需要分片!
测试方法
这个网络中最小的MTU值,被称为路径MTU,我们应该有一种有效的手段,来发现这个值,最笨的方法或许是用traceroute查看所有节点,然后一个节点一个节点ping 大字段1500 即根据所有传输列出的节点ping *.*.*.* size 1500 以下回到BGP
BGP协议是传输层TCP协议,TCP协议有一个最大报文段长度MSS,最大值的限制,BGP建立连接双方都要告知各自的MSS,也就是说,它说是与TCP的SYN标志在一起的。当然,对于传输来讲,总是希望MSS越大越好,但是MSS最气吗有个限制,以太网就是 MTU-IP头-TCP头=1500-20-20,也就是为什么bgp最常见的MSS为1460了,为了避免分片,IP层本身没有超时重传机制------由更高层(比如TCP)来负责超时和重传。当来自TCP报文段的某一片丢失后,TCP在超时后会重发整个TCP报文段,该报文段对应于一份IP数据报(而不是一个分片),没有办法只重传数据报中的一个数据分片。即:即使只丢失一片数据也要重新传整个数据报!---------
bgp 的tcp 重传,一旦UPdate报文数据过大,超过了MSS,则