ipv6的NDP协议有哪些功能,是如何进行工作的

article/2025/10/30 11:21:07

ipv6的NDP协议有哪些功能

NDP(neighbor Discovery protocol)是ICMPv6的子协议是IPV6协议体系中一个重要的基础协议,邻居发现协议替代了IPV4的ARP,ICMP路由器发现。它定义了使用ICMPv6报文实现地址解析,跟踪邻居状态,重复地址检测,路由器发现,以及重定向等功能。

  • 地址解析:从IP地址解析到数据链路层,地址解析过程中使用了两种ICMPv6报文;邻居请求报文NS(neighbor solicitation)type=135,code=0类似IPV4中ARP请求报文。邻居通告报文NA(neighbor advertisemen type=136,code=0类似IPV4中ARP应答报文)。
  • 跟踪邻居状态:通过邻居到达邻居的通信,会因为各种原因中断,如果目的地失效,则恢复是不可能的,通信失败,如果路径失效,则恢复是可能的。因此节点需要维护一张邻居表,每个邻居都有相应的状态,状态之间可以迁移。
    RFC2461中定义了五种邻居状态,分别是:未完成(Incomplete)、可达(Reachable)、陈旧(stale)、延迟(Delay)、探查(Probe)。
  • 重复地址检测:DAD(Duplicate Address Detect),是在接口使用某个IPV6单播地址之前进行的,主要是为了探测是否有其他节点使用了该地址。类似IPV4中的免费ARP。在通过DAD检测之前,该接口分配的单播地址不能用于单播通信,成为实验地址,但是仍然会加入两个组播组ALL-NODES组播组和试验地址所对应的Solicited-Node组播组。
  • 路由器发现:用来发现与本地链路相连的路由器,并获取与地址自动配置相关的前缀和其他配置参数。依靠RA type=134(路由器通告),RS type=133(路由器请求)来实现。
  • 重定向:当网关路由器发现报文从其他网关路由器转发更好,就会发送重定向报文告知报文的发送者,让报文发送者选择另一个网关路由器。type=137.报文中携带更好地路径下一跳地址和需要重定向转发的报文的目的地址等信息。

是如何进行工作的

