隧道报文认证转发方法及系统与流程

文档序号:16582613发布日期:2019-01-14 18:06阅读:401来源:国知局
隧道报文认证转发方法及系统与流程

本公开涉及计算机网络领域,具体地,涉及一种隧道报文认证转发方法及系统。



背景技术:

随着计算机技术的发展,基于隧道技术可以实现不同协议的数据帧或包之间的数据传输,即基于隧道技术对原始报文进行外部封装,以获得隧道报文,并将该隧道报文在隧道中进行转发,以实现跨协议的数据传输。

现有技术中,在基于异构平台的网络转发系统中,通常将cpu划分成两类,一类是转发cpu,运行于用户态,用于基于会话表对报文进行转发;一类是逻辑cpu,运行于内核态,用于对隧道报文进行加解密处理,从而将处理后的报文发送至转发cpu,以由转发cpu进行转发。然而,在该过程中不仅需要在运行于用户态的转发cpu和运行与内核态的逻辑cpu之间进行多次切换,而且,需要对隧道报文和原始报文分别创建会话表以实现报文的转发,增加了会话表资源的占用及需要维护的数据量。



技术实现要素:

为了解决上述问题,本公开提供一种隧道报文认证转发方法及系统。

为了实现上述目的,根据本公开的第一方面,提供一种隧道报文认证转发方法,所述方法包括:

当前转发cpu对接收到的预设类型的隧道报文进行解封装,获得解封报文,所述解封报文为所述隧道报文去除掉外层首部后所得报文,所述当前转发cpu为隧道报文认证转发系统中的任一转发cpu,所述系统中的转发cpu运行在用户态;

当所述解封报文为非认证报文时,所述当前转发cpu根据所述解封报文查询所述系统中已创建的会话表;

在所述当前转发cpu未查询到与所述解封报文相对应的会话表时,当前转发cpu根据所述解封报文查询认证表,以确定是否能够为所述解封报文创建会话表项;

当确定能够为所述解封报文创建会话表项时,目标转发cpu根据所述解封报文和会话表相关信息,在所述目标转发cpu对应的会话表中创建会话表项,并基于该会话表项对所述解封报文进行转发,其中,所述会话表相关信息至少包括所述隧道报文的所述外层首部,所述目标转发cpu为所述系统中,用于接收所述解封报文对应的回复报文的转发cpu。

可选地,在当前转发cpu确定能够为所述解封报文创建会话表项之后,在所述目标转发cpu根据所述解封报文和会话表相关信息,在所述目标转发cpu对应的会话表中创建会话表项,并基于该会话表项对所述解封报文进行转发的步骤之前,所述方法还包括:

所述当前转发cpu根据所述解封报文确定所述目标转发cpu;

若所述目标转发cpu不是所述当前转发cpu,所述当前转发cpu将所述解封报文与所述会话表相关信息发送至所述目标转发cpu。

可选地,所述当前转发cpu根据所述解封报文确定目标转发cpu,包括:

所述当前转发cpu根据所述解封报文的内层首部中的五元组确定是否需要进行源地址转换;

在确定需要进行源地址转换时,所述当前转发cpu对所述解封报文的内层首部中的五元组进行源地址转换,获得目标五元组,并根据所述目标五元组确定与所述解封报文对应的回复报文的五元组;

在确定不需要进行源地址转换时,所述当前转发cpu根据所述内层首部中的五元组确定与所述解封报文对应的回复报文的五元组;

所述当前转发cpu根据所述回复报文的五元组,通过所述当前转发cpu所处的当前设备的网卡硬件的rss算法确定所述目标转发cpu。

可选地,在所述当前转发cpu进行了源地址转换的情况下,所述会话表相关信息还包括所述目标五元组;

所述目标转发cpu根据所述解封报文和会话表相关信息,在所述目标转发cpu对应的会话表中创建会话表项,包括:

在所述当前转发cpu进行了源地址转换的情况下,所述目标转发cpu根据所述解封报文的内层首部中的五元组和所述目标五元组创建会话表项;在所述当前转发cpu未进行源地址转换的情况下,所述目标转发cpu根据所述解封报文的内层首部中的五元组创建会话表项;

