IPv6是英文“Internet Protocol Version 6”(互联网协议第6版)的缩写,是互联网工程任务组(IETF)设计的用于替代IPv4的下一代IP协议,其地址数量号称可以为全世界的每一粒沙子编上一个地址。
IPv6 是英文“Internet Protocol Version 6”(互联网协议第 6 版)的缩写,是互联网工程任务组(IETF)设计的用于替代 IPv4 的下一代 IP 协议,其地址数量号称可以为全世界的每一粒沙子编上一个地址。
由于 IPv4 最大的问题在于网络地址资源不足,严重制约了互联网的应用和发展。IPv6 的使用,不仅能解决网络地址资源数量的问题,而且也解决了多种接入设备连入互联网的障碍。
互联网数字分配机构(IANA)在 2016 年已向国际互联网工程任务组(IETF)提出建议,要求新制定的国际互联网标准只支持 IPv6,不再兼容 IPv4。
发展历史
至 1992 年初,一些关于互联网地址系统的建议在 IETF(互联网工程任务组)上提出,并于 1992 年底形成白皮书。在 1993 年 9 月,IETF 建立了一个临时的 ad-hoc 下一代 IP(IPng)领域来专门解决下一代 IP 的问题。这个新领域由 Allison Mankin 和 Scott Bradner 领导,成员由 15 名来自不同工作背景的工程师组成。IETF 于 1994 年 7 月 25 日采纳了 IPng 模型,并形成几个 IPng 工作组。
从 1996 年开始,一系列用于定义 IPv6 的 RFC 发表出来,最初的版本为 RFC1883。由于 IPv4 和 IPv6 地址格式等不相同,因此在未来的很长一段时间里,互联网中出现 IPv4 和 IPv6 长期共存的局面。在 IPv4 和 IPv6 共存的网络中,对于仅有 IPv4 地址,或仅有 IPv6 地址的端系统,两者无法直接通信的,此时可依靠中间网关或者使用其他过渡机制实现通信。
2003 年 1 月 22 日,IETF 发布了 IPv6 测试性网络,即 6bone 网络。它是 IETF 用于测试 IPv6 网络而进行的一项 IPng 工程项目,该工程目的是测试如何将 IPv4 网络向 IPv6 网络迁移。作为 IPv6 问题测试的平台,6bone 网络包括协议的实现、IPv4 向 IPv6 迁移等功能。6bone 操作建立在 IPv6 试验地址分配基础上.并采用 3FFE::/16 的 IPv6 前缀,为 IPv6 产品及网络的测试和试商用部署提供测试环境。
截至 2009 年 6 月,6bone 网络技术已经支持了 39 个国家的 260 个组织机构。6bone 网络被设计成为一个类似于全球性层次化的 IPv6 网络,同实际的互联网类似,它包括伪顶级转接提供商、伪次级转接提供商和伪站点级组织机构。由伪顶级提供商负责连接全球范围的组织机构,伪顶级提供商之间通过 IPv6 的 lBGP-4 扩展来尽力通信,伪次级提供商也通过 BGP-4 连接到伪区域性顶级提供商,伪站点级组织机构连接到伪次级提供商。伪站点级组织机构可以通过默认路由或 BGP-4 连接到其伪提供商。6bone 最初开始于虚拟网络,它使用 IPv6-over-IPv4 隧道过渡技术。因此,它是一个基于 IPv4 互联网且支持 IPv6 传输的网络,后来逐渐建立了纯 IPv6 链接。
从 2011 年开始,主要用在个人计算机和服务器系统上的操作系统基本上都支持高质量 IPv6 配置产品。例如,Microsoft Windows 从 Windows 2000 起就开始支持 IPv6,到 Windows XP 时已经进入了产品完备阶段。而 Windows Vista 及以后的版本,如 Windows 7、Windows 8 等操作系统都已经完全支持 IPv6,并对其进行了改进以提高支持度。Mac OS X Panther(10.3)、Linux 2.6、FreeBSD 和 Solaris 同样支持 IPv6 的成熟产品。一些应用基于 IPv6 实现.如 BitTorrent 点到点文件传输协议等,避免了使用 NAT 的 IPv4 私有网络无法正常使用的普遍问题。
2012 年 6 月 6 日,国际互联网协会举行了世界 IPv6 启动纪念日,这一天,全球 IPv6 网络正式启动。多家知名网站,如 Google、Facebook 和 Yahoo 等,于当天全球标准时间 0 点(北京时间 8 点整)开始永久性支持 IPv6 访问。
根据飓风电子统计,截至 2013 年 9 月,互联网 318 个顶级域名中的 283 个支持 IPv6 接入它们的 DNS。约占 89.0%,其中 276 个域名包含 IPv6 黏附记录,共 5,138,365 个域名在各自的域内拥有 IPv6 地址记录。
2017 年 11 月 26 日,中共中央办公厅、国务院办公厅印发《推进互联网协议第六版(IPv6)规模部署行动计划》。
2018 年 7 月,百度云制定了中国的 IPv6 改造方案。11 月,国家下一代互联网产业技术创新战略联盟在北京发布了中国首份 IPv6 业务用户体验监测报告显示,移动宽带 IPv6 普及率为 6.16%,IPv6 覆盖用户数为 7017 万户,IPv6 活跃用户数仅有 718 万户,与国家规划部署的目标还有较大距离。
2019 年 4 月 16 日,工业和信息化部发布《关于开展 2019 年 IPv6 网络就绪专项行动的通知》。
2020 年 3 月 23 日,工业和信息化部发布《关于开展 2020 年 IPv6 端到端贯通能力提升专项行动的通知》,要求到 2020 年末,IPv6 活跃连接数达到 11.5 亿,较 2019 年 8 亿连接数的目标提高了 43%。
组成结构
表示方法
IPv6 的长分布式结构图
一、冒分十六进制表示法 格式为 X:X:X:X:X:X:X:X,其中每个 X 表示地址中的 16b,以十六进制表示,例如: ABCD:EF01:2345:6789:ABCD:EF01:2345:6789 这种表示法中,每个 X 的前导 0 是可以省略的,例如: 2001:0DB8:0000:0023:0008:0800:200C:417A→ 2001:DB8:0:23:8:800:200C:417A
二、0 位压缩表示法 在某些情况下,一个 IPv6 地址中间可能包含很长的一段 0,可以把连续的一段 0 压缩为“::”。但为保证地址解析的唯一性,地址中”::”只能出现一次,例如: FF01:0:0:0:0:0:0:1101 → FF01::1101 0:0:0:0:0:0:0:1 → ::1 0:0:0:0:0:0:0:0 → ::
三、内嵌 IPv4 地址表示法 为了实现 IPv4-IPv6 互通,IPv4 地址会嵌入 IPv6 地址中,此时地址常表示为:X:X:X:X:X:X:d.d.d.d,前 96b 采用冒分十六进制表示,而最后 32b 地址则使用 IPv4 的点分十进制表示,例如::192.168.0.1 与::FFFF:192.168.0.1 就是两个典型的例子,注意在前 96b 中,压缩 0 位的方法依旧适用。
报文内容
IPv6 报文的整体结构分为 IPv6 报头、扩展报头和上层协议数据 3 部分。IPv6 报头是必选报文头部,长度固定为 40B,包含该报文的基本信息;扩展报头是可选报头,可能存在 0 个、1 个或多个,IPv6 协议通过扩展报头实现各种丰富的功能;上层协议数据是该 IPv6 报文携带的上层数据,可能是 ICMPv6 报文、TCP 报文、UDP 报文或其他可能报文。
IPv6 的报文头部结构如图:
扩展头部:IPv6 报文中不再有“选项”字段,而是通过“下一报头”字段配合 IPv6 扩展报头来实现选项的功能。使用扩展头时,将在 IPv6 报文下一报头字段表明首个扩展报头的类型,再根据该类型对扩展报头进行读取与处理。每个扩展报头同样包含下一报头字段,若接下来有其他扩展报头,即在该字段中继续标明接下来的扩展报头的类型,从而达到添加连续多个扩展报头的目的。在最后一个扩展报头的下一报头字段中,则标明该报文上层协议的类型,用以读取上层协议数据。
地址类型
IPv6 协议主要定义了三种地址类型:单播地址(Unicast Address)、组播地址(Multicast Address)和任播地址(Anycast Address)。与原来在 IPv4 地址相比,新增了“任播地址”类型,取消了原来 IPv4 地址中的广播地址,因为在 IPv6 中的广播功能是通过组播来完成的。
单播地址:用来唯一标识一个接口,类似于 IPv4 中的单播地址。发送到单播地址的数据报文将被传送给此地址所标识的一个接口。
组播地址:用来标识一组接口(通常这组接口属于不同的节点),类似于 IPv4 中的组播地址。发送到组播地址的数据报文被传送给此地址所标识的所有接口。
任播地址:用来标识一组接口(通常这组接口属于不同的节点)。发送到任播地址的数据报文被传送给此地址所标识的一组接口中距离源节点最近(根据使用的路由协议进行度量)的一个接口。
IPv6 地址类型是由地址前缀部分来确定,主要地址类型与地址前缀的对应关系如下:
FC00::/7
(包括 FD00::/8 和
不常用的 FC00::/8)
单播地址
IPv6 单播地址与 IPv4 单播地址一样,都只标识了一个接口。为了适应负载平衡系统,RFC3513 允许多个接口使用同一个地址,只要这些接口作为主机上实现的 IPv6 的单个接口出现。单播地址包括四个类型:全局单播地址、本地单播地址、兼容性地址、特殊地址。
一、全局单播地址:等同于 IPv4 中的公网地址,可以在 IPv6 Internet 上进行全局路由和访问。这种地址类型允许路由前缀的聚合,从而限制了全球路由表项的数量。
二、本地单播地址:
链路本地地址和唯一本地地址都属于本地单播地址,在 IPv6 中,本地单播地址就是指本地网络使用的单播地址,也就是 IPV4 地址中局域网专用地址。每个接口上至少要有一个链路本地单播地址,另外还可分配任何类型(单播、任播和组播)或范围的 IPv6 地址。
(1)链路本地地址(FE80::/10):仅用于单个链路(链路层不能跨 VLAN),不能在不同子网中路由。结点使用链路本地地址与同一个链路上的相邻结点进行通信。例如,在没有路由器的单链路 IPv6 网络上,主机使用链路本地地址与该链路上的其他主机进行通信。
(2)唯一本地地址(FC00::/7):唯一本地地址是本地全局的,它应用于本地通信,但不通过 Internet 路由,将其范围限制为组织的边界。
(3)站点本地地址(FEC0::/10,新标准中已被唯一本地地址代替)
三、兼容性地址:在 IPv6 的转换机制中还包括了一种通过 IPv4 路由接口以隧道方式动态传递 IPv6 包的技术。这样的 IPv6 结点会被分配一个在低 32 位中带有全球 IPv4 单播地址的 IPv6 全局单播地址。另有一种嵌入 IPv4 的 IPv6 地址,用于局域网内部,这类地址用于把 IPv4 结点当作 IPv6 结点。此外,还有一种称为“6to4”的 IPv6 地址,用于在两个通过 Internet 同时运行 IPv4 和 IPv6 的结点之间进行通信。
四、特殊地址:包括未指定地址和环回地址。未指定地址(0:0:0:0:0:0:0:0 或::)仅用于表示某个地址不存在。它等价于 IPv4 未指定地址 0.0.0.0。未指定地址通常被用做尝试验证暂定地址唯一性数据包的源地址,并且永远不会指派给某个接口或被用做目标地址。环回地址(0:0:0:0:0:0:0:1 或::1)用于标识环回接口,允许节点将数据包发送给自己。它等价于 IPv4 环回地址 127.0.0.1。发送到环回地址的数据包永远不会发送给某个链接,也永远不会通过 IPv6 路由器转发。
组播地址
IPv6 组播地址可识别多个接口,对应于一组接口的地址(通常分属不同节点)。发送到组播地址的数据包被送到由该地址标识的每个接口。使用适当的组播路由拓扑,将向组播地址发送的数据包发送给该地址识别的所有接口。任意位置的 IPv6 节点可以侦听任意 IPv6 组播地址上的组播通信。IPv6 节点可以同时侦听多个组播地址,也可以随时加入或离开组播组。
IPv6 组播地址的最明显特征就是最高的 8 位固定为 1111 1111。IPv6 地址很容易区分组播地址,因为它总是以 FF 开始的。
任播地址
一个 IPv6 任播地址与组播地址一样也可以识别多个接口,对应一组接口的地址。大多数情况下,这些接口属于不同的节点。但是,与组播地址不同的是,发送到任播地址的数据包被送到由该地址标识的其中一个接口。
通过合适的路由拓扑,目的地址为任播地址的数据包将被发送到单个接口(该地址识别的最近接口,最近接口定义的根据是因为路由距离最近),而组播地址用于一对多通信,发送到多个接口。一个任播地址必须不能用作 IPv6 数据包的源地址;也不能分配给 IPv6 主机,仅可以分配给 IPv6 路由器。
使用协议
地址配置协议
IPv6 使用两种地址自动配置协议,分别为无状态地址自动配置协议(SLAAC)和 IPv6 动态主机配置协议(DHCPv6)。SLAAC 不需要服务器对地址进行管理,主机直接根据网络中的路由器通告信息与本机 MAC 地址结合计算出本机 IPv6 地址,实现地址自动配置;DHCPv6 由 DHCPv6 服务器管理地址池,用户主机从服务器请求并获取 IPv6 地址及其他信息,达到地址自动配置的目的。
一、无状态地址自动配置 无状态地址自动配置的核心是不需要额外的服务器管理地址状态,主机可自行计算地址进行地址自动配置,包括 4 个基本步骤: 1. 链路本地地址配置。主机计算本地地址。 2. 重复地址检测,确定当前地址唯一。 3. 全局前缀获取,主机计算全局地址。 4. 前缀重新编址,主机改变全局地址。
二、IPv6 动态主机配置协议 IPv6 动态主机配置协议 DHCPv6 是由 IPv4 场景下的 DHCP 发展而来。客户端通过向 DHCP 服务器发出申请来获取本机 IP 地址并进行自动配置,DHCP 服务器负责管理并维护地址池以及地址与客户端的映射信息。 DHCPv6 在 DHCP 的基础上,进行了一定的改进与扩充。其中包含 3 种角色:DHCPv6 客户端,用于动态获取 IPv6 地址、IPv6 前缀或其他网络配置参数;DHCPv6 服务器,负责为 DHCPv6 客户端分配 IPv6 地址、IPv6 前缀和其他配置参数;DHCPv6 中继,它是一个转发设备。通常情况下。DHCPv6 客户端可以通过本地链路范围内组播地址与 DHCPv6 服务器进行通信。若服务器和客户端不在同一链路范围内,则需要 DHCPv6 中继进行转发。DHCPv6 中继的存在使得在每一个链路范围内都部署 DHCPv6 服务器不是必要的,节省成本,并便于集中管理。
路由协议
IPSec 机制协议安全的实现
与 IPv4 相同,IPv6 路由协议同样分成内部网关协议(IGP)与外部网关协议(EGP),其中 IGP 包括由 RIP 变化而来的 RIPng,由 OSPF 变化而来的 OSPFv3,以及 IS-IS 协议变化而来的 IS-ISv6。EGP 则主要是由 BGP 变化而来的 BGP4+。
一、RIPng 下一代 RIP 协议(RIPng)是对原来的 RIPv2 的扩展。大多数 RIP 的概念都可以用于 RIPng。为了在 IPv6 网络中应用,RIPng 对原有的 RIP 协议进行了修改: UDP 端口号:使用 UDP 的 521 端口发送和接收路由信息。 组播地址:使用 FF02::9 作为链路本地范围内的 RIPng 路由器组播地址。 路由前缀:使用 128 位的 IPv6 地址作为路由前缀。 下一跳地址:使用 128 位的 IPv6 地址。
二、OSPFv3 RFC 2740 定义了 OSPFv3,用于支持 IPv6。OSPFv3 与 OSPFv2 的主要区别如下: 1. 修改了 LSA 的种类和格式,使其支持发布 IPv6 路由信息。 2. 修改了部分协议流程。主要的修改包括用 Router-lD 来标识邻居,使用链路本地地址来发现邻居等,使得网络拓扑本身独立于网络协议,以便于将来扩展。 3. 进一步理顺了拓扑与路由的关系。OSPFv3 在 LSA 中将拓扑与路由信息相分离,在一、二类 LSA 中不再携带路由信息,而只是单纯的拓扑描述信息,另外增加了八、九类 LSA,结合原有的三、五、七类 LSA 来发布路由前缀信息。 4. 提高了协议适应性。通过引入 LSA 扩散范围的概念进一步明确了对未知 LSA 的处理流程,使得协议可以在不识别 LSA 的情况下根据需要做出恰当处理,提高了协议的可扩展性。
三、BGP 4+ 传统的 BGP 4 只能管理 IPv4 的路由信息,对于使用其他网络层协议(如 IPv6 等)的应用,在跨自治系统传播时会受到一定的限制。为了提供对多种网络层协议的支持,IETF 发布的 RFC2858 文档对 BGP 4 进行了多协议扩展,形成了 BGP4+。 为了实现对 IPv6 协议的支持,BGP 4+必须将 IPv6 网络层协议的信息反映到 NLRl(Network Layer Reachable Information)及下一跳(Next Hop)属性中。为此,在 BGP4+中引入了下面两个 NLRI 属性。 MP_REACH_NLRI:多协议可到达 NLRI,用于发布可到达路由及下一跳信息。 MP_UNREACH_NLRI:多协议不可达 NLRI,用于撤销不可达路由。 BGP 4+中的 Next Hop 属性用 IPv6 地址来表示,可以是 IPv6 全局单播地址或者下一跳的链路本地地址。BGP 4 原有的消息机制和路由机制没有改变。
四、ICMPv6 协议 ICMPv6 协议用于报告 IPv6 节点在数据包处理过程中出现的错误消息,并实现简单的网络诊断功能。ICMPv6 新增加的邻居发现功能代替了 ARP 协议的功能,所以在 IPv6 体系结构中已经没有 ARP 协议了。除了支持 IPv6 地址格式之外,ICMPv6 还为支持 IPv6 中的路由优化、IP 组播、移动 IP 等增加了一些新的报文类型。
过渡技术
IPv6 不可能立刻替代 IPv4,因此在相当一段时间内 IPv4 和 IPv6 会共存在一个环境中。要提供平稳的转换过程,使得对现有的使用者影响最小,就需要有良好的转换机制。这个议题是 IETF ngtrans 工作小组的主要目标,有许多转换机制被提出,部分已被用于 6Bone 上。IETF 推荐了双协议栈、隧道技术以及网络地址转换等转换机制:
一、IPv6/IPv4 双协议栈技术 双栈机制就是使 IPv6 网络节点具有一个 IPv4 栈和一个 IPv6 栈,同时支持 IPv4 和 IPv6 协议。IPv6 和 IPv4 是功能相近的网络层协议,两者都应用于相同的物理平台,并承载相同的传输层协议 TCP 或 UDP,如果一台主机同时支持 IPv6 和 IPv4 协议,那么该主机就可以和仅支持 IPv4 或 IPv6 协议的主机通信。
二、隧道技术
隧道技术
三、网络地址转换技术 网络地址转换(Network Address Translator,NAT)技术是将 IPv4 地址和 IPv6 地址分别看作内部地址和全局地址,或者相反。例如,内部的 IPv4 主机要和外部的 IPv6 主机通信时,在 NAT 服务器中将 IPv4 地址(相当于内部地址)变换成 IPv6 地址(相当于全局地址),服务器维护一个 IPv4 与 IPv6 地址的映射表。反之,当内部的 IPv6 主机和外部的 IPv4 主机进行通信时,则 IPv6 主机映射成内部地址,IPv4 主机映射成全局地址。NAT 技术可以解决 IPv4 主机和 IPv6 主机之间的互通问题。
优势特点
IPv4 和 IPv6 地址对比
一、IPv6 具有更大的地址空间。IPv4 中规定 IP 地址长度为 32,最大地址个数为 2^32;而 IPv6 中 IP 地址的长度为 128,即最大地址个数为 2^128。与 32 位地址空间相比,其地址空间增加了 2^128-2^32 个。
二、IPv6 使用更小的路由表。IPv6 的地址分配一开始就遵循聚类(Aggregation)的原则,这使得路由器能在路由表中用一条记录(Entry)表示一片子网,大大减小了路由器中路由表的长度,提高了路由器转发数据包的速度。
三、IPv6 增加了增强的组播(Multicast)支持以及对流的控制(Flow Control),这使得网络上的多媒体应用有了长足发展的机会,为服务质量(QoS,Quality of Service)控制提供了良好的网络平台。
四、IPv6 加入了对自动配置(Auto Configuration)的支持。这是对 DHCP 协议的改进和扩展,使得网络(尤其是局域网)的管理更加方便和快捷。
H3C IPv6 网解决方案
六、允许扩充。如果新的技术或应用需要时,IPV6 允许协议进行扩充。
七、更好的头部格式。IPV6 使用新的头部格式,其选项与基本头部分开,如果需要,可将选项插入到基本头部与上层数据之间。这就简化和加速了路由选择过程,因为大多数的选项不需要由路由选择。
八、新的选项。IPV6 有一些新的选项来实现附加的功能。
安全性能
原来的 Internet 安全机制只建立于应用程序级,如 E-mail 加密、SNMPv2 网络管理安全、接入安全(HTTP、SSL)等,无法从 IP 层来保证 Internet 的安全。IP 级的安全保证分组的鉴权和私密特性,其具体实现主要由 IP 的 AH(Authentication Header)和 ESP(Encapsulating Security Payload)标记来实现。IPv6 实现了 IP 级的安全。
一、安全协议套:是发送者和接收者的双向约定,只由目标地址和安全参数索引(SPI)确定。
二、包头认证:提供了数据完整性和分组的鉴权。
三、安全包头封装:ESP 根据用户的不同需求,支持 IP 分组的私密和数据完整性。 它既可用于传送层(如 TCP、UDP、ICMP)的加密, 称传送层模式 ESP,同时又可用于整个分组的加密,称隧道模式 ESP。
四、ESPDES-CBC 方式:ESP 处理一般必须执行 DES-CBC 加密算法,数据分为以 64 位为单位的块进行处理,解密逻辑的输入是现行数据和先前加密数据块的与或。
五、鉴权加私密方式:根据不同的业务模式,两种 IP 安全机制可以按一定的顺序结合,从而达到分组传送加密的目的。按顺序的不同,分为鉴权之前加密和加密之前鉴权。
应用前景
虽然 IPv6 在全球范围内还仅仅处于研究阶段,许多技术问题还有待于进一步解决,并且支持 IPv6 的设备也非常有限。但总体来说,全球 IPv6 技术的发展不断进行着,并且随着 IPv4 消耗殆尽,许多国家已经意识到了 IPv6 技术所带来的优势,特别是中国,通过一些国家级的项目,推动了 IPv6 下一代互联网全面部署和大规模商用。随着 IPv6 的各项技术日趋完美,其成本过高、发展缓慢、支持度不够等问题将很快淡出人们的视野。