对于 IPv4,当路径最大传输单元发现不起作用时,TCP MSS“钳位”(编辑 TCP 标头中的 MSS 值的网络设备)可以提供帮助。(例如,当 ICMP 在路径中的某处被阻塞时。)由于 IPv6 中没有分段,我们仍然有 ICMPv6 的“数据包太大”无法向始发端点发出信号。
是否有任何关于专门通过 IPv6 钳制 TCP MSS 的指导?
对于 IPv4,当路径最大传输单元发现不起作用时,TCP MSS“钳位”(编辑 TCP 标头中的 MSS 值的网络设备)可以提供帮助。(例如,当 ICMP 在路径中的某处被阻塞时。)由于 IPv6 中没有分段,我们仍然有 ICMPv6 的“数据包太大”无法向始发端点发出信号。
是否有任何关于专门通过 IPv6 钳制 TCP MSS 的指导?
从技术上讲,IPv6 可能会发生碎片化;这是关于它的维基百科文章。
这个瞻博网络页面有点旧,但它表明您可以使用相同的命令在 Junos 上钳制基于 IPv6 的 TCP 的 MSS,就像在 IPv4 中一样tcp mss
。这同样示出在此文章的Cisco IOS 15,采用传统IP TCPadjust-mss
命令。
因此,如果 PMTUD 无法正常工作,您可以配置 MSS 钳位,因为它应该在您的网络的一部分中,否则,您应该确保您正在帮助 PTMUD 在整个网络中的平滑运行,以便不需要 MSS 钳位(我知道这并不总是在您的控制之下)。
更新
这是一篇关于 Junos 10x 而不是 9 的较新 Junos 文章的链接,我找不到 11 的一篇文章,而且我现在不在 11 之前,但我希望它会是一样的。
肯定有一些情况——通常涉及路径沿线某个点的 IPv6-in-IPv4 隧道——即使 PMTUD 工作正常,MSS 协商也会失败。在这种情况下,TCP 会话可能会正确启动(因为 SYN/ACK 数据包很小)但没有数据包到达(因为这些数据包对于隧道来说太大了)。在这种情况下,远端的 MSS 钳制会有所帮助,但不受等待数据包的“受害者”的控制。故障安全解决方案是两端将 IPv6 MTU 设置为 1280,这应该可以通过任何隧道。