所述目标转发cpu在所创建的会话表项中存储所述外层首部。

可选地,所述方法还包括:

所述目标转发cpu在接收到所述解封报文对应的回复报文时,根据所述回复报文的五元组查询所述目标转发cpu对应的会话表,以确定与所述回复报文相对应的目标会话表项;

所述目标转发cpu根据所述目标会话表项中存储的所述外层首部对所述回复报文进行封装,获得封装的回复报文并对所述封装的回复报文进行转发。

可选地,所述方法还包括:

在所述当前转发cpu查询到与所述解封报文相对应的会话表时,若所述查询到的会话表不是当前转发cpu对应的会话表,所述当前转发cpu将所述解封报文发送至所述查询到的会话表对应的转发cpu;

所查询到的会话表对应的转发cpu根据所述解封报文查询该会话表,并基于查询到的会话表项对所述解封报文进行转发。

可选地,所述方法还包括:

当所述解封报文为认证报文时,若所述当前转发cpu不作为所述系统中的认证cpu,所述当前转发cpu将所述解封报文发送至所述系统中的所述认证cpu,以由所述认证cpu对所述解封报文携带的认证信息进行认证,其中,所述系统中的一个转发cpu被指定作为所述认证cpu。

可选地,所述方法还包括:

所述认证cpu在接收到所述解封报文时,在对所述解封报文携带的认证信息进行认证通过后,根据所述认证信息更新所述认证表;

在所述认证表中已更新但未同步的认证表项的数量达到预设阈值或者距离上次生成同步报文的时长达到预设时长时,所述认证cpu将所述认证表中已更新但未同步的认证表项确定为本次待生成的目标同步报文的数据部分;根据所述认证cpu所处的当前设备和待同步的高可用设备的地址信息、以及所述待同步的高可用设备的网卡硬件的rss算法确定所述目标同步报文的同步五元组;基于所述数据部分和所述同步五元组生成所述目标同步报文,其中,所述目标同步报文用于所述待同步的高可用设备的认证cpu对该高可用设备的认证表进行同步处理;

所述认证cpu根据预设的同步协议对所述目标同步报文进行封装,获得同步封装报文,并将所述同步封装报文发送至所述待同步的高可用设备的认证cpu。

根据本公开的第二方面,提供一种隧道报文认证转发系统,所述系统包括:

网卡;

至少一个转发cpu,运行在用户态,与所述网卡通信,所述转发cpu被配置为执行上述转发cpu所执行方法的步骤。

可选地,所述系统还包括:

认证cpu,运行在用户态,所述认证cpu被配置为至少执行上述认证cpu所执行方法的步骤。

可选地,所述系统还包括:

至少一个逻辑cpu,运行在内核态,与所述至少一个转发cpu一一对应进行通信,所述逻辑cpu用于对接收到的非预设类型的隧道报文进行解密操作,获得解密报文,以及对所述解密报文对应的回复报文进行加密。

在上述技术方案中,当前转发cpu可以对接收到的预设类型的隧道报文进行解封装,获得解封报文;在该解封报文为非认证报文、且在系统中未查询到解封报文对应的会话表时,在确定可以对该解封报文创建会话表项的情况下,根据隧道报文的外层首部与该解封报文创建对应的会话表项,从而对解封报文进行转发。因此,通过上述技术方案,既可以有效减少报文转发过程中cpu之间的切换,有效保证隧道报文认证系统的转发性能;又可以将隧道报文的外层首部与解封报文的会话表项相关联,避免现有技术中为隧道报文和解封报文分别创建会话表项造成的资源占用。同时,通过将会话表与隧道映射关系相结合,也可以有效降低数据维护量,提高隧道报文认证系统的性能。

本公开的其他特征和优点将在随后的具体实施方式部分予以详细说明。

附图说明

附图是用来提供对本公开的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本公开,但并不构成对本公开的限制。在附图中:

图1是根据本公开的一种实施方式提供的隧道报文认证转发方法的流程图;

图2是当前转发cpu根据所述解封报文确定目标转发cpu的一种示例性实现方式的流程图;

