目录
一、前言
二、IPv6的基础协议
(一)ICMPv6协议
(二)NDP协议
(1)地址解析
(2)邻居状态跟踪
(3)DAD(重复地址检测)
(4)无状态自动配置
(5)路由器发现
(6)ICMP重定向
(三)PMTU发现协议
三、IPv6的过渡技术
(一)共存技术
(1)双栈Dual Stack
(2)6over4隧道
(二)互通技术
(1)NAT64
四、IPv6隧道的配置
IPv6技术是为缓解IPv4的资源紧张问题而出现的技术。此外,IPv6技术除缓解了IPv4的地址资源紧张的问题外,还具有地址空间巨大、精简了报文结构、实现了自动配置和重新编址、支持层次化网络编制、支持端对端安全、更好的支持Qos、支持移动特性等技术特点,由于这些新的技术特点,IPv6对新行业发展与新互联网技术的发展具有更好地适应性。
IPv6协议将分为两篇介绍,该篇为第二篇,将介绍IPv6的基础协议、IPv6的过渡技术及IPv6隧道的配置。阅读前建议先掌握"R&S,数通HCIE|IPv6协议(一)",此篇重点介绍了IPv6报文及其地址类型。
在本篇中,将介绍IPv6的两种协议:ICMPv6协议、NDP协议和PMTU发现协议。其中NDP协议通过ICMPv6来实现,将重点介绍。
ICMPv6协议是IPv6的基础协议之一,用于向源节点传递报文转发的信息或错误,其协议类型号(Next Header)为58,在IPv6中,ICMPv6除了提供ICMPv4的基本功能外,还为NDP协议的一系列功能提供了基础。
ICMPv6的报文格式如下:
ICMPv6的部分消息的Type和Code值如下表:
NDP指IPv6中的邻居发现协议,它以ICMPv6为基础,实现了IPv6中的众多重要功能,列表如下:
功能 | 功能描述 |
---|---|
路由器发现
|
发现链路上的路由器,获得路由器通告的信息。
|
无状态自动配置
|
通过路由器通告的地址前缀,终端自动生成IPv6地址。
|
DAD(重复地址检测)
|
获得地址后,进行地址重复检测,确保地址不存在冲突。
|
地址解析
|
请求目的网络地址对应的数据链路层地址,类似IPv4的ARP。
|
邻居状态跟踪
|
通过NDP发现链路上的邻居并跟踪邻居状态。
|
前缀重编址
|
路由器对所通告的地址前缀进行灵活设置实现网络重编址。
|
路由重定向
|
告知其他设备,到达目标网络的更优下一跳。
|
NDP使用ICMPv6的相关报文如下:
报文类型 | 报文说明 |
---|---|
RS (路由器请求报文) |
当主机刚刚接入网络并被配置为自动获取地址,主机需要自动获得前缀、前缀长度、默认网关等信息时,就会发送RS消息。 |
RA (路由器通告报文) |
RA消息由路由器周期性地发送,或者在收到主机发送的RS消息后立刻发送,主要为主机提供编址信息以及其他配置信息。 |
NS (邻居请求报文) |
当节点不知道目标地址的链路层地址时,将发送NS消息。 |
NA (邻居通告报文) |
当节点接收到NS消息后,会快速响应NA消息,或者当节点需要快速传播新的信息(非请求)时,也会发送NA消息。 |
重定向报文 | 通过重定向消息,路由器可以通告更优的下一跳路由,也可以用于通知目标地址就是邻居。 |
IPv6的地址解析实现了从IP地址解析到链路层地址的功能。
与IPv4协议不同,IPv6的地址解析有了以下变化:
① 不再使用ARP协议而是使用NDP协议;
② 不再使用广播方式而是使用组播方式;
③ 地址解析在三层完成而不是2.5层。
由此,IPv6的地址解析具有如下优点:
① 由于地址解析在三层完成,不同的二层介质可以使用相同的地址解析协议;
② 采用组播方式发送NS消息,更加高效,减少了二层网络的压力;
③ 可以使用三层的安全机制(如IPSec)以避免地址解析攻击。
由于通信过程中的邻居关系可能由于各种原因进行改变,因此每个节点都需要维护一张邻居表,当邻居发生变化后,NDP协议将通过ICMPv6报文实现邻居状态的迁移。
IPv6网络中的五种邻居状态包括:
邻居状态 | 邻居状态 |
INCOMPLETE
未完成
|
邻居请求已经发送到目标节点的请求组播地址,但没有收到邻居的通告。
|
REACHABLE
可达
|
收到确认,不需再发包确认。
|
STALE
陈旧
|
从收到上一次可达性确认后过了超过30s。
|
DELAY
延迟
|
在stale状态后发送过一个报文,并且5s内没有可达性确认。
|
PROBE
探查
|
每隔1s重传邻居请求来主动请求可达性确认,直到收到确认。
|
在以下例子中,节点A中没有缓存节点B的条目,当节点A需要访问节点B时,邻居状态机的变化过程如下图:
重复地址检测用于确保网络中没有相同的单播地址;因此,所有地址均需进行重复地址检测,在整个交互过程中使用的报文是NS报文和NA报文。
重复地址检测的流程如下:
在地址没有进行重复地址检测前将作为不可使用的试验性地址存在,此时,该地址不会作为正常的IPv6进行单播通信,但是会加入和该地址对应的Solicited-Node组播组。
当进行重复地址检测时,节点将向试验地址对应的Solicited-Node组播组发送NS报文,若收到其他节点回复的NA报文,则表示该地址已在网络上被使用,不能作为该节点的单播地址;否则则通过了重复地址检测,可以作为该节点的单播地址。
无状态自动配置是IPv6的标准功能,可用于动态获取IPv6地址,与DHCPv6动态分配地址相比,无状态自动配置无需部署应用服务器,更加轻量。
路由器发现功能是IPv6地址自动配置的基础,主要通过RA报文和RS报文进行交互(可以看一下前文对RA报文和RS报文的描述)。主机接口在初始化时将发送RS消息,路由器回应RA消息以实现路由器的发现;同时,链路上的路由器会定期的发送RA消息,收到RA消息的主机将加入默认路由器列表中,收到RA的路由器则将检查RA内容的一致性。
当网关路由器知道更好的转发路径时,会以重定向报文的方式告知主机,其中重定向报文中携带了更好的路径和需要重定向的报文的目的地址等信息。
在如下条件时,当设备收到报文后,会向报文的发送者发送重定向报文:
① 检查收到报文的源地址是本设备的邻居表中的邻居;
② 下一跳的接口为收到报文的接口;
③ 报文的目的地址不是一个组播地址;
④ 报文并非通过路由转发给设备;
⑤ 设备发现报的最佳下一跳IP地址和报文的源IP地址处于同一网段。
PMTU指路径上最小接口的MTU,通过PMTU发现协议,源节点将按照路径上最小接口的PMTU对报文进行分片并发送分片报文,最终到达目的地。
PMTU发现协议的过程如下:
IPv6的过渡技术包括以隧道、双栈为代表的共存技术和以NAT为代表的互通技术。
双栈协议即在设备的接口上同时配置IPv4地址和IPv6地址,这就要求设备必须支持IPv4/IPv6协议栈。
1) 手动隧道
① GRE隧道
GRE隧道需要手工指定隧道的端点地址,并由GRE承载IPv6协议。
② 6over4手动隧道
6over手动隧道要求源地址和目的地址均需手工指定,多用于边界路由器之间或者主机与边界路由器之间。
2)自动隧道
① 6to4隧道
支持路由器到路由器、主机到路由器、路由器到主机和主机到主机之间的隧道建立,其采用6to4专用地址"2002:IPv4::/48"。同时,在该隧道中可以使用SLA ID区分不同的网络进而实现连接多个6to4网络的功能。该隧道也可以满足6to4网络和IPv6普通网络的互通。
② ISATAP隧道
支持主机到路由器、路由器到主机、主机到主机,采用ISATAP隧道专用地址。
① NAT64技术实际上是一种协议转换技术,能够将分组在V4及V6之间灵活转换。
② 该技术使IPv6数据包和IPv4数据包中的各字段建立起了一一映射的关系,从而实现分组在V4及V6之间的灵活转换。
这里只给出IPv6隧道中GRE隧道建立的基本配置命令
步骤 | 操作 | 命令 |
---|---|---|
1 |
进入系统视图
|
system-view
|
2 |
创建Tunnel接口
|
interface tunnel interface-number
|
3 | 指定Tunnel为GRE隧道模式 |
tunnel-protocol gre
|
4 |
指定Tunnel的源接口
|
source { ipv4-address | interface-type
interface-number }
|
5 |
指定Tunnel的目的接口
|
destination ipv4-address
|
6 |
设置对GRE报文头进行校验
|
gre checksum
|
7 |
设置GRE报文头的关键字
|
gre key key-number
|
8 |
设置Tunnel接口的IPv6地址
|
ipv6 address ipv6-address prefix-length
|