RFC2002 IP移动性支持

发表于 6年以前  | 总阅读数:792 次
组织:中国互动出版网(http://www.china-pub.com/)
RFC文档中文翻译计划(http://www.china-pub.com/compters/emook/aboutemook.htm)
E-mail:ouyang@china-pub.com
译者:Hlp(hlp,huangliuqi@hotmail.com)
译文发布时间:2001-5-23
版权:本中文翻译文档版权归中国互动出版网所有。可以用于非商业用途自由转载,但必须
保留本文档的翻译及版权信息。



Network Working Group                                 C. Perkins, Editor
Request for Comments: 2002                                           IBM
Category: Standards Track                                   October 1996


IP移动性支持
(RFC2002  IP Mobility Support)


本文档现状
    本文档规定了Internet协会的一种标准跟踪协议,尚需讨论、建议以待提高。本协议的
标准化进程请参考“Internet官方协议标准”(STD 1)。本文档可以无限制的分发。
摘要
   本文档描述了一种增强型协议,允许把IP数据报透明地路由到Internet的移动节点。 每
一个移动节点总是由其家乡地址标识,而与其当前连接到Internet的位置无关。当不在家乡
(网络)时,移动节点还与一个转交地址相关,转交地址提供了其当前接入Internet的位置
信息。本协议提供了向家乡代理注册其转交地址的方法。家乡代理把以该移动节点为目的地
址的数据报通过一个隧道发送到其转交地址。在到达隧道的端点后,数据报被一个个传送到
移动节点。




目录
 1. 简介 …… … … … … … … … … … … … … … … … … …… … … … …   1
     1.1.协议要求…… … … … … … … … … … … … … … …… … … …   3
     1.2.目标  … … … …… … … … … … … … … … … … … …… … … …   4
     1.3.假设 … … …  … … … … … … … … … … … … … … …… … …    4
     1.4.适用性 ………………… …… … … … … … … … … … … … …  … … …4
     1.5.新的结构实体 … …  … … … … … … … … … … … … … …… … …   5
     1.6.术语 … … … … … … … … … … … … … … … … … …… … … … 6
1.7.协议概况… … … … … … … … … … … … … … … …… … … … … 7
1.8.规范用语… … … … … … … … … … … … … … … … …… … … …    11
     1.9.消息格式和协议扩展… … … … … … … … … … … … … … … … …    12
 2.代理发现… … … … … … …… … … … … … … … …… … … … …… … … 14
     2.1.代理广告  … … … …  … … … …… … … … …… … … … …… …  14
           2.1.1.移动代理广告扩展… … … … … … … … … … … … … … …    16
           2.1.2.前缀长度扩展… … … … … … … … … … … … … … …… … …18
           2.1.3. One-byte Padding扩展… … … … … … … … … … … ……    19
     2.2. 代理请求… … … … … … … … … … …  … … … … …… … … …     19
     2.3.外地代理和家乡代理考虑… … … … … … …  … … … … …… … … …  19
           2.3.1.广告路由器地址… … … … … … … … … … … … …  … … … …20
           2.3.2.序列号及翻转控制… … … … … …  … … … … … … … ……   21
     2.4.移动节点考虑… … … … … … … … … … … … … … … … …… … … … …21
           2.4.1.要求注册… … … … … … … … … … … … … … … …… …    22
           2.4.2.移动检测… … … … … … … … … … … … … … … … …   22
           2.4.3.返回家乡… … … … … … … … … … … … … … … … …   24
           2.4.4.序列号和翻转控制… … … … … … … … … … … … … … …24
 3. 注册… … … … … … … … … … … … …… … … …… … … … …… … …  24
     3.1. 注册概述… … … … … … … … … … … … … … … … …… … …   25
     3.2.认证 … … … … … … … … … … … … … … … … …  … … … …   26
     3.3.注册请求 … … … … … … … … … … … … … … … … …… … …   26
     3.4.注册应答 … … … … … … … … … … … … … … … … …… … …   29
     3.5. 注册扩展 … … … … … … … … … … … … … … … … …… … … 32
           3.5.1.计算认证扩展的值… … … … … … … … … … … … ……   32
           3.5.2.Mobile-Home认证扩展… … … … … … … … … … … …   33
           3.5.3.Mobile-Foreign认证扩展 … … … … … … … … … … … … 33
           3.5.4.Foreign-Home认证扩展… … … … … … … … … … … …   34
     3.6.移动节点考虑 … … … … … … … … … … … …… … … … …… …  34
           3.6.1.发送注册请求… … … … … … … … … … … …… … … … …36
           3.6.2.接收注册应答… … … … … … … … … … … …  … … … … 40
           3.6.3.注册重传… … … … … … … … … … … …… … … … ……  42
     3.7.外地代理考虑 … … … … … … … … … … … …  … … … … …… … 43
           3.7.1.配置表和注册表 … … … … … … … … … … … …… … …  44
           3.7.2.接收注册请求  … … … … … … … … … … … …… … … … 44
           3.7.3. 接收注册应答  … … … … … … … … … … … …… … … …47
     3.8.家乡代理考虑  … … … … … … … … … … … …… … … … …… …  49
           3.8.1.配置表和注册表 … … … … … … … … … … … …… … … …49
           3.8.2.接收注册请求 … … … … … … … … … … … …… … … … …49
           3.8.3. 发送注册应答 … … … … … … … … … … … …… … … … 53
 4.路由考虑… … … … … … … … … … … …… … … … … … … … … …  …  55
     4.1.封装类型 … … … … … … … … … … … …… … … … … … …… …  56
     4.2.单播数据报的路由 … … … … … … … … … …… … … … … … …   56
           4.2.1.移动节点考虑 … … … … … … … … … …… … … … … …   56
           4.2.2.外地代理考虑 … … … … … … … … … …… … … … …  …  57
           4.2.3. 家乡代理考虑 … …  … … … … … … …… … … …  … … 58
     4.3.广播数据报 … … … … … … … … … …… … … … … … … … … … 59
     4.4.多播数据报路由 … … … … … … … … … …… … … … … … … …   60
     4.5. 移动路由器 … … … … … … … … … …… … … … … … … … …   61
     4.6. ARP,代理ARP和免费ARP  … … … … … … … … … …… … …   62
 5. 安全考虑 … … … … … … … … … …… … … … … … … … … …… … …  66
     5.1.消息认证码 … … … … … … … … … …… … … … … … … … … …   66
     5.2.本协议涉及的安全区域 … … … … … … … … … …… … … …… … … 66
     5.3.密钥管理 … … … … … … … … …… … … … … … … … … …… … 67
     5.4.选好随机数 … … … … … … … … …… … … … … … …… … … … 67
     5.5.隐私保护 … … … … … … … … …… … … … … … … … … …… … 67
     5.6.注册请求重放保护 … … … … … … … … …… … … … … …… … … 68
           5.6.1.使用时间戳的重放保护 … … … … … … … … … …  … …   68
           5.6.2.使用随机数的重放保护 … … … … … … … … …… … … … 69
 6.致谢 … … … … … … … … … …… … … … … … … … …… … … … … 71
A. 专利问题 … … … … … … … … … …… … … … … … … … … …… …    72
     A.1. IBM第5,159,592号专利 … … … … … … … … … …… … …   72
     A.2. IBM 第5,148,479号专利  … … … … … … … … … …… … … 72
 B.链路层考虑… … … … … … … … … …  … … … … … … … … … …  … 73
 C. TCP考虑 … … … … … … … … … …… … … … … … … … … …… …  73
     C.1.TCP定时器 … … … … … … … … … …… … … … … …  … …… 73
     C.2.TCP拥塞控制 … … … … … …  … … … … … … … … …  … …  73
 D.特定情形下的例子 … … … … … … … … … …… … … … … … … …… 74
     D.1.使用外地代理转交地址注册 … … … … … … … … … …   … …… 74
     D.2.使用联合转交地址注册 … … … … … … … … … …… … … … … 75
     D.3. 解除注册 … … … … … … … … … …… … … … … … … … … …  76
 E.Prefix Lengths扩展的适用性 … … … … … … … … … …… … … … … …  76
编辑地址 … … … … … … … … … …… … … … … … … … … …  … …… ……79


1.简介
   IPv4假设节点的IP地址唯一确定了节点连接到Internet的位置。因此节点必须位于由
其IP地址标识的网络上才能收到发送给它的数据报;否则发往该节点的数据报将无法递交。
对于一个移动节点来说,为了在改变接入点的位置后不丧失其通信能力,当前必须使用下述
两种机制之一:
      a) 节点在改变其接入位置后必须改变其IP地址,或者
        b)基于主机的路由信息(host-specific routes)必须被传播到很多Internet路由