图3是当前转发cpu与认证cpu之间的交互图。

具体实施方式

以下结合附图对本公开的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本公开,并不用于限制本公开。

根据本公开的实施方式提供的隧道报文认证转发系统是基于隧道技术实现的,在该系统中,在基于隧道技术对报文进行转发时,可以采用不固定源ip地址的方式对报文进行封装,如,通过vpn(virtualprivatenetwork,虚拟专用网络)进行报文转发。在基于不固定源ip地址的隧道技术进行报文转发时,可以通过报文进行封装后的目的ip地址和目的端口号确定其是否为隧道报文。示例地,可以预先设置隧道报文对应的目的ip地址和目的端口号,因此,在接收到报文时,则可以将符合预先设置的目的ip地址和目的端口号的报文确定为隧道报文。

如背景技术中所述,对于隧道报文而言,由于其封装有外层首部,转发cpu在接收到隧道报文时,需要将该隧道报文发送至运行在内核态的逻辑cpu中,由逻辑cpu去除掉隧道报文的外层首部,从而获得解封报文。之后逻辑cpu将解封报文发送至转发cpu,以由转发cpu对解封报文进行转发或丢弃。然而在上述过程中,不仅需要进行多次cpu之间的切换,使得系统的转发性能受到用户态和内核态之间的通道性能的局限;而且由于逻辑cpu运行在内核态,其处理需要占用大量的内核资源。

然而,在基于ipip(ipoverip)和gre(genericroutingencapsulation,通用路由封装)的隧道技术对报文进行封装时,其封装的外层首部及传输数据是未通过加密算法进行加密和压缩的。示例地,ipip隧道技术是使用在两个路由器间对ip数据包进行封装的简单协议,即将一个完整的数据包作为另一个数据包的数据部分,在该过程中,并不需要进行加解密等复杂的处理操作。因此,在本公开的技术方案中,对于上述未通过加密算法进行加解密或者压缩、解压缩操作的报文,可以由转发cpu进行解封装或封装操作,以避免切换至内核态的逻辑cpu中对其进行处理。

基于此,本公开提供一种隧道报文认证转发方法。图1所示,为根据本公开的一种实施方式提供的隧道报文认证转发方法的流程图。如图1所示,所述方法包括:

在s11中,当前转发cpu对接收到的预设类型的隧道报文进行解封装,获得解封报文,所述解封报文为所述隧道报文去除掉外层首部后所得报文,所述当前转发cpu为隧道报文认证转发系统中的任一转发cpu,所述系统中的转发cpu运行在用户态。

其中,该预设类型的隧道报文可以是通过上文所述的ipip或gre或者其他未通过加密算法进行加密的隧道技术所得的隧道报文。其中,由于该隧道报文的外层首部未通过加密算法进行加密或压缩,因此,可以直接由转发cpu对其进行解封装。

在s12中,当解封报文为非认证报文时,当前转发cpu根据解封报文查询系统中已创建的会话表。

在s13中,在当前转发cpu未查询到与解封报文相对应的会话表时,当前转发cpu根据解封报文查询认证表,以确定是否能够为解封报文创建会话表项。

当前转发cpu可以访问该系统的中各个转发cpu创建的会话表。认证表中存储有认证信息及对应的匹配策略,该匹配策略可以初步判断接收的报文是否合法,即是否可以根据该报文创建会话表项。

示例地,当前转发cpu根据解封报文的五元组查询系统的各个会话表,在查询到与其五元组对应的会话表项时,表示当前转发cpu查询到与解封报文相对应的会话表。其中,解封报文相对应的会话表即为包含解封报文的五元组对应的会话表项的会话表。

因此,当前转发cpu未查询到与解封报文相对应的会话表时,表示在系统中尚未创建与解封报文对应的会话表项,此时,当前转发cpu可以根据解封报文查询认证表,以确定是否能够为解封报文创建会话表项。

在s14中,当确定能够为解封报文创建会话表项时,目标转发cpu根据解封报文和会话表相关信息,在目标转发cpu对应的会话表中创建会话表项,并基于该会话表项对解封报文进行转发,其中,所述会话表相关信息至少包括所述隧道报文的所述外层首部,所述目标转发cpu为所述系统中,用于接收所述解封报文对应的回复报文的转发cpu。

