5.2 移动IP

下面具体讲解移动IP及其算法,首先给出移动IP中的两点假设。

(1)假设单播数据包(即只有一个接收者的那些数据包)的路由不需要使用其源IP地址。也就是说,移动IP假设所有的单播数据包的路由基于目标IP地址,而通常使用到的其实只是目标地址的网络前缀部分。

(2)假设因特网一直存在,并且可以在任何时候、在任何一对节点之间传播数据。

5.2.1 基本术语

以下是移动IP算法中常用的基本术语。

移动节点(MN):位置经常发生变化,即经常从一个链路切换到另一个链路的节点(主机)。

家乡地址:移动节点所拥有的永久IP地址。一般不会改变,除非其家乡网络的编址发生变化。对于和移动节点通信的主机来说,它会一直与移动节点的家乡地址进行通信。

家乡链路:一个移动节点的家乡子网掩码所定义的链路。标准的IP路由机制会将目标地址为某一节点的IP地址的数据包发送到其家乡链路。

家乡代理(HA):移动节点家乡链路上的一台路由器,主要用于保持移动节点的位置信息,当移动节点外出时,负责把发给移动节点的数据包转发给移动节点。

转交地址(CoA):当移动节点切换到外地链路时,与该节点相关的一个IP地址。当移动节点和其他节点通信时,并不直接使用转交地址作为目的地址或源地址,若没有转交地址就不能维持通信。当家乡代理向移动节点转发数据时,要用转交地址做隧道的出口地址。转交地址可以分为配置转交地址和外地代理转交地址两类。

通信节点(CN):一个移动节点的通信对象。

外地代理(FA):移动节点所在外地链路上的一台路由器,当移动节点的转交地址由它提供时,用于向移动节点的家乡代理通报转交地址、作为移动节点的默认路由器、对家乡代理转发来的隧道包进行解封装,并交付给通信节点。

隧道(tunnel):一种数据包封装技术,广义上讲,就是把一个数据包封装在另一个数据包的数据净荷中进行传输。在移动IP中,当家乡代理截获发给移动节点的数据时,就要把原始数据封装在隧道包内,隧道包目的地址是转交地址。当外地代理(或移动节点)收到这个隧道包后,解封装该包,把里面的净荷提交给移动节点(或上层)。

5.2.2 移动IP的基本操作原理

每一个移动节点都拥有两个IP地址:一个唯一的家乡地址和一个用于路由的转交地址。转交地址可以是静态分配的,也可以是动态分配的。

移动IP协议采用了代理的概念。家乡代理截取给移动节点的数据包,将其打包并转交给移动节点所注册的转交地址。外地代理是与移动节点建立连接的路由器,因此移动节点通过外地代理与家乡代理通信,更新自己的位置信息。

5.2.3 移动IP的工作过程

移动IP有3个基本的工作过程:代理发现、注册以及隧道封装与分组路由。移动IP的基本操作流程如图5-1所示。

图5-1 移动IP的基本操作流程

5.2.3.1 代理发现

代理发现指的是一个移动节点通过代理通告发现新的接入点以及获得转交地址的过程。这个过程中,移动节点确定了自己应该连接到哪一条链路以及自己是否改变了网络的接入点。如果节点成功接入到外地链路中,那么其会获得转交地址,并且会被允许向代理发送代理请求。代理发现是通过ICMP数据包实现的。代理发现的过程如图5-2所示。

图5-2 代理发现的过程示意图

代理发现过程定义了代理通告(agent advertisement)和代理请求(agent solicitation)两个消息。

在所连接的网络上,家乡代理和外地代理定期广播“代理通告”消息,以宣告自己的存在。代理通告消息是ICMP路由器布告消息的扩展,它包含路由器IP地址和代理通告扩展信息。移动节点时刻监听代理通告消息,以判断自己是否漫游出家乡网络。若移动节点从自己的家乡代理接收到一条代理通告消息,它就能推断已返回家乡,并直接向家乡代理注册,否则移动节点将选择是保留当前的注册,还是向新的外地代理进行注册。代理通告的信息格式如图5-3所示。

图5-3 代理通告的信息格式

外地代理周期性地发送代理通告消息,若移动节点需要获得代理信息,它可发送一条ICMP代理请求消息。任何代理收到代理请求消息后,应立即发送回信。代理请求与ICMP路由器请求消息格式相同,只是它要求将IP的TTL域置为1。代理请求的信息格式如图5-4所示。

图5-4 代理请求的信息格式

为了配合代理发现机制,移动节点应当满足以下几个条件。

