朱健 杨庚
(南京邮电学院计算机科学与技术系 南京210003)
摘 要 本文对移动IP技术中的各种路由方案进行了分析研究。首先,我们介绍了移动IP的功能实体和基本的通信过程;然后对三角路由和反向隧道两种路由方案做了测试分析,并指出了他们的不足。在此基础上,我们提出了一种路由优化方案并引入了可靠的安全机制。
关键词 移动IP 三角路由 反向隧道 对端代理
1 引言
现有的IP路由体系有一个重要的规则:路由选择只依据目的IP地址的网络部分,而不是整个IP地址,即路由是针对网络的。若主机从一个子网移动到一个新的子网并保持IP地址不变,则它的IP地址就不能反映出它的当前位置,由此引发的后果就是现有的IP路由体系不能把报文投递给该主机。在这种情况下,主机必须配置一个新的属于当前子网的IP地址来反映它的新位置。而对于一个TCP连接来说,有四个元素来唯一地标识它:源IP地址、目的IP地址、TCP源端口号、TCP目的端口号,改变其中任何一个都会导致TCP连接的中断或丢失。因此,要保持移动主机移动时传输层的连接,必须保持IP地址不变。根据这些要求,IETF提出了移动IP技术。近年来,随着对移动IP技术的理论探讨不断深入,人们发现它存在着一些不足,尤其在路由机制和安全机制方面还不能满足现代通信的需求。
2 移动IP路由
2.1 基本原理
2.1.1 功能实体
移动IP定义了三个功能实体: 家乡代理(HA,Home Agent)、外地代理(FA,Foreign Agent)和移动节点(MN,Mobile Node)。
(1)移动节点(MN):当接入点从一条链路切换到另一条链路上时仍能保持所有正在进行的通信的移动主机。它有两个IP地址,一个是家乡地址(Home address),用来标识TCP连接的永久地址;另一个是转交地址(COA,Care of Address),是当移动节点漫游到其他子网时所获得的供IP包选路使用的临时地址。转交地址可以由外地代理提供,也可以由外地网络的DHCP服务器分配。
(2)家乡代理(HA):移动节点本地网络上的路由器。其作用是负责维护移动节点当前的位置信息,并且把送往移动节点家乡地址的数据包通过隧道发往移动节点的转交地址。
(3)外地代理(FA):移动节点当前连接到的外地网络上的路由器。其作用是在为移动节点提供路由服务,并且对经家乡代理封装后发给移动节点的数据包进行解封装,然后转发给移动节点。
2.1.2 工作机制
移动IP的工作机制如下。
(1)家乡代理和外地代理周期性发广播报文,以此来向它们所在的网络中的节点宣告它们的存在。
(2)移动节点收到广播报文后,检查报文的内容来判断它所连接的是家乡网络还是外地网络。当连在家乡网络上时,采用传统的IP通信方式而不使用移动IP的功能。
(3)当移动节点移动到外地网络时,它可以从当前网络的外地代理发出的代理广播消息中获得转交地址,或者通过DHCP服务器配置获得,但在目前的移动IPv4中一般采用外地代理转交地址。
(4)移动节点通过外地代理向家乡代理注册转交地址,注册可以通过移动IP中定义的注册消息来完成。
(5)家乡代理对移动节点的注册请求进行鉴权、认证,认证通过则发注册成功消息到移动IP的转交地址,外地代理收到消息后再转发给移动节点。
(6)此后所有发往移动节点的数据会先发往移动节点的家乡网络,然后由家乡代理通过IP in IP隧道封装,发往移动节点注册的转交地址。
(7)外地代理收到数据包后先解封装,再转发给移动节点。而移动节点发往与它通信的其他主机的数据会直接经过外地代理转发到相应主机。这就形成了一个“三角路由”。
2.2 反向隧道
目前,在很多局域网中采用了入口过滤路由器来防止拒绝服务攻击,即路由器在转发数据包之前检查IP数据报的源地址域,对于来自内部网络而源地址不是内部网络的报文,路由器会直接将它丢弃。采用这样的方法对传统的IP网络不会带来影响,但是将导致移动节点不能进行正常通信。因为当移动节点连接在外地网络上时,它发出的报文要经过外地网络的路由器。路由器会检查报文的源地址和目的地址,而报文的源地址是移动节点的家乡地址不属于本网络,于是报文被丢弃。
为了解决这个问题,IETF在移动IP中引入了反向隧道技术。反向隧道是指以移动节点的转交地址为源地址,以家乡代理为目的地址的隧道。如果移动节点要向通信对端发送数据包,首先要将数据包送到外地代理,并由外地代理进行IP in IP封装,然后通过隧道发送给家乡代理,再由家乡代理转发给通信对端。这样一来,对外地网络的路由器来讲,它收到的数据包的源地址是移动节点的转交地址,转交地址属于路由器所在的网络。所以,数据包的源地址和目的地址在拓扑上都是正确的,不会被丢弃。
反向隧道技术的引入解决了入口过滤路由器给移动IP通信带来的问题,但是它对通信的速率产生了一定的影响。我们搭建了一个移动IP模拟平台,并对三角路由和反向隧道的传输速率做了测试,表1是我们所做的一些测试结果。
可以看出,当移动主机漫游到外地网络时,如果使用三角路由,ping程序中的ICMP包平均往返时间从0.827ms激增至2.598ms,网络延迟明显增加。这是因为在隧道的起点和终点处对数据包的封装和解封装会引入延迟,降低速度,更为重要的一个原因是,传统的移动IP使用三角路由,即通信节点发送数据包到移动节点时,需要通过其家乡代理,而移动节点根据标准IP路由规则将数据包直接发送到通信节点,这个三角形的路由过程与直接路由相比,网络开销大大增加。另外,三角路由还存在一些潜在的危害,例如增加引入流量的时候容易引起家乡代理处的路由瓶颈。而反向隧道的通信效率更低,因为它比三角路由增加了更多封装、解封过程,而且数据包多走了从外地代理到家乡代理的通信链路。
2.3 路由优化
根据测试结果可以看出采用三角路由和反向隧道会产生一定延迟,加重网络负担,所以它们都不是好的报文传输方式。实际上,我们可以很容易想到最佳的路由方案就是让移动节点和通信对端之间直接进行通信,而不经过家乡代理转发。
要实现移动节点和通信对端之间直接通信,通信对端必须要记录下移动节点的转交地址,并且必须要将移动节点的转交地址和家乡地址对应。通常,通信对端是采用绑定表来记录和它通信的移动节点的信息,这种表有两个表项,分别是移动节点的家乡地址和转交地址。当通信对端有能力记录移动节点的转交地址后,剩下的问题就是如何将转交地址告诉它,这个任务通常是由家乡代理来完成的。在通信对端不知道移动节点的转交地址时,它就会向移动节点的家乡地址发送数据包,这个数据包会路由到移动节点的家乡网络。家乡代理收到这个数据包后就会利用和外地代理之间的隧道发往外地代理,然后它会检查移动节点的注册请求中的P比特数,看移动节点是否允许将转交地址发给其他节点。如果允许,则发绑定更新报文给通信对端。绑定更新报文中包括了以下一些信息:移动节点的家乡地址、转交地址以及一个生存时间值。其中生存时间值用于告诉通信对端多长时间要重新更新绑定表表项,如果为零,则表示要将有关这个移动节点的表项删除,也就意味着通信对端不能和移动节点用优化的路由通信,而只能采用三角路由或反向隧道。
采用这种方案,显然可以提高数据包的传输效率,但是值得注意的是这对与移动节点通信的每一台主机都提出了很高的要求。因为这些主机各自需要维护一个绑定表,也就是说要对Internet上的几乎所有的主机的软件做出修改,这是不太现实的。
为此,我们对上述方法进行了改进。在同一个子网中,我们选择用一个专门的节点来维护这个子网中所有其他主机的绑定表,姑且把它叫做对端代理CA(Correspondent Agent), 与通信对端(Corres-
pondent Node)对应。这样一来,如果这个子网中的某一台主机A要与一个连接在外地链路上的移动节点B通信,它会首先发数据包到移动节点B的家乡网络,正常情况下B的家乡代理会发绑定更新消息给A,告诉它移动节点B当前的转交地址。A然后发请求给对端代理,请求建立绑定表。以后,从A发出的数据包就根据B的转交地址直接发往移动节点所连接的外地链路。
这种改进方案大大缩短了传输路径,减小了传输延迟,可为综合业务提供很好的支持,减轻了家乡代理处的负担。更关键的是,这种方案的实现并不是很困难。
对于优化的路由来说,最大的问题在于它的安全性。相对与传统的移动IP来讲,它需要对更多的实体进行认证。为了提高路由优化后移动IP网络中实体之间通信的安全性,我们采用了IPSec协议对数据进行封装。对家乡代理、外地代理和对端代理三对实体间的通信采用IPSec中的ESP协议封装,选择通道模式。
采用通道模式的原因是可以穿过家乡网络和外地网络的防火墙,而且可以对整个IP数据包进行保护。假如通信对端要发数据包到移动节点,则由对端代理进行封装。外层IP头的源IP地址为对端代理地址,目的地址为外地代理的地址。内层IP头的源IP地址为通信对端地址,而目的地址为移动节点的家乡地址。采用ESP协议可以确保IP数据包的机密性、数据的完整性以及对数据源的身份验证。
在这三对实体间采用IPSec加密可以保证数据包在Internet上的安全传递,再加上移动IP自身的认证、鉴权以及加密机制,已经可以满足移动IP通信的安全性要求。
3 结束语
通过以上的路由优化方案,缩短了传输路径,减小了传输延迟,显著提高了移动IP的通信效率,解决家乡代理网络瓶颈的问题,保证了移动IP用户的业务质量。而且,还引入了可靠的安全机制,保证了通信的安全。我们相信这种方案的提出,会对移动IP技术的发展产生积极的意义。
----《中国数据通信》