数据报文的处理方法、装置及设备与流程

文档序号:13937457阅读:240来源:国知局
数据报文的处理方法、装置及设备与流程

本申请涉及通信技术领域,尤其涉及一种数据报文的处理方法、装置及设备。



背景技术:

现有技术中,为了管理和控制用户的上网情况,需要对网络流量进行实时控制和管理。目前,可以通过多种方式来实现对网络流量的控制和管理。例如,可以通过软件定义网络(softwaredefinednetwork,简称sdn)来对网络流量进行控制。具体地,sdn是一种新型的网络架构,其核心技术是将数据转发和规则控制分离,从而实现了网络流量的灵活控制,为核心网络及应用的创新提供了良好的平台。

在sdn网络架构中,数据转发主要由交换机来实现,规则控制由控制器来实现。控制器向交换机下发流表生成规则,交换机根据该流表生成规则来建立流表。其中,每个交换机维护一张流表,每个流表中包括多个流表项。每个流表项就是一个转发规则。每个流表项主要包括匹配域、计数器和操作行为。对于流表项的具体结构,下文将详细说明。交换机在收到数据报文之后,将该数据报文的地址信息与每个流表项中的匹配域进行匹配,在匹配成功之后,根据匹配成功的流表项中的操作行为对该数据报文进行处理。

然而,现有技术中的流表项只针对单向的数据报文,对于存在会话的双向数据报文,还是通过单向的流表项来实现,并没有提供具有针对双向数据报文的处理方式,导致交换机处理繁琐,性能下降。



技术实现要素:

本发明提供一种数据报文的处理方法、装置及设备,以提供针对双向数据报文的处理方式,以提高交换机的性能。

一方面,本发明提供一种数据报文的处理方法,包括:

获取第一节点发送的第一数据报文;

根据所述第一数据报文的地址信息,在流表中查找与所述第一数据报文匹配的会话流表项,所述会话流表项中包括所述第一节点与第二节点对应的网络会话的当前会话状态,所述当前会话状态用于指示所述第一节点与第二节点的访问关系,所述第二节点为所述第一数据报文的接收端;

若查找成功,根据所述会话流表项对所述第一数据报文进行处理。

在一种可能的设计中,所述会话流表项中还包括所述第一节点至第二节点的第一流表项以及所述第二节点至所述第一节点的第二流表项。

在一种可能的设计中,所述根据所述会话流表项对所述第一数据报文进行处理,包括:

根据所述第一流表项以及所述当前会话状态,对所述第一数据报文进行处理。

在一种可能的设计中,所述根据所述第一流表项以及所述当前会话状态对所述第一数据报文进行处理,包括:

根据所述当前会话状态预测所述第一数据报文对应的正常会话状态;

判断所述第一数据报文对应的实际会话状态是否与所述正常会话状态一致;

若否,则丢弃所述第一数据报文;

若是,则根据所述第一流表项中的操作行为将所述第一数据报文转发至所述第二节点。

通过会话流表项中的当前会话状态来预测下一个数据报文对应的正常会话状态,若下一个数据报文对应的实际会话状态是否与正常会话状态不一致,则丢弃该下一个数据报文,实现了对例如ack之类的泛洪攻击的防范。

在一种可能的设计中,所述根据所述第一流表项中的操作行为将所述第一数据报文转发至所述第二节点之后,还包括:

对所述当前会话状态进行更新,得到更新后的当前会话状态。

在一种可能的设计中,所述第一节点与所述第二节点通过状态通信协议相互访问,所述当前会话状态具体为状态通信协议中的各会话状态。

在一种可能的设计中,所述获取所述第一节点发送的第一数据报文之前,还包括:

获取所述第一节点或所述第二节点发送的第二数据报文,确定所述第二数据报文为所述第一节点与所述第二节点进行网络会话的首数据报文;

根据所述第二数据报文的地址信息,建立所述会话流表项;

根据所述会话流表项对所述第二数据报文进行处理。

在一种可能的设计中,若查找失败,则所述方法还包括:

确定所述第一数据报文为所述第一节点与所述第二节点进行网络会话的首数据报文;

根据所述第一数据报文的地址信息,建立所述会话流表项;