(1)在没有收到代理通告以及没有通过其他方式获得转交地址时,移动节点应当能够发送代理请求信息,并且节点必须能够限制发送代理请求信息的速度(按照二进制指数后退算法)。

(2)移动节点应当能够处理到达的代理通告,区分出代理通告消息和ICMP路由器的通告消息。如果通告消息多于一个,则取出第一个地址开始注册。移动节点收到代理通告后,即使已经获得可配置的转交地址,也必须向外地代理注册。

(3)如果移动节点在生存时间内没有收到来自同一个代理的代理通告,则可假设自己已经失去和这个代理的连接。如果移动节点收到另一个代理的通告,则应当立即尝试与该代理进行连接。

(4)当移动节点收到家乡代理的通告时可确信自己已返回家乡,应当向家乡代理进行注销。

代理发现过程的流程图如图5-5所示。

图5-5 代理发现过程的流程图

5.2.3.2 注册

注册过程示意图如图5-6所示。移动节点发现自己的网络接入点从一条链路切换到另一链路时,就要进行注册。另外,由于注册信息有一定的生存时间,所以移动节点在没有发生移动时也要注册。移动IP的注册功能:移动节点可得到外地链路上外地代理的路由服务;可将其转交地址通知家乡代理;可使要过期的注册重新生效。另外,移动节点在回到家乡链路时,需要进行注销。

图5-6 注册过程示意图

注册的其他功能:可同时注册多个转交地址,此时归属代理通过隧道技术,将发往移动节点归属地址的数据包发往移动节点的每个转交地址;可在注销一个转交地址的同时保留其他转交地址;在不知道归属外地代理的情况下,移动节点可通过注册,动态获得外地代理地址。

移动IP的注册过程一般在代理发现机制完成之后进行。当移动节点发现已返回家乡链路时,就向家乡代理注册,并开始像固定节点或路由器那样通信,当移动节点位于外地链路时,能得到一个转交地址,并通过外地代理向归属代理注册这个地址。

移动IP的注册操作使用UDP数据报文,包括注册请求和注册应答两种消息。移动节点通过这两种注册消息,向家乡网络注册新的转发地址。

注册过程中,外地代理为移动节点生成转交地址并通知其家乡代理,其工作原理如图5-7所示。

图5-7 外地代理的工作原理

注册请求过程:如果移动节点不知道家乡代理地址,它就向家乡网络广播注册(直接广播)。之后每个有效的家乡代理给予响应,移动节点采用某个有效家乡代理的地址进行注册请求。一次有效的注册完成之后,家乡代理会为移动节点创建一个条目,其中包含移动节点的转交地址、表示字段和此次注册的生存期。每个外地代理会维护一个访问列表,其中包含移动节点的链路层地址、移动节点的家乡地址、UDP注册源端口,家乡代理的IP地址、标识字段、注册生存期、当前或未处理注册的剩余生存期。注册过程中信息传递的流程如图5-8所示。

图5-8 注册过程中信息传递的流程

移动节点可以通过两种方式向家乡代理发送注册请求,即通过外地代理发送注册请求和直接发送注册请求。两种方式的过程分别如图5-9和图5-10所示。

图5-9 通过外地代理发送注册请求示意图

图5-10 直接发送注册请求示意图

发送注册请求成功之后,家乡代理会为移动节点创建一个移动绑定,同时将移动节点的家乡地址与当前的转交地址绑定在一起,并设置生存期。移动节点在此绑定信息超时之前必须延长绑定,否则该绑定将会失效,移动节点需要重新注册。家乡代理会发送注册回复信息,指出注册请求是否成功。如果移动节点是通过外地代理注册的,那么注册应答消息应当由外地代理转发。注册请求可以被拒绝,而拒绝的来源既可以是家乡代理,也可以是外地代理。注册请求和注册应答消息通过UDP报文传输,这是因为UDP的开销小,并且在无线环境下的性能优于TCP。

如果移动节点回到了家乡网络,则必须在家乡链路上进行注册(注销其移动绑定信息),其过程如图5-11所示。

图5-11 注销过程示意图

对于移动节点来说,注册及注销过程有以下几点要求。

(1)移动节点需要能够进行网络掩码的配置。

(2)只要检测到连接网络发生变化就发起注册。

(3)移动节点必须能够发送注册请求,其IP源地址为转交地址或家乡地址,IP目的地址为外地代理的地址或家乡代理地址。

(4)移动节点必须能够处理注册回复,判断自己发出的注册是否成功。

