一种会话备份方法及装置与流程

文档序号:17725795发布日期:2019-05-22 02:30阅读:131来源:国知局
一种会话备份方法及装置与流程

本申请涉及通信技术领域,特别是涉及一种会话备份方法及装置。



背景技术:

为了保证网络设备连续稳定的运行,避免用户业务中断,可以通过板间备份技术来保障业务的可靠性。在主业务板接收到数据流后,为该数据流生成会话,并将会话信息备份至备业务板。后续若主业务板故障,可将数据流切换至备业务板,备业务板可通过已经备份的会话信息对接收到的数据流进行匹配并处理。

其中,会话信息包括正向key(键)和反向key,分别用于正、反向报文匹配,正向key和反向key都包括报文的五元组,其中,正向key的源互联网协议(internetprotocoladdress,ip)地址和源port(端口)是反向key的目的ip地址和目的port。若正向key进行了网络地址转换(networkaddresstranslation,nat),则反向key的目的ip地址和目的port为经过nat转换后的源ip和源port。

然而,在多核设备上,若主业务板的2核接收到数据流1后创建会话a,并通知备业务板备份会话a的会话信息(以下简称为会话信息a),例如备业务板的3核对会话信息a进行备份。在会话a老化后,主业务板的2核通知备业务板删除会话信息a,例如,可以由备业务板的3核删除会话信息a。在主业务板的3核删除会话信息a后,主业务板的5核接收到数据流2,数据流2的目的ip地址,目的port与数据流1的目的ip地址和目的port相同。主业务板的5核可为数据流2创建会话b,由于会话信息a已被删除,为会话a分配的nat地址和natport已被释放,该nat地址和natport可能被分配给会话b。

由于数据流1和数据流2的目的ip地址和目的port相同,所以会话信息a和会话b的会话信息(以下简称为会话信息b)的反向key中的源ip和源port相同,且数据流1和数据流2的源ip地址和源port被转换为了相同的nat地址和natport,所以会话信息a和会话信息b的反向key中的目的ip地址和目的port相同,即会话信息a和会话信息b的反向key相同。

主业务板的5核创建会话b后,可通知备业务板对会话信息b进行备份,例如备业务板的6核可对会话信息b进行备份。一般的备份方法为分别计算会话信息b的正向key的正向哈希值,以及反向key的反向哈希值,并以正向哈希值为索引将正向key存储在哈希表中,以反向哈希值为索引将反向key存储在哈希表中。然而由于会话信息a和会话信息b的反向key相同,备业务板上3核和6核的繁忙程度不同,有可能在6核接收到对会话信息b的备份消息时,3核还未删除会话信息a。会导致6核在备份会话信息b时,哈希表中已存储的会话信息a的反向key与会话信息b的反向key冲突,导致会话信息b在备业务板备份失败,影响业务的可靠性。



技术实现要素:

有鉴于此,本申请实施例提供一种会话备份方法及装置,以解决由于备份的会话冲突而导致的会话信息备份失败的问题。具体技术方案如下:

第一方面,本申请实施例提供一种会话备份方法,所述方法应用于备业务板,所述方法包括:

接收主业务板发送的备份报文,所述备份报文携带第一会话信息;

判断已备份的会话信息中,是否存在与所述第一会话信息冲突的第二会话信息;

若存在与所述第一会话信息冲突的第二会话信息,且所述第一会话信息对应的第一会话的创建时间晚于所述第二会话信息对应的第二会话的创建时间,则将所述第一会话信息缓存至缓存队列中;

当所述第二会话信息被删除时,对所述缓存队列中缓存的所述第一会话信息进行备份。

在一种可能的实现方式中,所述方法还包括:

若存在与所述第一会话信息冲突的第二会话信息,且所述第一会话的创建时间早于所述第二会话的创建时间,则丢弃所述第一会话信息。

在一种可能的实现方式中,所述第一会话信息包括所述第一会话对应的正向五元组、反向五元组以及所述第一会话的创建时间;

所述判断已备份的会话信息中,是否存在与所述第一会话信息冲突的第二会话信息,包括:

计算所述正向五元组的第一正向哈希值以及所述反向五元组的第一反向哈希值;

判断正向哈希表中是否存在所述第一正向哈希值,且反向哈希表中是否存在所述第一反向哈希值;所述正向哈希表用于存储已备份的会话信息对应的正向哈希值、正向五元组以及创建时间;所述反向哈希表用于存储已备份的会话信息对应的反向哈希值、反向五元组以及创建时间;

