TCP 最大分段大小 (MSS)“钳制”是否与 IPv6 兼容?

网络工程 通讯协议 ipv6 第4层 传输协议 icmpv6
2021-07-31 18:33:38

对于 IPv4,当路径最大传输单元发现不起作用时,TCP MSS“钳位”(编辑 TCP 标头中的 MSS 值的网络设备)可以提供帮助。(例如,当 ICMP 在路径中的某处被阻塞时。)由于 IPv6 中没有分段,我们仍然有 ICMPv6 的“数据包太大”无法向始发端点发出信号。

是否有任何关于专门通过 IPv6 钳制 TCP MSS 的指导?

2个回答

从技术上讲,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,这应该可以通过任何隧道。