PPPOE拨号下MTU设置

由于以太网传输电气方面的限制,每个以太网帧都有最小的大小64bytes最大不能超过1518bytes,对于小于或者大于这个限制的以太网帧我们都可以视之为错误的数据帧,一般的以太网转发设备会丢弃这些数据帧。(注:小于64Bytes的数据帧一般是由于以太网冲突产生的“碎片”或者线路干扰或者坏的以太网接口产生的,对于大于1518Bytes的数据帧我们一般把它叫做Giant帧,这种一般是由于线路干扰或者坏的以太网口产生)

以太网帧长范围为64-1518。这是由以太网的物理特性决定的,以太网中的最小帧长是根据网络中检测冲突的最长时间决定的。

根据IEEE 802.3规定,一个典型的以太网帧是由下列几个部分组成:

image

其中Pad部分是可以变长的,从Dest. MAC Address (目的MAC地址)至Frame Check Sequence (FCS检查位)最小长度为64byte

MTU所指的为IP数据包总长度。 MTU大小范围为64-1500。(从MAC Client Data开始到Pad结束)

不同的上网方式支持不同的MTU,下面列出了一些上网方式的MTU值: 
EtherNet(一般上网方式,默认值):1500 
PPPoE/ADSL:1492 
Dial Up/Modem:576

所介绍的方法是修改MTU值来优化网络数据的传输.首先,当然是先解释一下什么是MTU和MRU的设置原理.

  MTU的意思是:最大传输单元。这是一个数据包能够传送的最大字节量的上限。网络层通常不发送包含的字节数比限定值低的数据包,以便于取得更高效率,所以这个设定的低和高,指明了数据包的尺寸。

  如此说来MTU可以向两个方向设置:MTU设置的大和小,不过问题在于:MTU设定得越大,越多的数据在被发送之前就会被缓存起来,因此客户端就以较低的频率发送数据包,这很不爽,因为直到一个数据包被传送到服务器以前,这个数据包所代表的玩家的行为不会发生任何实际效果,因为服务器还不知道。数据包过大从一台电脑传到另外一台电脑的时候,它们通常会经过只支持小得多的MTU的网络连接。这就要求大数据包被拆解,发送,重新装配,这无疑提高了数据传送需要的时间。

  而如果MTU设定的越小就会产生另一个问题:因为每一个数据包都有一个40字节的头,包含重要的控制信息。这样,推论就是,如果MTU很小,头会吃掉大量的有效带宽,例如,一个完美的56k modem连接可以上传4200字节每秒。如果MTU尺寸被设定到90,头是40,这是整个数据包尺寸的44%。如果4200字节的44%都用于传送头,这只保留了2772字节给客户端实际传送的数据。

  那么,客户端不得不改变cl_rate到2772并且减低每秒向服务器的更新次数,因为它只有很少的有效带宽.这样同样大小的数据传输时间将更加长.

  所以可以看到,优化网络的关键在于对MTU值的设置.

  所建议的修改方式是:将MTU值修改为1492,因为原因是PPPoE接入方式的ADSL MTU值是1492.不过这种设置是不可取的.在使用pppoe播号接入ADSL的如果ADSL MTU值为1492的话,数据传输情况如下

  TCP/IP 应用字节 1492

  PPP 头字节 +2

  PPPoE 头字节 +6

  Ethernet 头字节 +18

  总传输字节 1518

  因此当使用1492时实际应是1518字节.当一个数据包转换为ATM流(PPPOE拨号所传输数据的封包模式)时,会被分成53字节的单元.(其中48字节用户数据,其他为ATM头信息).于是1518 / 48 = 31个单元 + 30字节.与以太网不同,ATM单元使用固定的长度53.因此在前面的31个单元中的每个都会包括48字节用户数据.在最后的一个单元中,包括30字节数据,还有一个 8字节的SAR尾部说明如何重组这1518字节的数据包.为了维持单元的固定长度,最后的单元中还必须填上10个字节,这就造成了带宽的浪费.

  如果将MTU设置为1454的话:

  TCP/IP 应用字节 1454

  PPP 头字节 +2

  PPPoE 头字节 +6

  Ethernet 头字节 +18

  总传输字节 1480

  这样的话,1480/48=30单位+40字节.在前面的30个单元中的每个都会包括48字节用户数据。在最后的一个单元中,包括40字节数据,还有一个8字节的SAR尾部,恰好48字节,完全消除了浪费。

  了解至此之后,大家就可以开始优化自己的网络了.将上文提到的帖子里面的1492改为1454应该会有部分的提高把,但是大家不要期望提高得太大哦!

  当然,也可以这样设置(win98如此设置,win2000/xp设置同此原理):点击开始菜单里的“运行”,输入“regedit”后回车,进入注册表。

  依次展开:{HKEY_LOCAT_MACHINE/System/CurrentControlSet/Services/Class/NetTrans/},会看到包含几个000X的子项,寻找含有键名为“DriverDesc”,键值为“TCP/IP”的000X主键,该键里有该计算机的网络属性设置,如IP地址192.168.0.XX,网关192.168.0.1,子网掩码255.255.255.0等。在该键下新建“DWORD值”,命名为“MaxMtu”,修改键值为十进制的1454设置完毕,重新启动计算机.

  这样设置之后,不但可以有效的提高网络速度,还可以解决因为MTU值使用windows默认(1500)造成的部分网站无法访问的问题.

  在最后要提醒大家的就是:修改有风险,动手须谨慎!

你可能感兴趣的:(技术交流)