CN114745307B - 一种容器流量的监控方法及bpf控制器 - Google Patents
一种容器流量的监控方法及bpf控制器 Download PDFInfo
- Publication number
- CN114745307B CN114745307B CN202210179635.7A CN202210179635A CN114745307B CN 114745307 B CN114745307 B CN 114745307B CN 202210179635 A CN202210179635 A CN 202210179635A CN 114745307 B CN114745307 B CN 114745307B
- Authority
- CN
- China
- Prior art keywords
- ebpf
- host
- flow
- network card
- mapping
- 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.)
- Active
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
- H04L43/0876—Network utilisation, e.g. volume of load or congestion level
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/14—Network analysis or design
- H04L41/142—Network analysis or design using statistical or mathematical methods
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
- H04L43/0876—Network utilisation, e.g. volume of load or congestion level
- H04L43/0888—Throughput
Landscapes
- Engineering & Computer Science (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Environmental & Geological Engineering (AREA)
- Mathematical Analysis (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Algebra (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种容器流量的监控方法及bpf控制器,其中,所述方法包括:读取目标主机的配置文件,并将所述配置文件中的配置信息写入内核的ebpf映射表中,所述配置信息中至少包括待监控的内网网段和外网网段;开启监听事件,通过所述监听事件识别所述目标主机中未注入ebpf程序的主机映射网卡,并为所述主机映射网卡注入用于监控流量的ebpf程序;其中,所述主机映射网卡与容器映射网卡具备对应关系;通过注入的所述ebpf程序,按照所述待监控的内网网段和所述外网网段,监控所述主机映射网卡对应的内网流量和外网流量,并将所述内网流量和所述外网流量记录至所述ebpf映射表中。本申请提供的技术方案,在实现内外网流量统计的过程中,保证整体系统的稳定性。
Description
技术领域
本发明涉及互联网技术领域,特别涉及一种容器流量的监控方法及bpf控制器。
背景技术
随着IaaS(Infrastructure as a Service,基础设施即服务)、PaaS(Platform asa Service,平台即服务)、SaaS(Software as a Service,软件即服务)等云平台的逐渐成熟,容器虚拟化技术也得到了广泛的应用。
目前,为了区分容器的内外网流量,通常会在容器内部设定多张网卡,然后结合路由的方式,将内网流量和外网流量分别定向到不同的网卡上,后续可以通过ifconfig命令进行内外网流量的统计。
然而,现有的这种在容器内创建多张网卡的流量统计方式,需要对CNI(ContainerNetwork Interface,容器网络接口)进行侵入式改造,很可能带来CNI层面的稳定性问题。
发明内容
本申请的目的在于提供一种容器流量的监控方法及bpf控制器,在实现内外网流量统计的过程中,保证整体系统的稳定性。
为实现上述目的,本申请一方面提供一种容器流量的监控方法,所述方法应用于bpf控制器中,所述方法包括:读取目标主机的配置文件,并将所述配置文件中的配置信息写入内核的ebpf映射表中,所述配置信息中至少包括待监控的内网网段和外网网段;开启监听事件,通过所述监听事件识别所述目标主机中未注入ebpf程序的主机映射网卡,并为所述主机映射网卡注入用于监控流量的ebpf程序;其中,所述主机映射网卡与容器映射网卡具备对应关系;通过注入的所述ebpf程序,按照所述待监控的内网网段和所述外网网段,监控所述主机映射网卡对应的内网流量和外网流量,并将所述内网流量和所述外网流量记录至所述ebpf映射表中。
在一个实施方式中,通过所述监听事件识别所述目标主机中未注入ebpf程序的主机映射网卡包括:在所述监听事件启动时,全量获取所述目标主机的各个主机映射网卡,并在所述各个主机映射网卡中识别未注入ebpf程序的主机映射网卡。
在一个实施方式中,所述方法还包括:若所述监听事件监听到新建的主机映射网卡,为所述新建的主机映射网卡注入用于监控流量的ebpf程序。
在一个实施方式中,所述用于监控流量的ebpf程序包括入流量监控程序和出流量监控程序;监控所述主机映射网卡对应的内网流量和外网流量包括:通过所述入流量监控程序,分别统计所述主机映射网卡下待监控的内网网段对应的入流量和待监控的外网网段对应的入流量;通过所述出流量监控程序,分别统计所述主机映射网卡下待监控的内网网段对应的出流量和待监控的外网网段对应的出流量。
在一个实施方式中,将所述内网流量记录至所述ebpf映射表中包括:识别所述主机映射网卡的网卡标识,并将所述待监控的外网网段下的入流量和出流量与所述网卡标识关联存储至所述ebpf映射表表中。
在一个实施方式中,将所述外网流量记录至所述ebpf映射表中包括:识别所述主机映射网卡的网卡标识,并将所述待监控的外网网段下的入流量和出流量与所述网卡标识关联存储至所述ebpf映射表表中。
在一个实施方式中,在将所述内网流量和所述外网流量记录至所述ebpf映射表中之后,所述方法还包括:将所述ebpf映射表以虚拟文件的方式映射至所述目标主机中,以使得其它程序以读文件的方式从所述目标主机中获取所述ebpf映射表中的数据。
在一个实施方式中,所述方法还包括:若所述配置文件中的配置信息发生更新,获取更新后的配置信息,并将更新后的配置信息写入所述ebpf映射表中,以替换所述ebpf映射表中原先的配置信息;通过注入的所述ebpf程序,按照更新后的配置信息监控所述主机映射网卡对应的内网流量和外网流量。
为实现上述目的,本申请另一方面还提供一种bpf控制器,所述bpf控制器包括:配置信息处理单元,用于读取目标主机的配置文件,并将所述配置文件中的配置信息写入内核的ebpf映射表中,所述配置信息中至少包括待监控的内网网段和外网网段;程序注入单元,用于开启监听事件,通过所述监听事件识别所述目标主机中未注入ebpf程序的主机映射网卡,并为所述主机映射网卡注入用于监控流量的ebpf程序;其中,所述主机映射网卡与容器映射网卡具备对应关系;流量统计单元,用于通过注入的所述ebpf程序,按照所述待监控的内网网段和所述外网网段,监控所述主机映射网卡对应的内网流量和外网流量,并将所述内网流量和所述外网流量记录至所述ebpf映射表中。
在一个实施方式中,所述配置信息处理单元还用于:若所述配置文件中的配置信息发生更新,获取更新后的配置信息,并将更新后的配置信息写入所述ebpf映射表中,以替换所述ebpf映射表中原先的配置信息;所述程序注入单元还用于:通过注入的所述ebpf程序,按照更新后的配置信息监控所述主机映射网卡对应的内网流量和外网流量。
由上可见,本申请一个或者多个实施方式提供的技术方案,可以通过bpf(Berkeley Packet Filter,柏克莱封包过滤器)控制器在主机映射网卡上挂载ebpf(Extended Berkeley Packet Filter,扩展bpf)程序的方式,进行容器的内外网流量的统计。
具体地,主机映射网卡与容器映射网卡具备对应关系,主机映射网卡的入流量,对应的就是容器映射网卡的出流量。相反,主机映射网卡的出流量,对应的就是容器映射网卡的入流量,这样,通过为用户态的主机映射网卡挂载ebpf程序,从而可以统计出主机映射网卡下的出流量和入流量,对应的就可以统计出容器映射网卡下的入流量和出流量。
由于本申请的提供的技术方案,可以不需要依赖网络设备配置命令(例如ifconfig命令),而是通过内核态运行的ebpf程序来完成流量统计,从而不需要对CNI进行改造,从而保证了整体系统的稳定性。此外,内核态的统计数据也无需复制带用户态,从而减少了CPU以及内存资源的消耗,进而提高了流量统计的效率。
附图说明
为了更清楚地说明本发明实施方式中的技术方案,下面将对实施方式描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施方式中容器流量监控的系统结构示意图;
图2是本发明实施方式中容器流量的监控方法示意图;
图3是本发明实施方式中bpf控制器的功能模块示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施方式及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施方式仅是本申请一部分实施方式,而不是全部的实施方式。基于本申请中的实施方式,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施方式,都属于本申请保护的范围。
本申请提供的容器流量的监控方法,可以应用于图1所示的系统中。该系统可以划分为用户态和内核态。其中,bpf控制器、主机、主机内的容器以及数据采集器(metricscollector)都可以位于用户态中。而bpf控制器开启的监听事件(uevent)、bpf控制器挂载的ebpf程序以及ebpf映射表都可以运行于内核态中。
请结合图1和图2,本申请一个实施方式提供的应用于bpf控制器中的容器流量的监控方法,可以包括以下多个步骤。
S1:读取目标主机的配置文件,并将所述配置文件中的配置信息写入内核的ebpf映射表中,所述配置信息中至少包括待监控的内网网段和外网网段。
BPF是一种可以用于网络数据包跟踪、系统调用跟踪的指令集。在BPF出现之前,如果要想从网卡中过滤出想要的数据包,需要将网卡接收的数据包从内核空间复制一份到用户空间,然后用户程序再对用户空间内的数据包进行过滤。该方式存在一个问题,数据包必须全复制,才能过滤出所需的数据包,而对于那些不需要的数据包,复制操作是无效的、浪费的,并且内存数据的复制会较多地占用系统资源。BPF可以在内核中直接过滤数据包,从而避免了一些无用的、占用系统资源的复制操作。
早期的bpf功能比较单一,只能够作用于网路数据包的过滤和其他系统的调用跟踪,而扩展后的bpf(ebpf)功能得到了极大丰富,基本上可以使用在Linux各个子系统中。除了功能上的扩展,ebpf程序的指令集也变得相当复杂,因此就出现了专门用于编译ebpf程序的clang/llvm编译。在框架上ebpf也发生了变化,所以ebpf不再是早期的bpf可以比拟的。因而,早期的bpf被称为cbpf,扩展后的bpf被称为ebpf。
Ebpf和docker(容器)几乎在相近的时间同时兴起,ebpf在网络方面基于linux内核提供的钩子(hook)绕过netfilter模块,从而加快网络的处理速度。容器网络初期都是基于iptables构建的虚拟网络,这种方式在iptables规则达到一定的数量之后会出现明显的性能下降。而ebpf可以绕过iptables模块独立构建容器网络,ebpf的出现解决了容器网络的性能问题。
基于此,本申请通过在容器流量的监控方法中引入ebpf程序,从而可以在不改变CNI的情况下,在内核态实现流量的统计过程。
具体地,利用ebpf映射表,可以实现用户态和内核态的实时交互。在实际应用中,ebpf映射表中可以包含四种不同类型的表单,每种表单可以存储对应的数据。这四种表单分别为存放内网网段的表单、存放调试参数的表单、存放内网流量的表单以及存放外网流量的表单。
其中,存放内网网段的表单:bpf控制器(bpf manipulator)启动时会加载程序的配置文件,配置文件中会有内网ip段列表信息,这些信息会被转成int数字类型的ip范围信息,例如ipStart(ip起始值)和ipEnd(ip终止值)。这些数据会被存放于ebpf映射表中,只要存放在ebpf映射表中,ebpf程序有引用到该ebpf映射表,就能读取其中的配置信息。
存放调试参数的表单:可以控制bpf日志的输出与否,信息的内容ip信息,网卡id信息,包大小,被判断为是内网类型的流量还是外网流量等详细信息,可以通过cat/sys/kernel/debug/tracing/trace_pipe等命令进行查看。
存放内网流量的表单:ebpf程序将内网流量的收发数据包个数,大小统计信息等存放于该表单中。
存放外网流量的表单:ebpf程序将外网流量的收发数据包个数,大小统计信息等存放于该表单中。
在本实施方式中,bpf控制器启动后,便可以读取当前监控的目标主机的配置文件,并从中解析出调试参数、内外网网段等配置信息,并将这些配置信息写入ebpf映射表的对应表单中。
在实际应用中,通过对ebpf映射表中的内容进行修改,可以实时改变内核统计行为以及实时开关内核调试,当统计的流量不正确时,还可以在无需重启进程的情况下进行排查。
具体地,通过发送特定的信号给bpf控制器,bpf控制器收到信号后,如果判定该信号是打开调试日志的信号,那么就可以将debug开关设为开启(通过配置ebpf映射表中的key debug的值为1),从而打开ebpf程序的调试日志。同时可以通过tcpdump工具抓包,统计出流量后再和bpf程序日志输出的信息做对比,从而判断统计的流量是否正确。
S3:开启监听事件,通过所述监听事件识别所述目标主机中未注入ebpf程序的主机映射网卡,并为所述主机映射网卡注入用于监控流量的ebpf程序;其中,所述主机映射网卡与容器映射网卡具备对应关系。
在本实施方式中,bpf控制器启动时,可以开启linux uevent监听事件,该监听事件可以过滤出系统中与网卡相关的网络事件,从而对网卡的创建和删除行为进行管理。
具体地,监听事件在开启后,可以先全量获取目标主机的各个主机映射网卡,并在各个主机映射网卡中识别未注入ebpf程序的主机映射网卡。针对识别出的这部分主机映射网卡,可以注入用于监控流量的ebpf程序。
此外,监听事件还可以对新增的主机映射网卡进行监听,当监听到新建的主机映射网卡后,可以为新建的主机映射网卡注入用于监控流量的ebpf程序。
在实际应用中,为了区分流入容器的入流量和从容器流出的出流量,ebpf程序可以包括入流量监控程序和出流量监控程序。需要说明的是,由于ebpf程序是挂载于主机映射网卡上,并对主机映射网卡的流量进行统计,而主机映射网卡的出流量实际上就是容器的入流量,主机映射网卡的入流量实际上就是容器的出流量,因此这里的入流量监控程序,变相地是可以监控容器的出流量,同理,这里的出流量监控程序,变相地可以监控容器的入流量。
在一个具体应用场景中,入流量监控程序可以是xdp(eXpress Data Path,快速数据通道)代码编写的程序,出流量监控程序可以通过linux中tc(Traffic Control,流量控制)的egress filter(出口过滤)实现。这样,通过在主机映射网卡上分别注入出流量监控程序和入流量监控程序,从而可以对主机映射网卡的出流量和入流量分别监控。
需要说明的是,容器通常可以分为沙箱(sandbox)容器和业务容器,其中,在业务容器启动之前,会先启动沙箱容器,通过沙箱容器可以构建业务容器的网络,也就是说,创建主机映射网卡的过程是由沙箱容器实现的,在业务容器启动之前,主机映射网卡就已经创建了。在本申请中,需要进行流量监控的通常是业务容器,这样,uevent监听事件在启动后,可以在第一时间监听到网卡事件,这样,在业务容器启动之前,便可以完成主机映射网卡上ebpf程序的注入过程,从而避免了业务容器的流量统计丢失的问题。
S5:通过注入的所述ebpf程序,按照所述待监控的内网网段和所述外网网段,监控所述主机映射网卡对应的内网流量和外网流量,并将所述内网流量和所述外网流量记录至所述ebpf映射表中。
在本实施方式中,通过入流量监控程序,可以分别统计主机映射网卡下待监控的内网网段对应的入流量和待监控的外网网段对应的入流量,通过出流量监控程序,可以分别统计主机映射网卡下待监控的内网网段对应的出流量和待监控的外网网段对应的出流量。
在本实施方式中,ebpf程序统计的内外网段下的入流量和出流量可以记录至ebpf映射表中。具体地,内核态中的ebpf程序在统计流量时,只关注主机映射网卡的网卡标识,并不会关注容器信息。鉴于此,在将流量记录至ebpf映射表中时,可以识别主机映射网卡的网卡标识,并将待监控的内网网段下的入流量和出流量与网卡标识关联存储至ebpf映射表中。同理,还可以将待监控的外网网段下的入流量和出流量与网卡标识关联存储至ebpf映射表中。只不过,内网网段下的流量与外网网段下的流量通常由不同的表单来记录。在一个具体应用场景下,ebpf映射表中记录的内网网段的流量数据可以包括如下所示:
interface_id主机映射网卡的网卡标识
internal_rx_bytes内网网段下入流量的总字节数
internal_rx_packets内网网段下入流量的总数据包数
internal_tx_bytes内网网段下出流量的总字节数
internal_tx_packets内网网段下出流量的总数据包数
ebpf映射表中记录的外网网段的流量可以如下所示:
interface_id主机映射网卡的网卡标识
external_rx_bytes外网网段下入流量的总字节数
external_rx_packets外网网段下入流量的总数据包数
external_tx_bytes外网网段下出流量的总字节数
external_tx_packets外网网段下出流量的总数据包数
在一个实施方式中,通过ebpf映射表记录了统计的流量后,bpf控制器可以将ebpf映射表以pinned file的虚拟文件的方式映射至目标主机中,这样,其它程序便可以直接以读文件的方式获取ebpf映射表中的数据。其中,ebpf映射表中的数据通常是二进制格式,其它程序在读取之后,需要转换为与其它程序相对应的结构体。
具体地,在图1中,数据采集器可以使用CNI中的算法,计算到主机映射网卡与容器之间的对应关系,并可以按照一定的周期(例如每分钟)读取pinned file的数据,并将读取的数据与容器的标识建立关联,并上报至kubernetes的存储系统。这样,原本仅与网卡标识相关联的流量信息,就可以与对应的容器标识建立关联,从而直接表征容器的出入流量。
在一个实施方式中,bpf控制器在运行过程中,如果配置文件中的配置信息发生了更新,bpf控制器可以获取更新后的配置信息,并将更新后的配置信息写入ebpf映射表中,以替换ebpf映射表中原先的配置信息。例如,配置信息中的内外网网段可以实时更新,这样,通过注入的ebpf程序,可以按照更新后的配置信息监控主机映射网卡对应的内网流量和外网流量。
在一个实施方式中,配置信息中的内外网网段可以灵活配置。例如,可以将机房所属的外网ip段归为内部流量,因为这类外网ip只在机房内部交互,无需经过外部网络。也就是说,在本申请中,内网网段的流量不仅局限于普通内网网段(如10.0.0.0),还可以包括一部分外网网段下的流量。
在本申请中,将业务内外网流量的统计逻辑直接用ebpf代码实现,运行于内核态,不依赖ifconfig的统计数据,利用ebpf的内核再编程能力使业务可根据需要灵活定制统计逻辑。而基于内核态的统计数据无需拷贝到用户态,减少了cpu资源和内存资源消耗。该方式对CNI是透明的,无需对CNI层进行改造,对容器平台本身无任何侵入,避免CNI层稳定性问题。
通过ebpf映射表作为用户态程序和内核态程序实时交互的桥梁,支持实时改变内核统计行为、实时开关内核调试,当流量不正确时,可迅速进行排查,无需重启进程。
基于linux内核的uevent事件监听机制而不是容器本身的事件,比监听containerruntime(容器运行时间)事件更加可靠,且与container runtime解耦,既能及时监测容器网卡的创建、删除事件,也保证了实时性,避免业务容器进程的流量统计丢失。
目前容器网络CNI主要还是基于veth pair构建的容器网络,在该容器网络下,如果要监控容器本身的流量,只需监听主机空间的主机映射网卡的流量即可,因此内核态的流量统计逻辑可以不关心容器id信息,只关心网卡的唯一id,这种设计使统计程序无需关心容器引擎使用的是docker还是container,具有较好的通用性。
在本申请中,bpf控制器同时也会按分钟读取bpf映射表的数据,并将读取的数据存储到用户态的磁盘文件中,磁盘文件中可以包含两类文件:
(1)每个主机映射网卡上一分钟的总流量数据,供排查问题使用;
(2)每个主机映射网卡单天内每分钟的总流量数据,主要是预防数据采集器出现异常时,可以补偿异常时间段内的数据采集缺失。
请参阅图3,本申请还提供一种bpf控制器,所述bpf控制器包括:
配置信息处理单元,用于读取目标主机的配置文件,并将所述配置文件中的配置信息写入内核的ebpf映射表中,所述配置信息中至少包括待监控的内网网段和外网网段;
程序注入单元,用于开启监听事件,通过所述监听事件识别所述目标主机中未注入ebpf程序的主机映射网卡,并为所述主机映射网卡注入用于监控流量的ebpf程序;其中,所述主机映射网卡与容器映射网卡具备对应关系;
流量统计单元,用于通过注入的所述ebpf程序,按照所述待监控的内网网段和所述外网网段,监控所述主机映射网卡对应的内网流量和外网流量,并将所述内网流量和所述外网流量记录至所述ebpf映射表中。
在一个实施方式中,所述配置信息处理单元还用于:若所述配置文件中的配置信息发生更新,获取更新后的配置信息,并将更新后的配置信息写入所述ebpf映射表中,以替换所述ebpf映射表中原先的配置信息;
所述程序注入单元还用于:通过注入的所述ebpf程序,按照更新后的配置信息监控所述主机映射网卡对应的内网流量和外网流量。
由上可见,本申请一个或者多个实施方式提供的技术方案,可以通过bpf(Berkeley Packet Filter,柏克莱封包过滤器)控制器在主机映射网卡上挂载ebpf(Extended Berkeley Packet Filter,扩展bpf)程序的方式,进行容器的内外网流量的统计。
具体地,主机映射网卡与容器映射网卡具备对应关系,主机映射网卡的入流量,对应的就是容器映射网卡的出流量。相反,主机映射网卡的出流量,对应的就是容器映射网卡的入流量,这样,通过为用户态的主机映射网卡挂载ebpf程序,从而可以统计出主机映射网卡下的出流量和入流量,对应的就可以统计出容器映射网卡下的入流量和出流量。
由于本申请的提供的技术方案,可以不需要依赖ifconfig命令,而是通过内核态运行的ebpf程序来完成流量统计,从而不需要对CNI进行改造,从而保证了整体系统的稳定性。此外,内核态的统计数据也无需复制带用户态,从而减少了CPU以及内存资源的消耗,进而提高了流量统计的效率。
本说明书中的各个实施方式均采用递进的方式描述,各个实施方式之间相同相似的部分互相参见即可,每个实施方式重点说明的都是与其他实施方式的不同之处。尤其,针对bpf控制器的实施方式来说,均可以参照前述方法的实施方式的介绍对照解释。
本领域内的技术人员应明白,本发明的实施方式可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施方式、完全软件实施方式、或结合软件和硬件方面的实施方式的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施方式的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
以上所述仅为本申请的实施方式而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (10)
1.一种容器流量的监控方法,其特征在于,所述方法应用于bpf控制器中,bpf控制器、主机、主机内的容器位于用户态中,bpf控制器开启的监听事件、bpf控制器挂载的ebpf程序、ebpf映射表运行于内核态中;所述方法包括:
读取目标主机的配置文件,并将所述配置文件中的配置信息写入内核的ebpf映射表中,所述配置信息中至少包括待监控的内网网段和外网网段;
开启监听事件,通过所述监听事件识别所述目标主机中未注入ebpf程序的主机映射网卡,并为所述主机映射网卡注入用于监控流量的ebpf程序;其中,所述主机映射网卡与容器映射网卡具备对应关系;
通过注入的所述ebpf程序,按照所述待监控的内网网段和所述外网网段,监控所述主机映射网卡对应的内网流量和外网流量,并将所述内网流量和所述外网流量记录至所述ebpf映射表中,以使得利用ebpf映射表实现用户态和内核态的实时交互。
2.根据权利要求1所述的方法,其特征在于,通过所述监听事件识别所述目标主机中未注入ebpf程序的主机映射网卡包括:
在所述监听事件启动时,全量获取所述目标主机的各个主机映射网卡,并在所述各个主机映射网卡中识别未注入ebpf程序的主机映射网卡。
3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
若所述监听事件监听到新建的主机映射网卡,为所述新建的主机映射网卡注入用于监控流量的ebpf程序。
4.根据权利要求1所述的方法,其特征在于,所述用于监控流量的ebpf程序包括入流量监控程序和出流量监控程序;监控所述主机映射网卡对应的内网流量和外网流量包括:
通过所述入流量监控程序,分别统计所述主机映射网卡下待监控的内网网段对应的入流量和待监控的外网网段对应的入流量;
通过所述出流量监控程序,分别统计所述主机映射网卡下待监控的内网网段对应的出流量和待监控的外网网段对应的出流量。
5.根据权利要求1或4所述的方法,其特征在于,将所述内网流量记录至所述ebpf映射表中包括:
识别所述主机映射网卡的网卡标识,并将所述待监控的内网网段下的入流量和出流量与所述网卡标识关联存储至所述ebpf映射表表中。
6.根据权利要求1或4所述的方法,其特征在于,将所述外网流量记录至所述ebpf映射表中包括:
识别所述主机映射网卡的网卡标识,并将所述待监控的外网网段下的入流量和出流量与所述网卡标识关联存储至所述ebpf映射表表中。
7.根据权利要求1所述的方法,其特征在于,在将所述内网流量和所述外网流量记录至所述ebpf映射表中之后,所述方法还包括:
将所述ebpf映射表以虚拟文件的方式映射至所述目标主机中,以使得其它程序以读文件的方式从所述目标主机中获取所述ebpf映射表中的数据。
8.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若所述配置文件中的配置信息发生更新,获取更新后的配置信息,并将更新后的配置信息写入所述ebpf映射表中,以替换所述ebpf映射表中原先的配置信息;
通过注入的所述ebpf程序,按照更新后的配置信息监控所述主机映射网卡对应的内网流量和外网流量。
9.一种bpf控制器,其特征在于,bpf控制器、主机、主机内的容器位于用户态中,bpf控制器开启的监听事件、bpf控制器挂载的ebpf程序、ebpf映射表运行于内核态中;所述bpf控制器包括:
配置信息处理单元,用于读取目标主机的配置文件,并将所述配置文件中的配置信息写入内核的ebpf映射表中,所述配置信息中至少包括待监控的内网网段和外网网段;
程序注入单元,用于开启监听事件,通过所述监听事件识别所述目标主机中未注入ebpf程序的主机映射网卡,并为所述主机映射网卡注入用于监控流量的ebpf程序;其中,所述主机映射网卡与容器映射网卡具备对应关系;
流量统计单元,用于通过注入的所述ebpf程序,按照所述待监控的内网网段和所述外网网段,监控所述主机映射网卡对应的内网流量和外网流量,并将所述内网流量和所述外网流量记录至所述ebpf映射表中,以使得利用ebpf映射表实现用户态和内核态的实时交互。
10.根据权利要求9所述的bpf控制器,其特征在于,所述配置信息处理单元还用于:若所述配置文件中的配置信息发生更新,获取更新后的配置信息,并将更新后的配置信息写入所述ebpf映射表中,以替换所述ebpf映射表中原先的配置信息;
所述程序注入单元还用于:通过注入的所述ebpf程序,按照更新后的配置信息监控所述主机映射网卡对应的内网流量和外网流量。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210179635.7A CN114745307B (zh) | 2022-02-25 | 2022-02-25 | 一种容器流量的监控方法及bpf控制器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210179635.7A CN114745307B (zh) | 2022-02-25 | 2022-02-25 | 一种容器流量的监控方法及bpf控制器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114745307A CN114745307A (zh) | 2022-07-12 |
CN114745307B true CN114745307B (zh) | 2023-09-22 |
Family
ID=82274908
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210179635.7A Active CN114745307B (zh) | 2022-02-25 | 2022-02-25 | 一种容器流量的监控方法及bpf控制器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114745307B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115766525A (zh) * | 2022-11-16 | 2023-03-07 | 奇安信网神信息技术(北京)股份有限公司 | 一种容器流量采集方法、装置、存储介质及设备 |
CN116545978B (zh) * | 2023-05-16 | 2024-05-17 | 深圳市石犀科技有限公司 | 数据处理方法、装置、系统、可读存储介质及进口网卡 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112199668A (zh) * | 2020-09-01 | 2021-01-08 | 中国科学院信息工程研究所 | 一种检测容器中应用层消耗CPU的DoS攻击的方法和装置 |
CN112564967A (zh) * | 2020-12-02 | 2021-03-26 | 杭州谐云科技有限公司 | 基于eBPF的云服务拓扑自发现方法及系统、电子设备、存储介质 |
CN112860484A (zh) * | 2021-01-29 | 2021-05-28 | 深信服科技股份有限公司 | 容器运行时异常行为检测、模型训练方法及相关装置 |
CN113472817A (zh) * | 2021-09-03 | 2021-10-01 | 杭州网银互联科技股份有限公司 | 一种大规模IPSec的网关接入方法、装置及电子设备 |
CN113568711A (zh) * | 2021-08-04 | 2021-10-29 | 上海仪电(集团)有限公司中央研究院 | 一种K8S中使用的基于eBPF架构的负载均衡方法及装置 |
CN113986459A (zh) * | 2021-10-21 | 2022-01-28 | 浪潮电子信息产业股份有限公司 | 一种容器访问的控制方法、系统、电子设备及存储介质 |
CN113992428A (zh) * | 2021-11-29 | 2022-01-28 | 北京天融信网络安全技术有限公司 | 容器环境下的入侵防御方法及装置、电子设备、存储介质 |
CN114006839A (zh) * | 2021-09-27 | 2022-02-01 | 中盈优创资讯科技有限公司 | 一种基于eBPF的流量采集方法及装置 |
CN114039789A (zh) * | 2021-11-17 | 2022-02-11 | 北京天融信网络安全技术有限公司 | 流量防护方法及电子设备、存储介质 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10762193B2 (en) * | 2018-05-09 | 2020-09-01 | International Business Machines Corporation | Dynamically generating and injecting trusted root certificates |
US11516138B2 (en) * | 2020-04-27 | 2022-11-29 | International Business Machines Corporation | Determining network flow direction |
-
2022
- 2022-02-25 CN CN202210179635.7A patent/CN114745307B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112199668A (zh) * | 2020-09-01 | 2021-01-08 | 中国科学院信息工程研究所 | 一种检测容器中应用层消耗CPU的DoS攻击的方法和装置 |
CN112564967A (zh) * | 2020-12-02 | 2021-03-26 | 杭州谐云科技有限公司 | 基于eBPF的云服务拓扑自发现方法及系统、电子设备、存储介质 |
CN112860484A (zh) * | 2021-01-29 | 2021-05-28 | 深信服科技股份有限公司 | 容器运行时异常行为检测、模型训练方法及相关装置 |
CN113568711A (zh) * | 2021-08-04 | 2021-10-29 | 上海仪电(集团)有限公司中央研究院 | 一种K8S中使用的基于eBPF架构的负载均衡方法及装置 |
CN113472817A (zh) * | 2021-09-03 | 2021-10-01 | 杭州网银互联科技股份有限公司 | 一种大规模IPSec的网关接入方法、装置及电子设备 |
CN114006839A (zh) * | 2021-09-27 | 2022-02-01 | 中盈优创资讯科技有限公司 | 一种基于eBPF的流量采集方法及装置 |
CN113986459A (zh) * | 2021-10-21 | 2022-01-28 | 浪潮电子信息产业股份有限公司 | 一种容器访问的控制方法、系统、电子设备及存储介质 |
CN114039789A (zh) * | 2021-11-17 | 2022-02-11 | 北京天融信网络安全技术有限公司 | 流量防护方法及电子设备、存储介质 |
CN113992428A (zh) * | 2021-11-29 | 2022-01-28 | 北京天融信网络安全技术有限公司 | 容器环境下的入侵防御方法及装置、电子设备、存储介质 |
Non-Patent Citations (5)
Title |
---|
Web服务中基于流量监控的DDoS攻击防范机制;王秀利;;计算机工程与应用(36);全文 * |
分布式网络流量监测;刘军良;肖宗水;;计算机工程(20);全文 * |
基于eBPF的容器网络可观测性方法与实践;刘畅;《中国优秀硕士学位论文全文数据库》;全文 * |
基于eBPF的网络安全应用研究;于波;《中国优秀硕士学位论文全文数据库》;全文 * |
局域网网络监控软件的研究;肖同松;;电脑编程技巧与维护(16);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN114745307A (zh) | 2022-07-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114745307B (zh) | 一种容器流量的监控方法及bpf控制器 | |
CN107704360A (zh) | 监控数据的处理方法、设备、服务器及存储介质 | |
US11366908B2 (en) | Detecting unknown software vulnerabilities and system compromises | |
CN104572394B (zh) | 进程监控方法及装置 | |
CN105184166A (zh) | 基于内核的安卓程序实时行为分析方法及系统 | |
US20120297254A1 (en) | On demand tracing of application code execution | |
CN110515795A (zh) | 一种大数据组件的监控方法、装置、电子设备 | |
CN104951395A (zh) | 一种嵌入式系统调试信息处理方法及装置 | |
CN106777126B (zh) | 一种支持异构时序数据库的数据在线迁移方法 | |
CN111597099B (zh) | 一种监测部署于云平台的应用运行质量的无侵入仿真方法 | |
CN112181764A (zh) | Kubernetes资源数据的监视方法及装置 | |
WO2022095844A1 (zh) | 一种云硬盘挂载方法及其装置 | |
CN107783880A (zh) | 一种服务器系统的日志分析方法、装置及服务器系统 | |
CN114385674A (zh) | 一种平台消息跟踪方法、系统、装置及存储介质 | |
CN113656245A (zh) | 数据的巡检方法、装置、存储介质及处理器 | |
CN113987401A (zh) | 网络通用日志的记录方法、装置、存储介质及处理器 | |
CN115061841A (zh) | 一种告警归并方法、装置、电子设备及存储介质 | |
CN113342806A (zh) | 大数据处理方法、装置、存储介质及处理器 | |
CN105100901B (zh) | 一种虚拟存储卡配置方法及系统 | |
CN111435327B (zh) | 一种日志记录的处理方法、装置及系统 | |
CN110532150B (zh) | 一种机箱管理方法、装置、存储介质及处理器 | |
CN112559565A (zh) | 一种异常检测方法、系统及装置 | |
CN104239201A (zh) | 一种软单步系统中内存读写监控方法 | |
CN115080309A (zh) | 数据备份系统、方法、存储介质以及电子设备 | |
CN114138615A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |