【IPv6】邻节点不可到达检测学习(NUD)
邻节点不可到达检测
邻节点不可到达检测方法有2种:
1. 通过发送单播邻节点请求报文和接收响应请求的邻节点公告报文来完成。
2. 借助上层协议确定可达性。(TCP)
通过NS/NA报文进行NUD检测
响应请求的邻节点公告报文仅用于响应邻节点请求报文,响应请求的邻节点公告报文会将其报文中的请求标志置为1。(响应时,NA报文中请求标志位设为1)。
自发的邻节点公告报文或路由器公告报文并不能用于验证可达性。
邻节点请求报文和邻节点公告报文的交互仅能确认从发送邻节点请求报文的节点A到发送邻节点公告报文的节点B的可到达性,并不能验证从B到A的可达性。
不可达检测是单向的。
借助上层协议进行NUD检测
当上层协议表示使用下一跳地址进行的通信正处于发送数据的过程中时,可以间接确定可到达性。对于TCP业务流来说,开始发送数据表明已经收到了对方节点发来的对发送数据请求的确认。由接收到的TCP确认所证实的端到端的可到达性,也同时暗示了通往目标的第一跳的可到达性。TCP协议模块根据现有的机制,把这些暗示提供给了IPv6协议模块。
邻节点缓存表项的状态
1. 未完成(INCOMPLETE )
使用请求节点多播邻节点请求报文的IPv6地址解析过程正在进行中。当创建一个新的邻节点高速缓存表项,但此节点相应的链路层地址还没有得到时,会进入未完成状态。在放弃地址解析并删除邻节点高速缓存表项之前可以发送的多播邻节点请求报文的数目可以由变量来设置。RFC2461使用MAX_MULTICAST_SOLICIT的变量,并建议此变量的值为3。
个人理解:
也就是说,要添加一条邻居缓存表项,先进入INCOMPLETE状态,然后在发送MAX_MULTICAST_SOLICIT次NS请求前,如果获取到了节点相应的链路层地址,那么该条邻居缓存状态变化为REACHABLE。否则删除该条邻居缓存。
2. 可到达(REACHABLE)
通过接收响应请求的单播邻节点公告报文,可以确认邻节点的可到达性。邻节点高速缓存的表项会一直保持可到达REACHABLE状态,直到路由器公告报文的可到达时间字段中规定的时间(毫秒数)(或主机默认值)耗尽为止。
只要上层协议,比如TCP协议,表示传输数据的通信仍在进行中,则相关表项就会始终保持可到达状态。每当上层协议表示要开始传输数据时,表项中的可到达时间就会被刷新。
个人理解:
可到达可以保持一段时间,这段时间内,该条邻居缓存的状态一直是REACHABLE状态。
如果有上层协议TCP在通信,表项中的可到达时间就会被刷新。
3. 失效(STALE)
可到达时间(自从上次收到可到达确认后过去的时间)耗尽。当路由器公告报文的时间可到达时间字段中规定的时间(毫秒数)(或主机默认值)耗尽时,邻居缓存的表项进入失效STALE状态,并且一致保持该状态,直到有数据包发送给这个邻节点。
当主机收到一个公告自己链路层地址的自发邻节点公告报文(NA)时,与此邻节点对应的表项也会进入失效状态???
个人理解:
时间耗尽,邻居缓存表项状态变为STALE,直到有报文发送到该邻节点会发生变化。
4. 延迟(DELAY)
为等待上层协议提供可达性确认,在主机发送邻节点请求报文(NS)前,邻节点缓存表表项进入延迟DELAY状态,并且等待一段可以设定的时间。RFC2461中使用名为DELAY_FIRST_PROBE_TIME的变量,并建议此变量的值为5秒。如果在延迟时间结束时,还没有收到可到达性的确认,则此表项进入探测PROBE状态,并发送一个单播邻节点的请求报文。
个人理解:
在失效状态下,有报文要发送到一个邻节点,该邻居缓存的状态变换为延迟。
在延迟期内如果收到了可达性确认,则进入到REACHABLE状态。延迟期内没有收到可达性确认,发送一个单播邻节点的请求报文(NS),进入到探测阶段。
5. 探测(PROBE)
无论邻节点缓存的表项处于失效状态还是延迟状态,都表示正在进行可到达性的确认。主机按照一定的时间间隔发送单播邻节点请求报文(NS),这个时间间隔等于主机收到的路由器公告中的重传定时器字段的值(或默认值)。在放弃可达性检测并删除相应的邻节点缓存表项之前可以发送的邻节点请求报文的数目可以由变量来设置。RFC2461使用名为MAX_UNICAST_SOLICIT的变量,并建议此变量的值为3。
个人理解:
探测阶段,还可以发送几次NS报文用来确认可达性。如果不能得到确认,删除该表项。
任何表项在任何时刻,都可以从任何状态进入无表项存在状态。(表项不存在,即删除之)。
如果不可达的邻节点是路由器,则主机可以从的默认路由器列表中选择另一个路由器,并且对新选择的这个路由器进行地址解析和邻节点不可到达检测。
如果路由器变成主机,则它应该发送路由器标志为0的多播邻节点公告报文。如果主机收到了从路由器发来的邻节点公告报文,并且其中的路由器标志为0,则主机将它的默认路由器列表中删除该路由器,如果需要,就再选择另一个路由器。
转载于:https://blog.51cto.com/qiaopeng688/2150119
【IPv6】邻节点不可到达检测学习(NUD)相关推荐
- opencv角点检测学习总结
学习opencv 角点检测 如果一个点在两个正交方向上都有明显的导数,则我们认为此点更倾向于是独一无二的,所以许多可跟踪的特征点都是角点. 一下为角点检测中用到的一些函数 cvGoodFeatures ...
- 《南溪的目标检测学习笔记》——夏侯南溪的CNN调参笔记,加油
1 致谢 感谢赵老师的教导! 感谢张老师的指导! 2 调参目标 在COCO数据集上获得mAP>=10.0的模型,现在PaddleDetection上的Anchor-Free模型[TTFNet]的 ...
- 特征点检测学习_2(surf算法)
特征点检测学习_2(surf算法) 在上篇博客特征点检测学习_1(sift算法) 中简单介绍了经典的sift算法,sift算法比较稳定,检测到的特征点也比较多,其最大的确定是计算复杂度较高.后面有不少 ...
- 每天一道LeetCode-----找到有多少条连续路径的和为给定值,路径不需要从根节点出发到达叶子节点
Path Sum III 原题链接Path Sum III 给定一个二叉树,计算二叉树中有多少条路径的元素和等于某个值,路径只需要连续即可,不要求必须从根节点出发到达叶子节点 如果只是简单的递归,那么 ...
- 点云3D目标检测学习(1):pointnet、pointnet++模型
3D目标检测学习笔记 开始正式进入3D目标检测的学习!!! 1.点云数据 无序性:只是点而已,排列顺序不影响 近密远疏 非结构化数据,直接CNN有点难 2.PointNet CVPR2017 Poin ...
- 《南溪的目标检测学习笔记》——模型预处理的学习笔记
1 介绍 在目标检测任务中,模型预处理分为两个步骤: 图像预处理:基于图像处理算法 数值预处理:基于机器学习理论 关于图像预处理,请参考<南溪的目标检测学习笔记>--图像预处理的学习笔记 ...
- 《南溪的目标检测学习笔记》——COCO数据集的学习笔记
1 COCO数据集 COCO数据集下载链接:COCO_download 1.1 数据概览 数据集大小 train: 118287张 train+val: 123287张 val: 5000张 目标数量 ...
- 《南溪的目标检测学习笔记》的笔记目录
1 前言 这是<南溪的目标检测学习笔记>的目录~ 2 学习目标检测的思路--"总纲" <南溪的目标检测学习笔记>--目标检测的学习笔记 我在这篇文章中介绍了 ...
- 《南溪的目标检测学习笔记》——目标检测模型的设计笔记
1 南溪学习的目标检测模型--DETR 南溪最赞赏的目标检测模型是DETR, 论文名称:End-to-End Object Detection with Transformers 1.2 decode ...
最新文章
- mvc登录实例 mysql_spring mvc + mybatis + mysql 调整的一个简单的登录例子
- wait(),notify(),notifyAll()进行了详细的分析介绍
- 框架设计之菜鸟漫漫江湖路系列 开篇
- 石头剪子布蜥蜴史波克python_C++字符串——石头剪刀布
- matlab机液位置伺服系统,基于MATLAB的电液位置伺服系统仿真分析
- ubuntu下的项目管理工具dia, planner
- PHP随机生成指定时间段的指定个数时间
- 全球区块链专利排行榜中国52家企业上榜
- OFDM子载波正交特性matlab,OFDM的正交性(转)
- 非常全面的UI设计面试技巧,简单实用值得收藏
- 项目经理:什么是矩阵型组织结构?
- bootstrapValidator.js文件里的提示语:设置为中文
- 理性分析三星盖乐世炸弹7
- 2021-04-17 ffmpeg视频合并报错;视频合并中间添加空白
- 机器学习——决策树算法之代码+数学实例解析
- 阿里内网最新发布“M8”级Java面试笔记,助力金九银十
- 云计算服务器和vps,云服务器和vps差别
- 记录达梦一次IO问题的分析
- 虚拟机配置windows7+office2010
- 使用HTML5,CSS3和Jquery的老虎机效果