跳到主要内容

1. Introduction (简介)

IP版本4假设节点的IP地址唯一标识该节点连接到互联网的位置点.因此,节点必须位于其IP地址所指示的网络上,才能接收发往它的数据报;否则,发往该节点的数据报将无法投递.为了使节点能够在不失去通信能力的情况下改变其连接点,当前通常必须采用以下两种机制之一:

  • 节点必须在每次改变其连接点时更改其IP地址,或
  • 必须在互联网路由结构的大部分范围内传播主机特定路由

这两种替代方案通常都是不可接受的.第一种方案使得节点在改变位置时无法维护传输层和更高层的连接.第二种方案存在明显且严重的扩展性问题,特别是考虑到笔记本(移动)计算机销售的爆炸式增长.

互联网内部需要一种新的可扩展机制来适应节点移动性.本文档定义了这样一种机制,使节点能够在不改变其IP地址的情况下改变其连接到互联网的位置点.

本修订版Mobile IP规范与原始规范(参见[44],[14],[15],[20],[4]和[50])之间的变更详见附录F.

1.1. Protocol Requirements (协议要求)

移动节点 (Mobile Node) 必须能够在改变其链路层连接点到互联网后与其他节点通信,且无需改变其IP地址.

移动节点必须能够与未实现这些移动性功能的其他节点通信.在未充当第1.5节中引入的任何新架构实体的主机或路由器中,不需要任何协议增强.

所有用于向另一个节点更新移动节点位置的消息都必须经过认证 (Authentication),以防止远程重定向攻击.

1.2. Goals (目标)

移动节点直接连接到互联网的链路通常可能是无线链路.因此,该链路的带宽可能远低于传统有线网络,错误率也更高.此外,移动节点很可能使用电池供电,最小化功耗非常重要.因此,应最小化通过移动节点直接连接到互联网的链路发送的管理消息数量,并且这些消息的大小应尽可能保持合理的小.

1.3. Assumptions (假设)

本文档中定义的协议对IP地址分配没有施加额外的约束.也就是说,移动节点可以由拥有该机器的组织分配IP地址.

本协议假设移动节点通常不会以超过每秒一次的频率改变其连接到互联网的位置点.

本协议假设IP单播数据报是基于数据报头中的目的地址 (Destination Address) 进行路由的(而不是例如基于源地址).

1.4. Applicability (适用性)

Mobile IP旨在使节点能够从一个IP子网移动到另一个IP子网.它同样适用于同构媒介之间的移动性以及异构媒介之间的移动性.也就是说,Mobile IP既促进了节点从一个以太网段到另一个以太网段的移动,也促进了从以太网段到无线LAN的移动,只要移动节点的IP地址在这种移动后保持不变.

可以将Mobile IP视为解决"宏"移动性管理问题.它不太适合更"微"的移动性管理应用——例如,在无线收发器之间进行切换,其中每个收发器仅覆盖非常小的地理区域.只要节点移动不发生在不同IP子网的连接点之间,链路层移动性机制(即链路层切换)可能比Mobile IP提供更快的收敛和更少的开销.

1.5. New Architectural Entities (新架构实体)

Mobile IP引入了以下新的功能实体:

Mobile Node (移动节点)

主机或路由器,从一个网络或子网改变其连接点到另一个网络或子网.移动节点可以在不改变其IP地址的情况下改变其位置;它可以使用其(恒定的)IP地址在任何位置继续与其他互联网节点通信,前提是可以获得到连接点的链路层连接.

Home Agent (归属代理)

移动节点归属网络上的路由器,当移动节点离开归属地时,通过隧道 (Tunnel) 将数据报转发给移动节点,并维护移动节点的当前位置信息.

Foreign Agent (外部代理)

移动节点访问网络上的路由器,在注册时为移动节点提供路由服务.外部代理对由移动节点归属代理隧道传输的数据报进行解隧道处理并将其传递给移动节点.对于移动节点发送的数据报,外部代理可以充当已注册移动节点的默认路由器.

移动节点在归属网络上被赋予一个长期IP地址.这个归属地址 (Home Address) 的管理方式与为静止主机提供"永久"IP地址的方式相同.当远离其归属网络时,一个转交地址 (Care-of Address) 与移动节点相关联,并反映移动节点当前的连接点.移动节点使用其归属地址作为它发送的所有IP数据报的源地址,除非本文档另有描述用于某些移动性管理功能的数据报(例如,如第3.6.1.1节所述).

1.6. Terminology (术语)

本文档中的关键词 "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY" 和 "OPTIONAL" 应按照 RFC 2119 [1] 中的描述进行解释.

此外,本文档经常使用以下术语:

Authorization-Enabling Extension (授权启用扩展)

