改编自原文:
好的,所以 IPv6 路由器无法对数据包进行分段,它们被丢弃并返回 ICMPv6 数据包太大。这意味着端节点在链路 MTU 上执行协商。然而,这一切都描述了链路层,根据 OSI,高层不必关心低层的所有细节。
考虑到 IPv4 硬件可能支持高达 9,000 字节的 jumbograms,但数据报大小可以达到 64KB。使用 TCP,操作系统可以使用底层链路大小并优化分割数据流,一切都很好。然而,对于 UDP,在系统管理员注意到问题并重新配置软件之上处理此类协商的支持有限。
假设您有一些固定数据报大小为 8,000 字节的软件,要从 IPv4 迁移到 IPv6,如果端到端 MTU 仅为 1,500 字节,则可以选择分段,或者丢弃所有内容。在一个很好的清理中,您要求完全删除碎片,但这会破坏应用程序,需要重写的不仅仅是套接字初始化处理。
IPv6 仍然是 IP,我们的想法并不是要破坏一切,尽管提出的更改会删除所有影响性能的功能:建议至少 1,500(如 IPv4 中的 576,参见 68/1,280 abs. min),而不是分段途中。
详细说明 ASIC 硬件导致的各种 MTU 限制的 Cisco 页面:
http://www.cisco.com/en/US/products/hw/switches/ps700/products_configuration_example09186a008010edab.shtml
示例
在带有IPv4 和IPv6 的Linux 2.6.38-10-generic 上。 IPv4在Wireshark中显示分片,IPv6只显示应用层分片。
tcpdump 显示:
11:13: IP aiko.hk.miru.hk.37505 > 239.192.0.1.7600: UDP, length 1972
11:13: IP aiko.hk.miru.hk.37505 > 239.192.0.1.7600: UDP, length 1117
11:15: IP6 fe80::230:1bff:feb7:a209.51993 > ff08::1.7600: UDP, length 1137
数据包是高于 IPv4 或 IPv6 的 UDP 之上的 PGM。 3,000 字节有效负载和 2,000 字节 MTU,因此应该有 IP 分片和 PGM 分片。