>
摘要:把基于隧道的快速切换技术同缓存管理相结合,提出一个基于双向隧道BET的缓存快速转发方案,有效地减少了缓存数据包的延时和失序程度,从而提高移动节点切换的平滑性。
关键词:移动IPv6;切换;缓存转发方案;BET
移动IPv6标准给出了移动检测、转交地址获取和重新建立绑定更新等一系列基本过程。在切换过程中,移动节点(MN)无法和通信对端(CN)进行正常的通信,出现暂时的中断。这个延时对运行在MN上的实时流媒体应用的影响是显著的。为了减少这种影响,提出了移动IPv6中平滑切换的缓存管理方案(BMSH),该方案提到:在移动控制情况下,当MN发生切换时,由旧子网的接入路由器(PAR)缓存发往MN的报文,当MN到达新子网并完成新的转交地址(NCOA)的配置之后,通知旧接入路由器将缓存的报文通过隧道发送给MN新的转交地址,从而减少因为切换延时而导致的丢包,实现MN的平滑切换。
本文主要分析了BMSH缓存转发方案对移动节点上的数据流性能的影响,如丢包率、失序程度等,继而提出了一种基于双向隧道BET的缓存快速转发方案(BFF)。该方案消除了转交地址生成过程中重复地址检测(DAD)对缓存数据包延时的影响,同时以也大大降低了数据包的失序程度,并且在缓存区大小有限的情况下,缓存快速转发方案能够实现更小的丢包率。本文中所提到的缓存快速转发方案已在Linux平台上实现,借助赫尔辛基大学的MIPL模块实现MN基本的切换过程,同时自己编写缓存快速转发模块BFF,实现数据包的缓存和快速转发。
MIPv6中平滑切换的缓存管理方案(BMSH)
BMSH方案的基本流程
在移动IPv6中,BMSH缓存转发方案的提出是为了解决移动节点在切换过程中的平滑性问题,即低丢包率。该方案是对基本移动IPv6过程的扩展,主要信令流程如图1。
具体流程如下:
(1)旧接入路由器PAR在收到MN的缓存请求消息后,开辟缓冲区,为MN缓存数据包。
(2)当MN移动到新的子网后,生成新的转交地址NCOA,发送带有平滑切换发起(SHIN)目的地选项的绑定更新消息给新子网的接入路由器(NAR)。
(3)NAR在收到MN的SHIN消息后根据缓存初始化子选项(BI),为MN分配缓冲区并开始缓存;同时根据缓存转发子选项(BF),向PAR发送缓存转发消息。
(4)PAR接到消息后,建立隧道,隧道的两端为PAR和MN的NCOA。
(5)PAR通过隧道,按一定速率将缓存的数据包转发给MN。
图1 BMSH方案的信令流程
MN切换过程中报文分析
BMSH缓存转发方案是对基本移动IPv6的扩展,MN在切换的过程中,还需执行基本的移动IPv6切换过程。表1中列出了在一次基本的移动切换实验中,捕获的报文交互情况,其中-link后缀指代链路局部地址,-Haddr指代家乡地址,-G为全局地址。从表1中可以看出,移动节点MN的一次切换主要有如下的几个步骤:移动检测,新子网转交地址获取,到家乡代理的绑定更新,向CN发送绑定更新消息。移动检测是MN用来判断是否移动的一个过程。一旦移动检测成功,就标志MN已进入一个新的子网,并已完成了链路层的切换。
表1 BMSH方案的报文交互
新子网转交地址的获取包括两个部分:NCOA的生成及重复地址检测。当MN检测出自己移动到一个新的子网,收到NAR的路由广播消息后,便开始新的转交地址的获取。在移动IPv6中,MN默认采用的是无状态自动地址配置,首先MN会根据路由广播中的子网前缀及自己的Interface Identifier生成一个新的128bits临时IPv6全局地址NCOA,为了避免链路中已经存在该IPv6全局地址,需要对该地址进行DAD。MN通过发送一个特殊的邻居请求NS消息来执行DAD,用未指定的地址(::)作为源IPv6地址,用临时单播地址的请求节点多播地址作为目的IPv6地址,请求地址为该临时地址。为了防止若干台主机同时DAD,NS消息在发送前要等待一段随机时间T1(RFC2461的推荐为0~1s之间的一个随机值)。
在NS消息发出后的一段时间T2内(RFC2462推荐值为1s)未收到已占用此地址的主机发出对此地址的邻居广播NA或其它主机对此地址的DAD,则DAD成功,NCOA可以正式开始使用。如果T1和T2均采用推荐值,T1服从0~1之间的平均分布,可以认为T1+T2的期望值为1.5s,即移动节点平均需要花费1.5s的时间来获得新转交地址。缓存转发方案BMSH中,由于转发数据包的隧道需要建立在PAR和NCOA之间,因此缓存转发子消息BF需要等到MN获得新转交地址NCOA之后才可由MN发送至PAR。即MN同新子网建立链路层连接后,至少等待平均1.5s后才可发送缓存转发消息。
缓存转发数据包的时延及失序问题
如果移动节点没有发生切换,那么通信对端CN发往移动节点MN的数据包延时应正比于CN到MN的RTT(Round Trip Time)。缓存机制虽然可以保证数据包的不丢失,但却会产生较大延时。PAR要等接收到NAR发来的转发请求之后才能将缓存的数据包按一定速率转发出去。所以缓存数据包的延时也将受到转发请求消息BF到达时间的影响。如果转发请求子消息BF能够较早发送,缓存数据包的延时也将随着减少。
从表1可以看出,当移动节点MN到达新子网,完成移动检测,生成新的转交地址NCOA之后,一方面向新接入路由器发送SHIN消息,另一方面向家乡代理(HA)和通信对端CN发送绑定更新消息(BU),接下来MN将开始从两个方向同时接收数据包,即旧接入路由器通过隧道发送的缓存包,和通信对端CN正常的数据包,如图2所示。移动节点MN从PAR处接收的数据包是旧数据包,而从CN处接收的数据包则为新数据包,此时的双重数据流中的数据包的交错到达会引起了MN接收数据包的严重失序。而数据包的失序对于流媒体的应用的影响还是比较显著的。
图2 BMSH缓存转发方案的中的双数据流
由于BF子消息和BU消息的几乎同时发送会导致了数据包的失序,因此若要减少包失序,有两种解决方案:(1)BF子消息的尽量提早,已使得缓存的数据包能够尽早到达MN; (2)BU消息的适当延迟,等缓存数据包基本转发完毕后,再开始新的数据包。
基于双向边隧道BET的缓存快速转发方案(BFF)
BFF方案的基本流程
缓存快速转发方案的基本思想是尽可能早地转发缓存报文,通过将基于隧道的快速切换技术同缓存管理相结合,以达到更低的丢包率,更少的数据延时。
在基于隧道的快速切换技术中,MN到达了新的网络并且建立了第二层的连接后,并不发生第三层的切换。PAR和NAR通过在二者之间进行第二层的切换,使用切换消息中提供的信息建立双向边隧道(BET),通过隧道来转发分组。在缓存快速转发方案BFF中,并不是不发生第三层切换,而是在三层切换完成之前,利用二层切换及双向边隧道BET转发数据分组,如图3所示。MN与新子网链路层建立起连接之后,在网络层还未完成切换之前便向NAR发送平滑切换消息,并将自己链路层信息注册在NAR上,NAR继而向PAR发送缓存转发请求。由于此时MN并未完成新子网转交地址的获取,因此不可在PAR和MN的NCOA之间建立隧道,而是在PAR和NAR之间建立一条双向边隧道,用于转发缓存数据包到NAR,然后再由NAR将数据包转发给MN。具体的交互过程如下:
(1)旧接入路由器PAR在收到MN的缓存请求消息BI后,开辟缓冲区,为MN缓存数据包。
(2)当MN移动到新的子网,完成移动检测之后,发送平滑切换消息SHIN给新子网接入路由器NAR。
(3)NAR收到MN的SHIN消息后根据子项BF,向PAR发送缓存转发消息,同时记录MN的链路层相关信息,用于后来转发数据。
(4)PAR接到消息后,建立隧道,隧道的两端为PAR和NAR的全局地址。
(5)PAR通过隧道,按一定速率将缓存的数据包转发给NAR。
(6)NAR将从隧道收到的数据包再转发给MN。
图3 双向边隧道BET
BFF方案对数据流性能的提高
在BMSH方案中,移动节点MN到达新子网,完成移动检测后,虽然此时MN同新子网的链路层连接已经建立,但仍然需要花费大量的时间在新转交地址的获取上。在方案BFF中,MN同新子网的链路层连接一旦建立,便发送缓存转发消息,不再依赖于转交地址获取的完成。将MN花费在新转交地址的获取设为Tncoa,所有缓存的数据包都提前Tncoa到达MN,即有效地减少了缓存数据包的延时。
关于切换过程中数据包的失序问题,从上节的分析中可得MN发送给CN的绑定更新依赖于MN在新子网中转交地址的获得,无论是BFF方案还是BMSH方案,来自CN的新数据流的开始时间是一致的。在BFF方案中,由于缓存转发子消息BF不必等待新转交地址的获取,因此在忽略消息报文的时延差异的前提下,缓存转发的数据流要比CN处新到达的数据流要提前Tncoa,可以大大降低数据包的失序程度。
缓存转发方案的实现及其性能测试结果
BFF、BMSH方案的实现
缓存转发方案BFF和BMSH均已在Linux2.4.22的内核上实现,借助MIPL1.0实现基本的移动IPv6切换过程,编写缓存转发模块,实现基本缓存转发过程以及改进的缓存快速转发方案。PAR上的缓冲区采用了独立缓冲池结构,即为每个MN开辟一个特定大小的循环缓冲区队列,一旦缓冲池满,用后面的数据包覆盖前面的数据包,待到PAR收到缓存转发消息后,采用FIFO的策略,将队列中的数据包依次取出,并通过相应隧道发送出去。
缓存转发机制对丢包率的影响
假设MN在一次切换过程中的切换延时为Th,即从MN同旧子网断开连接,到在新子网收到HA的绑定更新确认消息。转交地址获取的时间为Tncoa,CN到MN数据包的速度为V,缓冲区的大小为Sb,在方案BMSH中,若设丢包个数为P,则
P=Th*V–Sb (1)
方案BFF,丢包个数为
P=(Th-Tncoa)*V–Sb (2)
当切换时间固定的情况下,缓存缓冲区越大,丢包率也就越小。当缓冲区足够大,大到超过MN切换过程中CN发送给数据包数时,丢包率即为0。
若CN以100packets/s的速度向MN发送UDP数据包,每个数据包的大小为1024B每次实验的切换时延控制在5.3s左右,预设的缓冲区大小同丢包率的关系如图4。从图4可以看出,随着缓冲区Sb的增大,BMSH和BFF方案的丢包率都呈下降趋势。在Sb大小相同的情况下,BFF方案的丢包率更小。依据公式,当切换时延Th一定时,丢包率P应该同缓冲大小成反比,但是在实际的测试环境中,无法精确地控制时延大小,只能取其在某一个范围内,所以图中是两条折线而不是直线,但是其趋势还是可以明显地从图中得到的。在BFF方案中,而Tncoa也是一个随机值,曲线的抖动更大。
图4 缓冲区大小同丢包率关系
当PAR上所分配的缓冲区大小固定时,随着切换时延的增加,丢包率也会相应增加。这是因为一旦原有的缓冲区满了之后,新到的数据包就会覆盖掉旧的数据包,即便那些旧的数据包也不曾到达MN,切换延时越久,丢失的数据包就越多。
BFF方案对数据包时延的改进
通过前面的分析可以得出,BFF方案中,数据包延时的减少得益于转发子消息BF的提前发送,而BF子消息发送提前的时间为新转交地址获得的时间Tncoa。图5是10次同等条件下的切换实验中Tncoa的值,即快速缓存转发BFF较基本缓存转发BMSH的缓存数据包时延优化值。
图5 切换延时比较
缓存转发速率和乱序的关系
假设缓存转发数据流开始的时间为T1,绑定更新后的新数据流开始的时间为T2,如果不考虑重复包以及消息报文BF、BU的时延差异,在BMSH方案中,T1和T2几乎是同一时刻,所以恒有Sb个数据包会同新数据流产生乱序,而在BFF方案中,与新数据流产生冲突的缓存转发数据包的个数为C,则
C=Sb-(T1-T2)*Vt+(T1-T2)*V (3)
式(3)中Vt为缓存数据包的转发速率。为了保证不失真,转发速率Vt至少要等于发送速率V,随着Vt的增加,C值不断减少,当缓存转发速度足够大时,即Vt的值足够大时,C的值将不断逼近零值。
图6是当缓冲区大小Sb设为400,V为100packets/s,转发速率Vt同失序冲突数据包个数C之间关系图。可以看出,无论转发速率如何变化,BMSH方案中恒有400个缓存数据包有发生乱序冲突,而在BFF方案中,随着转发速率的不断增加,乱序冲突的数据包数会不断减少,直至到0。
图6 转发速率同失序冲突数据包个数的关系
总结
移动IPv6中的切换延时对上层实时应用的影响是显著的,本文提出的基于双向隧道BET的缓存快速转发方案能够有效地降低切换过程中丢包率,较之基本的缓存转发方案更可减少缓存数据包的时延、乱序程度,同时在预设缓冲区大小相同的情况下,能够实现更底的丢包率。本方案已经结合MIPL1.0在Linux平台上得到实现,并且通过实际的测试数据证明了方案的有效性。