若所述正向哈希表中存在所述第一正向哈希值,且所述反向哈希表中不存在所述第一反向哈希值,则确定存在与所述第一会话信息冲突的第二会话信息,且所述第一会话信息与所述第二会话信息的冲突哈希值为所述第一正向哈希值;或者,

若所述正向哈希表中不存在所述第一正向哈希值,且所述反向哈希表中存在所述第一反向哈希值,则确定存在与所述第一会话信息冲突的第二会话信息,且所述冲突哈希值为所述第一反向哈希值;或者,

若所述正向哈希表中存在所述第一正向哈希值,且所述反向哈希表中存在所述第一反向哈希值,则确定存在与所述第一会话信息冲突的第二会话信息,且所述冲突哈希值为所述第一正向哈希值和所述第一反向哈希值。

在一种可能的实现方式中,在将所述第一会话信息缓存至所述缓存队列中之后,所述方法还包括:

若所述冲突哈希值为所述第一正向哈希值,则在所述正向哈希表中所述第一正向哈希值对应的会话信息中添加正向冲突标识,所述正向冲突标识用于表示所述第一会话信息与所述第二会话信息的正向五元组相同;或者,

若所述冲突哈希值为所述第一反向哈希值,则在所述反向哈希表中所述第一反向哈希值对应的会话信息中添加反向冲突标识,所述反向冲突标识用于表示所述第一会话信息与所述第二会话信息的反向五元组相同;或者,

若所述冲突哈希值为所述第一正向哈希值和所述第一反向哈希值,则在所述正向哈希表中所述第一正向哈希值对应的会话信息中添加所述正向冲突标识,和/或在所述反向哈希表中所述第一反向哈希值对应的会话信息中添加所述反向冲突标识。

在一种可能的实现方式中,所述当所述第二会话信息被删除时,对所述缓存队列中缓存的所述第一会话信息进行备份包括:

当删除所述第二会话信息时,判断所述第二会话信息是否包括正向冲突标识和/或反向冲突标识;

若所述第二会话信息包括所述正向冲突标识,则从所述缓存队列中查找与所述第二会话信息具有相同正向五元组的第一会话信息,将所述第一会话信息添加至所述正向哈希表和所述反向哈希表中;或者,

若所述第二会话信息包括所述反向冲突标识,则从所述缓存队列中查找与所述第二会话信息具有相同反向五元组的第一会话信息,将所述第一会话信息添加至所述正向哈希表和所述反向哈希表中;或者,

若所述第二会话信息包括所述正向冲突标识和所述反向冲突标识,则从所述缓存队列中查找与所述第二会话信息具有相同正向五元组或相同反向五元组的第一会话信息,将所述第一会话信息添加至所述正向哈希表和所述反向哈希表中。

在一种可能的实现方式中,在所述将所述第一会话信息缓存至缓存队列中之后,所述方法还包括:

若所述第一会话信息在所述缓存队列中的缓存时间达到预设时长,则将所述第一会话信息删除。

第二方面,本申请实施例提供一种会话备份装置,所述方法应用于备业务板,所述装置包括:

接收模块,用于接收主业务板发送的备份报文,所述备份报文携带第一会话信息;

判断模块,用于判断已备份的会话信息中,是否存在与所述第一会话信息冲突的第二会话信息;

缓存模块,用于若所述判断模块确定存在与所述第一会话信息冲突的第二会话信息,且所述第一会话信息对应的第一会话的创建时间晚于所述第二会话信息对应的第二会话的创建时间,则将所述第一会话信息缓存至缓存队列中;

备份模块,用于当所述第二会话信息被删除时,对所述缓存队列中缓存的所述第一会话信息进行备份。

在一种可能的实现方式中,所述装置还包括:

丢弃模块,用于若存在与所述第一会话信息冲突的第二会话信息,且所述第一会话的创建时间早于所述第二会话的创建时间,则丢弃所述第一会话信息。

在一种可能的实现方式中,所述第一会话信息包括所述第一会话对应的正向五元组、反向五元组以及所述第一会话的创建时间;所述判断模块,具体用于:

计算所述正向五元组的第一正向哈希值以及所述反向五元组的第一反向哈希值;

判断正向哈希表中是否存在所述第一正向哈希值,且反向哈希表中是否存在所述第一反向哈希值;所述正向哈希表用于存储已备份的会话信息对应的正向哈希值、正向五元组以及创建时间;所述反向哈希表用于存储已备份的会话信息对应的反向哈希值、反向五元组以及创建时间;

