IPv6邻居发现缓存–第1部分

本文深入探讨了IPv6邻居发现(ND)缓存及其五个状态:Incomplete、Reachable、Stale、Delay和Probe。ND缓存用于管理IPv6地址到链路层地址的映射,类似于IPv4的ARP。通过邻居请求和通告消息,主机能够更新和验证缓存条目。这些状态确保了网络通信的效率和准确性,避免了不必要的资源浪费。了解这些状态有助于更好地管理和优化IPv6网络环境。
摘要由CSDN通过智能技术生成

请加入我的行列,我们即将探究IPv6邻居发现缓存(Neighbor Discovery Cache )的秘密。 我确信我们会发现,我们的目标是更好地管理IPv6,而不需要不完整的知识或陈旧的文字!

最近,我一直在回顾Jeff Doyle的经典《TCP/IP路由》,它们和我记忆中的一样棒。 如果您有幸结识Jeff,那么他的写作风格就很像他在现实生活中的影响力:平易近人且友好。 与此相关的是,在他的文章中,他对主题进行了彻底而精确的回顾,而没有诉诸于冷冰冰的技术散文,后者更适合他正在为读者解释的实际rfc。

第1卷关于IPv6的章节特别好,尽管自最新版出版以来已经过去了十年多,但并不觉得过时。当然,技术内容并没有真正发生重大变化:例如,2005年左右的邻居发现(Neighbor Discovery )本质上是我们在2017年仍然在处理的邻居发现。不过,多伊尔和蔼可亲的写作风格,加上他对至关重要的内容的专业理解,让这一章成为人们经常学习和重温的绝佳选择。

实际上,正是Jeff关于IPv6 Neighbor Unreachability Detection的子章节提醒我,我可能需要对Neighbor Discovery缓存条目的各种可能状态进行更新。 因此,以无与伦比的Doyle先生及其著作为灵感,让我们回顾一下IPv6 Neighbor Discovery缓存及其各种状态。

但是在此之前,我们首先需要快速回顾一下IPv6邻居发现(ND)。 IPv6邻居发现通常被认为是IPv4地址解析协议(ARP)的替代品。最基本的IPv6 令居发现(ND)包含了一套负责将同一网段内或链路上第3层(IPv6)地址映射到第2层(链路层;最通常为以太网MAC)地址的机制。 同样,IPv6节点可以使用ND来发现链路上的路由器,以及了解哪些其他IPv6节点仍然可以访问(以及链路层地址是否已更改)。

所有这些功能都是通过邻居发现(ND)缓存来实现。 ND缓存的内容和格式与IPv4中的ARP缓存几乎相同。

IPv4 ARP cache from a Windows 7 VMIPv6 ND cache from a Ubuntu VM

回顾一下,IPv4 ARP依赖于使用第二层广播机制。 主机已经知道希望与之通信的设备的IP地址(例如,通过DNS),但仍然不知道该设备的链路层地址。 ARP将以目标IP地址为目的地的帧使用第二层广播地址发送到第二层(数据链路层)。 连接到该链接的所有设备都必定会收到和处理此广播帧,但是只有IP地址与目标匹配的设备才会响应请求的主机,响应中包含了目标链路层地址。 这就像上面显示的一样成为ARP条目:IPv4地址和与其对于的物理层地址。现在开始,将来以这个IP地址为目的地的包可以立即(即不再需要额外的ARP处理)用ARP缓存提供的正确的目的链路层地址来封装第2层数据帧.

这种机制的一个明显的缺陷是,每个主机必须处理所有的广播帧,不管这些帧是否实际上包含一个发送给该主机的ARP请求。局域网段上的主机越多,处理不需要的ARP请求所浪费的计算资源就越多。

IPv6 令居发现(Neighbor Discover)的功能与IPv4 ARP类似,但有一些关键的优化。 需要将第3层地址解析为第2层地址的基本方案与IPv4 ARP中的相同:IPv6主机知道目标的IPv6地址,但不知道其链路层地址。 但是,它没有像在IPv4中那样将ARP请求发送到广播目标地址,而是向被请求的节点多播目标地址发送了邻居请求消息。 该请求的节点多播地址是从目标主机上的第3层单播地址派生的(请参见下面的示例)。 只有侦听与其被请求节点多播地址相对应的多播组地址的主机(其本身对应于其第3层单播地址)才会以邻居通告消息进行响应,将其链路层地址提供给发出请求的节点,然后由该节点创建邻居 发现缓存条目。

IPv6 Neighbor Discovery Cache Part 1

IPv6 Neighbor Discovery Cache Part 2

由于网络显然会并且确实会发生变化,曾经可用的设备下线,新设备上线,所以ARP缓存和ND缓存都必须提供使它们的条目更新的机制,以及反映ND缓存条目当前状态的信息。

这就是IPv6邻居发现缓存的五种状态发挥作用的地方。它们是:

  1. Incomplete
  2. Reachable
  3. Stale
  4. Delay
  5. Probe

Incomplete 状态表示地址解析正在进行中,而邻居的链路层地址尚未确定。 严格来说,这意味着已发送了具有目标的被请求节点地址的邻居请求(Neighbor Solicitation)消息,但是尚未收到相应的邻居广告(Neighbor Advertisement)。

reachable 状态表示在一定的时间间隔(定义为 ReachableTime)内收到了关联的ND缓存条目的可达性确认。这个正面的确认可能是在邻居请求之后收到了邻居广告,或者上层协议成功地使用了ND缓存条目。

过期的ND缓存条目(Stale 状态)表示ReachableTime已过,之后才收到可到达性的后续确认。

延迟(Delay)状态表示,尽管ReachableTime已过期,但最近仍有上层协议将数据包发送到缓存项的地址。 在定义的时间间隔后,将发送邻居请求,并且将ND缓存条目更改为探测状态。 延迟状态仅为上层协议提供时间来可能地刷新缓存条目,而无需通过邻居请求。

如前所述,探测状态发生在发送邻居请求(可能是重新发送)直到收到响应时。(理想情况下,上层协议将在延迟阶段验证可达性)

现在,我们知道IPv6邻居发现缓存条目有哪些状态了,如何在流行的操作系统上观察它们? 我们将在第2部分中对此进行详细介绍!

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值