IPv6 第六代互联网协议

IPv6

IPv6 也被称为 IPng (IP Next Generation) ,是网际协议的最新版本,用作互联网的协议。主要是为了解决 IPv4 地址枯竭问题 IP 地址长度从原来的 32 位升级为 128 位。IPv6 以其简化的报文头格式、充足的地址空间、层次化的地址结构、灵活的扩展头、增强的邻居发现机制将在未来的市场竞争中充满活力

IPv6 报文

  • Version : 版本号,4 表示 IPv4 ,6 则表示 IPv6
  • Traffic class : 流量类别。该字段以区分业务编码点 (DSCP) 标记一个 IPv6 数据包,以此指明数据包应当如何处理
  • Flow Label : 流标签。该字段用来标记 IP 数据包的一个流,当前的标准中没有定义如何管理和处理流标签的细节
  • Payload length:载荷长度。有效载荷是指紧跟 IPv6 基本报头的数据包,包含 IPv6 扩展报头
  • Next header : 下一个报头。指明 IPv6 基本报头后的扩展报头的信息类型
  • Hop limit : 跳数限制。该字段定义了 IPv6 数据包所能经过的最大跳数,类似 IPv4 的 TTL
  • Source Address : 源地址
  • Destination Address : 目的地址
  • Extension Headers : 扩展报头

扩展报头

IPv6 取消了 IPv4 报头中的选项字段,并引入了多种扩展报文头,在提高处理效率的同时还增强了 IPv6 的灵活性,为 IP 协议提供了良好的扩展能力,RFC 2460 中定义了 6 个 IPv6 扩展头 。扩展头长度任意,不受 40 字节限制,但报头总是 8 字节长度的整数倍

逐跳选项报头 (Next Header = 0)
该选项主要用于为在传送路径上的每跳转发指定发送参数,传送路径上的每台中间节点都要读取并处理该字段

目的选项报头 (Next Header = 60)
目的选项报头携带了一些只有目的节点才会处理的信息

路由报头 (Next Header = 43)
路由报头和 IPv4 的 Loose Source and Record Route 选项类似,该报头能够被 IPv6 源节点用来强制数据包经过特定的设备

分段报头 (Next Header = 44)
当报文长度超过 MTU 时就需要将报文分段发送

认证报头 (Next Header = 51)
IPsec 使用,提供认证、数据完整性以及重放保护

封装安全净载报头 (Next Header = 50)
IPsec 使用,提供认证、数据完整性以及重放保护和 IPv6 数据报的保密,类似于认证报头

当超过一种扩展报头被用在同一个分组里时,前面报头的 Next Header 字段指明下一个扩展报头的类型,并且报头必须按照下列顺序出现 :

  1. IPv6 基本报头
  2. 逐跳选项扩展报头
  3. 目的选项扩展报头
  4. 路由扩展报头
  5. 分片扩展报头
  6. 授权扩展报头
  7. 封装安全有效载荷扩展报头
  8. 目的选项扩展报头 (指那些将被分组报文的最终目的地处理的选项)
  9. 上层扩展报头

不是所有的扩展报头都需要被转发路由设备查看和处理。路由设备转发时根据基本报头中 Next Header 值来决定是否要处理扩展头。除了目的选项扩展报头出现两次 (一次在路由扩展报头之前,另一次在上层扩展报头之前),其余扩展报头只出现一次

IPv6 编址

IPv6 地址由网络前缀和接口标识两个部分组成。网络前缀有 n 位,相当于 IPv4 地址中的网络 ID;接口标识有 (128-n) 位,相当于 IPv4 地址中的主机 ID

2001:A304:6101:1::E0:F726:4E58

IPv6 地址长度为 128 位,表示为 “X:X:X:X:X:X:X:X”, 每个 X 代表 4 个十六进制值字符,以冒号分隔,一共被分为 8 组。上图地址为 “2001:A304:6101:0001:0000:00E0:F726:4E58” 可缩写为 “2001:A304:6101:1::E0:F726:4E58”

IPv6 地址缩写

