TCP的路径MTU发现问题( 三 )


源主机答应分片 。幸运的是,Ipv6支持的最小MTU是1280字节,远远大于Ipv4中的最小
68字节 。当Ipv4实现检测到黑洞问题时可能要关掉DF,与之相比,Ipv6实现后退到1280
字节的包应是合理的 。
ICMP黑洞理想的处理应是在发现时处理 。
若主机开始执行黑洞检测,有可能问题将仍然被人忽视并未得到修复 。因为每次检测
将花费几秒时间且延迟将引起隐藏的性能相当下降,这十分糟糕 。实施黑洞检测的主机应
记录检测的黑洞以便能修复 。
2.2问题名字
由于PMTUD引起的ACK延迟(stretchACK)
分类
拥塞控制/性能
描述
当一个实现上未作复杂处理的TCP协议栈和一个有PMTUD功能的TCP协议栈通信时,对
每隔两个的全尺寸包将试图产生一个ACK 。若是基于通告的MSS来决定全尺寸大小,则在面
临PMUTD时会严重降低性能 。
PMTU可以减小为只是通告的MSS的一小段;在这种情况下,ACK只是会很少产生 。
意义
延迟的ACK有一系列不好的影响,更完整的列在[RFC2525] 。由于ACK很少到达,多数
会产生更突发性的连接 。它们能阻止拥塞窗口的增长 。
含义
延迟的ACK的完整含义列在[RFC2525] 。
相关RFC
RFC1122列出了对ACK频繁产生的需求 。[RFC2581]对此进行了扩展并且声明延迟ACK
是应该而不是必须 。
阐述问题的输出文件
在中间主机上使用tcpdump记录 。为简明起见,除了头两个包以外,其它包的时间戳
选项都被删除 。
18:16:52.976657A>B:S3183102292:3183102292(0)win16384
(DF)
18:16:52.979580B>A:S2022212745:2022212745(0)ack3183102293win
49152(DF)
18:16:52.979738A>B:.ack1win17248(DF)
18:16:52.982473A>B:.1:4301(4300)ack1win17248(DF)
18:16:52.982557C>A:icmp:Bunreachable-
needtofrag(mtu1500)!(DF)
18:16:52.985839B>A:.ack1win32768(DF)
18:16:54.129928A>B:.1:1449(1448)ack1win17248(DF)
.
.
.
18:16:58.507078A>B:.1463941:1465389(1448)ack1win17248(DF)
18:16:58.507200A>B:.1465389:1466837(1448)ack1win17248(DF)
18:16:58.507326A>B:.1466837:1468285(1448)ack1win17248(DF)
18:16:58.507439A>B:.1468285:1469733(1448)ack1win17248(DF)
18:16:58.524763B>A:.ack1452357win32768(DF)
18:16:58.524986B>A:.ack1461045win32768(DF)
18:16:58.525138A>B:.1469733:1471181(1448)ack1win17248(DF)
18:16:58.525268A>B:.1471181:1472629(1448)ack1win17248(DF)
18:16:58.525393A>B:.1472629:1474077(1448)ack1win17248(DF)
18:16:58.525516A>B:.1474077:1475525(1448)ack1win17248(DF)
18:16:58.525642A>B:.1475525:1476973(1448)ack1win17248(DF)
18:16:58.525766A>B:.1476973:1478421(1448)ack1win17248(DF)
18:16:58.526063A>B:.1478421:1479869(1448)ack1win17248(DF)
18:16:58.526187A>B:.1479869:1481317(1448)ack1win17248(DF)
18:16:58.526310A>B:.1481317:1482765(1448)ack1win17248(DF)
18:16:58.526432A>B:.1482765:1484213(1448)ack1win17248(DF)
18:16:58.526561A>B:.1484213:1485661(1448)ack1win17248(DF)
18:16:58.526671A>B:.1485661:1487109(1448)ack1win17248(DF)
18:16:58.537944B>A:.ack1478421win32768(DF)
18:16:58.538328A>B:.1487109:1488557(1448)ack1win17248(DF)
注重ACK之间的间隔比两倍段大小还要大;它消耗了几乎两倍于建议的MSS的时间 。传输时
间长得可以验证延迟的ACK不是丢失ACK包的结果 。
解释什么是正确处理的输出文件
在中间主机上使用tcpdump记录 。为简明起见,除了头两个包以外,其它包的时间戳选项
都被删除 。
18:13:32.287965A>B:S2972697496:2972697496(0)
win16384(DF)
18:13:32.290785B>A:S245639054:245639054(0)

推荐阅读