发明内容
为了解决上述的技术问题,本发明提供了一种网络层软切换方法及系统,用以减少移动节点在不同网络接口间切换时数据包的丢失和数据包的乱序。
本发明公开了一种网络层软切换方法,移动节点在旧网络中,具有从所述移动节点的旧转交地址到家乡代理的隧道;所述家乡代理具有到所述旧转交地址的隧道;所述移动节点从所述旧网络移动到新网络后,获得新转交地址,建立从所述新转交地址到所述家乡代理的隧道;所述家乡代理建立从所述家乡代理到所述新转交地址的隧道,从所述隧道转发到所述移动节点的数据包,所述方法还包括:
步骤1,所述移动节点在确定所述家乡代理在数据包从所述新网络到达所述家乡代理前已建立完从所述家乡代理到所述新转交地址的隧道后,从所述新网络的接口发送数据包;
步骤2,所述家乡代理在确定所述移动节点从所述旧网络发送的数据包都被接收到后,删除从所述家乡代理到所述旧转交地址的隧道;
步骤3,所述移动节点在确定所述家乡代理经所述旧网络发送的数据包都被接收到后,删除从所述旧转交地址到所述家乡代理的隧道。
所述步骤1前还包括:
步骤21,在所述移动节点建立完从所述新转交地址到所述家乡代理的隧道后,从所述新网络的接口发送第一绑定更新给所述家乡代理;
步骤22,所述家乡代理在接收到所述第一绑定更新,建立完从所述家乡代理到所述新转交地址的隧道,开始将发往所述移动节点的数据包经所述新网络转发后,分别向所述新转交地址和所述旧转交地址发送绑定确认;
所述步骤1进一步为,所述移动节点第一次接收所述绑定确认后,确定从所述家乡代理到所述新转交地址的隧道已经建立完成,开始从所述新网络的接口发送数据包,并从所述旧网络的接口发送第二绑定更新给所述家乡代理;
所述步骤2进一步为,所述家乡代理接收到所述第二绑定更新,并确定所述移动节点从所述旧网络发送的数据包都被接收到后,删除从所述家乡代理到所述旧转交地址的隧道;
所述步骤3进一步为,所述移动节点接收到另一个所述绑定确认,并确定所述家乡代理经所述旧网络发送的数据包都被接收到后,删除从所述旧转交地址到所述家乡代理的隧道。
所述步骤21还包括,所述移动节点开始将从所述新网络的接口接收的数据包缓存到所述移动节点的缓存队列中;
所述步骤22还包括,所述家乡代理开始将接收到的所述移动节点从所述新转交地址发来的数据包缓存到所述家乡代理的缓存队列中;
所述步骤2还包括,判断所述家乡代理的缓存队列是否为空,如果否,则将缓存的数据包按顺序转发;结束所述步骤22中所述缓存操作;
所述步骤3还包括,判断所述移动节点的缓存队列是否为空,如果否,则将缓存的数据包按顺序提交给所述移动节点上层;结束所述步骤21中所述缓存操作。
数据包从所述移动节点经所述新网络到所述家乡代理的时延大于数据包从所述移动节点经所述旧网络到所述家乡代理的时延同所述家乡代理进行绑定处理的时长之和;
所述步骤1进一步为,在所述移动节点建立从所述新转交地址到所述家乡代理的隧道后,从所述旧网络的接口向所述家乡代理发送绑定更新,确定所述家乡代理在数据包从所述新网络到达所述家乡代理前已建立完到所述新转交地址的隧道,开始从所述新网络的接口发送数据包;
所述步骤2进一步为,在所述家乡代理接收到所述绑定更新,建立完到所述新转交地址的隧道,开始将发往所述移动节点的数据包经所述新网络转发后,确定所述移动节点从所述旧网络发送的数据包都被接收到,删除到所述旧转交地址的隧道,并向所述旧转交地址发送绑定确认;
所述步骤3进一步为,所述移动节点接收到所述绑定确认后,确定所述家乡代理经所述旧网络发送的数据包都被接收到,删除从所述旧转交地址到所述家乡代理的隧道。
所述家乡代理将数据包经所述新网络发送到所述移动节点的时延小于数据包经所述旧网络发送到所述移动节点的时延;
所述步骤1还包括,所述移动节点开始将从所述新网络的接口接收的数据包缓存到所述移动节点的缓存队列中;
所述步骤3还包括,判断所述移动节点的缓存队列是否为空,如果否,则将缓存的数据包按顺序提交给所述移动节点上层;结束所述步骤1中所述缓存操作。
所述家乡代理将数据包经所述新网络发送到所述移动节点的时延大于数据包经所述旧网络发送到所述移动节点的时延;且
数据包从所述移动节点经所述新网络到所述家乡代理的时延小于数据包从所述移动节点经所述旧网络到所述家乡代理的时延同所述家乡代理进行绑定处理的时长之和;
所述步骤1前还包括:
步骤61,在所述移动节点建立完从所述新转交地址到所述家乡代理的隧道后,从所述新网络的接口发送第一绑定更新给所述家乡代理;
步骤62,所述家乡代理接收到所述第一绑定更新,建立完到所述新转交地址的隧道,开始将发往所述移动节点的数据包经所述新网络转发后,向所述旧转交地址发送绑定确认;
所述步骤1进一步为,在所述移动节点接收到所述绑定确认后,确定所述家乡代理到所述新转交地址的隧道已经建立完成,开始从所述新网络的接口发送数据包,并从所述旧网络的接口发送第二绑定更新给所述家乡代理;
所述步骤2进一步为,所述家乡代理接收到所述第二绑定更新后,确定所述移动节点从所述旧网络发送的数据包都被接收到,删除到所述旧转交地址的隧道;
所述步骤3进一步为,在所述移动节点接收到所述绑定确认后,确定所述家乡代理经所述旧网络发送的数据包都被接收到,删除从所述旧转交地址到所述家乡代理的隧道。
所述步骤62还包括,所述家乡代理开始将接收到的所述移动节点从所述新转交地址发来的数据包缓存到所述家乡代理的缓存队列中;
所述步骤2还包括,判断所述家乡代理的缓存队列是否为空,如果否,则将缓存的数据包按顺序转发;结束所述步骤62中所述缓存操作。
本发明还公开了一种网络层软切换系统,包括具有从旧网络中的旧转交地址到家乡代理的隧道的移动节点和具有到所述旧转交地址的隧道的所述家乡代理,所述移动节点,用于在从所述旧网络移动到新网络后,获得新转交地址,建立从所述新转交地址到所述家乡代理的隧道,所述家乡代理,用于在所述移动节点建立完从所述新转交地址到所述家乡代理的隧道后,建立从所述家乡代理到所述新转交地址的隧道,从所述隧道转发到所述移动节点的数据包,
所述移动节点包括新网络启用模块和旧隧道删除模块,
所述新网络启用模块,用于在确定所述家乡代理在数据包从所述新网络到达所述家乡代理前已建立完从所述家乡代理到所述新转交地址的隧道后,从所述新网络的接口发送数据包;
所述旧隧道删除模块,用于在确定所述家乡代理经所述旧网络发送的数据包都被接收到后,删除从所述旧转交地址到所述家乡代理的隧道;
所述家乡代理包括删除模块,
所述删除模块,用于在确定所述移动节点从所述旧网络发送的数据包都被接收到后,删除从所述家乡代理到所述旧转交地址的隧道。
所述移动节点还用于在建立完从所述新转交地址到所述家乡代理的隧道后,从所述新网络的接口发送第一绑定更新给所述家乡代理;
所述家乡代理还用于接收到所述第一绑定更新,建立完从所述家乡代理到所述新转交地址的隧道,开始将发往所述移动节点的数据包经所述新网络转发后,分别向所述新转交地址和所述旧转交地址发送绑定确认;
所述新网络启用模块进一步用于在第一次接收到所述绑定确认后,确定所述家乡代理到所述新转交地址的隧道已经建立完成,开始从所述新网络的接口发送数据包,并从所述旧网络的接口发送第二绑定更新给所述家乡代理;
所述旧隧道删除模块进一步用于在接收到另一个所述绑定确认,并确定所述家乡代理经所述旧网络发送的数据包都被接收到后,删除从所述旧转交地址到所述家乡代理的隧道;
所述删除模块进一步用于在接收到所述第二绑定更新,并确定所述移动节点从所述旧网络发送的数据包都被接收到后,删除从所述家乡代理到所述旧转交地址的隧道。
所述移动节点还包括数据包存储模块,
所述数据包存储模块,用于在所述移动节点建立完从所述新转交地址到所述家乡代理的隧道后,开始将从所述新网络的接口接收的数据包缓存到所述移动节点的缓存队列中;在所述旧隧道删除模块完成所述删除从所述旧转交地址到所述家乡代理的隧道后,判断所述移动节点的缓存队列是否为空,如果否,则将缓存的数据包按顺序提交给所述移动节点上层,结束所述缓存操作;
所述家乡代理还包括存储模块,
所述存储模块,用于在所述家乡代理建立完到所述新转交地址的隧道后,开始将接收到的所述移动节点从所述新转交地址发来的数据包缓存到所述家乡代理的缓存队列中;在所述删除模块完成所述删除到所述旧转交地址的隧道后,判断所述家乡代理的缓存队列是否为空,如果否,则将缓存的数据包按顺序转发,结束所述缓存操作。
数据包从所述移动节点经所述新网络到所述家乡代理的时延大于数据包从所述移动节点经所述旧网络到所述家乡代理的时延同所述家乡代理进行绑定处理的时长之和;
所述新网络启用模块进一步用于在所述移动节点建立从所述新转交地址到所述家乡代理的隧道后,从所述旧网络的接口向所述家乡代理发送绑定更新,确定所述家乡代理在数据包从所述新网络到达所述家乡代理前已建立完到所述新转交地址的隧道,开始从所述新网络的接口发送数据包;
所述旧隧道删除模块进一步用于在所述移动节点接收到所述家乡代理发送的绑定确认后,确定所述家乡代理经所述旧网络发送的数据包都被接收到,删除从所述旧转交地址到所述家乡代理的隧道;
所述删除模块进一步用于在所述家乡代理接收到所述绑定更新,建立完到所述新转交地址的隧道,开始将发往所述移动节点的数据包经所述新网络转发后,确定所述移动节点从所述旧网络发送的数据包都被接收到,删除到所述旧转交地址的隧道,并向所述旧转交地址发送所述绑定确认。
所述家乡代理将数据包经所述新网络发送到所述移动节点的时延小于数据包经所述旧网络发送到所述移动节点的时延;
所述移动节点还包括数据包存储模块,
所述数据包存储模块,用于在所述移动节点建立完从所述新转交地址到所述家乡代理的隧道后,开始将从所述新网络的接口接收的数据包缓存到所述移动节点的缓存队列中;在所述旧隧道删除模块完成所述删除从所述旧转交地址到所述家乡代理的隧道后,判断所述移动节点的缓存队列是否为空,如果否,则将缓存的数据包按顺序提交给所述移动节点上层,结束所述缓存操作。
所述家乡代理将数据包经所述新网络发送到所述移动节点的时延大于数据包经所述旧网络发送到所述移动节点的时延;
数据包从所述移动节点经所述新网络到所述家乡代理的时延小于数据包从所述移动节点经所述旧网络到所述家乡代理的时延同所述家乡代理进行绑定处理的时长之和;
所述移动节点还用于在建立完从所述新转交地址到所述家乡代理的隧道后,从所述新网络的接口发送第一绑定更新给所述家乡代理;
所述家乡代理还用于在接收到所述第一绑定更新,建立完到所述新转交地址的隧道,开始将发往所述移动节点的数据包经所述新网络转发后,向所述旧转交地址发送绑定确认;
所述新网络启用模块进一步用于在所述移动节点接收到所述绑定确认后,确定所述家乡代理到所述新转交地址的隧道已经建立完成,开始从所述新网络的接口发送数据包,并从所述旧网络的接口发送第二绑定更新给所述家乡代理;
所述旧隧道删除模块进一步用于在所述移动节点接收到所述绑定确认后,确定所述家乡代理经所述旧网络发送的数据包都被接收到,删除从所述旧转交地址到所述家乡代理的隧道;
所述删除模块进一步用于在所述家乡代理接收到所述第二绑定更新后,确定所述移动节点从所述旧网络发送的数据包都被接收到,删除到所述旧转交地址的隧道。
所述家乡代理还包括存储模块,
所述存储模块,用于在所述家乡代理建立完到所述新转交地址的隧道后,开始将接收到的所述移动节点从所述新转交地址发来的数据包缓存到所述家乡代理的缓存队列中;在所述删除模块完成所述删除到所述旧转交地址的隧道后,判断所述家乡代理的缓存队列是否为空,如果否,则将缓存的数据包按顺序转发,结束所述缓存操作。
本发明的有益效果在于,当移动终端在不同网络接口间切换时,在新旧网络均属于连接状态,并且旧网络本身不产生数据包乱序或者产生的数据包乱序较轻的情况下,移动节点和家乡代理在确定通过旧网络传输的数据包被完全接收后才删除旧隧道,从而使移动节点在切换时收发双向没有丢包,并且通过在切换过程中缓存从新网络接收的数据包,从而缓解切换时收发双向的数据包乱序。
具体实施方式
下面结合附图,对本发明做进一步的详细描述。
MN(移动节点)维持绑定更新表项,其中包括家乡地址域、主转交地址域、路径接口编号域、旧转交地址域、旧路径接口编号域、最新发送序号域和最新接收序号域。HA(家乡代理)维持绑定缓存表项,其中包括家乡地址域、主转交地址域、路径接口编号域、旧转交地址域、旧路径接口编号域和最新序号域。
本发明还在MN和HA上增加了对旧隧道的延迟删除功能和对新数据包的缓存功能,还在移动IPv6协议的两种信令,BU(绑定更新)和BA(绑定确认),中增加了三个标志位,R(旧隧道保留标志位)、B(双网络确认标志位)和0(旧网络确认标志位)。当HA在收到BU时,检查上述三个标志位。
如果标志位R为1,则HA保留到MN旧CoA(转交地址)的IPv6-in-IPv6隧道,此后若收到MN从新CoA发来的数据包,则将其放入缓存队列,暂不转发。如果标志位R为0,则HA删除到MN旧CoA的IPv6-in-IPv6隧道;若缓存队列非空,则按序转发缓存的数据包;此后不缓存以MN新CoA为源地址的数据包。
如果标志位B为1,则需向MN的新旧CoA同时返回同序号的BA;如果为0,则只需向MN返回一个BA。
如果标志位0为1,则需向MN的旧CoA返回相应的BA;如果为0,则需向MN所发BU的源地址发送相应的BA。
由于软切换的MN可能需要和HA进行两次交互,所以本发明规定HA返回的BA中标志位R、标志位B和标志位0分别设置与其收到的BU中标志位R、标志位B和标志位0相同。这样,MN根据收到的BA的标志位就可以判断自己之前选择的切换类型,并继续完成软切换的相应步骤。
本发明方法根据MN在移动前后所在新网络和旧网络中传输时延的不同把切换分为四种类型。
类型一,HA将数据包经新网络发送到MN的时延小于数据包经旧网络发送到MN的时延;数据包从MN经新网络到HA的时延小于数据包从MN经旧网络到HA的时延同HA进行绑定处理的时长之和。
类型二,HA将数据包经新网络发送到MN的时延大于数据包经旧网络发送到MN的时延;数据包从MN经新网络到HA的时延大于数据包从MN经旧网络到HA的时延同HA进行绑定处理的时长之和。
类型三,HA将数据包经新网络发送到MN的时延小于数据包经旧网络发送到MN的时延;数据包从MN经新网络到HA的时延大于数据包从MN经旧网络到HA的时延同HA进行绑定处理的时长之和。
类型四,HA将数据包经新网络发送到MN的时延大于数据包经旧网络发送到MN的时延;数据包从MN经新网络到HA的时延小于数据包从MN经旧网络到HA的时延同HA进行绑定处理的时长之和。
对于类型一,CN(通信节点)向MN发送的数据包和MN向CN发出的数据包都会发生丢失和乱序,情况最为严重。以MN在外地网络间切换为例,实现发明中方法,如图3所示。
步骤S301,移动节点从新网络的接口向家乡代理发送第一绑定更新。当MN决定开始切换时,保留从旧CoA到HA的IPv6-in-IPv6隧道,建立一条从新CoA到HA的IPv6-in-IPv6隧道,并从新网络的接口向HA发送第一BU,在第一BU中,标志位R和标志位B均置为1,标志位0置为0。此后,若从新网络的接口接收到数据包,则将其放入缓存队列,暂不提交上层。
步骤S302,家乡代理向移动节点的新转交地址及旧转交地址发送第一绑定确认。HA接收到第一BU后,更新MN的绑定缓存表项,保留到MN旧CoA的IPv6-in-IPv6隧道,建立从HA到MN新CoA的IPv6-in-IPv6隧道,把到MN的路由指向新隧道,使得再截获发向MN的数据包时,通过新网络将其转发给MN,并向MN的新CoA和旧CoA同时发送同序号的第一BA,通知MN绑定更新成功,在第一BA中,标志位R和标志位B均置为1,标志位0置为0。此后,若收到MN从新CoA发来的数据包,则将其放入缓存队列,暂不转发。
步骤S303,移动节点从旧网络的接口发送第二绑定更新。当MN第一次接收到返回的第一BA时,在类型一的情况下MN会先收到经新网络到达的第一BA,若绑定成功,则MN修改路由,使数据包从新隧道发出,并以旧CoA为源地址从旧网络的接口向HA发送第二BU,第二BU中标志位R、标志位B和标志位0均置为0。
步骤S304,移动节点删除从旧转交地址到家乡代理的隧道。当MN第二次接收到另一个返回的第一BA时,删除从旧CoA到HA的IPv6-in-IPv6隧道,判断缓存队列是否为空,如果否,则把缓存的数据包按序提交上层,停止缓存从新网络的接口接收的数据包,将数据包直接提交给上层。
步骤S305,家乡代理向旧转交地址发送第二绑定确认。HA接收到第二BU后,删除到MN旧CoA的IPv6-in-IPv6隧道,并向MN的旧CoA发送第二BA,通知MN更新成功,第二BA中标志位R、标志位B和标志位0均置为0。此时,判断缓存队列是否为空,如果否,则把缓存的数据包按序转发,停止缓存以MN新CoA为源地址的数据包,将数据包直接转发。
步骤S306,MN接收到第二BA,切换完成。
上述切换步骤不仅可以保证MN进行第一种类型切换时不会发生数据包的丢失和乱序,而且可以保证MN在其它三种类型的情况下进行切换时,也不会发生数据包的丢失和乱序。在MN不知道新旧网络的传输延时,可以默认使用上述切换方法。
使用上述切换方法,MN和HA之间共需传送5条信令,经过2次交互。对于第二、三、四种类型,可以采用比上述方法更简化的方法,以减少交互信令的数量。
对于类型二,CN向MN发送的数据包虽会发生丢失,但不会乱序;而MN向CN发出的数据包不会发生丢失和乱序。因而对于类型二,采用如图4所示的方法。
步骤S401,当MN决定开始切换时,保留从旧CoA到HA的IPv6-in-IPv6隧道,建立一条从新CoA到HA的IPv6-in-IPv6隧道,并修改路由,使数据包从新隧道发出,同时以旧CoA为源地址从旧网络的接口向HA发送BU,BU中标志位R、标志位B和标志位0均置为0。
步骤S402,HA接收到BU后,更新MN的绑定缓存表项,建立从HA到MN新CoA的IPv6-in-IPv6隧道,把到MN的路由指向新隧道,使得再截获发向MN的数据包时,通过新网络将其转发给MN,删除到MN旧CoA的IPv6-in-IPv6隧道,并向MN的旧CoA发送BA,通知MN绑定更新成功,BA中标志位R、标志位B和标志位0均置为0。
步骤S403,当MN接收到返回的BA时,删除从旧CoA到HA的IPv6-in-IPv6隧道,完成切换。
对于类型三,CN向MN发送的数据包会发生数据包的丢失和乱序,而MN向CN发出的数据包不会发生丢失和乱序。对于类型三,实施软切换的方法如图5所示。
步骤S501,当MN决定开始切换时,保留从旧CoA到HA的IPv6-in-IPv6隧道,建立一条从新CoA到HA的IPv6-in-IPv6隧道,并修改路由,使数据包从新隧道发出,同时以旧CoA为源地址从旧网络的接口向HA发送BU,BU中标志位R、标志位B和标志位0均置为0。此后,若从新网络的接口接收到数据包,则将其放入缓存队列,暂不提交上层。
步骤S502,HA接收到BU后,更新MN的绑定缓存表项,建立从HA到MN新CoA的IPv6-in-IPv6隧道,把到MN的路由指向新隧道,使得再截获发向MN的数据包时,通过新网络将其转发给MN,删除到MN旧CoA的IPv6-in-IPv6隧道,并向MN的旧CoA发送BA,通知MN绑定更新成功,BA中标志位R、标志位B和标志位0均置为0。
步骤S503,当MN接收到返回的BA时,删除从旧CoA到HA的IPv6-in-IPv6隧道,判断缓存队列是否为空,如果否,则把缓存的数据包按序提交上层,停止缓存从新网络的接口接收的数据包,将数据包直接提交到上层。
对于类型四,CN向MN发送的数据包虽会发生丢失,但不会乱序;而MN向CN发出的数据包会发生丢失和乱序。对于类型四,实施软切换的方法如图6所示。
步骤S601,当MN决定开始切换时,保留从旧CoA到HA的IPv6-in-IPv6隧道,建立一条从新CoA到HA的IPv6-in-IPv6隧道,并从新网络的接口向HA发送第一BU,在第一BU中,标志位R和标志位0均置为1,标志位B置为0。
步骤S602,HA接收到第一BU后,更新MN的绑定缓存表项,保留到MN旧CoA的IPv6-in-IPv6隧道,建立从HA到MN新CoA的IPv6-in-IPv6隧道,把到MN的路由指向新隧道,使得再截获发向MN的数据包时,通过新网络将其转发给MN,并向MN的旧CoA发送第一BA,通知MN绑定更新成功,在第一BA中,标志位R和标志位0均置为1,标志位B置为0。此后,若收到MN从新CoA发来的数据包,则将其放入缓存队列,暂不转发。
步骤S603,当MN接收到返回的第一BA时,若绑定成功,则MN修改路由,使数据包从新隧道发出,删除从旧CoA到HA的IPv6-in-IPv6隧道,并以旧CoA为源地址从旧网络的接口向HA发送第二BU,第二BU中标志位R、标志位B和标志位0均置为0。
步骤S604,HA接收到第二BU后,删除到MN旧CoA的IPv6-in-IPv6隧道,并向MN的旧CoA发送第二BA,通知MN更新成功,第二BA中标志位R、标志位B和标志位0均置为0。此时,判断缓存队列是否为空,如果否,则把缓存的数据包按序转发,停止缓存以MN新CoA为源地址的数据包,将数据包直接转发。
步骤S605,MN接收到第二BA,切换完成。
以上是对第二、三、四种切换类型的优化。对于第二和三种切换类型,MN和HA之间只需一次交互,传送两条信令,而对于第四种切换类型,MN和HA之间传送的信令变为4条。
MN的具体操作流程如图7A和7B所示。
步骤S701,当用户手动选择切换或者系统根据切换判决算法自动触发切换时,移动终端开始进行网络接口间的切换。
步骤S702,判断MN的新网络是否为外地网络,若是,则执行步骤S703,否则执行步骤S708。
步骤S703,在MN上建立一条从新CoA到HA的隧道。
步骤S704,判断MN的旧网络是否为家乡网络,若是,则执行步骤S705,否则执行步骤S706。
步骤S705,把绑定更新表项中的旧CoA域更新为HoA,旧路径接口编号域更新为家乡网络的接口编号,执行步骤S707。
步骤S706,把绑定更新表项中的旧CoA域更新为主CoA域中的地址;旧路径接口编号域更新为路径接口编号域的值,执行步骤S707。
步骤S707,把绑定更新表项中的主CoA域更新为新CoA,路径接口编号域更新为新隧道的接口编号,执行步骤S709。
步骤S708,把绑定更新表项中的旧CoA域更新为主CoA域中的地址;旧路径接口编号域更新为路径接口编号域的值;主CoA域更新为HoA;路径接口编号域更新为家乡网络的接口编号,执行步骤S709。
步骤S709,把绑定更新表项中的最新发送序号域的值加1。
步骤S710,判断切换类型。若为类型一,则执行步骤S711;若为类型二,则执行步骤S713;若为类型三,则执行步骤S714;若为类型四,则执行步骤S717。如果不知道切换类型,则默认选择类型一。
步骤S711,以绑定更新表项的主CoA域中的地址为源地址从新网络的接口向HA发送BU,其中,标志位R和标志位B均置为1,标志位0为0。
步骤S712,开始把从新网络的接口接收的数据包放入缓存队列,暂不提交上层,执行步骤S718。
步骤S713,以绑定更新表项的旧CoA域中的地址为源地址从旧网络的接口向HA发送BU,其中,标志位R、标志位B和标志位0均置为0,执行步骤S716。
步骤S714,以绑定更新表项的旧CoA域中的地址为源地址从旧网络的接口向HA发送BU,其中,标志位R、标志位B和标志位0均置为0,执行步骤S715。
步骤S715,开始把从新网络的接口接收的数据包放入缓存队列,暂不提交上层,执行步骤S716。
步骤S716,修改路由,使数据包从绑定更新表项中路径接口编号域记录的接口发出,执行步骤S718。
步骤S717,以绑定更新表项的主CoA域中的地址为源地址从新网络的接口向HA发送BU,其中,标志位R和标志位0均置为1,标志位B为0,执行步骤S718。
步骤S718,等待接收BA。
步骤S719,检查BA的标志位B,若标志位B为1,则执行步骤S720,否则执行步骤S732。
步骤S720,检查BA的序号,如果满足条件1,BA的序号等于绑定更新表项中最新发送序号域的值,且大于最新接收序号域的值,则执行步骤S721;如果满足条件2,BA的序号小于或等于绑定更新表项中最新发送序号域的值,且等于最新接收序号域的值,则执行步骤S726;如果既不满足条件1,也不满足条件2,则忽略BA,执行步骤S718。
步骤S721,把绑定更新表项中的最新接收序号域更新为当前BA的序号。
步骤S722,检查BA的状态,若BA中状态域的值显示HA绑定成功,则执行步骤S723,否则,根据返回的错误代码依照移动IPv6协议中的相关规定进行错误处理。
步骤S723,检查BA的标志位R,若标志位R为1,则执行步骤S724,否则执行步骤S718。
步骤S724,修改路由,使数据包从绑定更新表项中路径接口编号域记录的接口发出,从而使数据包从新网络的接口发出。
步骤S725,以绑定更新表项的旧CoA域中的地址为源地址从旧网络的接口向HA发送BU,BU中的标志位R、标志位B和标志位0均置为0,并把绑定更新表项中最新发送序号域的值加1,继续执行步骤S718。
步骤S726,检查BA的状态,若BA中状态域的值显示HA绑定成功,则执行步骤S727,否则,根据返回的错误代码依照移动IPv6协议中的相关规定进行错误处理。
步骤S727,若缓存队列非空,则把缓存的数据包按序提交上层。
步骤S728,停止缓存从新网络的接口接收的数据包。
步骤S729,若绑定更新表项的旧CoA域和HoA域中的地址不同,且旧路径接口编号域非0,则删除从旧CoA到HA的隧道。
步骤S730,把绑定更新表项中的旧路径接口编号域更新为0。
步骤S731,检查BA的标志位R,若标志位R为1,则执行步骤S718,否则到达步骤S744。
步骤S732,检查BA的序号,判断是否满足条件,BA的序号等于绑定更新表项中最新发送序号域的值,如果是,则执行步骤S733,否则,忽略BA,执行步骤S718。
步骤S733,把绑定更新表项中的最新接收序号域更新为当前BA的序号。
步骤S734,检查BA的状态,若BA中状态域的值显示HA绑定成功,则执行步骤S735,否则,根据返回的错误代码依照移动IPv6协议中的相关规定进行错误处理。
步骤S735,检查BA的标志位R,若标志位R为1,则执行步骤S736,否则执行步骤S740。
步骤S736,修改路由,使数据包从绑定更新表项中路径接口编号域记录的接口发出,从而使数据包从新网络的接口发出。
步骤S737,若绑定更新表项的旧CoA域和HoA域中的地址不同,且旧路径接口编号域非0,则删除从旧CoA到HA的隧道。
步骤S738,把绑定更新表项中的旧路径接口编号域更新为0。
步骤S739,以绑定更新表项的旧CoA域中的地址为源地址从旧网络的接口向HA发送BU,BU中的标志位R、标志位B和标志位0均置为0,并把绑定更新表项中最新发送序号域的值加1,继续执行步骤S718。
步骤S740,若缓存队列非空,则把缓存的数据包按序提交上层。
步骤S741,停止缓存从新网络的接口接收的数据包。
步骤S742,若绑定更新表项的旧CoA域和HoA域中的地址不同,且旧路径接口编号域非0,则删除从旧CoA到HA的隧道。
步骤S743,把绑定更新表项中的旧路径接口编号域更新为0。
步骤S744,完成网络接口间的切换。
HA的具体操作流程如图8所示。
其中,BU的生存期是指绑定过期前的剩余时间。在移动IPv6协议中,若BU的生存期为0,则HA必须注销对MN的绑定,删除其绑定缓存表项,停止为其转发数据包。因此,当MN切换回家乡网络时,会向HA发送生存期为0的BU,以注销其绑定。在本发明中,为了减少MN从外地网络切换回家乡网络时的数据包丢失和乱序,HA采取了延迟注销MN绑定的方法。
步骤S801,等待接收BU。
步骤S802,依照移动IPv6协议中的相关规定,检查BU是否有效(包括BU的序号是否最新),如果否,则执行步骤S803;如果是,则执行步骤S804。
步骤S803,发送BA,通知MN绑定失败,执行步骤S801。
步骤S804,根据BU中的HoA,查看MN的绑定缓存表项是否存在。若不存在,则执行步骤S805,否则执行步骤S811。
步骤S805,建立从HA到MN新CoA的隧道,并修改路由,把到MN家乡地址的路由指向此隧道,使发往MN的数据包开始经新网络转发。
步骤S806,建立绑定缓存表项,把HoA域和旧CoA域均赋为BU中的HoA,把主CoA域赋为BU中的CoA,把路径接口编号域赋为新隧道的接口编号。
步骤S807,检查BU的标志位R,若标志位R为1,则执行步骤S808,否则执行步骤S810。
步骤S808,把绑定缓存表项中的旧路径接口编号域赋为家乡网络接口编号。
步骤S809,此后收到以MN新CoA为源地址的数据包,将其放入缓存队列,暂不转发,执行步骤S824。
步骤S810,把绑定缓存表项中的旧路径接口编号域赋为0,执行步骤S824。
步骤S811,检查BU的生存期是否大于0,如果是,则执行步骤S812,否则执行步骤S828。
步骤S812,检查BU的标志位R,若标志位R为1,则执行步骤S813,否则执行步骤S817。
步骤S813,判断MN的CoA是否改变,即BU中的CoA是否与绑定缓存表项的主CoA域中的地址相同。若地址相同,则说明MN的CoA未改变,执行步骤S824,否则说明MN的CoA已改变,执行步骤S814。
步骤S814,建立从HA到MN新CoA的隧道,并修改路由,把到MN家乡地址的路由指向此隧道,使发往MN的数据包开始经新网络转发。
步骤S815,更新MN的绑定缓存表项,把旧CoA域赋为主CoA域中的地址,把旧路径接口编号域赋为路径接口编号域的值,把主CoA域赋为BU中的CoA,把路径接口编号域赋为新隧道的接口编号。
步骤S816,若绑定缓存表项中的旧路径接口编号域非0,则此后收到以MN新CoA为源地址的数据包,将其放入缓存队列,暂不转发,执行步骤S824。
步骤S817,判断MN的CoA是否改变,即BU中的CoA是否与绑定缓存表项的主CoA域中的地址相同。若地址相同,则说明MN的CoA未改变,执行步骤S820,否则说明MN的CoA已改变,执行步骤S818。
步骤S818,建立从HA到MN新CoA的隧道,并修改路由,把到MN家乡地址的路由指向此隧道,使发往MN的数据包开始经新网络转发。
步骤S819,更新MN的绑定缓存表项,把旧CoA域赋为主CoA域中的地址,把旧路径接口编号域赋为路径接口编号域的值,把主CoA域赋为BU中的CoA,把路径接口编号域赋为新隧道的接口编号。
步骤S820,若缓存队列非空,则把缓存的数据包按序转发。
步骤S821,此后不缓存以MN新CoA为源地址的数据包。
步骤S822,若绑定缓存表项的旧CoA域和HoA域中的地址不同,且旧路径接口编号域非0,则删除从HA到MN旧CoA的隧道。从HA到MN旧CoA的隧道接口编号为绑定缓存表项中旧路径接口编号域的值。
步骤S823,把绑定缓存表项中的旧路径接口编号域赋为0,执行步骤S824。
步骤S824,检查BU的标志位,如果满足条件1,标志位B为0且标志位0为1,则执行步骤S825;如果满足条件2,标志位B为0且标志位0为0,则执行步骤S826;如果满足条件3,标志位B为1,则执行步骤S827。
步骤S825,向绑定缓存表项的旧CoA域中的地址发送BA,BA中标志位R、标志位0和标志位B置为与接收到的BU相同,通知MN绑定更新成功,执行步骤S801,继续等待接收BU。
步骤S826,向BU的源地址发送BA,BA中标志位R、标志位0和标志位B置为与接收到的BU相同,通知MN绑定更新成功,执行步骤S801,继续等待接收BU。
步骤S827,向绑定缓存表项的旧CoA域和主CoA域中的地址同时发送同序号的BA,BA中标志位R、标志位0和标志位B置为与接收到的BU相同,通知MN绑定更新成功,执行步骤S801,继续等待接收BU。
步骤S828,检查BU的标志位R,若标志位R为1,则执行步骤S829,否则执行步骤S832。
步骤S829,更新MN的绑定缓存表项,把旧CoA域赋为主CoA域中的地址,把旧路径接口编号域赋为路径接口编号域的值,把主CoA域赋为MN的HoA,路径接口编号域赋为家乡网络接口编号。
步骤S830,若存在从旧隧道到MN家乡地址的路由,删除从旧隧道到MN家乡地址的路由。旧隧道接口编号为绑定缓存表项中旧路径接口编号域的值。步骤S831,此后把MN从家乡网络直接发来的数据包放入缓存队列,暂不转发,执行步骤S837。
步骤S832,若缓存队列非空,则把缓存的数据包按序转发。
步骤S833,此后不缓存MN从家乡网络直接发来的数据包。
步骤S834,若存在从旧隧道到MN家乡地址的路由,删除从旧隧道到MN家乡地址的路由。旧隧道是从HA到MN旧CoA的隧道,若绑定缓存表项的主CoA域和HoA域中的地址相同,则旧隧道接口编号为绑定缓存表项中旧路径接口编号域的值;否则旧隧道接口编号为绑定缓存表项中路径接口编号域的值。
步骤S835,删除从HA到MN旧CoA的隧道。
步骤S836,删除MN的绑定缓存表项,执行步骤S837。
步骤S837,检查BU的标志位,如果满足条件1,标志位B为0且标志位0为1,则执行步骤S838;如果满足条件2,标志位B为0且标志位0为0,则执行步骤S839;如果满则条件3,标志位B为1,则执行步骤S840。
步骤S838,向MN的旧CoA发送BA,BA中标志位R、标志位0和标志位B置为与接收到的BU相同,通知MN绑定已注销,执行步骤S801,继续等待接收BU。
步骤S839,向BU的源地址发送BA,BA中标志位R、标志位0和标志位B置为与接收到的BU相同,通知MN绑定已注销,执行步骤S801,继续等待接收BU。
步骤S840,向MN的旧CoA和HoA同时发送同序号的BA,BA中标志位R、标志位0和标志位B置为与接收到的BU相同,通知MN绑定已注销,执行步骤S801,继续等待接收BU。
本发明的系统包括:具有从旧网络中的旧CoA到HA的隧道的MN和具有到该旧CoA的隧道的HA。
MN,用于在从上述旧网络移动到新网络后,获得新CoA,建立从该新CoA到上述HA的隧道。
HA,用于在上述MN建立完从上述新CoA到所述HA的隧道后,建立到该新CoA的隧道,从该隧道转发到MN的数据包。
MN的结构如图9所示。HA的结构如图10所示。
根据MN在移动前后所在新网络和旧网络中传输时延的不同分为四种类型。
类型一,HA将数据包经新网络发送到MN的时延小于数据包经旧网络发送到MN的时延;数据包从MN经新网络到HA的时延小于数据包从MN经旧网络到HA的时延同HA进行绑定处理的时长之和。
类型二,HA将数据包经新网络发送到MN的时延大于数据包经旧网络发送到MN的时延;数据包从MN经新网络到HA的时延大于数据包从MN经旧网络到HA的时延同HA进行绑定处理的时长之和。
类型三,HA将数据包经新网络发送到MN的时延小于数据包经旧网络发送到MN的时延;数据包从MN经新网络到HA的时延大于数据包从MN经旧网络到HA的时延同HA进行绑定处理的时长之和。
类型四,HA将数据包经新网络发送到MN的时延大于数据包经旧网络发送到MN的时延;数据包从MN经新网络到HA的时延小于数据包从MN经旧网络到HA的时延同HA进行绑定处理的时长之和。
MN包括:新网络启用模块901、旧隧道删除模块902和数据包存储模块903。
新网络启用模块901,用于在确定HA在数据包从新网络到达该HA前已建立完到该新CoA的隧道后,从该新网络的接口发送数据包。
旧隧道删除模块902,用于在确定HA经旧网络发送的数据包都被接收到后,删除从旧CoA到HA的隧道。
数据包存储模块903,在类型一和类型三的情况下启用,用于在切换完成前存储MN从新网络接收的数据包,以防止乱序。
HA包括:删除模块1001和存储模块1002。
删除模块1001,用于在确定MN从旧网络发送的数据包都被接收到后,删除到该旧CoA的隧道。
存储模块1002,在类型一和类型四的情况下启用,用于在切换完成前存储MN从新网络发向HA的数据包,以防止乱序。
在类型一的情况下或者在不确定新网络和旧网络的传输时延时,
MN还用于在建立完从新CoA到HA的隧道后,从新网络的接口发送第一BU给HA。
HA还用于接收到上述第一BU,建立完到新CoA的隧道,开始将发往MN的数据包经新网络转发后,分别向新CoA和旧CoA发送第一BA。
新网络启用模块901进一步用于在第一次接收到第一BA后,确定HA到新CoA的隧道已经建立完成,开始从新网络的接口发送数据包,并从旧网络的接口发送第二BU给HA。
旧隧道删除模块902进一步用于在接收到另一个第一BA后,确定HA经旧网络发送的数据包都被接收到,删除从旧CoA到HA的隧道。
数据包存储模块903,用于在MN建立完从新CoA到HA的隧道后,开始将从新网络的接口接收的数据包缓存到MN的缓存队列中;在旧隧道删除模块902完成删除从旧CoA到HA的隧道后,判断MN的缓存队列是否为空,如果否,则将缓存的数据包按顺序提交给MN上层,结束缓存操作。
删除模块1001进一步用于在接收到第二BU后,确定MN从旧网络发送的数据包都被接收到,删除到旧CoA的隧道。
存储模块1002,用于在HA建立完到新CoA的隧道后,开始将接收到的MN从新CoA发来的数据包缓存到HA的缓存队列中;在删除模块1001完成删除到旧CoA的隧道后,判断HA的缓存队列是否为空,如果否,则将缓存的数据包按顺序转发,结束缓存操作。
在类型二和类型三的情况下,
新网络启用模块901进一步用于在MN建立从新CoA到HA的隧道后,从旧网络的接口向HA发送BU,确定HA在数据包从新网络到达该HA前已建立完到新CoA的隧道,开始从新网络的接口发送数据包。
旧隧道删除模块902进一步用于在MN接收到HA发送的BA后,确定HA经旧网络发送的数据包都被接收到,删除从旧CoA到HA的隧道。
删除模块1001进一步用于在HA接收到BU,建立完到新CoA的隧道后,确定MN从旧网络发送的数据包都被接收到,删除到旧CoA的隧道,并向旧CoA发送BA。
在类型三的情况下,
数据包存储模块903,用于在MN建立完从新CoA到HA的隧道后,开始将从新网络的接口接收的数据包缓存到MN的缓存队列中;在旧隧道删除模块902完成删除从旧CoA到HA的隧道后,判断MN的缓存队列是否为空,如果否,则将缓存的数据包按顺序提交给MN上层,结束缓存操作。
在类型四的情况下,
MN还用于在建立完从新CoA到HA的隧道后,从新网络的接口发送第一BU给HA。
HA还用于在接收到第一BU,建立完到新CoA的隧道,开始将发往MN的数据包经新网络转发后,向旧CoA发送第一BA。
新网络启用模块901进一步用于在MN接收到第一BA后,确定HA到新CoA的隧道已经建立完成,开始从新网络的接口发送数据包,并从旧网络的接口发送第二BU给HA。
旧隧道删除模块902进一步用于在MN接收到第一BA后,确定HA经旧网络发送的数据包都被接收到,删除从旧CoA到HA的隧道。
删除模块1001进一步用于在HA接收到第二BU后,确定MN从旧网络发送的数据包都被接收到,删除到旧CoA的隧道。
存储模块1002,用于在HA建立完到新CoA的隧道后,开始将接收到的MN从新CoA发来的数据包缓存到HA的缓存队列中;在删除模块1001完成删除到旧CoA的隧道后,判断HA的缓存队列是否为空,如果否,则将缓存的数据包按顺序转发,结束缓存操作。
本领域的技术人员在不脱离权利要求书确定的本发明的精神和范围的条件下,还可以对以上内容进行各种各样的修改。因此本发明的范围并不仅限于以上的说明,而是由权利要求书的范围来确定的。