(5)注册请求发送失败时移动节点必须进行重传。

外地代理位于移动节点和家乡代理之间,是注册请求的中继,如果其为移动节点提供转交地址,则还有为移动节点拆封数据分组的任务。外地代理中有配置表和注册表,为移动节点保存相关信息。另外,外地代理还需要处理注册请求,包括对消息的有效性检查和将请求转发到家乡代理。在接收注册回复时,外地代理需要检查信息的格式是否正确,并将应答转发到相应的移动节点。

在注册过程中,家乡代理从移动节点接收注册请求,更新自己关于该节点的绑定记录,并为每个请求启动一个应答作为响应。

注册过程中的分组格式如图5-12所示。

图5-12 注册过程中的分组格式

5.2.3.3 隧道封装与分组路由

所谓隧道,实际上是路由器把一种网络层协议封装到另一个协议中以跨过网络传送到另一个路由器的处理过程。发送路由器将被传送的协议包进行封装,经过网络传送,接收路由器解开收到的包,取出原始协议;在传输过程中的中间路由器并不在意封装的协议是什么。这里的封装协议,称为传输协议,是跨过网络传输被封装协议的一种协议。隧道技术是一种点对点的连接,必须在连接的两端配置隧道协议。

隧道技术是一种数据包封装技术,它是将原始IP包(其包头中包含原始发送者和最终目的地)封装在另一个数据包(称为封装的IP包)的数据净荷中进行传输。在移动IP中,隧道包目的地址就是转交地址,当外地代理(或移动节点)收到这个隧道包后,解封装该包,把里面的净荷提交给移动节点。

在家乡网络中,移动主机的操作与标准的固定主机相同;当移动主机移动到外地网络,且完成移动IP的注册过程后,可以在外地网络上继续通信。在外地网络上的通信需要采用隧道技术。封装是隧道技术的核心,所谓封装是指把一个完整的IP分组当作数据,放在另一个IP分组内,原IP分组的IP地址称为内部地址,新的IP分组的IP地址称为外部地址。IP封装如图5-13所示。

图5-13 IP封装示意图

隧道技术就是在隧道的起点将IP分组封装,并将外部地址设置为隧道终点的IP地址。封装的IP分组经标准的IP路由算法传递到隧道的终点。在隧道的终点,将封装的IP分组进行拆分。

当移动节点在外区网上时,家乡代理需要将原始数据包转发给已登记的外地代理。这时,家乡代理使用IP隧道技术,将原始IP数据包封装在转发的IP数据包中,从而使原始IP数据包原封不动地转发到处于隧道终点的转交地址处。在转交地址处解除隧道,取出原始数据包,并将原始数据包发送到移动节点。隧道转发过程示意图如图5-14和图5-15所示。

图5-14 隧道转发过程示意图(一)

图5-15 隧道转发过程示意图(二)

隧道转发过程如下。

(1)通信节点发送给移动节点的报文被家乡代理截获,包括目的地是移动节点的报文被家乡代理截获和家乡代理截获在家乡网络上的数据包。

(2)家乡代理对数据包进行封装并通过隧道传输给移动节点的转交地址。

(3)在隧道的终点(外地代理或移动节点本身),数据包被拆封,然后递交给移动节点。

(4)对于移动节点发送的数据包采用的是标准的IP路由。

移动IPv4主要有3种隧道技术,分别是IP in IP、最小封装以及通用路由封装。家乡代理和外地代理必须能够使用IP-in-IP封装来支持分组的隧道传输。最小封装和通用路由封装是移动IP协议提供的另外两种可选的封装方式。

IP in IP封装由RFC 2003定义。在IP in IP技术中,整个IP数据包被直接封装,成为新的IP数据包的净荷。其中内部IP头信息不变,除了生存时间减1,而外部的IP头则是完整的IP头信息。IP in IP封装如图5-16所示。

图5-16 IP in IP封装

最小封装由RFC 2004定义。在最小封装技术中,新的IP头被插入到原始IP头和原始IP载荷之间。最小封装通过去掉IP的IP封装中内层IP报头和外层IP报头的冗余部分,减少实现隧道所需的额外字节数。与IP in IP封装相比,它可节省字节(一般为8B)。但当原始数据包已经分片时,最小封装就无能为力了。在隧道内的每台路由器上,由于原始包的生存时间域值都会减小,以使家乡代理在采用最小封装时,移动节点不可到达的概率增大。最小封装如图5-17所示。

图5-17 最小封装

