CN113746692A - 网络流量统计的方法、电子设备及存储介质 - Google Patents
网络流量统计的方法、电子设备及存储介质 Download PDFInfo
- Publication number
- CN113746692A CN113746692A CN202110825400.6A CN202110825400A CN113746692A CN 113746692 A CN113746692 A CN 113746692A CN 202110825400 A CN202110825400 A CN 202110825400A CN 113746692 A CN113746692 A CN 113746692A
- Authority
- CN
- China
- Prior art keywords
- container
- identifier
- data stream
- identification
- information
- 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
- 238000007619 statistical method Methods 0.000 title abstract description 4
- 238000000034 method Methods 0.000 claims description 105
- 230000000977 initiatory effect Effects 0.000 claims description 15
- 238000004590 computer program Methods 0.000 claims description 7
- 239000000126 substance Substances 0.000 claims 1
- 238000012544 monitoring process Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 244000035744 Hura crepitans Species 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 241000282326 Felis catus Species 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
Images
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
- H04L43/0888—Throughput
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Pure & Applied Mathematics (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Algebra (AREA)
- Environmental & Geological Engineering (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明实施例涉及容器技术领域,公开了一种网络流量统计的方法、电子设备及存储介质。本发明中,获取数据流中的容器识别信息,其中,容器被设置为主机模式;根据容器识别信息以及预设的识别关系,确定数据流对应的容器组的标识,识别关系包括容器识别信息与容器组的标识之间的对应关系;将数据流统计至容器组的标识对应的流量统计结果中。采用本申请实施例,可以准确统计被设置为host模式的容器的网络流量。
Description
技术领域
本发明实施例涉及容器技术领域,特别涉及一种网络流量统计的方法、电子设备及存储介质。
背景技术
容器是一种沙盒技术,主要目的是为了将应用运行在其中,并与外界隔离;方便沙盒可以被转移到其它宿主机上。本质上,容器是一个特殊的进程,通过名称空间(Namespace)、控制组(Control groups)、切根(chroot)技术把资源、文件、设备、状态和配置划分到一个独立的空间。容器网络模式常用的方法有桥接bridge模式以及主机host模式。
然而,在host模式下,容器直接使用宿主机的网络命名空间,没有单独的虚机网络接口对,即没有容器独立的网络接口,无法对单个进程/或进程组进行流量统计,也即无法对容器组进行流量统计。
发明内容
本发明实施方式的目的在于提供一种网络流量统计的方法、电子设备及存储介质,可以准确统计被设置为host模式的容器的网络流量。
为解决上述技术问题,第一方面,本申请的实施方式提供了一种网络流量统计的方法,获取数据流中的容器识别信息,其中,容器被设置为主机模式;根据容器识别信息以及预设的识别关系,确定数据流对应的容器组的标识,识别关系包括容器识别信息与容器组的标识之间的对应关系;将数据流统计至容器组的标识对应的流量统计结果中。
第二方面,本申请的实施方式还提供了一种电子设备,包括:至少一个处理器;以及,与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行上述的网络流量统计的方法。
第三方面,本申请的实施方式还提供了计算机可读存储介质,存储有计算机程序,计算机程序被处理器执行时实现上述的网络流量统计的方法。
本申请实施例中,容器被设置为主机host模式,在host模式下容器将共享宿主机的网络命名空间和网络接口,无法通过网络接口统计容器的网络流量,本实施例中,通过获取数据流中的容器识别信息,根据容器识别信息以及预设的识别对应关系,确定出数据流所属的容器组的标识,进而将该数据流统计至该容器组的标识对应的流量统计结果中,实现对容器组的网络流量的统计;由于本实施例中对容器的网络流量的统计不依赖于网络接口,而是基于数据流中的容器识别信息确定该数据流所属的容器组的标识,使得可以对host模式下的容器进行网络流量统计,且无需对容器进行改变,对容器的流量统计更为方便。
附图说明
一个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施例的限定,附图中具有相同参考数字标号的元件表示为类似的元件,除非有特别申明,附图中的图不构成比例限制。
图1是本申请实施例中网络流量统计的方法的流程图;
图2是一个实施例中构建第一哈希表的流程图;
图3是一个实施例中添加流量统计结果的示意图;
图4是一个实施例中构建第二哈希表的示意图;
图5是一个实施例中在第二哈希表添加流量统计结果的示意图;
图6是一个实施例提供的关联流量统计结果的示意图;
图7是一个实施例提供的网络流量统计的方法的流程图;
图8是本申请实施例中电子设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的各实施方式进行详细的阐述。然而,本领域的普通技术人员可以理解,在本发明各实施方式中,为了使读者更好地理解本申请而提出了许多技术细节。但是,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也可以实现本申请所要求保护的技术方案。
以下各个实施例的划分是为了描述方便,不应对本发明的具体实现方式构成任何限定,各个实施例在不矛盾的前提下可以相互结合相互引用。
容器网络模式通常包括桥接bridge模式以及主机host模式,若容器被设置为桥接bridge模式,容器会创建虚拟网卡接口(Virtual ETHernet,简称“veth”),容器流量统计可以在虚拟网络接口上进行,Linux支持对该桥接模式的容器的流量统计,但是在容器被设置为host模式的情况时,该容器直接使用宿主机的网络命名空间,该容器没有虚机网卡接口对,没有独立的虚拟网络接口,无法对容器进程或容器组进行流量统计,也即无法对容器进行流量统计。故需要解决在容器被设置为host场景下,无法对容器进行流量统计的问题。
本发明实施例中的网络流量统计的方法,该方法可以由容器所在的宿主机执行,其流程如图1所示:
步骤101:获取数据流中的容器识别信息,其中,容器被设置为主机模式。
具体地,宿主机上可以设置至少2个容器,多个容器构成容器组。在容器启动后,设置容器为主机模式,被设置为主机host模式的容器将共享宿主机的网络命名空间,容器不会虚拟出对应的网卡配置IP地址,故容器没有单独的IP地址,而是使用宿主机的网络接口。因此,无法通过网络接口确定传输的数据流所对应的容器,进而无法统计容器的流量。而数据流中通常会携带关于访问请求的源端和目的端的信息、以及数据流的协议类型等信息,本申请中可以通过识别该数据流的源端信息、目的端信息和数据流的协议类型信息,获取该数据流中的容器识别信息。
在一个实施例中,若容器作为被访问的服务端,则容器识别信息可以包括:用于传输数据流的容器的IP地址信息、容器的端口信息以及数据流的协议类型。
具体地,若容器作为被访问的服务端,由客户端主动连接该容器,则入向报文的入向流量的目的IP地址即为容器的IP地址信息、目的端口信息即为该容器的端口信息以及入向流量的协议类型即为数据流的协议类型。通过容器的IP地址信息、容器的端口号以及数据流的协议类型,可以唯一识别出该数据流对应的容器。
容器识别信息为用于传输数据流的容器的IP地址信息、容器的端口信息以及数据流的协议类型的组合,该容器识别信息中包括三类信息,通过该三类数据可以唯一确定出对应的容器组的标识,提高识别容器的速度和准确度。
在另一个实施例中,容器识别信息还可以是套接字socket;在客户端的进程创建监听套接字socket时,可以预先将容器所属进程的容器组的标识添加至该socket,从而实现该socket和器所属进程的容器组的标识关联。当有socket进行读或写操作时,可以获取该socket的信息作为容器识别信息。
将socket的信息作为容器识别信息,可以快速识别出读或写的流量,识别速度快。
步骤102:根据容器识别信息以及预设的识别关系,确定数据流对应的容器组的标识,识别关系包括容器识别信息与容器组的标识之间的对应关系。
具体地,由于不同容器的容器识别信息不同,可以从内核中获取各容器的IP地址、容器的端口以及该容器允许传输的数据流的协议类型,以及获取各个容器组的标识信息,构建该容器与对应的容器组的标识之间的对应关系,并将对应关系作为识别关系,存储各个识别关系,以便后续可以快速根据容器识别信息,确定数据流对应的容器组的标识。该容器组的标识可以是容器组的身份标识ID,由于容器是基于控制组(Control groups,Cgroup)创建,容器进程会记录其所属Cgroup的标识信息,Cgroup包括多个容器,即可以通过Cgroup统计容器组的流量,因而,本实施例中,容器组的标识可以采用控制组标识“Cgroup ID”进行表征。
步骤103:将数据流统计至容器组的标识对应的流量统计结果中。
具体地,在确定了容器识别信息对应的容器组的标识后,可以将该数据流统计至该容器组的标识对应的流量统计结果中。流量统计结果可以包括容器组接收数据包的个数、容器组发送数据包的个数;或者,流量统计结果包括接收字节的个数和容器发送字节的个数;或者,该流量统计结果中包括接收数据包的个数、容器组发送数据包的个数、容器组接收字节的个数和容器组发送字节的个数。
本申请实施例中,容器被设置为主机host模式,在host模式下容器将共享宿主机的网络命名空间和网络接口,无法通过网络接口统计容器的网络流量,本实施例中,通过获取数据流中的容器识别信息,根据容器识别信息以及预设的识别对应关系,确定出数据流所属的容器组的标识,进而将该数据流统计至该容器组的标识对应的流量统计结果中,实现对容器组的网络流量的统计;由于本实施例中对容器的网络流量的统计不依赖于网络接口,而是基于数据流中的容器识别信息确定该数据流所属的容器组的标识,使得可以对host模式下的容器进行网络流量统计,且无需对容器进行改变,对容器的流量统计更为方便,也便于该网络流量的统计方式的推广。
在一个实施例中,在获取数据流中的容器识别信息之前,该网络流量统计的方法通过执行步骤101-1,以存储识别关系,通过该识别关系便于后续快速识别容器识别信息对应的容器组的标识,其流程如图2所示:
步骤101-1:若确定容器作为被访问的服务端,则以容器的IP地址信息、容器的端口信息以及容器允许传输的数据流的协议类型作为第一索引,以容器所属的容器组的标识作为第一索引的值,构建第一哈希表,其中,第一哈希表用于提供识别关系。
具体地,可以通过构建第一哈希表的方式构建识别关系。若确定容器作为被访问的服务端,表明该容器将不主动连接客户端,而由客户端主动连接容器,可以在内核网络初始化时,创建第一哈希表,以容器的IP地址信息,容器的端口信息,以及容器允许传输的数据流的协议类型的组合作为第一哈希表中的第一索引,该第一索引的值value可以包括容器进程所属容器组的标识Cgroup ID。在客户端的进程创建监听套接字socket时,容器可以在第一哈希表中添加表项;每一条表项包括第一索引和第一索引的值。例如,在第一哈希表中添加表项key1:value1,其中,key1表示第一索引,key1包括:容器的IP地址、容器的端口信息和容器允许传输的数据流的协议protocol,value1表示第一索引的值,value1包括:容器进程所属容器组的标识Cgroup ID。该第一哈希表中存储的识别关系为容器作为被访问的服务端的容器识别信息与容器组的标识之间的对应关系。
步骤101:获取数据流中的容器识别信息,其中,容器被设置为主机模式。
具体地,当客户端的传输的数据流发送至该容器,容器通过创建的监听可以获取该数据流,进而可以获取该数据流中携带的容器识别信息。
步骤102:根据容器识别信息以及预设的识别关系,确定数据流对应的容器组的标识,识别关系包括容器识别信息与容器组的标识之间的对应关系。
当前容器进程启动后,容器创建监听,监听一个或多个socket,以及时获取到数据流的容器识别信息。客户端发起的入向流量,可以获取该入向流量的目的IP地址信息、目的端口信息port以及数据流的协议类型protocol作为容器识别信息,可以在第一哈希表中查找是否存在与容器识别信息相同的第一索引,若存在,则可以获取与容器识别信息相同的第一索引Key对应的Cgroup ID,若不存在,则不对该数据流进行统计。在获取到客户端发送的入向流量后,该容器可以向客户端反馈出向报文,对出向报文的出向流量进行统计,出向流量的统计方式与入向流量的统计类似,由于是由容器向客户端发送出向流量的源端即为该容器,获取出向流量的源IP地址、源端口信息port、以及出向流量的协议类型protocol,在第一哈希表中查找是否存在与该出向流量中的容器识别信息相同的第一索引。
步骤103:将数据流统计至容器组的标识对应的流量统计结果中。
将该数据流统计至该Cgroup ID对应的流量统计结果中。若不存在与容器识别信息相同的第一索引,则不统计。对出向流量的统计,获取出向流量的源IP地址、源端口信息port、以及出向流量的协议类型protocol,在第一哈希表中查找是否存在与该出向流量中的容器识别信息相同的第一索引,若存在,即命中该第一索引后,获取该第一索引的值Cgroup ID,将流量统计进去至该Cgroup ID对应的流量统计结果中,若不存在,即没有命中,则不统计流量。
本实施例中,通过创建第一哈希表存储识别关系,便于后续快速识别容器识别信息对应的容器组的标识,且第一哈希表存储的识别关系为容器作为被访问的服务端的容器识别信息与容器组的标识之间的对应关系,在容器作为被访问的服务端的场景下,从第一哈希表中的查找容器组的标识,速度快。
在一个实施例中,在获取数据流中的容器识别信息之前,该网络流量统计的方法还可以执行步骤101-2,其流程如图3所示:
步骤101-1:若确定容器作为被访问的服务端,则以容器的IP地址信息、容器的端口信息以及容器允许传输的数据流的协议类型作为第一索引,以容器所属的容器组的标识作为第一索引的值,构建第一哈希表,其中,第一哈希表用于提供识别关系。
具体地,构建第一哈希表的过程与上述构建第一哈希表的过程类似,此处将不再进行赘述。第一索引的值还可以包括容器进程的标识。
步骤101-2:在第一哈希表中添加与容器组的标识对应的流量统计结果,和/或,在第一哈希表中添加与容器进程的标识对应的流量统计结果。
具体地,在构建第一哈希表之后,可以在第一哈希表中添加与容器组的标识对应的流量统计结果,添加的方式可以是通过增加容器组的属性信息,例如,在容器组的标识所表征的容器组Cgroup中新增属性信息Cgroup_net_stat,该Cgroup_net_stat中可以包括接收数据包的个数,记为rx_packets和容器组发送数据包的个数tx_packets;或者,流量统计结果包括接收字节的个数rx_bytes和容器发送字节的个数tx_bytes;或者,该流量统计结果中包括接收数据包的个数rx_packets、容器组发送数据包的个数tx_packets、容器组接收字节的个数rx_bytes和容器组发送字节的个数tx_bytes。
和/或,可以在第一哈希表中添加与容器进程的标识对应的流量统计结果,添加的方式与添加容器组的标识对应的流量结果类似,在容器进程的标识所表征的容器进程中添加新的属性信息,该属性信息表征该容器进程的流量统计结果,可以包括容器进程发送数据包的个数、接收数据包的个数,或者容器进程发送字节的个数和接收字节的个数,或者,容器进程发送数据包的个数、接收数据包的个数、发送字节的个数和接收字节的个数。
步骤101:获取数据流中的容器识别信息,其中,容器被设置为主机模式。
步骤102:根据容器识别信息以及预设的识别关系,确定数据流对应的容器组的标识,识别关系包括容器识别信息与容器组的标识之间的对应关系。
步骤103:将数据流统计至容器组的标识对应的流量统计结果中。
当前容器进程启动后,容器创建监听,监听一个或多个socket,以及时获取到数据流的容器识别信息。客户端发起的入向流量,可以获取该入向流量的目的IP地址信息、目的端口信息port以及数据流的协议protocol作为容器识别信息,可以在第一哈希表中查找是否存在与容器识别信息相同的第一索引,若存在,则可以获取与容器识别信息相同的第一索引Key对应的值,第一索引的值包括容器组的标识和容器进程的标识,故可以将入向流量统计至Cgroup ID对应的流量统计结果中,以及将入向流量统计至容器进程的标识对应的流量统计结果中;若不存在,则不统计。
容器组Cgroup的获取方式,在数据流量的统计等场景均可以在socket上直接关联Cgroup ID,且socket的收发包数量上没限制。在获取到客户端发送的入向流量后,该容器可以向客户端传输出向流量,对出向流量的统计与入向流量的统计类似,获取出向流量的源IP地址、源端口信息port、以及出向流量的协议类型protocol,在第一哈希表中查找是否存在与该出向流量中的容器识别信息相同的第一索引,若存在,则可以获取与容器识别信息相同的第一索引Key对应的值,第一索引的值包括容器组的标识和容器进程的标识,故可以将出向流量统计至Cgroup ID对应的流量统计结果中,以及将出向流量统计至容器进程的标识对应的流量统计结果中;若不存在,则不统计。
在另一个例子中,若容器识别信息为socket的信息,由于socket与容器所属进行的Cgroup ID关联,即可获取数据流对应的容器组的标识。当有数据流通过socket进行读read或写write时,就能够通过socket关联的Cgroup ID,将read或write的数据流直接统计至容器所在的Cgroup ID中。
本实施例中,第一索引的值包括容器进程的标识,在获取数据流的容器识别标识后,可以直接确定该数据流所属的容器进程,以便以容器进程为粒度进行的网络流量统计,提高该网络流量统计的精准度,满足不同用户网络流量统计的需求。
在一个实施例中,在获取数据流中的容器识别信息之前,该网络流量统计的方法还执行步骤101-3,其流程如图4所示:
若容器作为被访问的服务端,则容器识别信息包括:用于传输数据流的容器的IP地址信息、容器的端口信息以及数据流的协议类型。若容器作为发起访问请求的客户端,则容器识别信息还包括:目的IP地址信息和目的端口信息。
步骤101-1:若确定容器作为被访问的服务端,则以容器的IP地址信息、容器的端口信息以及容器允许传输的数据流的协议类型作为第一索引,以容器所属的容器组的标识作为第一索引的值,构建第一哈希表,其中,第一哈希表用于提供识别关系。
步骤101-3:若确定容器被作为发起访问请求的客户端,以容器的目的IP地址信息、目的端口信息、源IP地址信息、源端口信息以及容器允许传输的数据流的协议类型作为第二索引,以容器所属的容器组的标识作为第二索引的值,构建第二哈希表,第二哈希表用于提供识别关系。
若确定容器作为被访问的服务端,该容器将不主动连接客户端,由客户端主动连接容器,可以构建第二哈希表的方式构建该场景下的识别关系,可以在内核网络初始化时,创建第二哈希表,以目的IP地址信息、目的端口信息、源IP地址信息、源端口信息以及容器允许传输的数据流的协议类型的组合作为第二哈希表的第二索引,该第二索引的值可以包括容器进程所属容器组的标识Cgroup ID。在客户端的进程创建监听套接字socket时,在第二哈希表中添加表项;每一条表项包括第二索引和第二索引的值。例如,在第二哈希表中添加表项key2:value2,其中,key2表示第二索引,key2包括:目的IP地址信息、目的端口信息、源IP地址信息、源端口信息以及容器允许传输的数据流的协议类型,value2表示第二索引的值,value2包括:容器进程所属Cgroup ID。其中,由于容器作为被访问的服务端,该目的IP地址信息为服务端的IP地址信息,目的端口信息为服务端的端口信息,源IP地址信息为该容器的IP地址信息,源端口信息为该容器的端口信息。该第二哈希表中存储的识别关系为容器作为发起访问的客户端的容器识别信息与容器组的标识之间的对应关系。
步骤101:获取数据流中的容器识别信息,其中,容器被设置为主机模式。
若确定容器作为被访问的服务端,获取数据流中的容器识别信息包括:目的IP地址信息、目的端口信息、源IP地址信息、源端口信息以及容器允许传输的数据流的协议类型。
步骤102:根据容器识别信息以及预设的识别关系,确定数据流对应的容器组的标识,识别关系包括容器识别信息与容器组的标识之间的对应关系。
容器进程启动后,会主动连接其它的服务端,其它的服务端可以是跨主机的服务端,也可以是当前宿主机中的其它容器。当容器主动连接其它的服务端时,在第二哈希表中添加表项,表项中的第二索引为主动创建连接的源IP地址信息:源端口信息:目的IP地址信息:目的端口信息:协议protocol,第二索引的值v包含容器所属容器组的标识Cgroup ID。
在获取入向报文的入向流量中的容器识别信息A后,可以在第二哈希表中查找是否存在与该容器识别信息A相同的第二索引A,若存在,则获取该第二索引的值value_A,即获取该第二索引A对应的CgroupID;若不存在,则不进行流量统计。
同理,在获取出向报文的出向流量中的容器识别信息B后,可以在第二哈希表中查找是否存在与该容器识别信息B相同的第二索引B,若存在,则获取该第二索引的值value_B,即获取该第二索引对应的CgroupID;若不存在,则不进行流量统计。
步骤103:将数据流统计至容器组的标识对应的流量统计结果中。
本实施例中,针对容器作为被访问的服务端时,通过构建第二哈希表存储该情况下的识别关系,从而避免出现漏统计流量的情况,提高流量统计的准确性。第一哈希表存储的识别关系为容器作为被访问的服务端的容器识别信息与容器组的标识之间的对应关系,第二哈希表存储的识别关系为容器作为发起访问的客户端的容器识别信息与容器组的标识之间的对应关系,使得在不同应用场景时,从不同的哈希表中查找容器组的标识,提高查找容器组的标识的速度和准确性。
在一个实施例中,在获取数据流中的容器识别信息之前,该网络流量统计的方法还可以执行步骤101-4,其流程如图5所示:
若容器作为被访问的服务端,则容器识别信息包括:用于传输数据流的容器的IP地址信息、容器的端口信息以及数据流的协议类型。若容器作为发起访问请求的客户端,则容器识别信息还包括:目的IP地址信息和目的端口信息。
步骤101-1:若确定容器作为被访问的服务端,则以容器的IP地址信息、容器的端口信息以及容器允许传输的数据流的协议类型作为第一索引,以容器所属的容器组的标识作为第一索引的值,构建第一哈希表,其中,第一哈希表用于提供识别关系;第一索引的值还包括容器进程的标识。
步骤101-3:若确定容器被作为发起访问请求的客户端,以容器的目的IP地址信息、目的端口信息、源IP地址信息、源端口信息以及容器允许传输的数据流的协议类型作为第二索引,以容器所属的容器组的标识作为第二索引的值,构建第二哈希表,第二哈希表用于提供识别关系。
具体地,构建第二哈希表的过程与图4中构建第二哈希表的过程类似,此处将不再进行赘述,且第二索引的值还可以包括容器进程的标识。
步骤101-4:在第二哈希表中添加与容器组的标识对应的流量统计结果,和/或,在第二哈希表中添加于容器进程的标识对应的流量统计结果。
具体地,在构建第二哈希表之后,可以在第二哈希表中添加与容器组的标识对应的流量统计结果,添加的方式可以是通过增加容器组的属性信息,例如,在容器组的标识所表征的容器组Cgroup中新增属性信息Cgroup_net_stat,该Cgroup_net_stat中可以包括接收数据包的个数,记为rx_packets和容器组发送数据包的个数tx_packets;或者,流量统计结果包括接收字节的个数rx_bytes和容器发送字节的个数tx_bytes;或者,该流量统计结果中包括接收数据包的个数rx_packets、容器组发送数据包的个数tx_packets、容器组接收字节的个数rx_bytes和容器组发送字节的个数tx_bytes。
和/或,可以在第二哈希表中添加与容器进程的标识对应的流量统计结果,添加的方式与添加容器组的标识对应的流量结果类似,在容器进程的标识所表征的容器进程中添加新的属性信息,该属性信息表征该容器进程的流量统计结果,可以包括容器进程发送数据包的个数、接收数据包的个数,或者容器进程发送字节的个数和接收字节的个数,或者,容器进程发送数据包的个数、接收数据包的个数、发送字节的个数和接收字节的个数。
步骤101:获取数据流中的容器识别信息,其中,容器被设置为主机模式。
若确定容器作为被访问的服务端,获取数据流中的容器识别信息包括:目的IP地址信息、目的端口信息、源IP地址信息、源端口信息以及容器允许传输的数据流的协议类型。
步骤102:根据容器识别信息以及预设的识别关系,确定数据流对应的容器组的标识,识别关系包括容器识别信息与容器组的标识之间的对应关系。
步骤103:将数据流统计至容器组的标识对应的流量统计结果中。
将该数据流统计至该Cgroup ID对应的流量统计结果中或者,统计至该容器进程标识对应的流量统计结果中。
本实施例中,在第二索引的值还包括容器进程的标识,可以在第二哈希表中添加与容器进程的标识对应的网络流量,减小了统计网络流量的粒度。
在一个实施例中,在获取数据流中的容器识别信息之前,该网络流量统计的方法还可以执行步骤101-5,其流程如图6所示:
若容器作为被访问的服务端,则容器识别信息包括:用于传输数据流的容器的IP地址信息、容器的端口信息以及数据流的协议类型。若容器作为发起访问请求的客户端,则容器识别信息还包括:目的IP地址信息和目的端口信息。
步骤101-1:若确定容器作为被访问的服务端,则以容器的IP地址信息、容器的端口信息以及容器允许传输的数据流的协议类型作为第一索引,以容器所属的容器组的标识作为第一索引的值,构建第一哈希表,其中,第一哈希表用于提供识别关系;第一索引的值还包括容器进程的标识。
步骤101-3:若确定容器被作为发起访问请求的客户端,以容器的目的IP地址信息、目的端口信息、源IP地址信息、源端口信息以及容器允许传输的数据流的协议类型作为第二索引,以容器所属的容器组的标识作为第二索引的值,构建第二哈希表,第二哈希表用于提供识别关系。第二索引的值还包括容器进程的标识。
步骤101-5:根据容器组的标识,关联宿主机内核的容器组的标识对应的流量统计结果。
具体地,由于Linux内核中包括与容器组的流量统计结果,故可以通过容器组的标识进行关联;关联后即可根据容器组的标识,从内核中获取容器组的流量统计结果。或者可以通过容器进程的标识进行关联,关联后可以通过该容器进程标识,从内核中获取容器进程的流量统计结果。
步骤101:获取数据流中的容器识别信息,其中,容器被设置为主机模式。
本实施例中,若容器作为发起访问请求的客户端,则容器识别信息还包括:目的IP地址信息和目的端口信息。若容器作为发起访问请求的客户端,则容器识别信息还包括:目的IP地址信息和目的端口信息。
步骤102:根据容器识别信息以及预设的识别关系,确定数据流对应的容器组的标识,识别关系包括容器识别信息与容器组的标识之间的对应关系。
步骤103:将数据流统计至容器组的标识对应的流量统计结果中。
具体地,由于关联容器组的标识,可以将数据流统计至内核中的该容器组的标识对应的流量统计结果中。
本实施例中,通过关联宿主机内核的容器组的标识对应的流量统计结果中,无需在第一哈希表以及第二哈希表中增加流量统计结果。
以上各实施例可以相互结合相互引用,例如下面是各实施例结合后的例子,然并不以此为限;各实施例在不矛盾的前提下可以任意结合成为一个新的实施例。
在一个实施例中,该网络流量统计的方法的流程图还可以如图7所示:
步骤101-1:若确定容器作为被访问的服务端,则以容器的IP地址信息、容器的端口信息以及容器允许传输的数据流的协议类型作为第一索引,以容器所属的容器组的标识作为第一索引的值,构建第一哈希表,其中,第一哈希表用于提供识别关系;第一索引的值还包括容器进程的标识。
步骤101-2:在第一哈希表中添加与容器组的标识对应的流量统计结果,和/或,在第一哈希表中添加与容器进程的标识对应的流量统计结果。
步骤101-3:若确定容器被作为发起访问请求的客户端,以容器的目的IP地址信息、目的端口信息、源IP地址信息、源端口信息以及容器允许传输的数据流的协议类型作为第二索引,以容器所属的容器组的标识作为第二索引的值,构建第二哈希表,第二哈希表用于提供识别关系。第二索引的值还包括容器进程的标识。
步骤101-4:在第二哈希表中添加与容器组的标识对应的流量统计结果,和/或,在第二哈希表中添加于容器进程的标识对应的流量统计结果。
具体地,由于Linux内核中包括与容器组的流量统计结果,故可以通过流量组的标识进行关联,从而可以根据容器组的标识,从内核中获取容器组的流量统计结果,或者从内核中获取容器的流量统计结果。
第一哈希表和第二哈希表可以为同一哈希表。具体地,本示例中可以仅构建第二哈希表,该第二哈希表以容器的目的IP地址信息、目的端口信息、源IP地址信息、源端口信息以及容器允许传输的数据流的协议类型作为第二索引,以容器所属的容器组的标识作为第二索引的值。若确定容器作为被访问的服务端的情况下,在客户端的进程创建监听套接字socket时,容器可以在第二哈希表中添加表项;每一条表项包括第一索引和第一索引的值。其中,第一索引中将0填入目的IP地址信息和目的端口信息中,即目的IP地址信息为0,且目的端口信息为0。当有入向流量时,将目的IP地址信息,目的端口信息以及容器允许传输的数据流的协议类型填入对应的值,将源IP地址信息和源端口信息置为0,形成入向流量的五元组,利用该入向流量的五元组在第二哈希表中查询CgroupID。同理,当有出向流量时,将源IP地址信息、源端口信息及容器允许传输的数据流的协议类型填入对应的值,将目的IP地址信息和目的端口信息置为0,形成出向流量的五元组,利用出向流量的五元组在第二哈希表中查询CgroupID。
步骤101:获取数据流中的容器识别信息,其中,容器被设置为主机模式。
本实施例中,若容器作为发起访问请求的客户端,则容器识别信息还包括:目的IP地址信息和目的端口信息。若容器作为发起访问请求的客户端,则容器识别信息还包括:目的IP地址信息和目的端口信息。
步骤102:根据容器识别信息以及预设的识别关系,确定数据流对应的容器组的标识,识别关系包括容器识别信息与容器组的标识之间的对应关系。
步骤103:将数据流统计至容器组的标识对应的流量统计结果中。
需要说明的是,内核将每个容器进程的CgroupID的流量以及每个容器进程的流量分别导出文件并存储在系统的相应位置,以供用户获取,其中,导出的文件可以是伪系统文件,如proc文件,用户可以通过操作系统命令获取,如cat命令。
本申请实施例还提供一种电子设备,该电子设备的结构如图8所示,电子设备包括:至少一个处理器;以及,与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行上述的网络流量统计的方法。
其中,存储器和处理器采用总线方式连接,总线可以包括任意数量的互联的总线和桥,总线将一个或多个处理器和存储器的各种电路链接在一起。总线还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路链接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口在总线和收发机之间提供接口。收发机可以是一个元件,也可以是多个元件,比如多个接收器和发送器,提供用于在传输介质上与各种其他装置通信的单元。经处理器处理的数据通过天线在无线介质上进行传输,进一步,天线还接收数据并将数据传送给处理器。
处理器负责管理总线和通常的处理,还可以提供各种功能,包括定时,外围接口,电压调节、电源管理以及其他控制功能。而存储器可以被用于存储处理器在执行操作时所使用的数据。
本申请实施例还提供一种计算机可读存储介质,存储有计算机程序,计算机程序被处理器执行时实现上述的网络流量统计的方法。
本领域技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域的普通技术人员可以理解,上述各实施方式是实现本发明的具体实施例,而在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。
Claims (10)
1.一种网络流量统计的方法,其特征在于,包括:
获取数据流中的容器识别信息,其中,所述容器被设置为主机模式;
根据所述容器识别信息以及预设的识别关系,确定所述数据流对应的容器组的标识,所述识别关系包括所述容器识别信息与所述容器组的标识之间的对应关系;
将所述数据流统计至所述容器组的标识对应的流量统计结果中。
2.根据权利要求1所述的网络流量统计的方法,其特征在于,若所述容器作为被访问的服务端,则所述容器识别信息包括:用于传输所述数据流的容器的IP地址信息、所述容器的端口信息以及所述数据流的协议类型。
3.根据权利要求2所述的网络流量统计的方法,其特征在于,在所述获取数据流中的容器识别信息之前,所述方法还包括:
若确定所述容器作为被访问的服务端,则以所述容器的IP地址信息、所述容器的端口信息以及所述容器允许传输的数据流的协议类型作为第一索引,以所述容器所属的容器组的标识作为所述第一索引的值,构建第一哈希表,其中,所述第一哈希表用于提供所述识别关系。
4.根据权利要求3所述的网络流量统计的方法,其特征在于,所述第一索引的值还包括所述容器进程的标识;
在所述根据所述容器识别信息以及预设的识别关系,确定所述数据流对应的容器组的标识之前,所述方法还包括:
在所述第一哈希表中添加与所述容器组的标识对应的流量统计结果,和/或,在所述第一哈希表中添加与所述容器进程的标识对应的流量统计结果。
5.根据权利要求2所述的网络流量统计的方法,其特征在于,若所述容器作为发起访问请求的客户端,则所述容器识别信息还包括:目的IP地址信息和目的端口信息。
6.根据权利要求5所述的网络流量统计的方法,其特征在于,在所述获取数据流中的容器识别信息之前,其特征在于,所述方法还包括:
若确定所述容器被作为发起访问请求的客户端,以所述容器的目的IP地址信息、目的端口信息、源IP地址信息、源端口信息以及所述容器允许传输的数据流的协议类型作为第二索引,以所述容器所属的容器组的标识作为所述第二索引的值,构建第二哈希表,所述第二哈希表用于提供所述识别关系。
7.根据权利要求6所述的网络流量统计的方法,其特征在于,所述第二索引的值还包括所述容器进程的标识;
在所述根据所述容器识别信息以及预设的识别关系,确定所述数据流对应的容器组的标识之前,所述方法还包括:
在所述第二哈希表中添加与所述容器组的标识对应的流量统计结果,和/或,在所述第二哈希表中添加于所述容器进程的标识对应的流量统计结果。
8.根据权利要求1所述的网络流量统计的方法,其特征在于,在所述根据所述容器识别信息以及预设的识别关系,确定所述数据流对应的容器组的标识之前,所述方法还包括:
根据所述容器组的标识,关联宿主机内核的所述容器组的标识对应的流量统计结果。
9.一种电子设备,其特征在于,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如权利要求1-8任一所述的网络流量统计的方法。
10.一种计算机可读存储介质,存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至8中任一项所述的网络流量统计的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110825400.6A CN113746692A (zh) | 2021-07-21 | 2021-07-21 | 网络流量统计的方法、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110825400.6A CN113746692A (zh) | 2021-07-21 | 2021-07-21 | 网络流量统计的方法、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113746692A true CN113746692A (zh) | 2021-12-03 |
Family
ID=78728913
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110825400.6A Pending CN113746692A (zh) | 2021-07-21 | 2021-07-21 | 网络流量统计的方法、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113746692A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114172726A (zh) * | 2021-12-07 | 2022-03-11 | 北京天融信网络安全技术有限公司 | 一种基于容器环境的访问控制方法及系统 |
CN115150171A (zh) * | 2022-06-30 | 2022-10-04 | 北京天融信网络安全技术有限公司 | 一种流量统计方法、装置、电子设备及存储介质 |
CN115174446A (zh) * | 2022-07-21 | 2022-10-11 | 天翼云科技有限公司 | 一种网络流量统计的方法、装置及电子设备 |
WO2023134574A1 (zh) * | 2022-01-12 | 2023-07-20 | 华为技术有限公司 | 流统计方法、装置及系统 |
WO2023207548A1 (zh) * | 2022-04-29 | 2023-11-02 | 北京火山引擎科技有限公司 | 一种流量检测方法、装置、设备及存储介质 |
CN117240612A (zh) * | 2023-11-10 | 2023-12-15 | 杭州海康威视数字技术股份有限公司 | 基于多模过滤的失陷物联网设备安全检测方法及装置 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160380916A1 (en) * | 2015-06-29 | 2016-12-29 | Vmware, Inc. | Container-aware application dependency identification |
CN106921637A (zh) * | 2015-12-28 | 2017-07-04 | 华为技术有限公司 | 网络流量中的应用信息的识别方法和装置 |
US20180288129A1 (en) * | 2017-03-29 | 2018-10-04 | Ca, Inc. | Introspection driven monitoring of multi-container applications |
CN108696452A (zh) * | 2018-05-16 | 2018-10-23 | 腾讯科技(深圳)有限公司 | 一种容器级网络流量采集、网络质量标识方法、装置、系统 |
US20190123984A1 (en) * | 2017-10-25 | 2019-04-25 | Cisco Technology, Inc. | System and method for obtaining micro-service telemetry data |
CN110120919A (zh) * | 2019-04-04 | 2019-08-13 | 华中科技大学 | 一种用于容器网络的网络资源隔离方法和系统 |
US20190391897A1 (en) * | 2018-06-22 | 2019-12-26 | EMC IP Holding Company LLC | Adaptive thresholds for containers |
US20200387599A1 (en) * | 2017-12-04 | 2020-12-10 | British Telecommunications Public Limited Company | Software container application security |
US20210099394A1 (en) * | 2019-10-01 | 2021-04-01 | Salesforce.Com, Inc. | Correlating network level and application level traffic |
-
2021
- 2021-07-21 CN CN202110825400.6A patent/CN113746692A/zh active Pending
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160380916A1 (en) * | 2015-06-29 | 2016-12-29 | Vmware, Inc. | Container-aware application dependency identification |
CN106921637A (zh) * | 2015-12-28 | 2017-07-04 | 华为技术有限公司 | 网络流量中的应用信息的识别方法和装置 |
US20180288129A1 (en) * | 2017-03-29 | 2018-10-04 | Ca, Inc. | Introspection driven monitoring of multi-container applications |
US20190123984A1 (en) * | 2017-10-25 | 2019-04-25 | Cisco Technology, Inc. | System and method for obtaining micro-service telemetry data |
US20200387599A1 (en) * | 2017-12-04 | 2020-12-10 | British Telecommunications Public Limited Company | Software container application security |
CN108696452A (zh) * | 2018-05-16 | 2018-10-23 | 腾讯科技(深圳)有限公司 | 一种容器级网络流量采集、网络质量标识方法、装置、系统 |
US20190391897A1 (en) * | 2018-06-22 | 2019-12-26 | EMC IP Holding Company LLC | Adaptive thresholds for containers |
CN110120919A (zh) * | 2019-04-04 | 2019-08-13 | 华中科技大学 | 一种用于容器网络的网络资源隔离方法和系统 |
US20210099394A1 (en) * | 2019-10-01 | 2021-04-01 | Salesforce.Com, Inc. | Correlating network level and application level traffic |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114172726A (zh) * | 2021-12-07 | 2022-03-11 | 北京天融信网络安全技术有限公司 | 一种基于容器环境的访问控制方法及系统 |
CN114172726B (zh) * | 2021-12-07 | 2023-08-29 | 北京天融信网络安全技术有限公司 | 一种基于容器环境的访问控制方法及系统 |
WO2023134574A1 (zh) * | 2022-01-12 | 2023-07-20 | 华为技术有限公司 | 流统计方法、装置及系统 |
WO2023207548A1 (zh) * | 2022-04-29 | 2023-11-02 | 北京火山引擎科技有限公司 | 一种流量检测方法、装置、设备及存储介质 |
CN115150171A (zh) * | 2022-06-30 | 2022-10-04 | 北京天融信网络安全技术有限公司 | 一种流量统计方法、装置、电子设备及存储介质 |
CN115150171B (zh) * | 2022-06-30 | 2023-11-10 | 北京天融信网络安全技术有限公司 | 一种流量统计方法、装置、电子设备及存储介质 |
CN115174446A (zh) * | 2022-07-21 | 2022-10-11 | 天翼云科技有限公司 | 一种网络流量统计的方法、装置及电子设备 |
CN115174446B (zh) * | 2022-07-21 | 2023-11-03 | 天翼云科技有限公司 | 一种网络流量统计的方法、装置及电子设备 |
CN117240612A (zh) * | 2023-11-10 | 2023-12-15 | 杭州海康威视数字技术股份有限公司 | 基于多模过滤的失陷物联网设备安全检测方法及装置 |
CN117240612B (zh) * | 2023-11-10 | 2024-01-26 | 杭州海康威视数字技术股份有限公司 | 基于多模过滤的失陷物联网设备安全检测方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113746692A (zh) | 网络流量统计的方法、电子设备及存储介质 | |
US11431624B2 (en) | Communication method and network interface card | |
CN112398817B (zh) | 数据发送的方法及设备 | |
US11575592B2 (en) | Message processing method and apparatus, control-plane device, and computer storage medium | |
US11616738B2 (en) | Packet processing method and related device | |
CN109981493B (zh) | 一种用于配置虚拟机网络的方法和装置 | |
US10728335B2 (en) | Data processing method, storage system, and switching device | |
CN109151025B (zh) | 基于url的负载均衡方法、装置、计算机存储介质及设备 | |
CN112887229B (zh) | 一种会话信息同步方法及装置 | |
CN112311692A (zh) | 报文处理方法及装置、端设备 | |
CN108173763B (zh) | 报文处理方法、设备及系统 | |
US20110246600A1 (en) | Memory sharing apparatus | |
CN112583655B (zh) | 数据传输方法、装置、电子设备及可读存储介质 | |
CN110519147A (zh) | 数据帧传输方法、装置、设备和计算机可读存储介质 | |
CN109981725B (zh) | 一种跨安全域的通信方法、服务器和可读存储介质 | |
CN114978897B (zh) | 基于eBPF和应用识别技术的网络控制方法和系统 | |
CN112637151B (zh) | 数据消息的传输方法、终端设备、服务器及存储介质 | |
CN113486025B (zh) | 数据存储方法、数据查询方法及装置 | |
CN111865801B (zh) | 一种基于Virtio端口传输数据的方法和系统 | |
CN117493258B (zh) | 基板管理控制器的信息获取系统、方法、装置、存储介质 | |
US11606274B1 (en) | Method for operations of virtual machines in monitoring cloud activities, system, and device applying the method | |
CN114844845B (zh) | 虚实结合网络靶场无线实装设备接入装置、方法与系统 | |
EP4361837A1 (en) | Method for optimizing data access performance, and intermediate device | |
EP4117241A1 (en) | Service execution method, apparatus and system, and storage medium | |
EP4089960A1 (en) | Method and device for acquiring data |
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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20211203 |