IPv6的邻居发现技术( 四 )


路由器必须能够确定每个邻居路由器的本地链路(1ink-local)地址,以保证重定向消息里的目标地址根据本地链路地址来识别邻居路由器 。
在源端没有正确应答重定向消息,或者源端选择忽略没有被验证的重定向消息的情况下,为了节省频带和处理的费用,路由器必须限定发送重定向消息的速率 。
在收到重定向消息时,路由器不能更新路由表 。
(4)邻居不可达检测
任何时候通过邻居或到达邻居的通信,会因各种原因而中断,包括硬件故障、接口卡的热插入等 。如果目的地失效,则恢复是不可能的,通信失败;如果路径失效,则恢复是可能的 。因此节点应该主动跟踪数据包发向邻居的可达性状态 。
主机与邻居节点之间所有路径都应进行邻居不可达性检测,包括主机到主机、主机到路由器以及路由器到主机之间的通信,也可用于路由器之间,以检测邻居或邻居前向路径发生的故障 。
如果路由器最近收到确认,邻居的IP层已经收到最近发送到它的数据包,那么该邻居是可达的 。邻居不可达检测使用两种方法进行确认:一种是从上层协议来的提示,提供“连接正在处理的确认;另一种是路由器发送单播邻居请求消息,收到了应答的邻居通告消息 。为了减少不必要的网络流量,探测消息仅发送到邻居 。
邻居不可达性检测与向邻居发送数据包同时进行 。在邻居可达性确认期间,路由器继续向缓存链路层地址的邻居发送数据包;如果没有数据包发向邻居,则不发送检测 。
6、邻居发现协议与ARP的比较
邻居发现协议比IPv4协议的相应部分在许多方面有了更大的改善 。
在IPv4中,由IP层到链路层地址的解析(ARP)是基于链路层的广播机制来实现的,数据包由LLC网桥进行转发,在一个比较大的站点范围内会占用大量的带宽,有时还会引起“广播风暴 。而在IPv6中,这一过程是基于IP层的组播机制实现的,这样,在地址解析的过程中受到地址解析发送包影响的节点数大大减少,而且非IPv6节点根本不受影响 。
另外,IPv6的邻居发现协议中路由器通告消息会带着自己的链路层地址,还会带着本地链路的前缀,从而避免了每个节点配置自己的子网掩码 。
IPv4的ARP是不安全的,无法保证回应ARP探测消息的节点是需要的节点,这样会导致发往一个节点的数据包被另一个节点窃听到 。而邻居发现协议运行在IPv6之上,它属于网络层协议,它的安全性可由IPv6的安全性来保证 。
IPv4的ARP运行在数据链路层,不同的网络介质需要有不同的ARP协议,例如Ethernet ARP与FDDI ARP就不完全相同 。而邻居发现协议运行在网络层,与介质无关,任何网络媒介都可以运行相同的邻居发现协议 。
与IPv4协议不同,通过邻居发现协议得到的各种地址信息都有一定的生存期,这些生存期由这些信息的发送者规定 。路由器能够通知主机如何执行地址配置,例如路由器能指示主机是使用状态地址配置还是使用无状态地址配置 。路由器能够通告链路的最大传输单元信息(MTU),以使同一链路上的所有节点使用相同的MTU值 。对于无状态地址自动配置来说,邻居发现协议能够提供主机进行无状态地址自动配置所需要的全部信息 。
在IPv4到IPv6的早期过渡阶段,所有实现IPv6的节点都应该被配制成一种双栈结构 。双栈结构使节点能够与IPv4保持兼容,因此现存的IPv4协议层应该被一种既支持IPv4又支持IPv6的协议层所取代,而且TCP和UDP层应该被升级支持IPv6 。支持两个版本的IP协议的最大困难在于同时处理两种不同结构的地址,邻居发现中的邻居自动发现功能可以很容易地处理这种功能 。

推荐阅读