IPv6

概述

20世纪80年代,IETF(Internet Engineering Task Force,因特网工程任务组)发布RFC791,即IPv4协议,标志IPv4正式标准化。在此后的几十年间,IPv4协议成为最主流的协议之一。无数人在IPv4的基础上开发出了各种应用,并且对这个协议做了各种补充和增强,支撑起了今天繁荣的互联网。

然而随着互联网规模越来越大,以及5G、物联网等新兴技术的发展,IPv4面临的挑战也越来越多,IPv6取代IPv4势在必行。

优势

优势 解释
“无限”地址空间 地址长度为128bit,海量的地址空间,满足物联网等新兴业务、有利于业务演进及扩展。
层次化的地址结构 相较于IPv4地址,IPv6地址的分配更加规范,利于路由聚合(缩减IPv6路由表规模)、路由快速查询。
即插即用 IPv6支持无状态地址自动配置(SLAAC),终端接入更简单。
简化的报文头部 简化报文头部,提高效率;通过扩展包头支持新应用,利于路由器等网络设备的转发处理,降低投资成本。
安全特性 IPsec、真实源地址认证等保证端到端安全;避免NAT破坏端到端通信的完整性。
移动性 对移动网络实时通信有较大改进,整个移动网络性能有比较大的提升。
增强QoS特性 额外定义了流标签字段,可为应用程序或者终端所用,针对特殊的服务和数据流分配特定的资源。

基本包头

IPv6包头由一个IPv6基本包头(必须存在)和多个扩展包头(可能不存在)组成。

基本包头提供报文转发的基本信息,会被转发路径上的所有设备解析。

image-1

扩展包头

image-2

Extension Header Length:扩展包头长度,长度为8bit。表示扩展包头的长度(不包含Next Header字段)。

Extension Header Data:扩展包头数据,长度可变。扩展包头的内容为一系列选项字段和填充字段的组合。

image-3

报文处理机制

image-4

IPv6地址

IPv6地址的长度为128bit。一般用冒号分割为8段,每一段16bit,每一段内用十六进制表示。

image-5

与IPv4地址类似,IPv6也用“IPv6地址/掩码长度”的方式来表示IPv6地址。

image-6

IPv6缩写规范

为了书写方便,IPv6可采用以下规则进行缩写。

image-7

IPv6地址分类

根据IPv6地址前缀,可将IPv6地址分为单播地址、组播地址和任播地址。

image-8

IPv6单播

地址结构

一个IPv6单播地址可以分为如下两部分:

网络前缀(Network Prefix):n bit,相当于IPv4地址中的网络ID。

接口标识(Interface Identify):(128-n)bit,相当于IPv4地址中的主机ID。

常见的IPv6单播地址如全球单播地址、链路本地地址等,要求网络前缀和接口标识必须为64 bit。

image-9

地址接口标识

接口标识可通过三种方法生成:

  • 手工配置
  • 系统自动生成
  • 通过IEEE EUI-64规范生成

其中EUI-64规范最为常用,此规范将接口的MAC地址转换为IPv6接口标识。

image-10

GUA

GUA(Global Unicast Address,全球单播地址),也被称为可聚合全球单播地址。该类地址全球唯一,用于需要有互联网访问的需求的主机,相当于IPv4的公网地址。

image-11

通常GUA的网络部分长度为64bit,接口标识也为64bit。

全局路由前缀:由提供商指定给一个组织机构,一般至少为45bit。

子网ID:组织机构根据自身网络需求划分子网。

接口标识:用来标识一个设备的接口。

ULA

ULA(Unique Local Address,唯一本地地址)是IPv6私网地址,只能够在内网中使用。该地址空间在IPv6公网中不可被路由,因此不能直接访问公网。

image-12

唯一本地地址使用FC00::/7地址块,目前仅使用了FD00::/8地址段。FC00::/8预留位以后拓展使用。

ULA虽然只能在有限范围内有效,但也具有全球唯一的前缀(虽然随机方式产生,但是冲突概率很低)。

LLA

LLA(Link-Local Address,链路本地地址)是IPv6中另一种应用范围受限制的地址类型,LLA的有效范围是本地链路,前缀为FE80::/10。

image-13

LLA用于一条单一链路层面的通信,例如IPv6地址无状态自动配置、IPv6邻居发现等。

源或目的IPv6地址为链路本地地址的数据包将不会被转发到始发的链路之外,换句话说,链路本地地址的有效范围为本地链路。

每一个IPv6接口都必须具备一个链路本地地址。华为设备支持自动生成和手工指定两种配置方式。

IPv6组播

IPv6组播地址标识多个接口,一般用于”一对多“的通信场景。

IPv6组播地址值可以作为IPv6报文的目的地址。

image-14

  • Flags:用来标识永久或临时组播组。
  • Scope:表示组播组的范围。
  • Group ID:组播组ID。