使(注册)消息对注册消息的最终接收者可接受的认证.授权启用扩展必须包含安全参数索引 (SPI, Security Parameter Index).

在本文档中,授权启用扩展的所有使用都是指使注册请求消息对归属代理可接受的认证扩展.使用本文档之外指定的其他协议结构,移动节点可能通过网络内归属代理可接受的另一个认证实体向归属代理提供其注册的认证(例如,参见RFC 2794 [2]).

Agent Advertisement (代理广告)

通过向路由器广告 (Router Advertisement) [5]消息附加特殊扩展而构造的广告消息.

Authentication (认证)

使用加密技术验证消息发起者身份的过程(适用于本规范中的所有应用).

Care-of Address (转交地址)

当移动节点远离归属地时,用于转发到移动节点的隧道终点.该协议可以使用两种不同类型的转交地址:"外部代理转交地址" (Foreign Agent Care-of Address) 是移动节点注册的外部代理的地址,"同位转交地址" (Co-located Care-of Address) 是移动节点与其自己的某个网络接口关联的外部获取的本地地址.

Correspondent Node (对应节点)

与移动节点通信的对等节点.对应节点可以是移动的或静止的.

Foreign Network (外部网络)

除移动节点归属网络之外的任何网络.

Gratuitous ARP (无故ARP)

节点发送的地址解析协议 (ARP, Address Resolution Protocol) 数据包,目的是自发地使其他节点更新其ARP缓存中的条目[45].参见第4.6节.

Home Address (归属地址)

分配给移动节点并长期使用的IP地址.无论节点连接到互联网的位置如何,它都保持不变.

Home Network (归属网络)

具有与移动节点归属地址匹配的网络前缀的网络(可能是虚拟的).请注意,标准IP路由机制将把发往移动节点归属地址的数据报传递到移动节点的归属网络.

Link (链路)

节点可以在链路层进行通信的设施或介质.链路位于网络层之下.

Link-Layer Address (链路层地址)

用于标识某些物理链路上通信端点的地址.通常,链路层地址是接口的媒体访问控制 (MAC, Media Access Control) 地址.

Mobility Agent (移动代理)

归属代理或外部代理.

Mobility Binding (移动绑定)

归属地址与转交地址的关联,以及该关联的剩余生存时间 (Lifetime).

Mobility Security Association (移动安全关联)

一对节点之间的安全上下文集合,可应用于它们之间交换的Mobile IP协议消息.每个上下文指示一个认证算法和模式(第5.1节),一个密钥(共享密钥,或适当的公钥/私钥对),以及正在使用的重放保护样式(第5.7节).

Node (节点)

主机或路由器.

Nonce (一次性值)

随机选择的值,与先前的选择不同,插入到消息中以防止重放攻击.

Security Parameter Index (SPI, 安全参数索引)

在一对节点之间标识安全上下文的索引,在移动安全关联中可用的上下文中.SPI值0到255是保留的,不得在任何移动安全关联中使用.

Tunnel (隧道)

数据报在封装时所遵循的路径.模型是,在封装时,数据报被路由到知识渊博的解封装代理,该代理对数据报进行解封装,然后正确地将其传递到其最终目的地.

Virtual Network (虚拟网络)

除了路由器(在另一个网络上具有物理网络接口)之外没有物理实例的网络.路由器(例如,归属代理)通常使用传统路由协议广告到虚拟网络的可达性.

Visited Network (访问网络)

除移动节点归属网络之外的,移动节点当前连接的网络.

Visitor List (访问者列表)

访问外部代理的移动节点列表.

1.7. Protocol Overview (协议概述)

为Mobile IP定义了以下支持服务:

Agent Discovery (代理发现)

归属代理和外部代理可以在它们提供服务的每个链路上广告其可用性.新到达的移动节点可以在链路上发送请求 (Solicitation),以了解是否存在任何潜在的代理.

Registration (注册)

当移动节点远离归属地时,它向其归属代理注册其转交地址.根据其连接方法,移动节点将直接向其归属代理注册,或通过将注册转发到归属代理的外部代理进行注册.

Silently Discard (静默丢弃)

实现丢弃数据报而不进行进一步处理,并且不向发送者指示错误.实现应该提供记录错误的能力,包括被丢弃数据报的内容,并且应该在统计计数器中记录该事件.

