CN115834448A - 基于eBPF的主机侧轻量级容器流量监控系统及方法 - Google Patents
基于eBPF的主机侧轻量级容器流量监控系统及方法 Download PDFInfo
- Publication number
- CN115834448A CN115834448A CN202211481213.1A CN202211481213A CN115834448A CN 115834448 A CN115834448 A CN 115834448A CN 202211481213 A CN202211481213 A CN 202211481213A CN 115834448 A CN115834448 A CN 115834448A
- Authority
- CN
- China
- Prior art keywords
- container
- ebpf
- information
- kernel
- network
- 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
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供了一种基于eBPF的主机侧轻量级容器流量监控系统及方法,包括:容器信息管理模块:收集和自动化维护容器信息;内核eBPF模块:在内核中执行的BPF程序,获取数据流量信息并传递给用户空间;eBPF程序管理模块:配合容器信息管理模块与用户交互模块进行内核eBPF程序的管理工作,提取获取到的数据流量信息传递给用户交互模块;用户交互模块:接受输入的容器流量管控规则,并转化为eBPF程序逻辑,实现系统功能。本发明基于eBPF技术,具有方便使用、效率高的特点,就流量监控而言,数据流量从接收到被捕获之间的传递路径更短,系统响应速度也更快。
Description
技术领域
本发明涉及网络安全领域,具体地,涉及一种基于eBPF的主机侧轻量级容器流量监控系统及方法。
背景技术
随着计算机软件与硬件技术的发展,传统的软件部署模式逐渐被云化场景所取代。5G与物联网的发展,也使得越来越多的企业开始拥抱云原生,将自己的产品部署到云端。数据显示,Google公司平均每周使用自己开发的容器编排系统Kubernetes(以下简称K8s)创建容器次数达到2亿次。Netflix公司平均每周在亚马逊云中创建容器的次数为200万次。这些数据都体现了目前容器与云原生技术蓬勃发展的现状。
相比于传统的物理主机部署模式,云场景下的应用一般都拥有更加方便的部署流程、更高的资源利用率、以及更便于访问的应用接口。在这些诸多优点背后则是云原生技术不断发展所倚靠的核心——容器技术。作为更加轻量级的虚拟化技术,容器技术基于Linux系统的namespace与Cgroups等资源隔离机制,实现了操作系统级别的虚拟化。运行于同一物理主机中的不同容器直接共享主机内核,而不需要进行各自的硬件虚拟化。因此,与Vmware等需要进行硬件虚拟化的传统虚拟化技术相比,容器的启动速度更快、部署过程更加简单与轻量级运行时的资源占用也更低。
虽然具备上述众多优点,但容器与云原生的高速发展同样也为网络安全领域带来了不可忽视的新挑战。这些安全挑战主要来自于三方面。首先,由于部署在云的应用往往需要负担更多的网络访问,因此容器应用在网络侧暴露的攻击面也更大。近几年有关云端应用遭受网络攻击的事件频发,而这些安全问题大多都由暴露过多网络接口的不安全容器所导致。其次,由于容器技术共享内核这一特点,其相比于传统基于硬件的虚拟化技术的安全性更低,容器之间的资源隔离机制容易被容器镜像、容器运行时、主机内核等方面的漏洞所打破,造成容器逃逸。一个容器受到影响,将会影响整台云主机上的所有容器。最后,作为新兴的技术领域,容器技术的特点也使得许多传统安全领域的工作在容器环境下的工作场景变得不同,过去的技术方法往往表现不佳。
在流量监控领域,相关工作以网络流量数据包为主要分析对象,通过数据包捕获、流量特征提取、规则匹配等步骤实现对于网络流量的监控与管理,从而阻止违反策略的网络数据包的传输,展示系统网络的整体运行状态,抵御网络侧的攻击,保障网络安全。因此,流量监控工作对于网络性能优化与网络侧入侵检测等工作都具有重要意义。在传统的应用部署模式下,服务器主机因为运行程序比较固定等原因,所产生的网络流量的数据规模大多处于可预估的范围内,流量特征比较明显,流量信息提取与流量监控工作的难度较低。而在云场景中,一个作为服务器的物理主机上可能会同时运行几十甚至上百个容器,每个容器中都运行着不同的微服务程序。而且现代容器的生命周期长度跨度大,生命周期短的容器可能在几秒之内就经历启动到销毁的过程,而生命周期长的容器则可能一直保持运行状态几个月。一方面,较大的容器密度使得云场景下主机环境中的网络流量增多,网络流量的整体数据量规模难以预估。另一方面,快速变化的容器状态与种类繁多的微服务也使得主机中的网络流量特征差异明显,提取流量特征与流量监控方面的工作难度显著增加。这些需求都需要特定的针对容器场景的流量监控方案来解决,容器场景下的网络流量监控这一研究内容也逐渐受到了越来越多的重视。
专利文献CN112333163A(申请号:CN202011149615.2)公开了一种容器间流量监控方法及流量监控管理系统,该容器间流量监控方法包括:获取SDN控制器发送的流量数据,所述流量数据包括SDN交换机采集的每个目标容器与该目标容器对应的下游容器之间的流量数据;针对每个目标容器,根据该目标容器对应的流量数据,判断该目标容器与对应的下游容器之间是否存在流量异常;在该目标容器与对应的下游容器之间存在流量异常的情形下,暂时阻隔该目标容器和对应的下游容器进行后续数据交互。但该发明没有基于eBPF技术,使其在内核中发挥作用。
发明内容
针对现有技术中的缺陷,本发明的目的是提供一种基于eBPF的主机侧轻量级容器流量监控系统及方法。
根据本发明提供的一种基于eBPF的主机侧轻量级容器流量监控系统,包括:
容器信息管理模块:收集和自动化维护容器信息;
内核eBPF模块:在内核中执行的BPF程序,获取数据流量信息并传递给用户空间;
eBPF程序管理模块:配合容器信息管理模块与用户交互模块进行内核eBPF程序的管理工作,提取获取到的数据流量信息传递给用户交互模块;
用户交互模块:接受输入的容器流量管控规则,并转化为eBPF程序逻辑,实现系统功能。
优选地,在所述容器信息管理模块中:
运行于用户空间;在系统启动后的预处理阶段进行容器信息收集,在系统启动阶段探测当前主机中运行的容器,搜集容器的相关信息包括虚拟网络设备名称,过滤掉不具备网络功能的容器,确定监控对象与获取监控所需的元数据;
预处理阶段的容器信息收集关注具备网络功能且正处于运行状态的容器,收集的信息字段为容器的标识ID、容器的名称、容器的虚拟网络设备标识信息、容器所使用的网络类型与容器在其网络隔离环境中的IP地址;
在系统运行过程中持续监听容器生命状态变化事件,动态维护当前所需监控的容器的信息,进行容器信息自动化维护,保证当前的容器信息集合与当前的主机环境相符合;
在系统运行阶段,利用docker events机制获取包含docker容器事件的管道,并启动一个协程持续监听管道中的事件信息,过滤出关键事件包含容器启动、停止、docker自定义网络的创建与连接;
容器信息管理模块使用docker客户端开发库,进行容器信息的收集,并通过docker的events机制,捕获容器的生命周期变化信息,以此维护需要监控的容器信息,并引导系统后续行为的发生;
docker events机制以管道的形式存在,管道中传递的容器状态变换信息包括网络的连接与断开、容器的启动与停止、卷的挂载与卸载;过滤掉与容器网络环境变化无关的信息后,剩余的信息对容器流量监控工作具有参考意义。
优选地,在所述内核eBPF模块中:
运行于内核空间,在位于Linux内核的eBPF虚拟机中以字节码的形式运行,关注容器虚拟网络设备的网络栈,通过被加载的不同类型的eBPF程序,获取经过虚拟网络设备的不同网络栈级别的流量信息,并且以eBPF的map机制为传输媒介,将内核空间捕获到的流量信息从内核空间传递到用户空间;
内核eBPF模块包含一个或多个运行于内核虚拟机中的eBPF程序,每个eBPF程序对应于一个被监控的正在运行的容器;模块中的eBPF程序类型包括xdp与tc,用于捕获位于网络栈不同层的网络流量的相关信息;
针对内核eBPF程序所捕获的数据流量,系统关注流量数据的源IP地址与目的IP地址,并与容器在自身所属的网络隔离环境中的IP地址相结合,向用户展示,并根据用户输入的自定义规则,获取数据流量信息的其他字段。
优选地,在所述eBPF程序管理模块中:
运行于用户空间,根据用户操作、容器的增加与减少,配合容器信息管理模块与用户交互模块进行内核eBPF程序的管理工作,管理工作包含eBPF程序的加载、卸载与更新操作;
从现有的eBPF程序所拥有的map对象中提取捕获到的流量数据,将其传递给用户交互模块;
eBPF程序的自动加载与卸载操作随着待监控容器对象的变化而发生,当检测到新的容器被创建时,新的eBPF程序会被加载入内核,当检测到某一被监控的容器被停止时,对应的eBPF程序则会被卸载。
优选地,在所述用户交互模块中:
运行于用户空间,以命令行的形式提供给用户不同指令选项,包含数据展示与规则操作指令,用户在命令行输入指令进行容器网络流量监控数据的查看,进行容器之间流量管控规则的添加与删除,用户交互模块负责接受用户输入的容器流量管控规则,并将其转化为内核中的eBPF程序逻辑,实现系统的功能;
用户交互模块提供功能包括容器网络流量信息展示和自定义规则输入,通过读取内核中eBPF程序的map结构体,得到eBPF程序捕获的容器流量数据信息,再经过格式化处理操作展示给使用者;提供阻止或允许特定容器之间的网络流量交互的规则形式,由用户输入规则,再将规则进行解析并转化为eBPF程序的特定逻辑,在内核中实现相关规则,具体体现为eBPF程序中挂钩函数的不同返回值。
根据本发明提供的一种基于eBPF的主机侧轻量级容器流量监控方法,采用所述的基于eBPF的主机侧轻量级容器流量监控系统,执行包括:
步骤S1:进行容器探测与元数据收集,对已有信息进行动态维护;
步骤S2:根据所得的容器信息,为每个具有网络功能的容器创建相应的eBPF程序,内核eBPF程序捕获容器流量数据;
步骤S3:将内核eBPF程序所捕获的网络数据包信息从内核空间传递到用户空间;
步骤S4:用户空间展示容器粒度的网络流量监控信息,并接受用户输入的流量管控规则,将规则转化为内核中相应的eBPF程序的执行逻辑并更新eBPF程序,实现进一步的流量监控。
优选地,在所述步骤S1中:
进行容器探测与元数据收集,利用docker工具集收集当前主机上处于运行状态且具备网络功能的容器信息,并基于docker events机制进行容器生命周期探测,对已有信息进行动态维护;
容器信息探测的方法是在系统启动后,通过docker客户端开发库来与主机上的dockerd守护进程通信,获取当前主机上的容器信息,过滤出正在运行中的、具备网络功能的容器信息,根据容器标识ID获取每个容器的信息,包括容器的名称、网络模式、所属网络和veth pair虚拟网络设备信息,将这些容器作为初始状态下的待监控容器列表;在系统运行的过程中,存在一个独立的监听协程,通过docker的events机制获得一个存储容器事件信息的管道,并从管道中过滤出会对当前主机上的容器网络环境产生影响的事件信息,并根据该信息动态更改待监控容器列表,并向其他模块发出信号,引发后续步骤的执行。
优选地,在所述步骤S2中:
根据所得的容器信息,为每个具有网络功能的容器创建相应的eBPF程序并编译生成BPF字节码,然后加载入内核,连接到该容器虚拟网络设备的网络栈的hook点;
内核eBPF程序捕获容器流量数据的方法是生成xdp与tc类型的eBPF程序,并将其连接到容器虚拟网络设备的内核网络栈上;其中xdp类型的eBPF程序作用于网络栈的最底层,当设备驱动处理完流量数据包后,流量数据包就会经过xdp作用的hook点,从而被xdp类型的eBPF程序所捕获;在经过网络栈的最底层之后,流量数据包再逐层向上,经过更多的处理,并在网络栈的第三层被tc类型的eBPF程序所捕获。
优选地,在所述步骤S3中:
通过eBPF技术提供的map对象机制,将内核eBPF程序所捕获的网络数据包信息从内核空间传递到用户空间;
内核eBPF程序获取到流量数据之后,通过eBPF提供的LRU_HASH与ARRAY类型的map对象向用户空间传递,位于用户空间的用户交互模块通过map对象的文件描述符访问,从而获取监控数据,再将监控数据进行格式化操作处理,在命令行界面进行展示。
优选地,在所述步骤S4中:
用户空间展示容器粒度的网络流量监控信息,并接受用户输入的流量管控规则,然后将规则转化为内核中相应的eBPF程序的执行逻辑并更新eBPF程序,实现进一步的流量监控;
用户自定义规则的实现方法是改变内核中与特定容器相关的eBPF程序,修改其中的挂钩函数的返回值,用户输入规则时,规则需要满足预先设定的格式,由用户交互模块对其进行解析,并且触发eBPF程序管理模块的更新行为,eBPF程序管理模块进而根据规则内容进行内核eBPF程序的生成与加载、卸载和更新,完成自定义规则的实现,对特定容器的流量交互行为产生干预。
与现有技术相比,本发明具有如下的有益效果:
1、本发明基于eBPF技术,这是一种新兴的Linux内核技术,具有方便使用、效率高的特点,由于eBPF程序直接在内核中发挥作用,所以就流量监控而言,数据流量从接收到被捕获之间的传递路径更短,系统响应速度也更快;
2、针对现今广泛存在的云原生场景,本发明执行流量监控的对象是容器而不是主机,监控粒度更细,为后续可能存在的操作提供的信息更加具体,因此后续过程中针对特定问题的定位过程也会更加快速有效;
3、本发明所关注的容器范围仅限于所在主机这一单一实体,相比于现有的以多节点构成的容器集群为对象的容器流量监控系统,本发明所提供的系统具有轻量级、易部署的优点;
4、本发明自动检测当前主机的容器信息变化,并根据容器对象变化自动维护当前正在运行的eBPF程序,减少了人工手动维护eBPF程序代码的操作,系统使用方便快捷且简单有效;
5、除简单的监控与数据展示功能之外,本发明所提出的系统还提供用户自定义规则功能;用户可以输入符合特定模式的规则来对容器的网络流量交互行为进行自定义的干预操作,实现监控之外的流量管理操作。
附图说明
通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1为本发明基于eBPF的主机侧轻量级容器流量监控方法的流程图;
图2为本发明基于eBPF的主机侧轻量级容器流量监控系统的结构图。
具体实施方式
下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
实施例1;
本发明涉及网络安全、容器虚拟化、流量分析、Linux系统内核领域,本发明提供了一种基于eBPF的主机侧轻量级容器流量监控方法和系统,该方法和系统能够基于eBPF这一Linux内核新兴技术,进行轻量级的主机侧容器粒度流量监控。具体地,首先进行容器探测与元数据收集,利用docker工具集收集当前主机上处于运行状态且具备网络功能的容器信息,并基于docker events机制进行容器生命周期探测,对已有信息进行动态维护;再根据所得的容器信息,为每个具有网络功能的容器创建相应的eBPF程序并编译生成BPF字节码,然后加载入内核,连接到该容器虚拟网络设备的网络栈的hook点;通过eBPF技术提供的map对象机制,将内核eBPF程序所捕获的网络数据包信息从内核空间传递到用户空间;用户空间展示容器粒度的网络流量监控信息,并接受用户输入的流量管控规则,然后将规则转化为内核中相应的eBPF程序的执行逻辑并更新eBPF程序,实现进一步的流量监控。
根据本发明提供的一种基于eBPF的主机侧轻量级容器流量监控方法,如图1-图2所示,执行包括:
步骤S1:进行容器探测与元数据收集,对已有信息进行动态维护;
具体地,在所述步骤S1中:
进行容器探测与元数据收集,利用docker工具集收集当前主机上处于运行状态且具备网络功能的容器信息,并基于docker events机制进行容器生命周期探测,对已有信息进行动态维护;
容器信息探测的方法是在系统启动后,通过docker客户端开发库来与主机上的dockerd守护进程通信,获取当前主机上的容器信息,过滤出正在运行中的、具备网络功能的容器信息,根据容器标识ID获取每个容器的信息,包括容器的名称、网络模式、所属网络和veth pair虚拟网络设备信息,将这些容器作为初始状态下的待监控容器列表;在系统运行的过程中,存在一个独立的监听协程,通过docker的events机制获得一个存储容器事件信息的管道,并从管道中过滤出会对当前主机上的容器网络环境产生影响的事件信息,并根据该信息动态更改待监控容器列表,并向其他模块发出信号,引发后续步骤的执行。
步骤S2:根据所得的容器信息,为每个具有网络功能的容器创建相应的eBPF程序,内核eBPF程序捕获容器流量数据;
具体地,在所述步骤S2中:
根据所得的容器信息,为每个具有网络功能的容器创建相应的eBPF程序并编译生成BPF字节码,然后加载入内核,连接到该容器虚拟网络设备的网络栈的hook点;
内核eBPF程序捕获容器流量数据的方法是生成xdp与tc类型的eBPF程序,并将其连接到容器虚拟网络设备的内核网络栈上;其中xdp类型的eBPF程序作用于网络栈的最底层,当设备驱动处理完流量数据包后,流量数据包就会经过xdp作用的hook点,从而被xdp类型的eBPF程序所捕获;在经过网络栈的最底层之后,流量数据包再逐层向上,经过更多的处理,并在网络栈的第三层被tc类型的eBPF程序所捕获。
步骤S3:将内核eBPF程序所捕获的网络数据包信息从内核空间传递到用户空间;
具体地,在所述步骤S3中:
通过eBPF技术提供的map对象机制,将内核eBPF程序所捕获的网络数据包信息从内核空间传递到用户空间;
内核eBPF程序获取到流量数据之后,通过eBPF提供的LRU_HASH与ARRAY类型的map对象向用户空间传递,位于用户空间的用户交互模块通过map对象的文件描述符访问,从而获取监控数据,再将监控数据进行格式化操作处理,在命令行界面进行展示。
步骤S4:用户空间展示容器粒度的网络流量监控信息,并接受用户输入的流量管控规则,将规则转化为内核中相应的eBPF程序的执行逻辑并更新eBPF程序,实现进一步的流量监控。
具体地,在所述步骤S4中:
用户空间展示容器粒度的网络流量监控信息,并接受用户输入的流量管控规则,然后将规则转化为内核中相应的eBPF程序的执行逻辑并更新eBPF程序,实现进一步的流量监控;
用户自定义规则的实现方法是改变内核中与特定容器相关的eBPF程序,修改其中的挂钩函数的返回值,用户输入规则时,规则需要满足预先设定的格式,由用户交互模块对其进行解析,并且触发eBPF程序管理模块的更新行为,eBPF程序管理模块进而根据规则内容进行内核eBPF程序的生成与加载、卸载和更新,完成自定义规则的实现,对特定容器的流量交互行为产生干预。
实施例2:
实施例2为实施例1的优选例,以更为具体地对本发明进行说明。
本发明还提供一种基于eBPF的主机侧轻量级容器流量监控系统,所述基于eBPF的主机侧轻量级容器流量监控系统可以通过执行所述基于eBPF的主机侧轻量级容器流量监控方法的流程步骤予以实现,即本领域技术人员可以将所述基于eBPF的主机侧轻量级容器流量监控方法理解为所述基于eBPF的主机侧轻量级容器流量监控系统的优选实施方式。
根据本发明提供的一种基于eBPF的主机侧轻量级容器流量监控系统,包括:
容器信息管理模块:收集和自动化维护容器信息;
具体地,在所述容器信息管理模块中:
运行于用户空间;在系统启动后的预处理阶段进行容器信息收集,在系统启动阶段探测当前主机中运行的容器,搜集容器的相关信息包括虚拟网络设备名称,过滤掉不具备网络功能的容器,确定监控对象与获取监控所需的元数据;
预处理阶段的容器信息收集关注具备网络功能且正处于运行状态的容器,收集的信息字段为容器的标识ID、容器的名称、容器的虚拟网络设备标识信息、容器所使用的网络类型与容器在其网络隔离环境中的IP地址;
在系统运行过程中持续监听容器生命状态变化事件,动态维护当前所需监控的容器的信息,进行容器信息自动化维护,保证当前的容器信息集合与当前的主机环境相符合;
在系统运行阶段,利用docker events机制获取包含docker容器事件的管道,并启动一个协程持续监听管道中的事件信息,过滤出关键事件包含容器启动、停止、docker自定义网络的创建与连接;
容器信息管理模块使用docker客户端开发库,进行容器信息的收集,并通过docker的events机制,捕获容器的生命周期变化信息,以此维护需要监控的容器信息,并引导系统后续行为的发生;
docker events机制以管道的形式存在,管道中传递的容器状态变换信息包括网络的连接与断开、容器的启动与停止、卷的挂载与卸载;过滤掉与容器网络环境变化无关的信息后,剩余的信息对容器流量监控工作具有参考意义。
内核eBPF模块:在内核中执行的BPF程序,获取数据流量信息并传递给用户空间;
具体地,在所述内核eBPF模块中:
运行于内核空间,在位于Linux内核的eBPF虚拟机中以字节码的形式运行,关注容器虚拟网络设备的网络栈,通过被加载的不同类型的eBPF程序,获取经过虚拟网络设备的不同网络栈级别的流量信息,并且以eBPF的map机制为传输媒介,将内核空间捕获到的流量信息从内核空间传递到用户空间;
内核eBPF模块包含一个或多个运行于内核虚拟机中的eBPF程序,每个eBPF程序对应于一个被监控的正在运行的容器;模块中的eBPF程序类型包括xdp与tc,用于捕获位于网络栈不同层的网络流量的相关信息;
针对内核eBPF程序所捕获的数据流量,系统关注流量数据的源IP地址与目的IP地址,并与容器在自身所属的网络隔离环境中的IP地址相结合,向用户展示,并根据用户输入的自定义规则,获取数据流量信息的其他字段。
eBPF程序管理模块:配合容器信息管理模块与用户交互模块进行内核eBPF程序的管理工作,提取获取到的数据流量信息传递给用户交互模块;
具体地,在所述eBPF程序管理模块中:
运行于用户空间,根据用户操作、容器的增加与减少,配合容器信息管理模块与用户交互模块进行内核eBPF程序的管理工作,管理工作包含eBPF程序的加载、卸载与更新操作;
从现有的eBPF程序所拥有的map对象中提取捕获到的流量数据,将其传递给用户交互模块;
eBPF程序的自动加载与卸载操作随着待监控容器对象的变化而发生,当检测到新的容器被创建时,新的eBPF程序会被加载入内核,当检测到某一被监控的容器被停止时,对应的eBPF程序则会被卸载。
用户交互模块:接受输入的容器流量管控规则,并转化为eBPF程序逻辑,实现系统功能。
具体地,在所述用户交互模块中:
运行于用户空间,以命令行的形式提供给用户不同指令选项,包含数据展示与规则操作指令,用户在命令行输入指令进行容器网络流量监控数据的查看,进行容器之间流量管控规则的添加与删除,用户交互模块负责接受用户输入的容器流量管控规则,并将其转化为内核中的eBPF程序逻辑,实现系统的功能;
用户交互模块提供功能包括容器网络流量信息展示和自定义规则输入,通过读取内核中eBPF程序的map结构体,得到eBPF程序捕获的容器流量数据信息,再经过格式化处理操作展示给使用者;提供阻止或允许特定容器之间的网络流量交互的规则形式,由用户输入规则,再将规则进行解析并转化为eBPF程序的特定逻辑,在内核中实现相关规则,具体体现为eBPF程序中挂钩函数的不同返回值。
实施例3:
实施例3为实施例1的优选例,以更为具体地对本发明进行说明。
一种基于eBPF的主机侧轻量级容器流量监控方法和系统,其特征在于,利用eBPF技术实现容器粒度的流量监控,减少单主机容器集群场景下安全问题的发生,包括容器信息管理模块、运行于内核的eBPF程序模块、eBPF程序管理模块、用户交互模块:
容器信息管理模块:在系统启动阶段探测当前主机中运行的容器,搜集容器的虚拟网络设备名称等相关信息,过滤掉不具备网络功能的容器。在系统运行过程中持续监听容器生命状态变化事件,动态维护当前所需监控的容器的信息。
内核eBPF模块:在内核中执行的BPF程序,主要关注各个容器虚拟网络设备的网络栈,捕获经过虚拟网络设备的数据流量信息,并将这些信息从内核空间传递到用户空间。
eBPF程序管理模块:根据用户操作、容器的增加与减少,自动进行eBPF程序的加载、卸载、更新等操作,实现系统的功能。
用户交互模块:位于用户空间,负责接受用户输入的容器流量管控规则,并将其转化为内核中的eBPF程序逻辑,实现系统的功能。
容器信息管理模块使用docker客户端开发库,进行容器信息的收集,并通过docker的events机制,捕获容器的生命周期变化信息,以此维护需要监控的容器信息,并引导系统后续行为的发生。
docker events信息的过滤。docker events机制以管道的形式存在,管道中传递的容器状态变换信息包括网络的连接与断开、容器的启动与停止、卷的挂载与卸载等;过滤掉与容器网络环境变化无关的信息后,剩余的信息才对容器流量监控工作具有参考意义。
内核eBPF模块包含一个或多个运行于内核虚拟机中的eBPF程序。每个eBPF程序对应于一个被监控的正在运行的容器。模块包括xdp与tc等类型的eBPF程序,用于捕获位于网络栈不同层的网络流量的相关信息。
eBPF程序管理模块负责eBPF程序的自动加载与卸载操作。这些操作随着待监控容器对象的变化而发生,当检测到新的容器被创建时,新的eBPF程序会被加载入内核,当检测到某一被监控的容器被停止时,对应的eBPF程序则会被卸载。
用户交互模块提供容器网络流量信息展示、自定义规则输入等功能。通过读取内核中eBPF程序的map结构体,可以得到eBPF程序捕获的容器流量数据信息,再经过格式化处理等操作,以用户友好的形式展示给使用者。同时,还提供阻止或允许特定容器之间的网络流量交互的规则形式,由用户输入规则,再将规则进行解析并转化为eBPF程序的特定逻辑,在内核中实现相关规则,具体体现为eBPF程序中挂钩函数的不同返回值。
实施例4:
实施例4为实施例1的优选例,以更为具体地对本发明进行说明。
本发明提出的方法和系统以Linux内核的eBPF技术为基础,并结合容器底层原理、网络流量分析等技术原理与手段,实现轻量级的主机侧容器流量监控。首先,在系统启动后的预处理阶段,通过docker客户端开发库获取当前主机中处于运行状态的容器信息,过滤掉不具备网络功能的容器,再获取剩余容器的虚拟网络设备标识信息。然后为每个容器的虚拟网络设备创建相应的具备监控功能的内核eBPF程序,并加载连接到虚拟网络设备的内核网络栈。最后在用户空间获取eBPF程序在内核空间传递的流量监控信息,并展示给用户,同时根据用户输入的规则,执行内核对应的eBPF程序的更新,实现特定流量的拦截等进一步的管理操作。
为实现上述目的,本发明采用如下技术方案进行实现。
本发明提出一种基于eBPF的主机侧轻量级容器流量监控系统。所述系统包含四个主要模块,分别是容器信息管理模块、内核eBPF模块、eBPF程序管理模块、用户交互模块。
容器信息管理模块:运行于用户空间,其运行逻辑包含两部分。第一,在系统启动后的预处理阶段进行最初的容器信息收集,确定监控对象与获取监控所需的元数据。第二,在系统运行阶段进行容器信息自动化维护,保证当前的容器信息集合与当前的主机环境相符合。
优选地,预处理阶段的容器信息收集主要关注具备网络功能且正处于运行状态的容器,收集的信息字段为容器的标识ID、容器的名称、容器的虚拟网络设备标识信息、容器所使用的网络类型与容器在其网络隔离环境中的IP地址。
优选地,在系统运行阶段,利用docker events机制获取包含docker容器事件的管道,并启动一个协程持续监听管道中的事件信息,过滤出包含容器启动、停止、docker自定义网络的创建与连接等关键事件。
内核eBPF模块:运行于内核空间,在位于Linux内核的eBPF虚拟机中以字节码的形式运行,主要关注容器虚拟网络设备的网络栈,通过被加载的不同类型的eBPF程序,获取不同网络栈级别的流量信息。并且以eBPF的map机制为传输媒介,方便而又精确地将内核空间捕获到的流量信息传递给用户空间的程序。
优选的,针对内核eBPF程序所捕获的数据流量,系统主要关注流量数据的源IP地址与目的IP地址,并与容器在自身所属的网络隔离环境中的IP地址相结合,向用户展示。并根据用户输入的自定义规则,获取数据流量信息的其他字段。
eBPF程序管理模块:运行于用户空间,其运行逻辑包含两部分。第一,配合容器信息管理模块与用户交互模块进行内核eBPF程序的管理工作,管理工作主要包含eBPF程序的加载、卸载与更新操作。第二,从现有的eBPF程序所拥有的map对象中提取捕获到的流量数据,将其传递给用户交互模块。
用户交互模块:运行于用户空间,以命令行的形式提供给用户不同指令选项,主要包含数据展示与规则操作指令。用户可以在命令行输入指令进行容器网络流量监控数据的查看,也可以进行容器之间流量管控规则的添加与删除。
实施例5:
实施例5为实施例1的优选例,以更为具体地对本发明进行说明。
本发明的较佳实施例提供的一种基于eBPF的主机侧轻量级容器流量监控系统的结构图如图2所示。本发明提供的基于eBPF的主机侧轻量级容器流量监控系统包含四个主要的功能模块,四个功能模块分别是容器信息管理模块、内核eBPF模块、eBPF程序管理模块以及用户交互模块。
其中,容器信息管理模块最先发挥作用,其在系统启动后的预处理阶段通过docker客户端开发库与dockerd守护程序交互,获取当前主机中处于运行状态的容器信息,过滤掉不具备网络功能的容器,再获取剩余容器的虚拟网络设备标识信息。然后eBPF程序管理模块根据监控的容器对象创建相应的eBPF程序,编译并加载到内核,连接到容器的虚拟网络设备上进行监控,形成内核eBPF模块。内核eBPF模块在内核eBPF虚拟机中运行,主要关注容器虚拟网络设备的网络栈不同层级的hook点,根据hook点所在网络层级的不同,该模块所包含的eBPF程序可以分为xdp与tc类型。在系统运行的过程中,用户交互模块完成与用户的持续交互,包括监控所得的流量信息展示与用户自定义规则的输入,用户自定义规则的输入则会使得eBPF程序管理模块对正在运行的eBPF程序进行更新操作。
具体地,预处理阶段的容器信息收集主要关注具备网络功能且正处于运行状态的容器,收集的信息字段为容器的标识ID、容器的名称、容器的虚拟网络设备标识信息、容器所使用的网络类型与容器在其网络隔离环境中的IP地址。
具体地,在系统运行阶段,利用docker events机制获取包含docker容器事件的管道,并启动一个协程持续监听管道中的事件信息,过滤出包含容器启动、停止、docker自定义网络的创建与连接等关键事件。
具体地,针对内核eBPF程序所捕获的数据流量,系统主要关注流量数据的源IP地址与目的IP地址,并与容器在自身所属的网络隔离环境中的IP地址相结合,向用户展示。并根据用户输入的自定义规则,获取数据流量信息的其他字段。
本发明提供的一种基于eBPF的主机侧轻量级容器流量监控系统,其运行包括容器信息探测、eBPF程序生成编译并加载、数据传递与展示、规则解析与实现等过程,能够实现针对云场景的主机侧容器流量监控,实现容器粒度的流量数据监控与干预容器流量交互的效果。本发明提供的基于eBPF的主机侧轻量级容器流量监控系统,可以通过基于eBPF的主机侧轻量级容器流量监控方法的步骤流程实现。本领域技术人员可以将基于eBPF的主机侧轻量级容器流量监控系统方法理解为所述基于eBPF的主机侧轻量级容器流量监控系统的优选例。
以下针对优选例做进一步阐述。
首先,容器信息探测的方法是在系统启动后,通过docker客户端开发库来与主机上的dockerd守护进程通信,获取当前主机上的容器信息,过滤出正在运行中的、具备网络功能的容器信息,然后再根据容器标识ID获取每个容器的信息,包括容器的名称、网络模式、所属网络、veth pair虚拟网络设备信息,然后将这些容器作为初始状态下的待监控容器列表。在系统运行的过程中,存在一个独立的监听协程,通过docker的events机制获得一个存储容器事件信息的管道,并从管道中过滤出会对当前主机上的容器网络环境产生影响的事件信息,并根据该信息动态更改待监控容器列表,并向其他模块发出信号,引发后续步骤的执行。
其次,内核eBPF程序捕获容器流量数据的方法是生成xdp与tc类型的eBPF程序,并将其连接到容器虚拟网络设备的内核网络栈上。其中xdp类型的eBPF程序作用于网络栈的最底层,当设备驱动处理完流量数据包后,流量数据包就会经过xdp作用的hook点,从而被xdp类型的eBPF程序所捕获。在经过网络栈的最底层之后,流量数据包再逐层向上,经过更多的处理,并在网络栈的第三层被tc类型的eBPF程序所捕获。两个层级的eBPF程序能够获取到流量数据的主要信息,并且具备较短的流量捕获响应时间。
内核eBPF程序获取到流量数据之后,主要通过eBPF提供的LRU_HASH与ARRAY类型的map对象向用户空间传递。LRU_HASH类型与ARRAY类型的map都有项目数据的限制,所以系统不会因为容器数量过多而导致性能明显下降。位于用户空间的用户交互模块则通过map对象的文件描述符访问,从而获取监控数据,再将监控数据进行格式化操作等处理,以用户友好的形式在命令行界面进行展示。
最后,用户自定义规则的实现方法是改变内核中与特定容器相关的eBPF程序,修改其中的挂钩函数的返回值。以xdp类型的eBPF程序为例,挂钩函数返回XDP_DROP则会导致数据包被丢弃,返回XDP_PASS则会使数据包正常通过,并传递到网络栈的后续层级中继续进行处理。用户输入规则时,规则需要满足预先设定的格式,由用户交互模块对其进行解析,并且触发eBPF程序管理模块的更新行为。eBPF程序管理模块进而根据规则内容进行内核eBPF程序的生成与加载、卸载、更新等操作,最终完成自定义规则的实现,对特定容器的流量交互行为产生干预。
本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统、装置及其各个模块以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统、装置及其各个模块以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同程序。所以,本发明提供的系统、装置及其各个模块可以被认为是一种硬件部件,而对其内包括的用于实现各种程序的模块也可以视为硬件部件内的结构;也可以将用于实现各种功能的模块视为既可以是实现方法的软件程序又可以是硬件部件内的结构。
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。
Claims (10)
1.一种基于eBPF的主机侧轻量级容器流量监控系统,其特征在于,包括:
容器信息管理模块:收集和自动化维护容器信息;
内核eBPF模块:在内核中执行的BPF程序,获取数据流量信息并传递给用户空间;
eBPF程序管理模块:配合容器信息管理模块与用户交互模块进行内核eBPF程序的管理工作,提取获取到的数据流量信息传递给用户交互模块;
用户交互模块:接受输入的容器流量管控规则,并转化为eBPF程序逻辑,实现系统功能。
2.根据权利要求1所述的基于eBPF的主机侧轻量级容器流量监控系统,其特征在于,在所述容器信息管理模块中:
运行于用户空间;在系统启动后的预处理阶段进行容器信息收集,在系统启动阶段探测当前主机中运行的容器,搜集容器的相关信息包括虚拟网络设备名称,过滤掉不具备网络功能的容器,确定监控对象与获取监控所需的元数据;
预处理阶段的容器信息收集关注具备网络功能且正处于运行状态的容器,收集的信息字段为容器的标识ID、容器的名称、容器的虚拟网络设备标识信息、容器所使用的网络类型与容器在其网络隔离环境中的IP地址;
在系统运行过程中持续监听容器生命状态变化事件,动态维护当前所需监控的容器的信息,进行容器信息自动化维护,保证当前的容器信息集合与当前的主机环境相符合;
在系统运行阶段,利用docker events机制获取包含docker容器事件的管道,并启动一个协程持续监听管道中的事件信息,过滤出关键事件包含容器启动、停止、docker自定义网络的创建与连接;
容器信息管理模块使用docker客户端开发库,进行容器信息的收集,并通过docker的events机制,捕获容器的生命周期变化信息,以此维护需要监控的容器信息,并引导系统后续行为的发生;
docker events机制以管道的形式存在,管道中传递的容器状态变换信息包括网络的连接与断开、容器的启动与停止、卷的挂载与卸载;过滤掉与容器网络环境变化无关的信息后,剩余的信息对容器流量监控工作具有参考意义。
3.根据权利要求1所述的基于eBPF的主机侧轻量级容器流量监控系统,其特征在于,在所述内核eBPF模块中:
运行于内核空间,在位于Linux内核的eBPF虚拟机中以字节码的形式运行,关注容器虚拟网络设备的网络栈,通过被加载的不同类型的eBPF程序,获取经过虚拟网络设备的不同网络栈级别的流量信息,并且以eBPF的map机制为传输媒介,将内核空间捕获到的流量信息从内核空间传递到用户空间;
内核eBPF模块包含一个或多个运行于内核虚拟机中的eBPF程序,每个eBPF程序对应于一个被监控的正在运行的容器;模块中的eBPF程序类型包括xdp与tc,用于捕获位于网络栈不同层的网络流量的相关信息;
针对内核eBPF程序所捕获的数据流量,系统关注流量数据的源IP地址与目的IP地址,并与容器在自身所属的网络隔离环境中的IP地址相结合,向用户展示,并根据用户输入的自定义规则,获取数据流量信息的其他字段。
4.根据权利要求1所述的基于eBPF的主机侧轻量级容器流量监控系统,其特征在于,在所述eBPF程序管理模块中:
运行于用户空间,根据用户操作、容器的增加与减少,配合容器信息管理模块与用户交互模块进行内核eBPF程序的管理工作,管理工作包含eBPF程序的加载、卸载与更新操作;
从现有的eBPF程序所拥有的map对象中提取捕获到的流量数据,将其传递给用户交互模块;
eBPF程序的自动加载与卸载操作随着待监控容器对象的变化而发生,当检测到新的容器被创建时,新的eBPF程序会被加载入内核,当检测到某一被监控的容器被停止时,对应的eBPF程序则会被卸载。
5.根据权利要求1所述的基于eBPF的主机侧轻量级容器流量监控系统,其特征在于,在所述用户交互模块中:
运行于用户空间,以命令行的形式提供给用户不同指令选项,包含数据展示与规则操作指令,用户在命令行输入指令进行容器网络流量监控数据的查看,进行容器之间流量管控规则的添加与删除,用户交互模块负责接受用户输入的容器流量管控规则,并将其转化为内核中的eBPF程序逻辑,实现系统的功能;
用户交互模块提供功能包括容器网络流量信息展示和自定义规则输入,通过读取内核中eBPF程序的map结构体,得到eBPF程序捕获的容器流量数据信息,再经过格式化处理操作展示给使用者;提供阻止或允许特定容器之间的网络流量交互的规则形式,由用户输入规则,再将规则进行解析并转化为eBPF程序的特定逻辑,在内核中实现相关规则,具体体现为eBPF程序中挂钩函数的不同返回值。
6.一种基于eBPF的主机侧轻量级容器流量监控方法,其特征在于,采用权利要求1所述的基于eBPF的主机侧轻量级容器流量监控系统,执行包括:
步骤S1:进行容器探测与元数据收集,对已有信息进行动态维护;
步骤S2:根据所得的容器信息,为每个具有网络功能的容器创建相应的eBPF程序,内核eBPF程序捕获容器流量数据;
步骤S3:将内核eBPF程序所捕获的网络数据包信息从内核空间传递到用户空间;
步骤S4:用户空间展示容器粒度的网络流量监控信息,并接受用户输入的流量管控规则,将规则转化为内核中相应的eBPF程序的执行逻辑并更新eBPF程序,实现进一步的流量监控。
7.根据权利要求6所述的基于eBPF的主机侧轻量级容器流量监控方法,其特征在于,在所述步骤S1中:
进行容器探测与元数据收集,利用docker工具集收集当前主机上处于运行状态且具备网络功能的容器信息,并基于docker events机制进行容器生命周期探测,对已有信息进行动态维护;
容器信息探测的方法是在系统启动后,通过docker客户端开发库来与主机上的dockerd守护进程通信,获取当前主机上的容器信息,过滤出正在运行中的、具备网络功能的容器信息,根据容器标识ID获取每个容器的信息,包括容器的名称、网络模式、所属网络和veth pair虚拟网络设备信息,将这些容器作为初始状态下的待监控容器列表;在系统运行的过程中,存在一个独立的监听协程,通过docker的events机制获得一个存储容器事件信息的管道,并从管道中过滤出会对当前主机上的容器网络环境产生影响的事件信息,并根据该信息动态更改待监控容器列表,并向其他模块发出信号,引发后续步骤的执行。
8.根据权利要求6所述的基于eBPF的主机侧轻量级容器流量监控方法,其特征在于,在所述步骤S2中:
根据所得的容器信息,为每个具有网络功能的容器创建相应的eBPF程序并编译生成BPF字节码,然后加载入内核,连接到该容器虚拟网络设备的网络栈的hook点;
内核eBPF程序捕获容器流量数据的方法是生成xdp与tc类型的eBPF程序,并将其连接到容器虚拟网络设备的内核网络栈上;其中xdp类型的eBPF程序作用于网络栈的最底层,当设备驱动处理完流量数据包后,流量数据包就会经过xdp作用的hook点,从而被xdp类型的eBPF程序所捕获;在经过网络栈的最底层之后,流量数据包再逐层向上,经过更多的处理,并在网络栈的第三层被tc类型的eBPF程序所捕获。
9.根据权利要求6所述的基于eBPF的主机侧轻量级容器流量监控方法,其特征在于,在所述步骤S3中:
通过eBPF技术提供的map对象机制,将内核eBPF程序所捕获的网络数据包信息从内核空间传递到用户空间;
内核eBPF程序获取到流量数据之后,通过eBPF提供的LRU_HASH与ARRAY类型的map对象向用户空间传递,位于用户空间的用户交互模块通过map对象的文件描述符访问,从而获取监控数据,再将监控数据进行格式化操作处理,在命令行界面进行展示。
10.根据权利要求6所述的基于eBPF的主机侧轻量级容器流量监控方法,其特征在于,在所述步骤S4中:
用户空间展示容器粒度的网络流量监控信息,并接受用户输入的流量管控规则,然后将规则转化为内核中相应的eBPF程序的执行逻辑并更新eBPF程序,实现进一步的流量监控;
用户自定义规则的实现方法是改变内核中与特定容器相关的eBPF程序,修改其中的挂钩函数的返回值,用户输入规则时,规则需要满足预先设定的格式,由用户交互模块对其进行解析,并且触发eBPF程序管理模块的更新行为,eBPF程序管理模块进而根据规则内容进行内核eBPF程序的生成与加载、卸载和更新,完成自定义规则的实现,对特定容器的流量交互行为产生干预。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211481213.1A CN115834448A (zh) | 2022-11-24 | 2022-11-24 | 基于eBPF的主机侧轻量级容器流量监控系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211481213.1A CN115834448A (zh) | 2022-11-24 | 2022-11-24 | 基于eBPF的主机侧轻量级容器流量监控系统及方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115834448A true CN115834448A (zh) | 2023-03-21 |
Family
ID=85531043
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211481213.1A Pending CN115834448A (zh) | 2022-11-24 | 2022-11-24 | 基于eBPF的主机侧轻量级容器流量监控系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115834448A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116244160A (zh) * | 2023-05-09 | 2023-06-09 | 江苏博云科技股份有限公司 | 一种无侵入性能分析方法、系统、电子设备及存储介质 |
CN117290857A (zh) * | 2023-11-27 | 2023-12-26 | 中孚安全技术有限公司 | 基于eBPF实现云原生安全的系统、方法、设备及介质 |
CN117579386A (zh) * | 2024-01-16 | 2024-02-20 | 麒麟软件有限公司 | 网络流量安全管控方法、装置及存储介质 |
-
2022
- 2022-11-24 CN CN202211481213.1A patent/CN115834448A/zh active Pending
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116244160A (zh) * | 2023-05-09 | 2023-06-09 | 江苏博云科技股份有限公司 | 一种无侵入性能分析方法、系统、电子设备及存储介质 |
CN116244160B (zh) * | 2023-05-09 | 2023-08-04 | 江苏博云科技股份有限公司 | 一种无侵入性能分析方法、系统、电子设备及存储介质 |
CN117290857A (zh) * | 2023-11-27 | 2023-12-26 | 中孚安全技术有限公司 | 基于eBPF实现云原生安全的系统、方法、设备及介质 |
CN117290857B (zh) * | 2023-11-27 | 2024-03-26 | 中孚安全技术有限公司 | 基于eBPF实现云原生安全的系统、方法、设备及介质 |
CN117579386A (zh) * | 2024-01-16 | 2024-02-20 | 麒麟软件有限公司 | 网络流量安全管控方法、装置及存储介质 |
CN117579386B (zh) * | 2024-01-16 | 2024-04-12 | 麒麟软件有限公司 | 网络流量安全管控方法、装置及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11659020B2 (en) | Method and system for real-time modeling of communication, virtualization and transaction execution related topological aspects of monitored software applications and hardware entities | |
CN115834448A (zh) | 基于eBPF的主机侧轻量级容器流量监控系统及方法 | |
US20220206889A1 (en) | Automatic correlation of dynamic system events within computing devices | |
EP3425512B1 (en) | Software analytics platform | |
EP3069241B1 (en) | Application execution path tracing with configurable origin definition | |
US10503623B2 (en) | Monitoring containerized applications | |
US9781144B1 (en) | Determining duplicate objects for malware analysis using environmental/context information | |
JP4609380B2 (ja) | 仮想サーバ管理システムおよびその方法ならびに管理サーバ装置 | |
US9229758B2 (en) | Passive monitoring of virtual systems using extensible indexing | |
CN112181833A (zh) | 一种智能化模糊测试方法、装置及系统 | |
CN111046011A (zh) | 日志收集方法、系统、节点、电子设备及可读存储介质 | |
CN112306802A (zh) | 系统的数据获取方法、装置、介质和电子设备 | |
CN111611055B (zh) | 一种虚拟设备最优空闲时间迁移法、装置及可读存储介质 | |
KR102088308B1 (ko) | 네트워크 보안 기능 가상화 기반의 클라우드 보안 분석 장치, 보안 정책 관리 장치 및 보안 정책 관리 방법 | |
US8554908B2 (en) | Device, method, and storage medium for detecting multiplexed relation of applications | |
TWI656453B (zh) | 檢測系統及檢測方法 | |
JP5477497B2 (ja) | 仮想サーバ管理システムおよびその方法ならびに管理サーバ装置 | |
CN114184885A (zh) | 一种故障检测方法、装置及存储介质 | |
KR101060596B1 (ko) | 악성 파일 탐지 시스템, 악성 파일 탐지 장치 및 그 방법 | |
US11416376B2 (en) | Investigative platform for software application development and production | |
US20220012161A1 (en) | Instrumentation trace capture technique | |
US20230123509A1 (en) | Prevention of Malicious End Point Behavior Through Stateful Rules | |
JP2010277595A (ja) | 仮想サーバ管理システムおよびその方法ならびに管理サーバ装置 | |
WO2018070211A1 (ja) | 管理サーバ、管理方法及びそのプログラム | |
Zhang et al. | VMFDF: a virtualization-based multi-level fault detection framework for high availability computing |
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 |