结构中。

这两种选择通常都是无法接受的。第一种情况使节点在改变位置后无法维持传输层及其
以上的连接。第二种显然有着严重的规模(scaling)问题,尤其是考虑到笔记本(移动的)
计算机的销售呈爆炸性增长。
这就要求有一种新的可扩展的机制以允许节点在Internet上的移动性。本文档定义了这
样一种机制,使得节点在改变它们的位置时不改变它们的IP地址。 

1.1.协议要求
移动节点必须能够在改变其在Internet上的链路层接入点后,不改变其IP地址便能与
其它节点通信。

移动节点必须能够与其它不使用移动功能的节点通信。如果主机或路由器不作为1.5中
介绍的新的结构实体,则不要求增加任何协议。

所有用于向其它节点更新本移动节点的位置信息的消息必须经过认证以保护系统免受远
程重定向攻击(remote redirection attacks)。
  
1.2.目标
   移动节点直接接入Internet的链路通常可能是一条无线链路。这样的链路可能因而比传
统的有线网络有更低的带宽以及更高的错误率。而且移动节点可能是电池驱动的,减小功耗
很重要。因此,应该尽量减少移动节点连接链路上发送的管理消息(administrative message)
的数量,而且消息的大小应该尽可能的小。
1.3. 假设
   本文档定义的协议对分配IP地址方面没有附加限制。也就是说,移动节点可以由拥有该
机器的组织指定一个IP地址。

   本协议假设移动节点Interner接入点的改变的频率通常不频繁于一秒钟一次。

   本协议假设IP单播数据报的路由是基于数据报头部的目的地址(而不是基于源地址)。
1.4.适用性
    移动IP目的是允许节点从一个IP子网移动到另一个IP子网。这种移动性适用于同类介
质,同样适用于异类介质,也就是说移动IP易于节点从一个以太网子段(segment)移动到
另一个子段,也允许节点从一个以太网子段移动到一个无线LAN,只要移动后节点的IP地址
保持不变。
    可以把移动IP看作解决移动性的“宏观”管理问题的方法。它不太适合于其他的移动性
的“微观”管理的应用――比如无线收发器之间的切换(handoff),其中每一个收发器只覆
盖了很小的地理区域。只要节点的移动不是发生在不同IP子网的接入点之间,移动性的链路
层机制(即链路层切换),可以提供比移动IP更快的收敛性(convergence)和更小的开销
(overhead)。
1.5. 新结构实体
   移动IP引入了下面的新的功能实体:
      移动节点(Mobile Node)
          其接入点从一个网络或子网变化到另一个网络或子网的主机或者路由器。移动节
点可以改变其位置而不改变其IP地址;假如到某个接入点的链路层连接可用,它
可以在任何地方使用其(固定的)IP地址与Internet上的其它节点通信。
      家乡代理(Home Agent)
          位于移动节点家乡网络上的一个路由器,该路由器在移动节点不在家乡(网络)
时为数据报创建隧道以把数据报传送到移动节点,并负责维护移动节点当前位置
信息。
      外地代理(Foreign Agent)
          位于被移动节点访问网络上的一个路由器,该路由器为注册节点提供路由服务。
外地代理把家乡代理通过隧道传送过来的数据报进行拆封(detunnel)并把这些
数据报传送到移动节点。对于从移动节点传送过来的数据报,外地代理作为该注
册移动节点的缺省路由器。

    移动节点在家乡网络被给予一个长期的IP地址。这个家乡地址按固定主机的“永久”
(permenent)IP地址来进行管理。当不在家乡网络时,移动节点与一个“转交地址”相关
联以反映出移动节点当前连接的位置。移动节点使用家乡地址作为其发送的所有IP数据报的
源IP地址,除了本文档中描述的为了特定的移动管理功能而发送地数据报外(例如3.6.1.1)。



1.6. 术语 
  本文档经常使用下面的术语:
      代理广告(Agent Advertisement)
               通过给路由器广告信息(参考文献[4])附加特殊的扩展而得到的广告信息。
转交地址(Care-of Address)
                指向移动节点的隧道的终止点,用于节点不在家乡时把数据报转交到移动
节点。本协议可以使用两种不同类型的转交地址:“外地代理转交地址”
(foreign agent care-of address)是移动节点所注册的外地代理的地址;
“联合转交地址”(co-located care-of address,疑为“collocated”,
配置转交地址――译者注)是移动节点从外部获得的本地地址,移动节点
已经将之与自己的一个网络接口建立关联。
      对方节点(Correspondent Node)
               与移动节点进行通信的同位体(peer)。对方节点可为移动节点或固定节点。
      外地网络(Foreign Network)
               除移动节点的家乡网络外的任何其他网络。
      家乡地址(Home Address)
               给移动节点分配的长期(extended period)IP地址。不管节点在何处接入
Internet,它都将保持不变。
      家乡网络(Home Network)
                其前缀与移动节点家乡地址的网络前缀匹配的网络,家乡网络可能是虚拟
的。注意标准的IP路由机制将把发往移动节点家乡地址的数据报发送到移
动节点的家乡网络上。
      链路(Link)
     节点能在其上进行链路层通信的设备或媒介。链路在网络层的下面。
      链路层地址(Link-Layer Address)
              用来标识某条物理链路上的通信端点的地址。典型地,链路层地址是一个接
口的MAC地址。
      移动代理(Mobility Agent)
               家乡代理或者外地代理。
      移动绑定(Mobility Binding)
               建立家乡地址与转交地址之间的关联,以及该关联的生存期。
      移动安全关联(Mobility Security Association)
                在一对节点之间的安全上下文(security contexts)的集合,这些安全上
下文可能应用于它们之间交换的移动IP协议消息。每一个安全上下文表明
一种认证算法及模式(见5.1),一个秘密(一个共享的密钥,或者一个公
共/私有密钥对),以及所使用的重放保护风格(见5.6)。
节点(Node) 
主机或者路由器。
      随机数(Nonce)
某个随便选取的值,与以前选用的值不同,插入消息中以避免重放攻击。
      安全参数索引(Security Parameter Index,简称SPI)
从移动安全关联的全部安全上下文中标识一对节点之间的安全上下文的索
引。0到255 的SPI值被保留,不允许在任何移动安全关联中使用。
      隧道(Tunnel)
数据报在处于封装状态时所经过的路径。模型为,在处于封装状态时,数据
报被路由到可知的(knowledgeable)拆封代理(decapsulating agent),拆
封代理对该数据报进行拆封然后把它正确传送到其最终目的地。
虚拟网络(Virtual Network)
        路由器以远没有物理实体的网络(有一个在其它网络上的物理网络接口)。路
由器(如家乡代理)通常使用传统路由协议把其可达性向虚拟网络广告。
      被访问网络(Visited Network)
               移动节点当前连接到其上的、不是移动节点家乡网络的网络。
      访问者列表(Visitor List)
              访问一个外地代理的移动节点的列表。
1.7. 协议概述
   下列支持服务专为移动IP定义:
      代理发现(Agent Discovery)
                家乡代理和外地代理可以在每一条它们为之提供服务的链路上将它们(外
地代理和家乡代理)的可用性进行广告。新到达的移动节点可在该链路上
发送一个请求(solicitation)以了解是否出现预期的(prospective)代
理。
      注册(Registration)
                当移动节点不在家乡时,它向其家乡代理注册其转交地址。移动节点可以
直接向其家乡代理注册,或者通过外地代理然后由外地代理把注册转发到
家乡代理,取决于它连接的方法。

移动IP协议的大致操作过程如下面几个步骤所示:

    ――移动代理(即外地代理和家乡代理)通过代理广告消息(见第2章)将它们的存在