以下步骤提供了Mobile IP协议操作的粗略概述:

  • 移动代理(即外部代理和归属代理)通过代理广告消息 (Agent Advertisement Messages) 广告其存在(第2节).移动节点可以通过代理请求消息 (Agent Solicitation Message) 可选地从任何本地连接的移动代理请求代理广告消息.

  • 移动节点接收这些代理广告并确定它是在其归属网络还是在外部网络上.

  • 当移动节点检测到它位于其归属网络上时,它在没有移动性服务的情况下操作.如果从在其他地方注册返回到其归属网络,移动节点通过与其归属代理交换注册请求 (Registration Request) 和注册应答 (Registration Reply) 消息来向其归属代理注销.

  • 当移动节点检测到它已移动到外部网络时,它在外部网络上获得转交地址.转交地址可以从外部代理的广告中确定(外部代理转交地址),或通过某些外部分配机制(如DHCP [34])确定(同位转交地址).

  • 远离归属地操作的移动节点然后通过与归属代理交换注册请求和注册应答消息(可能通过外部代理)向其归属代理注册其新的转交地址(第3节).

  • 发往移动节点归属地址的数据报将由Internet路由机制拦截并传递到移动节点的归属网络.

  • 在归属网络上,移动节点的归属代理拦截这些数据报,并将它们隧道传输到移动节点的转交地址.

  • 在转交地址处,数据报被解封装并传递到移动节点.

在反方向上,发往对应节点的数据报通常由移动节点直接传递,使用标准IP路由机制,而不一定通过归属代理(第4.2.1节).

1.8. Message Format and Protocol Extensibility (消息格式和协议可扩展性)

Mobile IP定义了许多新的控制消息,使用用户数据报协议 (UDP, User Datagram Protocol) 和互联网控制消息协议 (ICMP, Internet Control Message Protocol) 传输.Mobile IP还扩展了ICMP路由器发现机制 [5].

在某些情况下,为消息定义的字段值可能尚未由IANA分配.在所有这些情况下,发送消息的实现必须使用消息中的适当值,接收节点必须正确解释这些值.

消息的接收者不能对消息中特定数据的出现顺序或对齐方式做出任何假设.消息必须按照本文档中定义的格式解析,而不假设特定数据的位置,除非该格式明确指定了该数据的位置.

虽然消息中的字段位置由格式明确指定,但接收者不能假设数据在任何特定字节边界上对齐.本文档使用的数据字段显示的图表仅供说明之用,并不意味着必须的对齐要求.

所有保留字段应由发送者设置为零,接收者必须忽略这些字段的内容,除非在本文档中另有规定.

某些消息包含可变长度的数据字段.在这些情况下,数据字段的长度由前面的长度字段指定,该长度字段指示数据字段的字节数.

所有Mobile IP消息可以包括未明确定义的扩展,但如果存在,扩展必须遵循第1.9节中定义的格式.Mobile IP定义了长扩展格式和短扩展格式.

1.9. Type-Length-Value Extension Format for Mobile IP Extensions (Mobile IP扩展的类型-长度-值扩展格式)

本规范将Mobile IP消息中包含的扩展定义为具有类型-长度-值 (TLV, Type-Length-Value) 格式.这些TLV扩展中的每一个都包含三个字段:一个8位类型 (Type) 字段,一个8位或16位长度 (Length) 字段,以及一个可变长度值 (Value) 字段.

类型字段指示扩展的类型.扩展类型值可以在第6节中列出的IANA注册表中找到.

长度字段指示值字段的长度(以字节为单位).它不包括类型和长度字段本身的长度.

值字段包含特定于扩展类型的数据.

Mobile IP定义了两种扩展格式:

  • 长扩展格式 (Long Extension Format) 使用16位长度字段(第1.10节)
  • 短扩展格式 (Short Extension Format) 使用8位长度字段(第1.11节)

1.10. Long Extension Format (长扩展格式)

长扩展格式用于类型值小于128的扩展.长扩展使用16位长度字段,允许扩展最多包含65,535字节的数据.

长扩展的格式如下:

 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 | Subtype | Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Value (variable) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Type (类型)

8位标识符,用于特定类型的扩展.类型值小于128表示使用长扩展格式.

Subtype (子类型)

8位标识符,可用于为特定类型提供进一步的类型信息.子类型字段的解释取决于特定的扩展类型.

Length (长度)

16位无符号整数.值字段的长度(以字节为单位).长度字段不包括类型,子类型和长度字段本身.

Value (值)

特定于扩展类型的可变长度数据.

1.11. Short Extension Format (短扩展格式)

短扩展格式用于类型值大于或等于128的扩展.短扩展使用8位长度字段,允许扩展最多包含255字节的数据.

短扩展的格式如下:

 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 | Value (variable) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Type (类型)

8位标识符,用于特定类型的扩展.类型值大于或等于128表示使用短扩展格式.

Length (长度)

8位无符号整数.值字段的长度(以字节为单位).长度字段不包括类型和长度字段本身.

Value (值)

特定于扩展类型的可变长度数据.