根据所述会话流表项对所述第一数据报文进行处理。

在一种可能的设计中,所述第一流表项中包括第一匹配域,所述第一匹配域中的源地址为所述第一节点的地址,目的地址为所述第二节点的地址;

所述第二流表项中包括第二匹配域,所述第二匹配域中的源地址为所述第二节点的地址,目的地址为所述第一节点的地址。

在一种可能的设计中,所述会话流表项中还包括私有数据结构。

在一种可能的设计中,所述第一节点与所述第二节点为虚拟机,所述第一节点与所述第二节点设置在同一宿主机上,或者所述第一节点与所述第二节点设置在不同的宿主机上。

在一种可能的设计中,所述会话流表项对应一个数据结构体,所述第一流表项和所述第二流表项分别通过一个哈希桶管理。

另一方面,本发明提供一种数据报文的处理装置,包括:

获取模块,用于获取第一节点发送的第一数据报文;

查找模块,用于根据所述第一数据报文的地址信息,在流表中查找与所述第一数据报文匹配的会话流表项,所述会话流表项中包括所述第一节点与第二节点对应的网络会话的当前会话状态,所述当前会话状态用于指示所述第一节点与第二节点的访问关系,所述第二节点为所述第一数据报文的接收端;

处理模块,用于在所述查找模块查找成功时,根据所述会话流表项对所述第一数据报文进行处理。

又一方面,本发明提供一种数据报文的处理设备,包括:

接收器,用于获取第一节点发送的第一数据报文;

处理器,耦合至所述接收器,用于根据所述第一数据报文的地址信息,在流表中查找与所述第一数据报文匹配的会话流表项,所述会话流表项中包括所述第一节点与第二节点对应的网络会话的当前会话状态,所述当前会话状态用于指示所述第一节点与第二节点的访问关系,所述第二节点为所述第一数据报文的接收端;

所述处理器,还用于在查找成功时,根据所述会话流表项对所述第一数据报文进行处理。

本实施例提供的数据报文的处理方法、装置及设备,该方法通过获取第一节点发送的第一数据报文;根据第一数据报文的地址信息,在流表中查找与所述第一数据报文匹配的会话流表项,若查找成功,根据所述会话流表项对所述第一数据报文进行处理,且该会话流表项中包括第一节点与第二节点对应的网络会话的当前会话状态等,提供了一种针对双向数据报文的处理方式,可以解决例如报文泛红攻击等问题,以提高交换机的处理性能。

附图说明

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

图1为本发明一实施例提供的基于软件定义网络的组网架构示意图;

图2为现有技术提供的五元组流表的结构示意图;

图3为现有技术提供的数据报文的信令流程图;

图4为本发明一实施例提供的数据报文的处理方法的信令流程图;

图5为本发明一实施例提供的基于软件定义网络的组网架构示意图;

图6为本发明一实施例提供的数据报文处理方法的流程示意图;

图7为本发明一实施例提供的流表项的结构示意图;

图8为本发明一实施例提供的数据报文的处理方法的信令流程图;

图9为本发明一实施例提供的五元组流表示意图;

图10为本发明一实施例提供的数据报文的处理装置;

图11为本发明一实施例提供的数据报文的处理设备。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。

为了清楚起见,首先说明本发明使用的特定词或短语的定义。

虚拟机(virtualmachine,简称vm):基于虚拟化技术的软件模拟计算机。

物理机:相对于虚拟机而言的实体计算机。

虚拟交换机(vswitch):运行在虚拟机所在宿主机上的基于软件实现的交换机模块。

物理交换机:相对于虚拟交换机而言的实体交换机。

网络连接:又称为网络会话等,表示端到端在网络上交互的所有信息,一般包括两个方向上的两条网络流和连接状态,该连接状态又称为会话状态。例如网元a访问网元b的方向,以及网元b回访网元a的方向。

首数据报文:本实施例所涉及的首数据报文,是指网元a与网元b对应的网络会话的首包。例如,网元a向网元b发送数据报文p,网元b向网元a回复数据报文q,则数据报文p为首数据报文。

