一、基本概念
ND(neighbor discovery):邻居发现协议
ND协议是IPV6的一个关键协议,它综合了IPV4中的一些协议如ARP、ICMP路由器发现和ICMP重定向等,并对它们做了改进。
二、基本功能:
1.地址解析:已知目的节点的网络层地址,确定数据链路层地址的方法。ND中的地址解析功能不仅替代了原IPV4中的ARP协议,同时还用邻居不可达检测(NUD)来维护邻居节点之间的可达性状态信息。
2.邻居不可达检测:在获取到邻居节点的数据链路层地址后,通过发送消息来验证邻居节点是否可达。
3.重复地址检测(DAD):根据前缀信息生成IPv6地址或者手动配置IPV6地址后,为保证地址的唯一性,在这个地址可以使用之前,主机需要检测此IPV6地址是否已被链路上其他节点所使用。
4.无状态地址自动配置:无状态地址自动配置指主机根据路由器发现/前缀发现所获取的信息,自动配置IPV6地址。包括路由器发现/前缀发现、接口ID自动生成、重复地址检测等过程。通过无状态地址自动配置机制,链路上的节点可以自动获得IPV6全球单播地址。
5.路由器重定向:当主机启动时,他的路由表中可能只有一条到默认网关的默认路由。当在本地链路上存在一个到达目的网络的更好的路由器时,默认网关会向源主机发送ICMPV6重定向消息,通知主机选择更好的下一跳进行后续报文的发送。
三、ND协议的五种报文:ND协议使用了ICMPV6报文,是在第3层上实现的。
上述报文中,NS/NA报文主要用于地址解析,RS/RA报文主要用于无状态地址自动配置,Redirect报文用于路由器重定向。
四、IPV6地址解析过程:
IPV6地址解析过程包括两个部分,一部分解析了链路上目的IP地址所对应的数据链路层地址;另一部分是邻居可达性状态的维护过程,即邻居不可达检测。
优点:
1.加强了地址解析协议与底层链路的独立性;
2.增强了安全性;
3.减小了报文传播范围;
ND协议通过在节点间交互NS和NA报文完成地址解析,并使用得到的数据链路层地址和IPV6地址等信息来建立相应的邻居缓存表项。
五、邻居不可达检测
概念:NUD(neighbor unreachability detection,邻居不可达检测)是节点确定邻居可达性状态的过程。 邻居不可达检测机制通过邻居可达性状态机来描述邻居的可达性。
邻居可达性状态机保存在邻居缓存表中,共有以下五种:
1.incomplete(未完成)状态:表示正在解析地址,邻居的数据链路层地址尚未确定。当节点第一次发送NS报文到邻节点时,会同时在邻居缓存表中创建一个到此邻节点的新表项,此时表项状态就是incomplete。
2.reachable(可达)状态:表示地址解析成功,该邻居可达。节点可以与处于可达状态的邻节点相互通信。不过可达状态伴随有一个reachable_time定时器,在定时器超时后,会转化到stale(失效)状态。
3.stale(失效状态):表示未确定邻居是否可达。stale状态是一个稳定的状态。
4.delay(延迟状态):表示未确定邻居是否可达。delay状态也不是一个稳定的状态,而是一个延时等待状态。delay状态下:节点需要收到“可达性证实信息”后,才能进入reachable状态。
5.probe(探测)状态:同样表示未确定邻居是否可达。节点会向处于probe状态的邻居持续发送NS报文,直到接收到“可达性证实信息”后,才能进入可达状态。
“可达性证实信息”的来源有两种。
-
来自上层连接协议的暗示。如果邻节点之间有TCP连接,且收到了对端节点发出的确认消息,则表明邻节点之间可达。
-
来自不可达探测回应。节点发送NS报文后,收到邻节点响应NA报文,则会认为邻节点可达。
邻居状态机迁移过程如下:
假设管理员在NodeA上执行了PING操作,发送报文给NodeB,NodeA和NodeB的邻居状态变化如下:
NodeA第一次发送报文给NodeB,所以它在邻居表中把NodeB的邻居状态置为incomplete,同时发送NS报文以解析NodeB的数据链路地址;NodeB收到NodeA的NS报文后,将邻居表中NodeA的状态置为stale;然后NodeB向NodeA回应NA报文,并将邻居状态表中的NodeA邻居状态置为delay,以等待收到“可达性证实信息”;NodeA收到NodeB的NA报文后,将邻居状态表中的NodeB邻居状态置为reachable,同时发送Echo Request报文;因为节点之间没有TCP连接,所以NodeB没有收到可达性证实消息,向NodeA发送Echo Reply报文同时将邻居状态表中的NodeA邻居状态置为proble,并向NodeA发送NS报文;NodeB收到NodeA返回的NA报文后,它将邻居状态表中的NodeA邻居状态置为reachable;如果长时间不再发送报文,reachable_time定时器超时,NodeA会把邻居状态表中的NodeB邻居状态置为stale,而NodeB也会把邻居状态表中的NodeA邻居状态置为stale。六、IPV6无状态地址自动配置
1.配置机制:
· 有状态地址自动配置:使用DHCPV6协议来给主机动态分配IPV6地址,其工作机制与IPV4网络中的DHCP协议一样。
· 无状态地址自动配置:是IPV6中独有的地址自动配置机制,其通过ND协议来实现。2.无状态地址自动配置的优点:
· 真正的即插即用。
· 网络迁移方便。3.配置过程:当主机启动时,主机会向本地链路范围内所有的路由器发送RS报文,触发链路上的路由器响应RA报文。主机接收到路由器发出的RA报文后,自动配置默认路由器,建立默认路由器列表、前缀列表和设置其他的配置参数。