微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 硬件工程师文库 > MTU原理及相关问题分析

MTU原理及相关问题分析

时间:11-02 来源:本站整理 点击:

标志(Flags):第一个bit称为R位,目前保留未用。第二个bit称为DF位,Don't Fragment,"不分片"位,即如果将这一比特置1 ,表示上层应用不允许分片,IP层将不对数据报进行分片。第三个bit称为MF位,More Fragment,"更多的片"。除了最后一个数据分片外,其他每个组成数据报的数据分片都要把该比特置1,表示有更多的分片。

  偏移量(Framentation offset):13位的偏移量字段用来表示分段的数据报在整个数据流中的位置,即相当于分片数据报的顺序号。发送主机对第一个数据报的偏移量置为0,而后续的分片数据报的偏移量则以网络的MTU大小赋值。偏移量对于接收方进行数据重组的时候,这是一个唯一依据。对于分片的数据段(单位:字节)必须为8的整数倍,否则IP无法表达其偏移量。

  了解了数据分片的几个关键字段后,我们找一个实例说明分片过程(从网上摘录):

  在MTU为1500的以太网中,源主机如果需要通过UDP传送3000字节的数据到目的主机,这时的分段情况如下所示(假定在同一网段):

  

  此处需要注意的是对于分片1的报头,相对于其他两个分片的报头要多8个字节UDP协议报头的开销。因此,在计算实际传输的数据净载荷时,分片1要多减去8字节UDP报头。最后,接收主机通过包ID、标识位、偏移量值将数据重组成完整的数据。

  需要注意是,有些数据包在一次分片后,由于遇到更小MTU的网络,还可能被继续分片。为数据包分片和为数据包再次分片的区别在于网关处理MF位的不同。在一个网关为原来未分片的数据包分片时,除了末尾的数据包片,它将其余所有分片上的MF位置为1,最后一片为0。然而,当网关为一个非末尾的数据包片再次分片时,它会把生成的所有子分片中的MF位全部调为1,因为所有这些子分片都不可能是整个数据包末尾的数据包。分片中标志字段的M值取决于该分片是否是原始分组的最后一片,而片偏移量也是相对于原始分组的偏移量。

  三、MTU对上层应用的影响:

  1、TCP、UDP等上层应用传输效率的高低与PMTU有密切联系。

  对TCP来讲,其传输效率与MSS的合适大小密切相关,而MTU是决定MSS大小的唯一因素。MSS的大小会在TCP连接建立阶段进行协商,具体协商过程如下:

  TCP client发出SYN报文,其中option选项填充的MSS字段一般为(MTU-IP头大小-TCP头大小),同样TCP server收到SYN报文后,会发送SYN+ACK报文应答,option选项填充的mss字段也为(MTU-IP头大小-TCP头大小);协商双方会比较SYN和SYN+ACK报文中MSS字段大小,选择较小的MSS作为发送TCP分片的大小。

  理论上,如果MSS与合适的MTU即PMTU(我认为合适的PMTU为路径上可不分片通过的最大MTU)匹配,TCP传输效率最高,因为免去了分片、重组等工作。但由于PMTU发现过程无法保证,导致最终发现的MTU可能并不合适路径传输,造成部分应用的分片和重组,降低了传输效率。

  2、部分网络设备对特定应用的分片报文处理能力弱,造成部分应用故障。

  目前,国内宽带IP网络多数用户采用PPPOE拨号方式实现业务接入。位于电信运营商内侧的BAS设备用于终结PPP连接,实现用户接入汇聚。实际应用中,部分BAS设备对VPDN等特定应用的分片、重组机制不健全,造成部分基于VPDN方式的业务速度缓慢。如:笔者曾发现过某厂商BAS设备ME60当TSU板未启用时,其于L2TP隧道的VPDN拨号应用,经常出现业务访问缓慢,甚至不通的情况,当启用TSU板后,业务恢复正常(经了解,TSU板是专门用于基于隧道或其它协议数据包分片处理功能)。某厂商设备SE800,承载了基于L2TP隧道的VPDN拨号应用后,部分应用可以使用,部分应用无法正常运行。

  3、部分网络安全设备对分片的重组过程进一步影响业务应用。

  原则上,当某个网络应用业务在传输过程中发生分片后,只有发送端和接收端会进行分片的重组,这已经影响到业务运行速度。当分过片的IP包经过网络监测设备、安全系统等设备时,基于安全和其它特定目的,有些设备要求完成数据包的分片和重组,会进一步延缓应用的运行速度,甚至导致部分应用无法使用。

   四、MTU常见问题小结(摘录自网络):

  1、为何有些共享上网的路由器的网络设备以太网口MTU值不是1500?

  有些通过共享路由器PPPOE拨号上网的路由器上连口(与ADSL调制器互联的以太网口)MTU为1492,因为PPP报文占据了8个字节,导致承载数据信息的IP报文大小变成了1492。

  2、为什么在思科路由器上GRE接口的默认MTU为1476?

  因为GRE会重新封装一个IP包头,以及加上GRE的4字节头部,一共是24个字节。这样总的用于应用的IP包的长度为1476。

3、为什

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top