性进行广告。移动节点可选地从所连接的外地代理通过一个代理请求消息请求一个
代理广告消息。

    ――移动节点收到这些代理广告并确定自己是在家乡网络还是在外地网络上。

    ――当移动节点检测到自己位于在家乡网络上,它将不使用移动服务进行操作。如果从
其它注册的地方返回到家乡网络, 通过交换注册请求和注册应答消息,移动节点解
除其在家乡代理的注册(仅当不在家乡网络时才有“注册”一说,见上面的注册―
―译者注)。

    ――当移动节点检测到自己已经移到外地网络,它将获得一个外地网络的转交地址。转
交地址可以从外地代理的广告中获得(外地代理转交地址),或者通过外部分配机制
如DHCP[6]获得(联合转交地址,再声明一遍,原文中可能有误,疑为“配置转交地
址”――译者注)。

    ――位于家乡以外的移动节点通过交换注册请求和注册应答消息向家乡代理注册其新的
转交地址,该过程可能通过外地代理(见第3章)。

    ――发送到移动节点家乡地址的数据报被其家乡代理截获,家乡代理通过隧道把数据报
送到移动节点的转交地址,在隧道的端点被(外地代理或者移动节点本身)接收,
最后传送到移动节点(见4.2.3)。

    ――在相反方向,由移动节点发送的数据报通常使用标准的IP路由机制传送到目的地
址,不一定经过家乡代理。

当不在家乡时,移动IP使用协议隧道(protocol tunneling)把移动节点的家乡地址向
从家乡网络到移动节点当前位置的沿途路由器隐藏。隧道终止于移动节点的转交地址。转交
地址必须是数据报能够通过传统IP路由到达的地址。在转交地址,原始数据报被从隧道中移
出并传送到移动节点。

  移动IP提供两种可选的获得转交地址的模式:

    ――外地代理转交地址(“foreign agent care-of address”)是由外地代理通过其代理
广告消息所提供的转交地址。在这种情况下,转交地址是外地代理的IP地址。在这
种模式,外部代理就是隧道的端点,一收到通过隧道到来的数据报,它就对这些数
据报进行解封装(拆封)并把内层的数据报传送到移动节点。这种获得转交地址的
模式是首选模式,因为它允许多个移动节点共用同一个转交地址因而不会给本来就
很有限的IPv4地址空间增加不必要的要求。

――联合转交地址(“co-located care-of address”)是移动节点通过某种外部方式得
到作为本地IP地址的转交地址,然后移动节点把它与自己的一个网络接口建立关
联。该地址可由移动节点动态获得(如通过DHCP [6])而作为一个临时地址;或者
由移动节点所拥有的只是在访问外地网络时才使用的长期地址。具体由外部获得本
地IP地址用作联合转交地址的方法超出了本文档的范畴。在使用联合转交地址时,
移动节点作为隧道的端点并且自己对数据报进行拆封。

使用联合转交地址的模式优点是允许移动节点在不需外地代理便能运行,例如,在还没
有实施外地代理的网络上。

但是,它会给IPv4地址空间增加额外的负担,因为它要求在外地网络上有一个地址池供
来访移动节点使用,对每一个允许移动节点访问的子网有效地维护这样的一个地址池很困难。

  理解转交地址和外地代理之间的功能区别是很重要的。转交地址仅仅是隧道的端点,它
可能实际上是一个外地代理的地址(外部代理转交地址),但是它也可能是移动节点临时获得
的地址(联合转交地址)。另一方面,外地代理是为移动节点提供服务的移动代理。详情见
3.7和4.2.2。

家乡代理必须能够收集和截获(attract&intercept)发往其任意一个已注册移动结点
的家乡地址的数据报。使用4.6中描述的代理ARP和免费ARP机制 ,如果家乡代理在由移动
节点家乡地址表明的链路上有一个网络接口,该条件可满足。使用其它截获发往移动节点家
乡地址的数据报的机制可以使用其它相对移动节点家乡位置放置家乡代理的方法。放置方法
超出了本文档的范畴。

同样,移动节点和预期的或者当前的外地代理必须能够不依赖标准IP路由机制而交换
数据报;也就是说,决定转发的机制是根据IP头部目的地址的网络前缀。如果外地代理和来
访移动节点在同一条链路上有一个接口,该条件可满足。在这种情况下,在互相发送数据报
时,移动节点和外地代理简单地“透传”(bypass)它们正常的IP路由机制,把其下的链路
层数据包的目的地址分别设为它们各自的链路层地址。在这些节点之间使用其它机制来交换
数据报还可以使用其它相对移动节点放置外地代理的方法,但这些放置方法超出了本文档的
范畴。

如果移动节点正在使用联合转交地址(如上面(b)所述),移动节点必须位于转交地址
的网络前缀所标识的链路上。否则,发往该联合转交地址的数据报将无法递交。

例如,下面的图显示了移动节点不在家乡时(已向其家乡代理注册)发送和接收数据报
的路由,在下面的图中,移动节点使用外地代理转交地址:

                2) 数据报被家乡代理截获      3)数据包被从隧道中移出
                   并通过隧道传送到转交         并被传送到移动节点                          
                   地址             
                    




     1) 发往移动节点的
        数据报通过标准
IP路由到达                4) 对于移动节点发送的数据报由 
家乡网络                     标准的IP路由将把每一个数据报
发送到各自的目的地,图中,
外地代理作为移动节点的
缺省路由器
                                            
                                        
                                        
1.8.用语规范
   本文档中使用几个词来强调规范的条件。这些词用粗体并用红颜色表示
      必须     形容词为“必要的”,表明该定义是本规范绝对要求的。
      不允许   表明该定义是本规范绝对禁止的。
         应该     形容词是“推荐的”,在某种环境下,可能存在有效的原因来忽略此项,但
在决定选用其他过程时,必须理解完整的实现并慎重权衡。否则将会出现
意想不到的结果。
      可以(可能)形容词为“可选的”,该项为允许的可选元素集合中的一个元素。不包
含该选项的实现必须做好与另一个包含该项的实现进行互操作
(interoperate)的准备。
      静悄悄地丢弃
                实现不经进一步处理便把数据报丢掉,并且不向发送者暗示错误。实现应
该提供记录错误的能力,包括被丢弃数据报的内容,并应该在一个统计计
数器中记录下该事件。 
1.9. 消息格式和协议扩展
    移动IP定义了一系列新的控制消息,使用UDP(参考文献[17])发送,众所周知端口号
为434。当前,定义了如下两种消息类型:
      1  Registration Request
3	Registration Reply

移动IP控制消息最新的类型值在最新的“Assigned Numbers”(参考文献[20])中指定。

另外,为了代理发现(Agent Discovery),移动IP使用了现有ICMP路由发现(ICMP Router 
Discovery,参考文献[4])定义的路由广告(Router Advertisement)和路由请求(Router 
Solicitation)消息。

移动IP定义了一种通用扩展机制以允许移动IP控制消息或ICMP路由发现消息负载可选
的信息 。每一个这些扩展(有一个例外)使用下面的Type-Length-Value格式进行编码:

0
1
2
3
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
     Type
     Length
               Data … … 
    
  Type     表明特定的扩展的类型。
      Length   表明该扩展中data域的长度(以字节为单位)。长度不包括Type和    
Length的字节数。
      Data      与该扩展相关的特定数据。该域可以为0个或多个字节。Data域的格式和
长度由type和length域决定。

扩展允许每一个数据报携带可变数量的信息。扩展列表的末尾由IP数据报的total 
length域决定。

    移动IP使用两个分开维护的编号空间,扩展类型值就是在这些空间里分配:

   ――第一个包含只出现在移动IP控制消息(通过UDP端口434传送)中的扩展。当前定
义了移动IP控制消息中出现的扩展类型:
          32  Mobile-Home Authentication
          33  Mobile-Foreign Authentication
          34  Foreign-Home Authentication
   ――第二个包含那些只出现在ICMP Router Descovery(参考文献[4])消息中的扩展。
当前移动IP定义了以下出现在ICMP Router Discovery 消息中的扩展类型:
           0  One-byte Padding (编码为无Length无Data域)
          16  Mobility Agent Advertisement
