一种虚拟网卡报文抓取的方法及系统与流程

文档序号:12037758阅读:967来源:国知局
一种虚拟网卡报文抓取的方法及系统与流程

本发明涉及网络通信技术领域,尤其涉及一种虚拟网卡报文抓取的方法;本发明还涉及一种虚拟网卡报文抓取的系统。



背景技术:

当前,随着网络通信技术的发展,有越来越多的业务是在由虚拟机构成的网络上所运行的,例如云计算,当前云计算业务通常是在由虚拟机构成的网络上所运行。

但是现在虚拟机网络性能受限于漫长的报文发送和接收时间,由于会经常性的出现报文中断,前后报文的切换,用户态内核态数据拷贝等,虚拟机网络的性能比较低下。为了提高虚拟机网络的性能,现在通常是采用数据平面开发套件与虚拟交换机相结合的方式来提升虚拟机网络的性能,即虚拟机网络中各个虚拟机通过数据平面开发套件的虚拟网卡连接虚拟交换机,并通过虚拟交换机与其他终端进行通讯等等。

当时在现有技术中,无法对数据平面开发套件的虚拟网卡的报文进行抓取,即无法直接抓取该种虚拟网卡的流量,这样就无法对该虚拟机进行流量监控与分析等。



技术实现要素:

有鉴于此,本发明的主要目的在于提供一种基于数据平面开发套件的虚拟网卡报文抓取的方法,可以抓取该种虚拟网卡的报文;本发明的另一目的在于提供一种基于数据平面开发套件的虚拟网卡报文抓取的系统,同样可以抓取该种虚拟网卡的报文。

为了解决上述技术问题,本发明提供了一种基于数据平面开发套件的虚拟网卡报文抓取的方法,所述方法包括:

虚拟交换机将数据平面开发套件的虚拟网卡的报文通过所述虚拟交换机的流量镜像模块复制到虚拟网络接口;

所述虚拟网络接口将所述报文从所述虚拟交换机发送至linux主机;

所述linux主机从所述虚拟网络接口抓取所述报文。

可选的,所述linux主机从所述虚拟网络接口抓取所述报文包括:

所述linux主机通过tcpdump模块从所述虚拟网络接口抓取所述报文。

可选的,所述虚拟网络接口将所述报文从所述虚拟交换机发送至linux主机包括:

所述虚拟网络接口将所述报文从所述虚拟交换机的网桥发送至所述linux主机,所述网桥用于将所述报文从所述虚拟网卡发送至网卡。

本发明还提供了一种基于数据平面开发套件的虚拟网卡报文抓取的系统,所述系统包括虚拟机、数据平面开发套件的虚拟网卡、虚拟交换机、虚拟网络接口、linux主机;

所述虚拟机通过所述数据平面开发套件的虚拟网卡连接所述虚拟交换机;

所述虚拟交换机通过流量镜像模块将所述数据平面开发套件的虚拟网卡的报文复制到所述虚拟网络接口;

所述虚拟网络接口连接所述虚拟交换机与所述linux主机,以便所述linux主机从所述虚拟网络接口抓取所述报文。

可选的,所述linux主机从所述虚拟网络接口抓取所述报文具体为:

所述linux主机通过tcpdump模块从所述虚拟网络接口抓取所述报文。

可选的,所述虚拟网络接口连接所述虚拟交换机的网桥与所述linux主机,所述网桥连接所述虚拟网卡与网卡。

可选的,所述网卡为物理网卡,用于连接物理终端。

本发明所提供的方法,先将数据平面开发套件的虚拟网卡的报文通过虚拟交换机的流量镜像模块复制到虚拟网络接口,由于虚拟网络接口连接linux主机,流经虚拟网络接口的报文会经过linux内核协议栈,此时可以对该报文进行抓取,由于被抓取的报文是虚拟网卡的镜像报文,其内容相同,所以抓取虚拟网络接口的报文相当于抓取虚拟网卡的报文。本发明还提供了一种应用上述方法的虚拟网卡报文抓取系统,同样具有上述有益效果,在此不再赘述。

附图说明

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

图1为本发明实施例所提供的一种虚拟网卡报文抓取方法的流程图;

图2为本发明实施例提供的一种虚拟网卡报文抓取系统的结构框图。

具体实施方式

本发明的核心是提供一种基于数据平面开发套件的虚拟网卡报文抓取的方法,在现有技术中,为了提高虚拟机网络的性能,通常选择使用数据平面开发套件与虚拟交换机相结合的方式来提升虚拟机网络的性能,因为数据平面开发套件可以极大的提高数据处理性能和吞吐量,提高虚拟机网络的工作效率。但是在现有技术中,由于数据平面开发套件的虚拟网卡会将报文直接发送给其他网卡而不经过linux主机,即数据平面开发套件的虚拟网卡的流量不会经过linux内核协议栈。此时无法对该虚拟网卡所产生的报文进行抓取,这样就无法对该虚拟机进行流量监控与分析等。

