PPPoE(ADSL)中的MTU设置


这段话源自:《Windows Server 2003 技术内幕(提高篇)》(ISBN 7-302-10332-1)

P471

PPPoE所施加的一个重要的限制就是消减了客户端能传输的最大帧大小。标准的Ethernet帧具有1500字节的有效负载荷,这个参数称为“最大传输单元”(Maximum Transmission Unit,MTU)。相反,由于PPPoE帧的header要占用6字节,还要用另外2个字节位来设置PPP协议ID,所以它的MTU为1492字节。

TCP/IP客户端协商建立的Web服务器的一个连接时,两个实体将协商一个MTU。这在正常情况下是1500字节。但是,假如客户端在一个使用PPPoE连接的服务器后面(该服务器在DSL服务器提供商处),PPPoE服务器就会丢弃帧,并向Web服务器返回一条"Internet Control Management Protocol     ” (ICMP)消息,告诉它的MTU是1492。加入Web服务器被配置成拒绝ICMP(大多Web服务器都会这样设置),网页就无法正确地加载。

为了查实这种情况,一个好用的诊断技术是从客户端上对Web服务器执行Ping操作,并用 -l 开关了指定一个载荷大小,再用一个 -f 开关来禁止分割数据库。具体语法是:

ping -f -l 1492 <internet_host>

如果屏幕上返回一条 "Packet needs to be fragmented but DF set"     错误提示,你就知道已经超过了web服务器或者沿途的某个路由器的MTU设置。

为了避免产生此问题,你需要在位于PPPoE服务器背后的客户端上减小MTU值。为此,你既可以在每个客户端上进行设置,也可以在一个客户端上进行设置,然后使用Regedit将修改导出至一个文件,并采取一个登录脚本的方式,将文件应用于其他客户端。你需要改动的地方是:

项:HKLM | System | CurrentControlSet | Services | Ndiswan | Paremeters | Protocols | 0
值:ProtocolType
数据:0x0800 (REG_DWORD)

值:PPPProtocolType
数据:0x0021(REG_DWORD)

值:ProtocolMTU
数据:<MTU大小> (REG_DWORD)

<>所表示的是实际东西,正常输入不需要输入"<>"

附送外卖一篇

http://hi.baidu.com/snap%5Fbai/blog/item/fc511e60f84b06dc8cb10d23.html


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

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

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

   输入命令“ping –l 14xx –f www.163.com”,这里我们解释一下命令参数的含义

  * –l 14xx参数:发送一个定长数据包,14xx是要测试的包大小,如前所述,ADSL的MTU一般在1450与1492之间,第3步中将每次更换一次该值

  * –f 参数:通知操作系统不能私自更改该数据包大小

  *www.163.com:任意一台Internet上的主机,也可使用其它主机名或IP地址

   观察反馈结果并判断ISP的MTU值

  1) 第一次发送测试包,包长1450

  提示数据包过大,需要分包,因此判断该数值(1450)大于ISP的MTU,应降低包大小

  2) 第二次发送测试包,包长1440

  数据包大小降为1440,提示应为数据包过大,因此判断该值(1440)仍大于ISP的MTU,还应继续降低

  3) 第三次发送测试包,包长1430

  数据包大小降为1430,提示该数据包可以正常传输,因此判断ISP的MTU值在1440~1430之间

  4) 第四次发送测试包,包长1435

  数据包大小升为1435,提示仍然可以正常传输,因此判断MTU数值在1440~1435之间

  5) 第五次发送测试包,包长1438

  数据包大小升为1438,提示可正常传输,因此判断MTU数值在1440~1438之间

  6) 第六次发送数据包,包长1439

  数据包大小升为1439,提示因数据包过大无法传输,因此,判断出该ISP的MTU值为1438

计算本地电脑的MTU值

  上面得到的MTU值不能直接用于本地设置上,还应在此基础上加上28(包头大小),因此最终的MTU数值为1466

"Packet needs to be fragmented but DF set. "

出现这个东西,那表示MTU值太大了,你需要更小的 MTU 值才行!因为数据包拆分了。

Reply from 220.181.28.205: bytes=1464 time=49ms TTL=51

出现则表示这个数据包大小:1464是可行的!不过,强烈建议找出可行的最大 MTU 值!这样一来,在设定的时候,才可以达到最佳的网速!增加网络的利用率。

下面我介绍软件方式寻找MTU的设置:

使用的软件是:TCPOptimizer

这里可以找到下载的链接:http://search.newhua.com/search.asp?Keyword=TCP Optimizer

打开,这个是软件的界面

 选择到Largest MTU随便找个你认为可靠的网址试试看看。 然后点击START 最后程序会有建议你设置的MTU设置出来!(红色框内的 1500那个地方)  这样子你就找到了最大的MTU了PS:主界面那里可以修改本机的MTU,不会的可以下载汉化版来看看。

参考

http://zhidao.baidu.com/question/15241477.html  http://www.edong.com/www/2004-10-10/1097382659916371637.html搜索这篇文章“设置MTU值,加速上网速度”也可行。

其他参考文章

Adjusting the MTU 【英文】

http://help.expedient.com/broadband/mtu.shtml

RFC 1191 【英文】

http://www.ietf.org/rfc/rfc1191.txt
http://hi.baidu.com/snap%5Fbai/blog/item/863c52382a9b8af1b311c758.html
http://hi.baidu.com/snap%5Fbai/blog/item/fc511e60f84b06dc8cb10d23.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值