19	Prefix-Lengths

每一种扩展在本文档后面各辟一个章节详细描述。扩展类型的最新值在“Assigned   
Numbers”(参考文档[20])中定义。

由于这两个集合的分开(正交,orthogonality),有可能使后来定义的两种扩展有相
同的类型值,只要满足一个扩展仅用于移动IP控制消息而另一个仅用于ICMP Router 
Discovery 消息。

    当遇到在这两个集合中编号从0到127的扩展但无法识别时,包含该扩展的消息必须被
悄悄地丢弃。当遇到128到255的扩展号而无法识别时,该扩展被忽略,但必须继续处理其
它扩展和消息的数据。扩展中的Length域就是用来跳过Data域而查找新的扩展。  
2. Agent Discovery
代理发现是移动节点用来判断当前自己是连接到家乡网络还是外地网络的方法,代理发
现还是移动节点用来检测自己是否已经从一个网络移动到另一个网络。在连接到外地网络时,
本节介绍的方法还使得移动节点能够确定每一个外地代理所提供的“外地代理转交地址”。

移动IP把ICMP Router Discovery扩展为其代理发现的基本机制。代理广告通过在ICMP 
Router Advertisement消息(见2.1)中包含一个“移动代理广告扩展”(Mobility Agent 
Advertisement Extension)而得到。Agent Solicitation消息与ICMP Router Solicitation
消息相同,但其IP TTL必须设置为1 (见2.2)。本节描述了移动节点、外地代理和家乡代
理合作以实现代理发现所使用的消息格式和过程。

代理广告和代理请求对于已经提供这种功能的链路层来说可能是不必要的。移动节点与
预期代理建立链路层连接的方法超出了本文档的范畴(但请参考附录B)。下面的描述的过程
假设这样的链路层连接已经建立好。

 代理广告和代理请求消息不需要任何认证。它们可以使用IP认证头部(参考文献[1])
进行认证,认证头与本文档描述的消息无关。广告和请求消息的认证方法的更详尽的规范超
出了本文档的范畴。
2.1.代理广告( Agent Advertisement)
代理广告由移动代理在链路上发送以广告其服务。移动节点使用这些广告来确定它们当
前连接到Internet上的位置。代理广告是已被扩展的ICMP路由广告,扩展后携带一个移动
代理广告扩展(Mobility Agent Advertisement Extension,见2.2.1),一个可选的
Prefix-Lengths 扩展(见2.1.2),一个One-byte Padding扩展(见2.1.3),或将来定义的其
他扩展。

   在代理广告消息中,ICMP路由广告的各域要求遵守下面附加的规范:
    -  链路层各域(Link-Layer Fields)
          Destination Address
                  单播代理广告的链路层目的地址必须与提示该广告的代理请求的链路
层源地址相同。
    -  IP各域(IP Fields)
          TTL      所有代理广告的TTL必须设置为1。
          Destination Address
                  如ICMP Router Discovery中定义, 代理广告的目的IP地址必须为:
“该链路上所有系统”的多播地址(224.0.0.1,参考文献[5]),或者“受
限广播地址”(255。255。255。255)。不能使用〈prefix>.<-1>形式的
指向子网的(subnet-directed)广播地址,因为移动节点一般不知道外
地网络的前缀。
    -  ICMP Fields
          Code     代理广告的Code域按如下解释:
                    0 移动节点控制普通流量――也就是说,它作为(不一定与移动节点
有关的)IP数据报的路由器 。
                   16 移动代理不路由普通流量。但是所有的外地代理必须(最低限度地)
把从已注册移动节点收到的数据报转发至一个缺省路由器(见4。2。
2)。
          Lifetime
                   广告在不发送更多广告时保持有效的最长时间。
          Router Address(es)
                   见2.3.1关于代理广告中可能出现的地址的讨论。
          Num Addrs
                    消息中广告的Router Addresses的个数。注意在代理广告中,ICMP
路由广告部分指定的路由器地址数可为0。详情见2.3.1。                 
    如果定时性地发送,代理广告指定发送的时间间隔应该为ICMP头部中给出的
advertisement Lifetime的1/3。这允许移动节点在连续丢失三个广告后才从它的有效代理
表中删除一个代理。每个广告的实际传输时间应该被稍微随机化(参考文献[4])以避免同步
或与其他代理随后发送的代理广告产生冲突(或其他路由器发送的Router Advertisement)。
注意该域与下面定义的移动代理广告的“Registration Lifetime”域没有任何联系。
2.1.1移动代理广告扩展( Mobility Agent Advertisement Extension)
    移动代理广告扩展跟在ICMP路由广告域的后面。使用它来表明ICMP路由广告消息也是
移动代理发送的代理广告。移动代理广告扩展定义如下:  
0
1
2
3
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
       Type
     Length
       Sequence  Number
     Registration  Lifetime
R
B
H
F
M
G
V
     reserved

                     Zero or more Care-of Address
             
      Type     16
      Length   (6 + 4*N), N是被广告的转交地址数。
      Sequence Number
               代理被初始化以来发送的代理广告消息的数量(见2。3。2)。
      Registration Lifetime
              代理愿意接受Registration Request的最长时间(以秒为单位)。0xffff 意
味着无穷大。该域与代理广告中的ICMP路由广告部分的“Lifetime”域无关。
      R         要求注册。要求向外地代理(或该链路上的另一个外地代理)注册而不是
使用联合转交地址。
      B        忙。外地代理将不接受其他移动节点的注册。
H        家乡代理。该代理作为发送该代理广告消息的链路的家乡代理而提供服务。  
F        外地代理。该代理作为发送该代理广告消息的链路的外地代理而提供服务。
      M        最小封装。该代理接收通过隧道传送的使用最小封装的数据报。(参考文献
[15])。
      G         GRE封装。该代理接收通过隧道传送的使用GRE封装的数据报(参考文献
[8])。
      V        Van Jacobson头部压缩。该代理支持该链路上已注册移动节点的Van 
Jacobson头部压缩(参考文献[10])。
      reserved
               以0发送;接收时被忽略。
      Care-of Address(es)
               该外地代理提供的外地代理转交地址。Agent Advertisement在设置“F”
位时必须至少包含一个转交地址。出现的转交地址的个数取决于扩展中的
Length域。
  
移动节点的家乡代理必须时刻准备着为移动节点提供服务。外地代理有时可能太忙而不
能为其他移动节点服务;即使这样,它必须继续发送代理广告,以便已经向其注册的移动节
点知道它们没有超出外地代理的范围以及外地代理没有出现故障。外地代理可以通过在其代
理广告中设置“B”位来暗示它“太忙”,不允许新的移动节点向其注册。如果没有设置“F”
位,则在发送的代理广告消息中不允许设置“B”位,则代理广告消息不能设置“B”位。代
理广告中必须至少设置“F”为和“H”位之一。

   当外地代理要求使用联合转交地址的移动节点注册时,它把“R”位设置为1。由于该位
仅应用于外地代理,所以如果没有设置“F”位为1,则代理不能设置“R”位为1。








2.1.2. Prefix-Lengths Extension
   Prefix-Lengths Extension可以跟在Mobility Agent  Advertisement Extension后面。
它被用来表明代理广告ICMP Rounter Advertisement部分所列出的路由器地址的网络前缀的
比特数。注意给出的前缀长度不适用于Mobility Agent Advertisement Extension 所列出
的转交地址。Prefix-Lengths Extension定义如下:

0
1
2
3
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
        Type
      Length
  Prefix Length
     … … 
  
Type     19 (Prefix-Lengths Extension)

Length   N, 代理广告中ICMP Router Advertisement 部分Num Addrs域的值。

      Prefix Length(s)
                前几个比特数,定义了该消息中ICMP Router Advertisement部分列出的
相应路由器地址的网络号。每一个路由器地址的前缀长度编码为一个字节,
按消息中ICMP Router Advertisement部分路由器地址排列的顺序。 

    移动节点可以利用前缀长度扩展来确定自己是否已经移动,方法见2.2.4。使用该扩展
的实现细节请参见附录E。