若所述正向哈希表中存在所述第一正向哈希值,且所述反向哈希表中不存在所述第一反向哈希值,则确定存在与所述第一会话信息冲突的第二会话信息,且所述第一会话信息与所述第二会话信息的冲突哈希值为所述第一正向哈希值;或者,

若所述正向哈希表中不存在所述第一正向哈希值,且所述反向哈希表中存在所述第一反向哈希值,则确定存在与所述第一会话信息冲突的第二会话信息,且所述冲突哈希值为所述第一反向哈希值;或者,

若所述正向哈希表中存在所述第一正向哈希值,且所述反向哈希表中存在所述第一反向哈希值,则确定存在与所述第一会话信息冲突的第二会话信息,且所述冲突哈希值为所述第一正向哈希值和所述第一反向哈希值。

在一种可能的实现方式中,所述装置还包括:添加模块;所述添加模块,具体用于:

若所述冲突哈希值为所述第一正向哈希值,则在所述正向哈希表中所述第一正向哈希值对应的会话信息中添加正向冲突标识,所述正向冲突标识用于表示所述第一会话信息与所述第二会话信息的正向五元组相同;或者,

若所述冲突哈希值为所述第一反向哈希值,则在所述反向哈希表中所述第一反向哈希值对应的会话信息中添加反向冲突标识,所述反向冲突标识用于表示所述第一会话信息与所述第二会话信息的反向五元组相同;或者,

若所述冲突哈希值为所述第一正向哈希值和所述第一反向哈希值,则在所述正向哈希表中所述第一正向哈希值对应的会话信息中添加所述正向冲突标识,和/或在所述反向哈希表中所述第一反向哈希值对应的会话信息中添加所述反向冲突标识。

在一种可能的实现方式中,所述备份模块,具体用于:

当删除所述第二会话信息时,判断所述第二会话信息是否包括正向冲突标识和/或反向冲突标识;

若所述第二会话信息包括所述正向冲突标识,则从所述缓存队列中查找与所述第二会话信息具有相同正向五元组的第一会话信息,将所述第一会话信息添加至所述正向哈希表和所述反向哈希表中;或者,

若所述第二会话信息包括所述反向冲突标识,则从所述缓存队列中查找与所述第二会话信息具有相同反向五元组的第一会话信息,将所述第一会话信息添加至所述正向哈希表和所述反向哈希表中;或者,

若所述第二会话信息包括所述正向冲突标识和所述反向冲突标识,则从所述缓存队列中查找与所述第二会话信息具有相同正向五元组或相同反向五元组的第一会话信息,将所述第一会话信息添加至所述正向哈希表和所述反向哈希表中。

在一种可能的实现方式中,所述装置还包括:

删除模块,用于若所述第一会话信息在所述缓存队列中的缓存时间达到预设时长,则将所述第一会话信息删除。

第三方面,本申请实施例提供一种备份设备,该备份设备包括:处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令,所述处理器被所述机器可执行指令促使:实现第一方面中所述的方法。

第四方面,本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现第一方面中所述的方法。

第五方面,本申请实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面中所述的方法。

因此,采用本申请实施例提供的会话备份的方法,若当前需要备份的第一会话信息与已备份的第二会话信息冲突,则可将第一会话信息缓存至缓存队列中,然后当第二会话信息被删除时,对缓存队列中缓存的第一会话信息进行备份。可见即使第一会话信息与已备份的第二会话信息冲突,也不会导致第一会话信息备份失败,解决了现有技术中由于备份表项冲突而导致的会话信息备份失败的问题,提高了业务可靠性。

当然,实施本申请的任一产品或方法并不一定需要同时达到以上所述的所有优点。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本申请实施例提供的一种会话备份系统的结构示意图;

图2为本申请实施例提供的一种会话备份方法的流程图;

图3为本申请实施例提供的一种会话备份方法的示例性示意图;

图4为本申请实施例提供的一种会话备份装置的结构示意图;

图5为本申请实施例提供的一种备份设备的结构示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

为了方便理解,首先对本申请实施例中涉及到的术语进行解释说明。

1、会话:一条数据流首次经过一个设备时,该设备会为该数据流创建一个会话,后续设备接收到与该会话匹配的数据流,可直接根据会话信息对数据流进行转发。如果一段时间内设备未接收到与该会话匹配的数据流,则删除该会话对应的会话信息。

会话信息的五元组为数据流的源ip地址、源port、protocol(协议)、目的ip地址、目的port。设备可以将会话信息以键-值(key-value)的形式存储于哈希表中,具体可以将五元组作为key,一个会话的会话信息包括一个正向key和一个反向key,分别用于正向报文(发送端发送给设备的报文)和反向报文(设备向发送端返回的报文)的匹配。正向key的源ip地址和源port是反向key的目的ip地址和目的port。

