网络最大传输单元MTU(Maximum Transmission Unit)是指在特定网络协议下,通过网络能够传输的最大数据包大小。在网络传输中,当遇到大包传输效率低或频繁发生分片重组问题的场景时,可能需要调整MTU以确保数据包能更高效、无损地通过网络中的路由器和链路层限制,从而提升网络传输速度和稳定性。
根据不同的网络层和应用场景,MTU有几种不同的分类,包括: 链路层MTU 链路层能够传输的最大数据载荷(Payload)的大小。在以太网中,MTU通常为1500字节,不包含以太网头部。标准以太网帧大小 (1518字节)= 目的MAC地址(6字节) + 源MAC地址(6字节) + 类型/长度字段(2字节) + 数据载荷(1500字节) + 帧校验序列(4字节)。 IP MTU 网络层可以处理的最大数据包的大小,包括IP头部和数据负载,不包括以太网帧的头部和尾部。在阿里云环境中,当我们提到MTU,通常指的是IP MTU。 如果考虑到IP头部和TCP头部的最小尺寸(可能会因为选项的存在而更长),IP MTU (1500字节)= IP头部(20字节)+ TCP头部(20字节)+ 数据载荷(1460字节)。 巨型帧MTU 巨型帧(Jumbo Frames)是一些厂商提出的概念,它将标准以太网帧的大小扩展到了9K字节。巨型帧包括二层以太帧头及CRC部分,而IP MTU通常不包括这些部分。合理使用巨型帧可以减少网络中数据包的数量,提高网络效率。阿里云支持8500字节的巨型帧,详细信息,请参见巨型帧(Jumbo Frames)。 路径最大传输单元PMTU 路径最大传输单元PMTU(Path Maximum Transmission Unit)是指在两个网络节点之间,不包括分片的情况下,能够传输的最大数据包大小。这个路径包括了从源节点到目的节点之间的所有网络设备和链路,如路由器、交换机和通信链路。 路径最大传输单元发现PMTUD(Path MTU Discovery)是一种TCP/IP协议栈功能,用于动态发现路径上允许的最大传输单元PMTU,以避免数据包在传输过程中被分片。详细信息,请参见路径MTU发现机制(PMTUD)。 MTU的大小可以由多种因素决定,包括: 网络设备:不同网络设备如路由器、交换机在设计时会规定其支持的最大的MTU值,这是由硬件能力决定的。如果网络中的某个设备的MTU小于其他设备,那么整个网络通信过程中的MTU大小将被该设备所限制。 网络类型:不同类型的网络连接,如以太网、无线网络等,对MTU的要求也不尽相同。例如,无线网络的MTU往往较小,因为无线信号传输的稳定性相对较差,较大的MTU容易导致数据包的丢失和重传。 传输介质:不同类型的网络介质(如双绞线、光纤、无线等)可能有不同的MTU限制。 网络协议:不同的网络协议可能会对MTU有不同的要求,例如,以太网的标准MTU大小是1500字节。 应用需求:某些特定应用可能对MTU有特殊要求,这也会间接影响整体网络的MTU。 正确地设置MTU对于网络通信的性能和效率至关重要,通常体现在: 分片与重组 当一个数据包从一个网络传到另一个具有不同MTU值的网络时,如果原始数据包的大小超过目的网络的MTU限制,数据包就需要被分割成多个小的数据包(分片)。这些分片在到达目的地后需要重新组装起来(重组)。这个过程会增加网络延迟,降低传输效率,并可能增加网络设备的处理负担,因为分片和重组都需要额外的计算资源。 传输效率降低 由于分片和重组带来的额外开销,数据包在需要通过MTU较小的链路时,可能会导致整体的网络传输速率下降。此外,分片还可能导致某些协议或应用的性能问题,例如TCP的重传机制可能会因分片丢失而被不当触发,进一步降低效率。 网络拥塞 如果MTU设置得过小,会导致数据被分割为过多的小分片进行传输,增加了网络拥塞的可能性。而较大的MTU可以减少分组的数量,降低了网络的拥塞程度,提高了网络的吞吐量。 为了优化网络性能,通常建议将网络路径中的所有环节的MTU设置为一致,且尽可能地大,但又不超过路径中任何一环节的MTU限制。这样可以减少分片和重组的需求,提高传输效率。对于特定的应用场景,如视频会议、大文件传输等高带宽需求的应用,适当调整MTU大小可以提升传输效率和质量。 MTU限定了网卡一次最多传输数据的字节数。当前所有ECS实例都默认支持1500 MTU(网络接口遵循以太网标准封装和传输数据)。如果您的ECS实例支持并开启了巨型帧(Jumbo Frames),则支持8500的MTU。您可以远程连接实例,通过操作系统命令查看目前网卡的MTU的值。 查看Windows实例的MTU 查看Linux实例的MTU 示例操作系统:Windows Server 2022。 示例实例规格族:ecs.g8i.large。 远程连接ECS实例。 具体操作,请参见通过密码或密钥认证登录Windows实例。 打开命令提示符或Windows PowerShell工具。 执行以下命令,查看当前网络接口的MTU。 开启巨型帧之前 开启巨型帧之后 可以看到主网卡以太网和辅助弹性网卡以太网2的MTU均为默认支持的1500: 作为手动测试方式,您也可以通过 警告 进行此类测试可能会影响网络通信,请在非高峰时段进行。 测试方法:通过发送一个包含“不分片”标志的数据包,并逐渐增加数据包的大小,直到收到“需要分片但设置了不分片标志”的ICMP错误消息,表明前一个大小就是PMTU减去IP头部(20字节)和ICMP头部(8字节)的大小。 测试命令:执行以下命令,测试网络链路上的MTU大小。 命令解释: -c 1:表示只发送一个数据包。 -M do:表示设置DF(Don't Fragment)不分片标志。 -s [包大小]:指定数据包的大小(ICMP的PDU),初始值可以从一个常见的值开始(例如1472)。 说明 ping 使用的是ICMP协议,ICMP的下层协议是IP协议,ICMP头部共8字节,IP头部共20字节,ICMP的IP数据包 = IP头部大小 + ICMP头部大小 + ICMP的PDU,所以 -s 1472 表示整个IP数据包的长度等于20+8+1472 = 1500 字节。 测试示例: 两端主机MTU信息: FROM:172.17.0.127 ,为方便测试对比,启用ECS巨型帧,MTU为8500字节。关于启用巨型帧,请参见开启/关闭巨型帧。 TO:172.17.0.128 MTU为1500。 测试:执行以下命令,尝试发送8472字节的数据包(不包括IP和ICMP头部大小)。 测试结果:收到了一个ICMP错误消息,显示"Frag needed and DF set(mtu=1500)",表示数据包因为超过了MTU(1500字节)而需要分片,但是由于DF标志位被设置,数据包不能被网络路径上的转发设备分片,因此被丢弃。 在阿里云上,一些通信场景或网络产品(例如VPN网关、流量镜像)对ECS发出的数据包大小有着更加严格的要求,需要您主动缩小数据包尺寸,以保证网络连通性或更好的用户体验。您需要修改ECS网络接口的MTU值,以满足这些产品的要求。 警告 在修改MTU之前,请确保了解降低或提高MTU可能对网络性能产生的影响。不恰当的MTU值可能导致某些类型的数据包需要分片,从而影响网络效率。 Linux操作系统的MTU会通过DHCP服务器自动获取,如果您没有主动禁用DHCP或者不是在VPN网关等隧道场景中,一般情况下无需手动修改网卡MTU。 如果您是在巨型帧等特定场景下,请参考相关的最佳实践来解决,而不是手动修改MTU。关于巨型帧,请参见开启/关闭巨型帧。 修改ECS网卡MTU时,注意不要超过ECS实例支持的MTU上限(开启巨型帧时为8500,关闭或不支持巨型帧时为1500),否则可能导致网络不通。 在本示例中,我们演示不同操作系统下手动修改ECS网卡MTU到1399字节。 Windows实例 Linux实例 示例操作系统:Windows Server 2022。 远程连接Windows实例。 具体操作,请参见通过密码或密钥认证登录Windows实例。 打开命令提示符或Windows PowerShell工具。 执行以下命令,查看以太网网卡的MTU。 返回信息如下所示,表示以太网网卡当前的MTU值为1500。 执行以下命令,设置以太网网络接口的MTU为1399,且设置永久生效。 返回“确定”表示命令执行成功。如果返回有错误信息,根据错误信息提示修改即可。 再次查看以太网网卡的MTU,可以看到变更已经生效。 ECS互访链路MTU限制 云网络产品MTU限制 支持巨型帧(Jumbo Frames)的ECS实例作为源主机时,目的主机在不同通信场景下的链路最大MTU限制如下表所示: 目的主机 允许的最大MTU “同VPC内” 或 “同region对等连接的VPC内” 开启巨型帧的ECS实例 8500 “同VPC内” 或 “同region对等连接的VPC内” 未开启巨型帧的ECS实例 1500 “通过CEN实现互通的VPC内”任意ECS实例 “通过高速通道连接的线下IDC内”的主机 “通过EIP、PIP访问”的外部主机 优化MTU的设置可以提高网络效率和性能,减少分片和重组数据包的需求,从而降低网络延迟和提高吞吐量。以下是一些关于MTU设置的最佳实践: 确定合理的MTU: 了解实际网络环境的标准MTU值:以太网默认MTU通常是1500字节。详细信息,请参见MTU的分类。 可以通过ping命令探测PMTU。详细信息,请参见使用ping命令手动探测PMTU。 启用和适配PMTUD:确保操作系统或网络设备支持并启用PMTUD,这样可以通过动态的方式发现和适应网络路径上允许的PMTU,应用程序通过适配感知并响应ICMP消息,对数据包进行处理(缩小数据包长度),避免分片。详细信息,请参见PMTUD工作原理。 考虑网络设备的限制:确保路由器、交换机等网络设备的MTU设置与操作系统的MTU设置一致,以避免数据包在传输过程中被分片或丢弃。 适应特定应用:某些应用程序或协议有其推荐的MTU大小。VoIP、视频会议等实时应用可能从较小的MTU中受益,减少延迟和提高包传输效率。 定期监测网络性能:应定期监视网络性能和MTU大小的变化,以便及时调整以适应网络条件的变化,包括但不限于网络吞吐量测试、延迟测试以及特定应用性能的评估。MTU的分类
影响MTU大小的因素
MTU对网络性能的影响
查看ECS网络接口的MTU
netsh interface ipv4 show subinterfaces
使用ping命令手动探测PMTU
ping
命令,手动探测PMTU。详细方法如下:ping -c 1 -M do -s [包大小] 目标地址
ping -c 1 -M do -s 8472 172.17.0.128
手动修改网络接口的MTU
netsh interface ipv4 show subinterfaces
netsh interface ipv4 set subinterface "以太网" mtu=1399 store=persistent
实际应用中MTU的限制
如何合理设置MTU