本发明属于计算机网络通信领域,具体地涉及用于多终端连接的网关的数据分流方法、数据分流装置以及网关系统。
背景技术:
云计算是一种动态易扩展的通过互联网提供虚拟化资源的计算方式,云计算分为基础设施即服务(infrastructureasaservice,iaas)、平台即服务(platformasaservice,paas)和软件即服务(softwareasaservice,saas)三个层次的服务资源池。在云计算环境中,用户的处理器、内存、硬盘等资源形成池化的资源池,对用户统一提供服务。
因此,多个租户使用统一的资源池提供的底层硬件资源,例如处理器资源。由于所有租户共享所有物理处理器,如果单一租户占用过多处理器资源,则处理器无法继续处理其他租户的流量数据,势必会干扰其他租户的正常操作。比如,当某一租户受到ddos攻击时,可能导致高达100%的处理器负荷,不仅使得其他租户的流量数据得不到处理器调度处理,甚至管理程序也无法调度处理器资源进行修护工作。
为了避免上述情况,保证云计算服务的可靠性以及租户数据的安全性,需要对不同租户的流量数据进行隔离并分流。
目前,在云计算的环境中,用于多个租户的网关较多地通过隧道封装的方式提供租户隔离,例如gre(genericroutingencapsulation,通用路由封装协议)隧道。隧道是一种封装技术,它利用一种网络协议来传输另一种网络协议,即利用一种网络传输协议,将其他协议产生的数据报文封装在它自己的报文中,然后在网络中传输。实际上隧道可以看作一个虚拟的点到点连接。gre隧道仅支持点到点的业务接入。
然而,以这种方式,用于多个租户的网关仍然要以单一的同一个操作系统协议栈对多个租户的流量数据进行解封装,即,多个租户仍然共享单一的协议栈,这将会导致性能瓶颈,更容易出现性能异常。比如为满足不同租户的防火墙需求,导致防火墙规则过长,类似地,qos规则也过长,性能出现线性下降。
技术实现要素:
为解决上述技术问题,即,为了克服多个租户通过同一协议栈连接到网关导致的性能瓶颈和安全隐患,提供了本发明。
根据本发明的第一方面,提供一种网关的数据分流方法,包括下述步骤:识别步骤:识别向网关发送数据的多个终端;分配步骤:将多个命名空间一一对应地分配至多个终端中的每一个终端,并且在多个命名空间中的每一个命名空间内建立协议栈,多个终端中的每一个终端通过与其对应的命名空间内的协议栈向网关发送数据;判定步骤:实时监测多个协议栈中的每一个协议栈占用的处理器资源量,基于预定规则,在多个协议栈中判定出异常协议栈;转交步骤:将异常协议栈的数据转交与当前处理器不同的另一处理器进行处理。
在本发明的第一方面的数据分流方法中,优选地,预定规则为,当处理器整体的占用率达到第一阈值时,将多个协议栈中占用最多处理器资源量的协议栈判定为异常协议栈。
在本发明的第一方面的数据分流方法中,优选地,预定规则为,将多个协议栈中的占用的处理器资源大于等于第二阈值的协议栈判定为异常协议栈。
根据本发明的第二方面,提供一种网关的数据分流装置,包括识别模块,用于识别向网关发送数据的多个终端;分配模块,用于将多个命名空间一一对应地分配至多个终端中的每一个终端,并且在多个命名空间中的每一个命名空间内建立协议栈,多个终端中的每一个终端通过与其对应的命名空间内的协议栈向网关发送数据;判定模块,用于实时监测多个协议栈中的每一个协议栈占用的处理器资源量,基于预定规则,在多个协议栈中判定出异常协议栈;转交模块,用于将异常协议栈的数据转交与当前处理器不同的另一处理器进行处理。
在本发明的第二方面的数据分流装置中,优选地,预定规则为,当处理器整体的占用率达到第一阈值时,将多个协议栈中占用最多处理器资源量的协议栈判定为异常协议栈。
在本发明的第二方面的数据分流装置中,优选地,预定规则为,将多个协议栈中的占用的处理器资源大于等于第二阈值的协议栈判定为异常协议栈。
根据本发明的第三方面,提供一种存储介质,该存储介质存储有网关的数据分流程序,数据分流程序在执行时会使得处理器执行数据分流方法,网关的数据分流程序包括:识别指令,运行识别指令以识别向网关发送数据的多个终端;分配指令,运行分配指令以将多个命名空间一一对应地分配至多个终端中的每一个终端,并且在多个命名空间中的每一个命名空间内建立协议栈,多个终端中的每一个终端通过与其对应的命名空间内的协议栈向网关发送数据;判定指令,运行判定指令以实时监测多个协议栈中的每一个协议栈占用的处理器资源量,基于预定规则,在多个协议栈中判定出异常协议栈;转交指令,运行转交指令以将异常协议栈的数据转交与当前处理器不同的另一处理器进行处理。
在本发明的第三方面的存储介质中,优选地,预定规则为,当处理器整体的占用率达到第一阈值时,将多个协议栈中占用最多处理器资源量的协议栈判定为异常协议栈。
在本发明的第三方面的存储介质中,优选地,预定规则为,将多个协议栈中的占用的处理器资源大于等于第二阈值的协议栈判定为异常协议栈。
根据本发明的第四方面,提供一种网关系统,包括:多个处理器;存储介质,其中存储有数据分流程序,该数据分流程序具有:识别指令,运行识别指令以识别向网关发送数据的多个终端;分配指令,运行分配指令以将多个命名空间一一对应地分配至多个终端中的每一个终端,并且在多个命名空间中的每一个命名空间内建立协议栈,多个终端中的每一个终端通过与其对应的命名空间内的协议栈向网关发送数据;判定指令,运行判定指令以实时监测多个协议栈中的每一个协议栈占用的处理器资源量,基于预定规则,在多个协议栈中判定出异常协议栈;转交指令,运行转交指令以将异常协议栈的数据转交与当前处理器不同的另一处理器进行处理。
在本发明的第四方面的网关系统中,优选地,预定规则为,当处理器整体的占用率达到第一阈值时,将多个协议栈中占用最多处理器资源量的协议栈判定为异常协议栈。
在本发明的第四方面的网关系统中,优选地,预定规则为,将多个协议栈中的占用的处理器资源大于等于第二阈值的协议栈判定为异常协议栈。
通过本发明的上述网关的数据分流方法、数据分流装置以及存储介质,使用本发明的网关系统能够协议栈将各个终端租户的网络流量进行隔离,并且将异常租户的协议栈导向空闲处理器处理,能够使得将攻击流量与正常网络数据流量合理分流,避免影响其他终端租户的正常网络访问。
附图说明
图1示出根据本发明的第四方面的网关系统与多个终端的布置示意图;
图2示出根据本发明的第一方面的数据分流方法的流程图。
具体实施方式
下面将结合实施例说明本发明的数据分流方法在多租户(多终端的)云计算网关中的具体应用。在该实施例中,三个租户a、b、c均需通过网关(gateway)20连接到远端云计算服务器。网关又称网间连接器、协议转换器,是一种充当转换重任的计算机系统或设备。网关能够在使用不同的通信协议、数据格式或语言,甚至体系结构完全不同的两种系统之间充当翻译器的功能。换言之,网关需要对接收到的信息数据包进行拆包,获得有用数据后对其进行存储等操作,然后再进行打包,通过目标系统允许的通信协议与目标系统通信,以适应目的系统的需求。同时,网关也可以提供过滤和安全功能。目前,网关可以是单独的硬件设备,也可以指代以软件方式实现网关功能的其他硬件设备本身,比如路由器、交换机等。
具体地,通过配置协议栈(protocolstack),三个租户a、b、c能够首先与网关20进行互联,其中协议栈又称协议堆叠,是指网络中各层协议的总和。协议定义与其它系统通信的方式,描述信号时序和通信数据的结构。在协议栈的较低层定义了厂商们可以遵循规则以使他们的设备可以与其它厂商的设备进行互联。较高层定义如何管理不同类型的通信会话,用户应用程序如何才能相互操作。
根据现有技术,本领域技术人员能够知晓,协议栈是协议的实现,可以理解为代码、函数库、供上层应用调用,其是计算机网络协议套件的一个具体的软件实现。
在云计算的环境下,为满足大量租户的连接需求,充当网关的硬件设备通常具有多核或者多个处理器(cpu)以对接收到的数据包进行拆包打包工作,在本实施例中,参见图1,网关20具有多个例如八个处理器cpu_1~cpu_8,分为活跃处理器组和闲置处理器组,其中可以采用cpu_1~cpu_7作为整体组成该活跃处理器组,默认由活跃处理器组执行运算操作以对数据包进行拆包打包,而预留处理器cpu_8作为闲置处理器组,其不执行任何操作。根据具体实施需要,活跃处理器组和闲置处理器组的比例可以任意设定。并且本领域技术人员可以想象,这种对多个处理器进行分组不仅可以是对多个物理处理器进行的分组,也可以是对同一个处理器上划分的多个虚拟处理器进行分组。
当其中一个租户受到网络攻击时,将会在一定时间内产生大量的网络数据流量。为处理这些大量网络数据流量,需要相应地占用网关20大量甚至全部的处理器硬件资源,因此使得正常租户的网络访问请求不能被及时处理,从而导致正常租户网络异常,可能造成正常租户数据丢失,直接导致巨大经济损失。
为此,结合图1所示的本发明的网关系统,说明本发明在第一方面提供了一种网关的数据分流方法,分为识别步骤、分配步骤、判定步骤和转交步骤,该数据分流方法的流程图如图2所示。
在识别步骤st1中,首先网关20能够识别到有租户a、b、c向网关发送数据。
然后,执行分配步骤st2,将多个命名空间ns_a、ns_b、ns_c一一对应地分配至租户a、b、c。
此处命名空间(namespaces)是linux系统内核的一种机制,其提供了一种系统资源的隔离方案。linux系统内能够建立任意多个命名空间,每个命名空间内,pid(进程id)、ipc(进程间通信)、网络等系统资源不再是全局性的,而是属于单个命名空间。换言之,每个命名空间内的资源对其他命名空间都是不可见/不可用的。
在此基础上,在各个命名空间内分别建立协议栈,即在命名空间ns_a内建立协议栈ps_a,在命名空间ns_b内建立协议栈ps_b,在命名空间ns_c内建立协议栈ps_c。由于每个命名空间与租户一一对应,且每个命名空间内有且仅有一个协议栈,因此可知,这些协议栈也是与各租户一一对应的。
通过这种方法,三个租户a、b、c分别通过与其唯一对应的命名空间内的协议栈ps_a、ps_b、ps_c向网关发送数据。
在上述分配步骤st2中,首先通过命名空间将各个租户的协议栈进行隔离,每个租户有自己的协议栈,可以为各个协议栈分别设定防火墙规则、qos规则,避免了规则过长导致的性能下降。
然后,执行判定步骤st3,在判定步骤st3中,实时地检测协议栈ps_a、ps_b、ps_c分别占用的处理器资源量,然后根据预定规则,在协议栈ps_a、ps_b、ps_c中判定出异常协议栈。
具体地,处理器资源量可以通过当前的处理器使用率进行核算,或者基于一段时间内该协议栈进行调用处理器进行的计算量来核算。具体地,假设在在租户b收到网络攻击的情况下,与其对应的协议栈ps_b将频繁、大量占用网关20的处理器资源,此时能够观察到网关20的处理器整体占用率为例如99%,其中协议栈ps_b进程的处理器占用率例如为95%。同时,在处理器整体占用率迅速上升过程中,协议栈ps_b调用处理器进行的计算量也急剧上升。
此时,若预定规则为,将多个协议栈中占用最多处理器资源量的协议栈判定为异常协议栈,则能够判定出异常协议栈为协议栈ps_b。
另外,也可以对单个协议栈占用的处理器资源量设定阈值,比如25%,并且将上述预定规则设定为,将多个协议栈中的占用的处理器资源大于该阈值的协议栈判定为异常协议栈,也能够判定出异常协议栈为协议栈ps_b。
换言之,上述判定步骤st3是用于实时计算各租户的协议栈的处理器使用率,以待网关20发生异常的时候,识别出导致该异常的特定租户。
在判定出异常协议栈后,进行转交步骤st4。在转交步骤st4中,将异常协议栈的数据转交与当前处理器不同的另一处理器进行处理。具体地,此时已在上述判定步骤st3中将协议栈ps_b判定为异常协议栈,而协议栈ps_b调用与协议栈ps_a、协议栈ps_c公用的活跃处理器组(即,cpu_1~cpu_7)处理其数据。因此,通过设置软中断,改变协议栈进程和处理器之间的亲和性联系,将协议栈ps_b导向预留作为闲置处理器组的处理器cpu_8,实现本地隔离,保障活跃处理器组能够正常地进行运算处理,以满足其余正常租户的网络服务需求。
根据本发明的第二方面的数据分流装置的模块化示意图,其中,该数据分流装置10包括识别模块11,用于识别向网关发送数据的多个终端;分配模块12,用于将多个命名空间一一对应地分配至多个终端中的每一个终端,并且在多个命名空间中的每一个命名空间内建立协议栈,多个终端中的每一个终端通过与其对应的命名空间内的协议栈向网关发送数据;判定模块13,用于实时监测多个协议栈中的每一个协议栈占用的处理器资源量,基于预定规则,在多个协议栈中判定出异常协议栈;转交模块14,用于将异常协议栈的数据转交与当前处理器不同的另一处理器进行处理。
在本发明的第二方面的数据分流装置中,优选地,预定规则为,当处理器整体的占用率达到第一阈值时,将多个协议栈中占用最多处理器资源量的协议栈判定为异常协议栈。
在本发明的第二方面的数据分流装置中,优选地,预定规则为,将多个协议栈中的占用的处理器资源大于等于第二阈值的协议栈判定为异常协议栈。
根据本发明的第三方面,提供一种存储介质,该存储介质存储有网关的数据分流程序,数据分流程序在执行时会使得处理器执行数据分流方法,网关的数据分流程序包括:识别指令,运行识别指令以识别向网关发送数据的多个终端;分配指令,运行分配指令以将多个命名空间一一对应地分配至多个终端中的每一个终端,并且在多个命名空间中的每一个命名空间内建立协议栈,多个终端中的每一个终端通过与其对应的命名空间内的协议栈向网关发送数据;判定指令,运行判定指令以实时监测多个协议栈中的每一个协议栈占用的处理器资源量,基于预定规则,在多个协议栈中判定出异常协议栈;转交指令,运行转交指令以将异常协议栈的数据转交与当前处理器不同的另一处理器进行处理。
根据本发明的第四方面,提供一种网关系统,如图1所示,包括:多个处理器cpu_1至cpu_8;存储介质21,其中以下述方式配置所述多个处理器cpu_1至cpu_8:识别向网关系统20发送数据的终端,即租户a、b、c;将命名空间ns_a、ns_b、ns_c一一对应地分配至租户a、b、c,并且在命名空间ns_a、ns_b、ns_c内建立协议栈ps_a、ps_b和ps_c,租户a、b、c分别通过与其对应的命名空间内的协议栈向网关系统20发送数据;实时监测协议栈ps_a、ps_b和ps_c占用的处理器资源量,基于预定规则,在协议栈ps_a、ps_b和ps_c中判定出异常协议栈,例如当租户b受到网络攻击时,则协议栈ps_b为异常协议栈;将异常协议栈(在本例中,为协议栈ps_b)的数据转交与当前处理器不同的另一处理器进行处理。
在本发明的第四方面的网关系统中,优选地,预定规则为,当处理器整体的占用率达到第一阈值时,将多个协议栈中占用最多处理器资源量的协议栈判定为异常协议栈,则能够判定出异常协议栈为协议栈ps_b。
在本发明的第四方面的网关系统中,优选地,也可以对单个协议栈占用的处理器资源量设定阈值即,预定规则为,将多个协议栈中的占用的处理器资源大于等于第二阈值的协议栈判定为异常协议栈,则也能够将受到攻击的租户b专用的协议栈ps_b判定为异常协议栈。
通过本发明的上述网关的数据分流方法、数据分流装置以及网关系统,使用本发明的网关系统能够协议栈将各个终端租户的网络流量进行隔离,并且将异常租户的协议栈导向空闲处理器处理,能够使得将攻击流量与正常网络数据流量合理分流,避免影响其他终端租户的正常网络访问。
尽管在此已经详细描述了本发明的各种优选实施例,但是本领域技术人员应当理解,在不脱离所要求保护的本发明的情况下,可以对其进行变化。