为了提高匹配会话的性能,可以分别计算正向key和反向key的哈希值,将正向key和反向key分别以各自的哈希值为索引挂在哈希表上。

2、nat转换后的正向key、反向key:

若本申请实施例涉及到的设备为连接两个网络的边缘设备,则需要对接收到的报文中的ip地址和端口号进行nat转换。

以下为对源ip地址和源端口号进行nat转换为例。

其中,正向key为nat转换前的:源ip地址、源port、protocol、目的ip、目的port。

反向key的目的ip地址是将上述源ip地址进行nat转换后得到的natip地址,目的port是将上述源port进行nat转换后得到的natport。即反向key为:源ip地址、源port、protocol、natip地址、natport。

示例性地,若设备接收到的数据流的源ip地址为ip地址1、源port为port1;目的地址为ip地址2、目的port为port2。ip地址1经nat转换后为ip地址a,port1经nat转换后为porta。

若正向key为:ip地址1、port1、protocol、ip2、port2。

则反向key为:ip2、port2、protocol、ip地址a、porta。

为方便描述,本申请实施例中将正向key所在的哈希表称为正向哈希表,将反向key所在的哈希表称为反向哈希表。且将正向key称为正向五元组,将反向key称为反向五元组。

本申请实施例提供的方法可以应用于如图1所示的会话备份系统中,该备份系统中包括主业务板和备业务板。

其中,主业务板用于为接收到的数据流创建会话,并将会话信息备份至备业务板。备业务板用于对主业务板创建的会话对应的会话信息进行备份。

当主业务板故障时,可将流量切换至备业务板,备业务板可根据备份的会话信息对数据流进行转发。

本申请实施例中的主业务板和备业务板可以分别部署在不同的多核设备上,也可以部署在同一个多核设备上。多核设备是指具有多个虚拟中央处理器(virtualcentralprocessingunit,vcpu)的设备,一个vcpu可作为一个核。

为了解决由于备份的会话信息冲突而导致的会话信息备份失败的问题,本申请实施例中备业务板接收到备份报文后,可判断已备份的会话信息中是否存在与第一会话信息冲突的第二会话信息,若存在与第一会话信息冲突的第二会话信息,且第一会话信息对应的第一会话的创建时间晚于第二会话信息对应的第二会话的创建时间,说明第一会话是新创建的会话,则将第一会话信息缓存至缓存队列中,然后当第二会话信息被删除时,对缓存队列中缓存的第一会话信息进行备份,可以避免将冲突的第一会话信息丢弃而导致的备份失败,提高业务的可靠性。

本申请实施例提供一种会话备份方法,该方法应用于图1中的备业务板,如图2所示,该方法包括:

s201、接收主业务板发送的备份报文,备份报文携带第一会话信息。

其中,备份报文用于指示备业务板对第一会话信息进行备份。第一会话信息包括第一会话对应的正向五元组、反向五元组以及第一会话的创建时间。

其中,主业务板在创建第一会话时,可在第一会话信息中新增一个字段,用于携带第一会话的创建时间。

s202、判断已备份的会话信息中,是否存在与第一会话信息冲突的第二会话信息。

备业务板可计算正向五元组的第一正向哈希值以及反向五元组的第一反向哈希值,然后判断正向哈希表中是否存在第一正向哈希值,且反向哈希表中是否存在第一反向哈希值。

其中,正向哈希表用于存储已备份的会话信息对应的正向哈希值、正向五元组以及创建时间;反向哈希表用于存储已备份的会话信息对应的反向哈希值、反向五元组以及创建时间。

可以理解的是,一个会话对应的会话信息可包括正向五元组和反向五元组,该会话信息的正向五元组和创建时间可挂在正向哈希表中,反向五元组和创建时间可挂在反向哈希表中。可选地,正向哈希表中存储的会话信息中还包括该会话信息的反向哈希值的指针,相应的,反向哈希表中存储的会话信息中也包括会话信息的正向哈希值的指针。

第一会话信息与第二会话信息具体存在以下三种冲突的情形:

情形一、若正向哈希表中存在第一正向哈希值,且反向哈希表中不存在第一反向哈希值,则确定存在与第一会话信息冲突的第二会话信息,且第一会话信息与第二会话信息的冲突哈希值为第一正向哈希值。换言之,若正向哈希表中存在第一正向哈希值,说明备业务板已备份了与第一会话信息具有相同正向哈希值的第二会话信息,即第一会话信息和第二会话信息的正向五元组相同,第一会话信息与第二会话信息冲突。

