Linux修改网卡MTU值
Linux系统下修改网卡MTU值的多种方法
Linux修改网卡MTU值目录
一、为什么要修改MTU值
修改帧大小实际需要的操作就是修改MTU(Maximum Transmission Unit)值,即修改最大传输单元。
在数据传输时,由于IEEE的规定最大的帧规定为1,500比特(主机在早期的半双功网络中),所以需要数传输需要经过 数据的切要 --> 传输 --> 数据组合 的过程。而使用的最大帧越小,传输包的量就越大,计算量相应会多,而产生的后果是:
- 增加主机的计算量,消耗CPU资源;
- 影响网络传输的速度。
而使用大帧优点自然也不言而喻 ———— 降低CPU计算量、加快数据传输。
二、巨型帧介绍(jumbo frames )
1、什么是 jumbo frames
Jumbo frames的提出背景:在1998年,Alteon Networks 公司提出把Data Link Layer最大能传输的数据从1500 bytes 增加到9000 bytes,这个提议虽然没有得到IEEE 802.3 Working Group的同意,但是大多数设备厂商都已经支持。
Jumbo frames 是指比标准Ethernet Frames长的frame,即比1518/1522 bytes大的frames,Jumbo frame的大小是每个设备厂商规定的,不属于IEEE标准;Jumbo frame 在full-duplex 的Ethernet网络上运行;Jumbo frame定义了一个“link negotiation”协议,来和对端的设备协商,是否对端设备支持使用Jumbo frames;标准的以太网IP报文大小是:1500 bytes,不包含以太网头和FCS的18 bytes(6+6+2+4),如果包含以太网头和FCS,则为1518 bytes;Jumbo frame 一般指的是二层封装三层IP报文的值大于9000bytes的报文。
2、为什么MTU最大值为9000字节
从理论上计算,4 bytes的CRC最大支持12000 bytes大小的字节,超过了就没有办法检查了。另外还有其他一些协议如NFS等的限制。
最后需要注意的是,在经过交换网络设备时,仅仅修改主机端的MTU值是不行的,还需要交换网络设备上开启jumbo frames功能。
3、使用 jumbo frames 的优点
降低CPU计算量、加快数据传输。
三、修改MTU值方式
1、方式一:ifconfig命令修改
# 命令格式:ifconfig ${Interface} mtu ${SIZE} up
ifconfig eth0 mtu 1500 up
这个是最通用的方法,对所有的linux 发行版本都有效。缺点就是重启后失效,需要在开机项中加载。
2、方式二:修改配置文件
(1)CentOS / RHEL / Fedora Linux 下
# vi /etc/sysconfig/network-scripts/ifcfg-eth0
#增加如下内容
MTU="9000"
#保存后重启网卡生效
# service network restart
#启用IPv6地址的,修改IPv6 mtu的参数为
IPV6_MTU="1280"
(2)Debian / Ubuntu Linux 下
# vi /etc/network/interfaces
#增加如下值
mtu 9000
#保存后,重启网络生效
# /etc/init.d/networking restart
(3)部分Linux系统还可以通过如下方式查看、修改MTU值
cat /sys/class/net/eth0/mtu
# 设置
echo "1460" > /sys/class/net/eth0/mtu
四、MTU测试
使用ping命令,-l 指定包大小,-f 选项为通知操作系统不能私自更改该数据包大小。
使用英文操作系统时的提示为:Packet needs to be fragmented but DF set . 表明数据包未传输成功。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)