用于网络或应用性能管理的流量采集方法与流程

文档序号:16245355发布日期:2018-12-11 23:31阅读:282来源:国知局
用于网络或应用性能管理的流量采集方法与流程

本发明实施例涉及计算机技术领域,更具体地,涉及一种用于网络或应用性能管理的流量采集方法。

背景技术

网络性能管理(npm,networkperformancemanagement)将端到端业务和应用在交付相关性方面的可见性与网络行为分析相结合,来解决网络运维管理方面难以发现、定位和诊断故障的挑战。npm可以分析应用每一跳路径上tcp或更高层面的行为或者是某个核心节点上的所有基于诸如tcp等传输层协议的应用行为,并且在出现故障的时候及时发现和定位问题,从而为it的运维保障提供一种能够实时发现网络和应用故障、深挖问题直至单个会话,并能调阅全部原始数据的“终极手段”。应用性能管理(apm,applicationperformancemanagement)是比npm在用户自定义应用的性能分析方面更进一步的产品。apm需要针对用户应用进行定制开发,深度识别和解析用户特定应用协议和流程的各个字段和各种状态,从而给出用户所需的各种统计分析结果。

对于进行网络性能管理和应用性能管理,其中需要进行流量采集,由于进行流量采集的目的是对网络的运行状况和应用的性能进行监控管理,因此对流量的采集不能影响流量的正常转发。为了对流量进行采集,现有方法均需要对目标流量进行复制。

现有的服务器流量采集方法分为两类:第一类方法是在服务器上通过sflowagent或tcpdump工具从系统内核中采集(复制)网包,进而完成对于流量的采集。第二类方法是在与服务器连接的交换机上通过镜像(span、rspan、erspan等)采集(复制)网包,进而完成对于流量的采集。

已有技术对虚拟服务器的流量采集存在如下缺陷:

首先是在交换机上采集的功能问题:采用第二类方法采集流量时,由于虚拟服务器上的虚拟机之间存在直接的网络访问,在交换机上通过镜像复制流量的方式不能完全采集服务器内部互访的流量。

其次是在虚拟机内部采集的侵入性问题:采用第一类方法采集流量时,在虚拟机内部安装sflow或tcpdump能够实现流量的全部采集,但这种方法需要对所有虚拟机进行变更,存在软件安装的版本冲突、访问虚拟机的权限冲突、部署规模大难以管理等一系列问题。



技术实现要素:

针对现有技术存在的问题,本发明实施例提供一种用于网络或应用性能管理的流量采集方法。

本发明实施例提供一种用于网络或应用性能管理的流量采集方法,包括:采集单元通过调用操作系统内核的抓包套接字接口,在共享内存中对目标虚拟网卡进行网包监控;若所述采集单元检测到所述共享内存中存在新增的网包,则采集所述新增的网包,完成流量采集;其中,所述共享内存为采集单元和操作系统内核共用的内存,所述新增的网包为所述目标虚拟网卡对应的目标虚拟机发送或接收的网包。

本发明实施例提供一种用于网络或应用性能管理的流量采集设备,包括:至少一个处理器;以及与所述处理器通信连接的至少一个存储器,其中:所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行上述流量采集方法。

本发明实施例提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行上述流量采集方法。

本发明实施例提供的用于网络或应用性能管理的流量采集方法,通过设置采集单元在共享内存中对目标虚拟网卡进行网包监控,若检测到存在新增的网包,则采集新增的网包,能够进行高效地流量采集,为后端分析工具提供可靠的数据源,能够在无需对虚拟机进行变更的前提下完全采集互访的流量。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明用于网络或应用性能管理的流量采集方法实施例的流程图;

图2为本发明实施例中的用于网络或应用性能管理的流量采集设备的框架示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

图1为本发明用于网络或应用性能管理的流量采集方法实施例的流程图,如图1所示,包括:s101、采集单元通过调用操作系统内核的抓包套接字接口,在共享内存中对目标虚拟网卡进行网包监控;s102、若所述采集单元检测到所述共享内存中存在新增的网包,则采集所述新增的网包,完成流量采集;其中,所述共享内存为采集单元和操作系统内核共用的内存,所述新增的网包为所述目标虚拟网卡对应的目标虚拟机发送或接收的网包。

本发明实施例提供的用于网络或应用性能管理的流量采集方法,基于部署在同一虚拟服务器上的操作系统内核、采集单元、若干个虚拟机和与所述若干个虚拟机一一对应的若干个虚拟网卡完成。本发明实施例中的若干个指代一个或者多个。

任一虚拟机,用于向对应的虚拟网卡发送网包,以及接收对应的虚拟网卡转发的网包;

任一虚拟网卡,用于接收对应的虚拟机发送的网包,并将对应的虚拟机发送的网包转发至指定的虚拟机,所述指定的虚拟机在所述虚拟服务器中。