其中,目标转发cpu可以是当前转发cpu,也可以是其他转发cpu,其确定方式在下文进行详述。

在一实施例中,在当前转发cpu根据解封报文查询认证表,并根据认证表中的对应的匹配策略确定解封报文合法时,确定可以根据该解封报文创建会话表项。之后,目标转发cpu便可以根据解封报文和会话表相关信息为解封报文创建会话表项。

在另一实施例中,在当前转发cpu根据解封报文查询认证表,并根据认证表中的对应的匹配策略确定解封报文不合法时,确定不可以根据该解封报文创建会话表项,此时,当前转发cpu可以直接丢弃该解封报文。

其中,目标转发cpu在创建会话表项时,可以根据隧道报文的所述外层首部为解封报文创建会话表项,因此,可以为解封报文和隧道报文创建同一会话表项,同时也可以使得隧道报文的外层首部与解封报文的会话表项相关联。

在上述技术方案中,当前转发cpu可以对接收到的预设类型的隧道报文进行解封装,获得解封报文;在该解封报文为非认证报文、且在系统中未查询到解封报文对应的会话表时,在确定可以对该解封报文创建会话表项的情况下,根据隧道报文的外层首部与该解封报文创建对应的会话表项,从而对解封报文进行转发。因此,通过上述技术方案,既可以有效减少报文转发过程中cpu之间的切换,有效保证隧道报文认证转发系统的转发性能;又可以将隧道报文的外层首部与解封报文的会话表项相关联,避免现有技术中为隧道报文和解封报文分别创建会话表项造成的资源占用。同时,通过将会话表与隧道映射关系相结合,也可以有效降低数据维护量,提高隧道报文认证转发系统的性能。

可选地,在当前转发cpu确定能够为所述解封报文创建会话表项之后,在所述目标转发cpu根据所述解封报文和会话表相关信息,在所述目标转发cpu对应的会话表中创建会话表项,并基于该会话表项对所述解封报文进行转发的步骤之前,所述方法还包括:

当前转发cpu根据解封报文确定目标转发cpu。

若目标转发cpu不是当前转发cpu,当前转发cpu将解封报文与会话表相关信息发送至目标转发cpu。

其中,当前转发cpu在未查询到与解封报文相对应的会话表时,表示当前系统中不存在转发该解封报文所需的会话表项,则需要先创建该解封报文对应的会话表项才能对该解封报文进行转发。

随着接入internet的计算机数量的不断猛增,ip地址资源也就愈加显得捉襟见肘。因此,多个计算机采用nat(networkaddresstranslation,网络地址转换)的方式通过内部ip地址与internet进行通信,即通过nat将其内部ip地址转换成对应的公有ip地址,从而实现与internet的通信。其中,在系统中存储有snat(sourcenetworkaddresstranslation,源网络地址转换)策略,其中包括需要进行源网络地址转换的源ip地址和转换后的ip地址的对应关系的网络地址转换配置。

可选地,所述当前转发cpu根据所述解封报文确定目标转发cpu的一种示例性实现方式如下,如图2所示,包括:

在s21中,当前转发cpu根据解封报文的内层首部中的五元组确定是否需要进行源地址转换。

在s22中,在确定需要进行源地址转换时,当前转发cpu对解封报文的内层首部中的五元组进行源地址转换,获得目标五元组,并根据目标五元组确定与解封报文对应的回复报文的五元组。

其中,当前转发cpu可以根据网络地址转换配置中的对应关系对解封报文的内层首部中的五元组进行源地址转换,获得目标五元组。示例地,可以将所述目标五元组中的源ip地址和目的ip地址互换,并将所述目标五元组中的源端口号和目的端口号互换后所得的五元组确定为回复报文的五元组。示例地,解封报文的内层首部中的五元组表示为:

sip,sport,dip,dport,protocol);

目标五元组表示为:trans_sip,trans_sport,dip,dport,protocol);

因此,在该实施例中,回复报文的五元组则可以表示为:

dip,dport,trans_sip,trans_sport,protocol)。