地址解析:地址解析过程中主要使用了两种ICMPv6报文;邻居请求报文NS(neighbor solicitation)type=135,code=0,类似IPV4中ARP请求报文。邻居通告报文NA(neighbor advertisement )type=136,code=0类似IPV4中ARP应答报文。
在这里插入图片描述
下面通过实验抓取报文来看看。
在这里插入图片描述
我们配置好地址后,使用AR1pingAR2。
AR1要访问AR2直连接口,需要得到AR2的MAC地址。
在IPV4中ARP普遍认为是工作在2.5层中,但在IPV6中地址解析工作在第三层中
优点如下:
工作在网络层,抗攻击能力比ARP强
使用组播机制,提高工作效率。
地址解析在三层完成,可以使用不同的二层介质
在这里插入图片描述
第5,第6两个包分别是地址解析使用的NS,NA。
工作流程(1)
AR1会发送一个NS(邻居请求报文,type=135,code=0)。
该报文源IP为AR1的接口单播地址2012::1/64。
其目的IP为AR2IPV6单播地址对应的被请求节点地址(组播地址:由固定前缀FF02::1:FF/104,前104bit固定,后24bit为要解析的地址,也就是AR2接口IPV6单播地址后24bit)
目的地址为FF02::1:FF00:2。
源MAC为AR1的MAC。目的MAC则为节点组播地址映射的IPV6组播MAC=3333-FF00-0002 (前16bit固定3333,后32bit为IPV6组播地址后32bit)
在这里插入图片描述
(2)AR2配置了IPV6单播地址2012::2/64后就默认加入了,该单播地址对应的节点组播组。所以只要向该组播组发送报文,AR2是可以接受到的。
当AR2收到AR1的NS(neighbor solicitation)后,通过查看该报文中标识的要解析的地址是不是自己接口的单播地址,在这里插入图片描述如果是,则回应NA(neighbor advertisement)type=136 code=0
在这里插入图片描述.回应包中源IP为AR2接口IPV6单播地址,目的为AR1接口单播地址。源MAC为自己,目的MAC则是AR1。
同时会携带2012::2/64对应的MAC地址。
至此解析完成,总结一下。
NS(邻居请求报文 type=135,code=0)。
目的IP为对应节点组播地址(由前104bit的固定前缀FF02::1:FF,后24bit为要解析的IPV6单播地址后24bit组成)
目的MAC为组播地址映射的MAC(前16bit3333固定后32bit为要解析的地址后32bit组成)
同时NS报文中会携带需要解析的地址
NA(邻居通告报文 type=136 code=0)
源目MAC,IP已经知道了。
此时报文中携带,NS报文中请求解析地址对应的MAC。
跟踪邻居状态
RFC2461中定义了5种邻居状态,分别是:未完成(INCOMPLETE)、可达(REACHABLE)、陈旧(STALE)、延迟(DELAY)、探查(PROBE)。
在这里插入图片描述
按照产品手册上的来,拓扑图还是两台路由器
由于需要假设两台设备从未通信过,所以我们重启一下。
在这里插入图片描述
此时未通信,查看邻居
display ipv6 neighbors
在这里插入图片描述
无表项
1.R1先发送NS报文,并生成缓存条目,此时邻居状态为未完成(incomplete),收到B回复的NA报文则状态变成可达(reachable)由于某种原因,没能看到邻居状态变成未完成(incomplete)状态,而AR2回了NA报文后,直接变成了可达(reachable)
在这里插入图片描述
在这里插入图片描述
当然,此时B已经回复了NA,则则邻居状态由Incomplete变为Reachable,否则固定时间后邻居状态由Incomplete变为Empty,即删除表项。即没回复状态-未知变成空的(empty)
2.经过邻居可达时间,邻居状态由REACHABLE(可达)-》未知(stale),即未知是否可达
在这里插入图片描述
在stale状态下,如果AR1向AR2发送数据,则邻居状态变为由未知(stale)变为延时(Delay),并发送NS请求
在这里插入图片描述
在这里插入图片描述
3.经过一段时间后,Delay变为probe(多长时间咱也不知道,等了蛮久没出来)若有NA报文应答,则由Delay(延时)-reachable(可达)。
在这里插入图片描述
4.在probe状态,AR1每隔一段时间发送单播NS,发送固定次数后,有应答则变成reachable,否则邻居状态关系则变成Empty,即删除表项。
大致上如此,有的状态没显示出来,可能是太快了?
重复地址检测DAD(Duplicate Address Detect)在接口使用某个IPV6单播地址时进行的。
未进行DAD检测的地址,成为实验地址,不能用来进行单播通信。但是仍然会加入两个组播组。ALL-NODES组播组和试验地址所对应的Solicited-Node组播组。
在这里插入图片描述
在这里插入图片描述
我们自己抓包来看看内容
在这里插入图片描述
这里AR2,AR3地址重复。
在这里插入图片描述.已经抓到包,我们来看一看过程。
当AR3配置了IPV6单播地址2012::2/64,此时AR2上有相同的地址。
1.当AR3配置IPV6单播地址时就会进行地址冲突检测,会发送一个NS报文,来询问网络中有没有人使用2012::2/64这个地址。
该NS报文
源IP为"::",表示AR3还未获取到地址
目的IP为要检测的单播IPV6地址2012::2对应的被请求节点组播地址。FF02::1:FF00:2。MAC地址为对应的3333-FF00-0002
报文中的target会对要检测的IPV6单播地址进行标记。
在这里插入图片描述
此时AR2上配置了2012::2/64这个单播地址,所以会默认监听该单播地址对应被请求节点组播组,FF02::1:FF00:2,AR2收到这个报文后,会检查里面target标记的是否是自己的IPv6单播地址。

  • 如果这个为自己的实验地址,则放弃使用
  • 如果是正常使用的地址,则AR2向该地址的Node-Solicited组播组发送NA报文。该报文中包含了2012::2/64这个地址