2.1.3. One-byte Padding Extension
  某些IP协议的实现坚持要求把ICMP消息填充使其为偶数个字节。如果代理广告的ICMP
长度为奇数,可以包含该扩展以使ICMP长度为偶数。注意该扩展并不作为代理广告各个域
字(word-)对齐或长整数(long-)对齐的通用方法。代理广告不应该包含多于一个的One-byte 
Padding  Extension,并且如果出现,该扩展应该在代理广告中最后一个出现。
注意与移动IP的其他扩展不同,One-byte Padding 扩展编码为一个单独的字节,既没
有“Length域也没有“Data”域。One-byte Padding扩展定义如下:

0
1
2
3
4
5
6
7
      Type
 
      Type 0 (One-byte Padding Extension)
2.2. Agent Solicitation(代理请求)
     代理请求与ICMP路由请求相同,只是IP TTL域 必须设置为1。

2.3. 外地代理与家乡代理方面的考虑
   不能被链路层协议发现的移动代理必须发送代理广告。能够被链路层协议发现的代理也
应该实现代理广告。但是广告不需要发送,除非站点的策略要求(必须)向代理注册时(即
当设置“R ”位时),或者作为某个代理请求的响应时才发送。所有的移动代理均应该对代
理请求做出响应。

   代理广告和代理请求使用与ICMP路由发现消息(参考文献[4])相同的过程,缺省值和常
数,但是下面除外:

    ――移动代理必须限制其发送广播或多播代理广告的频率;建议的最大速率为一秒钟一
次。以及
    ――收到路由请求的移动代理不允许要求IP源地址为其相邻路由器的地址(即在该路
由器地址相对应的子网掩码之下在接收界面与路由器自己的一个地址匹配)。
   ―― 移动代理可以配置为仅在响应代理请求消息时才发送代理广告。

如果家乡网络不是一个虚拟网络,那么移动节点的家乡代理应该位于由移动节点家乡地
址标识的链路上,并且家乡代理在该链路上发送的代理广告消息必须设置“H”位。通过这种
方法,位于自己家乡网络上的移动节点可以确定它们真正的“身在家乡”。由家乡代理在其他
可能连接的链路上(如果它作为不止一条链路的移动代理)发送的代理广告,不允许设置“H”
位,除非家乡代理也作为该条链路的(其他移动节点的)家乡代理。

如果家乡网络是一个虚拟网络,家乡网络在家乡代理自身之外没有任何物理实体。在这
种情况下没有实际的网络链路供家乡代理发送代理广告消息。以该网络为家乡网络的移动节
点总是被视为“远离家乡”。

   在某个特定的子网上,要么所有的移动代理必须包含Prefix-Lengths扩展,要么所有移
动代理不允许包含Prefix-Lengths扩展。等价地,禁止一个给定子网上某些代理包含该扩
展而其它代理不包含该扩展。否则,为移动节点设计的移动检测算法之一将不能正常运行(见
2.4.2)。
2.3.1. 被广告的Router Addresses
    代理广告的ICMP路由器广告部分可以包含一个或多个路由器地址。这样,代理可以在
广告中包含一个它自己的地址。外地代理可以通过把优先级(preference)设置为一个较低
的值,并且在广告中包含另一个路由器地址(带一个相对更高的优先级),从而阻止
(discourage)把该地址作为缺省路由器。不过,外地代理必须为接收到的来自注册移动节
点的数据报提供路由(见4.2.2)。
2.3.2. 序列号及翻转控制
    代理广告中的序列号范围从0到0xffff。在系统引导后,代理必须使用0作为其第一个
广告的序列号。随后每个广告序列号必须依次增1,但序列号0xffff后必须跟序列号256。
使用这种方法,移动节点能区分由于重起而导致的序列号的减小,以及在序列号达到0xffff
后翻转所导致的序列号的减小。
2.4.移动节点考虑
   每一个移动节点必须实现代理请求(Agent Solicitation)。请求应该仅在没有代理广告
的时候发送或者当转交地址不能通过链路层协议或其他方式确定时发送。移动节点的代理请
求使用与为ICMP路由器请求消息(参考文献[4])相同的过程,缺省值以及常数,不同的是
移动节点可以频繁于每三秒钟一次发送请求,以及当前没有连接到任何外地代理的移动节点
发送代理请求可以多于MAX_SOLICITATIONS次。

移动节点发送请求的速率必须由移动节点加以限制。在寻找代理时,移动节点可以以最
大速率(每秒钟一次)发送三个初始请求。此后,发送请求的速率必须降低以减小本地链路
的开销。随后的请求必须使用2的指数级回退机制(binary exponential backoff  
mechanism),把两个连续的请求之间的时间间隔加倍,直到达到一个最大间隔。最大间隔应
该根据移动节点发送请求的媒体的特性而适当选择。请求之间的最大间隔应该最小为一分
钟。

当仍在寻找代理时,移动节点不允许提高其发送请求的速(频)率,除非它收到暗示表
明移动节点已经移到新的链路。在向代理的注册成功后,移动节点在下次寻找新代理注册时
也应该提高请求发送的速(频)率。提高后的请求频率可以回复到最大频率,但随后必须按
上面的方法降低发送频率。所有情况下,所推荐的请求发送间隔只是名义上的值(nominal 
values )。移动节点必须与ICMP路由器发现中指定的一样在这些名义值上下对它们发送请
求的时间进行随机化。

  移动节点必须处理它所收到的代理广告。移动节点可以通过检查被广告的路由器地址的
个数和IP Total Length域来区分代理广告消息和ICMP路由器广告消息的其他应用。当IP
总长度表明ICMP消息比被广告地址数所需要的长度长时,多余的数据解释为一个或多个扩
展。扩展的出现标识该广告是一个代理广告。
当使用多种代理发现方法时,移动节点应该首先尝试在它们的广告中包括移动代理广告
扩展来向代理注册,并使用能被其它方法发现的优先权。该优先权把该注册被识别的可能性
最大化,从而使注册的尝试次数最小化。



2.4.1. 要求注册
    当移动节点收到设置了“R”位的代理广告时,移动节点应该通过外地代理进行注册,
即使移动节点可以获得联合转交地址。该特征目的是允许站点实施要求交换认证信息的访问
策略(例如计费)。
2.4.2.移动检测 
   有两种机制用于检测移动节点已经从一个子网移动到另一个子网。也可以使用其它的机
制。当移动节点检测到自己已经移动(到另一个子网),它应该向外地网络注册其转交地址
(见3)。但是,移动节点注册不允许频繁于平均每秒钟一次,如3.6.3中所述。
2.4.2.1. 算法1
   第一种方法基于代理广告中ICMP路由广告部分的Lifetime域。移动节点应该记录收到
的所有代理广告的Lifetime,直到Lifetime到时。如果移动节点在某个Lifetime内没有收
到另一个广告,它应该假设已经失去了与那个代理的联系 。如果在Lifetime尚未到时就收
到了另一个代理的代理广告,移动节点可以立即尝试向该代理注册。否则移动节点应该尝试
找到一个新的代理并向其注册。
2.4.2.2.算法2
   第二种方法使用网络前缀。在某些情况下移动节点可以使用Prefix-Lengths扩展来确定
新收到的代理广告是否来自与节点当前的转交地址同一个子网。如果前缀不同,移动节点可
以假设它已经移动(到另一个网络)。如果移动节点当前正在使用一个外地代理转交地址,
移动节点不应该使用这种移动检测方法,除非当前代理和新的代理在它们各自的代理广告中
均包括Prefix-Lengths扩展;如果该扩展在一个或两者的广告中缺失,则不应该使用这种
移动检测方法。同样,如果移动节点正在使用联合转交地址,它不应该使用这种移动检测方
法,除非新代理在其广告中包括了Prefix-Lengths Extension并且移动节点知道其当前联合
转交地址的网络前缀。在其当前注册时间到时,如果这种方法表明节点已经移动,,移动节点
可以选择向发送新的带不同网络前缀的代理广告的外地代理注册,而不是重新向其当前转交
地址注册。 新注册基于的代理广告不能已经过期(根据其Lifetime域)。
2.4.3. 返回家乡
    当移动节点收到来自家乡代理的代理广告时,则它已经回到家乡网络。这样,它应该解
