本申请涉及信息技术领域,尤其涉及一种基于隧道技术实现虚拟机流量镜像的技术。
背景技术:
传统的流量镜像技术通常是基于硬件交换机的端口镜像来实现,配置麻烦,使用场景不灵活,很难对云平台上的海量虚拟机同时进行有针对性的流量监控。目前私有云平台的流量镜像基本都是基于ovs(openvswitch,虚拟交换机)实现的,依赖ovs的流表来做引流或者端口镜像,该方案不适合非ovs私有云平台的需求。具体来说,该方案有以下缺点:(1)基于硬件交换机实现的端口镜像,配置在物理交换机上面,依赖于硬件的支持使用场景不够灵活,无法针对云平台东西向流量做镜像;(2)基于ovs实现的openstack端口镜像,依赖于ovs交换机,在不能满足ovs的情况下无法完成流量镜像。
技术实现要素:
本申请的一个目的是提供一种基于隧道技术实现虚拟机流量镜像的方法与设备。
根据本申请的一个方面,提供了一种基于隧道技术实现虚拟机流量镜像的方法,其中,所述方法包括:
在源物理机的虚拟交换机上配置流量控制规则,将数据流量中的目标数据包复制到源端口的镜像端口中,其中,所述源端口是所述源物理机上运行的虚拟机的端口;
通过隧道网络将所述目标数据包从所述源端口的镜像端口发送到目的物理机;
利用所述目的物理机上的虚拟交换机,将所述目标数据包转发到目的端口,其中,所述目的端口是所述目的物理机上运行的虚拟机的端口。
根据本申请的另一个方面,还提供了一种基于隧道技术实现虚拟机流量镜像的设备,其中,所述设备包括:
第一模块,用于在源物理机的虚拟交换机上配置流量控制规则,将数据流量中的目标数据包复制到源端口的镜像端口中,其中,所述源端口是所述源物理机上运行的虚拟机的端口;
第二模块,用于通过隧道网络将所述目标数据包从所述源端口的镜像端口发送到目的物理机;
第三模块,用于利用所述目的物理机上的虚拟交换机,将所述目标数据包转发到目的端口,其中,所述目的端口是所述目的物理机上运行的虚拟机的端口。
根据本申请的又一个方面,还提供了一种计算设备,其中,该设备包括用于存储计算机程序指令的存储器和用于执行计算机程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发所述设备执行所述的基于隧道技术实现虚拟机流量镜像的方法。
根据本申请的又一个方面,还提供了一种计算机可读介质,其上存储有计算机程序指令,所述计算机可读指令可被处理器执行以实现所述的基于隧道技术实现虚拟机流量镜像的方法。
本申请提供的方案中,先在源物理机的虚拟交换机上配置流量控制规则,将数据流量中的目标数据包复制到源端口的镜像端口中,然后通过隧道网络将所述目标数据包从所述源端口的镜像端口发送到目的物理机,利用所述目的物理机上的虚拟交换机,将所述目标数据包转发到目的端口,从而实现虚拟机流量镜像。与现有技术相比,本申请基于隧道技术以及linux原生的流量控制(trafficcontrol)、虚拟交换机(linuxbridge)技术,减少第三方依赖,简单高效便于应用,能够灵活地适配多种使用场景,便于用户进行流量观测分析。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其他特征、目的和优点将会变得更明显:
图1是根据本申请实施例的一种基于隧道技术实现虚拟机流量镜像的方法流程图;
图2是根据本申请实施例的一种基于隧道技术实现端口镜像的工作流程图;
图3是根据本申请实施例的一种基于隧道技术实现虚拟机流量镜像的设备示意图。
附图中相同或相似的附图标记代表相同或相似的部件。
具体实施方式
下面结合附图对本申请作进一步详细描述。
在本申请一个典型的配置中,终端、服务网络的设备和可信方均包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flashram)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体,可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的装置或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。
本申请实施例提供了基于隧道技术在云平台中实现虚拟机流量镜像的方法,其中,流量镜像是指在不影响原有业务的情况下,将网络中当前节点(例如所述源端口)通过的报文复制一份到指定的观测端口(例如所述目的端口)。用户可以根据需要定义被镜像的端口(例如所述源端口),然后将报文分析设备与观测端口(例如所述目的端口)相连,进行流量观测分析。
该方法基于私有云常用的隧道技术,并且结合了linux原生的流量控制(trafficcontrol)以及虚拟交换机(linuxbridge)技术,不存在第三方依赖,简单高效便于应用。具体地,该方法的基本原理包括:在linux内核包转发时进行重定向(引流)或者复制(镜像);其中,流量重定向(引流)是指改变流量的方向,比如,原本是从云主机a到云主机b的流量,通过流量重定向(引流)后可以把从云主机a的流量重定向(引流)到云主机c,这样云主机c就能收到云主机a的流量,但是云主机b就收不到从云主机a发送的流量;流量复制(镜像)是指复制一份相同的流量到其他云主机,比如,原本是从云主机a到云主机b的流量,通过流量复制(镜像)可以把从云主机a的流量复制(镜像)到云主机c,这样云主机b和云主机c可以同时收到从云主机a发送的流量。
在实际场景中,执行该方法的设备可以是用户设备、网络设备或者用户设备与网络设备通过网络相集成所构成的设备。其中,所述用户设备包括但不限于智能手机、平板电脑、个人计算机(pc)等终端设备,所述网络设备包括但不限于网络主机、单个网络服务器、多个网络服务器集或基于云计算的计算机集合等实现。在此,云由基于云计算(cloudcomputing)的大量主机或网络服务器构成,其中,云计算是分布式计算的一种,由一群松散耦合的计算机集组成的一个虚拟计算机。
图1是根据本申请实施例的一种基于隧道技术实现虚拟机流量镜像的方法流程图,该方法包括步骤s101、步骤s102和步骤s103。
步骤s101,在源物理机的虚拟交换机(linuxbridge)上配置流量控制(trafficcontrol)规则,将数据流量中的目标数据包复制到源端口的镜像端口中,其中,所述源端口是所述源物理机上运行的虚拟机的端口。
其中,linuxbridge是虚拟交换机,用于连接虚拟机和容器。linux操作系统中的流量控制器(trafficcontrol)用于linux内核的流量控制,主要是通过在输出端口处建立一个队列来实现流量控制。
例如,如图2所示,host1、host2分别是源端口、目的端口所在的物理机,其中,host1是所述源物理机,host2是所述目的物理机;vm1、vm2分别是运行在host1、host2上的虚拟机,bond0、bond1是将多个物理网卡捆绑而成的虚拟网卡;图2所示的vnic47.0是所述源端口,vnic25.0是所述目的端口,rec_vnic47.0、rec_vnic25.0分别是所述源端口、所述目的端口的镜像端口。在所述步骤s101中,在源端口vnic47.0连接的bridge上配置trafficcontrol规则,将数据流量中的目标数据包复制到镜像端口rec_vnic47.0中。
在一些实施例中,所述目标数据包是所述源物理机的虚拟交换机数据流量中符合预定规则的数据包。所述预定规则包括以下至少任一项:所述目标数据包符合预定的报文类型;所述目标数据包符合预定的ip地址分类规则。
例如,所述预定规则可以是根据报文类型筛选数据流量,也可以是根据ip地址分类筛选数据流量,也可以根据其他的网络流量的分类规则进行筛选,还可以结合多种分类规则进行筛选。在一个实施例中,如果按照镜像流量的报文类型分类,可以只镜像tcp类型的包,不处理其他类型的包。
在一些实施例中,所述源端口的数量为一个或多个,所述目的端口的数量为一个或多个。例如,用户可以根据需要定义被镜像的端口(例如所述源端口),然后将报文分析设备与观测端口(例如所述目的端口)相连,进行流量观测分析。如果所述源端口和所述目的端口的数量均为多个,根据本申请实施例可以将指定的海量云主机群上的网络报文镜像或者导流到特定的观测设备集群。
步骤s102,通过隧道网络将所述目标数据包从所述源端口的镜像端口发送到目的物理机。
例如,如图2所示,将所述目标数据包从镜像端口rec_vnic47.0,通过隧道网络发送到目的物理机host2。其中,镜像端口rec_vnic47.0是为了做网络镜像而创建的中间网络虚拟设备。所述隧道网络可以基于gre(genericroutingencapsulation,通用路由封装协议)来实现,gre隧道网络可用于接收源端口vnic47.0流量的入口监控设备。
在一些实施例中,所述方法还包括:分别在所述源物理机和所述目的物理机上创建gre隧道口,配置所述隧道网络。
例如,在所述步骤s102之前,先配置所述隧道网络;结合图2所示,可以采用如下的方式配置所述隧道网络:
(1)在源物理机host1上创建gre隧道口rec_vnic47.0:
ipaddadd169.254.100.143/24devbond1
iplinkaddrec_vnic47.0typegretapremote169.254.100.150local169.254.100.143ttl255key1
iplinksetrec_vnic47.0up
(2)在目的物理机host2上创建gre隧道口rec_vnic25.0:
ipaddadd169.254.100.143/24devbond1
iplinkaddrec_vnic25.0typegretapremote169.254.100.143local169.254.100.150ttl255key1
iplinksetrec_vnic25.0up
步骤s103,利用所述目的物理机上的虚拟交换机(linuxbridge),将所述目标数据包转发到目的端口,其中,所述目的端口是所述目的物理机上运行的虚拟机的端口。
例如,如图2所示,利用目的物理机host2上的bridge,将所述目标数据包转发到目的端口vnic25.0上。
在一些实施例中,所述方法还包括:在所述目的物理机上创建流量监控用网桥,并将所述目的端口以及所述目的端口的镜像端口桥接在所述流量监控用网桥上。
例如,结合图2所示,在目的物理机host2上创建流量监控用网桥,并将目的端口vnic25.0、镜像端口rec_vnic25.0桥接在其上,具体实现方式如下:
iplinkaddbr_monitortypebridge
iplinksetdevbr_monitorup
iplinksetdevvnic25.0masterbr_monitor
iplinksetdevrec_vnic25.0masterbr_monitor
在一些实施例中,所述步骤s103包括:利用所述目的物理机上的虚拟交换机,通过所述流量监控用网桥将所述目标数据包转发到目的端口。
图3是根据本申请实施例的一种基于隧道技术实现虚拟机流量镜像的设备示意图,该设备包括第一模块301、第二模块302和第三模块303。
第一模块301,在源物理机的虚拟交换机(linuxbridge)上配置流量控制(trafficcontrol)规则,将数据流量中的目标数据包复制到源端口的镜像端口中,其中,所述源端口是所述源物理机上运行的虚拟机的端口。
其中,linuxbridge是虚拟交换机,用于连接虚拟机和容器。linux操作系统中的流量控制器(trafficcontrol)用于linux内核的流量控制,主要是通过在输出端口处建立一个队列来实现流量控制。
例如,如图2所示,host1、host2分别是源端口、目的端口所在的物理机,其中,host1是所述源物理机,host2是所述目的物理机;vm1、vm2分别是运行在host1、host2上的虚拟机,bond0、bond1是将多个物理网卡捆绑而成的虚拟网卡;图2所示的vnic47.0是所述源端口,vnic25.0是所述目的端口,rec_vnic47.0、rec_vnic25.0分别是所述源端口、所述目的端口的镜像端口。所述第一模块301在源端口vnic47.0连接的bridge上配置trafficcontrol规则,将数据流量中的目标数据包复制到镜像端口rec_vnic47.0中。
在一些实施例中,所述目标数据包是所述源物理机的虚拟交换机数据流量中符合预定规则的数据包。所述预定规则包括以下至少任一项:所述目标数据包符合预定的报文类型;所述目标数据包符合预定的ip地址分类规则。
例如,所述预定规则可以是根据报文类型筛选数据流量,也可以是根据ip地址分类筛选数据流量,也可以根据其他的网络流量的分类规则进行筛选,还可以结合多种分类规则进行筛选。在一个实施例中,如果按照镜像流量的报文类型分类,可以只镜像tcp类型的包,不处理其他类型的包。
在一些实施例中,所述源端口的数量为一个或多个,所述目的端口的数量为一个或多个。例如,用户可以根据需要定义被镜像的端口(例如所述源端口),然后将报文分析设备与观测端口(例如所述目的端口)相连,进行流量观测分析。如果所述源端口和所述目的端口的数量均为多个,根据本申请实施例可以将指定的海量云主机群上的网络报文镜像或者导流到特定的观测设备集群。
第二模块302,通过隧道网络将所述目标数据包从所述源端口的镜像端口发送到目的物理机。
例如,如图2所示,将所述目标数据包从镜像端口rec_vnic47.0,通过隧道网络发送到目的物理机host2。其中,镜像端口rec_vnic47.0是为了做网络镜像而创建的中间网络虚拟设备。所述隧道网络可以基于gre(genericroutingencapsulation,通用路由封装协议)来实现,gre隧道网络可用于接收源端口vnic47.0流量的入口监控设备。
在一些实施例中,图3所示的设备还用于:分别在所述源物理机和所述目的物理机上创建gre隧道口,配置所述隧道网络。
例如,在执行所述第二模块302之前,先配置所述隧道网络;结合图2所示,可以采用如下的方式配置所述隧道网络:
(1)在源物理机host1上创建gre隧道口rec_vnic47.0:
ipaddadd169.254.100.143/24devbond1
iplinkaddrec_vnic47.0typegretapremote169.254.100.150local169.254.100.143ttl255key1
iplinksetrec_vnic47.0up
(2)在目的物理机host2上创建gre隧道口rec_vnic25.0:
ipaddadd169.254.100.143/24devbond1
iplinkaddrec_vnic25.0typegretapremote169.254.100.143local169.254.100.150ttl255key1
iplinksetrec_vnic25.0up
第三模块303,利用所述目的物理机上的虚拟交换机(linuxbridge),将所述目标数据包转发到目的端口,其中,所述目的端口是所述目的物理机上运行的虚拟机的端口。
例如,如图2所示,利用目的物理机host2上的bridge,将所述目标数据包转发到目的端口vnic25.0上。
在一些实施例中,图3所示的设备还用于:在所述目的物理机上创建流量监控用网桥,并将所述目的端口以及所述目的端口的镜像端口桥接在所述流量监控用网桥上。
例如,结合图2所示,在目的物理机host2上创建流量监控用网桥,并将目的端口vnic25.0、镜像端口rec_vnic25.0桥接在其上,具体实现方式如下:
iplinkaddbr_monitortypebridge
iplinksetdevbr_monitorup
iplinksetdevvnic25.0masterbr_monitor
iplinksetdevrec_vnic25.0masterbr_monitor
在一些实施例中,所述第三模块303利用所述目的物理机上的虚拟交换机,通过所述流量监控用网桥将所述目标数据包转发到目的端口。
结合图2所示,根据本申请实施例,针对源物理机host1上运行的虚拟机vm1只需配置一条trafficcontrol规则,目的物理机host2上只需配置一条bridge的转发规则,简单高效便于应用。在海量的虚拟机(云主机)上,可以通过脚本大规模配置执行,在不影响原有业务的情况下,实现虚拟机(云主机)流量镜像。在云主机日常运维过程中,如果发现某个云主机网络异常(如网络不通、网络流量异常增大等),可以通过qos限制云主机的某个方向(如网络接收方向、发送方向)的网络带宽,或者限制某个ip的网络带宽,然后配置流量镜像来观测这些流量里是否有异常,从而找到原因,解决运维问题。
综上所述,本申请实施例基于隧道技术以及linux原生的流量控制(trafficcontrol)、虚拟交换机(linuxbridge)技术,可以通过最少依赖的形式实现私有云平台的虚拟机流量控制以及端口镜像。
由于本申请实施例是从linux内核层实现数据包的转发以及流量控制,与传统的ovs实现方案相比,本方案更简单、转发效率更高,能够灵活多变的适用于云平台内部任意方向的云主机做流量带宽的限制,便于用户进行流量观测分析。
由于本申请实施例镜像的流量走独立的流量隧道网络,该隧道网络是创建在独立的网卡上面,所以其导出流量的过程相对于虚拟机的原有业务网络是独立的,虚拟机的网络带宽基本不受任何影响。
另外,本申请的一部分可被应用为计算机程序产品,例如计算机程序指令,当其被计算机执行时,通过该计算机的操作,可以调用或提供根据本申请的方法和/或技术方案。而调用本申请的方法的程序指令,可能被存储在固定的或可移动的记录介质中,和/或通过广播或其他信号承载媒体中的数据流而被传输,和/或被存储在根据程序指令运行的计算机设备的工作存储器中。在此,本申请的一些实施例提供了一种计算设备,该设备包括用于存储计算机程序指令的存储器和用于执行计算机程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发所述设备执行前述本申请的多个实施例的方法和/或技术方案。
此外,本申请的一些实施例还提供了一种计算机可读介质,其上存储有计算机程序指令,所述计算机可读指令可被处理器执行以实现前述本申请的多个实施例的方法和/或技术方案。
需要注意的是,本申请可在软件和/或软件与硬件的组合体中被实施,例如,可采用专用集成电路(asic)、通用目的计算机或任何其他类似硬件设备来实现。在一些实施例中,本申请的软件程序可以通过处理器执行以实现上文所述步骤或功能。同样地,本申请的软件程序(包括相关的数据结构)可以被存储到计算机可读记录介质中,例如,ram存储器,磁或光驱动器或软磁盘及类似设备。另外,本申请的一些步骤或功能可采用硬件来实现,例如,作为与处理器配合从而执行各个步骤或功能的电路。
对于本领域技术人员而言,显然本申请不限于上述示范性实施例的细节,而且在不背离本申请的精神或基本特征的情况下,能够以其他的具体形式实现本申请。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本申请的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本申请内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。装置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。