具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明所述方案作进一步地详细说明。
本发明实施例中提出一种ISSU过程中保证链路不断流的方法,应用于包括两个以上成员设备的CA中的任一成员设备上,该成员设备在即将进行软重启ISSU时,通知其他成员设备;接收到其他成员设备的响应时,使实际使用的SAK均有效,在进行软重启ISSU处理时,若PN翻转,使用硬件自动切换到下一个SAK;在软重启ISSU结束时,再通知其他成员设备。通过该方法,在软重启ISSU过程中,保证链路流量不中断。
CA由两个或两个以上成员设备组成,其中一个成员设备作为密钥服务器,其他成员设备作为非密钥服务器的成员设备,即普通的成员设备。CA中由密钥服务器为各成员设备分发SAK,在分发新的SAK时,同时通知各成员设备该新分发的SAK所属的SA的编号。各成员设备获得新的SAK,以及该SAK所属的SA的编号时,使用该SAK的内容更新对应的SA中的SAK的内容。
各成员设备支持的SA可能为2个,也可能为4个等。在CA中各成员设备之间能够正常通信,需要保证各成员设备实际使用的SA个数相同,即无论各成员设备支持几个SA,但是需配置实际使用的SA个数相同。
下面结合附图,详细说明本发明具体实施例中如何实现在ISSU过程中保证链路不断流的。
参见图1,图1为本发明具体实施例中进行软重启ISSU的成员设备保证链路不断流的方法流程示意图。具体步骤为:
步骤101,CA中的任一成员设备在即将进行软重启ISSU时,向其他成员设备发送第一报文。
其他成员设备接收到第一报文时,获知发送第一报文的成员设备即将进行软重启ISSU,使用当前使用的SA中安全密钥SAK的内容覆盖其他实际使用的SA中的SAK的内容,将所述其他实际使用的SA中SAK对应的下一个报文编号设置为初始有效值。
成员设备实际使用的SA个数相同,那么实际使用的SAK的个数也相同。假设实际使用的SA为4个,并且编号为0、1、2和3。假设当前使用的是编号为1的SA,则使用SA1中的SAK对应的内容覆盖SA0、SA2和SA3中的SAK对应的内容,保证各SA中的SAK对应的内容一致;并且将SA0、SA2和SA3中的SAK对应的下一个报文编号设置为初始有效值。这样在使用硬件自动切换SAK时,可以直接使用。
当前的SAK对应的nextPN的值为无效值时,才能进行SAK的切换。因此,切换后的SAK对应nextPN的值为无效值,即当前使用的是SA1中的SAK,则SA0、SA2和SA3中的SAK对应的nextPN的值为无效值,要想通过再次使用SA0、SA2和SA3中的SAK进行加密,需要将、SA2和SA3中的nextPN的值设置为初始有效值。
如果该其他成员设备为CA中的密钥服务器,还需停止生成新的SAK。即使PN值已到临界值也不生成新的SAK。进行软重启ISSU的接口板如果负责SAK的生成,在进入软重启ISSU过程中,自然不会生成新的SAK,但是,如果是其他接口板,如主控板,负责生成新的SAK,在该接口板进行软重启ISSU过程中,则需要停止生成新的SAK。
做好这些准备之后,其他成员设备向发送对第一报文的响应报文。
步骤102,该成员设备接收到所有其他成员设备对第一报文的响应报文时,使用当前使用的SA中安全密钥SAK的内容覆盖其他实际使用的SA中的SAK的内容,将所述其他实际使用的SA中SAK对应的下一个报文编号设置为初始有效值,并启动协议代理进程,向所有其他成员设备发送第二报文,并接收对该第二报文的响应报文。
本步骤中的成员设备接收到所有成员设备发送的对第一报文的响应报文时,获知其他成员设备已做好准备。本成员设备也做同样的准备,并启动协议代理进程发送第二报文。
因为在本成员设备重启的时候,不能正常收发报文,因此,启动协议进程代理来收发第二报文和对第二报文的响应报文。
步骤103,该成员设备进行软重启ISSU处理,在软重启ISSU过程中,若PN翻转,使用硬件自动切换到下一个SAK。
在进行软重启ISSU过程中,可以通过启动的协议代理进程,保证第二报文的发送和对第二报文的响应报文的接收。
其他成员设备接收到第二报文时,获知发送第二报文的成员设备正在进行软重启ISSU,向发送第二报文的成员设备发送对第二报文的响应报文。
并且在发送第二报文处于软重启ISSU过程中,若接收到数据报文,对接收到的数据报文进行防止报文乱序的消息编号(MN)不做检查。
步骤104,该成员设备当软重启ISSU完成时,向各成员设备发送第三报文。
如果该成员设备为CA中的密钥服务器,接收到所有其他成员设备发送的对第三报文的响应报文时,生成新的SAK,并根据当前使用的SA的编号确定该新生成的SAK所属的SA的编号,并将所述新生成的SAK,以及确定的该新生成的SAK所属的SA的编号分发给各成员设备。
假设当前使用的SA为SA1,则新生成的SAK所属的SA的编号为2。对于如何获知当前使用的SAK所属的SA的编号,具体可以采用如下方法:
该成员设备读取硬件中各SA的PN值,如SA0的PN值为无效值,SA1的PN值为100,SA2的PN值为0,SA3的PN值为0,则说明SA0已经过期,SA1正在使用,SA2和SA3还未使用。
其他成员设备接收到第三报文时,获知发送第三报文的成员设备已完成软重启ISSU,获得分发的新的SAK时,将新的SAK下发到硬件表项,并且向发送第三报文的成员设备发送对第三报文的响应报文。
在PN到最大值时,自动翻转切换到新的SAK,在发送数据报文时,使用新的SAK对报文进行加密。
步骤105,该成员设备接收到所有其他成员设备发送的对第三报文的响应报文时,启用密钥服务器分发新的SA。
如果本成员设备为密钥服务器,则为本成员设备生成的新的SAK,对于启用密钥服务器分发新的SA的过程同现有实现。在PN到最大值时,自动翻转使用新的SA。在发送数据报文时,使用新的SA中的SAK对报文进行加密。
参见图2,图2为本发明具体实施例中未进行软重启ISSU的成员设备保证链路不断流的方法流程示意图。具体步骤为:
步骤201,CA中的任一成员设备接收到第一报文时,使用当前使用的SA中安全密钥SAK的内容覆盖其他实际使用的SA中的SAK的内容,将所述其他实际使用的SA中SAK对应的下一个报文编号设置为初始有效值;向所述发送第一报文的成员设备发送对该第一报文的响应报文。
该成员设备如果为密钥服务器,在接收到第一报文时,停止生成新的SAK,即使PN值已到临界值。
步骤202,该成员设备接收到第二报文时,向所述发送第二报文的成员设备发送对该第二报文的响应报文;若接收到数据报文,对接收到的数据报文进行防止报文乱序的MN不做检查;若PN翻转,使用硬件自动切换到下一个SAK。
步骤203,该成员设备接收到第三报文时,向发送第三报文的成员设备发送对第三报文的响应报文;在获得密钥服务器分发的新的SAK时,启用该新的SAK。
该成员设备若为密钥服务器,接收到第三报文时,生成新的SAK,并根据当前使用的SA的编号确定该新生成的SAK所属的SA的编号,并将所述新生成的SAK,以及确定的该新生成的SAK所属的SA的编号分发给各成员设备。
图1中和图2中的各报文具体如下:
第一报文为,通知其他成员设备本成员设备即将进行软重启ISSU的报文;
所述第二报文为,通知其他成员设备本成员设备处于软重启ISSU过程的报文;
所述第三报文为,通知其他成员设备本成员设备软重启ISSU完成的报文;
所述对第一报文的响应报文为,通知发送第一报文的成员设备本成员设备已获知其即将进行软重启ISSU;
所述对第二报文的响应报文为,通知发送第二报文的成员设备本成员设备已获知其进行软重启ISSU过程;
所述对第三报文的响应报文为,通知发送第三报文的成员设备本成员设备已获知其软重启ISSU完成。
其中,各报文可以通过在保活报文新增协议报文的TLV实现,如在保活报文中通过新增类型为8的TLV,实现第一报文和对第一报文的响应报文;在保活报文中通过新增类型为9的TLV,实现第二报文和对第二报文的响应报文;在保活报文中通过新增类型为10的TLV,实现第三报文和对第三报文的响应报文。
并且在各新增的TLV中携带发送第一报文的成员设备的MI,用于标识CA中当前即将软重启ISSU的成员设备,处于软重启ISSU的成员设备,以及软重启ISSU完成的成员设备。
以一个CA中有3个成员设备,分别为成员设备A、成员设备B和成员设备C为例,且这三个成员都配置实际使用的SA的个数为4个。其中,成员设备A为密钥服务器。
假设成员设备A即将进行软重启ISSU,具体处理如下:
成员设备A先在保活报文中增加TYPE为8的参数集,MI为设备A的MI,通知成员设备B和成员设备C它即将开始软重启ISSU。
成员设备B收到成员设备A发送的保活报文时,识别TYPE为8的参数集,发现MI为成员设备A对应的成员设备要开始软重启ISSU。于是使用当前使用的SA中安全密钥SAK的内容覆盖其他实际使用的SA中的SAK的内容,将所述其他实际使用的SA中SAK对应的下一个报文编号设置为初始有效值。假如当前SA0在使用,那么使用SA0中的SAK的内容覆盖SA1、SA2和SA3中SAK对应的内容。在保活报文中同样增加TYPE为8的参数集,MI依然为设备A的MI,通知成员设备A它已经做好准备。
成员设备C接收成员设备A发送的保活报文时,同成员设备B做同样的处理。
成员设备A收到成员设备B和成员设备C发送的保活报文,发现成员设备B和成员设备C已经做好准备。此时启动协议代理进程,保证保活报文可以照常发送。保活报文中携带TYPE为9的参数集,MI为设备A的MI,通知设备B和成员设备C它正在进行软重启ISSU;并使用当前使用的SA中安全密钥SAK的内容覆盖其他实际使用的SA中的SAK的内容,将所述其他实际使用的SA中SAK对应的下一个报文编号设置为初始有效值。此时,成员设备A进行软重启ISSU处理,CPU重启,协议报文的收发交给协议代理进程处理。
成员设备B收到保活报文,发现参数集TYPE为9,不再对防止报文乱序的MN做检查。发送给A的保活报文中同样带有TYPE为9的参数集,MI依然为设备A的MI。
成员设备C与成员设备B作同样的处理。
成员设备A同成员设备B,以及成员设备C之间一直发送保活报文,在ISSU过程中,一直携带TYPE为9的参数集。
成员设备A的软重启ISSU结束后,CPU可以正常工作,此时读取硬件的PN值,获得当前使用的SA的AN,并分发新的SAK,携带TYPE为10的参数集,MI为设备A的MI。将新的SAK表项分发到硬件表项中。在得到成员设备B和成员设备C的回应前,依然使用老的SAK加密报文。
成员设备B收到分保活报文后,发现带有TYPE为10的参数集,知道此时成员设备A已经结束ISSU,获得成员设备A新分发的SAK时,更新新分发的SAK对应的SAK的硬件表项。并在向成员设备A发送的保活报文中携带TYPE为10的参数集,MI依然为设备A的MI。
成员设备C与成员设备B作同样的处理。
成员设备A收到成员设备B和成员设备C回应的保活报文,解析到TYPE为10的参数集,说明成员设备B和成员设备C已经得知成员设备A结束了软重启ISSU,于是启用新的SAK,即在PN到达最大值时,进行SAK切换。从此,成员设备A、成员设备B和成员设备C之间的保活报文和现有实现一样。
假如成员设备B要进行软重启ISSU,具体处理如下:
成员设备B先在保活报文中增加TYPE为8的参数集,MI为设备B的MI,通知成员设备A和成员设备C它即将开始软重启ISSU。
成员设备A收到成员设备B发送的保活报文时,识别TYPE为8的参数集,发现成员设备B要开始软重启ISSU。于是停止生成新的SAK。使用当前使用的SA中SAK的内容覆盖其他实际使用的SA中的SAK的内容,将所述其他实际使用的SA中SAK对应的下一个报文编号设置为初始有效值。在保活报文中同样增加TYPE为8的参数集,MI依然为设备B的MI,通知成员设备B它已经做好准备,不会再生成新的SAK。
成员设备C接收到成员设备A发送的保活报文时,识别TYPE为8的参数集,发现成员设备B要开始软重启ISSU。使用当前使用的SA中SAK的内容覆盖其他实际使用的SA中的SAK的内容,将所述其他实际使用的SA中SAK对应的下一个报文编号设置为初始有效值。在保活报文中同样增加TYPE为8的参数集,MI依然为设备B的MI,通知成员设备B它已经做好准备,不会再分发新的SAK。
成员设备B收到成员设备A和成员设备C发送的保活报文,发现成员设备A和成员设备C已经做好准备。停止生成新的SAK,此时启动协议代理进程,保证保活报文可以照常发送。保活报文中携带TYPE为9的参数集,MI为设备B的MI,通知设备A它正在进行软重启ISSU。使用当前使用的SA中SAK的内容覆盖其他实际使用的SA中的SAK的内容,将所述其他实际使用的SA中SAK对应的下一个报文编号设置为初始有效值。此时,进行软重启ISSU处理,CPU重启,协议报文的收发交给协议代理进程处理。
成员设备A收到保活报文,发现参数集TYPE为9,不再对防止报文乱序的MN做检查。发送给B的保活报文中同样带有TYPE为9的参数集,MI依然为设备B的MI。
成员设备C与成员设备A作同样处理。
成员设备B和成员设备A,以及成员设备C之间一直发送保活报文,在ISSU过程中,一直携带TYPE为9的参数集。
成员设备B的软重启ISSU结束后,CPU可以正常工作,保活报文中携带TYPE为10的参数集,MI为设备B的MI。
成员设备A收到保活报文后,发现带有TYPE为10的参数集,新生成SAK,从硬件中获取当前使用的SA的编号,并根据当前使用的SA的编号确定新生成的SAK所属的SA的编号。分配新的SAK的报文中,携带TYPE为10的参数集,携带新生成的SAK和SA的编号,MI为设备B的MI。将新的SAK下发到硬件表项中。在得到成员设备B和成员设备C的回应前,依然使用老的SAK加密报文。
成员设备B收到分配新的SAK的报文后,发现带有TYPE为10的参数集,知道成员设备A了解到它已经结束ISSU,于是更新SA的硬件表项。回应消息和现有实现相同。
成员设备C收到成员设备B发送的保活报文,发现带有TYPE为10的参数集,获知成员设备B已完成软重启ISSU。接收到成员设备A发送的分配新的SAK的消息后,更新SA的硬件表项。回应消息和现有实现相同。
成员设备A收到回应消息,启用新的SAK,即在PN达到最大值时,进行SAK的切换。
基于同样的发明构思,本发明还提出一种设备。可应用为包括两个以上成员设备的连接集CA中的任一成员设备。参图3,图3为本发明具体实施例中应用于上述技术的设备的结构示意图。该设备包括:收发单元301和处理单元302。
收发单元301,用于本设备在即将进行软重启不中断业务升级ISSU时,向其他成员设备发送第一报文;接收其他成员设备对第一报文的响应报文;在处理单元302将所述其他实际使用的SA中SAK对应的下一个报文编号设置为初始有效值时,启动协议代理进程,向所有其他成员设备发送第二报文,并接收对该第二报文的响应报文;当处理单元302进行软重启当软重启ISSU完成时,向各成员设备发送第三报文;接收其他成员设备发送的对第三报文的响应报文。
处理单元302,用于当收发单元301接收到所有其他成员设备对第一报文的响应报文时,使用当前使用的SA中安全密钥SAK的内容覆盖其他实际使用的SA中的SAK的内容,将所述其他实际使用的SA中SAK对应的下一个报文编号设置为初始有效值;在收发单元301发送第二报文后,进行软重启ISSU处理,在软重启ISSU过程中,若报文编号PN翻转,使用硬件自动切换到下一个SAK;当收发单元301接收到所有其他成员设备发送的对第三报文的响应报文时,启用密钥服务器分发的新的SA。
较佳地,
收发单元301,进一步用于接收第一报文;当处理单元302将所述其他SAK对应的下一个报文编号设置为初始有效值时,向所述发送第一报文的成员设备发送对该第一报文的响应报文;接收第二报文,并向发送第二报文的成员设备发送对第二报文的响应报文;接收第三报文,并向发送第三报文的成员设备发送对第三报文的响应报文。
处理单元302,进一步用于当收发单元301接收到第一报文时,使用当前使用的SA中安全密钥SAK的内容覆盖其他实际使用的SA中的SAK的内容,将所述其他实际使用的SA中SAK对应的下一个报文编号设置为初始有效值;当收发单元301接收第二报文和发送对第二报文的响应报文过程中若接收到数据报文,对接收到的数据报文进行防止报文乱序的MN不做检查;若PN翻转,使用硬件自动切换到下一个SAK;在获得密钥服务器分发的新的SAK时,启用该新的SAK。
较佳地,
处理单元302,进一步用于若本设备作为密钥服务器,收发单元301接收到所有其他成员设备对第一报文的响应报文时,停止生成新的SAK;收发单元301接收到所有其他成员设备发送的对第三报文的响应报文时,生成新的SAK,并根据当前使用的SA的编号确定该新生成的SAK所属的SA的编号,并将所述新生成的SAK,以及确定的该新生成的SAK所属的SA的编号分发给各成员设备。
较佳地,
处理单元302,进一步用于若本设备作为密钥服务器,收发单元301接收到第一报文时,停止生成新的SAK;收发单元301接收到第三报文时,生成新的SAK,并根据当前使用的SA的编号确定该新生成的SAK所属的SA的编号,并将所述新生成的SAK,以及确定的该新生成的SAK所属的SA的编号分发给各成员设备。
较佳地,
所述第一报文为,通知其他成员设备本成员设备即将进行软重启ISSU的报文;
所述第二报文为,通知其他成员设备本成员设备处于软重启ISSU过程的报文;
所述第三报文为,通知其他成员设备本成员设备软重启ISSU完成的报文;
所述对第一报文的响应报文为,通知发送第一报文的成员设备本成员设备已获知其即将进行软重启ISSU;
所述对第二报文的响应报文为,通知发送第二报文的成员设备本成员设备已获知其进行软重启ISSU过程;
所述对第三报文的响应报文为,通知发送第三报文的成员设备本成员设备已获知其软重启ISSU完成。
上述实施例的单元可以集成于一体,也可以分离部署;可以合并为一个单元,也可以进一步拆分成多个子单元。
综上所述,本发明具体实施例中成员设备在即将进行软重启ISSU时,通知其他成员设备;接收到其他成员设备的响应时,使实际使用的SAK均有效,在进行软重启ISSU处理时,若PN翻转,使用硬件自动切换到下一个SAK;在软重启ISSU结束时,再通知其他成员设备,能够在软重启ISSU过程中,保证链路流量不中断。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。