IPv6 关键技术简览

IPv6 关键技术

IPv6简介

IPv6的历史

IPv4在被设计之初被赋予厚望。现在看来,它非常优秀地完成了网络互联的各种任务,这一技术现在仍在世界上广泛运用。但是由于不合理的分配和使用、网络的高速发展等原因,IPv4地址在2011年之时就由IANA(The Internet Assigned Numbers Authority,互联网数字分配机构)宣布耗尽。人们很早就意识到了这个迟早到来的问题。1993年,IPng(The Next Generation Internet Protocol,下一代IP)工作组成立,并在一系列建议标准之后于1998年发布了IPv6标准,IPv6正式问世。

为什么我们使用IPv6

在IPv6未广泛应用,IPv4地址告急之时,人们使用NAT将私网映射为公有地址,但是这一技术却存在例如需要修改IP报头中部、地址重叠、增加网络复杂性等难以解决的问题,根本上也不能解决IP地址耗尽的问题。除了地址耗尽之外,IPv4还存在较差的安全性,移动性支持不够等问题,而IPv6则很好地解决了它们。例如,IPv6使用128位地址,地址容量极大扩充;报头简化,只包含8B的报头信息,2个16B的地址,总共固定40B;对移动互联的支持性好,这会在本文的第三部分展示。当下各个国家网络还在不断扩充,物联网技术亦蓬勃发展,对已有的网络格局提出了很大的挑战。基于上述的各个因素,IPv6事实上担负起了新一代网络互联的任务。

IPv6关键技术

IPV6报文与编址

报头

上文已经提到,IPv6的报头只有三个部分:报头信息、源和目的地址。接下来详细解析报头信息的部分。

图1
图 1 IPv6 的报文头部示意图

图1展示了IPv6的报头组成,比IPv4要简约不少,详细来看有如下部分:

版本:6;

流量分类:对应IPv4-ToS,增强了需要特殊处理的数据的服务能力(e.g.最低成本或最大吞吐量);

流标签:表示这一数据包属于源和目标节点之间的一个特定数据包序列,需要中间的路由器特殊处理,默认为0;

有效载荷:对应IPv4-总长度,但是IPv6在计算载荷长度时将扩展报头一起算进去了(见下);

跳数限制:对应IPv4-TTL,是用跳数计算的生命周期;

下一头部:IPv6引入了扩展报头这一新概念,它包括逐跳选项报头、目的选项报头和路由报头等。以逐跳报头为例,它的格式如图2所示:


图 2 逐跳选项报头的格式

其中扩展报头的长度表示这一部分之后的长度(不含它自己),因而选项值是可变长的。逐跳选项报头的作用是其存储的信息在数据包传输路径上所有节点都要检查一遍。这么做的原因是如果含有这一扩展报头,路由器只需检查它而不用管上层信息;而如果没有,路由器只需要简单地将这个数据包路由。

显然报头越简单越容易处理,因而只有在需要特殊选项的场合再将对应的扩展报头接到已有的报头之后,这样就能提高处理和传输的速度。那么,有这么多的扩展报头,IPv6是如何将他们连在一起的?答案是使用类似于链表一样的结构。在此之前本文一直没有提及下一报头域的作用。现在来看,其作用就是“指针”,但是其中包含的是用一个编号表示的下一个报头的内容:可以是上述的各种扩展报头,也可是上层的数据。例如,0表示逐跳选项报头,它(如果有)必须接在第一个报头之后;43表示路由扩展报头;6对应TCP而17对应UDP,这与IPv4相同。将这些报头和上层数据的载荷连在一起,一个完整的IPv6数据包如图3所示:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FvSl330b-1655818030034)(C:\Users\永恒的流星\AppData\Roaming\Typora\typora-user-images\image-20220422215212987.png)]

图 3 完整的 IPv6 数据包格式

编址

接下来是IPv6的编址部分。IPv6使用128位地址。类似于IPv4的点分十进制,IPv6使用冒分十六进制:将四位二进制合并为一位十六进制,每四位十六进制数用冒号分组,之后删除前导0并将连续的0地址合并为“::”。例如,IPv6地址ABCD:0000:0000:0000:0008:0800:800C:417C在简化后表示为:ABCD::8:800:800C:417C。其中双冒号只能使用一次,因为IPv6软件会将地址自动扩展为128位。如果使用两个双冒号则无法得知每个段省略0的长度。

在IPv4中有CIDR表示法,与之相同的是IPv6的前缀表示法,即直接在IPv6地址之后添加“/前缀位数K”。与IPv4的网络分类不同,IPv6直接指定后64位为接口号,也就是一个子网下的某个特定主机。最前面的K位为全球唯一的标识,由IANA进行统一分配,中部64-K位为子网。