除向其家乡代理的注册(见 3)。在尝试解除注册之前,移动节点应该为其家乡网络当配置好
路由表(见4.2.1)。另外,如果家乡网络正在使用ARP(参考文献[16]),移动节点必须遵循
4.6中描述的关于ARP,代理ARP以及免费ARP的过程。
2.4.4. 序列号和翻转控制
  如果移动节点检测到来自其注册的外地代理的两个连续序列号的代理广告,第二个比第
一个小并介于0到255间时,移动节点应该重新注册。如果第二个比第一个小但是大于等于
256,移动节点应该假设序列号已经超过其最大值(oxffff)而翻转(roll over),不需要
重新注册(见2.3)。
3. 注册(Registration)
    移动IP的注册提供了一种灵活机制使移动节点把它们当前的可达性信息传送到其家乡
代理。移动节点使用的方法是:
    ――在访问外地网络时请求转发服务,
    ――把它们当前的转交地址告知家乡代理,
    ――时间到,重新注册,和/或
    ――在回到家乡时解除注册。
   
    注册消息在移动节点、(可选)外地代理和家乡代理之间交换信息。注册过程创建或修改
家乡代理的移动绑定信息,以及特定Lifetime家乡地址和转交地址的关联(即更新移动节点
的转交地址) 。
   其它几种能力(可选)在注册过程中可用,这些过程使移动节点能够:
    ――维护多个同时的注册,使每个数据报的拷贝通过隧道到达处于活动状态的转交地址
    ――解除特定转交地址的注册,保留其它移动绑定信息
    ――发现家乡代理的地址,如果移动节点没有配置家乡代理的地址。
3.1. 注册总述
   移动IP定义了两种不同的注册过程,一种是外地代理把注册请求中继到家乡代理,一种
直接向家乡代理注册。下面的规则决定特定环境下使用哪一种注册过程:

    ――如果移动节点正在注册一个外地代理转交地址,移动节点必须通过外地代理注册
    ――如果移动节点正使用联合转交地址,并且收到它正在使用的转交地址的链路上的外
地代理发送的代理广告 ,并且代理广告消息设置了“R”位,则移动节点应该通过
这个外地代理注册,或者通过该链路上的另一个外地代理。
    ――如果移动节点正在使用联合转交地址,移动节点必须直接向其家乡代理注册。
    ――如果移动节点已经返回到其家乡网络并向其家乡代理注册(解除注册),移动节点
必须直接向其家乡代理注册。

两种注册过程均涉及到交换注册请求和注册应答消息(见3.3和 3.4)。当通过外地代理
注册时,注册过程要求下面的四条消息:

      a)移动节点向事先假定的外地代理发送注册请求,注册过程开始。
      b)外地代理处理该注册请求并把它中继到家乡代理。
      c)家乡代理发送一个注册应答给外地代理以接受或拒绝该请求。
      d)外地代理处理该注册应答然后把它中继到移动节点,把请求的处理结果告知移动节。



   当移动节点直接向家乡代理注册时,注册过程仅需两条消息:

           a)  移动节点向家乡代理发送注册请求。
b)	家乡代理给移动节点发送注册应答,同意或拒绝该请求。

3.3和3.4定义的注册消息使用用户数据报协议(UDP)(参考文献[17])。头部中应该包
含一个非0的UDP检验和,并且在接收时必须由接收方进行检验 。
3.2. 认证 (Authentication)
   每一个移动节点、外地代理和家乡代理必须能够支持移动实体的移动安全联合,由它们
的SPI和IP地址索引。对于移动节点来说,IP地址必须是其家乡地址。支持认证算法的要
求见5.1。在移动节点和其家乡代理之间的注册消息必须使用Mobile-Home认证扩展进行认
证(见3.5.2)。该扩展紧跟在所有除了可能在移动节点计算认证后加到消息中的外地代理自
定义扩展的非认证扩展之后。
 3.3. 注册请求(Registration Request)
    移动节点使用一个注册请求消息来向其家乡代理注册以使其家乡代理能够创建或修改移
动节点的移动绑定信息(也就是使用一个新的lifetime)。该请求可通过移动节点通过其注册
的外地代理中继到家乡代理,在移动节点正在注册联合转交地址时也可以直接送到家乡代理。
   IP fields:
      源地址典型的为消息发送所通过的接口的地址。
      目的地址典型的为外地代理或家乡代理的地址。
    详情见3.6.1.1和3.7.2.2 。
   UDP fields:
      源端口        可变
      目的端口       434
   移动IP遵循的UDP头部各域如下所示 :
0
1
2
3
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
       Type
S
B
D
M
G
V
rsw
               Lifetime
                                       Home Address
                                       Home Agent
                                        Care-of Address
                                        Identification
  Extensions … …

      Type     1 (Registration Request)
      S         同时的绑定信息。如果设置“S”位,移动节点要求家乡代理保留其以前
的绑定信息,如3.6.1.2所述。
      B         广播数据报。如果设置“B”位,移动节点要求家乡代理把在家乡网络上
收到的广播数据报通过隧道传送给它,如4。3所述。
      D         由移动节点进行解封装。如果设置“D”位,移动节点将自己解封装发送
到转交地址的数据报。也就是说,移动节点正在使用联合转交地址。
      M        最小封装。如果设置“M”位,移动节点要求家乡代理对通过隧道的数据报
采用最小封装[15]。
      G        GRE封装。如果设置“G”位,移动节点要求家乡代理对通过隧道发送到移
动节点的数据报使用GRE封装。
      V      移动节点要求其移动代理在其与移动节点的链路上使用Van               
Jacobson头部压缩[10]。
      rsv       保留位;按0发送
      Lifetime
               在注册到时之前剩下的秒数。0表示请求解除注册,0xffff表示无穷大。
      Home Address
               移动节点的IP地址。
      Home Agent
               移动节点家乡代理的IP地址。
      Care-of Address
               隧道末端的IP地址。
      Identification
              64位数,由移动节点构建,用于匹配注册请求和注册应答,以及避免使用注
册消息进行重放攻击。见5。4和5。6。
      Extensions
                注册请求的固定部分之后跟一个或多个列在3。5中的扩展。所有注册请求
必须包含Mobile-Home 认证扩展。如果出现扩展,则各种扩展必须遵循的
顺序见3.6.1.3。
3.4.注册应答
   移动代理向发送注册请求的移动节点返回一个注册应答消息(见3.3)。如果移动节点向外
地代理请求服务,该外地代理将收到来自家乡代理的应答,然后把它中继到移动节点。应答
消息包含了必要的代码以告知移动节点其注册请求的状态,以及家乡代理所核准的生存期, 
该生存期可能比原先请求的生存期小。外地代理不允许增加移动节点在注册请求中选择的
Lifetime, 因为Lifetime由Mobile-Home认证扩展覆盖,不能被外地代理正确(重新)计
算。家乡代理不能增加移动节点在注册请求中选定的Lifetime,因为这样做可能会超出外地
代理允许的最大生存期。如果收到的注册应答中Lifetime大于注册请求中的Lifetime,则
必须使用注册请求中的Lifetime。当收到注册应答中的Lifetime 小于注册请求中的
Lifetime,必须使用注册应答中的Lifetime。
   IP fields:
      Source Address       典型为从代理正在应答的注册请求的目的地址拷贝而得,见 
3.7.2.3和3.8.3.1的详细描述。
      Destination Address   从代理正在应答的注册请求的源地址拷贝而得。
   UDP fields:
      Source Port           可变
Destination Port      从对应的注册请求的源端口拷贝而得(见3。7。1)。


UDP头部后跟移动IP各域,如下所示:

0
1
2
3
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
         Type
     Code
           Lifetime
                                     Home Address
                                     Home  Agent
                                     
Identification
Extentions … … 

      Type     3 (Registration Reply)
      Code     表明注册请求结果的值。当前定义的Code值如稍后所示。
      Lifetime
                 如果Code表明注册被接受,Lifetime域设置为认为注册到期前剩下的秒数。
