交换机获取到 IPv6 地址后与 IPv6 邻居通信的过程

IPv6 邻居发现机制

邻居发现协议(Neighbor Discovery Protocol)是 IPv6 协议的一个基本组成部分,使用了下表中的五种类型 ICMPv6 消息:

ICMPV6 消息类型作用
RS (Router Solicitation,路由器请求消息)133节点启动后,通过 RS 消息向路由器发出请求,请求前缀和其他配置信息,用于节点的自动配置
RA (Router Advertisement,路由器通告)134对 RS 消息进行响应
在没有抑制 RA 消息发布的条件下,路由器会周期性地发布 RA 消息,其中包括前缀信息选项和一些标志位的信息
NS (Neighbor Solicitation,邻居请求)135获取邻居的链路层地址
验证邻居是否可达
进行重复地址检测
NA (Neighbor Advertisement,邻居通告)136对 NS 消息进行响应
节点在链路层变化时主动发送 NA 消息,向邻居节点通告本节点的变化信息
Redirect,重定向消息137当满足一定的条件时,缺省网关通过向源主机发送重定向消息, 使主机重新选择正确的下一招她址进行后续报文的发送

使用表格中的五种 ICMPv6 消息,可以实现在 IPv4 中的地址解析协议 (ARP)、控制报文协议 (ICMP) 中的路由器发现部分、重定向协议的所有功能,并具有邻居不可达检测机制,下面我们就来一一展开介绍下。其中,路由器发现 / 前缀发现及地址无状态自动配置过程已在上期文章中做过介绍,不再赘述。

1. 地址解析过程

通过邻居请求消息 NS 和邻居通告消息 NA,可以获取同一链路上邻居节点的链路层地址 (与 IPv4 的 ARP 功能相同)。

首先,节点 B 以组播方式发送 NS 消息。NS 消息的源地址是节点 B 的接口 IPv6 地址,目的地址是节点 A 的被请求节点组播地址,消息内容中包含了节点 B 的链路层地址和请求的目标地址。

图片

图片

接着,节点 A 收到 NS 消息后,判断报文的目标地址是否为自己的 IPv6 地址。如果是,则节点 A 可以学习到节点 B 的链路层地址,并以单播方式返回 NA 消息,其中包含了自己的链路层地址。

图片

图片

最后,节点 B 从收到的 NA 消息中就可获取到节点 A 的链路层地址。

2. 重复地址检查

当节点获取到一个 IPv6 地址后,需要使用重复地址检查功能确定该地址是否已被其他节点使用 (与 IPv4 的免费 ARP 功能相似),避免冲突。通过 NS 和 NA 实现重复地址检测的过程为:

首先,节点 A 发送 NS 消息,NS 消息的源地址是未指定地址::,目的地址是待检测的 IPv6 地址对应的被请求节点组播地址,消息内容中包含了待检测的 IPv6 地址。

图片
图片

如果节点 B 已经使用这个 IPv6 地址,则会返回 NA 消息,其中包含了自己的 IPv6 地址。

节点 A 收到节点 B 发来的 NA 消息,就知道该 IPv6 地址已被使用。反之,则说明该地址未被使用,节点 A 就可使用此 IPv6 地址。

图片

节点 A 收到重复地址检查的NA消息,如果设备上没有表项,不会进行学习;如果自己已有表项,则进行更新。

3. 邻居可达性检测

在获取到邻居节点的链路层地址后,通过邻居请求消息 NS 和邻居通告消息 NA 可以验证邻居节点是否可达。

首先,节点发送 NS 消息,其中目的地址是邻居节点的 IPv6 地址。

图片

如果收到邻居节点的确认报文,则认为邻居可达;否则,认为邻居不可达。

图片

IPv6 邻居状态迁移

RFC4861 定义了 5 种 IPv6 邻居状态,分别是:Incomplete、Reachable、Stale、Delay、Probe,其中只有 Stale 状态是稳定状态。

  1. Incomplete (未完成状态):表示正在解析地址,但邻居链路层地址尚未确定。
  2. Reachable (可达状态):表示地址解析成功,该邻居可达。
  3. Stale (失效状态):表示可达时间耗尽,未确定邻居是否可达。
  4. Delay (延迟状态):表示未确定邻居是否可达。Delay 状态不是一个稳定的状态,而是一个延时等待状态。
  5. Probe (探测状态):节点会向处于 Probe 状态的邻居持续发送 NS 报文。

邻居状态变化过程如下图所示:

图片

当没有表项时,如果有流量触发建立新的邻居表项,设备将发送 NS 报文去获取邻居 MAC 地址,此时建立的邻居表项是 Incomplete 状态,MAC 全零。

发送 NS 报文探测对端邻居是否可达后,若尝试 3 次对端都不响应,则删除表项,探测间隔默认 1s。

若目的邻居可达并回复了正确的 NA 报文,则本端邻居表项状态刷新为 Reachable,并更新 MAC。Reachable 状态将维持 30s,之后自动切换成 Stale 状态。

Stale 状态维持的时间又称为老化时间,默认是 240min,老化后表项切换成 Delay 状态。Delay 状态延时 5s,自动切换为 Probe 状态。

邻居表项为 Probe 状态时,发送 NS 报文探测对端是否可达,若尝试 3 次对端不响应,则删除表项。若邻居可达并回复 NA 报文,则本端邻居表项状态刷新为 Reachable。


via :

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值