IPv6的通信方式与IPv4既有相同又有差别。先从最常用的单播来看。目前,IANA正在分配2000::/3前缀的全局单播地址:


图 4 全局单播地址

在IPv4的单播中有几个特殊的地址,譬如广播地址、本机地址、回送地址等。IPv6中也是如此,例如回送地址指定为::1;未指定地址,即IPv4中主机上电时分配的地址为::,即全0。除此之外,基于IPv4向IPv6进化的考量,IPv6中设置了一个特殊的地址,即内嵌IPv4地址的IPv6地址,具体格式如下:


图 5 内嵌 IPv4 地址的 IPv6 地址

目前,兼容的地址已经很少使用乃至被禁止,而映射的地址则实现了IPv6节点向纯IPv4节点发送数据包的功能。

了解完单播之后再来了解IPv6的多播和任播。多播和IPv4中多播作用相同,使用FF开头的地址。不同的是任播。任播的出现是为了解决对重复性服务的需求问题。简单来说,“发送到任播地址的数据分组会按照路由选择协议的距离方法,被路由选择到有该地址的最近接口”,是一种“一到‘最近点’”的通讯方式。

IPV6路由技术与路由协议

与IPv4相同,IPv6依然使用静态路由和动态路由。静态路由与IPv4完全相同,适用于小型网络。而动态路由依然使用自治系统。在自治系统间使用BGP4+协议,而在自治系统内部广泛使用RIPng与OSPFv3等协议。关于BGP4+和OSPFv3等信息本文限于篇幅不再赘述。接下来以RIPng为例,来看在一个自治系统中IPv6的路由过程。

RIPng报文

RIPng是RIP的IPv6版本,依然使用UDP进行传输。RIPng的报文格式与RIP完全相同,不同的地方在于路由表项的结构,分为两种:下一跳路由表项和IPv6前缀路由表项。前者提供了下一跳的路由信息,在它之后跟着一系列IPv6前缀路由表项,这些表项的下一跳都是它们前面的下一跳路由表项给出的。那么,IPv6前缀RTE(Route Table Entry)存储着什么呢?

img **图 6 IPv6 前缀 RTE**

如图6,IPv6前缀RTE存储着如下信息:IPv6前缀,共16B;路由标签,区分内部或是外部的RIP,可能是从EGP或其他IGP学习来的;前缀长度,指明前缀字段从左至右的重要部分;度量值,类似于TTL,有效值与IPv4相同,即大于15时宣告不可达。

RIPng路由过程

与IPv4的相同,运行RIPng的主机在上电后广播请求邻居的路由表,之后使用网络心跳,每隔30s向邻居通告自身的路由表,邻居接收到路由表并更新。在同步更新/周期更新之外,RIPng中还存在一个异步更新/触发更新,即一个路由器检测到路由变化的时候,使用多播向邻居发送变化。

除此之外,RIPng还维护了如下几个定时器:更新定时器:用于网络心跳,时间设定为30s,每次清零后通告自身路由表;超时定时器:为每个表项维护,时间设定为180s,若180s后该表项仍未更新,则设定为无效;垃圾收集定时器:时间设定为120s,对不可达或无效的表项进行计时,定时器清零时该表项被真正删除。

IPv6的安全性

IPsec

IPv6一个非常重要得以使用的因素是其较高的安全性保证。在IPv4时期就已经出现了IPsec(Internet Protocol Security,互联网安全协议),但它不是IPv4的必选项,而到IPv6时,IPsec成为了强制选项,这也是它比IPv4更安全的一个重要原因。IPsec的体系如图7所示:


图 7 IPsec 体系

在通信实体双方建立连接前需要先协商建立协定,即SA(Security Association,安全关联),它规定了要使用的IPsec协议,提供AH、ESP操作所需的参数等。

传输模式和隧道模式

IPsec工作时有两种模式:传输模式和隧道模式。在传输模式下,IPSec协议会在IP报头和高层协议报头之间插入一个IPSec报头,同时修改IP报头中的下一报头为IPsec(50:ESP 51:AH),之后将原来的数据封装成被保护的数据。在隧道模式下,原始IP报文被封装成一个新的IP报文,原来的报文之前加入一个新的IPsec报头,原来的报文被当做载荷受到IPSec的保护。关于详细的加密和保护功能诸如ESP和AH等,本文就不再赘述了。

IPv4向IPv6过渡

在参考文献[2]中给出了IPv6演进的一种过程:


图 8 向 IPv6 演进的过程

具体完成这一过程,需要详细的技术实现。在上文已经提到过渡的一种方式,即使用内嵌IPv4地址的IPv6地址。除此之外,接下来还将简要介绍其他的几种过渡方式:双栈技术、隧道技术和转换机制。