图1为本发明一实施例提供的基于软件定义网络的组网架构示意图。如图1所示,软件定义网络(softwaredefinednetwork,简称sdn)核心思想是将传统网络设备的数据转发(dataplane,数据面)和规则控制(controlplane,控制面)两个模块相分离,通过集中式的控制器(controller)以标准化的接口对网络设备进行管理和配置。

安全通道是连接交换机到控制器的接口,控制器通过这个接口控制和管理交换机。交换机和控制器通过安全通道进行通信,各交互信息按照openflow协议规定的格式来执行。

控制器可以获取网络配置和管理信息等,且控制器可以通过主动式或被动式的方式向交换机下发流表生成策略。交换机根据该流表生成策略以及数据报文的地址信息生成流表项。其中,每个交换机维护一个流表,每个流表由很多流表项组成,每个流表项就是一个转发规则。图2为现有技术提供的五元组流表的结构示意图。如图2所示,流表通过哈希表把openflow的流组织起来,由于只考虑单个方向上的报文,每条流只有单向的五元组及基于该五元组计算的哈希键值以及报文操作行为。物理机向交换机发送的数据报文,交换机根据该数据报文的地址信息,查询流表中与该数据报文匹配的流表项,根据该匹配的流表项来获得转发的目的端口。

其中,流表项主要包括匹配域、计数器和操作行为。其中,匹配域是流表项的标识,即流表项的匹配项,包括五元组信息或者七元组信息等,即源地址、目的地址、源端口、目的端口等信息,用于与数据报文的地址信息进行匹配。计数器用来计数流表项的统计数据;操作行为表明了该流表项匹配的数据报文应该执行的操作,例如转发数据报文到目的端口、转发数据包到控制器、丢弃数据包、送到正常的处理流程等。

下面结合现有技术和具体应用场景,对上述方法实施例的具体应用以及解决的技术问题,进行详细说明。为了便于描述,本实施例所涉及的第一节点、第二节点具体可以为下述的网元a或网元b。

图3为现有技术提供的数据报文的信令流程图。如图3所示,以网元a通过传输控制协议(transmissioncontrolprotocol,简称tcp)协议访问网元b为例,基于流表的报文处理方法具体如下:网元a首先向网元b发送tcpsync报文尝试建立连接,虚拟交换机会在流表中建立网元a至网元b的流表项(a→b),之后网元b回复tcpack给网元a,虚拟交换机会在流表中建立网元b至网元a(b→a)的流表项,最后网元a回复tcpack给网元b,则命中已经建立的a→b的流表项。在该现有技术中,流表中有两条独立的流表项:a→b以及a→b。

在现有技术中,在状态防火墙的场景中,对于网络会话的首包,虚拟交换机需要检查一次访问控制列表(accesscontrollist,简称acl)来确定该首包是否具有访问权限。其中,acl是路由器和交换机接口的指令列表,用来控制端口进出的数据报文,保证网络资源不被非法使用和访问。虚拟交换机在检查完acl列表之后,如果该网元a至网元b的数据报文满足转发规则,那网元b至网元a的回复包就无需检查acl了。

然而,在现有技术中,当网元a向网元b发送数据报文,例如tcpsync数据报文时,虚拟交换机查找acl,若网元a至网元b的数据报文满足转发规则,则会建立a→b的流表项,并将该tcpsync报文转发给网元b。对于网元b发给网元a的数据报文,即上述网元b发送tcpack给网元a,此时,虚拟交换机在建立b→a的流表项之后,并不知道是否已经建立了a→b的流表项,即虚拟交换机无法判断网元b发给网元a的数据报文是否是网元b至网元a对应的网络会话的首包。因此,在建立该b→a的流表项之后,还需要再一次查找流表,以确定是否存在a→b的流表项,若存在,则网元b发给网元a的数据报文是非首包,不需要在检查acl了,若不存在,则网元b发给网元a的数据报文时首包,需要检查acl。即现有技术在状态防火墙场景中,在建立b→a的流表项之后,需要再一次查流表,以确定是否需要检查acl,不仅增加了流表生成规则的复杂性,还降低了虚拟交换机的处理性能。

针对现有技术的状态防火墙场景,需要再一次查找流表的问题,本实施例通过会话流表项中包括第一流表项和第二流表项即可解决。具体可如图4实施例所示。