情形二、若正向哈希表中不存在与第一正向哈希值,且反向哈希表中存在第一反向哈希值,则确定存在与第一会话信息冲突的第二会话信息,且冲突哈希值为第一反向哈希值。换言之,若反向哈希表中存在第一反向哈希值,说明备业务板已备份了与第一会话信息具有相同反向哈希值的第二会话信息,即第一会话信息和第二会话信息的反向五元组相同,第一会话信息与第二会话信息冲突。

情形三、若正向哈希表中存在第一正向哈希值,且反向哈希表中存在第一反向哈希值,则确定存在与第一会话信息冲突的第二会话信息,且冲突哈希值为第一正向哈希值和第一反向哈希值。

s203、若存在与第一会话信息冲突的第二会话信息,且第一会话信息对应的第一会话的创建时间晚于第二会话信息对应的第二会话的创建时间,则将第一会话信息缓存至缓存队列中。

对应于s202中的三种情形,s203可以有以下三种实现方式:

方式一、若冲突哈希值为第一正向哈希值,且第一会话的创建时间晚于第二会话的创建时间,则将第一会话信息的正向五元组缓存至缓存队列中。

若第一会话的创建时间晚于第二会话的创建时间,说明第一会话是新会话,为避免第一会话信息由于与第二会话信息冲突而被丢弃,可将第一会话信息的正向五元组和第一会话信息的指针缓存至缓存队列中。其中,第一会话信息的指针指向存储第一会话信息的内存地址,即通过该指针可获取第一会话信息。

可选地,还可以只将第一会话信息的正向五元组缓存至缓存队列中。本申请实施例不限制缓存队列中的信息的存储形式,可根据实际需求设置,当第二会话信息被删除时,能够通过缓存队列中存储的信息查找到与第二会话信息冲突的第一会话信息即可。

方式二、若冲突哈希值为第一反向哈希值,且第一会话的创建时间晚于第二会话的创建时间,则将第一会话信息的反向五元组和第一会话信息的指针缓存至缓存队列中。

方式三、若冲突哈希值为第一正向哈希值和第一反向哈希值,且第一会话的创建时间晚于第二会话的创建时间,则将第一会话信息的正向五元组和第一会话信息的指针缓存至缓存队列中,或者将第一会话信息的反向五元组和第一会话信息的指针缓存至缓存队列中。

在方式三中,第一会话信息与第二会话信息的正向五元组和反向五元组均相同,所以在缓存队列中存储正向五元组和反向五元组这两者中的任意一个,当删除第二会话信息时,均可在缓存队列中查找到与该第二会话信息冲突的第一会话信息的指针,进而根据指针查找到第一会话信息。

在上述三种方式中,缓存队列中以双链表的形式缓存相应的内容,或者以哈希值为索引缓存相应的内容。以方式一为例,可以将第一会话信息的正向五元组和第一会话信息的指针以双链表的形式缓存在缓存队列中,或者将第一会话信息的正向五元组和第一会话信息的指针以第一正向哈希值为索引缓存在缓存队列中。

s204、当第二会话信息被删除时,对缓存队列中缓存的第一会话信息进行备份。

可以理解的是,若第二会话信息被删除,则备业务板中没有与第一会话信息冲突的会话信息,则可以对暂时缓存在缓存队列中的第一会话信息进行备份。

因此,采用本申请实施例提供的会话备份的方法,若当前需要备份的第一会话信息与已备份的第二会话信息冲突,则可将第一会话信息缓存至缓存队列中,然后当第二会话信息被删除时,对缓存队列中缓存的第一会话信息进行备份。可见即使第一会话信息与已备份的第二会话信息冲突,也不会导致第一会话信息备份失败,解决了现有技术中由于备份表项冲突而导致的会话信息备份失败的问题,提高了业务可靠性。

可选地,在本申请实施例提供的另一种实现方式中,若存在与第一会话信息冲突的第二会话信息,且第一会话信息的创建时间早于第二会话信息的创建时间,则丢弃第一会话信息。

其中,若第一会话信息的创建时间早于第二会话信息的创建时间,说明第一会话信息为旧会话,第二会话信息为新会话,可能是由于第一会话信息还没被备份,主业务板就已经故障,并将数据流切换至了备业务板。即在备业务板还未对第一会话信息进行备份的情况下,就先根据数据流创建了第二会话信息,所以此时无需对第一会话信息进行备份,可丢弃第一会话信息。