双栈技术的栈指的就是协议栈,使用双栈技术的主机在一个系统中同时装载IPv4和IPv6两个协议栈,它们并行工作。主机接收到来自链路层的数据,判断是何版本的IP协议并交给相应的栈进行处理。而IP版本对上层的协议例如TCP和UDP等并没有多大的影响,因而网络层处理结束后继续交由上层处理即可。

隧道技术实质上是封装与解封装的过程。这一过程在上文中讲述IPsec的工作模式时已有所体现。隧道的入口将IPv6数据包封装在IPv4数据包中进行传输,到达之后交由IPv6协议处理。这以技术要求入口路由器运行双栈。扩展来看,这一技术也能在之后的阶段将IPv4封装在IPv6中进行传输,以解决残余的仍在运行的IPv4协议。

转换机制用以解决不同IP版本的通信问题,简单来说有在网络层、传输层和应用层的协议进行转化等途径。这里于受限于篇幅就不再赘述了。针对这三个方式,相关文献给出了对比:


表 1 不同演进技术的对比

IPv6未来展望

以工业互联网IPv6部署为例

上文已经提及向IPv6演进的四个阶段。在近几年,IPv6已在不少地方进行了实验性的尝试,例如重庆邮电大学在国内已开展基于 IPv6 的工业互联网的相关关键技术和标准体系研究。这里以一个设计出的可行性方案为例来观察IPv6在实际工业生产中的应用。详情可阅读参考文献[4]。


图 9 一种运用 IPv6 的工业互联网模式

可以看到,该设计体系中,工业互联网的应用层与传输层均由IPv6完成,在工厂的内外实现了网络互联。应用层部署的工业云、工业软件、工业软件工具开发包、服务器端程序都支持 IPv6 访问。但同时,相关文献也指出目前针对基于 IPv6 的工业互联网的互联互通标准的研究较少。在基于不同的标准化组织之上进一步完善通信标准化问题仍是一个重要的任务。

IPv6与移动互联

上文已经提到,IPv6相对于IPv4的一大优势就是对移动互联的强大支持。其优点在于即使移动节点改变地理位置,移动IPv6也仍然会保持移动节点赖以通信的现有连接,其原理在于处理IP层的地址变化。具体来说,移动节点同时使用两个地址:家乡地址和转交地址。家乡地址供传输层及以上使用,固定不变;转交地址在网络层使用,使得报文能够路由至移动节点的当前位置。因此TCP等上层协议完全不知道移动终端已经改变位置,而地址的转化由网络层完成。

近期,移动IPv6关注的重点不仅在于移动的切换,还需要保证切换的流畅性。如今已经发展出了许多加快切换流畅度的方案,例如快速切换方案(F-MIPv6)、层次切换方案(H- MIPv6)和层次快速切换方案(F-H- MIPv6)。从切换延迟和丢包率的角度看,快速切换方案和层次快速切换方案相对来说表现比较好,而从信令负载的角度看,则层次切换方案和层次快速切换方案表现良好。不同方案各有千秋,需要根据不同场合布置。移动互联是IPv6非常重要的一个组成部分,开发意义巨大尤其是对于物联网技术来说意义深远。

回顾与总结

回顾一下,本文从IPv6的历史开始,逐步介绍了包括IPv6的报文、编址、路由、安全性等关键技术,还介绍了IPv6的演进展望、移动互联以及一些其他的最新技术。宏观来说,仅通过这一篇文章是难以观测IPv6的全貌的,仍需要不断深入的学习。IPv6自问世以来到现在仍然在不断发展,充满活力,最终有一天能成为运用广泛的网络层技术,为不断发展的互联网世界注入更便捷更高效的活力。

主要参考文献

[1] 余琨,伍孝金.IPv6 技术与应用(第 2 版)[M].北京:清华大学出版社,2020.
[2] [美]Silvia Hagen.IPv6 精髓[M].夏俊杰译.北京:人民邮电出版社,2013.
[3] 李 婷 婷 , 欧 阳 峰 .IPv6 演 进 关 键 技 术 分 析 [J]. 广 播 电 视 信
息,2021,28(12):90-93.DOI:10.16045/j.cnki.rti.2021.12.026.
[4] 魏旻,胡港慧,王平,王浩,张焱,谢昊飞.基于 IPv6 的工业互联网关键技术及其标
准化研究[J].信息技术与标准化,2022(03):45-49+56.
[5] 朱光.IPv6 技术及其在移动互联网中的应用[J].中国科技信息,2022(07):67-68.
[6] 田 辉 , 关 旭 迎 , 邬 贺 铨 .IPv6+ 网 络 创 新 体 系 发 展 布 局 [J]. 中 兴 通 讯 技
术,2022,28(01):3-7.

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值