分类: 系统运维
2011-11-16 15:34:52
IPv6通过5种IPMPv6包实现邻居发现,它比IPv4中的ARP更加高效。IPv6邻居发现解决了同一链路上多个节点相关问题。
IPv6邻居发现协议提供下列功能:无服务器自动配置、路由器发现、前缀发现、解析、邻居不可达检测、链路MTU发现、下一跳决定和重复检测等。
IPv6邻居发现协议定义了5种ICMPv6包:
路由器请求(RS)——当节点不愿等待下一次周期性路由器宣告,希望路由器立刻发送路由器宣告时发送的多播包。一个正在初始化的节点可以发送路由器请求,这样它可以马上得到链路上路由器的配置参数。
RS是类型133的ICMP包。源地址是分配给发送主机的地址。如果还没有分配地址,则使用未指定地址0:0:0:0:0:0:0:0。目的地址是所有路由器的多播地址(FF02::2)
路由器宣告(RA)——周期性发送或对请求作应答。路由器报告他们的存在,并提供节点配置自己所需要的信息。
RA是类型134的ICMP包。源地址是发送路由器的本链路地址,目的地址是发送路由器请求的节点地址或链路范围所有节点多播地址 (FF02::1)。跳数限制必须设置成255。跳数限制255确保非本链路的设备不能通过发送路由器宣告来试图干扰通信流。如果非本链路设备向本链路发 送RA,经过路由器以后跳数限制减1,使该包成为非法。接受节点只认为跳数限制是255的RA是有效的。
RA中包含路由器生存时间。路由器生存时间告诉节点他们能将路由器作为默认路由器多久。其值为0表示该路由器不是候选的默认路由器,不能出现在节点的默认路由器表中。收到RA的节点构造一个默认路由器表。所有发送RA且生存时间不为0的路由器都出现在该列表中。
邻居请求(NS)——允许节点确定邻居的链路层地址,或者判断邻居是否还能从缓存的链路层地址可达。同时允许节点判断链路上是否存在重复的IP地址。
邻居解析消息用来获得邻居的链路层地址、提供本机的链路层地址以及验证邻居的可达性。它是一个类型为135的ICMP消息。IP包的源地址是发 请求的节点的单播地址。用作获得链路层地址时,目的地址是关联在目标IP地址的被请求节点多播地址;用作可达性确认时,目的地址是单播地址。跳数限制是 255,和RA中一样,收到NS中跳数255用于确保该包没有穿过路由器。
邻居宣告(NA)——对邻居请求所发的应答或者在链路层地址改变时不经请求发送。
邻居宣告用作应答NS或者在没有被请求时立即传播如链路层地址改变等新消息。NA是类型为136的ICMP包。源地址是分配给发送接口的任意有 效单播地址。当应答NS时,目的地址是请求包的源地址,或者请求源地址是未指定地址时目的地址是所有节点地址(FF02::1)。未经请求的宣告目的地址 也是所有节点地址。跳数限制是255。
重定向——由路由器发送,将流量重定向到两路上更好的第一跳地址。
用RS和RA替代ARP
在IPv6中,对节点链路层地址的确定使用RS(ICMPv6Type135)、RA(ICMPv6Type136)和被请求节点多播地址(FF02::1:FFxx:xxxx)的组合。
IPv6邻居发现协议比IPv4中的ARP更加高效:
在IPv6中,只有关心这个机制的邻居节点才会在它们的协议栈中处理RS和RA的公告消息。而在IPv4中,ARP广播使本链路上所有节点把ARP消息发送给IPv4协议栈。
在IPv6中,节点在相同的请求中相互交换链路层地址。在IPv4中,需要两个ARP广播消息才能得到相同的结果。
验证邻居缓存中IPv6地址和链路层地址的可达性。IPv4的ARP中,表项过期后被删除。