可选地,在本申请实施例的一种可能的实现方式中,为了支持上述步骤s204、当第二会话信息被删除时,对缓存队列中缓存的第一会话信息进行备份的执行,若确定存在与第一会话信息冲突的第二会话信息,且第一会话信息的创建时间晚于第二会话信息的创建时间,则可以为第二会话信息添加冲突标识。

对应于上述s202中的三种情形,为第二会话信息添加冲突标识分别具有以下三种实现方式:

方式一、若冲突哈希值为第一正向哈希值,则在正向哈希表中第一正向哈希值对应的会话信息中添加正向冲突标识。其中,正向冲突标识用于表示第一会话信息与第二会话信息的正向五元组相同。

可以理解的是,第一会话信息和第二会话信息的正向哈希值相同,即第一正向哈希值也是第二会话信息的正向五元组的哈希值,可在正向哈希表中第一正向哈希值对应的第二会话信息中增加一个字段,在该字段中添加正向冲突标识。

当删除第二会话信息时,可判断第二会话信息是否包括正向冲突标识和/或反向冲突标识。

对应于方式一,第二会话信息中包括正向冲突标识,则可从缓存队列中查找与第二会话信息具有相同正向五元组的第一会话信息,将第一会话信息添加至正向哈希表和反向哈希表中。

可以理解的,若第二会话信息中包括正向冲突标识,说明缓存队列中存储了与第二会话信息冲突的第一会话信息的正向五元组,可从缓存队列中查找第二会话信息的正向五元组,并根据缓存队列中存储的该正向五元组对应的指针获取第一会话信息,将第一会话信息分别存储在正向哈希表和反向哈希表中,从而实现对第一会话信息的备份。

方式二、若冲突哈希值为第一反向哈希值,则在反向哈希表中第一反向哈希值对应的会话信息中添加反向冲突标识。其中,反向冲突标识用于表示第一会话信息与第二会话信息的反向五元组相同。

可以理解的是,若冲突哈希值为第一反向哈希值,即第一反向哈希值也是第二会话信息的反向五元组的哈希值,可在反向哈希表中第一反向哈希值对应的第二会话信息中增加一个字段,在该字段中添加正向冲突标识。

对应于方式二,若第二会话信息包括反向冲突标识,则可从缓存队列中查找与第二会话信息具有相同反向五元组的第一会话信息,将第一会话信息添加至正向哈希表和所述反向哈希表中。

可以理解的是,若第二会话信息包括反向冲突标识,说明缓存队列中存储了与第二会话信息冲突的第一会话信息的反向五元组,可从缓存队列中查找第二会话信息的反向五元组,并根据缓存队列中存储的该反向五元组对应的指针获取第一会话信息,将第一会话信息分别存储在正向哈希表哈反向哈希表中,从而实现对第一会话信息的备份。

方式三、若冲突哈希值为第一正向哈希值和第一反向哈希值,则在正向哈希表中第一正向哈希值对应的会话信息中添加正向冲突标识,和/或在反向哈希表中第一反向哈希值对应的会话信息中添加反向冲突标识。

若冲突哈希值为第一正向哈希值和第一反向哈希值,说明第一会话信息与第二会话信息的正向五元组和反向五元组均相同,所以可以只添加正向冲突标识,当删除第二会话信息时,可根据上述方式一来查找第一会话信息,并对第一会话信息进行备份。或者只添加反向冲突标识,当删除第二会话信息时,可根据上述方式二来查找第一会话信息,并对第一会话信息进行备份。

或者既添加正向冲突标识,又添加反向冲突标识,当删除第二会话时,可从缓存队列中查找第二会话信息的正向五元组或反向五元组。以查找到正向五元组为例,可根据缓存队列中存储的该正向五元组对应的指针获取第一会话信息,并检验第一会话信息的反向五元组与第二会话信息的反向五元组是否相同,若相同,则对第一会话信息进行备份。

即对应于方式三,当删除第二会话信息时,若第二会话信息包括正向冲突标识和/或反向冲突标识,则从缓存队列中查找与第二会话信息具有相同正向五元组或相同反向五元组的第一会话信息,将第一会话信息添加至正向哈希表和反向哈希表中。

可选地,若第一会话信息在缓存队列中的缓存时间达到预设时长,可将第一会话信息删除。

采用本申请实施例提供的备份方法,当第一会话信息与第二会话信息冲突,且第一会话信息的创建时间晚于第二会话信息的创建时间时,可将第一会话信息缓存在缓存队列中,并为第二会话信息添加正向冲突标识和/或反向冲突标识,可以使得在第二会话信息被删除时,及时对第一会话信息进行备份,提高了业务可靠性。

