论文部分内容阅读
摘要: 在网络传输中报文的长度超过路径MTU就会被丢弃,导致网络业务受影响,借助于二层网络中常用的ETHOAM检测协议IEEE 802.1ag中的Loopback功能实现一种二层网络中路径MTU发现的方法。
关键词: 路径最大传输单元;Loopback;LBM
中图分类号:TN919. 85 文献标识码:A 文章编号:1671-7597(2011)1110190-01
0 引言
最大传输单元(Maximum Transmission Unit,MTU)是指一种通信协议的某一层上面所能通过的最大数据包大小(以字节为单位)。最大传输单元这个参数通常与通信接口有关(网络接口卡、串口等)。
在网络设备上接口能够处理的MTU一般是可配置的。如果接口收到的报文长度超过接口上的MTU配置,那么报文就会被丢弃,导致网络中业务受到影响。因此网络中端到端设备之间能够发送的最大报文长度实际上就是整个网络路径上所有接口MTU值中最小的那个MTU。那么如何发现网络路径上的MTU呢?对于IP网络来说可以通过ping功能实现路径MTU的发现功能,而对于二层网络来说,怎么实现路径MTU的发现功能呢?
本文借助于二层网络中常用的ETHOAM检测协议IEEE 802.1ag中的LB功能来实现二层网络中路径MTU的发现功能。
1 802.1ag协议Loopback功能简介
802.1ag协议是IEEE工作组提出的以太网OAM协议,用来进行以太网的路径发现、故障检测和故障报告、故障确认、故障定位等。
故障确认(Fault Verification)由MEP或者MEP+MIP通过Loopback协同完成。在检测到故障之后,管理员可能需要手动确认一下错误是否真的存在(防止误报)。MEP朝某个目的地发送Loopback Message(LBM),如果该目的地收到了并且发送回Loopback Reply,说明这一段路径不存在故障。否则,如果源MEP没有收到Reply,则说明真的是有故障存在。故障定位需要MEP和MIP的协同工作,可以使用Loopback功能。假设管理员已经知道了故障路径上有哪些MIP存在,它可以朝这些MIP一个一个的发送LBM,如果发到A的LBM能有LBR回来而发到B的没有,则说明A跟B之间出了问题。
2 二层网络中的路径MTU检测
2.1 实现原理。Loopback功能本来是进行故障确认时用的,对于二层网络如果明确知道网络中的一条路径,那么在该路径的两个终端配置上MEP,如果路径是联通的,那么MEP就检测不到故障,此时从一个终端端点发起Loopback报文(LBM报文),对端端点必定能够收到该报文。对端端点收到LBM报文后就会回应一个LBR报文。发起端端点收到LBR报文后会显示Loopback功能正常。
图1二层网络MTU配置示意图
从这一点我们受到启示:如果在整个二层网络的边缘节点的端口上配置一对MEP,那么整个二层网络就可以看成是一个维护域(MD)。此时从维护域的一端发起的Loopback功能,那么LBM和LBR会穿越整个二层网络。进一步设想,在二层网络本身是联通的前提下,如果LBM报文能够顺利穿过网络中所有端口到达对端,那么说明该LBM报文经过的二层网络上所有端口的MTU起码不小于该LBM报文长度;如果LBM报文不能到达对端,那么说明该LBM报文经过的所有端口中有一个端口上的配置MTU小于该LBM报文长度。因此该二层网络边缘两个端口间的路径MTU就是上一次Loopback功能发起的LBM报文的长度。
2.2实现方法。一般情况发起Loopback功能时,LBM报文的长度是比较小的,此时LBM报文中仅包含一些必须的字段(正常的二层头、Common CFM Header、Loopback Transaction Identifier等),根据用户的配置可能还会包含一些可选的TLV字段(Sender ID TLV、Organization-Specific TLV等)。但是这些必选字段和可选字段加起来报文长度也是比较小的,这没办法完成二层网络中路径MTU的发现。为了解决LBM报文长度小的问题,可以借助IEEE 802.1ag中定义的一个可选TLV:DataTlv。该TLV是提供给用户自己定义的一个TLV。TLV类型是3,长度是用户自己定义,值也是用户自己定义。该TLV最大长度为65535字节。考虑到网络中实际应用情况,网络中端口MTU一般不会超过8192字节长度,因此使用发起LBM报文时可以对LBM报文长度限制在8192字节之内。对于LBM报文,如果填充完必填字段后,报文长度还没有达到LBM报文的指定长度,那么就在LBM报文中加上DataTlv字段,该TLV的Value值全部填0。
如果用户在发起802.1ag ping报文时利用Data TLV来扩充报文长度,这样在二层网络中能够通过Ping的报文来发现网络中的路径MTU。具体步骤是这样的:1)先确定二层网络的边缘端口(也就是二层网络中边缘设备上的端口),通过两个边缘端口,可以确定一条穿越整个二层网络的路径。2)把两个边缘端口划到同一个维护域内,且两个边缘端口是该维护域内的MEP。3)确保两个MEP之间的路径是联通的,且两个MEP上的设备互相学到对端MEP端口上的MAC地址。4)从一个MEP发起ping报文(LBM报文),报文长度为指定值(一般是一个较小的值)。5)如果能够ping通,说明网络中的路径MTU不小于当前LBM报文的长度,则LBM长度加1,继续发起ping报文,直到ping不通为止。那么最近一次ping通的LBM报文长度就是该二层网络两个MEP端口之间路径的路径MTU。6)如果ping不通,说明网络中的路径MTU大于当前LBM报文的长度,则LBM长度减1,继续发起ping报文直到ping通。则第一次ping通的LBM报文长度就是该二层网络两个MEP端口之间路径的路径MTU。如果一直遍历到LBM长度为最小值还没有ping通,则需要检查2、3步的条件是否满足。一般ping最小包都ping不通,则说明两个MEP之间流量是不通的。
3 结论
实践证明,利用本文提出的方法可以正确检测二层网络中的路径MTU。
参考文献:
[1]IEEE 802.1ag-2007.
[2]ITU-T Y.1731.
[3]孟选军、汤小春,PMTU探测算法分析与研究[J].科学技术与工程,2009(12).
作者简介:
马秀芳(1981-),南京信息职业技术学院计算机与软件学院。
关键词: 路径最大传输单元;Loopback;LBM
中图分类号:TN919. 85 文献标识码:A 文章编号:1671-7597(2011)1110190-01
0 引言
最大传输单元(Maximum Transmission Unit,MTU)是指一种通信协议的某一层上面所能通过的最大数据包大小(以字节为单位)。最大传输单元这个参数通常与通信接口有关(网络接口卡、串口等)。
在网络设备上接口能够处理的MTU一般是可配置的。如果接口收到的报文长度超过接口上的MTU配置,那么报文就会被丢弃,导致网络中业务受到影响。因此网络中端到端设备之间能够发送的最大报文长度实际上就是整个网络路径上所有接口MTU值中最小的那个MTU。那么如何发现网络路径上的MTU呢?对于IP网络来说可以通过ping功能实现路径MTU的发现功能,而对于二层网络来说,怎么实现路径MTU的发现功能呢?
本文借助于二层网络中常用的ETHOAM检测协议IEEE 802.1ag中的LB功能来实现二层网络中路径MTU的发现功能。
1 802.1ag协议Loopback功能简介
802.1ag协议是IEEE工作组提出的以太网OAM协议,用来进行以太网的路径发现、故障检测和故障报告、故障确认、故障定位等。
故障确认(Fault Verification)由MEP或者MEP+MIP通过Loopback协同完成。在检测到故障之后,管理员可能需要手动确认一下错误是否真的存在(防止误报)。MEP朝某个目的地发送Loopback Message(LBM),如果该目的地收到了并且发送回Loopback Reply,说明这一段路径不存在故障。否则,如果源MEP没有收到Reply,则说明真的是有故障存在。故障定位需要MEP和MIP的协同工作,可以使用Loopback功能。假设管理员已经知道了故障路径上有哪些MIP存在,它可以朝这些MIP一个一个的发送LBM,如果发到A的LBM能有LBR回来而发到B的没有,则说明A跟B之间出了问题。
2 二层网络中的路径MTU检测
2.1 实现原理。Loopback功能本来是进行故障确认时用的,对于二层网络如果明确知道网络中的一条路径,那么在该路径的两个终端配置上MEP,如果路径是联通的,那么MEP就检测不到故障,此时从一个终端端点发起Loopback报文(LBM报文),对端端点必定能够收到该报文。对端端点收到LBM报文后就会回应一个LBR报文。发起端端点收到LBR报文后会显示Loopback功能正常。
图1二层网络MTU配置示意图
从这一点我们受到启示:如果在整个二层网络的边缘节点的端口上配置一对MEP,那么整个二层网络就可以看成是一个维护域(MD)。此时从维护域的一端发起的Loopback功能,那么LBM和LBR会穿越整个二层网络。进一步设想,在二层网络本身是联通的前提下,如果LBM报文能够顺利穿过网络中所有端口到达对端,那么说明该LBM报文经过的二层网络上所有端口的MTU起码不小于该LBM报文长度;如果LBM报文不能到达对端,那么说明该LBM报文经过的所有端口中有一个端口上的配置MTU小于该LBM报文长度。因此该二层网络边缘两个端口间的路径MTU就是上一次Loopback功能发起的LBM报文的长度。
2.2实现方法。一般情况发起Loopback功能时,LBM报文的长度是比较小的,此时LBM报文中仅包含一些必须的字段(正常的二层头、Common CFM Header、Loopback Transaction Identifier等),根据用户的配置可能还会包含一些可选的TLV字段(Sender ID TLV、Organization-Specific TLV等)。但是这些必选字段和可选字段加起来报文长度也是比较小的,这没办法完成二层网络中路径MTU的发现。为了解决LBM报文长度小的问题,可以借助IEEE 802.1ag中定义的一个可选TLV:DataTlv。该TLV是提供给用户自己定义的一个TLV。TLV类型是3,长度是用户自己定义,值也是用户自己定义。该TLV最大长度为65535字节。考虑到网络中实际应用情况,网络中端口MTU一般不会超过8192字节长度,因此使用发起LBM报文时可以对LBM报文长度限制在8192字节之内。对于LBM报文,如果填充完必填字段后,报文长度还没有达到LBM报文的指定长度,那么就在LBM报文中加上DataTlv字段,该TLV的Value值全部填0。
如果用户在发起802.1ag ping报文时利用Data TLV来扩充报文长度,这样在二层网络中能够通过Ping的报文来发现网络中的路径MTU。具体步骤是这样的:1)先确定二层网络的边缘端口(也就是二层网络中边缘设备上的端口),通过两个边缘端口,可以确定一条穿越整个二层网络的路径。2)把两个边缘端口划到同一个维护域内,且两个边缘端口是该维护域内的MEP。3)确保两个MEP之间的路径是联通的,且两个MEP上的设备互相学到对端MEP端口上的MAC地址。4)从一个MEP发起ping报文(LBM报文),报文长度为指定值(一般是一个较小的值)。5)如果能够ping通,说明网络中的路径MTU不小于当前LBM报文的长度,则LBM长度加1,继续发起ping报文,直到ping不通为止。那么最近一次ping通的LBM报文长度就是该二层网络两个MEP端口之间路径的路径MTU。6)如果ping不通,说明网络中的路径MTU大于当前LBM报文的长度,则LBM长度减1,继续发起ping报文直到ping通。则第一次ping通的LBM报文长度就是该二层网络两个MEP端口之间路径的路径MTU。如果一直遍历到LBM长度为最小值还没有ping通,则需要检查2、3步的条件是否满足。一般ping最小包都ping不通,则说明两个MEP之间流量是不通的。
3 结论
实践证明,利用本文提出的方法可以正确检测二层网络中的路径MTU。
参考文献:
[1]IEEE 802.1ag-2007.
[2]ITU-T Y.1731.
[3]孟选军、汤小春,PMTU探测算法分析与研究[J].科学技术与工程,2009(12).
作者简介:
马秀芳(1981-),南京信息职业技术学院计算机与软件学院。