虚拟实例的流量镜像方法、装置、虚拟机平台及存储介质与流程

文档序号:33625982发布日期:2023-03-28 20:46阅读:21来源:国知局
1.本发明涉及通信
技术领域
:,特别是涉及一种虚拟实例的流量镜像方法、一种虚拟实例的流量镜像装置、相应的一种虚拟机平台以及相应的一种计算机可读存储介质。
背景技术
::2.在公有云虚拟网络中,用户通常会有对云上虚拟实例(虚拟机或docker容器)的入出流量进行镜像的需求,镜像流量后导入到用户指定的终端节点进行流量分析及审计。3.在流量镜像的相关技术中,可以表现为基于对镜像源请求的镜像源ip解析确定镜像目的请求对应的监控端口,然后将流量发送请求到对应的监控端口实现流量镜像,然而其所实现的流量镜像无法对流量镜像进行区分,不利于对入出流量的流量分析及审计。技术实现要素:4.鉴于上述问题,提出了本发明实施例以便提供一种克服上述问题或者至少部分地解决上述问题的一种虚拟实例的流量镜像方法、一种虚拟实例的流量镜像装置、相应的一种虚拟机平台以及相应的一种计算机可读存储介质。5.本发明实施例公开了一种虚拟实例的流量镜像方法,应用于虚拟机平台,所述虚拟机平台包含所述虚拟实例的计算节点,所述方法包括:获取所述虚拟实例的待镜像流量,所述虚拟实例的待镜像流量包括入流量和/或出流量;在所述虚拟实例的计算节点对所述虚拟实例的入流量和出流量进行镜像,得到镜像流量;获取所构建的针对所述镜像流量的流量流表,根据所述镜像流量和所述流量流表生成镜像流量报文;向目的终端发送所述镜像流量报文,以便所述目的终端根据所述镜像流量报文区分端口的入出镜像流量。6.可选地,所述获取所构建的针对所述镜像流量的流量流表,还包括:获取所配置的流量镜像信息,采用所述流量镜像信息构建针对所述镜像流量的流量流表;其中,所述流量镜像信息至少包括流量方向信息、流量镜像实例信息、终端节点信息、流量过滤策略信息以及用户自定义标签信息。7.可选地,所述镜像流量包括针对入流量的入镜像流量和针对出流量的出镜像流量;所述采用所述流量镜像信息构建针对所述镜像流量的流量流表,包括:采用所述流量镜像实例信息、流量方向信息、终端节点信息、流量过滤策略信息以及用户自定义标签信息,分别构建入镜像流量的入流量流表,以及出镜像流量的出流量流表。8.可选地,所述虚拟实例位于虚拟私有云,所述虚拟私有云在镜像网关具有所创建的相应的流量镜像网关实例,用于承载不同流量镜像网关实例的镜像网关组包括多个镜像网关节点。9.可选地,所述根据所述镜像流量和所述流量流表生成镜像流量报文,包括:在所述虚拟实例的计算节点构建得到镜像流量后,通过所述镜像网关组的镜像网关节点接收所述镜像流量和所述流量流表;采用所述镜像流量和所述流量流表生成镜像流量报文;还包括:通过所述镜像网关节点获取路由转发表,并根据所述路由转发表和所述流量流表对所述镜像流量报文进行报文处理,生成镜像流量包。10.可选地,所述根据所述路由转发表和所述流量流表对所述镜像流量报文进行报文处理,生成镜像流量包,包括:获取所述流量流表的流量镜像信息,以及获取所述路由转发表的路由转发信息;响应所述流量流表的流量镜像信息分别与所述路由转发信息匹配成功,采用所述路由转发信息对所述镜像流量报文进行封装,得到镜像流量包。11.可选地,在所述根据所述镜像流量和所述流量流表生成镜像流量报文之前,还包括:接收用户所述目的终端发送的访问请求;其中,所述访问请求包括所要访问的虚拟实例,所述虚拟实例在镜像网关具有所创建的相应的流量镜像网关实例。12.可选地,所述向目的终端发送所述镜像流量报文,包括:通过镜像网关获取路由转发表并获取所述路由转发表的目的网关地址;基于所述目的网关地址确定将所述目的终端的目的终端节点,并向所述目的终端节点发送所述镜像流量报文。13.可选地,所述向所述目的终端节点发送所述镜像流量报文,包括:获取所要访问的流量镜像网关实例当前所在的虚拟实例,向所述所要访问的流量镜像网关实例当前所在的虚拟实例,所对应的流量镜像网关实例转发所述路由转发表,以便基于所对应的流量镜像网关实例基于所述路由转发表将所述镜像流量报文转发至目的终端节点。14.本发明实施例还公开了一种虚拟实例的流量镜像方法,应用于目的终端,所述目的终端与虚拟机平台通信连接,所述虚拟机平台包含所述虚拟实例的计算节点,所述方法包括:接收所述虚拟实例的计算节点发送的镜像流量报文;所述镜像流量报文基于镜像流量和流量流表生成,其中,所述镜像流量基于对虚拟实例的入流量和出流量进行镜像得到;根据所述镜像流量报文区分端口的入出镜像流量。15.可选地,所述流量流表基于所配置的流量镜像信息构建,所述流量镜像信息至少包括流量方向信息和/或流量镜像实例信息;所述基于所述镜像流量报文的流量流表中流量方向信息区分所述镜像流量,包括:基于所述镜像流量包的流量方向信息区分所述镜像流量的入镜像流量和出镜像流量,对所述入流量和出流量进行分析;和/或,基于所述镜像流量包的流量镜像实例信息和所述流量方向区分与所述流量镜像实例信息相应虚拟实例的入镜像流量和出镜像流量,对与所述流量镜像实例信息相应虚拟实例的入流量和出流量进行分析;和/或,基于所述镜像流量包的流量镜像实例信息区分与不同流量镜像实例信息相应虚拟实例的镜像流量,对不同虚拟实例的镜像流量进行分析。16.本发明实施例还公开了一种虚拟实例的流量镜像装置,应用于虚拟机平台,所述虚拟机平台包含所述虚拟实例的计算节点,所述装置包括:待镜像流量获取模块,用于获取所述虚拟实例的待镜像流量,所述虚拟实例的待镜像流量包括入流量和/或出流量;流量镜像模块,用于在所述虚拟实例的计算节点对所述虚拟实例的入流量和出流量进行镜像,得到镜像流量;镜像流量报文生成模块,用于获取所构建的针对所述镜像流量的流量流表,根据所述镜像流量和所述流量流表生成镜像流量报文;镜像流量报文发送模块,用于向目的终端发送所述镜像流量报文,以便所述目的终端根据所述镜像流量报文区分端口的入出镜像流量。17.本发明实施例还公开了一种虚拟实例的流量镜像装置,应用于目的终端,所述目的终端与虚拟机平台通信连接,所述虚拟机平台包含所述虚拟实例的计算节点,所述装置包括:镜像流量报文接收模块,用于接收所述虚拟实例的计算节点发送的镜像流量报文;所述镜像流量报文基于镜像流量和流量流表生成,其中,所述镜像流量基于对虚拟实例的入流量和出流量进行镜像得到;镜像流量区分模块,用于根据所述镜像流量报文区分端口的入出镜像流量。18.本发明实施例还公开了一种虚拟机平台,包括:处理器、存储器及存储在所述存储器上并能够在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现任一项所述虚拟实例的流量镜像方法。19.本发明实施例还公开了一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现任一项所述虚拟实例的流量镜像方法。20.本发明实施例包括以下优点:在本发明实施例中,在虚拟实例的计算节点对虚拟实例的入流量和出流量进行镜像,得到镜像流量,以及可以获取所构建的针对镜像流量的流量流表,并根据镜像流量和流量流表生成镜像流量报文,向目的终端发送镜像流量报文,以便目的终端能够根据镜像流量报文区分端口的入出镜像流量。通过对计算节点的流量的设计编排,以及通过在计算节点实现对待镜像流量的镜像以及镜像流量报文的生成,将虚拟实例镜像流量的相关信息设计到报文中,通过报文携带方式从计算节点发送出去,在占用数据中心最少的情况下实现对虚拟实例的流量的镜像,向指定终端节点进行的镜像发送,以及实现在终端节点对镜像流量进行的区分。进一步地,还可以通过根据计算节点发送出的镜像流量报文特性,设计镜像网关上的路由转发表,实现对镜像报文的高速处理。附图说明21.图1是本发明的一种虚拟实例的流量镜像方法实施例的步骤流程图;图2是本发明实施例提供的对虚拟实例的出流量流表的构建示意图;图3是本发明实施例提供的虚拟实例的入流量流表的构建示意图;图4是本发明实施例提供的公有云上虚拟机实例的逻辑网络分布示意图;图5是本发明的另一种虚拟实例的流量镜像方法实施例的步骤流程图;图6是本发明实施例提供的虚拟实例的流量镜像的应用场景示意图;图7是本发明的一种虚拟实例的流量镜像装置实施例的结构框图;图8是本发明的另一种虚拟实例的流量镜像装置实施例的结构框图。具体实施方式22.为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。23.在公有云虚拟网络中,用户通常会有对云上虚拟实例(虚拟机或docker容器)的入出流量进行镜像的需求,镜像流量后导入到用户指定的终端节点进行流量分析及审计。24.为了满足上述需求,本发明实施例在公有云中实现了基于udp(userdatagramprotocol,用户数据报协议)协议,具体通过vxlantunnel封装的流量流表openvswitch所编排的流量镜像。25.本发明实施例的核心思想在于在虚拟实例的计算节点对虚拟实例的入流量和出流量进行镜像,得到镜像流量,以及可以获取所构建的针对镜像流量的流量流表,并根据镜像流量和流量流表生成镜像流量报文,向目的终端发送镜像流量报文,以便目的终端能够根据镜像流量报文区分端口的入出镜像流量。通过实现虚拟实例的入流量和出流量分别进行镜像,基于设计到报文中的相关信息区分流量方向,让用户可以更精确灵活的对云上实例进行流量镜像,且流量镜像过程在虚拟实例所在的计算节点完成,极大节省数据中心的网络带宽资源,以及不影响用户虚拟实例的主流程,用户镜像后的流量可以通过配置分发到任意一个指定的终端节点(只要三层网络可达),在占用数据中心最少的情况下实现对虚拟实例的流量的镜像,向指定终端节点进行的镜像发送,以及在终端节点对镜像流量进行的区分。进一步地,流量镜像网关根据路由转发表将镜像流量报文基于udp封装双层tunnel报文发送到目的终端节点,通过根据计算节点发送出的镜像流量报文特性,设计镜像网关上的路由转发表,实现对镜像报文的高速处理。此外,还可以基于用户配置的流量过滤器过滤策略也在计算节点完成,在源端将不需要的流量过滤出来,过滤器策略支持接受及丢弃操作。26.参照图1,示出了本发明的一种虚拟实例的流量镜像方法实施例的步骤流程图,应用于虚拟机平台,所述虚拟机平台包含所述虚拟实例的计算节点,具体可以包括如下步骤:步骤101,获取虚拟实例的待镜像流量,虚拟实例的待镜像流量包括入流量和/或出流量;流量镜像,可以指的是为了流量监控等目的,将待监控端口的流量复制至特定的监控端口的过程,具体可以表现为将虚拟实例的流量复制到目的终端的过程。27.在本发明实施例中,可以通过对计算节点的流量的设计编排,以及通过在计算节点实现对待镜像流量的镜像以及镜像流量报文的生成,将虚拟实例镜像流量的方向设计到报文中,通过报文携带方式从计算节点发送出去,在占用数据中心最少的情况下实现对虚拟实例的流量的镜像,向指定终端节点进行的镜像发送,以及在终端节点所进行的对镜像流量的区分。28.在本发明的一种实施例中,为了实现对虚拟实例的流量镜像,首先可以对虚拟实例的待镜像流量进行获取,所获取的虚拟实例的待镜像流量可以包括该虚拟实例的入流量和/或出流量。示例性地,虚拟实例的入流量可以指的是访问流量或者请求流量等,出流量可以指的是响应流量以及所请求的数据、信息等,本发明实施例对此不加以限制。29.步骤102,在虚拟实例的计算节点对虚拟实例的入流量和出流量进行镜像,得到镜像流量;此时可以在虚拟实例的计算节点,分别对虚拟实例的入流量和出流量进行镜像,得到针对入流量的镜像流量和针对出流量的镜像流量,流量镜像过程在虚拟实例所在的计算节点完成,计算节点可以指的是宿主节点,以节省数据中心的网络带宽资源。30.其中,通过实现虚拟实例的入流量和出流量分别进行镜像,区分流量方向,让用户可以更精确灵活地对云上实例进行流量镜像。31.在本发明的一些实施例中,在计算节点还可以获取用户所配置的流量过滤器过滤策略,基于用户配置的流量过滤器过滤策略,在源端将不需要的流量过滤出来,以便对过滤后的虚拟实例的流量进行镜像。其中,过滤器策略可以支持接受及丢弃操作。32.步骤103,获取所构建的针对镜像流量的流量流表,根据镜像流量和流量流表生成镜像流量报文;在分别对虚拟实例的入流量和出流量进行流量镜像得到镜像流量后,此时可以获取所构建的针对镜像流量的流量流表,以基于镜像流量和流量流表生成镜像流量报文,便于通过根据计算节点发送出的镜像流量报文特性,设计镜像网关上的路由转发表,实现对镜像报文的高速处理。33.具体地,所获取的针对镜像流量的流量流表,主要是通过获取所配置的流量镜像信息,然后采用流量镜像信息构建针对镜像流量的流量流表实现,以对计算节点openvswitch的流量进行设计编排,优化网桥上的流表。34.其中,流量镜像信息至少包括流量镜像实例信息、终端节点信息、流量方向信息、流量过滤策略信息以及用户自定义标签信息等,以基于用户配置的流量镜像实例信息、流量方向信息、终端节点信息、流量过滤策略信息以及用户自定义标签信息(例如流量区分标签,镜像后截取的数据包长等)来将用户虚拟实例的网络流量镜像到指定的终端节点,便于后续不同虚拟实例的镜像的流量能够在同一终端节点(如果不同虚拟实例的终端节点信息配置为同一个)根据用户自定义标签信息进行区分,使得虚拟实例的流量报文五元组相同。即可以将前述流量镜像的相关信息设计到报文中,以便后续可以在计算节点按照报文携带的方式实现对这些相关信息的发送。35.在实际应用中,由于镜像流量包括针对入流量的入镜像流量和针对出流量的出镜像流量,此时可以采用流量镜像实例信息、流量方向信息、终端节点信息、流量过滤策略信息以及用户自定义标签信息,分别构建针对入镜像流量的入流量流表,以及针对出镜像流量的出流量流表。36.具体地,参照图2,示出了本发明实施例提供的对虚拟实例的出流量流表的构建示意图,主要可以表现为在正常编排的流表pipeline中再次添加三个table,table指的用于存储流表项的表。需要说明的是,tableid可以根据实际情况进行确定,本发明实施例对此不加以限制。37.正常编排的流表pipeline中,原先可以包含假设为table0、table6、table10等的table表,此时可以添加假设为table7,table8,table180的table表。其中,table0、table6、table10等的table表可以进行正常的流表处理流程,table=6功能可以为添加处理镜像的端口,对于新添加的三个table,table=7功能可以为处理镜像过滤策略,table=8功能可以为处理流量镜像方向,table=180功能可以为将镜像后的流量基于udp协议封装vxlan发送出去,以封装vxlan出计算节点,送达镜像网关节点。38.示例性地,具体的出方向各流表的详细设计可以如下所示:#reg1为方向,reg2为是否镜像flag(对于reg2具体值的设定,可以基于入方向值为1,出方向值为2的策略进行设定)#虚拟实例出镜像table=6,priority=100,in_port={in_port}actions=goto_table:7#需要镜像的port过镜像流量filtertable,priority优先级设置比正常的流量高,假设对于需要镜像的端口的priority优先级设置为100,不需要过镜像的端口的priority优先级设置为10,此时执行table:7的相关操作,即过镜像流量过程中的功能处理过滤器策略,以便基于流量过滤策略信息在源端将不需要的流量过滤出来,过滤器策略支持接受及丢弃操作table=6,priority=10,actions=goto_table:10#默认不需要过镜像流量走正常流量,即此时可以执行table:10的相关操作,进行正常的流表处理流程#table=7功能处理过滤器策略,基于action设置的reg1标识以确定是否需要镜像,假设0x1为需要镜像,如果关闭该端口的镜像开关,则设置reg1的流表不下发。在过滤过程中,可以基于过滤策略协议的不同进行流量过滤,具体表现如下:table=7,priority=150,tcp,in_port={in_port},nw_dst=192.168.50.6,tp_dst=80actions=set_field:0x1-》reg1,goto_table:8#假设镜像流量的过滤策略协议为tcp,目的192.168.50.6,端口为80table=7,priority=140,arp,in_port={in_port},arp_tpa=192.168.50.6actions=set_field:0x1-》reg1,goto_table:8#假设镜像流量的过滤策略协议为arp,目的192.168.50.6table=7,priority=130,icmp,in_port={in_port},nw_dst=192.168.50.6actions=goto_table:8#假设镜像流量的过滤策略协议为icmp,目的192.168.50.6table=7,priority=100,actions=goto_table:8#默认走正常的table#table=8功能处理镜像的方向,将match到需要镜像的流量(表现为matchreg1=0x1);然后在action中复用寄存器reg1进行设置流量镜像的方向,然后将流量进行镜像,镜像后的流量流转到table=180处理,正常流量继续走table=10table=8,priority=100,reg1=0x1actions=set_field:0x2-》reg1,resubmit(,10),resubmit(,180)#假设reg1=0x2为出方向。如关闭port的开关,本流量不下发table=8,priority=10actions=goto_table:10#默认走正常pipeline流程#table=180,通过匹配镜像port的镜像方向,所属虚拟私有云及源物理地址,将port的出方向的镜像流量发送到镜像网关,封装vxlan隧道发送出去,并将方向信息携带在数据包中(内层源mac的高24比特位)table=180,priority=200,reg1=0x2,reg5={vni},dl_src={port_src_mac}actions=set_field:0x4163e-》reg2,move:nxm_nx_reg2[0..23]-》nxm_of_eth_src[24..47],set_field:{vni}-》tun_id,group:101##出方向table=180,priority=100,actions=drop参照图3,示出了本发明实施例提供的虚拟实例的入流量流表的构建示意图,主要表现为在正常编排的流表pipeline中添加三个table,table指的用于存储流表项的表。需要说明的是,tableid可以根据实际情况进行确定,本发明实施例对此不加以限制。[0039]正常编排的流表pipeline中,原先可以包含假设为table86、table90等的table表,此时可以添加假设为table87,table88,table180的table表。其中,table86、table90等的table表可以进行正常的流表处理流程,table=86功能可以为添加入镜像的端口,table=90功能可以为流表将流量送到虚拟实例的端口port中,table=87功能可以为处理镜像过滤策略,table=88功能可以为处理流量镜像方向,table=180功能可以为将镜像后的流量基于udp协议封装vxlan发送出去,封装vxlan出计算节点,送达镜像网关节点。[0040]示例性地,具体入方向的各个流表的详细设计可以如下所示:#镜像流量入方向table=86,priority=100,reg7={in_port}actions=goto_table:87#需要镜像的port过入镜像流量filtertable,priority优先级设置比正常的流量高,假设对于需要镜像的端口的priority优先级设置为100,不需要经过镜像的端口的priority优先级设置为10,此时执行table:87的相关操作,即过镜像流量过程中的功能处理过滤器策略,以便基于流量过滤策略信息在源端将不需要的流量过滤出来,过滤器策略支持接受及丢弃操作table=86,priority=10,actions=goto_table:90#不需要镜像的直接走正常流程,即此时可以执行table:90的相关操作,进行正常的流表处理流程table=87,priority=150,tcp,reg7={in_port},nw_dst=192.168.50.6,tp_dst=80actions=set_field:0x1-》reg1,goto_table:88#根据过滤器策略过滤出需要镜像的流量table=87,priority=140,arp,reg7={in_port},arp_tpa=192.168.50.6actions=set_field:0x1-》reg1,goto_table:88#根据过滤器策略过滤出需要镜像的流量table=87,priority=130,icmp,reg7={in_port},nw_dst=192.168.50.6actions=goto_table:88#根据过滤器策略过滤出不需要镜像的流量,不设置reg1table=87,priority=100,actions=goto_table:88#不符合过滤策略的流量默认跳到table88table=88,priority=100,reg1=0x1actions=set_field:0x1-》reg1,resubmit(,90),resubmit(,180)#将符合过滤策略的流量进行镜像,设置流量镜像方向。ox1代表入方向table=88,priority=10actions=goto_table:90##默认走正常流程#table=180通过匹配镜像port的镜像方向,所属虚拟私有云及目的物理地址,将port的入方向的镜像流量发送到镜像网关,封装vxlan隧道发送出去,并将方向信息携带在数据包中table=180,priority=200,reg1=0x1,reg5={vni},dl_dst={port_dst_mac}actions=set_field:0x2163e-》reg2,move:nxm_nx_reg2[0..23]-》nxm_of_eth_src[24..47],set_field:{vni}-》tun_id,group:101#入方向table=180,priority=100,actions=drop需要说明的是,上述虚拟实例的出入流量的镜像在镜像点(例如table6和table86)可以基于用户根据实际情况进行选择,一般而言,出流量的镜像点会选择在过完port的qos限速流表后,过安全组流表之前;入流量的镜像点会选择在过完安全组和port的qos限速流量之后。以及,对于将镜像流量的方向标记携带到报文的位置及值也可以自由选择,例如在上述示例中可以将方向携带在报文内存的源端的物理地址mac中,出标记值设置为0x4163e,入标记值设置为0x2163e,本发明实施例对此不加以限制。[0041]在本发明的一些实施例中,虚拟实例位于虚拟私有云,虚拟私有云在镜像网关具有所创建的相应的流量镜像网关实例,用于承载不同流量镜像网关实例的镜像网关组包括多个镜像网关节点。示例性地,如图4所示,虚拟实例1(即vm1)和虚拟实例2(即vm2)位于用户vpc1(virtualprivatecloud,虚拟私有云)中子网2(即subnet2)中,虚拟实例3(即vm3)位于用户vpc2中的子网1(即subnet1)中,每个vpc均可以在镜像网关上创建一个流量镜像网关实例(例如流量镜像网关实例1mrgw-vpc1、流量镜像网关实例2mrgw-vpc2等),而一个镜像网关组中可以包含多个镜像网关节点来承载不同vpc的流量镜像网关实例,其中不同的镜像网关节点可以通过基于多台物理服务器作为节点实现。[0042]在生成镜像流量报文时,可以在虚拟实例的计算节点构建得到镜像流量后,通过镜像网关组的镜像网关节点接收镜像流量和流量流表,然后通过采用镜像流量和流量流表生成镜像流量报文实现。在具体实现中,还可以通过镜像网关节点获取路由转发表,并根据路由转发表和流量流表对镜像流量报文进行报文处理,生成镜像流量包。[0043]在实际应用中,当虚拟实例的镜像流量从计算节点发出后,可以发送到镜像网关组中的镜像网关节点,例如host,目的ip地址可以是镜像网关组的anycastip地址,当流量到达镜像网关的镜像网关节点host后,镜像网关节点host上的转发程序将会根据路由转发表对报文处理。[0044]具体的报文处理过程可以表现为获取流量流表的流量镜像信息,以及获取路由转发表的路由转发信息,然后响应流量流表的流量镜像信息分别与路由转发信息匹配成功,采用路由转发信息对镜像流量报文进行封装,得到镜像流量包。[0045]路由转发表可以基于匹配域的路由转发信息,以及基于动作域的路由转发信息得到。其中,匹配域的路由转发信息主要用于与流量流表的流量镜像信息进行匹配,动作域的路由转发信息主要用于在匹配成功的情况下,实现的报文发送操作。[0046]匹配域的路由转发信息可以包括vni(vni可以是一种类似于vlanid的用于标识virtualnetworkinstance虚拟网络实例的用户标识)、流量方向、端口物理地址portmac信息,此时可以根据报文的vni、流量方向、portmac信息与路由转发表中的vni、流量方向、portmac信息进行匹配,如果匹配不成功进行丢弃处理,此时若数据报文命中路由转发表后,则可以根据路由转发表的路由转发信息进行转发处理,并对镜像流量报文进行封装发送出去。[0047]示例性地,路由转发表可以如下表1所示:[0048]表1匹配域的路由转发信息可以包括内部目的物理地址innerdstmac、内部源物理地址innersrcmac、内部源逻辑地址innersrcip、内部目的逻辑地址innerdstip、内部虚拟网络实例标识innervni、外部目的逻辑地址outerdstip以及外部网络实例标识outervni,在基于路由转发表进行报文转发时,主要可以表现为根据动作域的innerdstmac、innersrcmac、innersrcip、innerdstip、innervni封装中间层vxlan信息,然后根据outerdstip和outervni在封装最外层的vxlan信息将报文从流量镜像网关发送到镜像终端节点。其中innervni可通过用户自行定义,用于在镜像终端节点进行流量区分。[0049]步骤104,向目的终端发送镜像流量报文,以便目的终端根据镜像流量报文区分端口的入出镜像流量。[0050]在向目的终端发送镜像流量报文时,可以表现为通过镜像网关获取路由转发表并获取路由转发表的目的网关地址,然后基于目的网关地址确定将目的终端的目的终端节点,并向目的终端节点发送镜像流量报文,即流量镜像网关能够根据路由转发表将镜像流量报文基于udp封装双层tunnel报文发送到目的终端节点。[0051]在本发明的一些实施例中,在生成镜像流量报文之前,将会接收用户目的终端发送的访问请求,目的终端可以是在预设虚拟私有云中预设虚拟实例。其中,访问请求包括所要访问的虚拟实例,虚拟实例在镜像网关具有所创建的相应的流量镜像网关实例。[0052]在向目的终端节点发送镜像流量报文时,还可以表现为获取所要访问的流量镜像网关实例当前所在的虚拟实例,向所要访问的流量镜像网关实例当前所在的虚拟实例,所对应的流量镜像网关实例转发路由转发表,以便基于所对应的流量镜像网关实例基于路由转发表将镜像流量报文转发至目的终端节点。[0053]在实际应用中,向目的终端发送镜像流量报文,目的终端能够基于镜像流量报文中所携带发送的相关信息对镜像流量进行区分,此相关信息为与镜像流量的相关信息,至少包括流量镜像实例信息、终端节点信息、流量方向信息、流量过滤策略信息以及用户自定义标签信息等,此时可以基于流量流表中的流量方向信息和/或流量镜像实例信息对镜像流量进行区分。具体可以表现为基于镜像流量包所携带的流量方向信息,区分镜像流量的入镜像流量和出镜像流量,对入流量和出流量进行分析;和/或基于镜像流量包的流量镜像实例信息和流量方向区分与流量镜像实例信息相应虚拟实例的入镜像流量和出镜像流量,对与流量镜像实例信息相应虚拟实例的入流量和出流量进行分析;和/或基于镜像流量包的流量镜像实例信息区分与不同流量镜像实例信息相应虚拟实例的镜像流量,对不同虚拟实例的镜像流量进行分析。[0054]在本发明实施例中,在虚拟实例的计算节点对虚拟实例的入流量和出流量进行镜像,得到镜像流量,以及可以获取所构建的针对镜像流量的流量流表,并根据镜像流量和流量流表生成镜像流量报文,向目的终端发送镜像流量报文,以便目的终端能够根据镜像流量报文区分端口的入出镜像流量。通过对计算节点的流量的设计编排,以及通过在计算节点实现对待镜像流量的镜像以及镜像流量报文的生成,将虚拟实例镜像流量的相关信息设计到报文中,通过报文携带方式从计算节点发送出去,在占用数据中心最少的情况下实现对虚拟实例的流量的镜像,向指定终端节点进行的镜像发送,以及在终端节点对镜像流量进行的区分。进一步地,还可以通过根据计算节点发送出的镜像流量报文特性,设计镜像网关上的路由转发表,实现对镜像报文的高速处理。[0055]参照图5,示出了本发明的另一种虚拟实例的流量镜像方法实施例的步骤流程图,应用于虚拟机平台,虚拟机平台包含虚拟实例的计算节点,具体可以包括如下步骤:步骤501,接收虚拟实例的计算节点发送的镜像流量报文;流量镜像,可以指的是为了流量监控等目的,将待监控端口的流量复制至特定的监控端口的过程,具体可以表现为将虚拟实例的流量复制到目的终端的过程。[0056]在本发明实施例中,可以通过对计算节点的流量的设计编排,以及通过在计算节点实现对待镜像流量的镜像以及镜像流量报文的生成,将虚拟实例镜像流量的相关信息设计到报文中,通过报文携带方式从计算节点发送出去,在占用数据中心最少的情况下实现对虚拟实例的流量的镜像,向指定终端节点进行的镜像发送,以及实现在终端节点对镜像流量进行的区分。[0057]在本发明的一种实施例中,目的终端可以接收虚拟实例的计算节点发送的镜像流量报文,以便根据镜像流量报文区分端口的入出镜像流量,例如基于所携带的流量流表中包含的流量方向信息区分镜像流量。[0058]具体地,所接收的镜像流量报文可以基于镜像流量和流量流表生成,其中,镜像流量基于对虚拟实例的入流量和出流量进行镜像得到。[0059]流量镜像信息至少包括流量镜像实例信息、终端节点信息、流量方向信息、流量过滤策略信息以及用户自定义标签信息等,以基于用户配置的流量镜像实例信息、流量方向信息、终端节点信息、流量过滤策略信息以及用户自定义标签信息(例如流量区分标签,镜像后截取的数据包长等)来将用户虚拟实例的网络流量镜像到指定的终端节点,便于后续不同虚拟实例的镜像的流量能够在同一终端节点(如果不同虚拟实例的终端节点信息配置为同一个)根据用户自定义标签信息进行区分,即使得虚拟实例的流量报文五元组相同。以及还可以通过实现虚拟实例的入流量和出流量分别进行镜像,区分流量方向,让用户可以更精确灵活地对云上实例进行流量镜像。[0060]步骤502,根据镜像流量报文区分端口的入出镜像流量。[0061]在实际应用中,具体可以基于镜像流量报文所携带的流量方向信息区分端口的入出镜像流量,还可以基于镜像流量报文所携带的流量镜像实例信息区分端口的入出镜像流量,以及还可以基于镜像流量报文所携带的流量方向信息和流量镜像实例信息区分端口的入出镜像流量。需要说明的是,所借助的用于区分端口入出镜像流量的相关信息,除了前述信息以外,还可以是报文中其他携带的信息;以及,所借助的用于区分端口入出镜像流量的相关信息,具体可以基于报文中所设计携带的信息确定,本发明实施例对此不加以限制。[0062]在进行镜像流量区分时,在一种情况下,可以基于镜像流量包的流量方向信息区分镜像流量的入镜像流量和出镜像流量,对入流量和出流量进行分析;在另一种情况下,可以基于镜像流量包的流量镜像实例信息和流量方向区分与流量镜像实例信息相应虚拟实例的入镜像流量和出镜像流量,对与流量镜像实例信息相应虚拟实例的入流量和出流量进行分析;在又一种情况下,还可以基于镜像流量包的流量镜像实例信息区分与不同流量镜像实例信息相应虚拟实例的镜像流量,对不同虚拟实例的镜像流量进行分析。[0063]在本发明实施例中,通过实现虚拟实例的入流量和出流量分别进行镜像,区分流量方向,让用户可以更精确灵活地对云上实例进行流量镜像,且流量镜像过程在虚拟实例所在的计算节点完成,极大节省数据中心的网络带宽资源,以及不影响用户虚拟实例的主流程,用户镜像后的流量可以通过配置分发到任意一个指定的终端节点(只要三层网络可达),在占用数据中心最少的情况下实现对虚拟实例的流量的镜像,向指定终端节点进行的镜像发送,以及实现在终端节点对镜像流量进行的区分。进一步地,流量镜像网关根据路由转发表将镜像流量报文基于udp封装双层tunnel报文发送到目的终端节点,通过根据计算节点发送出的镜像流量报文特性,设计镜像网关上的路由转发表,实现对镜像报文的高速处理。此外,还可以基于用户配置的流量过滤器过滤策略也在计算节点完成,在源端将不需要的流量过滤出来,过滤器策略支持接受及丢弃操作。[0064]参照图6,示出了本发明实施例提供的虚拟实例的流量镜像的应用场景示意图,本发明实施例在公有云中实现了基于udp协议,具体通过vxlantunnel封装的流量流表openvswitch所编排的流量镜像。[0065]公有云上待镜像虚拟机实例的逻辑网络分布可以如图4所示,假设虚拟实例1(即vm1)和虚拟实例2(即vm2)位于用户vpc1中子网2(即subnet2)中,虚拟实例3(即vm3)位于用户vpc2中的子网1(即subnet1)中,每个vpc均可以在镜像网关上创建一个流量镜像网关实例(例如mrgw-vpc1、mrgw-vpc2等),而一个镜像网关组中可以包含多个镜像网关节点来承载不同vpc的流量镜像网关实例,其中不同的镜像网关节点可以通过基于多台物理服务器作为节点实现。[0066]假设用户对vpc2中subnet1的虚拟实例3(vm3)的入或出流量进行镜像,并配置流量过滤策略,将入或出镜像的流量发送到指定的终端节点vpc1中subnet2中的虚拟实例2(vm2)中,当用户在vpc1中subnet2的虚拟实例1对镜像虚拟实例3(vm3)进行访问时,可以实现数据流量的转发。[0067]具体表现为,如图6所示的虚线1为vm1访问vm3的访问流量,虚线2为vm1访问vm3的响应流量,对vm3而言,此时访问流量可以为入流量,响应流量可以为出流量,用户对vm3配置了入(出)流量的镜像功能,那么将在vm3所在的宿主节点(计算节点2)的openvswitch上的br-int网桥上下发相应的编排流表,将入(出)流量镜像出来通过udp协议发送到镜像网关组的镜像节点上。同时还会在镜像网关组给vpc2的镜像网关实例(即mrgw-vpc2)下发转发路由表,而镜像网关实例根据下发的转发路由表将流量转发到终端节点(即vpc1中虚拟实例vm2)上,以便终端节点能够基于镜像流量报文的流量流表中流量方向信息区分镜像流量。[0068]在本发明实施例中,通过实现虚拟实例的入流量和出流量分别进行镜像,区分流量方向,让用户可以更精确灵活地对云上实例进行流量镜像,且流量镜像过程在虚拟实例所在的计算节点完成,极大节省数据中心的网络带宽资源,以及不影响用户虚拟实例的主流程,用户镜像后的流量可以通过配置分发到任意一个指定的终端节点(只要三层网络可达),在占用数据中心最少的情况下实现对虚拟实例的流量的镜像,向指定终端节点进行的镜像发送,以及实现在终端节点对镜像流量进行的区分。进一步地,流量镜像网关根据路由转发表将镜像流量报文基于udp封装双层tunnel报文发送到目的终端节点,通过根据计算节点发送出的镜像流量报文特性,设计镜像网关上的路由转发表,实现对镜像报文的高速处理。此外,还可以基于用户配置的流量过滤器过滤策略也在计算节点完成,在源端将不需要的流量过滤出来,过滤器策略支持接受及丢弃操作。[0069]需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。[0070]参照图7,示出了本发明的一种虚拟实例的流量镜像装置实施例的结构框图,应用于虚拟机平台,虚拟机平台包含虚拟实例的计算节点,具体可以包括如下模块:待镜像流量获取模块701,用于获取虚拟实例的待镜像流量,虚拟实例的待镜像流量包括入流量和/或出流量;流量镜像模块702,用于在虚拟实例的计算节点对虚拟实例的入流量和出流量进行镜像,得到镜像流量;镜像流量报文生成模块703,用于获取所构建的针对镜像流量的流量流表,根据镜像流量和流量流表生成镜像流量报文;镜像流量报文发送模块704,用于向目的终端发送镜像流量报文,以便目的终端根据镜像流量报文区分端口的入出镜像流量。[0071]在本发明的一种实施例中,本发明实施例提出的装置还可以包括如下模块:流量流表构建模块,用于获取所配置的流量镜像信息,采用流量镜像信息构建针对镜像流量的流量流表;其中,流量镜像信息至少包括流量方向信息、流量镜像实例信息、终端节点信息、流量过滤策略信息以及用户自定义标签信息。[0072]在本发明的一种实施例中,镜像流量包括针对入流量的入镜像流量和针对出流量的出镜像流量;流量流表构建模块可以包括如下子模块:流量流表构建子模块,用于采用流量镜像实例信息、流量方向信息、终端节点信息、流量过滤策略信息以及用户自定义标签信息,分别构建入镜像流量的入流量流表,以及出镜像流量的出流量流表。[0073]在本发明的一种实施例中,虚拟实例位于虚拟私有云,虚拟私有云在镜像网关具有所创建的相应的流量镜像网关实例,用于承载不同流量镜像网关实例的镜像网关组包括多个镜像网关节点。[0074]在本发明的一种实施例中,镜像流量报文生成模块703可以包括如下子模块:镜像流量接收子模块,用于在虚拟实例的计算节点构建得到镜像流量后,通过镜像网关组的镜像网关节点接收镜像流量和流量流表;镜像流量报文生成子模块,用于采用镜像流量和流量流表生成镜像流量报文。[0075]在本发明的一种实施例中,镜像流量报文生成模块703还可以包括如下子模块:镜像流量包生成子模块,用于通过镜像网关节点获取路由转发表,并根据路由转发表和流量流表对镜像流量报文进行报文处理,生成镜像流量包。[0076]在本发明的一种实施例中,镜像流量包生成子模块可以包括如下单元:路由转发信息获取单元,用于获取流量流表的流量镜像信息,以及获取路由转发表的路由转发信息;镜像流量包生成单元,用于响应流量流表的流量镜像信息分别与路由转发信息匹配成功,采用路由转发信息对镜像流量报文进行封装,得到镜像流量包。[0077]在本发明的一种实施例中,在根据镜像流量和流量流表生成镜像流量报文之前,本发明实施例提出的装置还可以包括如下模块:访问请求接收模块,用于接收用户目的终端发送的访问请求;其中,访问请求包括所要访问的虚拟实例,虚拟实例在镜像网关具有所创建的相应的流量镜像网关实例。[0078]在本发明的一种实施例中,镜像流量报文发送模块704可以包括如下子模块:目标网关地址获取子模块,用于通过镜像网关获取路由转发表并获取路由转发表的目的网关地址;镜像流量报文发送子模块,用于基于目的网关地址确定将目的终端的目的终端节点,并向目的终端节点发送镜像流量报文。[0079]在本发明的一种实施例中,镜像流量报文发送子模块可以包括如下单元:镜像流量报文发送单元,用于获取所要访问的流量镜像网关实例当前所在的虚拟实例,向所要访问的流量镜像网关实例当前所在的虚拟实例,所对应的流量镜像网关实例转发路由转发表,以便基于所对应的流量镜像网关实例基于路由转发表将镜像流量报文转发至目的终端节点。[0080]在本发明实施例中,本发明实施例提供的虚拟实例的流量镜像装置可以在虚拟实例的计算节点对虚拟实例的入流量和出流量进行镜像,得到镜像流量,以及可以获取所构建的针对镜像流量的流量流表,并根据镜像流量和流量流表生成镜像流量报文,向目的终端发送镜像流量报文,以便目的终端能够根据镜像流量报文区分端口的入出镜像流量。通过对计算节点的流量的设计编排,以及通过在计算节点实现对待镜像流量的镜像以及镜像流量报文的生成,将虚拟实例镜像流量的相关信息设计到报文中,通过报文携带方式从计算节点发送出去,在占用数据中心最少的情况下实现对虚拟实例的流量的镜像,向指定终端节点进行的镜像发送,以及实现在终端节点对镜像流量进行的区分。进一步地,还可以通过根据计算节点发送出的镜像流量报文特性,设计镜像网关上的路由转发表,实现对镜像报文的高速处理。[0081]参照图8,示出了本发明的另一种虚拟实例的流量镜像装置实施例的结构框图,应用于目的终端,目的终端与虚拟机平台通信连接,虚拟机平台包含虚拟实例的计算节点,具体可以包括如下模块:镜像流量报文接收模块801,用于接收虚拟实例的计算节点发送的镜像流量报文;镜像流量报文基于镜像流量和流量流表生成,其中,镜像流量基于对虚拟实例的入流量和出流量进行镜像得到;镜像流量区分模块802,用于根据镜像流量报文区分端口的入出镜像流量。[0082]在本发明的一种实施例中,流量流表基于所配置的流量镜像信息构建,流量镜像信息至少包括流量方向信息和/或流量镜像实例信息;镜像流量区分模块802可以包括如下子模块:第一镜像流量区分子模块,用于基于镜像流量包的流量方向信息区分镜像流量的入镜像流量和出镜像流量,对入流量和出流量进行分析;第二镜像流量区分子模块,用于基于镜像流量包的流量镜像实例信息和流量方向区分与流量镜像实例信息相应虚拟实例的入镜像流量和出镜像流量,对与流量镜像实例信息相应虚拟实例的入流量和出流量进行分析;第三镜像流量区分子模块,用于基于镜像流量包的流量镜像实例信息区分与不同流量镜像实例信息相应虚拟实例的镜像流量,对不同虚拟实例的镜像流量进行分析。[0083]在本发明实施例中,本发明实施例提供的虚拟实例的流量镜像装置通过实现虚拟实例的入流量和出流量分别进行镜像,区分流量方向,让用户可以更精确灵活地对云上实例进行流量镜像,且流量镜像过程在虚拟实例所在的计算节点完成,极大节省数据中心的网络带宽资源,以及不影响用户虚拟实例的主流程,用户镜像后的流量可以通过配置分发到任意一个指定的终端节点(只要三层网络可达),在占用数据中心最少的情况下实现对虚拟实例的流量的镜像,向指定终端节点进行的镜像发送,以及实现在终端节点对镜像流量进行的区分。进一步地,流量镜像网关根据路由转发表将镜像流量报文基于udp封装双层tunnel报文发送到目的终端节点,通过根据计算节点发送出的镜像流量报文特性,设计镜像网关上的路由转发表,实现对镜像报文的高速处理。此外,还可以基于用户配置的流量过滤器过滤策略也在计算节点完成,在源端将不需要的流量过滤出来,过滤器策略支持接受及丢弃操作。[0084]对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。[0085]本发明实施例还提供了一种虚拟机平台,包括:包括处理器、存储器及存储在所述存储器上并能够在所述处理器上运行的计算机程序,该计算机程序被处理器执行时实现上述虚拟实例的流量镜像方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。[0086]本发明实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储计算机程序,计算机程序被处理器执行时实现上述虚拟实例的流量镜像方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。[0087]本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。[0088]本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。[0089]本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。[0090]这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。[0091]这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。[0092]尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。[0093]最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。[0094]以上对本发明所提供的一种虚拟实例的流量镜像方法、一种虚拟实例的流量镜像装置、相应的一种虚拟机平台以及相应的一种计算机可读存储介质,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1