其中,sip表示解封报文的内层首部中的五元组的源ip地址;

sport表示解封报文的内层首部中的五元组的源端口号;

dip表示解封报文的内层首部中的五元组的目的ip地址;

dport表示解封报文的内层首部中的五元组的目的端口号;

protocol表示解封报文对应的通信协议;

trans_sip表示所述目标五元组中的源ip地址;

trans_sport表示所述目标五元组中的源端口号。

在s23中,在确定不需要进行源地址转换时,当前转发cpu根据内层首部中的五元组确定与解封报文对应的回复报文的五元组。

其中,在确定不需要进行源地址转换时,当前cpu可以直接将解封报文的内层首部中的五元组中的源ip地址和目的ip地址互换、源端口号和目的端口号互换后所得的五元组确定为与解封报文对应的回复报文的五元组。因此,在该实施例中,回复报文的五元组则可以表示为:

dip,dport,sip,sport,protocol)。

在s24中,当前转发cpu根据回复报文的五元组,通过所述当前转发cpu所处的当前设备的网卡硬件的rss算法确定目标转发cpu。

其中,rss(receivesidescaling)是一种能够在多处理器系统下使接收到的报文在多个cpu之间高效分发的网卡驱动技术。根据五元组基于rss算法,确定出接收五元组对应的报文的转发cpu的方式为现有技术,在此不再赘述。

在上述技术方案中,通过所述当前转发cpu所处的当前设备的网卡硬件的rss算法确定目标转发cpu,可以有效保证该系统的负载均衡,从而保证该系统的健壮性和高效性。

在上述技术方案中,在目标转发cpu,即接收所述解封报文对应的回复报文的转发cpu中创建解封报文对应的会话表项,使得目标转发cpu在接收到与该解封报文对应的回复报文时,可以直接根据其创建的会话表项对回复报文进行转发,不需要进行转发cpu之间的切换,进一步提高转发效率。

可选地,在所述当前转发cpu进行了源地址转换的情况下,所述会话表相关信息还包括所述目标五元组;

所述目标转发cpu根据所述解封报文和会话表相关信息,在所述目标转发cpu对应的会话表中创建会话表项的一种示例性实现方式如下,包括:

在所述当前转发cpu进行了源地址转换的情况下,所述目标转发cpu根据所述解封报文的内层首部中的五元组和所述目标五元组创建会话表项;在所述当前转发cpu未进行源地址转换的情况下,所述目标转发cpu根据所述解封报文的内层首部中的五元组创建会话表项;

所述目标转发cpu在所创建的会话表项中存储所述外层首部。

在一实施例中,当前转发cpu进行了源地址转换,则会根据解封报文的五元组得到其对应的目标五元组,示例地,目标转发cpu创建如下会话表项:

sip,sport,dip,dport,protocol)

dip,dport,trans_sip,trans_sport,protocol)

因此,在目标转发cpu接收到的报文的五元组对应上述会话表项时,目标转发cpu便可以基于上述会话表项对其进行转发。另外,目标转发cpu根据所述解封报文的内层首部中的五元组创建会话表项的方式与上文所述方式类似,在此不再赘述。其中,若所述解封报文为分片报文,则将各个分片报文重组后将分片重组信息存储在所述外层首部中。

在上述技术方案中,通过将隧道报文的外层首部存储在解封报文对应的会话表项中,可以将会话表和隧道映射表相结合,以避免同时维护大量的会话表和隧道映射表,有效降低该隧道报文认证转发系统的维护的数据量,从而提高该系统的并发性能和转发性能,降低该系统维护的复杂度。

可选地,所述方法还包括:

所述目标转发cpu在接收到所述解封报文对应的回复报文时,根据所述回复报文的五元组查询所述目标转发cpu对应的会话表,以确定与所述回复报文相对应的目标会话表项;

所述目标转发cpu根据所述目标会话表项中存储的所述外层首部对所述回复报文进行封装,获得封装的回复报文并对所述封装的回复报文进行转发。

