作者:gc(at)sysin.org,主页:www.sysin.org
转载请保留出处。
一、概念
1. MTU 的概念
最大传输单元(Maximum Transmission Unit,MTU)是指一种通信协议在某一层上面所能通过的最大数据报大小(以字节为单位),它通常与链路层协议有密切的关系。
由于以太网传输电气方面的限制,每个以太网帧都有最小的大小 64bytes,最大不能超过 1518bytes,对于小于或者大于这个限制的以太网帧,我们都可以视之为错误的数据帧。一般的以太网转发设备会丢弃这些数据帧。(注:小于 64Bytes 的数据帧一般是由于以太网冲突产生的 “碎片”或者线路干扰或者坏的以太网接口产生的,对于大于 1518Bytes 的数据帧我们一般把它叫做Giant 帧,这种一般是由于线路干扰或者坏的以太网口产生)。
由于以太网 EthernetII 最大的数据帧是 1518Bytes,除去以太网帧的帧头( DMAC目的MAC地址 48bit=6Bytes+SMAC源MAC地址48bit=6Bytes+Type域2bytes)14Bytes 和帧尾 CRC 校验部分 4Bytes (这个部份有时候大家也把它叫做 FCS),那么剩下承载上层协议的地方也就是 Data 域最大就只能有 1500Bytes,这个值我们就把它称之为 MTU。
2. 什么是 Jumbo Frames
Jumbo frames 是指比标准 Ethernet Frames 长的 frame,即比 1518/1522bit 大的 frames,Jumbo frame的大小是每个设备厂商规定的,不属于IEEE标准;Jumbo frame 在 full-duplex 的 Ethernet 网络上运行;Jumbo frame 定义了一个“link negotiation”协议,来和对端的设备协商,是否对端设备支持使用 Jumbo frames;标准的以太网 IP 报文大小是:1500bit,不包含以太网头和 FCS 的 18bit(6+6+2+4),如果包含以太网头和 FCS,则为 1518bit;Jumbo frame 一般指的是二层封装三层 IP 报文的值大于 9000bit 的报文。
Jumbo frames 的提出背景:在 1998 年,Alteon Networks 公司提出把 Data Link Layer 最大能传输的数据从 1500 bit 增加到 9000 bit,这个提议虽然没有得到 IEEE 802.3 Working Group 的同意,但是大多数设备厂商都已经支持。
3. 使用 Jumbo Frames 的优点
在数据传输时,由于 IEEE 的规定最大的帧规定为 1,500比特(主机在早期的半双功网络中),所以需要数传输需要经过“数据的切要 --- 传输 ---数据组合”的过程。而使用的最大帧越小,传输包的量就越大,计算量相应会多,而产生的后果是:
a:增加主机的计算量,消耗CPU资源;
b:影响网络传输的速度。
而使用大帧优点自然也不言而喻 ———— 降低CPU计算量、加快数据传输。
二、如何修改 MTU
1. CISCO 交换机配置
1.1 Catalyst IOS 机型(代表产品:3750/3560/2960)
1 | 3750(config)# system mtu jumbo 9000 |
注意:本例使用3750X交换机,测试在同一vlan的主机巨型帧通信正常,但在vlan之间(不同vlan)无法通信,原因未知。
1.2 Catalyst IOS XE 机型(代表产品:9000、3850、3650)
9300 switch in our lab:
1 | Switch#config t |
A reload is not required to change the system MTU. For more details kindly go through the below link.
1.3 Nexus 交换机 NX-OS
MTU配置介绍
1 | For Layer 3 interfaces, you can configure an MTU size that is between 576 and 9216 bytes. |
配置接口MTU
1 | 为三层口配置MTU: |
修改系统默认MTU
1 | 修改系统默认MTU: |
配置在交换的虚拟接口(SVI)的MTU
1 | Nexus(config)#interface vlan 1 |
2. VMware ESXi 配置
2.1 使用 vSphere Client(Flex 旧版 vSphere Web client 类似)配置:
Standard Switch
Home > Hosts and Clusters > Host > Configuration > Networking >
Virtual Switches > Standard Switch: vSwitch# > Edit > Properties > MTU (Bytes)
VMkernel adapters > vmk# (For example: vmk0) > Edit… > Port properties > MTU
Distributed Switch
Home > Networking > distributed switch (For example: DSwitch1) > ACTIONS > Settings > Edit Settings… > Advanced > MTU (Bytes)
Home > Hosts and Clusters > Host > Configuration > Networking > VMkernel adapters > vmk# (For example: vmk1) > Edit… > Port properties > MTU
2.2 命令行配置
vSwith 配置(Standard Switch 和 Distributed Switch 相同)
1 | 查看vSwitch信息 |
VMkernel 适配器配置
1 | 查看 VMkernel 适配器信息 |
3. 操作系统配置
Windows GUI (Windows Server 2019 为例)
1 | 控制面板\网络和 Internet\网络和共享中心 > Ethenet0 > 属性(P) > 配置(C)... > 高级 > Jumbo Packet > 9014 |
备注:无需重启网卡即可生效,测试在物理机配置后网络短暂中断,虚机配置后网络无中断直接生效。
Windows cmd
1 | 查询接口的 MTU 值(验证配置结果同) |
CentOS / RHEL / Fedora Linux
1 | vi /etc/sysconfig/network-scripts/ifcfg-eth0 |
Debian / Ubuntu Linux
1 | sudo vi /etc/network/interfaces |
Netplan 配置(Ubuntu 18.04、20.04)
1 | # 18.04: |
4. 测试 Jumbo Frames
To test Jumbo Frames:
Test ping to your neighbor’s virtual machine interface with the command:
From Windows:
1
2
3
4ping -f -l 8972 a.b.c.d
-l size 发送缓冲区大小。
-f 在数据包中设置“不分段”标记(仅适用于 IPv4)。From Unix:
1
ping -s 8972 a.b.c.d
The output appears similar to:
1
2PING a.b.c.d (a.b.c.d) 8972(9000) bytes of data.
8980 bytes from a.b.c.d: icmp_seq=1 ttl=128 time=3.36 ms
To test the network connectivity with Jumbo Frames, from ESX server console/SSH connection to ESX use the command:
1 |
如果文章中使用的内容和图片侵犯了您的版权,请联系作者删除。如果您喜欢这篇文章或者觉得它对您有用,欢迎您发表评论,也欢迎您分享这个网站,或者赞赏一下作者,谢谢!
赞赏一下