所述任一虚拟网卡还用于接收其它虚拟机发送给对应的虚拟机的网包,并将发送给对应的虚拟机的网包转发至对应的虚拟机,所述其它虚拟机在所述虚拟服务器中。

具体地,步骤s101中,采集单元通过调用操作系统内核的抓包套接字接口,在共享内存中对目标虚拟网卡进行网包监控,网包的监控是循环查找的,所述共享内存优选包括一个环形缓冲区,采集单元在环形缓冲区中通过循环查找,可以在当有新增的网包时即采集。

具体地,步骤s102中,采集所述新增的网包,即已经完成流量采集,本领域的技术人员可以理解,采集了新增的网包,即指代已经完成流量采集。

进一步地,本发明实施例中的操作系统内核优选为linux操作系统内核。

进一步地,对于本发明实施例中提到的套接字:应用层通过传输层进行数据通信时,tcp和udp会遇到同时为多个应用程序进程提供并发服务的问题。多个tcp连接或多个应用程序进程可能需要通过同一个tcp协议端口传输数据。为了区别不同的应用程序进程和连接,许多计算机操作系统为应用程序与tcp/ip协议交互提供了称为套接字(socket)的接口,区分不同应用程序进程间的网络通信和连接。

进一步地,共享内存是通过把同一块内存分别映射到不同的进程空间中实现进程间通信。

本发明实施例提供的用于网络或应用性能管理的流量采集方法,通过设置采集单元在共享内存中对目标虚拟网卡进行网包监控,若检测到存在新增的网包,则采集新增的网包,能够进行高效地流量采集,为后端分析工具提供可靠的数据源,能够在无需对虚拟机进行变更的前提下完全采集互访的流量。

进一步地,采用现有技术中第一类方法采集流量时,需要在网卡、内核各产生一次复制,共产生两次网包复制,这样会使得cpu开销较大。虚拟服务器可能承载大量的虚拟机,本身的网络负载相比裸服务器更高。

为了解决现有技术中的上段所述的问题,基于上述实施例,所述步骤s102,即若所述采集单元检测到所述共享内存中存在新增的网包,则采集所述新增的网包,完成流量采集,之前还包括:所述目标虚拟网卡接收到所述目标虚拟机发送的第一网包,所述操作系统内核将所述第一网包作为所述新增的网包并通过mmap方法将所述新增的网包映射到共享内存中;或者,所述目标虚拟网卡接收到发送给所述目标虚拟机的第二网包,所述操作系统内核将所述第二网包作为所述新增的网包并通过mmap方法将所述新增的网包映射到共享内存中。

具体地,mmap方法是将一个文件或者其它对象映射进内存的方法。文件被映射到多个页上,如果文件的大小不是所有页的大小之和,最后一个页不被使用的空间将会清零。munmap执行相反的操作,删除特定地址区域的对象映射。

进一步地,所述目标虚拟网卡接收到所述目标虚拟机发送的第一网包,所述操作系统内核将所述第一网包作为所述新增的网包并通过mmap方法将所述新增的网包映射到共享内存中,之后还包括:所述目标虚拟网卡将所述第一网包转发至所述第一网包指定的虚拟机。

进一步地,所述目标虚拟网卡接收到发送给所述目标虚拟机的第二网包,所述操作系统内核将所述第二网包作为所述新增的网包并通过mmap方法将所述新增的网包映射到共享内存中,之后还包括:所述目标虚拟网卡将所述第二网包转发至所述目标虚拟机。

所述操作系统内核将所述第一网包作为所述新增的网包并通过mmap方法将所述新增的网包映射到共享内存中之后,所述共享内存中就包含了一个新增的网包,此时采集单元即可采集(抓取)该新增的网包。所述操作系统内核将所述第二网包作为所述新增的网包并通过mmap方法将所述新增的网包映射到共享内存中之后,所述共享内存中就包含了一个新增的网包,此时采集单元即可采集(抓取)该新增的网包。

进一步地,所述操作系统内核将所述第一网包作为所述新增的网包并通过mmap方法将所述新增的网包映射到共享内存中,具体包括:所述操作系统内核将所述第一网包作为所述新增的网包复制到自身的内存中,将自身内存中的新增的网包通过mmap方法映射到共享内存中。

进一步地,所述操作系统内核将所述第二网包作为所述新增的网包并通过mmap方法将所述新增的网包映射到共享内存中,具体包括:所述操作系统内核将所述第二网包作为所述新增的网包复制到自身的内存中,将自身内存中的新增的网包通过mmap方法映射到共享内存中。

