IPv6为什么只允许源分片,不允许中间转发节点进行分片?

随着网络技术的发展,针对下一代IP的问题提出了IPv6,它设计的目的就是为了解决IP地址不够用,IP的安全性、移动性以及服务质量(QoS)等问题。本文就IPv6分片的部分进行讨论。

在IPv4网络当中,一个数据包在发送到网络当中时,是无法知道网络的全部情况的,这个设计主要是为了减轻主机的负担。因为一台主机存储网络的所有IP地址、网络带宽以及各个部分的传输速度等是会耗费大量的主机资源的,是不现实的,也是没必要的。所以,数据包在源可以分片,同时在中间转发节点也会分片,最终由目的主机进行重组,这个机制可以保证数据最终的完整性。


但是在IPv6网络中,只允许源分片,不允许中间转发节点进行分片。为什么会这么设计呢?本文将从三个方面进行讨论,同时结合其他参考文章进行解释。

IPv6路径MTU发现机制

参考杨宁老师的《IPv6和MIPv6参考文档》,路径MTU(Path MTU,PMTU)是从分组源到目的节点的路径上所有链路MTU中的最小值。由于IPv6不允许在转发路由器上进行分片,因此IPv6源节点需要使用路径MTU发现机制来确定PMTU,以确保分组或分片不超过PMTU,从而能被路径上的所有路由器成功转发。
IPv6路径MTU发现机制1
IPv6路径MTU发现机制2

分组和重组的过程

在IPv4当中,中间路由器的分组以及目的主机的重组是很耗费时间的。这对网络当中的效率产生了一定程度的影响。所以,IPv6只允许源分片可以减少重组的时间,从而提高数据转发的效率。

分组的代价

我们经常可以听到递归是一个程序员永远的梦魇,为什么呢?分治和递归作为算法的入门,是通过重复将问题分解为同类的子问题而解决问题的方法。有两个重要的的问题,就是合并的时候,如何合并以及合并的次数(子问题的规模)是多少?递归的深度越深,合并的次数越多,那么效率也会收到影响,如下图所示:
分治
同样的,在IPv4的分组,分组可以使得满足接收方的有效负载大小的同时,它也有一定的代价。分组太小那么路径的传输不能有效利用,分组太大会导致丢包,它在转发过程中每进行一次分片,它就会给转发带来更多的代价——降低了数据包转发的效率。


当然参考其他的两篇文章,可以或者其他的理解。

参考文章IP 基础知识全家桶,45 张图一套带走
取消了分片/重新组装相关字段。 分片与重组是耗时的过程,IPv6 不允许在中间路由器进行分片与重组,这种操作只能在源与目标主机,这将大大提高了路由器转发的速度。

参考文章网络层——IPv6 概述
对比 IPv4
IPv6 数据报相对于 IPv4 数据报有很多删减的地方,这里关注 3 个方面。

  • 首先是分片与重组的问题,IPv6 数据报不允许在路由器上分片,这个操作只能在源和目的执行。如果中间遇到链路的 MTU 较小怎么办?这个时候路由器就直接丢包,然后向发送发发一个“分组太大”的 ICMP 报文,然后源就根据这个报文,把数据报分成更小的几个再重传。这种设计时合理的,因为路由器的分片是耗时的操作,这样可以是 IP 数据报转发的速度提高。
  • 第二个我们关注首部校验和的问题,这个字段在 IPv6 中已经没了。因为在传输层、数据链路层协议中,有很多协议都有具备错误检测的功能,而首部校验和因为有 TTL 等参数变化,计算的开销很大。因此把这个字段去除之后,也可以提升 IP 数据报转发的速度。
  • 第三个我们关注选项,这个字段在 IPv6 中已经没了,不过它的功能被归并到下一个首部字段中了。这种改动可以使得 IP 数据报的首部长度为定长,也就是 40 字节。
  • 4
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值