文/汪军
IPv6是下一代的互联网协议,是为克服目前版本的缺点而设计的,它最终将代替IPv4成为互联网的主要网络协议。IPv6目前也是IETF移动IP工作组议程上的主要课题。与IPv4相比,IPv6有更大的地址空间、对报头扩展及可选项更好的支持,IPv6还定义了许多新功能,将其统称为邻节点搜索,可以用来直接提供移动IPv6所需的一些功能。移动IPv6的文件发展很快,本文的讨论主要是基于移动IPv6文件的第二个版本(draft-ietf-mobileip-ipv6-02.txt)。
移动IPv6的工作原理
移动IPv6从移动IPv4中借鉴了许多概念和术语。IPv6中仍有移动节点和家乡代理,但没有外地代理,家乡地址、家乡链路、转交地址和外地链路的概念。移动IPv6中同时采用隧道和源路由技术向连接在外地链路上的移动节点传送数据包,而在移动IPv4中则只用了隧道技术。移动IPv6的高层功能和IPv4一样,大概也和IPv4的三大元素相似,即代理搜索、注册和选路。
移动IPv6的操作可以总结如下:
● 移动节点用IPv6版路由器搜索(Router Discovery)确定其转交地址。
● 移动节点连接在其家乡链路上时与任何固定主机和路由器一样工作。
● 当移动节点连接在外地链路上时,它采用IPv6定义的地址自动配置方法得到外地链路上的转交地址。
● 移动节点将它的转交地址通知给家乡代理。
● 如果可以保证操作时的安全性,移动节点也将它的转交地址通知几个通信伙伴。
● 不知道移动节点转交地址的通信伙伴送出的数据包和移动IPv4一样进行路由,它们先被路由到移动节点的本地网络,从那里家乡代理再将它们经过隧道送到移动节点的转交地址。
● 知道移动节点转交地址的通信伙伴送出的数据包可以利用IPv6选路报头直接送给移动节点,选路报头将移动节点的转交地址作为一个中间目的地址。
● 在相反方向,移动节点送出的数据包采用特殊的机制被直接路由到它们的目的地。然而,当存在入口方向的过滤时,移动节点可以将数据包通过隧道送给家乡代理,隧道的源地址为移动节点的转交地址。
如何确定移动节点的位置
移动节点通过代理搜索过程完成以下工作:(1)决定它当前连接的是家乡链路还是外地链路;(2)决定它是否从一条链路移动到了另一条链路上;(3)当连接在外地链路上时取得一个转交地址。
1.ICMPv6路由器搜索
ICMPv6路由器搜索与移动IPv4中的代理搜索十分相似。IPv6邻节点搜索[RFC 1970]中定义的路由器搜索包括两条报文:路由器请求(Router Solicitations)和路由器广播(Router Advertisements)。与移动IPv4一样,路由器广播由路由器和家乡代理在它们所连接的链路上进行周期地广播,路由器请求则是由那些没有足够耐心等待下一个送到的路由器广播报文的移动节点送出的。与移动IPv4中一样,路由器搜索报文也不要求进行认证。
2.移动节点如何得到转交地址
移动节点确定它正连接在外地链路上时,得到转交地址有两种方法。由于移动IPv6中没有外地代理,因此移动IPv6中唯一的一种转交地址是配置转交地址。移动节点用接收到的路由器广播报文中的M比特来决定采用哪一种方法。如果M比特为0,那么移动节点采用被动地址自动配置(Stateful Address Autoconfiguration),否则移动节点采用主动地址自动配置(Stateless Address Autocontlguration)。
(1)被动地址自动配置
移动节点可以通过被动地址自动配置得到转交地址。在这种方法中,移动节点只是向一个服务器申请一个地址,并将这个地址当作自己的转交地址。与IPv4的情况相对应,IPv6中的“被动”地址分配协议是动态主机配置协议DHCPv6(Dynamic Host Configuration Protocol for IPv6)[draft-ietf-dhc-chcpv6-10.txt]。另外,PPP的IPv6配置协议(PPP's IPv6 Configuration Protocol)[RFC 2023]也提供了一种服务器向移动节点提供转交地址的方法。
(2)主动地址自动配置
移动节点还可以通过主动地址自动配置得到转交地址。主动地址自动配置[RFC 1971]是IPv6中新增加的,在IPv4中没有类似的功能。主动地址自动配置是这样工作的:
● 移动节点首先形成一个接口标记,这是一个与链路有关的标识,用来标识移动节点上与外地链路相连的接口。接口标记常取移动节点在那个接口上的数据链路层地址。
● 移动节点检查路由器广播报文中的前缀信息可选项(Prefix Information Options)以决定当前链路上有效的网络前缀。
● 移动节点将一个有效网络前缀和接口标记相连形成自己的转交地址。
无论是被动配置方式还是介绍的主动配置方式,自动地址配置都包含一种检查机制,移动节点可用它来检查得到的地址是否被链路上其它节点使用。如果有这样的地址重复出现,那么自动配置协议还定义了节点得到唯一地址的方法。
如何将转交地址告诉别的节点
下面介绍移动节点用于通知家乡代理或其它节点它当前的转交地址的方法。IPv6采用布告(Notification)这个术语。移动IPv6中的布告和移动IPv4中的注册有很大的不同。在移动IPv4中,移动节点通过UDP/IP包中携带的注册消息将它的转交地址告诉家乡代理,而IPv6中的移动节点用目的地址可选项(Destination Options)来通知其它节点它的转交地址。
1.布告
移动IPv6的布告是移动节点将它的转交地址告诉家乡代理和各个通信伙伴的方法。同移动IPv4一样,家乡代理将转交地址作为隧道出口来将数据包送给连接在外地链路上的移动节点。另外,通信对端也可能利用转交地址将数据包直接路由给移动节点,而无需将数据包路由到移动节点的家乡代理那里。因此,移动IPv6本身集成了对路由优化的支持。当移动节点回到家乡链路时,它还必须通知它们的家乡代理。与移动IPv4的注册相似,布告过程也包括一个简单的消息交换。移动IPv6的布告采用IPv6报头的一个扩展来实现消息交换。
2.布告中用到的消息
移动IPv6布告使用绑定更新、绑定应答和绑定请求三条消息。这些消息都被放在目的地可选报头(Destination Options Header,IPv6的一个扩展报头)中,这表明这些消息都只被最终目的节点检查。
(1)绑定更新
绑定更新是移动节点发出的用来通知家乡代理或通信伙伴它当前的转交地址,绑定更新可选项可以放在一个单独的IPv6(即包中不再包含其它用户数据)中,也可以放在一个现有的IPv6包(包中还有其它用户数据)中。为简单起见,我们将绑定更新定义成任一个包含绑定选项的IPv6包,无论它是否包含其它用户数据。
和IPv4注册消息一样,绑定更新要求进行认证。移动IPv6采用IP认证报头[RFC 1826]来传送认证数据。同样,所有移动IPv6的实现可能都支持采用手工密钥分配的Keyed-MDS认证机制。
(2)绑定应答
绑定应答是由家乡代理或任何通信伙伴送给移动节点的,用于表明它已成功地收到了移动节点的绑定更新。与绑定更新一样,绑定应答可以在单独的IPv6包中发送,也可以与别的数据一起在IPv6包中发送。向移动节点发送绑定应答的方法与向移动节点发送其它数据包时一样。
(3)绑定请求
通信伙伴向移动节点发送绑定请求来要求移动节点送给它一个绑定更新,也就是说,绑定请求表明通信伙伴想知道移动节点的转交地址。当先前的绑定更新消息中的生存时间域将要过期,而通信伙伴又相信它还会继续向移动节点发送数据包时,发送绑定请求就有用了。绑定请求应与其它用户数据一起放在一个IPv6包中发送。
数据包的选路
知道移动节点的转交地址的通信伙伴可利用IPv6选路报头直接将数据包发送给移动节点,这些包不需要经过移动节点的家乡代理,它们将经过从始发点到移动节点的一条优化路由。
如果通信伙伴不知道移动节点的转交地址,那么它就像向其它任何固定节点发送数据包那样,向移动节点发送数据包。这时,通信伙伴只是将移动节点的家乡地址(也是它知道的唯一地址)放人目的IPv6地址域中,并将它自己的地址放在源IPv6地址域中,然后将数据包转发到合适的下一跳上(这由它的IPv6路由表决定)。
这样发送的一个数据包将被送往移动节点的家乡链路,就像移动IPv4中那样。在家乡链路上,家乡代理截获这个数据包,并将它通过隧道送往移动节点的转交地址。移动节点将送过来的包拆封,发现内层数据包的目的地是它的家乡地址,于是将内层数据包交给高层协议处理。
当移动节点连接在外地链路上时,它必须有一种方法来决定可以为它发出的数据包进行转发的一台路由器,这在移动IPv6中要比在移动IPv4中容易。因为所有IPv6路由器都要求实现路由器搜索(在IPv4中则不是),因此,移动节点可以从那些它已收到路由器广播消息的外地链路上的路由器中任选一台,并据此配置它的路由表,这样它发出的所有数据包就会送到那台路由器上。
摘自《互联网世界》2002.1