一种适用于RDMA网络的虚拟化安全网关系统

文档序号:29564830发布日期:2022-04-09 02:04阅读:165来源:国知局
一种适用于RDMA网络的虚拟化安全网关系统
一种适用于rdma网络的虚拟化安全网关系统
技术领域
1.本发明涉及网络领域,具体而言,涉及一种适用于rdma网络的虚拟化安全网关系统。


背景技术:

2.不同于传统的tcp/ip网络,远程直接内存访问(remote direct memory access,rdma)将数据包的处理从内核网络协议栈下放到了专用的网卡硬件上,从而在数据传输的过程中可以绕过内核而直接在网卡上处理。由此可以减少对处理器的占用,并且减少了从用户应用空间到内核空间的数据拷贝。除此之外,利用rdma协议提供的远程秘钥验证,当发送端与接收端双方建立好连接后,发送端可以直接把数据传送到接收端指定的内存地址上,从而可以绕过接收端的处理器,进一步降低了数据传输的延迟。由此,rdma作为一种高速网络技术,提供了高带宽低延迟的特性,开始在数据中心网络中被采用。
3.然而,正是因为rdma技术在数据传输的过程中绕过了内核的网络协议栈,所以原有的针对tcp/ip的安全控制技术不能很好地适用于rdma网络。同时,由于需要将数据包的处理等操作卸载到网卡上,因此网卡需要缓存一部分内存地址的映射以及与连接相关的数据信息。因此一个程序可以恶意地占用网卡的资源以造成网络的拒绝访问攻击,或者通过预测数据包的信息来构建虚假的数据包从而干扰通信。目前针对这些安全问题仍然还在研究中。
4.在已有的研究中,有一些是对网卡进行了重新的设计或者利用现场可编程门阵列设计新的网卡,从而避免rdma协议的缺点。除此之外,微软、ibm等公司有提出过针对rdma的网络虚拟化技术,从而使rdma可以更好地应用于云计算数据中心中,提供更加弹性、可控、易于隔离的rdma网络环境。然而这些技术主要是面向虚拟化技术本身的,没有对网络安全等做出一些解决方案。


技术实现要素:

5.本发明实施例提供了一种适用于rdma网络的虚拟化安全网关系统,以至少解决现有虚拟化技术安全性能低的技术问题。
6.根据本发明的实施例,提供了一种适用于rdma网络的虚拟化安全网关系统,包括:
7.虚拟化后端,用于通过调用全局符号函数向内核安全模块提供虚拟机对rdma网络的使用情况,并负责具体的安全机制的保障,内核安全模块与用户层安全进程协同完成安全策略的制定;
8.内核安全模块,用于负责收集历史数据,并对历史数据进行归纳到一个滑动窗口上,在预设的时刻将历史数据通过netlink发送给用户层安全进程对历史数据进行分析预测,以预测判断是否存在安全威胁;并在收到预测数据后,制定安全策略并通过内核通知链通知虚拟化后端采取措施保障安全机制。
9.进一步地,在用户态的一个守护进程上对虚拟机使用rdma时产生的历史数据的滑
动窗口数据进行分析与预测。
10.进一步地,使用套接字netlink用于内核态与用户态进程之间的通信。
11.进一步地,用户层安全进程在发送完预测数据后马上进入睡眠状态,等待下一次被内核安全模块的通知唤醒,预测数据会被放置在内核安全模块的接收队列中等待接收处理;
12.在用户安全进程第一次启动并初始化时,会通过netlink向内核安全模块发送自己的进程号作为标识,当内核安全模块需要将数据发送给用户安全进程时,通过单播的形式发送到指定进程号的进程上,从而通知该进程有新的请求过来,随后该进程会创建一个新的线程去处理数据并做出预测,用户安全进程在完成数据预测等工作后,会把数据通过netlink发送给进程号为0的内核安全模块。
13.进一步地,虚拟机中的应用程序发出的rdma调用将被位于虚拟机中的虚拟化前端捕获,并通过输入输出半虚拟化中的通信技术与位于宿主机中的虚拟化后端通信,接下来虚拟化后端会对应用程序的调用进行处理,并调用网卡驱动程序中的相关命令来向物理网卡发出实际的请求。
14.进一步地,针对其中的连接或者要使用网卡资源的命令,在虚拟化后端向物理网卡发出请求之前,会被转发到内核安全模块上,以供内核安全模块收集每个虚拟机的网络请求数据;同时在虚拟化后端上利用系统内核中的整数管理机制来标识每个虚拟机;
15.虚拟化后端在初始化时会注册与安全策略相对应的回调函数,并将其注册到内核安全模块建立的一个内核通知链上,当内核安全模块发出安全决策的事件时,会调用到该回调函数。
16.进一步地,内核安全模块负责接收来自虚拟化后端的数据,并对收集到的数据进行定期的归纳整理到一个滑动窗口中,在预设的时刻向用户层安全进程发出数据预测的请求,并在接收到数据后根据历史数据以及全局的状态进行安全决策,将决策发送给虚拟化后端;
17.内核安全模块将内核安全中收集数据相关的函数设置为全局函数,并将其导出为符号,虚拟化后端可以直接调用函数来传送数据。
18.进一步地,在内核安全模块中设置有一个内核级的历史数据收集线程,历史数据收集线程周期性地收集每个虚拟机对资源的占用情况。
19.进一步地,在虚拟化后端上注册一个回调函数来响应做出决策的事件,并将回调函数注册到对应的通知链中;
20.内核安全模块在初始化的时候会定义一个通知链,其中保存了虚拟化后端对事件的处理函数,当内核安全模块制定好安全决策后,产生一个决策事件,发出通知。
21.进一步地,在内核安全模块与用户层安全进程之间传输数据时,通过两者共享内存实现,同时内核利用netlink向用户层的安全进程发出一个通知,来通知用户层安全进程接收数据并处理。
22.本发明实施例中的适用于rdma网络的虚拟化安全网关系统,虚拟化后端负责具体的安全机制的保障,内核安全模块与用户层安全进程协同完成安全策略的制定。虚拟化后端通过调用全局符号函数向内核安全模块提供虚拟机对rdma网络的使用情况。内核安全模块负责收集数据,并对历史数据归纳到滑动窗口中,在合适的时刻将历史数据通过netlink
发送给用户层安全进程对数据进行分析预测,以预测判断是否存在安全威胁。内核安全模块在收到预测数据后,制定安全策略并通过内核通知链通知虚拟化后端采取措施保障安全机制。
附图说明
23.此处所说明的附图用来提供对本发明的进一步理解,构成本技术的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
24.图1为本发明适用于rdma网络的虚拟化安全网关系统的虚拟化场景图;
25.图2为本发明适用于rdma网络的虚拟化安全网关系统的模块示意图。
具体实施方式
26.为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
27.需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
28.本发明设计了一种在虚拟环境下的安全网关系统(以下简称虚拟化安全网关),以解决以远程直接内存访问(remote direct memory access,rdma)网络为通信基础的计算中心中的安全问题。该发明在现有的rdma虚拟化解决方案的基础上,增加相关的安全模块,通过操作系统的内核安全模块与应用层的进程之间的协作,为云环境中的宿主机以及同一主机上的其他虚拟机提供安全的运行环境。
29.由于rdma技术在数据传输的过程中绕过了内核的网络协议栈,将数据包的处理下放到了rdma的网卡上,同时不需要接收端的处理器参与,因此降低了处理器在数据传输过程中的开销,降低了数据传输的延迟并提高了吞吐量。基于以上的特点,rdma在数据中心中得到了一定的应用,也有一些公司开发了虚拟化rdma系统以使rdma更好地适应云计算的需求。然而,目前对rdma的应用仍然处于上升阶段,对rdma安全问题的处理手段还不够成熟。尤其是rdma需要在网卡上缓存一部分数据来加速计算,使得这一部分资源更容易收到拒绝服务攻击。然而目前很少有相关技术关注到rdma的安全问题。
30.现有的技术在解决rdma的性能和安全问题时,基本上都是从网络协议或者网卡硬件层面去解决的。比如在网络协议上增加安全认证以及对敏感内容的加密解决策略,或者利用现场可编程门阵列在原有网卡的基础上进行扩展或者在现有的设计思想基础上设计新的网卡。这两类方法造成的损耗较小,但是需要替换底层的网卡硬件或者原有的rdma网
络协议,部署成本较高。
31.除此之外,云计算的兴起使得现在很多应用运行在虚拟机或者容器上,因此微软等公司开发了基于容器、虚拟机的rdma虚拟化解决方案,虚拟机或容器发出的rdma操作可以转发到主机上的特殊模块上,然后与rdma网卡通信。但是这些网络虚拟化技术仍然聚焦于对虚拟化技术本身的实现,并没有实现专门针对rdma网络的安全控制系统。因此目前在rdma方面安全控制的相关技术仍然比较少。
32.本发明的目的,是想从软件层面上增加针对rdma安全性的防护,而不需要修改原有的网络协议或者网卡硬件设备,从而使该发明更符合目前的云计算趋势。在具体的实施上,以现有的rdma虚拟化解决方案为基础,在其上的虚拟化网关上扩展安全功能,从而实现软件层面的虚拟化安全网关。同时利用安全机制与安全策略分离的思想,并在用户层增加机器学习对历史数据的预测,及时地对安全威胁进行预测与防护。
33.具体地,本发明设计了一种适用于rdma网络的虚拟化安全网关系统。该系统以现有的rdma网络虚拟化技术为基础,采用安全机制与安全策略分离的思想,在网络虚拟机的基础上扩展出一个虚拟化安全网关。该安全网关由位于内核的安全模块与位于用户态的安全守护进程共同协作,内核的安全模块负责处理虚拟机的网络请求数据并制定具体的策略。而为了能够及时预测发现潜在的安全问题,本发明在用户态上实现了一个守护进程来接收从内核态发出的周期性数据并保存到滑动窗口中,并利用机器学习的方法对该数据进行处理预测,分析潜在的问题,从而与内核安全模块协同合作,完成对服务器的安全防护。
34.本发明基于一种rdma网络虚拟化技术,该技术可以将运行在虚拟机上的应用程序发出的命令转发到宿主机上的虚拟化后端上。本发明在此基础上进行了扩展,采用安全机制与安全策略分离的思想设计了一个虚拟安全网关系统。
35.该系统主要包括三部分:修改后的虚拟化后端、位于内核空间的内核安全模块和位于用户空间的用户层安全进程。虚拟化后端负责具体的安全机制的保障,内核安全模块与用户层安全进程协同完成安全策略的制定。虚拟化后端通过调用全局符号函数向内核安全模块提供虚拟机对rdma网络的使用情况。内核安全模块负责收集数据,并对历史数据归纳到滑动窗口中,在合适的时刻将历史数据通过netlink发送给用户层安全进程对数据进行分析预测,以预测判断是否存在安全威胁。内核安全模块在收到预测数据后,制定安全策略并通过内核通知链通知虚拟化后端采取措施保障安全机制。
36.该发明基于一个rdma的虚拟化场景。该场景是在基于内核的虚拟机技术和快速模拟器的环境中,适用于在该环境中所创建的虚拟机,该虚拟化场景的基本结构如图1-2所示。在该场景下,虚拟机中的应用程序发出的rdma调用将被位于虚拟机中的虚拟化前端捕获,并通过输入输出半虚拟化中的通信技术与位于宿主机中的虚拟化后端通信。接下来该虚拟化后端会对应用程序的调用进行处理,并调用网卡驱动程序中的相关命令来向物理网卡发出实际的请求。通过以上的方式,可以实现虚拟机对rdma网卡的使用,并且可以实现宿主机对虚拟机的网络监测以及动态的调度。在该场景下,本发明所提及的虚拟化后端实际上扮演着虚拟化网关的角色,即:接收虚拟机的网络命令、处理命令并转发命令到物理网卡上。本发明就是在这一前提下进行的。
37.本发明设计的基于rdma的虚拟环境下的安全网关系统,采用了策略与控制分离的思想。该系统主要包括三部分:修改后的虚拟化后端、位于内核空间的内核安全模块和位于
用户空间的用户层安全进程。其中:
38.1.修改后的虚拟化后端
39.修改后的虚拟化后端负责实施具体的安全控制,因此本发明要在原有的网络虚拟化后端的基础之上做少量的修改。
40.首先,针对其中的连接或者要使用网卡资源的命令,在虚拟化后端向物理网卡发出请求之前,会被转发到下述内核安全模块上,以供该模块收集每个虚拟机的网络请求数据。同时,在虚拟化后端上需要保存每个虚拟机的一部分信息,对此本发明利用系统内核中的整数管理机制来标识每个虚拟机。
41.另外,在前面本发明有提到,虚拟化后端需要接收来自内核安全模块的安全策略。这个策略信息中包括了不同策略的标识以及对应的虚拟机。这一部分的通信是通过内核通知链的形式进行的。虚拟化后端在初始化的时候就会注册与安全策略相对应的回调函数,并将其注册到内核安全模块建立的一个内核通知链上。当内核安全模块发出安全决策的事件时,会调用到这个回调函数,从而可以由虚拟化后端做下一步的安全控制。
42.针对于不同的安全策略,在虚拟化后端上有不同的处理。对于虚拟机发出的恶意资源消耗的拒绝服务攻击,虚拟化后端将中断与虚拟机之间的输入输出半虚拟化技术通信,暂时不再处理该虚拟机的请求,并且注销掉该虚拟机之前所建立的连接以及占用的资源。而对于调整虚拟机占用资源的,虚拟化后端会将虚拟机的资源占用加以限制,并在虚拟机占用资源超出限制时阻塞在队列中。
43.2.内核安全模块
44.该模块负责接收来自虚拟化后端的数据,并对收集到的数据进行定期的归纳整理,在适当的时刻向用户层安全进程发出数据预测的请求,并在接收到数据后根据历史数据以及全局的状态进行安全决策,将决策发送给虚拟化后端。下面对该部分进行详细的描述。
45.在之前本发明有提到过,虚拟化后端会接收每个虚拟机发出的调用命令,其中包括了很多与建立连接、使用网卡资源等相关的命令,本发明可以通过分析这些数据来判断是否有安全威胁。因此,这一部分数据需要发送到内核安全模块上的数据收集模块。为了使虚拟化后端将数据发送给内核安全模块,本发明将内核安全中收集数据相关的函数设置为全局函数,并将其导出为符号,这样虚拟化后端可以直接调用该函数来传送数据。具体来说,本发明要收集的数据包括:

应用建立连接的数据(源端与目的端建立连接的信息与数量);

应用发起的对网络队列对端口使用的情况(包括创建、修改、销毁等命令)。
46.为了能够及时发现安全威胁,本发明可以对应用使用的资源进行预测,以预防恶意应用发起的资源恶意消耗的拒绝服务攻击。为此,在内核安全模块中会有一个内核级的线程——历史数据收集线程。该线程周期性地收集每个虚拟机对资源的占用情况。
47.当内核安全模块做出安全决策后,本发明需要将这个安全决策发送给虚拟化后端,由虚拟化后端根据决策的信息,对虚拟机后续的通信做出处理。比如,如果判断出虚拟机存在比较严重的恶意资源消耗的攻击,直接中断虚拟机对网卡的使用,并且不再接收、处理虚拟机通过输入输出半虚拟化的消息队列发过来的请求。为了能够将决策信息从内核安全模块传送到虚拟化后端,本发明使用了内核通知链作为两个内核安全模块之间的连接。本发明在虚拟化后端上注册一个回调函数来响应做出决策的事件,并将该函数注册到对应
的通知链中。内核安全模块在初始化的时候会定义一个通知链,其中保存了虚拟化后端对事件的处理函数(回调函数)。当内核安全模块制定好安全决策后,产生一个决策事件,发出通知(这个过程实际上就是遍历通知链中的每一项,然后调用相应的事件处理函数)。
48.3.用户层安全进程
49.为了能够及时发现在使用rdma通信过程中存在的安全问题,本发明对虚拟机使用rdma时产生的历史数据滑动窗口进行分析与预测,本发明将该功能放在用户态的一个守护进程上进行。
50.同时,预测的数据需要及时反馈给内核安全模块。因此本发明需要支持用户层安全进程与内核安全模块之间的双向通信。为此,本发明使用了一种特殊的套接字——netlink,将其用于内核态与用户态进程(即用户安全进程与内核安全模块)之间的通信。通过该技术,用户层安全进程和内核安全模块之间可以实现全双工异步通信。用户层安全进程在发送完预测数据后马上进入睡眠状态,等待下一次被内核安全模块的通知唤醒。预测数据会被放置在内核安全模块的接收队列中等待接收处理。
51.在用户安全进程第一次启动并初始化的阶段,会通过netlink向内核安全模块发送自己的进程号作为标识,这样当内核安全模块需要将数据发送给用户安全进程时,通过单播的形式发送到指定进程号的进程上,从而通知该进程有新的请求过来。随后该进程会创建一个新的线程去处理数据并做出预测。用户安全进程在完成数据预测等工作后,会把数据通过netlink发送给进程号为0的进程。该进程就是本发明所说的内核安全模块。
52.本发明的创新技术点至少在于:
53.(1)本发明从软件层面上来处理rdma网络的安全问题,而不是基于硬件层面的修改。
54.(2)本发明设计了一套虚拟安全网关系统,采用机制与策略分离的思想,在虚拟化后端保证安全机制,内核安全模块与用户层安全进程协作完成安全策略的制定,并在用户层对滑动窗口内的历史数据进行分析预测。
55.(3)本发明利用netlink实现内核安全模块与用户态进程的协作通信,并利用内核通知链实现安全策略的下发。
56.与原有的技术相比,本发明从软件层面上实现了针对rdma的安全功能强化,相对于其他从硬件或原有网络协议上做修改的方法,本发明维护成本较低,易于部署和扩展。并且本发明在普通的安全防护基础上加入了对历史数据的分析以及后续数据与安全威胁的预测,可以进一步强化虚拟环境下的网络安全。
57.本发明已经设计实现了基于该发明的原型,并进行了初步的实验验证,证实方案可行。对安全威胁有比较好的预测与防护功能,并且对性能的损失较小。
58.本发明在模块之间的通信上有可以替代的方案。如:在内核安全模块与用户层安全进程之间传输数据时,从内核到用户层的数据传输可以通过两者共享内存实现,同时内核利用netlink向用户层的安全进程发出一个通知,来通知用户层安全进程接收数据并处理。这种方案可以在一定程度上降低历史数据传输的延迟。
59.以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1