回应NA报文
源IP为2012::2/64 目的IP为FF02::1(IPV6所有节点组播地址)。
源MAC为自己,目的MAC为目的IP对应的组播MAC
在这里插入图片描述
所以此时AR3收到报文后,发现改地址已经被使用。则放弃使用该地址
路由发现:
ipv6无状态自动分配地址,是如何进行工作的。
IPV6无状态自动分配地址
主机或路由器从RA报文里获得64位前缀,然后通过EUI-64规范自动生成64bit的接口标识,然后得到IPV6单播地址。
默认情况下,路由器发布RA报文是处于抑制状态(也就是不发送),避免占用链路带宽
需要使用命令undo ipv6 nd ra halt,解除抑制RA报文发送。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
分为两种情况:主动(RA),被动(RS)
路由器通告RA(router advertisement)报文:路由器周期组播发送RA报文,报文中会含有网络的前缀消息,以及其他标志位信息。RA报文type字段值=134.
在这里插入图片描述
1.在R1接口在配置了IPV6单播地址2012::/64,并且开启接口RA报文。type=134.路由器会周期发送RA报文,里面包含前缀2012::/64。
2.报文的源IP为AR1的G0/0/0的链路本地地址,目的IPV6地址为FF02::1所有节点组播地址;源MAC是AR1的MAC,目的MAC是,目的IP对应的组播MAC(3333-0000-0001)
RA报文中的Flags字段:其中的含义
在这里插入图片描述
M位:表示是否需要使用DHCPv6来获取IPV6单播地址
M=0(默认)表示使用非DHCPv6来获取IPV6单播地址
M=1,表示使用DHCPv6来获取IPV6单播地址
O位:表示是否需要使用DHCPv6来获取其他参数(DNS等等)
O=0(默认)表示不需要使用DHCPv6来获取其他参数
O=1表示使用DHCPv6获取其他参数
前缀字段里面的Flags
在这里插入图片描述
L位:表示该RA消息前缀是否分配给本地链路
L=1(默认)表示该RA消息中前缀是分配给本地链路
L=0表示…
A位:表示该前缀能不能用于无状态自动配置
A=1(默认)表示该前缀可以用于无状态自动配置
A=0表示该前缀不能被用于无状态自动配置
以上字段中值都可以通过命令修改。
测试Mbit位影响(Obit位=0)----摘自B站上学习素材
环境是在win7主机上
思科设备
M=0,RA消息会携带前缀,win7主机收到消息后,使用里面前缀构建地址,并且不发送DHCPv6 solicitation
M=1,RA消息会携带前缀,而win7主机收到消息后,使用里面前缀构建地址,同时发送DHCPv6 solicitation来请求地址
华为设备
M=0,RA消息会携带前缀,win7主机收到消息后,使用里面前缀构建地址,并且不发送DHCPv6 solicitation
M=1,RA消息不会携带前缀,win7主机收到消息后,发送DHCPv6 solicitation
总结:M=1,思科设备依然会携带前缀,华为设备不携带前缀。
摘自:B站红茶三杯的IPV6详解
路由器请求RS(router solicitation)报文:为了尽快获得前缀进行通信,主机可以发送RS报文来请求,路由器收到后会回复RA报文,RS报文中type字段=133.
没抓到RS的包,换成路由器也不行,去网上找一张图
在这里插入图片描述
RS报文,type=133.。源IP地址为发这个报文的主机链路本地地址(前提是通过DAD检测),目的地址为FF02::1(所以组播节点地址)。产品手册上为FF02::2。
在这里插入图片描述
这里按照网上找的RS报文抓包为准。源MAC为主机MAC。目的MAC为FF02::1对应的组播MAC:3333-0000-0001.通过RA报文获取的路由前缀,经过EUI-64后,会对该地址进行DAD检测,通过了就可以使用,没通过就需要手工配置。
重定向:
当网关路由器发现报文从其他网关路由器转发更好,就会发送重定向报文告知报文的发送者,让报文发送者选择另一个网关路由器。type=137.报文中携带更好地路径下一跳地址和需要重定向转发的报文的目的地址等信息。
在这里插入图片描述
没能营造出实验图,只能对着产品文档来说

