移动节点在越区切换时,首先需要无线链路的切换,如果新旧链路不在同一个IP子网内,还要进行IP子网切换。即使采用了路由优化技术,在无线链路切换和子网切换过程中的分组延时还是相当可观的,而延时的主要部分是由链路切换完成后的端到端的移动IP注册操作引起的。在切换过程中,发给移动节点的分组可能被丢失,因此快速切换方案将有利于改善分组数据的业务质量。链路切换常由第二层协议或硬切换完成,而跨越IP子网的切换需要第三层协议或软切换完成。
目前,研究移动IP快速切换的文献很多,其基本思路有3种组播、基于第二层移动触发的预先切换和分组缓存,本文主要讨论基于第二层移动触发的预先切换思想,即:移动节点在将要移往新的链路之前,先启动一个切换规程,预先获取新链路上的转交地址。切换规程通过在新老接入路由器之间以及接入路由器与移动节点之间交换新增的报文来实现。这种方法需要移动节点预先知道自己即将移动到新的网络,因此需要第二层的支持。我们知道,WLAN中AP是在进行L2切换前就从beacon或探询应答中知道是否要进行L3切换,并且移动IP注册非常耗时,因此要想办法在某一环节节省时间,从而更早的恢复通信。这个移动IPv6快速切换的主要思想是将链路层的信息用于L3切换,通过在新旧路由器间传递数据以提前获得IP连接。其应用的原理是:数据在接收方的传递过程是先链路层再网络层,因此链路层比网络层更早得到信息。
1. 系统建模
1.1快速切换步骤
首先详细叙述一下草案快速切换的步骤:
MN从接收到的ESSID判定需要进行L3切换,于是向原AP发送代理路由请求其中包括新AP的链路层地址。
(2)原AR将新AP的链路层地址映射到新AP的IP地址,这就需要在原AR处保留一个映射表。
(3)原AR决定MN在新AP中使用被动的(stateful)还是主动的(stateless)地址。
如果是主动地址:原AR在新的子网上利用MN的接口标识得到一个新的COA(careofaddress),通常这个接口标识就是MN的48位MAC地址,在前面加上新子网的前缀就形成了COA,通过HI/HACK发给MN。同时要先确认该地址是否唯一,该“地址唯一确认请求”是与HI/HACK同时发出的,如果不是唯一的就采用被动地址。
如果是被动地址:原AR利用HI/HACK交换向新AR请求地址,这种情况下,新AR往往采用来分配地址。
(4)原AR向MN返回一个代理路由消息。该消息在stateless地址配置的情况下与HI/HACK同时发出,再stateful地址配置的情况下在HI/HACK之后发出。
(5)MN再向原AR发送一个快速绑定更新(F—BU),绑定到新的COA,注意,这属于L3信息,它于L2切换之前进行的。
(6)现在MN才开始进行L2切换,到L2切换进行到第5步结束时MN已移入新AP了。
(7)MN之后将收到F-BACK,表明原AR收到了他的F-BU,这时可以用新的COA通信了,该信息在新旧链路上同时发送(新链路,即原AR-新AR-新AP-MN;旧链路,即原AR-原AP-MN)。这样,此后从原AR来的包将根据FBU送到新的AR。
注意在L2切换的步骤15都是由硬件完成的,要使MN能发送IP层信息如F-BU就不能开始L2切换,也即接口硬件在没有MN的允许下不能开始切换。当整个切换完成,可以看到,这比采用移动IP注册更有效得节省了切换时间。
1.2算法的改进
从草案建议的切换算法可注意到,无论是L2切换还是L3切换,都是由MN控制的,因此为了保证MN能够正常的通信,必须在L2切换之前先得到新的COA,然后再等L2主要切换步骤完成再进行绑定更新等,这么一来,L2和L3切换能同时进行的步骤较少。但是,倘若让L3切换由网络来控制,情况就不同了:
当切换条件达到时,MN发送一个探询请求,所有收到这个探询请求的AP响应一个探询应答。MN根据应答中的信息选择合适的新接入AP。
(2)MN同时向两个AP发送切换触发,宣告L2切换正式开始,考虑到此后MN在连接到新AP之前无法通信,且网络如果没有足够的信息就不能决定是否进行L3切换,所以该切换触发中应该含有新、旧两个AP的MAC地址,原AP收到切换触发,立即将此信息传递到原AR。新AP接到触发,启动前面所提到的L2切换,开始和MN通过信息交换达到同步。
(3)原AR收到L2切换触发,必须能够识别出另一个AP的子网,这就要求在AR处要保留一个各个子网所含的AP的MAC地址集,并且不同的子网AP的MAC地址是不同的。
(4)如果原AR通过查找发现两个AP分属不同的子网(两个AP与不同路由器相连),就向新AP所属的AR(即新AR)请求地址,新AR根据动态主机配置协议分配一个COA地址,返回给原AR,原AR把该地址从两个BSS内发送给MN以确保其能收到,这是考虑到:MN可能与新AP建立了连接(链路层切换完成),但也可能仍与原AP连接着。这一步同时进行的是链路层切换,这样MN一进入新的网络就有了COA地址了。这里需要注意的是原AR实际上是充当了家乡代理的角色。
(5)之后MN再向原AR(家乡代理)发送绑定更新,进行注册,再接收绑定应答,即注册成功。
必须注意的是,在这个切换方案里新AR并不是外地代理,因为如果是外地代理,在注册请求时,它要对注册请求进行一系列的有效性检查。如果其中有一项检查失败,外地代理就向移动节点发送一条注册应答消息拒绝这次注册请求。如果检查成功,外地代理就将包含注册请求消息的数据包的IP报头和UDP头完全剥去,再加上新的报头后才送给家乡代理。同样当外地代理接到来自家乡代理的注册应答后,将对消息进行一系列的有效性检查。外地代理一旦发现应答是无效的,将产生一个包含适当的Code域的注册应答,并发送给移动节点。而我们这里,新AR仅仅作为一个路由器使用。
从上面的步骤看到,一方面采用了由链路层信息发起切换(草案的思想),节省了一部分时间,另一方面由于COA地址的获得和L2切换同时进行,更是大大节省了时间,特别是对于WLAN,由于其所有控制信号和数据信号都共用一个信道,并且MAC层采用CSMA/CA的策略,如果同一BSS内有几个MN同时工作,L2切换所花的时间就很长。从仿真的结果看,同时有4个MN工作的时候,L2切换时间大约是2s,充分利用这2s的时间获取COA将大大减少切换时延。