PersonalCorpus 版 (精华区)
发信人: glees (奔涌的星空), 信区: Network
标 题: 移动IP工作原理概述
发信站: 哈工大紫丁香 (2001年09月24日21:54:38 星期一), 站内信件
移动IP工作原理概述
中国建设银行营业部 刘刚
01-6-20 上午 11:40:10
随着信息技术的飞速发展,在固定的场所通过固定的线路进行网络通信的方式已经不能
满足人们的需要了,人们希望有朝一日能够象使用手机那样,在移动中实现对网络的不
间断访问、在移动中享受网络提供给我们的各种服务,毕竟手机提供给我们的服务还是
太少了。本文所要讲到的移动IP技术正是为了实现这一目的而设计的。
一、移动IP的基本含义
简单的说,移动IP是一种计算机网络通信协议,它能够保证计算机在移动过程中在不改
变现有网络IP地址、不中断正在进行的网络通信及不中断正在执行的网络应用的情况下
实现对网络的不间断访问。
移动IP的这一特性特别适用于无线通信网络,因为只有无线网络中的通信设备能够实现
真正意义上的移动。很难想象在有线网络中计算机怎样才能在既不改变自身IP地址又不
影响正在执行的网络应用的情况下从一个网络链路移动到另外一个网络链路。可以说,
无线网络技术与移动IP技术是密切联系、相辅相成的。一方面,无线网络为移动IP的实
现提供了适合的环境;另一方面,移动IP技术的应用能够实现无线网络中的漫游功能。
从字面上看,很容易混淆移动IP与动态IP这两个完全不同的概念,通过上面的介绍,大
家应该对移动IP有了一个初步的认识。而动态IP指的是局域网中的计算机可以通过网络
中的DHCP服务器动态地获得一个IP地址,而不需要用户在计算机的网络设置中指定IP地
址,这一点相信大家也比较熟悉,因为动态IP和DHCP经常会应用在我们的实际工作环境
中。
另外,移动IP的目的在于实现移动过程中的不间断网络访问,而不单纯是可移动设备对
网络的访问。例如,您可以将一台轻便小巧的笔记本电脑带在身边,在需要上网的时候
,将它连接在单位的局域网上(如果您在单位的话)或通过笔记本的PCMCIA MODEM卡及
电话线(如果您在家中或出差在外的话)进行上网。在此,除了可以比较方便地把笔记
本拿到其他地方上网以外,这两种上网的方式与固定设备(如台式机)的上网方式没有
什么不同。而移动IP所要解决的是如何让这台笔记本电脑在移动的过程中(例如,当您
在行驶的汽车或火车上时)对网络进行访问,而且当您跨越不同的网络覆盖区域时,您
会毫无察觉,因为这种移动对上层的网络应用来说是透明的,它丝毫不会影响您正在进
行的网络通信。
二、移动IP涉及的几个主要概念
为了方便下面的介绍,有必要先将移动IP实现过程中涉及到的几个主要概念描述一下,
这几个概念包括移动节点(Mobile Node)、本地链路(Home Link)、移动节点的本地
IP地址(Home Address)、本地代理(Home Agent)、外部链路(Foreign Link)、移
动节点的转交地址(care-of address)、外部代理(Foreign Agent)、隧道(tunnel
)。
1、 移动节点(Mobile Node)
移动节点指的是处于移动中的计算机通信设备,该设备一般安装有无线网卡或无线收发
器,因此具备无线通信功能。关于无线网络及无线网络设备的有关内容不是本文讨论的
重点,在此不做专门介绍。
2、 本地链路(Home Link)
本地链路指的是与移动节点具有相同IP网络前缀(network prefix)和网络掩码的网络
链路。例如,移动节点的IP地址为100.100.100.10,网络掩码为255.255.255.0,那么本地
链路指的就是IP网络前缀为100.100.100.0的网络链路。
可以这么说,本地链路是移动节点原来所处的链路,在该链路上移动节点可以象其他设
备那样进行正常的工作,而不需要移动IP的支持(当移动节点从外部链路移回到本地链
路时除外,这种情况下面将有专门的介绍)。
3、 移动节点的本地IP地址(Home Address)
移动节点的本地IP地址指的是移动节点在本地链路上时所指定的IP地址。如前面例子中
提到的100.100.100.10。
4、 本地代理(Home Agent)
本地代理指的是位于本地链路上的具有下述代理功能的路由器:
(1)能够在本地链路上广播发送代理广告(Agent Advertisement),以便移动节点
判别自己所处的位置;
(2)能够响应移动节点的注册请求(Registration Request),将移动节点在外部链路上
获得的转交地址(care-of address)与移动节点本地IP地址的对应关系添加在一张映射
表中;
(3)能够响应移动节点的取消注册请求(Deregistration Request),将移动节点在外
部链路上获得的转交地址(care-of address)与移动节点本地IP地址的对应关系从映射
表中删除;
(4)能够中途截取目标地址为移动节点本地IP地址的IP数据包,并通过隧道(tunnel)
将它们转发给位于外部链路上的移动节点。
5、 外部链路(Foreign Link)
外部链路是相对于本地链路而言的,指IP网络前缀不同于本地链路的其他链路。例如,
在前面所举的例子中,本地链路为100.100.100.0,那么网络前缀为200.200.200.0的网络
链路相对于这个本地链路来说就是外部链路了。
6、 转交地址(Care-of address)
转交地址是指移动节点移动到外部链路上时获得的IP地址。转交地址具有与外部链路相
同的网络前缀。如本地地址为100.100.100.10的移动节点移动到网络前缀为200.200.20
0.0的外部链路上时,它所获得的转交地址可能会是200.200.200.25,其网络前缀为200
.200.200.0。本地代理通过隧道将中途截取的IP数据包转发给移动节点时,使用转交地
址作为转发数据包的目标IP地址。转交地址又可分为外部代理转交地址(foreign agen
t care-ofaddress)和配置转交地址(collocated care-of address)。
7、 外部代理(Foreign Agent)
外部代理是位于外部链路上的具有以下代理功能的路由器:
(1)能够在外部链路上广播发送代理广告(Agent Advertisement),以便移动节点判别
自己所处的位置;
(2)能够协助移动节点将注册请求/取消注册请求发送给移动节点的本地代理;
(3)能够为移动节点提供可用的转交地址;
(4)能够将本地代理通过隧道发送给移动节点的IP数据包进行解包,然后再发送给移动
节点。
8、 隧道(tunnel)
隧道指的是当移动节点位于外部链路上时,本地代理将中途截
取到的目标地址为移动节点本地IP地址的IP数据包(以下称为源数据包)再进行网络层
的封装,再次封装后的IP数据包的目标IP地址为移动节点的转交地址、有效载荷(payl
oad)为截取到的源数据包。通过隧道发送给移动节点的IP数据包将由外部代理或移动节
点进行解包,然后再由移动节点对解包后所得到的源数据包进行处理。
以上是几个与移动IP密切相关的概念,在下面的讲述中,您将会对它们有更深的了解。
三、移动IP的工作原理
在介绍移动IP的工作原理之前,先看一下为什么要为外部链路上的移动节点分配一个转
交地址?为什么要使用隧道进行IP数据包的再次封装?原因很简单,因为经过再封装后
的IP数据包的目标IP地址为外部链路上的IP地址,因此有利于该数据包通过正常的路由
途径从本地代理传递给位于外部链路上的移动节点,这样就不需要对本地代理与外部代
理之间的路由器做改动了。
移动IP的工作原理大体可以分为以下三个步骤:
* 代理发现(Agent Discovery)
* 转交地址注册/取消注册(Registration/Deregistration)
* 数据的收发
(一) 代理发现
概括地讲,移动节点通过代理发现可以完成以下三个方面的工作:
* 判断移动节点现在所处的位置是本地链路,还是外部链路;
* 检测移动节点是否从一个链路移动到了另外一个链路;
* 当移动节点确定它位于外部链路上时,获取一个转交地址。
1、首先,让我们来看一下移动节点怎样来判断它所处的位置。
前面我们已经对本地代理和外部代理做了简单的介绍,它们是移动IP实现中的重要组成
部分。本地代理和外部代理会通过广播或多播的方式周期性地在它们各自的链路上发送
名为代理广告(Agent Advertisement)的IP数据包。如果移动节点收到这类数据包,它
就可以断定在它现在所处的链路上存在代理,移动节点从代理广告数据包中可以得知发
送该声明的代理的IP地址(即数据包中的源IP地址),如果该IP地址与移动节点的本地
IP地址具有相同的网络前缀,那么移动节点就可以断定它位于本地链路上,否则移动节
点则认为它位于某个外部链路上。值得一提的是,对于那些没有耐心等待下一次代理广
告的移动节点来说,它可以主动地发送代理请求(Agent Solicitation)数据包,其目
的在于促使该链路上的代理立刻发送代理广告,而不要等待下一个发送周期的到来,代
理请求(Agent Solicitation)比较适用于移动节点在链路间移动较快或代理广告发送
周期较长的情况。
上面所讲的是移动节点在收到了代理广告后,怎样进行位置的判定。如果移动节点没有
收到代理广告的话,它又将如何进行位置的判定呢?在这种情况下,移动节点会通过下
面的步骤来完成这项工作:
(1)移动节点先假设它位于本地链路上,并认为本地代理发生了故障(否则的话,移动
节点没有理由收不到代理广告),然后移动节点就给本地链路上的缺省路由器发送一条
ICMP Echo Request信息,如果缺省路由器有响应的话,那么移动节点则会认定它位于本
地链路上。
(2)如果移动节点没有收到缺省路由器的响应,则移动节点会认为它位于某个外部链路
上,而该链路上的外部代理发生了问题,无法正常发送代理广告。在这种情况下,移动
节点会试着从该链路上的DHCP服务器上获得一个IP地址,如果成功的话,移动节点将把
该地址作为转交地址;否则,需要手工为移动节点配置一个转交地址。
2、移动检测
移动检测的目的在于确定移动节点是否从一个链路移动到了另外一个链路。
(1)如果移动节点能够收到代理广告的话,它可以通过下述的两种方法进行检测:
* 使用代理广告中的Lifetime字段进行检测,Lifetime字段指出了代理广告发送的周期
。如果移动节点已经从某个外部代理那儿获得了转交地址,并且向本地代理进行了注册
,那么当它在预定的时间周期内收不到源自该外部代理的代理广告的话,移动节点会认
为它移动到了另外一个链路上,或者认为该外部代理出现了故障。
* 使用网络前缀进行移动检测。前面我们讲过,代理广告数据包中的源地址(Source A
ddress)字段就是该代理(本地或外部)的IP地址,因此当移动节点收到代理广告后,
它可以获知并记录下代理的IP地址。当它下一次收到代理广告时,可以将该代理广告中
的源地址与上一次收到的代理广告的源地址进行比较,如果两个地址具有相同的网络前
缀,那么移动节点认为它没有移动到新的链路上,否则就认为移动到了一个新的链路上
。值得一提的是,在同一条链路上有可能存在多个代理,但是它们的网络前缀却不同(
譬如在同一个以太网链路上可以存在几个不同的IP网段),在这种情况下,就不能单纯
依靠源地址进行判断了,怎么办呢?作为一项可选内容,代理广告中可以包含同一条链
路上多个不同代理的网络前缀信息。移动节点可以将最近收到的代理广告中的各网络前
缀与上一次收到的代理广告中的各网络前缀进行比较,如果相同则认为没有移动到新的
链路上,否则就认为移动到了新的链路上。
(2)如果移动节点收不到代理广告的话,它通过以下两种方法进行移动检测:
* 检查一下现有的TCP连接是否有进展,如果在一段时间内没有进展的话,则可以认为已
经移动到了一个新的链路上;
* 移动节点可以将自己的网卡驱动配置为“混合模式”,在这种模式下,移动节点将检
查链路上的所有数据包。如果移动节点已经身处某一外部链路,并且获得了一个转交地
址,那么当它在一段时间内发现该链路上的所有数据包的目标IP地址的网络前缀均不同
于转交地址的网络前缀时,它会认为它移动到了一个新的链路上。
3、获取转交地址
前面我们介绍了移动节点的位置判断和移动检测,下面介绍一下转交地址的获取方法。
当移动节点从本地链路移动到外部链路或从一个外部链路移动到另一个外部链路上时,
它会设法获得一个新外部链路上的转交地址。获取转交地址的方法主要有三种:
(1)当外部链路上有外部代理时,移动节点就可以从代理广告中的转交地址列表中选择
一个地址作为自己的转交地址;
(2)当外部链路上没有外部代理时,移动节点将从外部链路的DHCP服务器那儿获得一个
IP地址作为转交地址;
(3)如果外部链路上既没有外部代理,也没有DHCP服务器的话,就只能由用户手工为移
动节点设置一个转交地址了。
通过第一种方法获得的转交地址,称之为外部代理转交地址(foreign agent care-of
address);通过后两种方法获得的转交地址称之为配置转交地址(collocated care-o
f address)。
(二)转交地址注册/取消注册(Registration/Deregistration)
1、转交地址注册
转交地址注册指的是移动节点将在外部链路上获得的转交地址告知本地代理,以便本地
代理使用该转交地址将目标地址为移动节点本地IP地址的数据包通过隧道转发给位于外
部链路上的移动节点。移动节点在以下三种情况下将会进行注册:
* 移动节点获得新的转交地址后。
* 上次注册即将过期时。因为每一次注册都有一个有效期,因此即使移动节点的转交地
址没有改变,在它上次注册要到期的时候,它也要进行重新注册。
* 外部代理重新启动时。代理广告中包含有一个序列号字段(Sequence Number),在正
常情况下,代理每发送一个代理广告,该字段的值将在上次的基础上加1,并作为下次代
理广告的序列号字段;当代理重新启动时,该字段将被置0。移动节点可以通过代理广告
中的序列号字段来判断代理是否重新启动。
(1)当外部代理存在时,移动节点要通过外部代理向本地代理进行注册,其过程如下:
* 移动节点将注册请求(Registration Request)数据包发送给外部代理,该数据包中
包括移动节点的本地IP地址、移动节点的转交地址、移动节点本地代理的IP地址、注册
有效期(Lifetime>0)以及其他一些控制标志(S、B、D、M、G、V控制位),其中D位为
0,表示移动节点使用的是外部代理转交地址;
* 外部代理收到来自移动节点的注册请求后,进行有效性检查,如果认为无效,将向移
动节点发送注册答复(Registration Reply)拒绝移动节点的注册请求,拒绝的原因反
映在注册答复的Code字段中。以下四种情况下,外部代理将会拒绝移动节点的注册请求
:
a) 注册请求中用于安全控制的认证标识(Authenticator)无效;
b)注册请求中Lifetime字段的值超过了外部代理允许的最大值;
c)外部代理不支持注册请求中所指定的隧道类型,注册请求中的M、G控制位指明了移动
节点所请求的隧道类型(M-Minimal Encapsulation,G-Generic Routing Encapsulati
on,缺省为IP in IP Encapsulation);
d)外部代理暂时没有足够的资源接纳更多的注册请求。
* 如果外部代理通过有效性检查后认为注册请求有效的话,则将注册请求中继(relay)
给移动节点的本地代理。本地代理收到注册请求后,对其进行有效性检查,如果无效,
向外部代理发送注册答复,拒绝该注册请求;如果有效,向外部代理发送注册答复,接
受注册请求,并在映射表中添加移动节点本地IP地址与转交地址的对应关系,如果注册
请求中的S位为0,还要将映射表原来存在的该移动节点本地IP地址与其他转交地址的对
应关系删除(因为一个移动节点可以同时拥有并向本地代理注册多个转交地址,因此注
册请求中的S位用于表示一个注册请求对移动节点已注册的其他转交地址的影响,如果S
位为1,表示该注册请求对其他转交地址无影响,如果S位为0,表示本地代理应用该注册
请求中的转交地址替代原有的其他转交地址);
* 外部代理收到本地代理的注册答复(该答复可能是接受请求的,也可能是拒绝请求的
)后,对其进行有效性检查,如果有效,将注册答复中继给移动节点,同时将有关注册
信息记录下来;如果无效,产生一个新的注册答复给移动节点,拒绝它的注册请求;
* 外部代理和本地代理反复对注册请求和注册答复进行有效性检查的原因是因为它们的
有效性标准不一样。
* 一旦注册请求被接受,外部代理将承担起对本地代理通过隧道发送给移动节点的数据
进行解包(de-tunneling)的工作,并将作为移动节点向外发送数据的缺省路由器。
* 如果移动节点在预定的时间内没有收到注册答复,它将重新发送注册请求;如果移动
节点收到拒绝它注册请求的答复,它将依据被拒绝的原因调整自己的注册请求,并重新
发送。
(2)如果外部代理不存在的话,移动节点将直接把注册请求发送给本地代理,并从本地
代理那儿直接接受注册答复。此时注册请求数据包中的D位为1,表示移动节点使用的是
配置转交地址。另外,在这种情况下,将由移动节点自己来完成隧道数据的解压工作。
2、取消注册请求(Deregistration)
下面两种情况下,移动节点将请求本地代理取消注册:
(1)当移动节点从外部链路回到本地链路上时,它将向本地代理发送取消注册的请求,
以便恢复在本地链路上的正常通信,大致过程如下:
* 移动节点向本地代理发送取消注册的请求(注册和取消注册的请求都使用相同格式的
数据包,只不过其内部字段的取值不同),该请求数据包中的转交地址为移动节点的本
地IP地址、Lifetime字段等于0,这样的请求将被视为取消注册的请求。
* 同前面讲过的一样,本地代理在收到取消注册的请求后,要进行有效性检查,如果无
效,则拒绝移动节点的请求;如果有效,则接受其请求,并将映射表中与该移动节点有
关的所有对应关系删除。
(2)移动节点可以取消某个转交地址的注册而不影响其他转交地址的注册,就象它可以
增加一个转交地址的注册而不影响其他转交地址的注册一样(前面讲过)。这种情况下
,请求数据包中的转交地址为移动节点想要取消的转交地址,Lifetime等于0,且S位等
于1。
(三)数据的收发
当移动节点位于本地链路上时,数据的收发将通过正常的方式来进行,与移动IP的实现
无关。下面主要介绍当移动接点位于外部链路上时,如何完成数据的收发。
1、 移动节点的数据接收
因为移动IP的设计目标是要在不改变移动节点原有IP地址(即移动节点本地IP地址)的
前提下,实现网络的不间断通信,因此,所有发送给移动节点的数据包的目标IP地址都
是移动节点的本地IP地址,而目标地址为移动节点本地IP地址的数据包将通过路由首先
到达移动节点的本地链路和本地代理,不管此时移动节点位于哪个外部链路上。
如果移动节点已经在本地代理中注册了一个或多个转交地址,那么本地代理在截取到这
些发给移动节点的数据包后,将使用每一个转交地址(如果该移动节点拥有多个转交地
址的话)对这些数据包进行一次再封装,再封装后的IP数据包的目标IP地址为移动节点
的转交地址,源IP地址为本地代理的IP地址,Protocol字段为“IP”(表示封装后的数
据包的有效载荷仍然是一个IP数据包)。然后,本地代理将根据路由表中的路由信息和
每一个再封装后的数据包的目标IP地址,选择一个合适的网络接口,将再封装后的数据
包逐一发送出去,这一过程在移动IP的实现中称为隧道。
因为经过隧道技术处理后的IP数据包的目标地址为移动节点的转交地址,因此它们可以
通过正常的路由途径到达移动节点所在的外部链路。
如果外部链路上存在外部代理的话,那么该外部代理一般将作为移动节点在该链路上进
行数据收发的缺省路由器使用,因此它将首先接收到目标地址为移动节点转交地址的数
据包。当外部代理发现这些数据包的目标IP地址是它对外提供的一个转交地址且数据包
的Protocol字段为“IP”时,它首先对数据包进行解压,然后将解压后得到的内部数据
包(即目标地址为移动接点本地IP地址的源数据包)交给路由软件处理,路由软件会依
据源数据包的目标IP地址(移动节点的本地IP地址)和路由表中的路由信息选择一个合
适的接口将它发送给移动节点(因为移动节点此时与外部代理在同一个链路上,所以外
部代理的某个网络接口与移动节点是直接相连的,路由软件可以通过该接口直接把源数
据包发送到移动节点)。
如果移动节点所在的外部链路上没有外部代理的话,外部链路上的路由器收到本地代理
发给移动节点的经过隧道处理的数据包后,将选择一条合适的路由将数据包转发给移动
节点。移动节点收到后,对数据包进行解压处理,即可得到源数据包。
2、移动节点的数据发送
首先,移动节点要在外部链路上选择一个路由器作为缺省的路由器。如果外部代理存在
的话,移动节点可以选择外部代理作为缺省路由器;如果外部代理不存在的话,移动节
点将选择外部链路上的其他路由器作为缺省路由器(移动节点通过接收该链路上的ICMP
Router Advertisemnet可以获知可用路由器的IP地址)。
然后,移动节点将使用缺省路由器进行数据的发送。由于在IP协议中,具有不同网络前
缀的设备之间不能直接进行数据通信,因此移动节点使用反向隧道技术(reverse tunn
eling)对外出数据包进行处理。所谓反向隧道指的是:
(1)当外部代理存在时,移动节点将它要发送的IP数据包(源地址为移动节点本地IP地
址,目标地址为目标计算机IP地址)进行再次封装后向外发送,封装后的IP数据包的源
地址为移动节点的转交地址,目标地址为外部代理的IP地址。外部代理收到这些数据包
后,因为发现这些数据包的源地址是它对外提供的一个转交地址,所以先解包,然后再
进行封装,这一次封装后的数据包,其源地址为外部代理的IP地址,目标地址为移动节
点本地代理的IP地址。本地代理收到这些数据包后,解包,将得到的源IP数据包通过路
由发送到目标计算机。
(2)当外部代理不存在时,移动节点将它要发送的IP数据包(源地址为移动节点本地I
P地址,目标地址为目标计算机IP地址)进行再次封装后向外发送,封装后的IP数据包的
源地址为移动节点的转交地址,目标地址为本地代理的IP地址。本地代理收到这些数据
包后,解包,将得到的源IP数据包通过路由发送到目标计算机。
四、总结
以上对移动IP的工作原理做了概括性的介绍,其中没有涉及到过多的细节。细心的读者
会发现,我们前面讲到的是移动节点在移动到一个新的链路后,如何进行位置判定、移
动检测、地址获取和数据收发,而没有讲移动节点从一个链路移动到另外一个链路的过
程,这是因为移动的过程不可避免地要涉及到具体的物理层和数据链路层实体,而移动
IP作为网络层协议,它的实现应该是与下层协议无关的,换句话说,下层协议的实现对
移动IP来说应该是透明的。比如,在无线网络中,移动节点通过无线收发器可以检测信
号的强弱,可以根据信号的强弱和信号的质量选择合适的无线信号中转站,而这些工作
都是通过无线网络的物理层和数据链路层来实现的(大多数无线网络标准,如IEEE 802
.11、802.11b、蓝牙,都只涉及物理层和数据链路层)。
--
世界上有两件东西能够深深地震撼人们的心灵
一件是我们心中崇高的道德准则
另一件是我们头顶上灿烂的星空
——伊曼努尔·康德
※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 172.16.3.205]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:205.175毫秒