0表明移动节点已经被解除注册。值0xffff表明无穷大。如果Code域表明注
册被拒绝,该域没有定义,在接收时必须被忽略掉。
      Home Address
               移动节点的IP地址。
      Home Agent
               移动节点家乡代理的IP地址。
      Identification
                   64位值,用于匹配注册请求和注册应答以及避免使用注册消息进行重
放攻击。该值基于注册请求中的Identification域,以及移动节点和家乡
代理间安全上下文所使用的重放保护风格(由它们之间的安全联合以及
Mobile-Home认证扩展中的SPI定义)。见5。4 and 5。6。
      Extensions
注册应答的固定部分之后跟有一个或多个3.5中列出的扩展。所有家乡代
理返回的注册应答中必须包含Mobile-Home 认证扩展 。扩展放置的规则见
3.7.2.2和3.8.3.3。 

   在Code域使用下面定义的值。
   注册成功Registration successful:
        0   注册被接受
        1   注册被接受,但不支持并行移动绑定
   注册被外地代理拒绝Registration denied by the foreign agent:
       64  原因不明
       65  管理上禁止administratively prohibited
       66  资源不足
       67  移动节点认证失败
       68  家乡代理认证失败
       69  请求的Lifetime太长
       70  Request格式不对
       71  Reply格式不对
       72  请求的封装方法不可用
       73  请求的Van Jacobson压缩不可用
       80  家乡网络无法到达(收到ICMP错误)
       81  家乡代理主机不可达(收到ICMP错误)
       82  家乡代理端口不可达(收到ICMP错误)
       88  家乡代理不可达(收到其它ICMP错误)
   注册被家乡代理拒绝Registration denied by the home agent:
      128 原因不明
      129 管理禁止
      130 资源不足
      131 移动节点认证失败
      132 外地代理认证失败
      133 注册中的Identification不匹配
      134 Request格式不对
      135 并行移动绑定太多
      136 家乡代理地址不可知
     最新的Code域的值定义在最新的“Assigned Numbers”[20]中。
3.5.注册扩展
3.5.1. 计算认证扩展值
每一个认证扩展计算的Authenticator值必须保护注册消息中的下述域:

    ――UDP净载数据(即注册请求或注册应答数据),
    ――完整的之前所有的扩展,以及
――该扩展的Type和Length。

      缺省的认证算法使用keyed-MD5(参考文献[21])以“prefix+suffix”模式计算出该
注册消息的128位“消息摘要”。缺省的authenticator是下列字节流计算所得的128位MD5
检验和:
   ――由移动安全联合以及认证扩展中SPI定义的共享秘密,后跟
   ――注册消息中受保护的域,依上面定义的顺序,后跟
   ――再一次跟共享秘密

     注意在计算缺省Authenticator值时,并不包括Authenticator域本身和UDP头部。
消息认证Code要求的支持见5.1,这些Code用于各种认证扩展中 。

      任何认证扩展中的安全参数索引(SPI)定义了用来计算Authenticator域的安全上下
文,SPI必须由接收者用于检查该Authenticator值。特别是,SPI选择了认证算法和认证
模式(见5.1)以及用来计算Authenticator的秘密(共享秘密,或者合适的公用/私用密钥对)。
为确保移动IP协议的不同实现能够互用,实现必须能够把SPI的值与它使用的任何认证算
法和认证模式建立关联。另外,移动IP的所有实现必须实现缺省的认证算法(keyed-MD5)和
认证模式(“prefix+suffix”)。
3.5.2. Mobile-Home认证扩展
所有注册请求和注册应答中必须出现且仅出现一个Mobile-Home认证扩展,
Mobile-Home认证扩展用于消除由于不受控制的远程重定向传播所引起的问题[2]。
该扩展的位置标志着认证数据的结束。

0
1
2
3
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
        Type
        Length
           SPI …
              … SPI(continued) 
          Authenticator … 

      Type            32
      Length          4+Authenticator的字节数。
      SPI              安全参数索引(4个字节)。一个晦涩的(opaque)标识符(见1。
6)。                     
      Authenticator   长度可变(见3。5。1。)
3.5.3. Mobile-Foreign认证扩展  
   在移动节点和外地代理之间存在移动安全联合时,注册请求和注册应答可以包含该扩展。
消息认证Code要求的支持见5.1。

0
1
2
3
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
        Type
        Length
           SPI …
              … SPI(continued) 
          Authenticator … 
 
      Type            33
      Length          4+Authenticator字节数。
      SPI              安全参数索引(4字节)。一个晦涩的标识符(见1。6)。
      Authenticator   长度可变(见3.5.1)
3.5.4. Foreign-Home认证扩展
   当外地代理和家乡代理之间存在移动安全联合时,注册请求和注册应答可以包含该扩展 
支持消息认证的代码方面的要求见5.1 。




   
0
1
2
3
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
        Type
        Length
           SPI …
              … SPI(continued) 
          Authenticator … 

      Type            34
      Length          4+Authenticator的字节数。
      SPI              安全参数索引(4字节)。一个晦涩的标识符(见1。6)。
      Authenticator   长度可变(见3.5.1)
3.6移动节点方面的考虑 Mobile Node Considerations
    移动节点必须配置其家乡地址,网络掩码,以及每个家乡代理的一个移动安全联合。另
外,移动节点可以配置其一个或者多个IP地址;否则移动节点可以使用3.6.1.2中描述的
过程发现一个家乡代理。
   对每一个未决的注册,移动节点维护了下面的信息:
    ――注册请求发送到的外地代理的链路层地址,如果可用 if applicable,
    ――注册请求的目的IP地址,
    ――注册所使用的转交地址,
    ――请求所发送的Identification的值,
    ――最初请求的Lifetime,以及
    ――未决注册剩余的Lifetime。
   
移动节点在检测到其网络连接发生改变时应该初始化注册。检测方法见 2.4.2。当远离家乡
时,移动节点的注册请求允许其家乡代理创建或修改(该节点的)移动绑定信息。当在家乡
时,移动节点的注册请求/解除注册请求允许其家乡代理删除(该节点)以前的移动绑定信息。
移动节点在家乡时,其操作将不支持移动功能。

在其它条件下移动节点应该向外地代理(重新)注册,比如当移动节点检测到外地代理
重新启动(见2.4.4),以及当前注册的Lifetime即将到时。

如果没有链路层暗示接入点发生改变,而且当前注册尚未到时并且还能收到当前注册的
代理发送的代理广告,移动节点不应该因为收到新代理发送的代理广告而尝试新的注册。如
果没有链路层的指示,移动节点注册的频率不允许频繁于每秒钟一次。

在传输层协议表明重发过多(超过设定次数―译注)时,移动节点可以向另一个代理注
册。移动节点不能因为收到来自正给其提供服务的外地代理的ICMP Redirect而向新的外地
代理注册。在这些限制之内移动节点可以在任意时刻再次注册。
附录D给出了典型注册中注册消息中如何建立其中各域。




3.6.1.发送注册请求
   下面的章节移动节点必须在注册请求消息中给出的域的值的细节。
3.6.1.1.  IP Fields
   本节提供了移动节点给出注册请求IP头部各域的值所遵循的规则:
   IP Source Address:
    ――当向外地代理网络联合转交地址注册时,源IP必须是该转交地址。
    ――在所有其它情况下,源IP地址必须是移动节点的家乡地址。
   IP Destination Address:
    ――当移动节点通过某种不提供代理的IP地址的方式(例如链路层)找到了其正在注册
的代理,即移动节点不知道代理的IP地址,IP目的地址必须使用“所有移动代理”
多播地址(224.0.0.11)。在这种情况下,移动节点必须使用代理的链路层单播地址
一边能报数据报传送到正确的代理。       
    ――当向外地代理注册时,必须使用对应代理广告的源IP地址。另外在传送注册请求
消息时移动节点必须使用从代理广告(正是从该广告中移动节点得到了代理的IP
地址)中的源链路层地址作为目的链路层地址。
    ――当移动节点直接向其家乡代理注册并知道家乡代理的(单播)IP地址,目的地址必
须设置为该地址。
    ――如果移动节点直接向其家乡代理注册但不知道家乡代理的IP地址,它可以使用动态
