路径MTU发现( 七 )


-确定在给定的路由上没有使用PMTU发现 。
-改变与给定路由相关的PMTU值 。
前者通过与路由条目关联一个标志来完成 。当一个发送的包经过具有这个标志的路由的时候,IP层把DF比特位清除,而不管上层的请求如何 。
这些特性可以使用在不规则的情况中,或者用在能够得到路径MTU值的路由协议实现中 。
实现应该提供一种方法改变使PMTU信息变老的超时周期 。
7.路径MTU的可能值
在第五节建议的“搜索”路径MTU空间的算法基于严格限制搜索空间的取值表 。我们在这里描述的MTU取值表声明了在因特网中使用的所有主要的数据链路技术 。
在表7-1中,数据链路以减少的MTU顺序列出,并且为了每组相似的MTU与等于这组中最小MTU的“参考点”关联在一起而进行了分组 。(这个表也包括一些不与当前数据链路关联的条目,并且给出在哪里可用的参考) 。在那里一个参考点代表了不止一个MTU,此表显示了与参考点关联的最大误差,用一个百分数来表示 。
我们不希望表中的值,尤其对于较高级别的MTU值,永远是有效的 。这里给出的值是对实现的建议,不是一个规范或者要求必备 。实现者应该使用最新的参考来挑选一组参考点;这个表不应该包含太多的条目,否则检索PMTU的过程可能浪费因特网的资源 。实现者应该使没有源代码的用户方便地更新他们系统中的表值(例如,在源自BSDUnix内核中的表可以使用"ioctl"命令来改变) 。
注重:加入值等于2的较小此幂加40(IP和TCP的首部)的新的表项,可能是个好主意 。在那里,没有相似的值存在,因为这看起来是不能随意选择任意值的情况 。
这个表也可能包含值仅比的2的较大次幂小一点的条目,以防MTU被定义为接近这些值(这种情况下,表中的条目值低一点比高一点好,否则,下一个最小的参考值可能代替被选择) 。
7.1一种较好的检测PMTU增长的方法
6.3节建议通过周期性地增长对第一跳MTU的估计值来检测PMTU值的增长 。这个过程简化“重新发现”当前PMTU估计值,要以丢失一些数据报作为代价,所以这种工作不应该经常做 。
一种较好的方法是周期性地增长PMTU的估计值到参考点表中下一个最高值(假如它太小,就采用第一跳MTU) 。假如增长的估计值是错误的,在正确值被重新发现之前,至多有一次往返时间浪费 。假如增长的估计值仍然太低,一个较高的估计值将在以后的时间尝试 。
因为需要几个这样的周期来发现在PMTU中重要的增长,我们推荐在估计值增长后,使用较短的超时周期 。
PlateauMTUCommentsReference
--------------------------
65535OfficialmaximumMTURFC791
65535HyperchannelRFC1044
65535
32000Justincase
1791416MbIBMTokenRingref.[6]
17914
8166IEEE802.4RFC1042
8166
4464IEEE802.5(4Mbmax)RFC1042
4352FDDI(Revised)RFC1188
4352(1%)
2048WidebandNetworkRFC907
2002IEEE802.5(4Mbrecommended)RFC1042
2002(2%)
1536EXP.EthernetNetsRFC895
1500EthernetNetworksRFC894
1500Point-to-Point(default)RFC1134
1492IEEE802.3RFC1042
1492(3%)
1006SLIPRFC1055
1006ARPANETBBN1822
1006
576X.25NetworksRFC877
544DECIPPortalref.[10]
512NETBIOSRFC1088
508IEEE802/Source-RtBridgeRFC1042
508ARCNETRFC1051
508(13%)
296Point-to-Point(lowdelay)RFC1144
296
68OfficialminimumMTURFC791
Table7-1:CommonMTUsintheInternet
在PTMU估计值因为数据报太大报文而减小后,使用一个较长的超时 。例如,在PMTU估计值减少后,超时应该被设置为10分钟;一旦计时器超期,一个较大的MTU值被尝试,这个超时可能被设置为一个较小的值(比如说,2分钟) 。超时决不能比估计的往返时间短 。

推荐阅读