图4为本发明一实施例提供的数据报文的处理方法的信令流程图。如图4所示,网元a首先向网元b发送tcpsync报文尝试建立连接,虚拟交换机会建立会话流表项,该会话流表项中包括网元a至网元b的流表项(a→b),以及网元b至网元a(b→a)的流表项。当网元b给网元a回复tcpack时,会直接命中之前已经建立好的会话流表项,最后当网元b回复网元a一个tcpack完成三次握手,也会命中之前的会话流表项。

当本实施例应用在状态防火墙中时,当网元a向网元b发送数据报文时,例如tcpsync数据报文时,虚拟交换机查找acl,若网元a至网元b的数据报文满足转发规则,则会建立a→b,b→a的流表项,后续的数据报文无论哪个方向都会命中会话流表项。例如,对于网元b回复网元a的tcpack报文,会直接命中a→b,b→a的流表项,虚拟交换机直接将数据报文转发至网元a,既不需要再创建一次流表项,也不需要查找流表以判断是否是首报文,减少了虚拟交换机的处理流程,提高了虚拟交换机的处理性能。

进一步地,由于会话流表项中包括第一流表项和第二流表项的双向流表项,即第一流表项和第二流表项时同时建立、同时存在的。那么,第一节点访问第二节点,以及第二节点访问第一节点时,只需要建立一次流表项,而现有技术中,则第一节点访问第二节点时,建立一次流表项,第二节点访问第一节点时,建立一次流表项,对于存在网络会话的场景,频繁的建立流表项将导致虚拟交换机的处理性能下降,而本发明相对于现有技术,建立流表项的过程减半,提高了虚拟交换机的处理性能。

本领域技术人员可以理解,上述的状态防火墙的场景仅为示意性的场景,在具体实现过程中,该会话流表项包括的第一流表项和第二流表项还可以应用到其它场景中,以提高虚拟交换机的处理性能,本实施例此处不再赘述。

在上述实施例中,该交换机具体为物理交换机,在具体实现过程中,该sdn还可以应用到虚拟机中,具体可如图5所示。图5为本发明一实施例提供的基于软件定义网络的组网架构示意图。如图5所示,在宿主机201上设置有虚拟交换机2011、虚拟机2012以及虚拟机2013。在宿主机202上设置有虚拟交换机2021、虚拟机2022以及虚拟机2023。

对于同一宿主机上设置的两个虚拟机,可以通过该宿主机上设置的虚拟交换机来进行数据报文的转发。例如,虚拟机2012的数据报文可以通过虚拟交换机2011转发至虚拟机2013。

对于不同宿主机上设置的两个虚拟机,可以通过每个宿主机上设置的虚拟交换机进行数据报文的转发。例如,虚拟机2012向虚拟机2022发送数据报文时,需要通过虚拟交换机2011和虚拟交换机2021来进行数据报文的转发。

本领域技术人员可以理解,本实施例中的虚拟交换机的功能相当于图1实施例中的虚拟机,可以与控制器进行通信,并生成流表。具体的实现方式可参见图1实施例所示,本实施例此处不做特别限制。

下面,通过具体实施例对本发明所示的技术方案进行详细说明,且下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。

图6为本发明一实施例提供的数据报文处理方法的流程示意图。本实施例的执行主体为交换机,该交换机可以为图1实施例中的物理交换机,也可以为图5实施例中的虚拟交换机。如图6所示,本实施例提供的方法包括:

步骤601、获取第一节点发送的第一数据报文;

步骤602、根据所述第一数据报文的地址信息,在流表中查找与所述地址信息匹配的会话流表项,所述会话流表项中包括第一节点与第二节点对应的网络会话的当前会话状态,所述当前会话状态用于指示所述第一节点与所述第二节点的访问关系,所述第二节点为所述第一数据报文的接收端;

步骤603、若查找成功,根据所述会话流表项对所述第一数据报文进行处理。

若本实施例应用于图1所示的场景中,则本实施例的执行主体为物理交换机,第一节点以及第二节点为能够接收和发送数据报文的物理机。

若本实施例应用于图5所示的“对于同一宿主机上设置的两个虚拟机”的场景中,则本实施例的执行主体为与各虚拟机位于同一宿主机上的虚拟交换机,第一节点以及第二节点为位于同一宿主机上的两个虚拟机。

