1. Current Location: Home >  Router Encyclopedia >  巨型帧是什么意思?万兆内网的隐藏开关,我开完实测:千兆只快六个点

巨型帧是什么意思?万兆内网的隐藏开关,我开完实测:千兆只快六个点

巨型帧MTU9000与标准帧1500对比、全链路三处设置与ping测试命令

上回折腾SMB多通道,两根网口绑一块,SSD对拷卡在208MB/s,我说N100的软中断快摸到天花板了。评论区有人支招:开巨型帧。我当时愣了一下——MTU不是不能超过1500吗?MTU那篇我还专门写过「改大是死路」。后来才想明白:那句话说的是出门的路,巨型帧管的是院里的事。这周我把家里内网翻出来试了一遍,有收获也有教训,掰开讲讲。

巨型帧是什么:同一辆车,车厢从1500加到9000

先复习一句:MTU 1500是以太网几十年的老规矩,一趟最多装1500字节的货。巨型帧(Jumbo Frame)就是把车厢放大,一趟装9000字节上下——注意是「上下」,不是个精确数:Intel的网卡给的是9014,Realtek标9K,有的给9214,各家把帧头算不算进去的口径不一样。别纠结数字对不上,取链路里最小的那个当全队上限就行。

放大车厢图什么?每跑一趟车,不管拉1500还是拉9000,固定的开销都是38字节左右:帧头14、校验4、前导码8、帧间隙12。拉1500时账面线速效率97.5%,拉9000是99.6%——就差两个百分点。换个比喻:三辆小车并成一辆大卡车跑一趟,货一样多,司机少雇两个,过路费也只交一回。所以巨型帧的真本事不在「跑得更快」,在别处。

真正的收益:让CPU少接六分之五的门

算一笔帧数账。千兆线速跑满每秒125MB,加上每帧38字节开销,按1500一帧算是每秒81,274帧;换成9000字节,每秒13,830帧。网卡每收一帧就得打断CPU一次(中断),再DMA搬一次数据。同样跑满千兆,CPU从每秒接八万次门降到一万四千次,中断负担砍到六分之一——路由器CPU那篇里说的软中断,就是这个东西。

千兆下这笔账看不出多大差别,瓶颈多半在别处。到万兆就吓人了:1500字节跑满是每秒81万帧,一般的CPU光处理中断就够呛;换9000字节是每秒14万帧,一下从容很多。所以玩万兆的人言必称巨型帧——它不是提速开关,是给CPU减负的开关。

这个减负在系统里能看到。群晖或Linux的SSH里敲top,按数字1把每个核的单列展开,si那一栏就是软中断占用。我家N100跑208MB/s对拷的时候,四个核的si加起来已经三成上下;开了巨型帧再跑同样任务,si掉到一成出头。速度只涨六个点,CPU的喘气空间倒是实打实宽了——你要是还有Docker容器、监控录像在后台跑,这笔账比速度账值钱。

我实测:三处都得开,漏一处网就悄悄丢包

兴冲冲先在书房台式机上开:设备管理器→网络适配器→网卡属性→高级→巨型帧,选了9014字节。然后拷文件——传到一半卡死,连共享文件夹都刷不出来。ping NAS是通的,可就是传不动。

这就是巨型帧最阴的坑:全链路一票否决。我家的链路是台式机网卡→8口傻瓜交换机(拓扑那篇里那台)→NAS,三处只要有一处不认9000的大包,帧就在那台设备上被静默丢弃——注意是「静默」,不报错、不分片、直接扔。小包照走,所以ping照样通,ARP也正常,一传大文件就死。后来我把NAS那头也改了:群晖在控制面板→网络→网络接口→选中接口→编辑→手动设置MTU改成9000;飞牛在网络设置里找MTU字样,SSH里一行ip link set dev 网卡名 mtu 9000也行。Windows那头改完别急着测,最好把网卡禁用再启用一次(或干脆重启),有的大网卡改完不重启不生效,你会误判成「开了没用」。

交换机这环最容易含糊。管理型的在后台有「巨型帧」或「最大帧」的设置页,勾上就行;傻瓜机分两派——有的默默转发大包,有的默默丢弃,参数页还未必写,没有统一答案,所以「实测定生死」是唯一靠谱的办法。我那台8口傻瓜机插上实测能转发9000,算运气好。家用路由器自带的几个LAN口也是参差不齐,参数页很少提这茬,规划链路时尽量别把路由器算进大车的必经之路,让交换机去伺候有线那一圈。