家乡代理地址决定自动的确定其家乡代理的IP地址(见3。6。1。2)。在这种情况
下,IP目的地址设为家乡网络的子网导向广播地址(subnet-directed broadcast 
address)。如果移动节点正在通过外地代理来注册,这个地址不能用作目的IP地
址,但这种情况下它可以用作注册请求中的Home Agent地址。
   IP Time to Live:
    ――如果IP目的地址设为“所有移动代理”多播地址,IP TTL域必须设为1。否则应该
选择一个与标准IP实现(参考文献[19])相一致的合适的值。
3.6.1.2  注册请求各域
    下面章节提供一种特定的规则供移动节点填充注册请求中固定部分各域。
移动节点可以设置“S”位以请求家乡代理保留以前的移动绑定信息。否则,家乡代理删
除以前的任何移动绑定信息并用注册请求中指定的新的绑定信息来取代。当至少使用一个无
线网络接口的移动节点在多于一个外地代理的无线传输范围内移动时,多个并行的移动绑定
可能有用。IP明确允许数据报的复制。在家乡代理允许同时绑定时,它会把到达的每一个数
据报的一个拷贝通过隧道送到每个转交地址,移动节点将收到数据报的多个拷贝。

      如果移动节点正在注册一个联合转交地址,它应该设置“D”位。否则,不能设置“D”
位。

移动节点可以设置“B”位以请求家乡代理把从家乡网络上收到的广播数据报的一份拷
贝转发给它。家乡代理转发广播数据报的方法取决于移动节点注册的转交地址的类型,由
注册请求中的“D”决定:

    ――如果设置了“D”位,那么移动节点暗示它将自己对通过隧道传送到该转交地址的数
据报进行拆封(移动节点使用联合转交地址)。在这种情况下,为把这样一个广播数
据报转发到移动节点,家乡代理必须把它通过隧道传送到该转交地址。移动节点对
它收到的数据报进行拆封,与它处理通过隧道直接到达它的数据报一样。

――如果没有设置“D”位,那么移动节点暗示它正使用外地代理转交地址,外地代理在
把数据报转发到移动节点之前将对之进行拆封。这种情况下,为了把这样一个广播
数据报转发到移动节点,家乡代理必须首先把广播数据报封装在一个单播数据报中
(目的地址为移动节点的家乡地址),然后必须把该单播数据报通过隧道传送到移
动节点的转交地址。

在由外地代理拆封时,内层数据报将是一个单播IP数据报(地址为移动节点),它向外
地代理表明封装后的广播数据报预期的目的地,将与处理其它通过隧道到达并被送往移动节
点的数据报一样使用相同方式把该数据报传送到移动节点。外地代理不能对封装后的广播数
据报进行拆封,也不允许通过本地网络广播把它传送到移动节点。移动节点因而必须自己对
封装后的广播数据报进行拆封,这种情况下,移动节点不允许在注册请求中设置“B”位,
除非它能对这些数据报进行拆封。

移动节点可以通过设置“M”和/或“G”位请求可选形式的封装,但仅在移动节点拆封自
己的数据报时(使用联合转交地址),或者在收到的代理广告的扩展部分设置相应位以表明外
部代理支持这些形式的封装时才可设置 。否则移动节点不能设置这些位。

   Lifetime域按如下选择:
    ――如果移动节点正在向外地代理注册,Lifetime不应该超过来自外地代理的代理广告
的注册生存期。当得知转交地址的方法不包含Lifetime,可以使用ICMP路由广告
的缺省Lifetime(1800 seconds)。
    ――移动节点可以请求家乡代理删除特定的移动绑定,方法是发送一个包含该绑定的转
交地址,并且Lifetime域为0的注册请求(见3。8。2)。
――同样,在移动节点解除所有转交地址的注册时Lifetime为0,例如返回家乡时。
   
如果移动节点知道家乡代理的地址,Home Agent域必须设置为家乡代理地址。否则移动
节点可以使用动态家乡代理地址解析来确定其家乡代理。在这种情况下,移动节点必须把
Home Agent域设置为移动节点家乡网络的指向子网广播地址(subnet-directed broadcast 
address)。如果家乡代理收到带广播目的地址的注册请求,它必须拒绝移动节点的注册,并
且应该返回一条“拒绝”注册应答,其中带有其单播IP地址供移动节点以后尝试。

      Care-of Address域必须设置为移动节点希望注册/解除注册的特定的转交地址。在移
动节点希望对所有转交地址的解除注册的特殊情况中,它必须把该域设置为它的家乡地址。

     移动节点按照它使用的与其家乡代理的重放保护风格来选用Identification域。这是
移动节点和其家乡代理之间共享的移动安全联合的一部分。移动节点计算Identification
域的方法见5.6。
3.6.1.3  扩展
   本节描述移动节点附加到注册请求的必选和可选扩展的顺序。
   必须遵循下面的顺序:
      a) IP头,后跟UDP头,后跟注册请求的固定长度部分,后跟
      b)如果有,任何由家乡代理使用的非认证扩展(可以为外地代理使用也可以不被外地代
理使用),后跟
      c) Mobile-Home认证扩展,后跟
      d) 如果有,仅由外地代理使用的非认证扩展,后跟
      e)Mobile-Foreign认证扩展,如果出现的话。

    注意(a)和(c)项必须出现在移动节点发送的每一个注册请求中。(b), (d), 和(e)
项可选。但是,(e)在移动节点和外地代理共享一个移动安全联合时必须包含。
3.6.2  接收注册应答
  注册应答由移动节点接收,作为对其注册请求的响应。注册响应通常分为3类:
    ――注册被接受,
    ――注册被外地代理拒绝,或
    ――注册被家乡代理拒绝。
   本节的其余部分描述了移动节点对这三种注册应答的处理。
3.6.2.1  有效性检查
  带有无效的非0 UDP检验和的注册应答必须被丢弃。

另外,必须对比注册应答中Identification域的低32位和发送给应答代理最新的注册
请求的Identification域的第32位,如果不匹配,必须丢弃该应答。

    同样,必须检查注册应答的authentication。就是说,移动代理必须按照应答中的Code
域对出现认证扩展进行检查。规则如下:
      a)如果移动节点和外地代理共享一个移动安全联合,注册应答中必须包含一个 
Mobile-Foreign认证扩展,移动节点必须检查该扩展中的Authenticator值。如果
没有找到任何的Mobile-Foreign认证扩展,或者找到多于一个的Mobile-Foreign
认证扩展,或者Authenticator无效,移动节点必须丢弃该应答,并应该把该事件
记录为安全意外。
b)如果Code域表明服务被家乡代理拒绝,或者表明注册被家乡代理接受,注册应答
必须出现且仅出现一个Mobile-Home认证扩展。移动节点必须检查该扩展中的
Authenticator值。如果没有找到Mobile-Home认证扩展,或者找到不止一个的
Mobile-Home认证扩展,或者Authenticator无效,则移动节点必须丢弃该应答并
应该把该事件记录为安全意外。

   如果Code域表明认证失败,不管是在外地代理还是在家乡代理,很有可能注册应答中出
现的任意authenticators也是错误的。这种情况是可能出现,例如,移动节点和家乡代理之
间的共享秘密配置有误。移动节点应该把这样的错误记录为安全意外。
3.6.2.2  注册请求被接受
   如果Code域表明请求被接受,移动节点应该为其当前的接入点配置路由表(见4.2.1)。
   如果移动节点返回到其家乡网络而家乡网络使用ARP,移动节点必须遵循4.6中描述的关
于ARP,代理ARP和免费ARP过程。
如果移动节点已在外地网络上注册,它应该在注册Lifetime到时前重新注册,如3.6
所述,对每一个未决的注册请求,移动节点必须维护未决注册的生存期,以及该注册请求原
先的Lifetime。当移动节点收到一个有效的注册应答,移动节点必须减小由它所看到的注册
剩下的生存期,减小的量为家乡代理从原先请求的Lifetime中减去的量。该过程等价于:

移动节点在它发送的注册请求时为核准的Lifetime启动一个定时器,即使移动节点在接
收到注册应答时才知道核准的Lifetime。因为注册请求在家乡代理开始启动注册生存期定时
器(也基于核准时间)之