而本发明所提供的虚拟网卡报文抓取的方法,先将数据平面开发套件的虚拟网卡的报文通过虚拟交换机的流量镜像模块复制到虚拟网络接口,由于虚拟网络接口连接linux主机,流经虚拟网络接口的报文会经过linux内核协议栈,此时可以对该报文进行抓取,由于被抓取的报文是虚拟网卡的镜像报文,其内容相同,所以抓取虚拟网络接口的报文相当于抓取虚拟网卡的报文。

为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

请参考图1,图1为本发明实施例所提供的一种虚拟网卡报文抓取方法的流程图,该方法包括:

s101:虚拟交换机将数据平面开发套件的虚拟网卡的报文通过所述虚拟交换机的流量镜像模块复制到虚拟网络接口。

在本步骤中,数据平面开发套件的虚拟网卡是虚拟机与虚拟交换机的接口,同时也是虚拟机与外界传输介质之间的接口。所述虚拟网卡除了可以传输虚拟机向其他主机发送的数据,还可以接收虚拟机收到其他主机发送的数据,即涉及数据的发送与接收,还可以对数据进行封装与拆封、对数据进行编码与解码等等,其具体功能在此不做具体限定。

数据平面开发套件主要基于linux系统运行,用于快速对数据包处理,可以极大的提高数据处理性能和吞吐量。当数据平面开发套件的虚拟网卡在收到数据包时,不会通过中断通知中央处理器,而是直接将数据包存入内存,交付应用层软件通过数据平面开发套件提供的接口来直接处理。换句话说,数据平面开发套件的虚拟网卡的报文不会经过linux内核协议栈。

在本步骤中,所述报文是网络交换与传输的数据单元,即一次传输中要发送的数据块。报文除了包括将要发送的完整的数据信息,还可以包括在数据封装过程中添加的信息段,该信息段可以是该数据包的密码等等。

所述流量镜像模块是虚拟交换机的一个应用模块,可以提供流量镜像功能,该功能可以将流经连接虚拟交换机的网卡的报文复制到连接该虚拟交换机的网络接口。上述网卡可以是虚拟网卡,也可以是物理网卡;同样网络接口可以是虚拟网络接口,也可以是物理网络接口,在此不做具体限定。

s102:所述虚拟网络接口将所述报文从所述虚拟交换机发送至linux主机。

在本步骤中,虚拟网络接口其实是由linux主机虚通过软件虚拟的一个虚拟网络接口,及该虚拟网络接口是linux主机自己的网络接口,流经所述虚拟网络接口的报文会流经linux内核协议栈。

在本步骤中,虚拟网络接口的作用连接虚拟交换机与linux主机,更具体的,该虚拟网络接口可以连接在所述虚拟交换机的网桥上,而虚拟交换机中可以是由网桥连接各个网络的网卡。当然,在虚拟交换机中可以由多个网桥来连接多个网卡,此时想要获取某个具体的数据平面开发套件的虚拟网卡的报文,就需要将虚拟网络接口连接在与该数据平面开发套件的虚拟网卡连接的网桥上。

s103:所述linux主机从所述虚拟网络接口抓取所述报文。

由于数据平面开发套件的虚拟网卡的报文会被复制到虚拟网络接口,而该被复制的报文会通过虚拟网络接口流经linux内核协议栈。在本步骤中,可以通过linux主机从所述虚拟网络接口抓取所述报文,这样就可以对连接该数据平面开发套件的虚拟网卡的虚拟机进行流量监控与分析等。

更具体的,linux主机可以通过tcpdump模块从所述虚拟网络接口抓取所述报文。上述tcpdump模块是linux主机的一个应用模块,该模块是linux主机中强大的网络数据采集工具之一,该模块可以根据使用者的定义对网络上的数据包进行截获。而通常情况在,在使用linux主机作为服务器时,通常是使用tcpdump模块抓取报文,当然在本发明实施例中,还可以通过其他模块对流经虚拟网络接口的报文进行抓取,在此不做具体限定,视具体的情况而定。

本发明实施例所提供的一种虚拟网卡报文抓取的方法,可以先将数据平面开发套件的虚拟网卡的报文通过虚拟交换机的流量镜像模块复制到虚拟网络接口,由于虚拟网络接口连接linux主机,流经虚拟网络接口的报文会经过linux内核协议栈,此时可以对该报文进行抓取,由于被抓取的报文是虚拟网卡的镜像报文,其内容相同,所以抓取虚拟网络接口的报文相当于抓取虚拟网卡的报文。

