HCIA-IPv6
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基本包头(必须存在)和多个扩展包头(可能不存在)组成。
基本包头提供报文转发的基本信息,会被转发路径上的所有设备解析。

扩展包头

Extension Header Length:扩展包头长度,长度为8bit。表示扩展包头的长度(不包含Next Header字段)。
Extension Header Data:扩展包头数据,长度可变。扩展包头的内容为一系列选项字段和填充字段的组合。

报文处理机制

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

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

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

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

IPv6单播
地址结构
一个IPv6单播地址可以分为如下两部分:
网络前缀(Network Prefix):n bit,相当于IPv4地址中的网络ID。
接口标识(Interface Identify):(128-n)bit,相当于IPv4地址中的主机ID。
常见的IPv6单播地址如全球单播地址、链路本地地址等,要求网络前缀和接口标识必须为64 bit。

地址接口标识
接口标识可通过三种方法生成:
- 手工配置
- 系统自动生成
- 通过IEEE EUI-64规范生成
其中EUI-64规范最为常用,此规范将接口的MAC地址转换为IPv6接口标识。

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

通常GUA的网络部分长度为64bit,接口标识也为64bit。
全局路由前缀:由提供商指定给一个组织机构,一般至少为45bit。
子网ID:组织机构根据自身网络需求划分子网。
接口标识:用来标识一个设备的接口。
ULA
ULA(Unique Local Address,唯一本地地址)是IPv6私网地址,只能够在内网中使用。该地址空间在IPv6公网中不可被路由,因此不能直接访问公网。

唯一本地地址使用FC00::/7地址块,目前仅使用了FD00::/8地址段。FC00::/8预留位以后拓展使用。
ULA虽然只能在有限范围内有效,但也具有全球唯一的前缀(虽然随机方式产生,但是冲突概率很低)。
LLA
LLA(Link-Local Address,链路本地地址)是IPv6中另一种应用范围受限制的地址类型,LLA的有效范围是本地链路,前缀为FE80::/10。

LLA用于一条单一链路层面的通信,例如IPv6地址无状态自动配置、IPv6邻居发现等。
源或目的IPv6地址为链路本地地址的数据包将不会被转发到始发的链路之外,换句话说,链路本地地址的有效范围为本地链路。
每一个IPv6接口都必须具备一个链路本地地址。华为设备支持自动生成和手工指定两种配置方式。
IPv6组播
IPv6组播地址标识多个接口,一般用于”一对多“的通信场景。
IPv6组播地址值可以作为IPv6报文的目的地址。

- Flags:用来标识永久或临时组播组。
- Scope:表示组播组的范围。
- Group ID:组播组ID。
被请求节点组播地址
当一个节点具有了单薄或任播地址,就会对应生成一个被请求节点组播地址,并且加入这个组播组。该地址主要用于邻居发现机制和地址重复检测功能。被请求节点组播地址的有效范围为本地链路范围。

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

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

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

NDP
RFC2461定义了NDP,该RFC后来被RFC4861替代。
NDP使用ICMPv6报文实现其功能。

IPv6动态地址配置

主机根据RA中的地址前缀,并结合本地生成的64 bit接口标识(例如EUI-64)生成单播地址。
尽可以获得IPv6地址信息,无法获得NIS、SNTP服务器等参数,需要配合DHCPv6或者手工配置来获取其他配置信息。
DAD
无论通过何种方式配置了IPv6单播地址,主机或路由器都会通过ICMPv6报文进行DAD,仅当DAD通过之后才会使用该单播地址。

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

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网络

2002:0010 0000 0000 0010
2003:0010 0000 0000 0011
聚合后的网段:0010 0000 0000 001,十六进制为2002:: 15
AR1配置
1 | sys |
AR2配置
1 | sys |
AR3配置
1 | sys |
AR4配置
1 | sys |
联通性测试




