CN114268594A - 数据处理方法、系统及虚拟交换机 - Google Patents
数据处理方法、系统及虚拟交换机 Download PDFInfo
- Publication number
- CN114268594A CN114268594A CN202111561850.5A CN202111561850A CN114268594A CN 114268594 A CN114268594 A CN 114268594A CN 202111561850 A CN202111561850 A CN 202111561850A CN 114268594 A CN114268594 A CN 114268594A
- Authority
- CN
- China
- Prior art keywords
- connection
- port
- source port
- module
- ovs
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 21
- 238000000034 method Methods 0.000 claims abstract description 79
- 238000012545 processing Methods 0.000 claims abstract description 54
- 230000008569 process Effects 0.000 claims description 53
- 230000006870 function Effects 0.000 claims description 46
- 230000009471 action Effects 0.000 claims description 35
- 230000001360 synchronised effect Effects 0.000 claims description 14
- 230000001960 triggered effect Effects 0.000 claims description 10
- 230000004044 response Effects 0.000 claims description 9
- 230000002159 abnormal effect Effects 0.000 abstract description 16
- 241000700605 Viruses Species 0.000 abstract description 8
- 238000010586 diagram Methods 0.000 description 15
- 239000000306 component Substances 0.000 description 14
- 238000004590 computer program Methods 0.000 description 7
- 238000003860 storage Methods 0.000 description 7
- 230000002452 interceptive effect Effects 0.000 description 6
- 238000004891 communication Methods 0.000 description 4
- 238000012217 deletion Methods 0.000 description 4
- 230000037430 deletion Effects 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000002085 persistent effect Effects 0.000 description 3
- 239000002904 solvent Substances 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000000977 initiatory effect Effects 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000003044 adaptive effect Effects 0.000 description 1
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 239000008358 core component Substances 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请实施例提供一种数据处理方法、系统及虚拟交换机。其中,所述方法包括:针对处于已被跟踪过但未建立连接状态的连接请求报文,获取发出所述连接请求报文的源端口的标识;根据所述源端口的标识,从存储的哈希表中查找出所述源端口的允许最大连接数及已建连接数;根据所述源端口的允许最大连接数及已建连接数,确定是否允许所述源端口建立相应连接。采用本申请实施例提供的技术方案,实现了对端口的连接控制,这可有效避免在出现病毒攻击、流量攻击等场景下,产生过多异常连接。
Description
技术领域
本申请涉及云计算机技术领域,尤其涉及一种数据处理方法、系统及虚拟交换机。
背景技术
经多年发展,云计算已逐渐成熟。在云计算场景中,虚拟网络内的多个虚拟机之间或虚拟机与外部设备(如外部PC(个人计算机))之间在进行通信时,是通过虚拟交互机,比如OVS-DPDK完成数据转发的。其中,OVS-DPDK是基于DPDK(Data Plane Development Kit,数据平面开发套件)实现的一种OVS(Open vSwitch,开放虚拟交换机)。
OVS-DPDK在进行数据转发时,常基于数据转发路径创建一张连接跟踪表,利用该连接跟踪表记录设备(如虚拟机或外部设备)对应连接的连接相关信息,如连接状态、协议类型;而且,既使某个虚拟机或外部设备因被植入病毒等出现异常连接,这些异常连接同样也会被记录于连接跟踪表。连接跟踪表的容量是有上限的,上述被记录的异常连接无疑挤占了连接跟踪表的容量,这可能会致使其它虚拟机或外部设备无法正常使用连接跟踪功能,从而导致数据转发出现丢包等的问题,同时也会拉低OVS-DPDK的整体数据转发效率。
发明内容
鉴于上述问题,本申请提供一种解决上述问题或至少部分地解决上述问题的数据处理方法、系统及虚拟交换机。
在本申请的一个实施例中,提供了一种数据处理方法。该方法包括:
针对处于已被跟踪过但未建立连接状态的连接请求报文,获取发出所述连接请求报文的源端口的标识;
根据所述源端口的标识,从存储的哈希表中查找出所述源端口的允许最大连接数及已建连接数;
根据所述源端口的允许最大连接数及已建连接数,确定是否允许所述源端口建立相应连接。
可选地,所述源端口为虚拟交换机的多个端口中的一个;所述哈希表中存储有所述多个端口各自的标识及对应的连接信息;所述连接信息包含允许最大连接数、已建连接数;以及,
上述根据所述源端口的标识,从存储的哈希表中查找出所述源端口的允许最大连接数及已建连接数,包括:根据所述源端口的标识,在所述哈希表中查找所述源端口对应的连接信息;基于查找出的所述源端口对应的连接信息,确定所述源端口的允许最大连接数及已建连接数。
可选地,所述方法还包括:若允许所述源端口建立相应连接,则向连接跟踪表中添加所述连接请求报文对应的连接跟踪项;以及更新所述哈希表中所述源端口对应的已建连接数;若不允许所述源端口建立相应连接,则丢弃所述连接请求报文。
可选地,所述连接跟踪表中包括零或至少一个连接跟踪项,一个连接跟踪项用于记录一条连接的连接相关信息;所述连接相关信息包括如下的至少一种:地址信息、端口标识信息、协议类型、连接状态;其中,所述地址信息包含源地址、目的地址;所述端口标识信息包含源端口的标识、目的端口的标识。
可选地,所述方法还包括:接收第一进程模块发送的连接跟踪项查询请求;其中,所述请求携带有第一目标端口的标识;所述请求是基于接收到的命令触发模块发送的查询指令,通过调用预置的连接跟踪项查询函数生成的;所述查询指令是响应于用户通过客户端针对第一目标端口的连接跟踪项触发的查看操作生成的;基于所述第一目标端口的标识,在所述连接跟踪表中查询与所述请求指定第一目标端口匹配的连接跟踪项;将查询结果反馈至所述第一进程模块,以通过所述第一进程模块将所述查询结果发送至命令触发模块,由所述命令触发模块将所述查询结果发送至客户端以进行显示。
可选地,在针对处于已被跟踪过但未建立连接状态的连接请求报文,获取发出所述连接请求报文的源端口的标识之前,所述方法还包括:
接收所述第一进程模块针对所述连接请求报文发送的向连接跟踪表中添加连接跟踪项的动作指令;基于所述动作指令,执行上述针对处于已被跟踪过但未建立连接状态的连接请求报文,获取发出所述连接请求报文的源端口的标识的步骤,以确定是否允许所述源端口建立相应连接。
可选地,所述方法还包括:接收第二进程模块发送的数据同步消息;其中,所述消息携带用户针对第二目标端口的允许最大连接数配置的待同步数据;所述通知是响应于配置模块发送的携带有所述待同步数据的同步指令,将所述待同步数据存储至数据库后发送的;所述同步指令是基于用户通过客户端针对第二目标端口的允许最大连接数触发的配置操作生成的;基于所述待同步数据,执行对所述哈希表的操作,以更新所述哈希表;其中,对所述哈希表的操作包括如下中的至少一种:添加新端口的允许最大连接数的操作,删除已有端口的允许最大连接数的操作、修改已有端口的允许最大连接数的操作。
在本申请的另一实施例中,提供了一种数据处理系统。该系统包括:
连接处理模块,用于针对处于已被跟踪过但未建立连接状态的连接请求报文,获取发出所述连接请求报文的源端口的标识;根据所述源端口的标识,从存储的哈希表中查找出所述源端口的允许最大连接数及已建连接数;根据所述源端口的允许最大连接数及已建连接数,确定是否允许所述源端口建立相应连接;
第一进程模块,用于针对所述连接请求报文,向所述连接处理模块发送向连接跟踪表中添加连接跟踪项的动作指令,以使所述连接处理模块基于所述动作指令,执行上述确定是否允许所述源端口建立相应连接的相关步骤。
可选地,所述源端口为虚拟交换机的多个端口中的一个;所述连接处理模块中包括连接限制单元;所述连接限制单元具有所述哈希表,所述哈希表用于存储所述多个端口各自的标识及对应的连接信息;所述连接信息包含允许最大连接数、已建连接数;以及
所述连接处理模块,具体用于根据所述源端口的标识,在连接限制单元的哈希表中查找所述源端口对应的连接信息;基于查找出的所述源端口对应的连接信息,确定所述源端口的允许最大连接数及已建连接数。
在本申请的又一个实施例中,提供了一种虚拟交换机。该虚拟交换机包括连接处理模块,所述连接处理模块中包含存储器和处理器;所述存储器用于存储一条或多条计算机指令,所述一条或多条计算机指令被所述处理器执行时能够实现上述所述的数据处理方法中的步骤。
本申请实施例提供的技术方案,针对处于已被跟踪过但未建立连接状态的连接请求报文,是先获取发出该连接请求报文的源端口的标识,并根据源端口的标识,从存储的哈希表中查找出源端口的允许最大连接数量及已建立连接数的;之后,根据源端口的允许最大连接数量及已建立连接数,来确定是否允许源端口建立相应连接。由此可见,本方案限制了端口的连接数量,实现了对端口的连接控制,这可有效避免在出现病毒攻击、流量攻击等场景下,产生过多异常连接。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要利用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1a为本申请一实施例提供以OVS-DPDK作为虚拟交换机的公有云场景示意图;
图1b为本申请另一实施例提供以OVS-DPDK作为虚拟交换机的公有云场景示意图;
图2为本申请一实施例提供的OVS-DPDK的软件架构示意图;
图3为本申请一实施例提供的数据处理方法的流程示意图;
图4a为本申请一实施例提供的连接处理模块(conntrack,以下简称CT模块)执行连接跟踪的原理性示意图;
图4b为本申请另一实施例提供的CT模块执行连接跟踪的原理性示意图;
图5为本申请一实施例提供的查看连接跟踪项的原理性示意图;
图6为本申请一实施例提供的配置端口的允许最大连接数的原理性示意图;
图7为本申请又一实施例提供的CT模块执行连接跟踪的原理性示意图;
图8为本申请一实施例提供的数据处理装置的结构示意图;
图9为本申请一实施例提供的连接处理模块的结构示意图。
具体实施方式
在云计算场景中,虚拟交换机是实现网络虚拟化的关键技术,用于为虚拟网卡和物理网卡提供数据转发等服务,使得虚拟网络内的多个虚拟机间或虚拟机与虚拟网络外的外部设备(如外部PC(Personal Computer,个人计算机)间可建立通信连接,实现数据传输。其中,每个虚拟机均具有自己的虚拟网卡,相应的,外部设备均具有自己的物理网卡,虚拟机和外部设备分别通过相应的虚拟网卡、物理网卡,连接于虚拟交换机。具体地,如图1a和图1b所示,虚拟机和外部设备(图中未示出)是通过相应的虚拟网卡、物理网卡,与虚拟交换机提供的端口连接,从而实现连接于虚拟交换机。
目前,较为流行的虚拟交换机为OVS。OVS是一种开源软件交换机,传统的OVS主要包括内核态空间和用户态空间,数据转发路径位于内核态空间,数据转发往往需要在内核态空间与用户态空间上下切换才能够完成,这无疑使得数据转发具有较低效率。为解决此问题,现有方案逐渐完善了OVS对DPDK的支持,得到了一种新OVS,即OVS-DPDK,这使得数据转发路径位于用户态空间,而不再依赖了内核态空间,数据转发在用户态空间即可完成。这里需说明的是:对传统的OVS及其完成数据转发的具体实现过程,可参见现有技术方案;对于OVS-DPDK及其完成数据转发的具体实现过程,可参见下文各实施例相关内容。另外,上述DPDK是一款用户态空间数据包高速处理框架,其功能是为IA(intel architecture,英特尔架构)处理器下用户态空间数据包处理提供库函数和驱动支持。
一般地,OVS-DPDK在进行数据转发时,常会基于所创建的一张连接跟踪表来记录设备(如虚拟机或外部设备)对应连接的连接相关信息,比如,地址信息、连接状态、协议类型等;其中,连接跟踪表中的每一个连接跟踪项对应一条连接的连接相关信息。而且,既使设备出现异常连接,如因虚拟机中病毒或外部设备对虚拟机发起流量攻击等出现异常连接,这些异常连接同样也会生成相应的连接跟踪表项并记录于连接跟踪表。例如,参见图1a示出的虚拟机中病毒场景,在该使用OVS-DPDK作为虚拟交换机的公有云场景中,假设虚拟机1被植入了恶意病毒,病毒向外发送各种TCP(Transmission Control Protocol,传输层控制协议)、UDP(User Datagram Protocol,用户数据协议)或ICMP(Internet ControlMessage Protocol,Internet控制报文协议)等协议类型的连接请求报文,连接请求报文经由虚拟机1对应的接入端口(即端口p1)流入OVS-DPDK内,最终被转发至物理网卡后流入外部设备;再例如,参见图1b示出的流量攻击场景,在该使用OVS-DPDK作为虚拟交换机的公有云场景中,假设一外部设备对虚拟网络中的虚拟机进行了任意的如TCP、UDP或者ICMP等协议类型的泛洪攻击(或称为流量攻击),该外部设备发送的连接请求报文经由物理网卡的接入端口(如端口p0)流入OVS-DPDK,最终被转发至相应的虚拟网卡后流入虚拟机。在上述图1a及图1b示出的场景下,设备出现的每一条异常连接均会生成一条对应的连接跟踪表项并记录于同一张连接跟踪表中。因连接跟踪表中的整体容量是有上限的(容量上限如一般为65535条表项),这些被记录的异常连接无疑挤占了连接跟踪表的容量,这可能会致使其它的虚拟机或外部设备无法正常使用连接跟踪功能,从而导致其它的虚拟机或外部设备的数据转发出现丢包等问题,且还拉低了OVS-DPDK的整体数据转发面性能,影响了系统的整体稳定性。
为解决上述技术问题,本申请提供一种数据处理方法,系统及虚拟交换机。本方案是采用对虚拟交换机的端口连接数进行限制的方式,来解决虚拟机遭受病毒或外部设备对虚拟机进行流量攻击等场景下,所存在的导致OVS-DPDK无法对正常的虚拟机或外部设备进行连接跟踪等的问题。为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。
在本申请的说明书、权利要求书及上述附图中描述的一些流程中,包含了按照特定顺序出现的多个操作,这些操作可以不按照其在本文中出现的顺序来执行或并行执行。操作的序号如101、102等,仅仅是用于区分各个不同的操作,序号本身不代表任何的执行顺序。另外,这些流程可以包括更多或更少的操作,并且这些操作可以按顺序执行或并行执行。需要说明的是,本文中的“第一”、“第二”等描述,是用于区分不同的消息、设备、模块等,不代表先后顺序,也不限定“第一”和“第二”是不同的类型。而本申请中术语“或/和”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如:A或/和B,表示可以单独存在A,同时存在A和B,单独存在B这三种情况;本申请中字符“/”,一般表示前后关联对象是一种“或”关系。还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的商品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种商品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的商品或者系统中还存在另外的相同要素。此外,下述的各实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在介绍本申请提供的数据处理方法之前,先对OVS-DPDK的基本软件架构进行简单介绍说明。具体地,
请参见图2示出的OVS-DPDK的基本软件架构示意图。图中示出了OVS-DPDK的用户态空间包括的主要功能组件。具体地,如图2所示,OVS-DPDK主要包括两大类组件,即后台进程组件20和辅助组件21,辅助组件21,用来和后台进程组件20通信,为后台进程组件20提供辅助支持,以帮助后台进程组件20完成数据转发、连接跟踪等功能服务。
具体实施时,后台进程组件20包括第一进程模块201(即ovs-vswitchd)和第二进程模块202(即ovsdb-server)。ovs-vswitchd是用户态空间的核心部件,其支持执行802.1Q-VLAN、LACP(链路聚合控制协议)、TCP、UDP、ICMP协议等,主要用来实现网桥(bridge)的数据转发逻辑、接收流表信息、通过与ovsdb-server的交互完成从数据库23(即ovsdb)中读取配置信息、监听数据库23的数据变化等等;其中,网桥的作用是将两个相似的网络连接起来,并对网络数据的流通进行管理;流表是用于在ovs-vswitchd执行数据转发过程中,通过对接收到的每一个报文,在流表中查找匹配的流表项,以此来决策进入网络的报文并对这些报文采取合适的转发行为。关于流表的具体介绍可参见下文各实施例中的相关内容,此处不作赘述。上述ovsdb-server,是用来操作ovsdb的服务端后台进程,客户端(图中未示出)可通过ovsdb-mgmt协议和ovsdb-server通信,以请求创建或删除网桥(bridge)、端口(port)等,且还可监听数据库,一旦数据库发生变化,即会将变化内容通知给客户端等。具体地,ovsdb-server可借助于配置模块215(即ovs-vsctl)实现bridge、port等的创建和删除。
对于辅助组件21,其可包括但不限于图中示出的配置模块215(ovs-vsctl)、连接处理模块214(Conntrack,简称CT模块)、命令触发模块213(ovs-appctl)、控制器212(controller)及流表管理模块211(ovs-ofctl)。其中,
ovs-vsctl,主要功能是用来执行bridge、port等的创建和删除;
ovs-appctl,主要功能是用来向vsdb-server和ovs-vswitchd发送各种命令。
ovs-ofctl,采用OpenFlow协议与ovs-vswitchd交互,执行添加和/或删除ovs-vswitchd内的流表等信息。
controller,同样采用OpenFlow协议与ovs-vswitchd交互,执行将基于OpenFlow协议生成的流表下发至ovs-vswitchd等功能。
CT模块,用于执行连接跟踪表的创建,以及在ovs-vswitchd执行数据转发过程中,基于所创建的连接跟踪表完成连接跟踪功能。连接跟踪指的是用于记录和跟踪连接的连接相关信息,比如连接的状态。
进一步地,OVS-DPDK还包括数据库23(ovsdb),其用于存储OVS-DPDK的一些相关参数配置信息。例如,ovsdb内定义有interface表,该interface表主要用于保存与端口(port)相关的一些配置信息。
这里需要补充说明的是,OVS-DPDK中除了包括上述图2中示出的功能模块外,还可包括一些其它功能模块,比如ovsdb-tool,用于在启动OVS-DPDK后台进程组件之前,通过该模块创建ovsdb格式的文件,以用来存放相关配置。关于OVS-DPDK具体可包括的功能模块及各功能模块的具体功能介绍,可参见现有技术方案中相关内容,此处不作具体赘述。
下面对申请提供的数据处理方法进行介绍说明。
图3示出了本申请一实施例提供的数据处理方法的流程示意图。该方法应用于虚拟交换机,该虚拟交换机可以为但不限于图2示出的OVS-DPDK、传统的OVS等,本实施例对虚拟交换机的具体形态并不作限定,只要能保证虚拟交互机具有连接跟踪功能即可。在本申请提供的技术方案中,是以虚拟交换机为OVS-DPDK为例进行介绍说明的,OVS-DPDK是利用其所包括的CT模块214(即连接处理模块,或也可称为连接跟踪模块),并结合OpenFlow流表来实现完整的连接跟踪的,连接跟踪的具体实现过程可参见下文各实施例相关内容。具体实施时,本实施例提供的数据处理方法对应的执行主体即为图2中示出的CT模块214。如图3所示,该方法包括以下步骤:
301、针对处于已被跟踪过但未建立连接状态的连接请求报文,获取发出所述连接请求报文的源端口的标识;
302、根据所述源端口的标识,从存储的哈希表中查找出所述源端口的允许最大连接数及已建连接数;
303、根据所述源端口的允许最大连接数及已建连接数,确定是否允许所述源端口建立相应连接。
实际应用中,OVS-DPDK是通过其内的ovs-vswitchd执行数据转发,并在执行数据转发过程中,是利用CT模块并结合流表实现连接跟踪功能。具体实现时,参见图4a示出的现有方案中OVS-DPDK执行连接跟踪过程的原理性示意图,ovs-vswitchd中预存有流表(table),预存的流表数量可以为多个,如图示出的table0、table1等,此处不作限定。流表是与ovs-vswitchd通过OpenFlow协议进行交互的控制器下发的,流表由多个流表项组成,每个流表项对应网络传输的一条流。每个流表项大致都由如下三部分组成:用于报文匹配的匹配域(Match Field)、用于统计匹配报文个数的计数器(counters)、用于决策如何处理报文的行为(actions)。其中,
匹配域,用于对报文的报头内容进行匹配,其包括报文本身的一些信息,比如,源地址信息(如源MAC(Media Access Control,物理地址)、源IP地址)、目的地址信息(如目的MAC、目的IP)等;以及还包括报文相关联的一些信息,比如,协议信息(如TCP、UDP、IMCP等)、源端口的标识、目的端口的标识。
这里需补充说明的是:在本申请方案中,在无特别声明的情况下,源端口即指的是报文进入虚拟交换机对应的进入端口,目的端口即指的是报文流出虚拟交换机对应的流出端口等。例如,参见图1a所示,假设虚拟机1发出的报文经由端口p1流入OVS-DPDK,并通过端口p1流出OVS-DPDK,这里,端口p1即为源端口,端口p0即为目的端口。
计数器,流表中的计数器针对虚拟交换机中的每张流表、每个数据流、每个端口、每个转发队列进行维护,用于统计数据流量的相关信息。比如,针对每张流表,可统计当前活动的表项数、报文查询次数、报文匹配次数等;针对每个数据流,统计接收到的报文个数、字节数、数据流持续时间等;针对每个端口,除统计接收到的报文数、发送报文数、接收字节数、发送字节数等指标之外,还可以对各种错误发生的次数进行统计,等等。
动作,用于指示虚拟交换机在收到匹配的报文后应对该报文执行的处理操作。流表中的每个流表项可对应有零至多个动作,若未定义动作,那么与流表项匹配域匹配的报文将被默认丢弃。具体实施时,动作可以为但不限于table、commit、drop(丢弃)等。table对应的处理操作为:ovs-vswitchd拷贝报文并将拷贝的一份报文发送至CT模块进行状态记录;记录完成后,CT模块将报文再次发送至ovs-vswitchd以在流表中继续执行匹配查找处理;对于原始报文由于无后续操作,执行丢弃。commit对应的处理操作为:针对报文提交一个新连接给CT模块,以使CT模块对新连接进行连接跟踪。commit动作一定在table动作发生之后,才能够发生。
继续参见图4a并结合如下示出的ovs-vswitchd中预存的一流表示例,假设,下述展示出的流表(记为table0)是控制器针对如图1a和图1b示出的OVS-DPDK的端口p0)及端口p1下发的。对于该流表table0,仅具体示出了其包括的多个流表项中的2个流表项,即flow#1和flow#3,关于未示出的其它流表项可参见现有方案相关内容。
flow#1:$ovs-ofctl add-flow br0"table=0,ct_state=-trk,tcp,in_port=p0,actions=ct(table=0)";
flow#2:##########;
flow#3:$ovs-ofctl add-flow br0"table=0,ct_state=+trk+new,tcp,in_port=p0,actions=ct(commit),p1";
......
上述中,flow#1表征从端口p0进入的未被跟踪过(-trk)的连接请求报文进入CT模块进行状态记录后,重新进入流表table0以继续进行流表处理;flow#3表征对已被跟踪过(+trk)且为p0端口的新(+new)连接请求报文进行commit操作,同时从端口p1流出。需说明的是:上述新(+new)状态,即指的是未建立连接(或称为未建流)状态,下文将处于新(+new)状态的连接请求报文,均称为处于未建立连接状态的连接请求报文
假设与OVS-DPDK的端口p0连接的一外部设备,通过OVS-DPDK主动向与OVS-DPDK的端口p1连接虚拟机1发起TCP协议的连接请求,连接请求报文从端口p0进入OVS-DPDK后,会执行图4a中示出的步骤S1:即连接请求报文被送入ovs-vswitchd,ovs-vswitchd针对该连接请求报文,在自身预存的流表(如上述示出的流表table0)中执行匹配查找以查找得到该连接请求报文所命中的流表项,比如,假设连接请求报文为外部设备发送的首个报文,即为Syn包,因此时的Syn包并未进入过CT模块,CT模块中针对该Syn包也就不存在有任何相应的记录信息,为此该Syn包此时所处的状态也就为未被跟踪过(-trk)状态,经流表匹配其将会命中流表table0中的流表项flow#1;之后,ovs-vswitchd基于flow#1中的动作(即ct(table=0))执行步骤2,即拷贝Syn包,并将所拷贝的Syn包发送至CT模块进行状态记录,而对于原Syn包由于无后续操作,执行丢弃。记录完成后,Syn包的状态将由未被跟踪过(-trk)状态变更为已被跟踪过(+trk)且未建立连接(+new)状态,CT模块将该处于已被跟踪过(+trk)且未建立连接(+new)状态的Syn包再次发送至ovs-vswitchd以继续在流表table0中进行查找匹配(即对应图4a中的步骤S3),此时该从CT模块返回的处于已被跟踪过(+trk)且未建立连接(+new)状态的Syn包将会命中flow#3;ovs-vswitchd基于flow#3中的动作(即ct(commit))执行步骤S4,即提交一个新连接给CT模块,使得CT模块针对该新连接执行在连接跟踪表中添加一连接跟踪项,以开始对端口p0向端口p1发起的这一新连接进行跟踪。关于对连接跟踪表的具体介绍可参见下文各实施例相关内容,此处不作具体赘述。上述Syn包为一种较小的数据包。
下文中,为便于描述,将已被跟踪过(+trk)且未建立连接(+new)状态,均简写为“+trk、+new”状态。
由上内容可见,CT模块执行向连接跟踪表中添加新连接跟踪项的前提条件是,接收到ovs-vswitchd针对处于“+trk、+new”状态的连接请求报文发送的ct(commit)这一动作指令。基于此,本实施的执行主体(即CT模块)在开始针对处于“+trk、+new”状态的连接请求报文,执行上述步骤101至103中的处理逻辑,以确定是否允许发出该连接请求报文的源端口建立相应连接,从而确定是否针对该连接执行连接跟踪,这一系列操作,也往往是在接收到ovs-vswitchd发送的ct(commit)这一动作指令后。即也就是说,本实施例提供的所述方法,在开始执行针对处于“+trk、+new”状态的连接请求报,执行上述步骤301至303之前,还包括如下步骤:
300a、接收第一进程模块针对处于已被跟踪过但未建立连接的连接请求报文,发送的向连接跟踪表中添加连接跟踪项的动作指令;
300b、基于所述动作指令,开始执行上述步骤101至103。
具体实施时,上述第一进程模块即指的是ovs-vswitchd;ovs-vswitchd针对处于已被跟踪过但未建立连接的连接请求报文,所发送的动作指令即指的是ct(commit)这一动作指令。关于ovs-vswitchd发送ct(commit)这一动作指令的具体实现过程,可参见上文相关内容,此处不再做具体赘述。
继续承接上述关于图4a所示的示例,现有方案中,CT模块在接收到ovs-vswitchd发送的ct(commit)这一动作指令,即会直接执行在连接跟踪表中添加一新连接跟踪项的操作以对新连接进行连接跟踪。采用如图4a示出的现有方案,既使一设备,比如图1a中示出的一虚拟机发起的是异常连接请求,CT模块在收到ovs-vswitchd针对异常连接请求报文发送的ct(commit)这一动作指令后,同样也会针对该异常连接请求报文执行向连接跟踪表中添加对应的连接跟踪表项(以下简称异常连接跟踪表项)的操作,这些异常连接跟踪表项无疑挤占了连接跟踪表的容量,当出现过多的异常连接时,可能会致使CT模块对其他正常设备发起的连接无法进行连接跟踪,导致出现丢包等问题的发生。针对此问题,考虑到在虚拟网络中,各设备(如虚拟机、外部设备)均是通过OVS-DPDK提供的相应端口实现与OVS-DPDK连接,从而实现各设备间通过OVS-DPDK完成连接通信,换句话也就是说,各设备间所建立的连接,即指的是OVS-DPDK的各端口间建立的连接。基于此,本实施例提供的技术方案,将基于OVS-DPDK的多个端口对连接进行控制,在连接控制的基础上,实现CT模块的连接跟踪功能。
具体实现时,是采用限制OVS-DPDK的多个端口各自的连接数量方式,实现连接控制。具体地,是通过为OVS-DPDK的多个端口分别预配置对应的允许最大连接数,以此来限制多个端口各自的连接数量。上述预配置的允许最大连接数会存入CT模块内的一哈希表,比如图4b中示出的哈希表2142中,同时在该哈希表2142中还会存入有各端口的已建连接数等。当CT模块接收到ovs-vswitchd针对处于“+trk、+new”状态的连接请求报文发送的ct(commit)这一动作指令后,CT模块并不是直接执行向连接跟踪表中添加连接跟踪表项的操作,而是会先执行从哈希表中查找出发出该连接请求报文的源端口对应的允许最大连接数、已建连接数,以确定是否允许该源端口建立连接,在允许建立连接的情况下,才执行向连接跟踪表中添加连接跟踪项。关于哈希表的具体介绍及配置端口的允许最大连接数的具体实现,可参见下文相关内容,此处不作赘述。
上述源端口为OVS-DPDK的多个端口中的一个,在查找源端口对应的允许最大连接数、已建连接数时,是基于源端口的标识实现查找功能的。因源端口的标识通常会携带于连接请求报文的数据结构中,故源端口的标识可通过对连接请求报文进行解析得到。即,上述301中“获取发出所述连接请求报文的源端口的标识”的一种可实现技术方案为:
对所述连接请求报文进行解析,从解析结果中获取所述源端口的标识。
上述对连接请求报文解析的具体实现,可参见现有方案。
上述302中,源端口是虚拟交换机(如图1a及图1b示出的OVS-DPDK)中的多个端口中的一个。对于CT模块214内存储的哈希表,参见图4b所示,哈希表2142具体是位于对CT模块214新增的一连接限制单元(port_ct_limit)2141内,哈希表中存储有多个端口各自的标识及对应的连接信息,连接信息包含允许最大连接数、已建连接数。具体地,哈希表的具体数据结构可参见如下示例:
上述中,哈希表中端口的标识是作为哈希表的索引值,以便于实现查找功能。连接信息则为哈希表的存储数据值,其中,连接信息中的允许最大连接数是预先配置的。基于此,
在一具体可实现技术方案中,上述302“根据所述源端口的标识,从存储的哈希表中查找所述源端口的允许最大连接数及已建连接数”,可具体包括如下步骤:
3021、根据所述源端口的标识,在所述哈希表中查找所述源端口对应的连接信息;
3022、基于查找出的所述源端口对应的连接信息,确定所述源端口的允许最大连接数及已建连接数。
具体实施时,可根据源端口的标识,在哈希表中查找出与源端口的标识匹配的索引值,基于索引值获取源端口对应的连接信息,从而基于所述源端口对应的连接信息,即可确定出源端口的允许最大连接数、已建连接数。
在确定出源端口的允许最大连接数及其已建连接数后,可对允许最大连接数及已建连接数进行比较分析,以根据比较分析结果确定是否允许源端口建立该相应的连接。具体地,可在判定出已建连接数小于允许最大连接数的情况下,确定允许源端口建立相应连接,反之则不允许源端口建立相应连接。即,上述303“根据所述源端口的允许最大连接数及已建连接数,确定是否允许所述源端口建立相应连接”的一具体可实现技术方案为:
3031、所述已建连接数小于所述允许最大连接数时,确定允许所述源端口建立相应连接;
3032、所述已建连接数等于或大于所述允许最大连接数时,确定不允许所述源端口建立相应连接。
进一步地,在经由上述步骤303,若确定出允许源端口建立相应连接的情况下,CT模块后续可执行向连接跟踪表中添加连接跟踪项的操作,以对此次该源端口建立的连接进行连接跟踪;以及执行更新哈希表中源端口对应的已建立连接数量的操作。反之,若确定出不允许源端口建立相应连接的情况下,CT模块后续可对连接请求报文直接执行丢包操作。
即,进一步地,本实施例提供的方法还可包括如下步骤:
304a、若允许所述源端口建立相应连接,则向连接跟踪表中添加所述连接请求报文对应的连接跟踪项;以及执行更新所述哈希表中所述源端口对应的已建连接数;
304b、若不允许所述源端口建立相应连接,则丢弃所述连接请求报文。
具体实施时,上述连接跟踪表示在OVS-DPDK相关参数配置完毕的情况下,由CT模块创建的,且CT模块会对连接跟踪表进行自行独立维护。CT模块对连接跟踪表自行维护可进行的操作,可以为但不限于动态创建新连接跟踪表项、超时或删除安全组规则时释放相应的连接跟踪表项等。关于CT模块创建连接跟踪表以及对连接跟踪表可执行的操作的具体实现,可参见现有方案。
连接跟踪表一般是由连接跟踪项组成,一个连接跟踪项用于记录一条连接的连接相关信息;其中,连接相关信息可包括但不限于如下的至少一种:地址信息、端口标识信息、协议类型、连接状态;地址信息包含源地址、目的地址;端口标识信息包含源端口的标识、目的端口的标识。连接跟踪表中具体包含的连接跟踪项数据,是根据OVS-DPDK的多个端口当前建立的连接数量确定的,具体地,其可能包含零个连接跟踪项,也可能包含1个、100个、1000个等连接跟踪项,即也就是说,根据OVS-DPDK的多个端口当前建立的连接情况,连接跟踪表中可包括零个或至少一个连接跟踪项。
当CT模块经由上述步骤101至103确定出允许当前源端口发起的连接请求,建立相应连接时,CT模块即可执行向连接跟踪表中添加对应的连接跟踪项,以对源端口的此次建立的连接进行连接跟踪。
进一步地,本实施例提供的CT模块,还具有接收连接跟踪项查询请求,并针对查询请求反馈相应连接跟踪项的功能,以便于用户对OVS-DPDK的多个端口连接状况进行监控。上述请求是OVS-DPDK在运行时,基于用户通过客户端针对某一个目标端口触发的查询操作,通过调用ovs-appctl中的命令向ovs-vswitchd发送查询指令,使得ovs-vswitchd基于查询指令向CT模块发送的。基于此,即本实施例提供的所述方法还可包括如下步骤:
305a、接收第一进程模块发送的连接跟踪项查询请求;其中,所述请求携带有第一目标端口的标识;所述请求是基于接收到的命令触发模块发送的查询指令,通过调用预置的连接跟踪项查询函数生成的;所述查询指令是响应于用户通过客户端针对第一目标端口的连接跟踪项触发的查看操作生成的;
305b、基于所述第一目标端口的标识,在所述连接跟踪表中查询与所述请求指定第一目标端口匹配的连接跟踪项;
305c、将查询结果反馈至所述第一进程模块,以通过所述第一进程模块将所述查询结果发送至命令触发模块,由所述命令触发模块将所述查询结果发送至客户端以进行显示。
具体实施时,参见图2、图4b及图5所示,上述所述的第一进程模块即为附图中示出的ovs-vswitchd,命令触发模块即指的是图中的ovs-appctl。ovs-appctl中包含有多种命令行,用户通过调用ovs-appct中的命令行即可使得ovs-appctl向ovs-vswitchd及ovsdb-server(即下文所述的第二进行模块)发送各种指令。为实现对连接跟踪项的查询功能时,本实施例提供的技术方案,在ovs-appctl中新添加了一个新命令行,以用来触发ovs-appctl向ovs-vswitchd发送查询指令的功能。为便于描述,将该新命令行称为命令行1,命令行1的具体结构形式如下所示:
命令行1:ovs-appctl###/dump-conntrack port_id=<intf-name>
其中,上述命令行中的dump-conntrack函数,是预注册于ovs-vswitchd中的函数,该dump-conntrack函数功能是触发ovs-vswitchd向CT模块发送连接跟踪项查询请求;port_id用于标识目标端口的标识的关键字段;intf-name表示查询到的目标端口的连接跟踪项对应的详细信息,该详细信息对应的数据格式可以为但不限于如下所示:
[proto-filed],orig=([packet-orign]),reply=([packet-reply]),protoinfo=(state=[state-filed]);其中,
[proto-filed]为协议信息字段,该字段输出的信息可以为但不限于TCP、UDP、IMCP等。
[packet-orign]为主动发起连接的报文详细字段,该字段输出的信息可以为但不限于地址信息,端口信息等,地址信息如可以为源地址(如源IP),目的地址(如目的IP),端口信息如可以为源端口的标识、目的端口的标识。
[packet-reply]为期望对端应答的报文详细字段,同样,该字段输出的信息也可以为但不限于地址信息,端口信息等,地址信息如可以为源地址(如源IP),目的地址(如目的IP),端口信息如可以为源端口的标识、目的端口的标识。
[state-filed]为连接跟踪表项对应连接的状态,比如,连接的状态可以为SYN_SENT、ESTABLISHED等;其中,SYN_SENT状态表示为发出了连接请求报文(如syn包),等待应答;ESTABLISHED状态表示为已建立连接。
基于上述内容,结合图5示出的查询连接跟踪项的原理性示意图,举一具体示例说明一下连接跟踪项的查询过程。具体地,
参见图5所示,假设用户对OVS-DPDK的端口p0(如图1a和图1b所示)对应的连接跟踪项进行查询,用户在通过客户端提供的交互界面,针对端口p0的连接跟踪项触发了查看操作后,命令行1即会被调用,使得ovs-appctl针对端口p0向ovs-vswitchd下发查询指令;ovs-vswitchd基于接收到的查询指令,将会调用预注册的dump-conntrack函数,向CT模块发送携带有端口p0的标识的查询请求;CT模块接收到该请求后,基于请求中的端口p0的标识,在连接跟踪表中查找端口p0对应的连接跟踪项,并将查找结果反馈至ovs-vswitchd,由ovs-vswitchd将查询结果通过ovs-appctl反馈至用户的客户端,以在客户端提供的交互界面上进行显示。上述中查询结果中可包含查询到的端口p0对应的连接跟踪项的数量,以及连接跟踪项的详细信息。关于对连接更新项的详细信息的具体介绍,可参见上述相关内容。
上文中,在描述在对OVS-DPDK的多个端口的连接进行控制的基础上,来实现CT模块的连接跟踪功能时,仅简单介绍了可利用CT模块内的哈希表,来保存为OVS-DPDK的多个端口分别预配置的允许最大连接数以及对应的已建立连接数量,并未对允许最大连接数的具体配置过程进行具体介绍。下面将具体介绍一下端口的允许最大连接数的配置过程。具体地,
为实现对端口的允许最大连接数配置功能,以在对多个端口的连接进行控制的基础上,使得CT模块实现连接跟踪功能。参见图4b所示,本实施例提供的技术方案,是在CT模块21中新增加了一个连接限制单元2141(即Port_ct_limit),并使用哈希表作为该连接限制单元2141的基本数据结构,用来保持用户为OVS-DPDK的多个端口所配置的允许最大连接数、以及各端口对应的已建连接数等。即也就是说,上文所述的用于保存OVS-DPDK的多个端口的允许最大连接数量量、已建连接数的哈希表,具体是位于新增的连接限制单元2141。
进一步地,参见图6所示,在实现为端口配置允许最大连接数时,具体过程可以为:用户通过客户端提供的交互界面,针对OVS-DPDK的某一端口,比如图1a和图1b中示出的端口p0触发了允许最大连接数的配置操作后,相应的命令行(如下文所述的命令行2)将会被调用,使得ovs-vsctl执行向ovsdb-server下发同步指令,该同步指令中携带用用户针对端口p0所配置的允许最大连接数;ovsdb-server接收到同步指令后,将会先执行将端口p0的允许最大连接数存入数据库ovsdb以持久化保存,之后,再针对端口p0的允许最大连接数,向CT模块发送数据同步消息,由CT模块通过调用其自身内预置的相应如增加函数,将p0端口的允许最大连接数存储于连接限制单元2141内的哈希表中。此外,若用户针对端口的允许最大连接触发的配置操作为删除或修改等操作,CT模块还可以通过调用自身内预置的相应如删除函数、修改函数,来对哈希表进行更新。
上述中,CT模块内预置的增加、删除、修改等声明的结构形式如下:
int port_limit_create(struct###*ct,int32_t port_id,uint32_t limit)
int port_limit_delete(struct###*ct,int32_t port_id)
int port_limit_update(struct###*ct,int32_t port_id,uint32_t limit)
struct port_limit*port_limit_lookup(struct###*ct,int32_t port_id)
其中,上述port_limit_create函数即为增加函数,port_limit_delete函数即为删除函数,port_limit_update即为修改函数,而port_limit_lookup函数为查看端口的允许最大连接数的函数,具体实现查看端口的允许最大连接数的过程,可参见图5示出的查看连接跟踪项的过程,此处就不作具体赘述。此外,上述各函数中,port_id用于标识目标端口的标识的关键字段,limit用于标识为目标端口配置的允许最大连接数的关键字段。
另外,上述图6中,ovsdb-server执行将用户所配置的端口的允许最大连接数存入数据库ovsdb以持久化保存时,具体是将端口的允许最大连接数持久化存入数据库的interface(接口)表中;其中,interface表主要功能为保存与OVS-DPDK口相关的配置信息。为能够实现将端口的允许最大连接数存入interfaceb表,对interface表的列属性进行了修改,并新增加了conn-limit字段以用于规范允许用户对端口配置的允许最大连接数所位于的区间范围。
具体地,conn-limit字段的结构形式可如下所示:
"conn-limit":{####:{"type":"integer","minInteger":A,"maxInteger":B}};
上述conn-limit字段即表示:允许用户在[A,B]区间内进行配置端口的允许最大连接数,换句话也就是说,用户为每个端口配置的允许最大连接数是位于[A,B]区间内的。例如,假设[A,B]区间具体对应的为[0,1000000],则用户为每个端口配置的允许最大连接数不能大于1000000,即为每个端口配置的允许最大连接数最大值为1000000,这也就限定了每个端口对应的连接跟踪项的数量最大为1000000。
同时,还在ovsdb-server中新增设了以下命令行:
命令行2:ovs-vsctl set interface<intf-name>conn-limit=<value>;
命令行3:ovs-vsctl get interface<intf-name>conn-limit;
命令行4:ovs-vsctl remove interface<intf-name>conn-limit;
上述命令行中的intf-name表示端口的标识。其中,命令行2作用为执行对端口的允许最大连接数进行配置、该命令行2中的<value>即表示用户所配置的端口的允许最大连接数。命令行3和命令行4的作用则分别为对所规范的允许用户对端口配置的允许最大连接数位于的区间范围执行获取、删除操作。
用户在针对端口的允许最大连接数,通过客户端触发了配置操作后,命令行2将会被调用,得使ovs-vsctl执行向ovsdb-server下发同步指令,该同步指令中携带用用户针对端口所配置的允许最大连接数;之后,ovsdb-server接收到同步指令后,执行将端口的允许最大连接数存入于interface表以持久化保存,
基于上述所描述的内容,进一步地,本实施例提供的所述方法还可包括如下步骤:
106a、接收第二进程模块发送的数据同步消息;其中,所述消息携带用户针对第二目标端口的允许最大连接数配置的待同步数据;所述通知是响应于配置模块发送的携带有所述待同步数据的同步指令,将所述待同步数据存储至数据库后发送的;所述同步指令是基于用户通过客户端针对第二目标端口的允许最大连接数触发的配置操作生成的;
106b、基于所述待同步数据,执行对所述哈希表的操作,以更新所述哈希表;其中,对所述哈希表的操作包括如下中的至少一种:添加新端口的允许最大连接数的操作,删除已有端口的允许最大连接数的操作、修改已有端口的允许最大连接数的操作。
具体实施时,本步骤106中的第二目标端口与上述步骤305a至步骤305c中的第二目标端口,可以指的是同一个目标端口,也可以指的是不同的目标端口,本实施例对此并不作限定。上述第二进程模块即指的是附图中示出的ovsdb-server;配置模块即指的是附图中的ovs-vsctl。关于上述106a及106b的具体实现,可参见上文各实施例相关内容,此处就不再作具体赘述。
综上,本实施例提供的技术方案,针对处于已被跟踪过但未建立连接状态的连接请求报文,是先获取发出该连接请求报文的源端口的标识,并根据源端口的标识,从存储的哈希表中查找出源端口的允许最大连接数量及已建立连接数的;之后,根据源端口的允许最大连接数量及已建立连接数,来确定是否允许源端口建立相应连接。由此可见,本方案限制了端口的连接数量,实现了对端口的连接控制,能够解决在虚拟交换机在遭受虚拟机中毒、流量攻击等场景下,无法基于端口限制连接的问题。
综上所述,上述本申请实施例提供的数据处理方法的的过程,可总结为如图7所示的过程:第一进程模块接收到连接请求报文后,对连接请求报文在流表中执行匹配查找处理,当命中包含ct(commit)动作的流表项时,向CT模块提交向连接跟踪表中添加连接跟踪项的动作指令;CT模块接收到该动作指令后,将先执行在哈希表中查找出源端口对应的连接信息,即源端口对应的允许最大连接数及已建连接数,并根据查找结果来确定是否允许源端口进行连接建立;若不允许,则对连接请求报文执行丢弃;反之,若允许,则更新连接跟踪表,即向连接跟踪表中添加连接跟踪项。之后,CT模块将处理结果反馈给第一进程模块,以便第一进程模块做后续处理。
这里需补充说明的是,上文主要是以虚拟交换机为OVS-DPDK为例,介绍说明本申请提供的方案的。当然,本申请方案也可应用于其它类型的具有连接跟踪功能的虚拟交换机,比如传统的OVS。在应用于其它类型的虚拟交换机时,不同的仅在于需要对上述所描述的为OVS-DPDK配置的相应命令行等进行适应性修改,以实现本申请提供的技术方案。
基于上文内容,本申请一实施例还提供了一数据处理系统。具体地,参见图4b至图7所示,本实施例提供的数据处理系统包括:连接处理模块214及第一进程模块201。其中,
连接处理模块214,用于针对处于已被跟踪过但未建立连接状态的连接请求报文,获取发出所述连接请求报文的源端口的标识;根据所述源端口的标识,从存储的哈希表中查找出所述源端口的允许最大连接数及已建连接数;根据所述源端口的允许最大连接数及已建连接数,确定是否允许所述源端口建立相应连接;
第一进程模块201,用于针对所述连接请求报文,向所述连接处理模块发送向连接跟踪表中添加连接跟踪项的动作指令,以使所述连接处理模块基于所述动作指令,执行上述确定是否允许所述源端口建立相应连接的相关步骤。
具体实施时,上述源端口为虚拟交换机的多个端口中的一个;所述连接处理模块214中还包括连接限制单元2141;连接限制单元2141具有所述哈希表2142,哈希表2142用于存储所述多个端口各自的标识及对应的连接信息;所述连接信息包含允许最大连接数、已建连接数;相应地,
上述连接处理模块214,具体用于根据所述源端口的标识,在连接限制单元的哈希表中查找所述源端口对应的连接信息;基于查找出的所述源端口对应的连接信息,确定所述源端口的允许最大连接数及已建连接数。
进一步地,本实施例提供的系统还包括:
命令触发模块213,用于响应于用户通过客户端针对第一目标端口的连接跟踪项触发的查看操作,生成相应的查询指令并发送至所述第一进程模块;
上述第一进程模块201,还用于接收所述查询指令,并通过调用预置的连接跟踪项查询函数生成相应的连接跟踪项查询请求;将所述请求发送至所述连接处理模块;其中,所述请求中携带有所述第一目标端口的标识;
上述连接处理模块214,还用于接收所述请求,并基于所述请求中携带的所述第一目标端口的标识,在所述连接跟踪表中查询与所述请求指定第一目标端口匹配的连接跟踪项;将查询结果反馈至所述第一进程模块,以通过所述第一进程模块将所述查询结果发送至所述命令触发模块,由所述命令触发模块将所述查询结果发送至客户端以进行显示。
进一步地,本实施例提供的所述系统还包括:
配置模块215,用于响应于用户通过客户端针对第二目标端口的允许最大连接数触发的配置操作,生成相应的同步指令;其中,所述同步指令中携带有所述用户针对第二目标端口的允许最大连接数配置的待同步数据;将所述同步指令发生至所述第二进程模块;
第二进程模块202,用于接收所述同步指令,并基于所述同步指令执行将所述待同步数据存储至数据库的操作;所述待同步数据存储至数据库后,向所述连接处理模块发送携带有所述待同步数据的数据同步通知;
上述连接处理模块214,还用于接收所述数据同步通知;基于所述数据同步通知中携带的所述待同步数据,执行对所述哈希表的操作,以更新所述哈希表;其中,对所述哈希表的操作包括如下中的至少一种:添加新端口的允许最大连接数的操作,删除已有端口的允许最大连接数的操作、修改已有端口的允许最大连接数的操作。
这里需要说明的是:本实施例提供的所述数据处理系统中各步骤未尽详述的内容可参见上述各实施例中的相应内容,此处不再作赘述。另外,本实施例提供的所述数据处理系统中除了上述各步骤以外,还可包括上述各实施例中其他部分或全部步骤,具体可参见上述各实施例相应内容,在此不再赘述。
图8示出了本申请一实施例提供的数据处理装置的结构框图。如图8所示,数据处理装置包括:获取模块401、查找模块402及确定模块403;其中,
获取模块401,用于针对处于已被跟踪过但未建立连接状态的连接请求报文,获取发出所述连接请求报文的源端口的标识;
查找模块402,用于根据所述源端口的标识,从存储的哈希表中查找出所述源端口的允许最大连接数及已建连接数;
确定模块403,用于根据所述源端口的允许最大连接数及已建连接数,确定是否允许所述源端口建立相应连接。
这里需要说明的是:本实施例提供的数据处理装置可实现上述图3示出的数据处理方法实施例中描述的技术方案,上述各模块或单元具体实现的原理可参见上述图3示出的数据处理方法实施例中的相应内容,此处不再赘述。另外,本实施例提供的所述数据处理装置中除了上述各步骤以外,还可包括上述各实施例中其他部分或全部步骤,具体可参见上述各实施例相应内容,在此不再赘述。
本申请一实施例还提供了一个虚拟交换机。该虚拟交换机中包括连接处理模块,所述连接处理模块的具体结构如图9所示,该连接处理模块包括:存储器91以及处理器92。存储器91可被配置为存储其它各种数据以支持在传感器上的操作。这些数据的示例包括用于在传感器上操作的任何应用程序或方法的指令。存储器91可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
所述存储器91,其具有存储空间93,所述存储空间93用于存储一条或多条计算机程序/指令931;
所述处理器92,与所述存储器91耦合,用于执行所述存储器91中存储的一条或多条计算机程序/指令931,以实现上述各实施例提供的数据处理方法中的步骤。
进一步,上述虚拟交互机还包括:通信组件、电源组件等其它组件。并不意味着虚拟交换机只包括上述所描述的组件。
相应地,本申请实施例还提供一种存储有计算机程序的计算机可读存储介质,所述计算机程序被计算机执行时能够实现上述各实施例提供的数据处理方法步骤或功能。
本申请实施例还提供一种计算机程序产品,包括计算机程序,当所述计算机程序被处理器执行时,致使所述处理器能够实现上述各实施例提供的数据处理方法步骤或功能。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
Claims (10)
1.一种数据处理方法,其特征在于,包括:
针对处于已被跟踪过但未建立连接状态的连接请求报文,获取发出所述连接请求报文的源端口的标识;
根据所述源端口的标识,从存储的哈希表中查找出所述源端口的允许最大连接数及已建连接数;
根据所述源端口的允许最大连接数及已建连接数,确定是否允许所述源端口建立相应连接。
2.根据权利要求1所述的方法,其特征在于,所述源端口为虚拟交换机的多个端口中的一个;所述哈希表中存储有所述多个端口各自的标识及对应的连接信息;所述连接信息包含允许最大连接数、已建连接数;
以及,根据所述源端口的标识,从存储的哈希表中查找出所述源端口的允许最大连接数及已建连接数,包括:
根据所述源端口的标识,在所述哈希表中查找所述源端口对应的连接信息;
基于查找出的所述源端口对应的连接信息,确定所述源端口的允许最大连接数及已建连接数。
3.根据权利要求1或2所述的方法,其特征在于,还包括:
若允许所述源端口建立相应连接,则向连接跟踪表中添加所述连接请求报文对应的连接跟踪项;以及更新所述哈希表中所述源端口对应的已建连接数;
若不允许所述源端口建立相应连接,则丢弃所述连接请求报文。
4.根据权利要求3所述的方法,其特征在于,
所述连接跟踪表中包括零或至少一个连接跟踪项,一个连接跟踪项用于记录一条连接的连接相关信息;
所述连接相关信息包括如下的至少一种:地址信息、端口标识信息、协议类型、连接状态;其中,所述地址信息包含源地址、目的地址;所述端口标识信息包含源端口的标识、目的端口的标识。
5.根据权利要求4所述的方法,其特征在于,还包括:
接收第一进程模块发送的连接跟踪项查询请求;其中,所述请求携带有第一目标端口的标识;所述请求是基于接收到的命令触发模块发送的查询指令,通过调用预置的连接跟踪项查询函数生成的;所述查询指令是响应于用户通过客户端针对第一目标端口的连接跟踪项触发的查看操作生成的;
基于所述第一目标端口的标识,在所述连接跟踪表中查询与所述请求指定第一目标端口匹配的连接跟踪项;
将查询结果反馈至所述第一进程模块,以通过所述第一进程模块将所述查询结果发送至命令触发模块,由所述命令触发模块将所述查询结果发送至客户端以进行显示。
6.根据权利要求5所述的方法,其特征在于,在针对处于已被跟踪过但未建立连接状态的连接请求报文,获取发出所述连接请求报文的源端口的标识之前,还包括:
接收所述第一进程模块针对所述连接请求报文发送的向连接跟踪表中添加连接跟踪项的动作指令;
基于所述动作指令,执行上述针对处于已被跟踪过但未建立连接状态的连接请求报文,获取发出所述连接请求报文的源端口的标识的步骤,以确定是否允许所述源端口建立相应连接。
7.根据权利要求2所述的方法,其特征在于,还包括:
接收第二进程模块发送的数据同步消息;其中,所述消息携带用户针对第二目标端口的允许最大连接数配置的待同步数据;所述消息是响应于配置模块发送的携带有所述待同步数据的同步指令,将所述待同步数据存储至数据库后发送的;所述同步指令是基于用户通过客户端针对第二目标端口的允许最大连接数触发的配置操作生成的;
基于所述待同步数据,执行对所述哈希表的操作,以更新所述哈希表;
其中,对所述哈希表的操作包括如下中的至少一种:添加新端口的允许最大连接数的操作,删除已有端口的允许最大连接数的操作、修改已有端口的允许最大连接数的操作。
8.一种数据处理系统,其特征在于,包括:
连接处理模块,用于针对处于已被跟踪过但未建立连接状态的连接请求报文,获取发出所述连接请求报文的源端口的标识;根据所述源端口的标识,从存储的哈希表中查找出所述源端口的允许最大连接数及已建连接数;根据所述源端口的允许最大连接数及已建连接数,确定是否允许所述源端口建立相应连接;
第一进程模块,用于针对所述连接请求报文,向所述连接处理模块发送向连接跟踪表中添加连接跟踪项的动作指令,以使所述连接处理模块基于所述动作指令,执行上述确定是否允许所述源端口建立相应连接的相关步骤。
9.根据权利要求8所述的系统,其特征在于,所述源端口为虚拟交换机的多个端口中的一个;所述连接处理模块中包括连接限制单元;
所述连接限制单元具有所述哈希表,所述哈希表用于存储所述多个端口各自的标识及对应的连接信息;所述连接信息包含允许最大连接数、已建连接数;以及
所述连接处理模块,具体用于根据所述源端口的标识,在连接限制单元的哈希表中查找所述源端口对应的连接信息;基于查找出的所述源端口对应的连接信息,确定所述源端口的允许最大连接数及已建连接数。
10.一种虚拟交换机,其特征在于,包括连接处理模块,所述连接处理模块中包含存储器和处理器;所述存储器用于存储一条或多条计算机指令,所述一条或多条计算机指令被所述处理器执行时能够实现上述权利要求1-7任一项所述数据处理方法中的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111561850.5A CN114268594A (zh) | 2021-12-16 | 2021-12-16 | 数据处理方法、系统及虚拟交换机 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111561850.5A CN114268594A (zh) | 2021-12-16 | 2021-12-16 | 数据处理方法、系统及虚拟交换机 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114268594A true CN114268594A (zh) | 2022-04-01 |
Family
ID=80828289
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111561850.5A Pending CN114268594A (zh) | 2021-12-16 | 2021-12-16 | 数据处理方法、系统及虚拟交换机 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114268594A (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102546666A (zh) * | 2012-02-28 | 2012-07-04 | 神州数码网络(北京)有限公司 | 防止igmp欺骗和攻击的方法及装置 |
US8423662B1 (en) * | 2003-04-28 | 2013-04-16 | Akamai Technologies, Inc. | Forward request queuing in a distributed edge processing environment |
CN103365929A (zh) * | 2012-04-10 | 2013-10-23 | 阿里巴巴集团控股有限公司 | 一种数据库连接的管理方法及系统 |
CN106161551A (zh) * | 2015-04-16 | 2016-11-23 | 腾讯科技(深圳)有限公司 | 一种控制虚拟机连接数的方法及装置 |
CN109150890A (zh) * | 2018-09-05 | 2019-01-04 | 杭州迪普科技股份有限公司 | 新建连接攻击的防护方法及相关设备 |
CN110545336A (zh) * | 2019-09-06 | 2019-12-06 | 深圳平安通信科技有限公司 | Ip地址替换方法、装置、计算机设备和存储介质 |
-
2021
- 2021-12-16 CN CN202111561850.5A patent/CN114268594A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8423662B1 (en) * | 2003-04-28 | 2013-04-16 | Akamai Technologies, Inc. | Forward request queuing in a distributed edge processing environment |
CN102546666A (zh) * | 2012-02-28 | 2012-07-04 | 神州数码网络(北京)有限公司 | 防止igmp欺骗和攻击的方法及装置 |
CN103365929A (zh) * | 2012-04-10 | 2013-10-23 | 阿里巴巴集团控股有限公司 | 一种数据库连接的管理方法及系统 |
CN106161551A (zh) * | 2015-04-16 | 2016-11-23 | 腾讯科技(深圳)有限公司 | 一种控制虚拟机连接数的方法及装置 |
CN109150890A (zh) * | 2018-09-05 | 2019-01-04 | 杭州迪普科技股份有限公司 | 新建连接攻击的防护方法及相关设备 |
CN110545336A (zh) * | 2019-09-06 | 2019-12-06 | 深圳平安通信科技有限公司 | Ip地址替换方法、装置、计算机设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9940153B2 (en) | Method for generating configuration information, and network control unit | |
US10243833B2 (en) | Flow table management method, and related device and system | |
EP3905590A1 (en) | System and method for obtaining network topology, and server | |
US11575592B2 (en) | Message processing method and apparatus, control-plane device, and computer storage medium | |
CN112714138B (zh) | 基于攻击流量的测试方法、装置、设备及存储介质 | |
US10198338B2 (en) | System and method of generating data center alarms for missing events | |
CN102075537B (zh) | 一种实现虚拟机间数据传输的方法和系统 | |
EP2811691B1 (en) | Method and device for synchronizing network data flow detection status | |
EP3844911B1 (en) | Systems and methods for generating network flow information | |
CN108810008B (zh) | 传输控制协议流量过滤方法、装置、服务器及存储介质 | |
CN112887229B (zh) | 一种会话信息同步方法及装置 | |
WO2011032321A1 (zh) | 一种数据转发方法、数据处理方法、系统以及相关设备 | |
WO2020151482A1 (zh) | 信息查询方法、装置、设备及存储介质 | |
Li et al. | SDN-based stateful firewall for cloud | |
JP7228712B2 (ja) | 異常ホストのモニタニング | |
WO2023143579A1 (zh) | 流表项的控制方法以及装置 | |
CN114268594A (zh) | 数据处理方法、系统及虚拟交换机 | |
US10541914B2 (en) | Data packet forwarding method and network device | |
CN111031056A (zh) | 一种在安全组中实现安全域功能的方法 | |
CN109413118B (zh) | 一种实现会话同步的方法、装置及存储介质、程序产品 | |
CN104468767A (zh) | 一种云存储数据冲突检测方法及系统 | |
CN112350988A (zh) | 一种安全策略的字节数与连接数统计方法与装置 | |
CN111107142A (zh) | 业务访问方法和装置 | |
EP4412310A1 (en) | System and method for processing message, and network apparatus | |
CN100558114C (zh) | 一种网络应用信息处理系统及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |