IPv6为什么只允许源分片,不允许中间转发节点进行分片? | 您所在的位置:网站首页 › 使用ipv6有什么好处 › IPv6为什么只允许源分片,不允许中间转发节点进行分片? |
随着网络技术的发展,针对下一代IP的问题提出了IPv6,它设计的目的就是为了解决IP地址不够用,IP的安全性、移动性以及服务质量(QoS)等问题。本文就IPv6分片的部分进行讨论。 在IPv4网络当中,一个数据包在发送到网络当中时,是无法知道网络的全部情况的,这个设计主要是为了减轻主机的负担。因为一台主机存储网络的所有IP地址、网络带宽以及各个部分的传输速度等是会耗费大量的主机资源的,是不现实的,也是没必要的。所以,数据包在源可以分片,同时在中间转发节点也会分片,最终由目的主机进行重组,这个机制可以保证数据最终的完整性。 但是在IPv6网络中,只允许源分片,不允许中间转发节点进行分片。为什么会这么设计呢?本文将从三个方面进行讨论,同时结合其他参考文章进行解释。 IPv6只允许源分片 IPv6路径MTU发现机制分组和重组的过程分组的代价 IPv6路径MTU发现机制参考杨宁老师的《IPv6和MIPv6参考文档》,路径MTU(Path MTU,PMTU)是从分组源到目的节点的路径上所有链路MTU中的最小值。由于IPv6不允许在转发路由器上进行分片,因此IPv6源节点需要使用路径MTU发现机制来确定PMTU,以确保分组或分片不超过PMTU,从而能被路径上的所有路由器成功转发。 在IPv4当中,中间路由器的分组以及目的主机的重组是很耗费时间的。这对网络当中的效率产生了一定程度的影响。所以,IPv6只允许源分片可以减少重组的时间,从而提高数据转发的效率。 分组的代价我们经常可以听到递归是一个程序员永远的梦魇,为什么呢?分治和递归作为算法的入门,是通过重复将问题分解为同类的子问题而解决问题的方法。有两个重要的的问题,就是合并的时候,如何合并以及合并的次数(子问题的规模)是多少?递归的深度越深,合并的次数越多,那么效率也会收到影响,如下图所示: 当然参考其他的两篇文章,可以或者其他的理解。 参考文章IP 基础知识全家桶,45 张图一套带走 取消了分片/重新组装相关字段。 分片与重组是耗时的过程,IPv6 不允许在中间路由器进行分片与重组,这种操作只能在源与目标主机,这将大大提高了路由器转发的速度。 参考文章网络层——IPv6 概述 对比 IPv4 IPv6 数据报相对于 IPv4 数据报有很多删减的地方,这里关注 3 个方面。 首先是分片与重组的问题,IPv6 数据报不允许在路由器上分片,这个操作只能在源和目的执行。如果中间遇到链路的 MTU 较小怎么办?这个时候路由器就直接丢包,然后向发送发发一个“分组太大”的 ICMP 报文,然后源就根据这个报文,把数据报分成更小的几个再重传。这种设计时合理的,因为路由器的分片是耗时的操作,这样可以是 IP 数据报转发的速度提高。第二个我们关注首部校验和的问题,这个字段在 IPv6 中已经没了。因为在传输层、数据链路层协议中,有很多协议都有具备错误检测的功能,而首部校验和因为有 TTL 等参数变化,计算的开销很大。因此把这个字段去除之后,也可以提升 IP 数据报转发的速度。第三个我们关注选项,这个字段在 IPv6 中已经没了,不过它的功能被归并到下一个首部字段中了。这种改动可以使得 IP 数据报的首部长度为定长,也就是 40 字节。 |
CopyRight 2018-2019 实验室设备网 版权所有 |