说到这里,可能很多人会问:阿里云上提到的“巨型帧”究竟是什么?今天这篇文章,我们就来把这个技术概念彻底讲清楚。
巨型帧,英文名为Jumbo Frames,简单来说,它允许以太网帧携带超过标准1500字节的有效载荷。阿里云目前支持8500字节的巨型帧——换句话说,您一次能发送的“数据包”容量,比常规大了好几倍。
这样做的好处是什么?每个数据包能装载更多内容,全网的数据包数量自然减少,CPU处理网络中断和重组任务的负担也相应降低。整体数据传输速度得到提升,效率也能直观感受到。尤其在数据中心、服务器集群、高速互联等需要大吞吐量的场景中,巨型帧的价值尤为突出。
支持巨型帧的实例规格
目前阿里云上有哪些实例规格支持巨型帧?
通用型家族:g9i、g9a、g9ae、g9h、g8i、g8a、g8ae、g8y、g7、u2a,以及对应的弹性裸金属版本,比如ebmg9i、ebmg9a、ebmg9ae、ebmg8y、ebmg7。
计算型家族:c9i、c9a、c9ae、c8i、c8a、c8ae、c8y、c7,对应的裸金属版包括ebmc9ae、ebmc9i、ebmc8y、ebmc8i、ebmc7。
内存型家族:r9i、r9a、r9ae、r8i、r8a、r8ae、r8y、re8、r7,裸金属版有ebmr9ae、ebmr9i、ebmr8y。
高主频实例:hfg9i、hfc9i、hfr9i、hfr8i。
网络增强实例:g8ine、c8ine、g7nex、c7nex、g7ne。
存储优化实例:i5、i5g、i5ge、g8ise。
GPU与高性能计算实例:gn8v/gn8v-tee、hpc8i。
特别说明:g8i、c8i、r8i、c8ine、g8ine以及9代以上的实例,默认就支持巨型帧,无需额外操作。当然,你也可以通过DescribeInstanceTypes接口的JumboFrameSupport返回值来判断某个规格是否支持巨型帧——返回true就是支持,false就是不支持。
巨型帧对网络性能的影响
巨型帧对性能的提升主要体现在以下几个维度:
提高网络吞吐量:每个数据包能携带的数据量更大,数据包数量减少,吞吐量自然提升。
减少CPU负载:数据包减少,CPU需要处理的中断和重组任务相应减少,系统整体性能更友好。
改善应用网络处理时间:数据包数量减少,意味着网络处理和传输的耗时降低,对高性能计算、大数据传输、存储区域网络等应用尤其有效。
提升大块数据传输效率:像数据库备份、大规模文件传输、视频流媒体等场景,巨型帧带来的效率提升非常明显。
常见使用场景
在云环境中,巨型帧的应用场景主要集中在需要大量数据传输的场景:
数据中心内部通信:大数据分析、数据库同步、分布式计算,这些场景下巨型帧可以大幅提升服务器之间的数据交换效率。
存储区域网络(SAN):SAN连接服务器和存储设备,使用巨型帧能够减少数据传输的耗时和开销,提高备份和恢复速度。
虚拟机迁移:跨物理服务器的虚拟机迁移,巨型帧可以显著缩短迁移时间。
高性能计算(HPC):科学计算、工程模拟这类任务,巨型帧能减少数据传输时间,从而加速计算任务的完成。
视频流与多媒体传输:云服务器处理大量视频内容传输时,巨型帧能提升带宽利用率和传输效率,给用户带来更流畅的体验。
巨型帧和MTU
MTU(最大传输单元)决定了网络单次能传输的数据包最大大小,它包含IP数据包头和载荷,但不含以太网头部。理论上MTU越大,单次传输的数据越多,网络通信就越高效。
巨型帧其实就是MTU概念的一个特例——它允许网络接口把MTU配置得比传统以太网的1500字节大得多。在阿里云上,启用巨型帧时,相应网络接口的MTU通常是8500字节。
使用巨型帧的注意事项
巨型帧虽好,但也不是可以无脑开启。它存在一些潜在问题,需要提前规划和测试:
设备兼容性:网络中的交换机、路由器、网卡等设备必须全部支持相同的巨型帧大小。只要有一个环节不支持,就可能导致数据包被丢弃或分片,反而拖累性能。
协议支持:上层协议(比如TCP/IP)也需要适配巨型帧。例如TCP的MSS(最大段大小)需要做相应调整,避免不必要的数据分片。
非TCP场景的特殊问题:如果使用UDP、ICMP这类连接导向性较弱的协议,没有相应的协议层或应用层优化,巨型帧可能带来的好处有限,甚至因使用不当导致丢包或应用错误。
可能增加延迟:在低带宽链路上,较大的数据包会长时间占用线路,可能影响其他用户的通信,造成延迟。
云产品使用限制:与其他云产品配合使用时,巨型帧受这些产品MTU限制。已知以下场景可能出现问题:非TCP(UDP/ICMP)的巨型帧访问云服务或目标主机使用负载均衡产品时,分片报文可能被负载均衡器正常转发而丢弃,导致网络不通;或者在MTU不匹配的场景下通信,因分片导致性能下降。
开启/关闭巨型帧
阿里云提供了便捷的开启和关闭操作方式。
创建实例时:在创建ECS实例页面,选择支持巨型帧的实例规格后,可以直接选择开启或关闭巨型帧。实例创建成功并正常启动后,配置即可生效。
创建实例后:如果在实例运行期间修改巨型帧配置,或者通过API调用来设置,可能需要重启网络服务或网络接口。对于Windows实例,需要重启整个实例才能生效。
重要提醒:如果你在操作系统内部手动修改了网络接口的MTU(强烈不建议这样做),那么开启或关闭巨型帧后,实例网络接口的MTU仍然会以你在操作系统内设置的为准。
巨型帧使用最佳实践
合理使用巨型帧需要遵循以下几个原则:
评估需求:先判断网络是否真的需要巨型帧。它最适合传输大块数据的应用,比如大数据分析、备份恢复、高性能计算。如果主要跑的是小数据包流量,巨型帧可能没有明显收益。
评估设备和协议支持:确保全链路所有网络设备的MTU设置一致。不一致的配置会导致数据包被错误分片或丢弃。同时,上层协议配置要匹配巨型帧,例如TCP窗口大小需要调整。
测试与验证:在生产环境部署前,务必在隔离的测试环境中做吞吐量、延迟和故障恢复测试,确保巨型帧能带来预期提升且不引入新问题。
一致性配置:整个网络中的设备使用相同的MTU值,保证巨型帧可以无缝传输。
使用阿里云提供的方式操作:建议通过阿里云控制台或API开启、关闭巨型帧,而不是手动修改操作系统的MTU。
监控与调整:部署后持续监控网络性能,留意可能由巨型帧引发的新问题,比如老旧设备无法正确处理巨型帧等情况,根据监控结果适时调整。
常见问题
问题:使用巨型帧进行UDP/ICMP通信时,遇到性能急剧下降,该怎么办?
解决方案:检查数据包分片情况,必要时关闭ECS实例的巨型帧。
问题:ECS实例开启巨型帧后,通过UDP/ICMP协议访问云服务(如OSS、RDS)时网络不通,是什么原因?
原因:当前ECS访问云服务的流量可能经过负载均衡产品,而负载均衡产品不支持分片报文的转发,导致不通。
解决方案:缩小ECS访问云服务的消息大小,确保数据包不分片且尺寸不超过1500字节。

