IPv6 邻居发现协议NDP(Neighbor Discovery Protocol)、跟踪邻居状态(邻居请求报文NS和邻居通告报文NA)

IPv6 邻居发现协议、跟踪邻居状态(邻居请求报文NS和邻居通告报文NA)

IPv6 ND(IPv6 Neighbor Discovery,IPv6邻居发现)协议使用五种类型的ICMPv6消息,实现下面五种功能:地址解析、验证邻居是否可达、重复地址检测、路由器发现/前缀发现及地址自动配置和重定向。ND协议使用的五种ICMPv6 消息如下:
1、邻居请求消息 NS(Neighbor Solicitation)
2、邻居通告消息 NA(Neighbor Advertisement)
3、路由器请求消息 RS(Router Solicitation)
4、路由器通告消息 RA(Router Advertisement)
5、重定向消息 RR(Redirect)


IPv6邻居发现协议主要提供了五个功能:地址解析、邻居可达性检测、重复地址检测、路由器发现/前缀发现及地址自动配置、重定向功能。

地址解析、重复地址检测、重定向功能在交换机使能了IPv6功能后自动开始工作。验证邻居是否可达和路由器发现/前缀发现及地址自动配置则根据客户的需要由客户自己配置。客户可以通过配置打开RA报文发送开关来启动路由器发现/前缀发现及地址自动配置功能,通过使能ND表项自动探测功能来启动验证邻居是否可达功能。

[SwitchA-Vlanif100] undo ipv6 nd ra halt  #使能系统发布RA报文功能



图片.png

邻居发现协议NDPNeighbor Discovery Protocol)是IPv6协议体系中一个重要的基础协议。

邻居发现协议替代了IPv4ARPAddress Resolution Protocol)和ICMP路由器发现(Router Discovery),它定义了使用ICMPv6报文实现地址解析,跟踪邻居状态,重复地址检测,路由器发现以及重定向等功能。

地址解析

IPv4中,当主机需要和目标主机通信时,必须先通过ARP协议获得目的主机的链路层地址。在IPv6中,同样需要从IP地址解析到链路层地址的功能。邻居发现协议实现了这个功能。

ARP报文是直接封装在以太网报文中,以太网协议类型为0x0806,普遍观点认为ARP定位为第2.5层的协议。ND本身基于ICMPv6实现,以太网协议类型为0x86DD,即IPv6报文,IPv6下一个报头字段值为58,表示ICMPv6报文,由于ND协议使用的所有报文均封装在ICMPv6报文中,一般来说,ND被看作第3层的协议。在三层完成地址解析,主要带来以下几个好处:

    地址解析在三层完成,不同的二层介质可以采用相同的地址解析协议。

    可以使用三层的安全机制避免地址解析攻击。

    使用组播方式发送请求报文,减少了二层网络的性能压力。

地址解析过程中使用了两种ICMPv6报文:邻居请求报文NSNeighbor Solicitation)和邻居通告报文NANeighbor Advertisement)。

    NS报文:Type字段值为135Code字段值为0,在地址解析中的作用类似于IPv4中的ARP请求报文。

    NA报文:Type字段值为136Code字段值为0,在地址解析中的作用类似于IPv4中的ARP应答报文。

地址解析的过程如图1所示:

图片.png

Host A在向Host B发送报文之前它必须要解析出Host B的链路层地址,所以首先Host A会发送一个NS报文,其中源地址为Host AIPv6地址,目的地址为Host B的被请求节点组播地址,需要解析的目标IPHost BIPv6地址,这就表示Host A想要知道Host B的链路层地址。同时需要指出的是,在NS报文的Options字段中还携带了Host A的链路层地址。

Host B接收到了NS报文之后,就会回应NA报文,其中源地址为Host BIPv6地址,目的地址为Host AIPv6地址(使用NS报文中的Host A的链路层地址进行单播),Host B的链路层地址被放在Options字段中。这样就完成了一个地址解析的过程。


跟踪邻居状态

通过邻居或到达邻居的通信,会因各种原因而中断,包括硬件故障、接口卡的热插入等。如果目的地失效,则恢复是不可能的,通信失败;如果路径失效,则恢复是可能的。 因此节点需要维护一张邻居表,每个邻居都有相应的状态,状态之间可以迁移。

RFC2461中定义了5种邻居状态,分别是:未完成(Incomplete)、可达(Reachable)、陈旧(Stale)、延迟(Delay)、探查(Probe)。

邻居状态之间具体迁移过程如图2所示,其中Empty表示邻居表项为空。

图片.png

下面以AB两个邻居节点之间相互通信过程中A节点的邻居状态变化为例(假设AB之前从未通信),说明邻居状态迁移的过程。

    A先发送NS报文,并生成缓存条目,此时,邻居状态为Incomplete

    若B回复NA报文,则邻居状态由Incomplete变为Reachable,否则固定时间后邻居状态由Incomplete变为Empty,即删除表项。

    经过邻居可达时间,邻居状态由Reachable变为Stale,即未知是否可达。

    如果在Reachable状态,A收到B的非请求NA报文,且报文中携带的B的链路层地址和表项中不同,则邻居状态马上变为Stale

    在Stale状态若A要向B发送数据,则邻居状态由Stale变为Delay,并发送NS请求。

    在经过一段固定时间后,邻居状态由Delay变为Probe,其间若有NA应答,则邻居状态由Delay变为Reachable

    在Probe状态,A每隔一定时间间隔发送单播NS,发送固定次数后,有应答则邻居状态变为Reachable,否则邻居状态变为Empty,即删除表项。



IPv6(列表、list、全)ipv6list
http://www.zh-cjh.com/wenzhangguilei/1534.html
文章归类、所有文章列表、LISTLIST
http://www.zh-cjh.com/wangzhangonggao/2195.html


1、本站资源长期持续更新。
2、本资源基本为原创,部分来源其他付费资源平台或互联网收集,如有侵权请联系及时处理。
3、本站大部分文章的截图来源实验测试环境,请不要在生产环境中随意模仿,以免带来灾难性后果。

转载请保留出处:  www.zh-cjh.com珠海陈坚浩博客 » IPv6 邻居发现协议NDP(Neighbor Discovery Protocol)、跟踪邻居状态(邻居请求报文NS和邻居通告报文NA)

作者: cjh


手机扫一扫,手机上查看此文章:

一切源于价值!

其他 模板文件不存在: ./template/plugins/comment/pc/index.htm

未雨绸缪、居安思危!

数据安全、有备无患!

注意操作、数据无价!

一切源于价值!