HostA网关为,RA,主机A,RB,RA处在同一网段,此时主机A访问主机B,报文会先发送给RA,而RA查路由表发现去往主机B的路由,下一跳是RB。所以发现主机A可以选择更好地下一跳RB,访问主机B所以,此时会触发重定向。RA会向主机A发送redirect报文 type=137(我没抓到过)。在该重定向报文中携带主机B的IP,以及最好的下一跳RB的IP。当主机A收到报文后,会自动生成一条去往主机B的主机路由(128bit)。下一跳为RB。之后当主机A访问主机B,就会走RB。而访问其他网络还是把RA当做网关。
触发重定向的条件:
报文的目的地址不是一个组播地址。
经过路由计算后,路由的下一跳出接口是接受报文的接口。
设备发现报文最佳下一跳IP地址和报文的源IP处于同一网段。
设备检查报文源地址,发现自身的邻居表项中有用该地址作为全球单播地址或链路本地地址的邻居存在。
这就没了。


http://chatgpt.dhexx.cn/article/9ml1F6GJ.shtml

相关文章

IPV6邻居发现协议(NDP)

概述 NDP(Neighbor Discovery Protocol,邻居发现协议)是IPv6的一个关键协议,它组合了IPv4中的ARP、ICMP路由器发现和ICMP重定向等协议,并对它们作了改进。作为IPv6的基础性协议,NDP还提供了前缀发现、邻居不…

11.NDP协议分析与实践

NDP 协议分析与实践 1. 概述 1.1 简介 Neighbor Discovery Protocol 基于 ICMPv6 实现,用于替代 IPv4 中的 ARP 和 ICMP 路由器发现基于 ICMPv6 实现节点发现(主机和路由)、重复地址检测、地址解析、邻居不可达检测和重定向等功能 1.2 NDP 报文格式 1.2.1 路由…

IPv6邻居发现协议--NDP详解

一、ICMPv6 -Internet控制报文协议 ICMPv6是IPV6的基础协议之一,用于向源节点传递报文转发的信息或错误 协议类型号(即:IPv6Next Header)为58 icmpv6可以提供icmpv4的的对应功能之外,还有其他一些功能的基础如邻居发…

IPv6中NDP协议简介

本文介绍IPv6中一种重要协议——NDP协议。NDP协议是实现IPv6通信的重要协议之一,本文将详细介绍IPv6中NDP的协议实现过程和技术细节。 阅读本文,您需要又有一定的IPv6基础知识,您如果对此还存在困惑,欢迎查阅下列文章:…

5. NDP

NDP(Neighbor Discovery Protocol)NDP实现了IPv6中诸多重要机制。 路由器发现:该功能帮助设备发现链路上的路由器,并获得路由器通告的信息。 无状态自动配置:无状态自动配置是IPv6的一个亮点功能,它使得IP…

NDP原理详解

概述: 节点使用ND,可以确定连接在同一链路上的邻居的链路层地址,快速清除已经变成无效的缓存值。主机也使用ND发现能为其转发报文的路由器。最后,节点使用此协议主动跟踪哪一个邻居可达,哪一个邻居不可达,…

NDP 协议介绍

邻居发现协议NDP(Neighbor Discovery Protocol)是IPv6协议体系中一个重要的基础协议。 邻居发现协议替代了IPv4的ARP(Address Resolution Protocol)和ICMP路由器 发现(RouterDiscovery),它定义了…

一文解释NDP协议(IPv6邻居发现协议)ICMPv6

目录 目录 一、前言介绍: 1.1、NDP简单说明: 1.2、ICMPv6-Internet控制报文协议 1.3、IPv6和IPv4相比有哪些优势? 二、IPv6邻居发现协议--NDP详解 2.1、IPv6地址解析 2.1.1、邻居请求(Neighbor solicition)NS …

