分类: WINDOWS
2011-09-07 10:07:13
我们在使用ADSL进行pppoe拨号上网时,由于在正常的以太帧中插入了ppp报文,就会占用数据负载部分的数据位,这样如果MTU还是设置成1500的话,网络访问势必会出问题,比如说部分网页打不开,监控视频无法显示等。现在就以window xp系统的pppoe拨号来探讨一下。
一、pppoe报文头长度
pppoe header(6字节)+ PPP Header(8字节)= 14字节
按这个长度计算pppoe理论的MTU = 1500 - 14 = 1486 字节
(报文头结构介绍请参考我的博客文章:链路层常见报文格式及长度)
Microsoft官网上这样描述:
默认最大 PPPoE MTU 大小为 1,480 字节。对于某些 Internet 服务提供商 (ISP),您可能需要将 PPPoE 连接的 MTU 大小降至 1,400 和 1,480 之间的一个值(例如 1,454)。不要将 MTU 大小设置为小于 1,400。
二、确认pppoe端口的MTU
通过注册表来看看pppoe的MTU大小为1454字节(winxp系统)
此外,还可以用ping -f(不允许数据包分片)进行验证
说明一下,window ping数据包大小指的是数据净负载的大小,所以计算MTU的时候需要加上ip header(20bytes)和ICMP header(8byte),合计28字节。
三、修改PPPOE MTU大小
打开注册表\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NdisWan\Parameters\Protocols\0,将ProtocolMTU修改为1486,测试发现只能通过1452字节的包(1452 + 28 = 1480),看来微软官方的说法是正确的,最大只能设置到1480字节。
C:\>ping 211.136.192.6 -f -l 1453
Pinging 211.136.192.6 with 1453 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.
C:\>ping 211.136.192.6 -f -l 1452
Pinging 211.136.192.6 with 1452 bytes of data:
Reply from 211.136.192.6: bytes=1452 time=22ms TTL=249
Reply from 211.136.192.6: bytes=1452 time=30ms TTL=249
Reply from 211.136.192.6: bytes=1452 time=31ms TTL=249
Reply from 211.136.192.6: bytes=1452 time=30ms TTL=249