1. 每组中的前导 “0” 都可以省略
2. 如果地址中包含连续两个或多个均为 0 的组,可以用双冒号 “::” 来代替
3. 一个 IPv6 地址中只能使用一次双冒号 “::”,否则当计算机将压缩后的地址恢复成 128 位时,无法确定每个 “::” 代表 0 的个数

接口 ID 可通过三种方法生成 : 手工配置、系统通过软件自动生成或 IEEE EUI-64 规范生成

IEEE EUI-64 规范是将接口的 MAC 地址转换为 IPv6 接口标识的过程。如下图所示,MAC 地址的前 24 位 (用 C 表示的部分) 为厂商标识 (OUI),后 24 位 (用 X 表示的部分) 为序列号 (SN)

U/L (全局/本地)

U/L 位是第一个字节的第七位,标示该地址是全局管理的还是本地管理的。0 为通过分配唯一的公司 ID,IEEE 已对地址进行了管理。1 为本地管理,网络管理员已覆盖制造地址,并指定其他地址

I/G (个人/组)

I/G 位是第一个字节的最低位,用来确定地址是个人地址(单播)还是组地址(多播)。设置为 0 时,地址是单播地址。设置为 1 时,地址是多播地址
  1. 将 FFFE 插入 MAC 地址的 OUI 和 SN 之间
  2. 将第一个字节的第 7 位 0 改为 1 表示此接口标识全球唯一

IPv6 地址分类

单播 (unicast)
单播地址标示一个网络接口。协议会把送往地址的数据包送往给其接口。IPv6 的单播地址可以有一个代表特殊地址名字的范畴,如链路本地地址和唯一区域地址。单播地址包括 : 未指定地址 (::/128)、环回地址 (::1/128)、全球单播地址、链路本地地址 (FE80::/10)、唯一本地地址 ULA 等

任播 (anycast)
任播像是单播与广播的综合,有一组接收节点的地址列表,指定为 Anycast 的数据包只会发送给距离最近或发送成本最低 (根据路由表来判断) 的其中一个接收地址,当该接收地址收到数据包并进行回应,且加入后续的传输。该接收列表的其他节点,会知道某个节点地址已经回应了,它们就不再加入后续的传输作业
anycast 地址只能分配给中间设备 (如路由器、三层交换机等),不能分配给终端设备 (手机、电脑等),不能作为发送端的地址

多播 (multicast)
多播地址也称组播地址。多播地址也被指定到一群不同的接口,送到多播地址的数据包会被发送到所有的地址。多播地址由皆为一的字节起始,亦即 : 它们的前置为 FF00::/8 。其第二个字节的最后四个比特用以标明”范畴”。例如组播地址 FF02::1 表示链路本地范围的所有节点,组播地址 FF02::2 表示链路本地范围的所有路由器

IPv4 到 IPv6 过渡技术

双栈协议
网络中的节点同时支持 IPv4 和 IPv6 协议栈,源节点根据目的节点的不同选用不同的协议栈,而网络设备根据报文的协议类型选择不同的协议栈进行处理和转发。双栈可以在一个单一的设备上实现,也可以是一个双栈骨干网。对于双栈骨干网,其中的所有设备必须同时支持 IPv4/IPv6 协议栈,连接双栈网络的接口必须同时配置 IPv4 地址和 IPv6 地址

隧道技术
这种模式运用于 IPv4 和 IPv6 的边界。先借助 IPv4 网络来建立 IPv4 隧道,然后实现 IPv6 点到点访问,通常用于 IDC 出口边界或内部 IGP 跨域访问。技术协议包括 6in4 隧道、DS+NAT、DS-Lite、ISATAP、GRE 等。隧道模式是三种改造方式中最便捷的一种,但是对内网 IGP 协议以及关键链路流量用量有一定的要求

转换模式 (NAT64)
通过 NAT 46,进行 IPv4 to IPv6 或 IPv6 to IPv4 访问转换,可满足 IPv4 与 IPv6 之间的双向访问需求。一般面向数据中心出口,提供由外到内,由内到外的映射

相关文档

Huawei-IPv6

rfc2460

rfc2529

rfc4213

曹世宏-IPv6基础

Cisco-NAT64

上一篇
下一篇