欧拉道路与欧拉回路

1. 相关的概念如下: ① 有向图G为欧拉回路:当且仅当G的基图连通,且所有顶点的入度等于出度 ② 有向图G为欧拉路:当且仅当G的基图连通,而且只存在一个顶点u的入度比出度大于1,只存在一个顶点v的出度比入度…

欧拉回路及例题

欧拉回路 几个定义性质与定理 定理1 推论1 定理2 推论2 性质1性质2 算法主体例题 uoj117求给定图的欧拉回路poj1041求字典序最小的欧拉回路poj1386Play on Wordspoj2230求无向图欧拉图要求每条边走两遍且方向不同poj2513字符串的欧拉图poj2337字典序poj1637Sightseeing tour求…

欧拉回路和Hanmilton回路

1、 一个是对点的,一个是对边的。 2、欧拉回路、欧拉图。有欧拉回路的,就做欧拉图?其实,还有欧拉通路的概念,一笔画完一个图的概念。理一理。 欧拉图:就是从起点出发,可以回到起点的图&#x…

欧拉回路,欧拉路径,欧拉图详解

欧拉回路定义: 欧拉回路:每条边恰好只走一次,并能回到出发点的路径 欧拉路径:经过每一条边一次,但是不要求回到起始点 首先看欧拉回路存在性的判定(这里先不说混合图): 一、无向图…

欧拉回路的基本概念

欧拉回路相关定义: || 如果图G(有向图或者无向图)中有一条通路,该通路上所有边一次且仅有一次行遍所有顶点,那么这条通路称为欧拉通路 || 如果图G中所有边一次且仅有一次行遍所有顶点,称图G有欧拉回路 |…

【算法】欧拉回路

欧拉路径 在一个图中,由i点出发,将每个边遍历一次最终到达j点的一条路径。 欧拉回路:ij时的欧拉路径。 一些概念 图中的度:就是指和该顶点相关联的边数 在有向图中,度又分为入度和出度。 入度 (in-degree) &#x…

欧拉回路问题

文章目录 欧拉回路程序设计程序分析欧拉回路 有一条名为Pregel的河流经过Konigsberg城。城中有7座桥,把河中的两个岛与河岸连接起来。当地居民热衷于一个难题:是否存在一条路线,可以不重复地走遍7座桥。这就是著名的七桥问题。它由大数学家欧拉首先提出,并给出了完美的解答…

欧拉回路/路径【总结】

作为广大OIer的朋(gong)友(di)的欧拉,在图论中也贡(zuo)献(e)良(duo)多(duan),尤其是萌新经常会遇到以下两个恶…

欧拉通路和欧拉回路

定义: 欧拉通路: 如果存在一条通路包含此图中所有的边,则该通路成为欧拉通路,也称欧拉路径(一笔画) 欧拉回路: 如果欧拉路径是一条回路,那么称它为欧拉回路 欧拉图 : 含…

实现求欧拉回路算法(C++)

一、算法介绍及实现过程: 程序的输入为对应图的结点数和图中与各结点相连的点的编号。(注:无向图中的多重边和自环需多次输入;有向图中的多重边需多次输入)程序的第一步是求出图的邻接矩阵。邻接矩阵反映了点与点之间…

欧拉回路,欧拉路

http://www.cnblogs.com/pandy/archive/2009/05/07/1452209.html 参考以上: 判断欧拉路,欧拉回路: 注意图联通,可以DFS或者并查集 一.无向图 欧拉回路:每个顶点度数都是偶数 欧拉路:所有点度数为…

欧拉回路讲解

今天我们专门来讲讲欧拉回路 欧拉回路是数学家欧拉在研究著名的德国哥尼斯堡(Koenigsberg)七桥问题时发现的。如图1所示,流经哥尼斯堡的普雷格尔河中有两个岛,两个岛与两岸共4处陆地通过7座杨 彼此相联。7桥问题就是如何能从任一处陆地出发,经过且经过每个桥一次后回到原出发…