若本实施例应用于图5所示的“对于不同宿主机上设置的两个虚拟机”的场景中,则本实施例的执行主体为每个宿主机上的各虚拟机对应的虚拟交换机,第一节点以及第二节点为位于不同宿主机上的两个虚拟机。例如,在图5中,本实施例的执行主体为虚拟交换机2011或虚拟交换机2021。

下面为了便于描述本实施例提供的方法,以执行主体为虚拟交换机,第一节点以及第二节点为与该虚拟交换机位于同一宿主机上的虚拟机为例,对本发明提供的数据报文的处理方法进行详细说明。对于其它类似的场景,可参照该描述,本实施例此处不再赘述。

在实际应用过程中,在第一节点向第二节点发送数据报文时,通常先向虚拟交换机发送数据报文,再由虚拟交换机根据数据报文的目的地址(ip地址和/或mac地址)对数据报文进行转发,以发送至第二节点。

具体地,在步骤601中,虚拟交换机在获取到第一节点发送的第一数据报文时,可以从该第一数据报文中获取地址信息,具体地可从第一数据报文的报文头中获取该地址信息。该地址信息可以为报文五元组、报文七元组或者报文十元组。以报文五元组为例,具体包括源ip地址,源端口,目的ip地址,目的端口和传输层协议。

在步骤602中,根据该地址信息,在流表中查找与该地址信息匹配的会话流表项。在本实施例中,每个虚拟交换机维护一个流表,该流表包括多个会话流表项,每个会话流表项都包括第一节点与第二节点对应的网络会话的当前会话状态,该当前会话状态用于指示所述第一节点与所述第二节点已发生的访问关系。例如,第一节点已访问第二节点,第二节点已访问第一节点。具体地,在网元a访问网元b之后,该当前会话状态具体为网元a已访问网元b,当网元b访问网元a之后,该当前会话状态对应的更新为网元b已访问网元a。

具体地,对于具有会话状态的状态通信协议,例如对于internet最常见的tcp协议,网络连接是一个有限状态的自动机,但这些都没有在现有的流表中进行体现。而这将带来一些问题,例如对于泛洪攻击,由于无法知道会话状态,则泛洪攻击也很难判断。具体请再次参见图3,在图3中,无法判断一个tcpack是三次握手中的ack回复还是established(建立连接)的ack,因此,对于诸如ack攻击之类的安全防范也很难去判断。

而在本实施例中,可以通过会话流表项中的当前会话状态来预测下一个数据报文对应的正常会话状态,若下一个数据报文对应的实际会话状态是否与正常会话状态不一致,则丢弃该下一个数据报文,实现了对例如ack之类的泛洪攻击的防范。

上述仅仅是列举了当前会话状态的一个具体应用的例子,本实施例提供的当前会话状态,还可以应用到其它场景中,本实施例此处不做特别限制。

可选地,在本实施例中,本实施例的会话流表项中还包括双向流表项,以网元a与网元b为例,每个会话流表项包括网元a至网元b的流表项以及网元b至网元a的流表项。

可选地,网元a至网元b的流表项中的源地址为网元a的地址、目的地址为网元b的地址,网元b至网元a的流表项中的源地址为网元b的地址,目的地址为网元a的地址。

因此,可根据该地址信息,在流表中查找与该地址信息匹配的会话流表项。即在各会话流表项中,查找源地址为第一节点的地址,目的地址为第二节点的地址的会话流表项,若查找到,则得到与该地址信息匹配的会话流表项,最终得到的匹配的会话流表项中包括第一节点至第二节点的第一流表项以及第二节点至第一节点的第二流表项。

可选地,第一流表项中包括第一匹配域,第一匹配域中的源地址为第一节点的地址,目的地址为第二节点的地址。第二流表项中包括第二匹配域,第二匹配域中的源地址为第二节点的地址,目的地址为第一节点的地址。

可选地,该会话流表项中还包括私有数据结构,该私有数据结构具体可以为网络地址转换(networkaddresstranslation,nat)的相关地址和端口信息。

