协议的MTU协商
MTU除了跟报文转发有关系,跟协议也有关系。
OSPF的MTU协商
根据相关标准的定义,OSPF通过DD报文(Database Description packet)的“interface MTU”字段来协商MTU值。
相关标准规定,如果设备收到的DD报文“interface MTU”字段值小于DD报文出接口的MTU,则邻居关系停留在“Exchange start”状态,无法达到FULL。
不同厂商对于DD报文中的MTU协商处理原则不尽相同:
- 有的厂商默认检查DD报文的MTU值。可以通过命令行调整为不检查。
- 有的厂商默认不检查DD报文的MTU值。可以通过命令行调整为检查。
- 还有的厂商设备检查MTU值,且不可调整。
因此在排除OSPF邻接关系故障时需要考虑到上述差异。
NE40E产品,缺省不检查DD报文中的MTU,接口发送DD报文时MTU值为0。
NE40E产品,允许通过命令行使能指定接口在发送时填写DD报文中的MTU值域。使能后,设备会严格按照协议,收到DD报文时,进行MTU检查,如果MTU不匹配,则邻居无法达到FULL状态。
IS-IS的MTU协商
根据ISO 10589的定义,用于建立与维持IS-IS邻接关系的Hello报文,不得小于路由器接口能够接收并处理的最大数据长度,如果小于,则进行填充。这种机制保证了IS-IS邻接关系只建立于那些能接收并处理对方能发送的最大数据长度的系统之间。
NE40E产品的IS-IS实现遵从ISO 10589标准,如果Hello报文长度小于接口MTU,都会被填充。缺省情况下,如果运行IS-IS协议的链路两端接口MTU不匹配,则IS-IS邻接关系无法建立成功。
然而在实际网络中,几乎所有互连的路由器接口的MTU都是相同的,所以在大多数情况下并不需要Hello报文填充。尤其对于MTU较大而Hello发送时间间隔较短的接口,对频繁发送的Hello报文都进行填充,对网络资源造成较大浪费。
IS-IS提供了一种功能允许禁止Hello报文填充以节省网络开销。
NE40E产品提供了用于设置接口发送Hello报文是否进行填充的功能。缺省情况下,NE40E产品发送Hello报文的规则如下:
- P2P接口:P2P邻居建立之前,发送带有填充字段的标准Hello报文。P2P邻居建立之后,发送不带有填充字段的小型Hello报文。
- 广播接口:发送带有填充字段的标准Hello报文。
LDP的PMTU协商
相关标准定义了自动发现LDP LSP路径MTU的机制。LSR针对某个FEC,把所有下游设备通告的MTU和本机该FEC的出接口MTU做比较,计算出最小值通告给上游。
LSP上不同节点,MTU取值不同:
如果是Egress节点,MTU取值为65535。
如果是倒数第2跳且收到一个隐式空标签,则设置LDP MTU为FEC的出接口MTU。
其他情况,则比较FEC的出接口MTU和下游节点发给他的TLV中的MTU,取其中的较小值作为LDP MTU。如果收到的TLV没有指定MTU,则默认为65535。
LDP MTU通告方式为,把计算出来的MTU值放在Label Mapping消息的MTU TLV里,然后把Label Mapping消息发送给上游。
如果MTU发生变动,如本机出接口改变或者配置变更,那么LSR会再次通过Label Mapping消息,把重新计算后的MTU通告给它的所有上游。
如果LSR收到一个无法识别的MTU TLV,忽略此消息并且转发给邻居。
在NE40E产品上,LDP LSP在建立过程中会协商MPLS MTU参数,且支持两种MTU TLV类型:
- 缺省情况下,NE40E产品发送的是私有的MTU TLV。如果邻居无法识别此TLV,会忽略并转发该TLV,不影响LDP邻居关系的建立。
- 可以通过命令行设置,使NE40E产品发送相关标准定义的MTU TLV,用于与其他厂商设备互通时协商MTU。
RSVP-TE的PMTU协商
RSVP-TE也支持MPLS MTU协商,用于自动发现TE LSP的PMTU。
RSVP-TE协商PMTU的过程如下:
- 从TE隧道的Ingress节点发送Path消息,在Path消息中的Adspec对象携带MTU。该MTU取值为物理出接口下配置的接口MTU和MPLS MTU两者的较小值。
- 隧道沿途各节点收到Path消息,将Adspec对象中的MTU值与本地隧道物理出接口下配置的接口MTU和MPLS MTU三者进行比较。如果本地的值小,则将Adspec对象中的MTU值改为本地的最小值。之后,将Path消息发送给下游。
- 这样,Egress节点收到的Path消息中携带的MTU即为路径MTU最小值。Egress再通过Resv消息将协商好的MTU值带回Ingress节点。
L2VPN的MTU协商
根据相关标准的定义,L2VPN(包括PWE3、VLL、VPLS)组网环境下,VC/PW建立过程中,需要协商MTU。如果两端MTU不一致,VC/PW无法建立。
L2VPN类型 |
MTU协商值配置 |
MTU协商值的取值规则 |
---|---|---|
PWE3 |
|
生效次序:
|
Kompella方式VLL |
MPLS-L2VPN实例视图下配置mtu mtu-value命令 |
MPLS-L2VPN实例视图下配置的MTU参数值优先生效。 如果MPLS-L2VPN实例视图下没配MTU,则MTU协商值缺省为1500字节。 |
VPLS |
VSI视图下配置mtu mtu-value命令 |
VSI视图下配置的MTU参数值优先生效。 如果VSI视图下没配MTU,则MTU协商值缺省为1500字节。 |
NE40E产品缺省情况下,VC/PW建立过程中进行MTU协商。如果两端MTU不一致,VC/PW无法建立。但L2VPN MTU仅用于建立VC/PW,不影响报文转发。
缺省情况下,VPLS的MTU缺省值是1500字节,不受接口MTU的变更而变更,因为MTU在VSI视图配置。
部分设备制造商的设备不支持L2VPN的MTU匹配检查。为了和此类厂商设备互通,NE40E产品上支持通过命令行,使设备在建立过程VC/PW忽略MTU匹配检查。