以下结合两种具体的场景对本申请实施例提供的会话备份方法进行说明。

场景一、如图3所示,主业务板和备业务板分别有5个核,会话备份流程具体包括以下步骤。

s301、主业务板2核接收到数据流1后,创建会话a,在会话信息a中添加会话创建时间,并通知备业务板的3核备份会话信息a。

示例性地,会话信息a的正向五元组为:ip地址1、port1、protocol、ip地址2、port2。

则反向五元组为:ip地址2、port2、protocol、ip地址a、porta。

ip地址a、porta分别为对ip地址1、port1进行nat转换得到的。

会话a的创建时间为12:00。

s302、会话a老化,主业务板的2核通知备业务板的3核删除会话信息a。

s303、主业务板5核接收到数据流2,创建会话b,在会话信息b中添加会话创建时间,并通知备业务板的6核备份会话信息b。

其中,数据流2的源ip地址为ip地址3,源port为port3。数据流2与数据流1的目的ip地址和目的port相同,分别为ip地址2、port2。

会话b的创建时间为12:01

此时会话a已经老化,会话a使用的ip地址a、porta已被释放,所以可将数据流2的ip地址3、port3经nat转换为ip地址a、porta。

所以,会话信息b的正向五元组为:ip地址3、port3、protocol、ip地址2、port2。

反向五元组为:ip地址2、port2、protocol、ip地址a、porta。

可见,会话信息b的反向五元组与会话信息a的反向五元组相同。

在上述流程中,若备业务板的6核繁忙程度小于3核的繁忙程度,可能会出现备业务板的3核还未删除会话信息a,6核就开始对会话信息b进行备份的情况,由于会话信息a和会话信息b的反向五元组相同,所以反向哈希值也相同。6核计算会话信息b的反向哈希值之后,发现反向哈希表中已存储了该反向哈希值,则可从反向哈希表中获取该反向哈希值对应的会话信息a的创建时间,并将其与会话信息b的创建时间进行比较。

经比较,确定会话信息a的创建时间12:00,早于会话信息b的创建时间,则可将会话信息b的反向五元组和会话信息b的指针缓存至缓存队列中,并为会话a的反向五元组对应的会话信息添加反向冲突标识。

在备业务板执行s302中的删除会话信息a的指令时,发现会话a的反向五元组对应的会话信息中包括反向冲突标识,则将会话信息a删除,从缓存队列中找到该反向五元组,根据该反向五元组对应的指针获取会话信息b,并将会话信息b添加至哈希表中。

可见,采用该方法避免了由于会话信息a和会话信息b的反向五元组冲突,而导致会话信息b备份失败的问题。

场景二、

主业务板接收到数据流3,创建会话c,在会话信息c中添加会话创建时间,并通知备业务板备份会话信息c。

在备业务板还未接收到备份会话信息c的指令时,主业务板故障,数据流1被切换至备业务板,备业务板发现自身未存储与数据流1匹配的会话,则为数据流1创建会话d,并在会话信息d中添加会话创建时间。

可以理解的是,由于会话c和会话d是针对同一数据流创建的,所以会话信息c和会话信息d的正向五元组相同,且会话信息c和会话信息d的反向五元组相同。

在备业务板创建会话d后,接收到了备份会话信息c的指令,由于会话信息c和会话信息d相同,所以备业务板可确定会话信息c与会话信息d冲突,此时备业务板可比较会话c和会话d的创建时间,会话c的创建时间早于会话d的创建时间,则备业务板丢弃会话信息d。

可见,应用本申请实施例,若备业务板接收到的会话信息与已存储的会话信息冲突,且接收到的会话信息对应的会话的创建时间早于已存储的会话的创建时间,说明自身已存储了新的会话信息,所以可将旧的会话信息删除。可以避免主业务板故障后,在备业务板已为切换来的数据流创建会话后,又接收到对同一会话信息的备份指令,导致的会话信息备份冲突的现象。

对应于上述方法实施例,本申请实施例还提供一种会话备份装置,该方法应用于备业务板,如图4所示,该装置包括:接收模块401、判断模块402、缓存模块403和备份模块404。

接收模块401,用于接收主业务板发送的备份报文,备份报文携带第一会话信息。

判断模块402,用于判断已备份的会话信息中,是否存在与第一会话信息冲突的第二会话信息。