在该实施例中,由于目标转发cpu为用于接收解封报文对应的回复报文的转发cpu,且由目标转发cpu创建解封报文对应的会话表项,因此,在目标转发cpu接收到解封报文对应的回复报文时,其对应的会话表项是在该目标转发cpu中创建的。此时,目标转发cpu只需要根据该回复报文的五元组查询目标转发cpu对应的会话表即可确定与该回复报文对应的目标会话表项,既可以有效降低会话表的查询量,又使得在转发回复报文时不需要进行转发cpu之间的切换,进一步提高转发效率。

在隧道报文认证转发系统中,当接收到回复报文时,需要对该回复报文进行封装,之后将封装之后的报文转发出去。现有技术中,系统中存储有单独存在的隧道映射表,其用于对回复报文进行封装。一个隧道映射表下可以对应有多个会话表项,当该隧道映射表项下的所有会话表项都删除之后,该隧道映射表项才可以删除。因此,在上述过程中,在对回复报文进行转发时,需要基于该回复报文确定其对应的会话表项,并基于该会话表项确定其对应的隧道映射表项,从而根据该隧道映射表项对回复报文进行封装。

因此,在本公开中,转发cpu在创建会话表项时,将隧道报文的外层首部存储到该会话表项中,则在目标转发cpu查询到目标会话表项时,可以直接根据该目标会话表项中存储的外层首部对回复报文进行封装。示例地,可以将该存储的外层首部的五元组中的源ip地址和目的ip地址互换、源端口号、目的端口号互换后所得的五元组确定为回复报文封装后的报文的五元组。

通过上述技术方案,将隧道映射表和会话表相结合,可以有效降低该隧道报文认证转发系统的维护数据量。同时,在对回复报文进行转发时,在确定出其对应的会话表项,可以直接、快速确定出其对应的隧道映射关系,从而可以提高报文封装的效率,进一步提高系统的转发效率,提升用户使用体验。

转回图1,在所述当前转发cpu查询到与所述解封报文相对应的会话表时,表示系统中已创建有与解封报文对应的会话表项。其中,根据该查询到的会话表项可以确定出解封报文相对应的会话表所在的转发cpu。

可选地,所述方法还包括:

在所述当前转发cpu查询到与所述解封报文相对应的会话表时,若所述查询到的会话表不是当前转发cpu对应的会话表,所述当前转发cpu将所述解封报文发送至所述查询到的会话表对应的转发cpu;

所查询到的会话表对应的转发cpu根据所述解封报文查询该会话表,并基于查询到的会话表项对所述解封报文进行转发。

在该实施例中,当查询到的与所述解封报文相对应的会话表不是当前转发cpu对应的会话表时,当前转发cpu需要将该解封报文发送至相应的转发cpu进行转发。也就是说,在查询到与所述解封报文相对应的会话表时,只有创建该会话表的转发cpu可以对该解封报文进行转发,其他的cpu只可以对该会话表进行查询访问,基于会话表的操作无需加锁,进一步提升隧道报文认证转发系统的转发性能。并且,查询到的会话表对应的转发cpu可以只查询其自身对应的会话表便可以确定出解封报文对应的会话表项,有效降低会话表的查询范围,提高查询速度。

在另一实施例中,若所述查询到的会话表是当前转发cpu对应的会话表,当前转发cpu可以直接根据该会话表中与解封报文对应的会话表项对所述解封报文进行转发。

可选地,所述方法还包括:

当所述解封报文为认证报文时,若所述当前转发cpu不作为所述系统中的认证cpu,所述当前转发cpu将所述解封报文发送至所述系统中的所述认证cpu,以由所述认证cpu对所述解封报文携带的认证信息进行认证,其中,所述系统中的一个转发cpu被指定作为所述认证cpu。

当解封报文中携带有认证信息时,可以确定其为认证报文。在本公开中,只有认证cpu可以对认证报文进行认证。其中,认证cpu为转发cpu中的一者。

在一实施例中,认证cpu只被配置为实现认证报文相关的认证操作。则,当解封报文为认证报文时,当前转发cpu将解封报文发送至认证cpu。

