共计 1426 个字符,预计需要花费 4 分钟才能阅读完成。
Jumbo frames 是指比标准 Ethernet Frames 长的 frame,即比 1518/1522 bit 大的 frames,Jumbo frame 的大小是每个设备厂商规定的,不属于 IEEE 标准;Jumbo frame 在 full-duplex 的 Ethernet 网络上运行;Jumbo frame 定义了一个“link negotiation”协议,来和对端的设备协商,是否对端设备支持使用 Jumbo frames;标准的以太网 IP 报文大小是:1500 bit,不包含以太网头和 FCS 的 18 bit(6+6+2+4),如果包含以太网头和 FCS,则为 1518 bit;Jumbo frame 一般指的是二层封装三层 IP 报文的值大于 9000bit 的报文。
Jumbo frames 的提出背景:在 1998 年,Alteon Networks 公司提出把 Data Link Layer 最大能传输的数据从 1500 bit 增加到 9000 bit,这个提议虽然没有得到 IEEE 802.3 Working Group 的同意,但是大多数设备厂商都已经支持。
在数据传输时,由于 IEEE 的规定最大的帧规定为 1,500 比特(主机在早期的半双功网络中),所以需要数传输需要经过 数据的切要 --- 传输 ---数据组合 的过程。而使用的最大帧越小,传输包的量就越大,计算量相应会多,而产生的后果是:
a:增加主机的计算量,消耗 CPU 资源;
b:影响网络传输的速度。
而使用大帧优点自然也不言而喻 ———— 降低 CPU 计算量、加快数据传输。
上面啰嗦了一大堆,修改帧大小实际需要的操作就是修改 MTU(Maximum Transmission Unit)值,即修改最大传输单元。修改方法如下:
ifconfig ${Interface} mtu ${SIZE} up
ifconfig eth1 mtu 9000 up
这个是最通用的方法,对所有的 linux 发行版本都有效。缺点就是重启后失效,需要在开机项中加载。
CentOS / RHEL / Fedora Linux 下
# vi /etc/sysconfig/network-scripts/ifcfg-eth0
#增加如下内容
MTU="9000"
#保存后重启网卡生效
# service network restart
#启用 IPv6 地址的,修改 IPv6 mtu 的参数为
IPV6_MTU="1280"
Debian / Ubuntu Linux 下
# vi /etc/network/interfaces
#增加如下值
mtu 9000
#保存后,重启网络生效
# /etc/init.d/networking restart
从理论上计算,4 bit 的 CRC 最大支持 12000 bit 大小的字节,超过了就没有办法检查了。另外还有其他一些协议如 NFS 等的限制。
最后需要注意的是,在经过交换网络设备时,仅仅修改主机端的 MTU 值是不行的,还需要交换网络设备上开启 jumbo frames 功能。
使用 ping 命令,-l 指定包大小,-f 选项为通知操作系统不能私自更改该数据包大小
使用英文操作系统时的提示为:Packet needs to be fragmented but DF set .