通用路由封装(GRE)由RFC 1701定义,它是一种在移动IP之前就已经开发出来的协议。通用路由封装定义了在任意一种网络层协议上封装任意一个其他网络层协议的协议,运行一个协议的数据分组封装在另一种协议的数据分组的有效负载中。通用路由封装如图5-18所示。

图5-18 通用路由封装

移动IP通常使用三角路由和优化路由两种路由方式。

三角路由如图5-19所示。

图5-19 三角路由

其过程如下。

(1)数据包从通信节点利用IP发往移动节点。

(2)家乡代理截获数据包,通过隧道将数据包发往移动节点的转交地址。

(3)在外地代理端,数据包去封装,并发送给移动节点。

(4)移动节点发送的数据包采用标准的IP路由发往其目的地。

三角路由有以下优点。

(1)控制简单。

(2)交换的控制报文有限。

(3)不需要额外的地址绑定信息,对于特定主机的绑定信息存放在同一个地方。

三角路由也有如下缺点。

(1)家乡代理是每个报文的固定重定向点,即源和目的之间存在更短的路径。路径的增长可能会增加端到端的延迟。

(2)家乡代理会成为通信的瓶颈,因为其很容易出现过载情况。

(3)当移动节点移动到越来越远的地方时,注册的开销可能会越来越大。

另一种常用的分组路由方式是优化路由,其原理如图5-20所示。

图5-20 优化路由

优化路由的过程如下。

(1)移动节点告知通信节点自己当前的转交地址。

(2)通信节点直接将数据包通过隧道传送给移动节点。

(3)每一个节点都有一个缓存,来存储绑定信息,这些绑定信息会在其生命周期到达后失效。

优化路由有以下优点。

(1)有了缓存和绑定信息,数据包可以直接从通信节点传向移动节点,不需经过家乡代理,这样便可以提高服务质量(QoS)。

(2)对于频繁移动的用户,先前的外地代理可以将数据包传送到移动节点新的转交地址。

优化路由也存在如下缺点。

(1)结构非常复杂。

(2)缓存查询和绑定等处理信息的开销可能会非常大。

(3)在优化路由中,通信节点必须授权给每一个与移动节点相连接的外地代理,这可能会产生安全问题。

在移动IP中,外地代理的平滑切换是一个很重要的问题,因为这涉及移动节点是否能够畅通无阻进行通信的问题。当移动节点移动到一个新的外地网络中,需要向新的外地代理进行注册。在基本的移动IP协议中,当节点移动到新的外地网络时并不通知旧的外地网络,这就可能导致通过隧道传输到旧的外地网络中的数据包丢失。如果这种情况发生,只能由更高层的协议进行重传。旧的外地代理会在绑定的生存期过后删除对应的条目。

对于代理切换的一种改进如图5-21所示。移动节点向新的外地代理注册时请求新的外地代理通知旧的外地代理自己当前的位置,之后新的外地代理发送绑定更新消息给旧的外地代理并请求对方确认。在接收到绑定更新后,旧的外地代理会删除访问表中的相应条目并创建新的绑定缓存。在这之后,旧的外地代理的作用就只相当于一个转发节点。

图5-21 外地代理切换改进

5.2.4 移动IP存在的问题

尽管对于移动IP已经有了大量的研究,但是目前移动IP还存在许多需要进一步解决的问题,这里只讨论移动IP的安全问题和服务质量问题。

移动IP存在以下几方面的安全问题。

(1)从物理层与数据链路层角度看,无线链路容易遭受窃听、重放或其他攻击。

(2)从网络层移动IP协议角度看,代理发现机制很容易遭到一个恶意节点的攻击,移动注册机制很容易受到拒绝服务攻击与假冒攻击。

(3)家乡代理、外地代理与通信对端,以及代理发现、注册与隧道机制都可能成为攻击的目标。

移动IP在服务质量方面存在以下问题。

(1)移动节点在相邻区域间的切换引起分组传输路径的变化,对通信服务质量会造成重要的影响。

(2)移动节点转交地址的变化,会引起传输路径上的某些节点不能满足数据分组传输所需要的服务质量要求。

(3)目前IP网络提出的集成服务机制和区分服务机制不能适应于移动环境。

(4)移动IP服务质量解决方案需要考虑切换期间通信连接的中断时间,有效确定切换过程中原有路径中的重建,切换完成后要能够及时释放原有路径上的服务质量状态和已分配资源等因素。

(5)目前研究较多的解决方案都基于资源预留协议RSVP。

(6)移动网络服务质量保证机制中服务质量的协商机制是至关重要的。