配置MTU 1500MTU 9000涨幅
千兆单口110MB/s116MB/s五个多点
双网口多通道208MB/s221MB/s六个点

千兆内网折腾半天,就快了六个点。原因也直白:千兆的瓶颈在网口本身,CPU省出来的余量用不上。巨型帧的主场在万兆——万兆那篇算过账,机械盘撑死两三百MB/s,全闪阵列才喂得饱万兆口,那时候CPU就是真瓶颈,巨型帧才值回票价。

一行命令,测你的路放不放得下大车

别猜,测。Linux和群晖SSH里敲:

ping -M do -s 8972 192.168.31.10

-M do是「禁止分片」,8972等于9000减去IP头的20和ICMP头的8,跟MTU那篇测1492是同一套思路,只不过那回往下探,这回往上探。回显正常通,这条路就认大车;显示Message too long或者不通,链路上就有一处卡在1500。Windows对应的是ping -f -l 8972 目标IP。

我在测试机上还看了个边界:网卡MTU 1500时,1472字节发得出去,1473字节内核直接拒收「Message too long」——大门就这么高,多一厘米都不放行,内核连发都不给你发。这跟半路被交换机静默扔还不一样,一个是门卫拦下,一个是货到了没人签收,排查时得分清。

再送个冷知识:敲ip link看lo那行,回环口127.0.0.1的MTU天生是65536。你天天ping的本机,其实一直在跑「巨帧」,只是没人在意。

两种路,别让巨型帧掺和

一种是无线。WiFi压根没有巨型帧这回事:802.11的帧结构和聚合方式跟以太网两码事,无线网卡的驱动里也找不到Jumbo Frame这个选项,AP把有线无线桥起来时还会把大包拆开重装,白忙活。所以这开关只对有线内网有意义。好在混着用不至于出乱子:TCP连接建立时两头会互相报自己能收多大的段,按小的那个来,9000的NAS跟1500的手机说话自动回落小包,不会一开巨帧无线设备全断。真正会断的,是有线这一段里有一处没开齐。

另一种是出门的路。9000的大包要出互联网,路由器得拆成六个1500再发——拆包本身就是额外开销,何况PPPoE那头还欠着8字节,1492才是出门的规矩,MTU那篇整篇讲的就是这个。正确的理解是:巨型帧是院内的事,出了门自动按院外的规矩来,路由器替你拆,不用你操心,但也别指望它省事。

顺带一提,家里要是有跑iSCSI的(把NAS的盘当本地盘挂电脑上),那是我见过最该开巨型帧的场景——块存储对延迟和CPU都敏感,iSCSI那篇说的「只在局域网玩」的边界,正好跟巨型帧的辖区完全重合。

什么人该开,一张表说清

家里的情况要不要开
万兆/2.5G内网+全闪NAS,天天搬大文件闭眼开,CPU减负看得见
跑iSCSI或虚拟化存储开,跟块存储是绝配
千兆内网,NAS是机械盘别折腾,六个点都难凑出来
设备在WiFi上,或主要为了上网提速没戏,无线和出门的路都不归它管

收尾给个顺序:先确认内网全是有线、设备都支持,再从一端开始开,开一处就用8972的ping探一遍,三处全绿再传大文件验证。要是开了反而出怪病,第一嫌疑永远是「有一处没开齐」——先把MTU全改回1500看毛病走不走,再挨个排。我家那台傻瓜交换机参数页压根没写支持,是实测才敢用的,换机器时记得重验这一条,别像我一样默认它能行。

Read More


Copyright Notice Scan to read on mobile
All Rights Reserved: 《SHUNOT》 => 《巨型帧是什么意思?万兆内网的隐藏开关,我开完实测:千兆只快六个点》
Article URL: https://www.shunot.com/en/lybk/1283.html
Unless otherwise stated, all articles are original by 《SHUNOT》. Reposting is welcome! Please indicate the original URL when reposting, thank you.

Contact Us

Online Consultation: Click here to send me a message

WeChat ID: master_135

Scan to follow