IPv6邻居发现机制
IPv6协议中一个重要特性就是IPv6的邻居发现机制,在本课题的实验中可以看到IPv6邻居发现机制中的众多特性。地址自动配置与邻居发现有密切的关系,因此也将在本节中涉及。
一、邻居发现
IPv6邻居发现最初在RFC 1970(参考文献〔7〕)中描述,目前已在RFC 2461 [i]中重新定义。 IPv6邻居发现提供了几种不同用途,包括以下方面的支持:
l 路由器发现。即帮助主机来识别本地路由器。
2 前缀发现。节点使用此机制来确定指明链路本地地址的地址前缀以及必须发送给路由器转发的地址前缀。
3 参数发现。此机制帮助节点确定诸如本地链路MTU之类的信息。
4 地址自动配置。用于IPv6节点地址自动配置 [ii]。
5 地址解析。替代了ARP和RARP,帮助节点从目的IP地址中确定本地节点(即邻居)的链路层地址。
6 下一跳确定。可用于确定包的下一个目的地,即可确定包的目的地是否在本地链路上。如果在本地链路,下一跳就是目的地;否则,包需要路由,下一跳就是路由器,邻居发现可用于确定应使用的路由器。
7 邻居不可达检测。邻居发现可帮助节点确定邻居(目的节点或路由器)是否可达。l 重复地址检测。邻居发现可用于帮助节点确定它想使用的地址在本地链路上是否已被占用。
8 重定向。有时节点选择的转发路由器对于待转发的包而言并非最佳,这种情况下,该转发路由器可以对节点进行重定向,以将包转发到最佳的路由器。例如,节点将发往Internet的包发送给为节点的内联网服务的默认路由器,该内联网路由器可以对节点进行重定向,以将包发送给连接在同一本地链路上的Internet路由器。
邻居发现服务通过5种ICMPv6 [iii]报文类型来执行,这些报文包括:
9 路由器宣告。要求路由器周期性地发送多点传送路由器宣告消息,宣告其可用性及其可到达的在线节点、用于配置的链路和Internet参数。这些宣告包含对所使用的网络地址前缀、建议的路程段极限值及本地的MTU的指示,也包括指明节点应使用的自动配置类型的标志。
10 路由器请求。主机可以请求本地路由器立即发送其路由器宣告。路由器必须周期性地发送这些宣告,但是在收到路由器请求报文时,不必等到下一个预定传送时间到达。而应立即发送宣告信息。
11 邻居宣告。节点在收到邻居请求报文时或者链路层地址改变时,发出邻居宣告报文。
12 邻居请求。节点发送邻居请求来请求邻居的链路层地址,以验证它先前所获得并保存在告诉缓存中的邻居链路层地址的可达性,或者验证它自己的地址在本地链路上是唯一的。
13 重定向。路由器发送重定向报文以通知主机,对于特定的目的地自己不是最佳的路由器。
二、地址自动配置
地址自动配置过程包括两种类型:无状态的和有状态的。无状态类型是IPv6整体的一部分,最新是在RFC 2462 [i]中指定。无状态的自动配置是基于动态主机配置协议(DHCP),在IETF草案中 [ii]指定。 1)无状态的自动配置
无状态的自动配置主要满足以下以下的要求: l 在IPv6主机连到网络之前,不需要任何形式的手工配置,必须产生一种机制来为每个接口自动产生唯一的地址,从接口令牌开始(通常几乎是接口链路层地址)。
由一些连到同一链路的主机组成的小型局域网不是必须要指定那个的服务器(DHCP)来通信。主机必须能够从包含和链路相关的前缀列表的路由器宣告得出本地或全局地址。
由主机和路由器组成的大公司网络不是必须要使用有状态的服务器(DHCP)来通信。主机必须能够从包含和链路相关的前缀列表的路由器宣告得出本地或全局地址。
无状态配置过程必须使一个站点的主机很容易进行重新编号操作(地址变化,这种情况往往出现在一个站点的主机转换到另外的网络服务提供商的时候)。事实上,重新编号操作将周期性地执行,因为全局地址通常是基于提供商的。人们将需要过渡周期,允许新地址和老地址共存使得迁移过程可以无痛苦地完成。
应当允许网络管理员指定他们是否愿意使用无状态配置、有状态配置或两者都有。
接口是按照下面的方式自动配置自身;
首先,我们必须确定只有具备多点传送能力的接口能配置自身,并且因此自动配置只有在支持多点传送通信的链路上发生。当一个接口被激活(刚刚打开或一次重新启动后),主机通过接口令牌中得到接口的链路本地地址,该地址暂时设置为实验状态,并且开始一个重复地址检测来检测链路本地地址是否尚未使用。在此过程确认此地址是唯一的之后才将此地址分配给接口。之后的步骤包括路由器宣告消息或确认网络上没有任何可用的路由器。节点可以等待路由器宣告消息,也可以发送一个或更多的路由器请求给所有的路由器(FF02::2)多点传送地址,节点使用路由器的响应信息来完成自动配置。路由器宣告中包含两个标志(参考文献〔19〕-5.5.5节),表示主机将要执行的自动配置的类型。标志M(被管理的地址配置)表明主机是否必须使用规定的地址自动配置。标志O(其他有状态的配置)表明主机是否使用其他信息(不包括地址)的有状态自动配置。此外路由器宣告包含用在本地和全局地址的无状态的自动配置的前缀。由于路由器宣告也是周期性地产生的,主机地址可以继续更新。新的
地址能够作为新的前缀复制的后果来添上,旧的地址由于不再被任何路由器宣告而变成无效。
2)有状态的自动配置和DHCPv6
有状态的自动配置下,必须要求安装和管理DHCP服务器,并要求接受DHCP服务的每个新节点都必须在服务器上进行配置。DHCP服务器保存它要求提供配置信息的节点列表,如果节点不在列表中,该节点就无法获得IP地址。DHCP服务器还保持着使用该服务器的节点的状态,因为该服务器必须了解每个IP地址使用的时间,以及何时IP地址可以进行重新分配。
有状态自动配置的问题在于。用户必须保持和管理特殊的自动配置服务器以便管理所有“状态”,即所容许的连接及当前连接的相关信息。对于有足够资源来建立和保持配置服务器的机构,该系统可以接受;但是对于没有这些资源的个人或小型机构,无状态的自动配置是较好或者较容易的解决方案。这种机制个人节点能够确定自己的IP配置,而不必向服务器显式请求各节点的信息。
使用无状态的自动配置要简单的多,为什么还要使用有状态的自动配置呢?这是有构造网络的机构的要求决定的。无状态自动配置对得到IP地址的节点提供最低程度的监视。如果有DHCP服务器的支持,机构可以更紧密地控制网络可配置的节点。只有由网络管理员明确授权的节点才能通过DHCP服务器来配置。 DHCP是必须经过升级才可以支持IPv6地址的,DHCPv6就是为IPv6设计的,但是它仍然处于研究、修改、制定中。