自动配置和移动IP

       首先考虑全球分布最广泛的网络—电话系统的情形。如果每次买一个新电话,都要进行配置,以便能够使用指派到家中的电话号码,那么使用这样的网络将很不方便;如果每次把一个分机从房间移动到另一个房间时,都要重新进行配置,那么使用这样的网络也将非常不 方便。很多情况下, IPv4网络也要求如上所述的人工配置:安装一台新计算机或其他连接设备都要求有人来手工配置地址和其他网络信息。过去十年内情况有所改进,但IP配置仍然是个问题。
       IPng所陈述的最重要目标之一是支持“即插即用”—不需要任何人工干预,就有可能将一个节点插入IPv6网络并在网络中启动。此目标与计算工业的趋势一致: 1983年,个人计算机的买主必须安装操作系统及所有需要的应用软件;1998年,大多数新系统都预先安装了操作系统及应用软件。新系统在网络就绪方面的变化也显而易见。1983年,如果要连接到网络,用户必须购买并安装网卡或MODEM,然后对特定的应用进行配置; 1998年,大多数系统都包括了已配置好、可以马上使用的内置MODEM及(或)网卡。
       要使网络计算像使用电话一样方便,还需要改进用户友好性。在以太网网卡上设置硬件开关对工程师和科学家们可能很容易,但机械师、医生、旅行社以及其他非技术专业人士却不能忍受为使其系统运行或连接到Internet而浪费几小时或几天。
       11.1 IPv6的即插即用
       IPv6使用两种不同机制来支持即插即用网络连接。第一种机制的示例是启动协议(BOOTP ),后来又设计了动态主机配置协议( DHCP ),允许IP节点从特殊(BOOTP服务器或DHCP服务器获取配置信息。但是这些协议支持所谓的“状态自动配置”,即服务器必须保持每个节点的状态信息,并管理这些保存的信息。不论对于为许多个人用户服务的ISP,还是雇员经常在各部门间流动的大型机构, DHCP都是IPv4网络配置的重要工具。
       11.1.1 状态自动配置与无状态自动配置
       DHCP的问题在于,作为状态自动配置协议,它要求安装和管理DHCP服务器,并要求接受DHCP服务的每个新节点都必须在服务器上进行配置。很简单, DHCP服务器保存着它要提供配置信息的节点列表,如果节点不在列表中,该节点就无法获得IP地址。DHCP服务器还保持着使用该服务器的节点的状态,因为该服务器必须了解每个IP地址使用的时间,以及何时IP地址可以进行重新分配。
       状态自动配置的问题在于,用户必须保持和管理特殊的自动配置服务器以便管理所有“状态”,即所容许的连接及当前连接的相关信息。对于有足够资源来建立和保持配置服务器的机构,该系统可以接受;但是对于没有这些资源的小型机构,工作情形较差。至少对于大 多数个人或小型机构,无状态自动配置是较好或较容易的解决方案。这种机制允许个人节点能够确定自己的IP配置,而不必向服务器显式请求各节点的信息。
       实际上,至少在理论上且进行了某些假定的情况下,无状态自动配置规程相对容易实现。首先,如果使用IEEE EUI-64链路层地址(见第6章),用户就可以确信自己的主机I D是唯一的。因此,节点要完成的工作是确定自己的链路层地址并计算出EUI-64地址,然后确定自己的IPv6网络地址。向最近的路由器询问是确定网络地址的一种方法,这就是IPv6中无状态自动配置的实现方式(见下一节)。
       最后,根据IPv6中的定义,状态自动配置和无状态自动配置可以共存并可一起操作。后续章节中将涉及正在制订中的DHCP的更新版本,称为DHCPv6。两种类型自动配置方法的合作比单独使用其中一种更易于实现互联网络连接的即插即用。例如,使用无状态自动配置,节点可以很快确定自己的IP地址,而且一旦获得此信息,它就可以与DHCP服务器交互以获得所要求的其他网络配置值。实际上, DHCPv6很可能要依靠IPv6无状态自动配置来简化某些情况下的状态配置。
       如果使用无状态自动配置要简单很多,那么为什么还要使用状态自动配置呢?此问题的答案取决于构造网络的机构的要求。无状态自动配置对得到IP地址的节点提供最低程度的监视。任一节点可以连接到链路,通过路由器向能实现无状态自动配置的节点发出的通告来获知网络和子网信息,并构造有效的链路地址。但是,如果有DHCP服务器的支持,机构可以更紧密地控制网络可配置的节点。只有由网络管理员明确授权的节点才能通过DHCP服务器来配置。
      11.1.2 IPv6无状态自动配置
       RFC 1971(IPv6无状态地址自动配置)中描述了IPv6的无状态自动配置。该R F C还在更新,大多数修改是对原规范的澄清或细化,例如对潜在的路由器否认服务攻击的处理方法等。无状态自动配置过程要求节点采用如下步骤:首先,进行自动配置的节点必须确定自己的链路本地地址(如IEEE EUI-64地址);然后,必须验证该链路本地地址在链路上的唯一性;最后,节点必须确定需要配置的信息。该信息可能是节点的IP地址,或者是其他配置信息,或者两者皆有。如果需要IP地址,节点必须确定是使用无状态自动配置过程还是使用状态自动配置过程来获得。
       无状态自动配置要求本地链路支持组播,而且网络接口能够发送和接收组播。完成自动配置的节点首先将其链路本地地址(如IEEE EUI-64地址)追加到链路本地前缀(在第6章中讨论,见图6 - 1 )之后。这样,节点就可以开始工作:它可以使用IPv6与同一网络链路上的其他节点通信,只要同一链路没有其他节点使用与之相同的EUI - 6 4地址,该节点的IPv6地址就是可用的。
       但是,在使用该地址之前,节点必须先证实起始地址在本地链路是唯一的,即,节点必须确定同一链路上没有其他节点使用与之相同的EUI-64地址。大多数情况下不会出现这个问题,大多数使用网络接口卡(如以太网适配器或令牌环适配器)的节点都有唯一的4 8位MAC地址;而对于通过点到点链路连接的节点,链路上只有一个端节点。但是,其他网络媒体可能没有唯一的MAC地址,某些网络接口卡也可能错误地使用了它们无权使用的MAC地址。此时,节点必须向它打算使用的链路本地地址发送邻居请求报文。如果得到响应,试图自动配置的节点就得知该地址已为其他节点所使用,它必须以其他方式来配置。
       如果没有路由器为网络上的节点服务,即,如果本地网络孤立于其他网络,则节点必须寻找配置服务器来完成其配置;否则,节点必须侦听路由器通告报文。这些报文周期性地发往所有主机的组播地址(见第6章),以指明诸如网络地址和子网地址等配置信息。节点可以等待路由器的通告,也可以通过发送组播请求给所有路由器的组播地址来请求路由器发送通告。一旦收到路由器的响应,节点就可以使用响应的信息来完成自动配置。
       11.1.3 BOOTP和DHCP
       1985年,BOOTP首先在RFC 951(自举协议)中描述,该协议的最初目的是允许工作站向本地服务器询问他们自己的IP地址、某服务器主机的地址以及自举执行文件的名称。对于某些应用,如无盘工作站从网络服务器上装入全部软件的情况, BOOTP的功能足够了;但是对于很多其他应用,如将个人机连接到IPv4网络,BOOTP的功能不足。其问题在于除BOOTP提供的信息之外, PC的TCP/IP网络软件需要更多的信息,如主机名字、域名、子网掩码及DNS服务器地址等。
       到1993年,描述DHCP的RFC 1531(动态主机配置协议)得以发布。以BOOTP的报文结构为基础,DHCP增加了一些机制,用于传送将主机连接到IPv4所需要的全部IP配置信息。DHCP的功能与IPv4网络地址相对不足有关。例如,得到一个C类网络地址的机构最多有254个地址来分配给用户。对于某些应用,这些地址很充足,例如一个花店中,连网的计算机不太可能超过几十台。但是,对于有数百名雇员的企业,尤其如果连接到网络的计算机超过250台时,就可能产生地址分配的问题。
DHCP增加了在有限时期内向节点分配地址的能力。这意味着,对于较大型网络,如果同时连接的节点数不超过254,C类网络是足够的。I S P很愿意使用DHCP,因为这样他们所服务的用户数不再受限于他们控制的地址数,只要在任一时刻只有一部分用户连接到该IP,其他用户就不会浪费额外的未使用的IP地址。
       11.1.4 DHCPv6
       当然,与处理IP地址的其他协议相同, DHCP必须升级以支持IPv6地址。DHCPv6正在制订中。很显然,它不仅是为支持更长地址而进行的表面更新,由于IPv6中增加了无状态自动配置,对于DHCPv6,使用这个新能力将很有好处。
使用无状态自动配置,节点至少自动拥有了本地连接能力, DHCP也不再是提供一些其他基本配置参数所必需的方法。默认路由器不是配置的一部分,因为通过侦听路由器通告,任何节点都可以自行确定自己的默认路由器(见第1 0章)。
新的DHCP能支持各种新特性,例如:
       配置动态更新DNS的能力,可以反映网络当前状态。
       地址非难,即地址分配即将失效的状态,该机制可用于对网络进行动态重新编号(见下节)。
       11.2 移动网络技术
       一直到近期,几乎所有的网络设备都是在原地静止的。计算机,甚至个人计算机,都很大且不经常移动。近几年来,不仅是笔记本计算机,而且包括手提计算机、个人数字助手( PDA )都显著增加,甚至蜂窝电话和寻呼机也都可以支持IP。目前的问题在于,不论设备平常是通过有线媒体或无线媒体连接到网络,当设备移动时,如果不论移动设备实际上在何处,其他设备都能够以同一个IP地址来访问该设备,这将是很方便的。
       要实现这一点却非常困难,因为节点移动时,可能必须连接到使用不同IP地址的不同网络。移动IP在RFC 2002(IP移动性支持)中描述。目前,此RFC还在进行修改和更新以支持IPv6。任何情况下,移动IP都应支持节点从一个网络向另一个网络移动,即“宏观移动性”,而不仅仅是支持“微观移动性”,例如像蜂窝电话一样,从一个蜂窝向另一个蜂窝切换无线连接。
       11.2.1 IPv4中的移动IP
       正如RFC 2002中所述,移动IP使用移动代理的概念。为移动主机指派一个一直可达的主地址。当主机位于正常驻地时,它使用自己的主地址连接到本地网络,所有的协议都按正常方式操作;而移动代理通常是常规路由器,它作为外地代理,在移动主机离开其驻地网络时像一种邮件领取部一样使用。移动代理也可以作为主代理,处理传送给移动主机的信息。
当移动节点离开驻地时,可以按照下列方法使用移动IP (如IPv4所述)来连接到网络:
       (1) 外地代理和主代理周期性地发出报文,表明它们的可用性。移动主机也可以主动请求此信息。这些通告以ICMP路由器通告为基础,为移动节点提供足够的信息,使其能够确定它是在自己的驻地网络还是在外地网络中。
       (2) 如果移动节点确定自己目前连接到驻地网络,就如同非移动主机一样工作。
       (3) 但是,如果该节点确定自己是在外地网络中,则它将从外地网络获得“关照地址”。该地址是当移动主机在外地网络中时,可到达移动主机的临时地址。移动主机可以使用外部机制(如DHCP )来获得在外地网络上的有效地址,或者它也可以使用移动代理指定的某个地址,该地址就称为外地代理关照地址。此时,对于所服务的任何移动节点,移动代理使用同一个境内地址,并将进入网络的包转发给正确的节点。
       (4) 一旦移动主机拥有可在外地网络上寻址的某类地址,通过发送报文,它将该地址注册到其主代理,实际报文的内容类似“如果你收到发给我的主地址的包,请转发到这个地址”。
       (5) 这样,一旦主代理知道对于发给移动节点的包应向何处转发,它就把这些包拦截下来,并进行封装,以IP隧道方式发送到移动节点提供的关照地址。如果该关照地址是一个配置的关照地址,则由外地代理来接收封装的IP包,拆包并转发给移动节点;如果该关照地址是在外地网络上分配给移动节点的单独IP地址,移动节点就可以接收到带封装的IP包,自己进行拆包。
       如果外地网络上的移动节点要发送包,则无需进行特殊操作,这些主机将继续使用其主地址为包的源地址,对这些包也无需进行任何特殊处理。
       11.2.2 IPv6中的移动IP
相对而言,移动IPv6将更易于实现和使用。首先,在IPv6中,在无状态自动配置或使用DHCPv6的状态自动配置的支持下,获得关照地址的过程更加简单。正因如此, IPv6中没有外地代理关照地址,而只有配置的关照地址。其次,应该有可能使用IPv6的各种特性来改进移动节点的操作。例如,主代理可以使用邻居发现的代理通告来截获发给移动节点的IPv6包。对于通过目的地选项来将地址更新与地址相捆绑的路由优化,节点也应该有基本的支持。
        移动IPv6中包含的另一个新特性是:即使在移动节点的常规主代理不可达的情况下,移动节点也有能力和驻地网络建立联系。移动节点可以向驻地网络中为主代理保留的地址发送任意点播包,结果任何可用的主代理将把自己的选项通知移动节点。