在另一实施例中,认证cpu被配置为实现认证报文相关的认证操作和对报文的转发操作。则,当解封报文为认证报文时,当前转发cpu在确定其不是该隧道报文认证转发系统中的认证cpu时,当前转发cpu将解封报文发送至认证cpu;若当前转发cpu为系统中的认证cpu时,可以直接由当前转发cpu(即,系统中的认证cpu)对该解封报文进行认证。

在上述技术方案中,在隧道报文认证转发系统中的转发cpu中指定一个作为认证cpu,以对解封报文中的认证信息进行认证。由于在系统中只配置了一个认证cpu,即系统中的认证操作只由一个cpu执行,可以有效保证隧道报文认证转发系统的转发效率。另一方面,由于在系统中只有认证cpu进行认证操作,即只有认证cpu可以实现对认证的相关资源的更改。因此,在认证cpu在更新认证的相关资源时,不会出现多核操作冲突。因此,通过上述技术方案,可以保证多核下、认证cpu更新认证资源时,不需要进行加锁操作,有效保证隧道报文认证转发系统的整体性能,保证数据的准确性和可维护性。

可选地,如图3所示,为当前转发cpu与认证cpu之间的交互图,如图所示:

在s31中,所述认证cpu在接收到解封报文时,在对解封报文携带的认证信息进行认证通过后,根据认证信息更新认证表。

其中,认证cpu可以对解封报文携带的认证信息进行认证。示例地,该认证信息中可以包括用户名和密码以及认证标记符,其中,该认证标记符可以表征对认证表的更新操作,示例地,可以是新建、编辑、删除。例如,解封报文所携带的认证信息中包括用户名和密码、认证标记符类型为新建。认证cpu则将该用户名和密码与数据库中存储的用户名、密码进行比对,在比对一致时,确定该解封报文认证通过,此时,在认证表中新建一认证表项,以用于存储该用户名和密码。同时,在认证通过后,也可以向发送该认证报文的终端反馈一认证通过的通知消息。其中,认证cpu对解封报文中携带的认证信息进行认证的方式为现有技术,在此不再赘述。

为了提高隧道报文认证转发系统的健壮性,在系统中通常会设置ha(highavailable,高可用)架构,即会设置多个设备同步该认证信息表,其中,在多个设备中,可以指定一个为主设备,其他为备用设备,当主设备出现故障时,可以直接启用备用设备,以保证系统的转发性能。因此,主设备和备用设备之间需要确定其认证信息为同步信息,以保证系统的安全性。

因此,在主设备对认证表进行更新后,需要与备用设备同步该更新后的认证表。

在s32中,在认证表中已更新但未同步的认证表项的数量达到预设阈值或者距离上次生成同步报文的时长达到预设时长时,认证cpu将认证表中已更新但未同步的认证表项确定为本次待生成的目标同步报文的数据部分;根据认证cpu所处的当前设备和待同步的高可用设备的地址信息、以及所述待同步的高可用设备的网卡硬件的rss算法确定所述目标同步报文的同步五元组,基于所述数据部分和所述同步五元组生成所述目标同步报文,其中,所述目标同步报文用于所述待同步的高可用设备的认证cpu对该高可用设备的认证表进行同步处理。其中,在该隧道报文认证转发系统中,当前设备为主设备,待同步的高可用设备则为该ha架构中的待同步该认证表的备用设备。

在一实施例中,该预设阈值可以基于经验设置,示例地,该预设阈值可以为32。在该实施例中,当认证表中已更新但未同步的认证表项个数为32时,将该32个认证表项作为本次待生成的目标同步报文的数据部分;同时,基于所述认证cpu所处的当前设备和待同步的高可用设备的地址信息,可以确定出该目标同步报文的同步五元组中的源ip地址和目的ip地址以及通信协议,因此,可以通过所述待同步的高可用设备的网卡硬件的rss算法确定该目标同步报文的同步五元组,从而生成该目标同步报文。

其中,在通过所述待同步的高可用设备的网卡硬件的rss算法确定该目标同步报文的同步五元组,可以设定同步五元组的源端口号,从而确定出目的端口号;或者也可以设定同步五元组的目的端口号,从而确定出源端口号;或者也可以同时确定源端口号和目的端口号。其中,根据所述待同步的高可用设备的网卡硬件的rss算法计算确定五元组为现有技术,在此不再赘述。