图7为本发明一实施例提供的流表项的结构示意图。如图7所示,第一流表项的结构如701所示,第二流表项的结构如702所示。如701和702所示,例如,第一节点的ip地址为192.168.1.1,端口为1000,第二节点的ip地址为121.14.88.7680,端口为80。即第一流表项中的源ip地址与第二流表项中的目的地址相同,第一流表项中的目的地址与第二流表项中的源地址相同,第一流表项中的源端口为第二流表项中的目的端口,第一流表项中的目的端口为第二流表项中的源端口。计数器和操作行为的具体实现方式,可参见上述实施例,本实施例此处不再赘述。

在具体实现过程中,可将第一数据报文中的地址信息与各会话流表项中的第一匹配域和第二匹配域进行匹配,以得到与该第一数据报文匹配的会话流表项。在本实施例中,可以得到第一数据报文的地址信息与第一流表项的第一匹配域匹配,则确定包含该第一流表项的会话流表项为与该第一数据报文匹配的会话流表项。

在步骤603中,若查找到与该第一数据报文匹配的会话流表项,则根据该会话流表项对第一数据报文进行处理。具体地,可以根据第一流表项对该第一数据报文进行处理。在第一流表项中,除了包括第一匹配域之外,还可以包括计数器、操作行为等。

因此,可根据该第一流表项中的操作行为对该第一数据报文进行处理。如上所述,该操作行为可以为如下中的任一:转发数据报文到目的端口、转发数据包到控制器、丢弃数据包等。例如,当操作行为具体为转发数据报文到目的端口时,则将该第一数据报文转发至第二节点。

本实施例提供的数据报文的处理方法,获取第一节点发送的第一数据报文;根据第一数据报文的地址信息,在流表中查找与所述第一数据报文匹配的会话流表项,若查找成功,根据所述会话流表项对所述第一数据报文进行处理,且该会话流表项中包括第一节点与第二节点对应的网络会话的当前会话状态等,提供了一种针对双向数据报文的处理方式,可以解决例如报文泛红攻击等问题,以提高交换机的处理性能。

下面采用具体的实施例,以该第一数据报文为首数据报文或非首数据报文为例,来说明本实施例的流表中的会话流表项的建立过程。

一种可行的实现过程,该第一数据报文为首数据报文。具体地,当在流表中没有查找到与该第一数据报文匹配的会话流表项时,则确定第一数据报文为首数据报文;根据第一数据报文的地址信息,建立会话流表项;根据会话流表项对第一数据报文进行处理。

具体地,当虚拟交换机没有查找到第一数据报文匹配的会话流表项时,则可以确定该第一数据报文为首数据报文,则根据流表生成策略以及该第一数据报文的地址信息建立与第一数据报文匹配的会话流表项。即获取地址信息中的源地址(第一地址)和目的地址(第二地址),然后建立会话流表项,该会话流表项包括双向流表项,即源地址为第一地址、目的地址为第二地址的流表项,以及源地址为第二地址、目的地址为第一地址的流表项。

另一种可行的实现方式,该第一数据报文为非首数据报文。即在获取第一数据报文之前,就已经建立了会话流表项。具体地,获取第一节点或第二节点发送的第二数据报文,确定第二数据报文为第一节点与第二节点进行网络会话的首数据报文;根据第二数据报文的地址信息,建立会话流表项;根据会话流表项对第二数据报文进行处理。

在本实施例中,确定第二数据报文为首数据报文以及建立会话流表项的具体实现过程与上述实施例类似,本实施例此处不再赘述。

下面以一个具体的场景为例,来说明第一节点与第二节点相互访问的过程。当该第一节点与第二节点通过状态通信协议相互访问时,当前会话状态具体为状态通信协议中的各会话状态。在本实施例中,以tcp协议为例,结合图8进行详细说明。

图8为本发明一实施例提供的数据报文的处理方法的信令流程图。如图8所示,网元a首先向网元b发送tcpsync报文尝试建立连接,虚拟交换机建立会话流表项,该会话流表项中包括网元a至网元b的流表项(a→b)、b至网元a(b→a)的流表项以及当前会话状态syncsend状态。当网元b给网元a回复tcpack时,会直接命中之前已经建立好的会话流表项,同时,对当前会话状态进行更新,更新后的当前会话状态为syncrecv,b回复网元a一个tcpack完成三次握手,也会命中之前的会话流表项,并对当前会话状态进行更新,更新后的当前会话状态为established。