下面对本发明实施例提供的一种基于数据平面开发套件的虚拟网卡报文抓取的系统进行介绍,下文描述的虚拟网卡的报文抓取系统与上文描述的虚拟网卡的报文抓取方法可相互对应参照。

请参考图2,图2为本发明实施例提供的一种虚拟网卡报文抓取系统的结构框图。

参照图2,虚拟网卡报文抓取系统可以包括虚拟机100、数据平面开发套件的虚拟网卡200、虚拟交换机300、虚拟网络接口400、linux主机500;

所述虚拟机100通过所述数据平面开发套件的虚拟网卡200连接所述虚拟交换机300。

在本发明实施例中,,数据平面开发套件的虚拟网卡200是虚拟机100与虚拟交换机300的接口,同时也是虚拟机100与外界传输介质之间的接口。所述虚拟网卡200除了可以传输虚拟机100向其他主机发送的数据,还可以接收虚拟机100收到其他主机发送的数据,即该虚拟网卡200涉及数据的发送与接收,还可以对数据进行封装与拆封、对数据进行编码与解码等等,其具体功能在此不做具体限定。

数据平面开发套件主要基于linux系统运行,用于快速对数据包处理,可以极大的提高数据处理性能和吞吐量。当数据平面开发套件的虚拟网卡200在收到数据包时,不会通过中断通知中央处理器,而是直接将数据包存入内存,交付应用层软件通过数据平面开发套件提供的接口来直接处理。换句话说,数据平面开发套件的虚拟网卡200的报文不会经过linux内核协议栈。

所述报文是网络交换与传输的数据单元,即一次传输中要发送的数据块。报文除了包括将要发送的完整的数据信息,还可以包括在数据封装过程中添加的信息段,该信息段可以是该数据包的密码等。

所述虚拟交换机300通过流量镜像模块将所述数据平面开发套件的虚拟网卡200的报文复制到所述虚拟网络接口400。

在本系统中,所述流量镜像模块是虚拟交换机300的一个应用模块,可以提供流量镜像功能,该功能可以将流经连接虚拟交换机300的网卡的报文复制到连接该虚拟交换机300的网络接口。上述网卡可以是虚拟网卡,也可以是物理网卡;同样网络接口可以是虚拟网络接口,也可以是物理网络接口,在此不做具体限定。

虚拟交换机300中的网桥除了连接数据平面开发套件的虚拟网卡200,还可以连接一个物理网卡600,该物理网卡600可以连接一个物理终端700,以实现连接虚拟网卡200的虚拟机100与该物理终端700之间的通讯。

所述虚拟网络接口400连接所述虚拟交换机300与所述linux主机500,以便所述linux主机500从所述虚拟网络接口400抓取所述报文。

在本系统中,虚拟网络接口400的作用连接虚拟交换机300与linux主机500,更具体的,该虚拟网络接口400可以连接在所述虚拟交换机300的网桥上,而虚拟交换机300中可以是由网桥连接各个网络的网卡。当然,在虚拟交换机300中可以由多个网桥来连接多个网卡,此时想要获取某个具体的数据平面开发套件的虚拟网卡200的报文,就需要将虚拟网络接口400连接在与该数据平面开发套件的虚拟网卡200连接的网桥上。

由于数据平面开发套件的虚拟网卡200的报文会被复制到虚拟网络接口400,而该被复制的报文会通过虚拟网络接口400流经linux内核协议栈。在系统中,可以通过linux主机500从所述虚拟网络接口400抓取所述报文,这样就可以对连接该数据平面开发套件的虚拟网卡200的虚拟机100进行流量监控与分析等。

更具体的,linux主机500可以通过tcpdump模块从所述虚拟网络接口400抓取所述报文。上述tcpdump模块是linux主机500的一个应用模块,该模块是linux主机500中强大的网络数据采集工具之一,该模块可以根据使用者的定义对网络上的数据包进行截获。而通常情况在,在使用linux主机500作为服务器时,通常是使用tcpdump模块抓取报文,当然在本发明实施例中,还可以通过其他模块对流经虚拟网络接口400的报文进行抓取,在此不做具体限定,视具体的情况而定。

本发明实施例所提供的一种虚拟网卡200报文抓取的系统,可以先将数据平面开发套件的虚拟网卡200的报文通过虚拟交换机300的流量镜像模块复制到虚拟网络接口400,由于虚拟网络接口400连接linux主机500,流经虚拟网络接口400的报文会经过linux内核协议栈,此时可以对该报文进行抓取,由于被抓取的报文是虚拟网卡200的镜像报文,其内容相同,所以抓取虚拟网络接口400的报文相当于抓取虚拟网卡200的报文。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的系统而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

以上对本发明所提供的一种基于数据平面开发套件的虚拟网卡报文抓取的方法以及系统进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

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