民航福建空管分局
引言
当今IP技术已成为最主流的通信传输技术,基于IP技术的传输设备已覆盖整个工业界。而采用IP技术组建传输网,从而进行空管相关业务的传输,也已经是国内外民航单位的主流。MTU(最大传输单元)是指IP网络设备默认情况下允许传输的最大数据包长度,在实际组网当中,往往会遇到因为MTU参数选取不合理,导致业务出现不正常情况,且这类故障通常隐蔽性较强,排查周期一般较长,故希望通过对于MTU的了解和分析,以提高技术人员网络运维能力。
关键词:报文结构,MTU,字节
一、IP网络中MTU参数定义及作用
1.以太网数据报文结构
日常网络传输中,标准的二层以太网数据报文封装结构,如下表1所示,包含了该数据帧的目的MAC地址(6字节)、源MAC地址(6字节)、802.1Q标签(4字节,可选)、以太帧类型(2字节)、负载(IP报文,46-1500字节)、CRC校验(4字节),报文总长度一般在64-1522字节之间。
目标MAC地址 | 源MAC地址 | 802.1Q标签 (可选) | 以太帧 类型 | 负载(IP报文) | CRC校验 |
6 字节 | 6 字节 | 4 字节 | 2 字节 | 46-1500 字节 | 4 字节 |
表1 以太网报文结构
2.IP报文结构
IP报文格式,包含了各类IP封装信息(IP报文头)和数据负载,其中IP报头一般固定为20字节,其余为数据负载。
结合表1以太网报文结构,我们可以将二层数据报文的结构,转化成表2的形式。
目标MAC地址 | 源MAC地址 | 802.1Q标签 (可选) | 以太帧类型 | IP报头+负载 | CRC校验 | |
6 字节 | 6 字节 | 4 字节 | 2 字节 | 20字节 | 26-1480 字节 | 4 字节 |
表2 以太网数据报文结构(IP报文分解)
3.特殊IP报文结构(GRE隧道)
实际网络运行中,除了上文所述的常规IP数据报文外,在某些特定情况下,IP报文的封装结构也会根据实际需求,产生一定的变化,以GRE(Generic Routing Encapsulation,通用路由封装协议)隧道为例,当IP网络中使用了GRE封装(GRE报头一般为4字节)后,数据报文结构如下表3所示,相较于常规的IP报文,使用了GRE封装的报文,会多一层IP报头、一层GRE报头。
目标MAC地址 | 源MAC地址 | 802.1Q标签 (可选) | 以太帧 类型 | IP报头 | GRE报头 | IP报头+负载 | CRC校验 | |
6 字节 | 6 字节 | 4 字节 | 2 字节 | 20字节 | 4字节 | 20字节 | 26-1480字节 | 4 字节 |
表3 使用了GRE的以太网数据报文结构
4.MPLS报文结构
MPLS网络基于标签(Label)进行转发,其标签封装在链路层和网络层之间,常见的MPLS网络中,数据包在传输中通常会封装2层的MPLS标签(单层4字节),再结合上文内容,采用了MPLS网络传输的以太网数据报文结构,如表4所示。
目标MAC地址 | 源MAC地址 | 802.1Q标签 (可选) | 以太帧类型 | MPLS标签 (2层) | IP报头+负载 | CRC校验 | |
6 字节 | 6 字节 | 4 字节 | 2 字节 | 8字节 | 20字节 | 26-1480 字节 | 4 字节 |
表4 以太网数据报文结构(包含MPLS标签)
5.不同网络层级的MTU定义
第1章
第2章
2.1
2.2
2.3
2.4
2.5
(1)IP MTU
IP MTU表示网络层的最大传输单元,通俗来说是指一类通信协议在某一层上所能通过的最大数据包大小(以字节为单位),一般用于网络层设备上,例如路由器、防火墙等。按照国际惯例,IP MTU的默认取值一般为1500字节,以华为NE20E路由器设备为例,该设备的接口默认MTU,指的是网络层的IP MTU,默认参数1500。
图1 华为NE20E设备MTU定义
不过此参数的定义并非为强制标准,故不同厂商的产品,对于设备MTU的定义可能存在一定的差异。
(2)二层MTU
对于普通IP网络来说,二层MTU=二层数据封装(18-22字节)+IP MTU,通常情况下,1518(18+1500)字节的二层MTU,可以满足普通IP网的应用需求。
对于MPLS网络来说,二层MTU=二层数据封装(18-22字节)+MPLS封装(8字节)+IP MTU,以华为设备为例,在MPLS网络环境下的默认MTU设置,至少需要1526(18+8+1500)字节,才能满足正常的网络传输需求。
(3)PMTU(路径MTU)
我们通常把一条IP路径上(往返方向) 的最小MTU称为PMTU,以下图2为例,PC—>Server方向的最小MTU为1500,Server—>PC方向的最小MTU为1460,故可以得出结论,PC与Server间的路径MTU为1460。
图2 PMTU实例
6.MTU的作用
从上文中可以看出,在传输开销相对固定的情况下,单个数据包的实际负载越高,单位时间内可以传送的数据量就越大,传输效率也就越高,这就是MTU参数存在的意义,从这个角度分析,理论情况下,PMTU为9600的网络,传输效率一定会高于PMTU为1500的网络,但在实际运行环境中,往往会因为各种客观因素如硬件配置、软件、无线网络端口等原因,制约了整个网络PMTU参数。
二、MTU参数设置产生的问题
1.不同厂商的设备在对接时,MTU出现兼容性问题
由思科交换机组成的MPLS VPN网络中,核心层增加1台华为交换机后,出现核心层到异地接入层链路中断,以及MPLS VPN业务全部中断的情况。
首先确认新增的华为交换机,与思科交换机一样,都具备完整的MPLS VPN功能;其次将华为交换机至接入层的中继接口MTU手工降至1400字节(此时华为交换机在MPLS网中的PMTU长度由默认的1526字节降低至1426字节)后,该网络传输正常。
初步判断可能是MPLS VPN接入网所租用的运营商线路MTU参数配置无法满足华为设备在MPLS网络环境下的PMTU需求所致,经过了解确认运营商提供的二层链路,默认MTU参数为1522字节,造成整个MPLS网络的PMTU被限制在1522字节,因此不能满足华为设备默认的1526字节的要求。而思科设备之所以可以在网络PMTU为1522的环境下正常使用MPLS VPN功能,是因为该批思科设备的端口MTU定义默认值1500,指的是二层MTU,也就是说思科设备实际的IP MTU为1500-18(二层封装)=1486字节,即便加上了MPLS封装,也不会超过网络PMTU的数值。
2.数字业务割接到新网络后,出现偶尔中断
某数字业务从ATM数据网割接至IP承载网后,大致上三至四天就会发生一次中断。
由于ATM数据网基于二层链路,且业务传输是在链路两侧的用户设备之间,利用了GRE协议搭建通信隧道。而该业务从ATM数据网迁移至IP承载网后,传输通道从过去的ATM二层链路,转换成了三层传输网络,用户单位在变更了相关用户侧配置,转换传输链路层级的同时,保留了过去使用的GRE隧道。
通过抓取的数据包进行分析,发现该数字业务在正常传输时,用户服务器在IP层面上,所发送的单个数据报文的负载长度,均未超过1436字节,但该数字业务的用户服务器上,做了不允许响应包分片的设置,因此在故障发生时,用户服务器发送出带有不可分片属性的数据报文,且服务器上发送的数据报文长度大于传输链路的IP MTU,按通信规则该数据报文被网络设备丢弃,因此该业务的故障原因是由于用户侧在发送数据报文时,使用了特殊封装且不允许网络设备对数据报文进行分片传输,造成部分数据报文被网络设备丢弃。最终通过用户单位取消该业务的GRE封装后,业务状态恢复正常。
三、结论及建议
运维人员要了解MTU问题的易发场景,如新增设备、新开中继链路、运营商电路割接、新旧网络更新换代、业务系统设备变更、复杂的组网环境等。
运维人员要掌握MTU问题的排查思路和方法,如检测电路全程MTU值,使用TX300等测试仪表检测电路传输质量,在发端利用wireshark等软件抓包分析等。
在实际生产环境中,对于新建网络、新开通业务链路,运维保障单位均需将MTU参数测试重视程度同新电路传输质量测试对等,形成规范,将MTU、PMTU参数测试、验证作为网络中继及业务电路开通的必需工作步骤。