在本实施例中,由于当前会话状态已知,可以根据当前会话状态预测第一数据报文对应的正常会话状态;判断第一数据报文对应的实际会话状态是否与正常会话状态一致;若否,则丢弃第一数据报文;若是,则根据第一流表项中的操作行为将第一数据报文转发至第二节点。

具体地,请继续参见图8,当网元a向网元b发送了tcpsync报文之后,当前会话状态为syncsend,此时可以预测网元a与网元b之间通信的下一个数据报文对应的正常会话状态为syncrecv,即网元b向网元a发送tcpack报文,但如果虚拟交换机接收到的报文为网元a向网元b发送的tcpack,则对应的实际会话状态为established,与该正常会话状态不一致,则丢弃该数据报文;如果虚拟交换机接收到报文为网元b向网元a发送的tcpack报文,则对应的实际会话状态为syncrecv,与该正常会话状态一致,则根据第一流表项中的操作行为将第一数据报文转发至第二节点。

本实施例通过会话流表项中的当前会话状态来预测下一个数据报文对应的正常会话状态,若下一个数据报文对应的实际会话状态是否与正常会话状态不一致,则丢弃该下一个数据报文,实现了对例如ack之类的泛洪攻击的防范。

本领域技术人员可以理解,上述的tcp建立连接的场景仅为示意性的场景,在具体实现过程中,该会话流表项中当前会话状态还可以应用到各种场景中,以提高虚拟交换机的处理性能。

下面以一个具体的实施例来说明本实施例中的流表的结构示意图。图9为本发明一实施例提供的五元组流表示意图。如图9所示,本实施例以五元组为例,来进行详细说明。其中,五元组是指第一流表项和第二流表项的匹配域是通过五元组来实现的。在本实施例中,为了形象说明第一流表项和第二流表项的关系,将第一流表项称为正向流表项,第二流表项称为反向流表项。

在图9中,在五元组流表90中包括3个会话流表项,每个会话流表项对应一个数据结构体,以便于建立第一流表项、第二流表项、当前会话状态以及私有数据结构的关联性。图9示出的3个数据结构体具体为数据结构体901、数据结构体902以及数据结构体903。

在具体实现过程中,正向流表项和反向流表项通过哈希表管理,每个会话流表项包含两个相反方向的五元组,以及基于五元组计算出来的哈希值,即每个当前会话流表项会对应两个不同的哈希桶。即正向流表项和反向流表项分别通过一个哈希桶管理。

以下将详细描述根据本申请的一个或多个实施例的网页处理装置。该网页处理装置可以被实现在各种设备上,例如,服务端设备、服务器、网络服务器等。本领域技术人员可以理解,该网页处理装置均可使用市售的硬件组件通过本方案所教导的步骤进行配置来构成。例如,下述实施例中的涉及控制功能、更新功能的模块可以使用来自德州仪器公司、英特尔公司、arm公司等企业的单片机、微控制器、微处理器等组件实现。

下述为本申请装置实施例,可以用于执行本申请方法实施例。对于本申请装置实施例中未披露的细节,请参照本申请方法实施例。

图10为本发明一实施例提供的数据报文的处理装置。如图10所示,该装置,包括:

获取模块11,用于获取第一节点发送的第一数据报文;

查找模块12,用于根据所述第一数据报文的地址信息,在流表中查找与所述第一数据报文匹配的会话流表项,所述会话流表项中包括所述第一节点与第二节点对应的网络会话的当前会话状态,所述当前会话状态用于指示所述第一节点与第二节点的访问关系,所述第二节点为所述第一数据报文的接收端;

处理模块13,用于在所述查找模块查找成功时,根据所述会话流表项对所述第一数据报文进行处理。

可选地,所述会话流表项中还包括所述第一节点至第二节点的第一流表项以及所述第二节点至所述第一节点的第二流表项。

可选地,所述处理模块13,具体用于根据所述第一流表项以及所述当前会话状态,对所述第一数据报文进行处理。

可选地,所述处理模块13,具体用于根据所述当前会话状态预测所述第一数据报文对应的正常会话状态;