本发明实施例提供的用于网络或应用性能管理的流量采集方法,通过设置操作系统内核将新增的网包通过mmap方法映射到共享内存中,能够在流量采集方法的过程中只是进行一次复制的操作,即将新增的网包复制进操作系统内核,而无需从内核再次复制新增的网包以实现抓取,解决了现有技术中由于存在两次复制而导致的cpu开销较大的问题,能够降低cpu消耗。

基于上述实施例,所述步骤s101,即所述采集单元通过调用操作系统内核的抓包套接字接口,在共享内存中对目标虚拟网卡进行网包监控,进一步包括:所述采集单元通过调用所述操作系统内核的抓包套接字接口,将虚拟服务器中的任一虚拟网卡设置为目标虚拟网卡,并在共享内存中对所述目标虚拟网卡进行网包监控。

本实施例是指,所述用于网络或应用性能管理的流量采集方法,可以指定任一虚拟服务器中的虚拟网卡,对其进行网包的采集。

基于上述实施例,所述若所述采集单元检测到所述共享内存中存在新增的网包,则采集所述新增的网包,完成流量采集,之前还包括:所述采集单元通过调用所述操作系统内核的抓包套接字接口,向所述操作系统内核申请所述共享内存。

具体地,所述采集单元通过调用所述操作系统内核的抓包套接字接口,向所述操作系统内核申请所述共享内存,是指:所述采集单元通过调用所述操作系统内核的抓包套接字接口,向所述操作系统内核申请与所述操作系统内核共用的所述共享内存。

基于上述实施例,所述步骤s102,即所述若所述采集单元检测到所述共享内存中存在新增的网包,则采集所述新增的网包,完成流量采集,之后还包括:所述采集单元将所述新增的网包发送至后端分析工具,以使得所述后端分析工具通过接收并分析所述新增的网包进行网络性能管理或应用性能管理。

具体地,所述后端分析工具包括后端网络性能管理分析工具,用于接收并分析所述新增的网包进行网络性能管理。所述后端分析工具还包括后端应用性能管理分析工具,用于接收并分析所述新增的网包进行应用性能管理。

基于上述实施例,所述采集单元为运行于虚拟服务器上的用户态进程。

具体地,用户态(usermode)在计算机结构指两项类似的概念。在cpu的设计中,用户态指非特权状态。在此状态下,执行的代码被硬件限定,不能进行某些操作,比如写入其他进程的存储空间,以防止给操作系统带来安全隐患。在操作系统的设计中,用户态也类似,指非特权的执行状态。内核禁止此状态下的代码进行潜在危险的操作,比如写入系统配置文件、杀掉其他用户的进程、重启系统等。

基于上述实施例,所述目标虚拟网卡接收到所述目标虚拟机发送的第一网包,所述操作系统内核将所述第一网包作为所述新增的网包并通过mmap方法将所述新增的网包映射到共享内存中;或者,所述目标虚拟网卡接收到发送给所述目标虚拟机的第二网包,所述操作系统内核将所述第二网包作为所述新增的网包并通过mmap方法将所述新增的网包映射到共享内存中,具体包括:所述目标虚拟网卡接收到所述目标虚拟机发送的第一网包,所述操作系统内核将所述第一网包作为所述新增的网包并通过mmap方法将所述新增的网包以用户态形式映射到共享内存中;或者,所述目标虚拟网卡接收到发送给所述目标虚拟机的第二网包,所述操作系统内核将所述第二网包作为所述新增的网包并通过mmap方法将所述新增的网包以用户态形式映射到共享内存中。

所述操作系统内核将所述第一网包作为所述新增的网包并通过mmap方法将所述新增的网包以用户态形式映射到共享内存中,是指,映射到共享内存中的新增的网包是用户态的形式。

基于同样的道理,所述操作系统内核将所述第二网包作为所述新增的网包并通过mmap方法将所述新增的网包以用户态形式映射到共享内存中,是指,映射到共享内存中的新增的网包是用户态的形式。

基于上述实施例,所述采集单元通过调用操作系统内核的抓包套接字接口,在共享内存中对目标虚拟网卡进行网包监控,具体包括:所述用户态进程通过调用操作系统内核的af_packet接口,在共享内存中对目标虚拟网卡进行网包监控。

作为一个优选地实施例,用于网络或应用性能管理的流量采集方法包括:

首先,所述采集单元通过调用所述操作系统内核的抓包套接字接口,向所述操作系统内核申请所述共享内存。

其次,所述采集单元通过调用所述操作系统内核的抓包套接字接口,将虚拟服务器中的任一虚拟网卡设置为目标虚拟网卡,并在共享内存中对所述目标虚拟网卡进行网包监控。

再次,所述目标虚拟网卡接收到所述目标虚拟机发送的第一网包,所述操作系统内核将所述第一网包作为所述新增的网包并通过mmap方法将所述新增的网包映射到共享内存中;或者,所述目标虚拟网卡接收到发送给所述目标虚拟机的第二网包,所述操作系统内核将所述第二网包作为所述新增的网包并通过mmap方法将所述新增的网包映射到共享内存中。

