从IPv6中删除碎片有什么好处?

时间:2011-06-06 16:19:00

标签: sockets networking tcp network-protocols ipv6

我正在开发一个项目,其中包括使用java套接字开发应用程序。然而,在阅读一些基本原则和新近推出的IPv6范式时,这促使我在下面提出问题,

从IPv6中删除碎片有什么好处?

如果有人能让我理解为什么会有帮助吗?

我在互联网上进行了研究,但没有找到任何有用的描述。

3 个答案:

答案 0 :(得分:13)

由于IPv6标头没有IPv4所做的片段偏移字段,因此常见的误解是存在 no IPv6分片;但是,它并不完全准确。 IPv6不允许路由器对数据包进行分段;但是,终端节点可以插入IPv6分片头 1

由于RFC 5722声明 2 ,碎片化的一个问题是它往往会产生安全漏洞。在20世纪90年代后期,Windows 95上发生了几起众所周知的攻击,这些攻击利用了重叠的IPv4片段 3 ;此外,由于必须处理的长问题列表,分组的串联分段有可能烧入因特网路由器芯片。最大的问题之一是,在路由器中缓冲的重叠片段(等待重组)可能会在该设备被错误处理时导致该设备上的安全漏洞。最终结果是大多数路由器实现将需要分段的数据包推送到软件;这不会在很大的速度下扩展。

另一个问题是,如果重新组合片段,则必须将它们缓冲一段时间,直到收到其余片段。有人可能利用这种动态并发送大量未完成的IP片段;迫使有问题的设备花费许多资源等待重新组装的机会。智能实现限制了未完成片段的数量,以防止拒绝服务;但是,限制未完成的碎片可能会合法地影响可以重新组装的有效碎片的数量。

简而言之,只有太多毛茸茸的问题才能让路由器处理碎片。如果IPv6数据包需要分段,则主机实现应足够智能以使用TCP Path MTU discovery。这也意味着需要端到端地允许几条ICMPv6消息;有趣的是,许多IPv4防火墙管理员阻止ICMP防范恶意网络映射(然后天真阻止所有ICMPv6),没有意识到阻止所有ICMPv6以微妙的方式破坏事物 4

<小时/> 的 END-NOTES:

  1. 请参阅Internet Protocol, Version 6 (IPv6) Specification

  2. 的第4.5节
  3. 来自RFC 5722: Handling of Overlapping IPv6 Fragments

    常用防火墙使用指定的算法 在[RFC1858]中清除试用的恶意数据包 覆盖传输层标头的部分内容 为了绕过入站连接检查。 [RFC1858]  防止重叠片段攻击 上层协议(在本例中为TCP)通过推荐  丢弃片段偏移量为1的数据包 虽然这适用于IPv4片段,但它不起作用 用于IPv6片段。这是因为可分割的部分  IPv6数据包之前可以包含扩展标头 TCP标头,使此检查效果不佳。

  4. 请参阅Teardrop attack (wikipedia)

  5. 请参阅RFC 4890: Recommendations for Filtering ICMPv6 Messages in Firewalls

答案 1 :(得分:4)

我没有“官方”的答案,但仅仅基于了解IPv6如何处理过大的数据报,我的猜测是减少路由器的负载。碎片和重组会在路由器上产生开销。 IPv6将此负担转移到终端节点,并要求它们执行MTU发现以确定它们可以发送的最大数据报大小。理所当然的是,端节点更适合于任务,因为它们需要处理的数据较少。实际上,路由器有足够的板;迫使节点处理它并允许路由器简单地丢弃超过其MTU阈值的东西是有意义的。

理想情况下,最终结果是路由器可以在IPv6下处理更大的负载(所有条件都相同),而不是IPv4,因为没有碎片/重组需要他们担心。该处理器功率可专用于路由流量。

答案 2 :(得分:0)

IPv4保证最小MTU为576字节,IPv6为 1,500 1,280字节,推荐为1,500字节,差别基本上是性能。由于大多数最终用户LAN网段为1,500字节,因此可以减少网络基础设施的开销状态,因为存在需要较小尺寸的传统网络的额外碎片。

对于UDP,IPv4标准中没有关于碎片数据包重建的定义,这意味着每个平台都可以以不同方式处理它。 IPv6断言碎片和汇编将始终发生在IP堆栈中,并且片段不会呈现给应用程序。