缓存模块403,用于若判断模块402确定存在与第一会话信息冲突的第二会话信息,且第一会话信息对应的第一会话的创建时间晚于第二会话信息对应的第二会话的创建时间,则将第一会话信息缓存至缓存队列中。

备份模块404,用于当第二会话信息被删除时,对缓存队列中缓存的第一会话信息进行备份。

可选地,该装置还包括:

丢弃模块,用于若存在与第一会话信息冲突的第二会话信息,且第一会话的创建时间早于第二会话的创建时间,则丢弃第一会话信息。

可选地,第一会话信息包括第一会话对应的正向五元组、反向五元组以及第一会话的创建时间。

判断模块402,具体用于:

计算正向五元组的第一正向哈希值以及反向五元组的第一反向哈希值;

判断正向哈希表中是否存在第一正向哈希值,且反向哈希表中是否存在第一反向哈希值;正向哈希表用于存储已备份的会话信息对应的正向哈希值、正向五元组以及创建时间;反向哈希表用于存储已备份的会话信息对应的反向哈希值、反向五元组以及创建时间;

若正向哈希表中存在第一正向哈希值,且反向哈希表中不存在第一反向哈希值,则确定存在与第一会话信息冲突的第二会话信息,且第一会话信息与第二会话信息的冲突哈希值为第一正向哈希值;

若正向哈希表中不存在第一正向哈希值,且反向哈希表中存在第一反向哈希值,则确定存在与第一会话信息冲突的第二会话信息,且冲突哈希值为第一反向哈希值;

若正向哈希表中存在第一正向哈希值,且反向哈希表中存在第一反向哈希值,则确定存在与第一会话信息冲突的第二会话信息,且冲突哈希值为第一正向哈希值和第一反向哈希值。

可选地,该装置还包括:添加模块。

添加模块,具体用于:

若冲突哈希值为第一正向哈希值,则在正向哈希表中第一正向哈希值对应的会话信息中添加正向冲突标识,正向冲突标识用于表示第一会话信息与第二会话信息的正向五元组相同;或者,

若冲突哈希值为第一反向哈希值,则在反向哈希表中第一反向哈希值对应的会话信息中添加反向冲突标识,反向冲突标识用于表示第一会话信息与第二会话信息的反向五元组相同;或者,

若冲突哈希值为第一正向哈希值和第一反向哈希值,则在正向哈希表中第一正向哈希值对应的会话信息中添加正向冲突标识,和/或在反向哈希表中第一反向哈希值对应的会话信息中添加反向冲突标识。

可选地,备份模块404,具体用于:

当删除第二会话信息时,判断第二会话信息是否包括正向冲突标识和/或反向冲突标识;

若第二会话信息包括正向冲突标识,则从缓存队列中查找与第二会话信息具有相同正向五元组的第一会话信息,将第一会话信息添加至正向哈希表和反向哈希表中;或者,

若第二会话信息包括反向冲突标识,则从缓存队列中查找与第二会话信息具有相同反向五元组的第一会话信息,将第一会话信息添加至正向哈希表和反向哈希表中;或者,

若第二会话信息包括正向冲突标识和反向冲突标识,则从缓存队列中查找与第二会话信息具有相同正向五元组或相同反向五元组的第一会话信息,将第一会话信息添加至正向哈希表和反向哈希表中。

可选地,该装置还包括:删除模块,用于若第一会话信息在缓存队列中的缓存时间达到预设时长,则将第一会话信息删除。

本申请实施例还提供了一种备份设备,具体可以为上述实施例中的备业务板,如图5所示,包括处理器501、通信接口502、存储器503和通信总线504,其中,处理器501,通信接口502,存储器503通过通信总线504完成相互间的通信,

存储器503,用于存放计算机程序;

处理器501,用于执行存储器503上所存放的程序时,实现上述方法实施例中由备份设备执行的步骤。

上述备份设备提到的通信总线可以是外设部件互连标准(peripheralcomponentinterconnect,pci)总线或扩展工业标准结构(extendedindustrystandardarchitecture,eisa)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。

通信接口用于上述备份设备与其他设备之间的通信。

存储器可以包括随机存取存储器(randomaccessmemory,ram),也可以包括非易失性存储器(non-volatilememory,nvm),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。

上述的处理器可以是通用处理器,包括中央处理器(centralprocessingunit,cpu)、网络处理器(networkprocessor,np)等;还可以是数字信号处理器(digitalsignalprocessing,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现场可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。

在本申请提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述任一会话备份方法的步骤。

在本申请提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一会话备份方法。

在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘solidstatedisk(ssd))等。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

以上所述仅为本申请的较佳实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本申请的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1