被请求节点组播地址

当一个节点具有了单薄或任播地址,就会对应生成一个被请求节点组播地址,并且加入这个组播组。该地址主要用于邻居发现机制和地址重复检测功能。被请求节点组播地址的有效范围为本地链路范围。

image-15

IPv6任播地址

任播地址标识一组网络接口(通常属于不同的节点)。任播地址可以作为IPv6报文的源地址,也可以作为目的地址。

image-16

IPv6地址配置

主机和路由器的IPv6地址

一般情况下,主机和路由器的单播IPv6地址以及加入的组播地址如下所示:

image-17

IPv6单播地址业务流程

一个接口在发送IPv6报文之前要经历地址配置、DAD、地址解析这三个阶段,NDP(Neighbor Discovery Protocol,邻居发现协议)扮演了重要角色。

image-18

NDP

RFC2461定义了NDP,该RFC后来被RFC4861替代。

NDP使用ICMPv6报文实现其功能。

image-19

IPv6动态地址配置

image-21

主机根据RA中的地址前缀,并结合本地生成的64 bit接口标识(例如EUI-64)生成单播地址。

尽可以获得IPv6地址信息,无法获得NIS、SNTP服务器等参数,需要配合DHCPv6或者手工配置来获取其他配置信息。

DAD

无论通过何种方式配置了IPv6单播地址,主机或路由器都会通过ICMPv6报文进行DAD,仅当DAD通过之后才会使用该单播地址。

image-22

地址解析

IPv6使用ICMPv6的NS和NA报文来取代ARP在IPv4中的地址解析功能。

image-20

IPv6典型配置

基本配置

使能IPv6

在系统视图下使能设备转发IPv6单播报文,包括本地IPv6报文的发送与接收。

1
ipv6

在接口视图下,使能该接口的IPv6的功能。

1
ipv6 enable

配置接口的链路本地地址

在接口视图下,通过手工或自动的方式,配置接口的链路本地地址。

手动配置方式

1
ipv6 address ipv6的地址 link-local

自动配置方式

1
ipv6 address auto link-local

配置接口的全球单播地址

在接口视图下,通过手工或这自动(有状态或无状态)的方式,配置接口的全球单播地址。

手工配置方式

1
ipv6 address {ipv6-address prefix-length|ipv6-address|prefix-length}

自动配置方式

1
ipv6 address auto {global(无状态)|dhcp(有状态)}

配置IPv6静态路由

1
ipv6 route-static {dest-ipv6-address} {prefix-length} {interface-type interface-number [nexthop-ipv6-address]|nexthop-ipv6-address} {preference [preference_level]}

查看接口的IPv6信息

1
display ipv6 interface {interface-type interface-number|brief}

查看邻居表项信息

1
display ipv6 neighbors

使能系统发布RA报文功能

默认情况下,华为路由器接口不发送ICMPv6 RA报文,则该接口所连链路上的其他设备无法进行无状态地址自动配置。若想进行IPv6无状态地址配置,需要手工开启发送RA报文。

接口视图下

1
undo ipv6 nd ra halt

案例

配置一个小型IPv6网络

image-23

2002:0010 0000 0000 0010

2003:0010 0000 0000 0011

聚合后的网段:0010 0000 0000 001,十六进制为2002:: 15

AR1配置

1
2
3
4
5
6
7
8
9
sys
sysname AR1
ipv6
int g0/0/0
ipv6 enable
ipv6 address 2001::1 64
ipv6 address auto link-local
quit
ipv6 route-static 2002:: 15 2001::2

AR2配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
sys
sysname AR2
ipv6
int g0/0/0
ipv6 enable
ipv6 address 2002::1 64
ipv6 address auto link-local
int g0/0/1
ipv6 enable
ipv6 address 2003::1 64
ipv6 address auto link-local
int g0/0/2
ipv6 enable
ipv6 address 2001::1 64
ipv6 address auto link-local
quit
dhcp enable
dhcpv6 pool ipv6pool1
address prefix 2002::/64
quit
int g0/0/0
dhcpv6 server ipv6pool1
undo ipv6 nd ra halt
#ipv6 nd autoconfig managed-address-flag
#ipv6 nd autoconfig other-flag
int g0/0/1
undo ipv6 nd ra halt
quit

AR3配置

1
2
3
4
5
6
7
8
9
sys
sysname AR3
ipv6
dhcp enable
int g0/0/0
ipv6 address auto link-local
ipv6 address auto dhcp
ipv6 address auto global default
quit

AR4配置

1
2
3
4
5
6
7
8
9
sys
sysname AR4
ipv6
int g0/0/0
ipv6 enable
ipv6 address auto global
quit
ipv6 route-static 2001:: 64 2003::1
ipv6 route-static 2002:: 64 2003::1

联通性测试

image-24

image-25