判断所述第一数据报文对应的实际会话状态是否与所述正常会话状态一致;

若否,则丢弃所述第一数据报文;

若是,则根据所述第一流表项中的操作行为将所述第一数据报文转发至所述第二节点。

可选地,所述获取模块11,还用于获取所述第一节点或所述第二节点发送的第二数据报文,确定所述第二数据报文为所述第一节点与所述第二节点进行网络会话的首数据报文;

所述处理模块13,还用于根据所述第二数据报文的地址信息,建立所述会话流表项;根据所述会话流表项对所述第二数据报文进行处理。

可选地,所述处理模块13,还用于在所述查找模块12查找失败时,确定所述第一数据报文为所述第一节点与所述第二节点进行网络会话的首数据报文;

根据所述第一数据报文的地址信息,建立所述会话流表项;

根据所述会话流表项对所述第一数据报文进行处理。

本发明实施例提供的数据报文的处理装置,可以执行上述方法实施例,其实现原理和技术效果类似,在此不再赘述。

图11为本发明一实施例提供的数据报文的处理设备。如图11所示,该设备可以包括接收器20、处理器21、发射器23、存储器24和至少一个通信总线22。通信总线22用于实现元件之间的通信连接。存储器24可能包含高速ram存储器,也可能还包括非易失性存储nvm,例如至少一个磁盘存储器,存储器24中可以存储各种程序,用于完成各种处理功能以及实现本实施例的方法步骤。

可选的,上述处理器21例如可以为中央处理器(centralprocessingunit,简称cpu)、应用专用集成电路(asic)、数字信号处理器(dsp)、数字信号处理设备(dspd)、可编程逻辑器件(pld)、现场可编程门阵列(fpga)、控制器、微控制器、微处理器或其他电子元件实现。

接收器20,用于获取第一节点发送的第一数据报文;

处理器21,耦合至所述接收器20,用于根据所述第一数据报文的地址信息,在流表中查找与所述第一数据报文匹配的会话流表项,所述会话流表项中包括所述第一节点与第二节点对应的网络会话的当前会话状态,所述当前会话状态用于指示所述第一节点与第二节点的访问关系,所述第二节点为所述第一数据报文的接收端;

所述处理器21,还用于在查找成功时,根据所述会话流表项对所述第一数据报文进行处理。

可选地,所述会话流表项中还包括所述第一节点至第二节点的第一流表项以及所述第二节点至所述第一节点的第二流表项。

可选地,所述处理器21,具体用于根据所述第一流表项以及所述当前会话状态,对所述第一数据报文进行处理。

可选地,还包括:发射器23,所述发射器耦合至所述处理器21;

所述处理器21,具体用于根据所述当前会话状态预测所述第一数据报文对应的正常会话状态;

判断所述第一数据报文对应的实际会话状态是否与所述正常会话状态一致;

若否,则丢弃所述第一数据报文;

若是,则根据所述第一流表项中的操作行为控制所述发射器23将所述第一数据报文转发至所述第二节点。

可选地,所述处理器21,还用于在所述根据所述第一流表项中的操作行为将所述第一数据报文转发至所述第二节点之后,对所述当前会话状态进行更新,得到更新后的当前会话状态。

可选地,所述接收器20,还用于在所述获取所述第一节点发送的第一数据报文之前,获取所述第一节点或所述第二节点发送的第二数据报文;

所述处理器21,还用于确定所述第二数据报文为所述第一节点与所述第二节点进行网络会话的首数据报文;

根据所述第二数据报文的地址信息,建立所述会话流表项;

根据所述会话流表项对所述第二数据报文进行处理。

可选地,所述处理器21,还用于在查找失败时,确定所述第一数据报文为所述第一节点与所述第二节点进行网络会话的首数据报文;

根据所述第一数据报文的地址信息,建立所述会话流表项;

根据所述会话流表项对所述第一数据报文进行处理。

本发明实施例提供的数据报文的处理设备,可以执行上述方法实施例,其实现原理和技术效果类似,在此不再赘述。

本发明还提供一种计算机/处理器可读存储介质,所述存储介质中存储有程序指令,所述程序指令用于使计算机/处理器执行上述的方法。

最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。

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