概述
今天继续给大家介绍IPv6,本文讲的是IPv6的邻居状态与邻居检测机制。当一个网络设备上线后,如果存在了IP地址,那么该设备必然要进行IP地址的检测,以判断本地的IP地址是否与网络中其他IP地址造成冲突。在IPv4中,该功能的实现是依靠免费的ARP报文,而在IPv6中,该功能的实现是依靠ICMPv6协议报文实现的。
本文涉及到一些IPv6的理论知识,要想读懂本文,您需要又一定的IPv6的基础,如果您对IPv6还不是很熟悉,欢迎查阅以下文章:IPv6地址解析详解、IPv6各地址计算方式汇总、IPv6地址简介、IPv6报文格式讲解及其科学性探究
一、IPv6邻居检测简介
我们都知道,常用的IPv6单播地址有GUA(全球唯一地址)、ULA(本地唯一地址)和LLA(本地链路地址)三种。对于这三种IPv6地址,在设备上线后,都必须进行IPv6冲突地址检测。(所谓设备上线就是说当一个接口由down状态转变成up状态后,或者是当一个接口刚刚激活了IPv6功能配置了IPv6地址后)
而IPv6的邻居检测,还是使用了NS和NA报文。
在IPv6的NS报文中,源IP地址为::(两个冒号,表示未定地址),目的IP地址为本地IPv6地址对应的被请求节点组播地址。如果网络中确实存在冲突,则对该NS报文的回复的NA报文中源IP地址为发生冲突的IPv6地址,目的地址为ff02::1,即所有节点组播地址。
二、IPv6邻居状态简介
在IPv4中,网络设备使用ARP缓存表简单的存储了IP地址和MAC地址的对应关系。但是在IPv6中,对链路上项链的邻居进行了更加详细的规定。
在IPv6中邻居状态有以下5种:
1、complete。 complete状态表示已经发出NS报文但是没有收到NA响应报文。
2、reachable。 reachable状态则是已经收到了NA响应报文(30s内)
3、stale。 当设备处于reachable状态后30s内,如果没有收到其他报文,则邻居状态进入stale状态,表示“陈旧”。如果设备不需要向该邻居发送数据,则此状态会一直持续下去,要注意的是,stale状态是这些状态中唯一可以稳定持续存在的状态。
4、delay。 当设备处于stale状态后,有向该邻居发送数据的需求时,该设备会首先发送NS包检测对方是否在线,当NS包发送完毕后,设备处于delay状态。delay时间为5s,在这5s内,如果收到了对方的NA包,则会进入到reachable状态,如果没有收到,则会进入probe状态。
5、probe。 当设备进入probe状态后,会间隔1s发送NS报文,但是这里发送的NS报文为单播的NS报文(目的IP地址为该IPv6邻居的IP地址)。若3s内仍然收不到NA报文,则认定该IPv6邻居已经下线。接下来会在自己的IPv6邻居表中删除该邻居。
IPv6邻居状态流程如下所示:
注意,该图中只说明了当一方作为主动端主动发送NS报文的情景,实际上,如果有别的网络设备主动发球NS请求,则当本网络设备收到该NS报文后,就知道了一个IPv6邻居上线,此时就会自动生成该邻居表项,并将其状态置为reachable。
三、IPv6相对于IPv4的改进
①IPv6在检测到地址冲突后,会把该地址状态置为duplicate状态,在该状态下,该IP地址不能起到收发数据包的作用。而IPv4中,并没有对该状态的处理,因此计算机网络表现出混乱的状态,具体体现就是一会可以通,一会不能通。(注:由于冲突地址检测只在设备上线时检测一次,因此在某些特殊的环境下,还是不可避免的出现没有检测出来从而出现混乱的情景,比如在检测完成后拓扑发生变化)
②由于引入了邻居状态和检测机制,因此长时间(30s)不通信的IPv6地址就处于STALE状态,当网络设备要与该状态下的IPv6地址通信时,要首先发NS包进行检测对方是否在线,相比于IPv4在默认情况下ARP缓存存放20min来说,IPv6能更快速的检测出邻居失效。
③由于IPv6的NS和NA报文是三层协议封装,因此可以利用将IPSEC协议应用在IPv6的ICMP报文中,这样可以避免IPv4中ARP协议的安全性不足带来的安全风险。
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200/article/details/118656125
最后
以上就是干净刺猬为你收集整理的IPv6邻居状态与邻居检测机制的全部内容,希望文章能够帮你解决IPv6邻居状态与邻居检测机制所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复