在另一实施例中,当所述认证表项的更新数量较少时,为了保证当前设备和待同步的高可用设备的高可用性及认证表的高同步性,可以在距离上次生成同步报文的时长达到预设时长时,对待同步的高可用设备的认证表进行同步处理。示例地,该预设时长可以为0.1ms,即在距离上次生成同步报文的时长为0.1ms时,无论此时认证表中已更新但未同步的认证表项的数量为多少,都会对该认证表进行同步处理。示例地,若此时认证表中已更新但未同步的认证表项的数量为20个,则会将该认证表中的该20个已更新但未同步的认证表项作为本次待生成的目标同步报文的数据部分,进而生成目标同步报文。其中,生成目标同步报文的方式在上文已经详述,在此不再赘述。

在s33中,认证cpu根据预设的同步协议对目标同步报文进行封装,获得同步封装报文,并将同步封装报文发送至待同步的高可用设备的认证cpu。

其中,为了确定当前设备与待同步的高可用设备之间同步的安全性和有效性,可以预设各个同步设备之间传输目标同步报文所使用的同步协议,则可以根据同步设备之间的同步协议对目标同步报文进行封装并转发。

因此,通过上述技术方案,既可以有效降低当前设备与待同步的高可用设备之间同步的频率,又可以保证当前设备和待同步的高可用设备之间的认证表的高同步性,从而提高隧道报文认证转发系统的高可用性,提升用户使用体验。

另外,在生成目标同步报文时,通过待同步的高可用设备的网卡硬件的rss算法确定同步五元组,从而可以使得同步封装报文可以直接发送至待同步的高可用设备的认证cpu,即,该同步封装报文发送至待同步的高可用设备时,可以由待同步的高可用设备的认证cpu所接收,使得待同步的高可用对目标同步报文进行处理时,不需要进行cpu切换,有效保证同步效率,同时也可以有效提高系统的健壮性。

可选地,当前转发cpu在接收到非预设类型的隧道报文时,需要将该非预设类型的隧道报文发送至逻辑cpu,以由其对该隧道报文进行解密,获得解密报文。之后逻辑cpu将该解密报文发送至转发cpu,以由转发cpu对该解密报文进行转发或丢弃。需要进行说明的是,当前转发cpu在接收到非预设类型的隧道报文,对该隧道报文进行处理的具体实施方式为现有技术,在此不再赘述。

本公开还提供一种隧道报文认证转发系统,所述系统包括:

网卡;

至少一个转发cpu,运行在用户态,与所述网卡通信,所述转发cpu被配置为执行转发cpu所执行方法的步骤。

可选地,所述系统还包括:

认证cpu,运行在用户态,所述认证cpu被配置为至少执行上述认证cpu所执行方法的步骤。

其中,在该隧道报文认证转发系统中,可以从转发cpu中预先指定一者作为认证cpu。在一实施例中,该认证cpu可以只被配置为实现认证报文相关的认证操作,即该认证cpu可以只执行上述认证cpu所执行方法的步骤。在另一实施例中,认证cpu可以被配置为实现认证报文相关的认证操作和对报文的转发操作,即该认证cpu可以执行上述转发cpu和认证cpu所执行方法的步骤。其中,具体实施方式在上文已经详述,在此不再赘述。

可选地,所述系统还包括:

至少一个逻辑cpu,运行在内核态,与所述至少一个转发cpu一一对应进行通信,所述逻辑cpu用于对接收到的非预设类型的隧道报文进行解密操作,获得解密报文,以及对所述解密报文对应的回复报文进行加密。

关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。

以上结合附图详细描述了本公开的优选实施方式,但是,本公开并不限于上述实施方式中的具体细节,在本公开的技术构思范围内,可以对本公开的技术方案进行多种简单变型,这些简单变型均属于本公开的保护范围。

另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合。为了避免不必要的重复,本公开对各种可能的组合方式不再另行说明。

此外,本公开的各种不同的实施方式之间也可以进行任意组合,只要其不违背本公开的思想,其同样应当视为本公开所公开的内容。

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