然后,所述采集单元检测到所述共享内存中存在新增的网包,采集所述新增的网包,完成流量采集。

最后,所述采集单元将所述新增的网包发送至后端分析工具,以使得所述后端分析工具通过接收并分析所述新增的网包进行网络性能管理或应用性能管理。

下面以一个具体的实例来说明本发明实施例中提出的用于网络或应用性能管理的流量采集方法:

首先,作为采集单元的用户态进程通过调用linux操作系统内核的af_packet接口,向所述linux操作系统内核申请共享内存m,m由n块大小为s的内存组成。

其次,作为采集单元的用户态进程通过调用linux操作系统内核的af_packet接口,将虚拟服务器中的虚拟网卡nic_a设置为目标虚拟网卡,并在m中对nic_a进行网包监控。

再次,nic_a接收到所述目标虚拟机a发送的第一网包,所述linux操作系统内核将所述第一网包作为所述新增的网包并通过mmap方法将所述新增的网包映射到m中;或者,nic_a接收到发送给a的第二网包,所述linux操作系统内核将所述第二网包作为所述新增的网包并通过mmap方法将所述新增的网包映射到m中。

然后,作为采集单元的用户态进程检测到m中存在新增的网包,采集所述新增的网包,完成流量采集。

最后,作为采集单元的用户态进程将新增的网包发送至后端分析工具,以使得所述后端分析工具通过接收并分析所述新增的网包进行网络性能管理或应用性能管理。

本实例采集了350kpps的流量,消耗cpu为1核的19%。

通过该实例,以及进行在服务器上通过tcpdump工具从系统内核中采集网包的实例,可以得知本发明实施例中提出的用于网络或应用性能管理的流量采集方法相较于现有技术中的在服务器上通过tcpdump工具从系统内核中采集网包的方法,降低了77%的cpu消耗。

基于上述实施例,图2为本发明实施例中的用于网络或应用性能管理的流量采集设备的框架示意图。请参考图2,本发明实施例提供一种用于网络或应用性能管理的流量采集设备,包括:处理器(processor)210、通信接口(communicationsinterface)220、存储器(memory)230和总线240,其中,处理器210,通信接口220,存储器230通过总线240完成相互间的通信。处理器210可以调用存储器230中的逻辑指令,以执行如下方法,包括:采集单元通过调用操作系统内核的抓包套接字接口,在共享内存中对目标虚拟网卡进行网包监控;若所述采集单元检测到所述共享内存中存在新增的网包,则采集所述新增的网包,完成流量采集;其中,所述共享内存为采集单元和操作系统内核共用的内存,所述新增的网包为所述目标虚拟网卡对应的目标虚拟机发送或接收的网包。

本发明实施例公开一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的流量采集方法,例如包括:采集单元通过调用操作系统内核的抓包套接字接口,在共享内存中对目标虚拟网卡进行网包监控;若所述采集单元检测到所述共享内存中存在新增的网包,则采集所述新增的网包,完成流量采集;其中,所述共享内存为采集单元和操作系统内核共用的内存,所述新增的网包为所述目标虚拟网卡对应的目标虚拟机发送或接收的网包。

基于上述实施例,本发明实施例提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行上述各方法实施例所提供的流量采集方法,例如包括:采集单元通过调用操作系统内核的抓包套接字接口,在共享内存中对目标虚拟网卡进行网包监控;若所述采集单元检测到所述共享内存中存在新增的网包,则采集所述新增的网包,完成流量采集;其中,所述共享内存为采集单元和操作系统内核共用的内存,所述新增的网包为所述目标虚拟网卡对应的目标虚拟机发送或接收的网包。

本领域普通技术人员可以理解:实现上述设备实施例或方法实施例仅仅是示意性的,其中所述处理器和所述存储器可以是物理上分离的部件也可以不是物理上分离的,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如u盘、移动硬盘、rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。

本发明实施例提供的用于网络或应用性能管理的流量采集方法,通过设置采集单元在共享内存中对目标虚拟网卡进行网包监控,若检测到存在新增的网包,则采集新增的网包,能够进行高效地流量采集,为后端分析工具提供可靠的数据源,能够在无需对虚拟机进行变更的前提下完全采集互访的流量。通过设置操作系统内核将新增的网包通过mmap方法映射到共享内存中,能够在流量采集方法的过程中只是进行一次复制的操作,即将新增的网包复制进操作系统内核,而无需从内核再次复制新增的网包以实现抓取,解决了现有技术中由于存在两次复制而导致的cpu开销较大的问题,能够降低cpu消耗。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1