ND 协议功能概述
ND(Neighbor Discovery,邻居发现)协议是 IPv6 的一个关键协议,它综合了 IPv4 中的 ARP,ICMP 路由发现和 ICMP 重定向等协议,并对它们做了改进。
作为 IPv6 的基础性协议,ND 协议还提供了前缀发现,邻居不可达检测,重复地址检测,地址自动配置等功能。
ND 协议功能组成图示:
1)地址解析
地址解析是一种确定目的节点的链路层地址的方法。ND 中的地址解析功能不仅替代了原 IPv4 中的 ARP 协议,同时还用邻居不可达检测(NUD)方法来维护邻居节点之间的可达性状态信息。
2)无状态地址自动配置
ND 协议中特有的地址自动配置机制,包括一系列相关功能,如路由器发现,接口 ID 自动生成,重复地址检测等。通过无状态自动配置机制,链路上的节点可以自动获得 IPv6 全球单播地址。
-
路由器发现
路由器在与其相连的链路上发布网络参数等信息,主机捕获此信息后,可以获得全球单播 IPv6 地址前缀、默认路由、链路参数(链路 MTU)等信息。
-
接口 ID 自动生成
主机根据 EUI-64 规范或其他方式为接口自动生成接口标识符。
-
重复地址检测
根据前缀信息生成 IPv6 地址或手动配置 IPv6 地址后,为保证地址的唯一性,在这个地址可以使用之前,主机需要检验此 IPv6 地址是否已经被链路上的其他节点所使用。
-
前缀重新编址
当网络前缀变化时,路由器在与其相连的链路上发布新的网络参数信息,主机捕获这些信息,重新配置前缀,链路 MTU 等地址相关信息。
3)路由器重定向
当在本地链路上存在一个到达目的网络的更好地路由器时,路由器需要通过节点来进行相应配置改变。
ND 协议报文
ND 协议定义了 5 种 ICMPv6 报文类型。
ICMPv6 报文类型表
ICMPv6 Type | 含义 |
---|---|
133 | RS (Router Solicitation,路由器请求) |
134 | RA (Router Advertisement,路由器公告) |
135 | NS (Neighbor Solicitation,邻居请求) |
136 | NA (Neighbor Advertisement,邻居公告) |
137 | Redirect (重定向报文) |
NS/NA 报文主要用于地址解析,RS/RA 报文主要用于无状态地址自动配置,Redirect 报文用于路由器重定向。
地址解析
IPv6 地址解析的优点
IPv6 的地址解析过程包括两部分:一部分解析了目的 IP 地址所对应的链路层地址;另一部分是邻居可达性状态的维护过程,即邻居不可达检测。 IPv6 地址解析相对于 IPv4 的 ARP 解析,有以下优点:
-
加强了地址解析协议与底层链路的独立性
对每一种链路层协议都使用相同的地址解析协议,无须再为每一种链路层协议定义一个新的地址解析协议。
-
增强了安全性
ARP 攻击,ARP 欺骗是 IPv4 中严重的安全问题。在第三层实现地址解析,可以利用三层标准的安全认证机制来防止这种 ARP 攻击和 ARP 欺骗。
-
减小了报文传播范围
在 IPv4 中,ARP 广播必须泛洪到二层网络中每台主机。IPv6 地址解析利用三层组播寻址限制了报文的传播范围,通过将地址解析请求仅发送到待解析地址所属的被请求节点组播组,减小了报文传播范围,节省了网络带宽。
IPv6 地址解析过程
在 IPv6 中,ND 协议通过在节点间交互 NS 和 NA 报文完成 IPv6 地址到链路层地址的解析,用得到的链路层地址和 IPv6 地址等信息来建立相应的邻居缓存表项。
地址解析过程图示: