Chinaunix首页 | 论坛 | 博客
  • 博客访问: 405260
  • 博文数量: 59
  • 博客积分: 1510
  • 博客等级: 上尉
  • 技术积分: 857
  • 用 户 组: 普通用户
  • 注册时间: 2009-06-03 11:50
文章分类

全部博文(59)

文章存档

2011年(1)

2010年(36)

2009年(22)

我的朋友

分类: 系统运维

2009-06-22 16:21:15

   MTU,即Maximum Transmission Unit(最大传输单元),此值设定TCP/IP协议传输数据报时的最大传输单元。设置合适的MTU值可以解决“部分网站打不开”、“上网速度慢”等问题,并且可以适当提升上网速度。
   设置多大的MTU值取决于你的上网方式,不同的上网方式支持不同的MTU,下面列出了一些上网方式的MTU值:
   EtherNet(一般上网方式,默认值):1500
   PPPoE/ADSL:1492
   Dial Up/Modem:576

WINDOWS平台

问题一:知道了我的上网方式,如何设置MTU值?
1. 在 『开始』>『运行』中,键入regedit,点确定;
2. 选择『HKEY_Local_Machine』>『SYSTEM』>『CurrentControlSet』>『Services』>『Tcpip』>『Parameters』>『interface』;
3. 在 interface 底下可能有很多的选项,你一个一个的去看,会有一个选项与你的网卡的 IP 相同,那个就是你要挑选的选项啦!然后同样的在该选项上选择『编辑』>『新建』>『DWORD值』之后,建立一个名为『MTU』的DWORD,然后双击修改,选择十进制,填入合适 MTU 值,确定!大功告成!

问题二:我不知道自己的上网方式,如何确定MTU值呢?
ping -f -l 1500 127.0.0.1

C:\WINDOWS>ping -f -l 1500 127.0.0.1
Pinging 127.0.0.1 with 1500 bytes of data:
Packet needs to be fragmented but DF set.
Packet needs to be fragmented but DF set.
Packet needs to be fragmented but DF set.
Packet needs to be fragmented but DF set.
Ping statistics for 127.0.0.1:
Packets: Sent = 4, Received = 0, Lost = 4 (100% loss), Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms

上面的式子中,-l 是 L 的小写(不是 1 喔),1500 是我们要测的 MTU 值,结果出现了 Packet needs to be fragmented but DF set. 这个东西,那表示MTU值太大了,你需要更小的 MTU 值才行!好啦!那假设我们使用 1464 来测试时:

C:\WINDOWS>ping -f -l 1464 127.0.0.1
Pinging 127.0.0.1 with 1464 bytes of data:
Reply from 127.0.0.1: bytes=1464 time=10ms TTL=128
Reply from 127.0.0.1: bytes=1464 time<10ms TTL=128
Reply from 127.0.0.1: bytes=1464 time<10ms TTL=128
Reply from 127.0.0.1: bytes=1464 time<10ms TTL=128
Ping statistics for 127.0.0.1:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss), Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 10ms, Average = 2ms
结果出现了回应了!这表示这一个 MTU 值是可行的!不过,强烈建议找出可行的最大 MTU 值!这样一来,在设定的时候,才可以达到最佳的网速!

找出 MTU 值:利用上面这个方法找到的数值还不是 MTU 喔!由于一些封包上面的问题,上面这个值再加上 28 才是我们所需要的 MTU 值!所以,在上面的例子中,我们所需要的 MTU 值是 1464+28=1492!

一般来讲,设计好本机的MTU值,可以解决部分网站打不开的情况,但是如果你的共享主机或路由器的MTU设置有问题,有时问题仍然存或,或者出现网速过慢的情况。合理的设置路由器与本机的MTU值,就可以完全解决上述问题,使上网速度达到最大化。


LINUX下设置网卡的MTU值

网卡的MTU值可以通过修改设备配置文件来设置。通过ifconfig命令可以查看网卡配置:


ifconfig -a
eth0 Link encap:Ethernet HWaddr 00:0D:61:93:55:3E
inet addr:192.168.0.1 Bcast:192.168.0.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:386423 errors:0 dropped:0 overruns:0 frame:0
TX packets:6490 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:203556104 (194.1 MiB) TX bytes:787293 (768.8 KiB)
Interrupt:209 Memory:fb000000-0

eth1 Link encap:Ethernet HWaddr 00:40:F4:98:8E:43
BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
Interrupt:185 Base address:0xa000

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:36036 errors:0 dropped:0 overruns:0 frame:0
TX packets:36036 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:20683798 (19.7 MiB) TX bytes:20683798 (19.7 MiB)

 

或者可以通过ip命令来查看:

# ip link list
1: lo: mtu 16436 qdisc noqueue
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:0d:61:93:55:3e brd ff:ff:ff:ff:ff:ff
3: eth1: mtu 1500 qdisc noop qlen 1000
link/ether 00:40:f4:98:8e:43 brd ff:ff:ff:ff:ff:ff

网卡eth0当前的MTU是1500字节,如果要临时更改网卡的MTU值,比如更改为1200,则以root身份执行:


ip link set dev eth0 mtu 1200

如果要使对eth0的配置永久生效,则需要修改/etc/sysconfig/network-scripts/ifcfg-eth0,像下面那样增加MTU=1200:

# cat /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0
MTU=1200
BOOTPROTO=dhcp
ONBOOT=yes
TYPE=Ethernet

然后重启网络接口:

 service network restart

或 /etc/init.d/network restart


阅读(5947) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~