云计算系统中报文处理的方法、主机和系统与流程

文档序号:23624689发布日期:2021-01-12 10:36阅读:77来源:国知局
云计算系统中报文处理的方法、主机和系统与流程

本发明涉及it技术领域,尤其涉及云计算系统中报文处理的方法、主机和系统。



背景技术:

虚拟化技术是云计算领域的关键技术之一,可将主机的物理资源抽象成共享资源池,供主机上运行的若干个虚拟机(virtualmachine,vm)使用。主机上运行的若干个虚拟机可以共享使用主机的网卡,与主机外部网络进行通信。在现有技术中,可以通过网卡虚拟化的方式将网卡分配给虚拟机使用,网卡虚拟化可以采用单根输入输出虚拟化(single-rooti/ovirtualization,sr-iov)或多根输入输出虚拟化(multirootinput/outputvirtualization,mr-iov),上述网卡虚拟化又称为网卡直通。以sr-iov直通为例,当网卡支持sr-iov时,使用sr-iov技术可以将主机上网卡共享给主机上运行的若干个虚拟机。

在主机上使用支持sr-iov能力的网卡时,网卡的网口会虚拟出至少一个物理功能(physicalfunction,pf)以及多个虚拟功能(virtualfunction,vf),主机上的虚拟机连接到至少一个vf。网卡内部包含具备交换机功能的交换设备。该交换设备按照介质访问控制(mediaaccesscontrol,mac)表转发数据包,负责着pf、vf和物理网口之间的数据包转发,但由于该交换设备的处理和存储能力有限,因此无法为用户提供丰富的网络功能,例如安全组、服务质量(qualityofservice,qos)、二层隧道封装以及分布式路由等等。



技术实现要素:

本文描述了一种云计算系统中报文处理的方法、主机和系统,以解决网卡直通场景下无法提供丰富的网络功能的问题。

第一方面,本发明实施例提供了一种主机,至少一个网卡连接到该主机,所述主机上运行有虚拟机监视器vmm,vmm上运行有第一虚拟机,所述vmm包含虚拟网桥以及虚拟网络功能模块,所述虚拟网络功能模块可以提供网络功能处理的能力。所述网卡包含交换设备以及至少两个网口,其中,第一网口支持网卡虚拟化能力,所述第一网口对应于至少一个物理功能pf和多个虚拟功能vf,所述第一网口的至少一个vf直通给所述第一虚拟机,

第一虚拟机将数据包从与自身相连的vf发出,所述数据包的目的mac地址为所述虚拟网桥上行链路口的mac地址,由第一网口的交换设备根据数据包的目的mac地址对数据包进行转发,将数据包发送给vmm上的虚拟网桥,通过该虚拟网桥将数据包传递到虚拟网络功能模块,由虚拟网络功能模块为该数据包提供丰富的网络功能。在网卡直通的场景下,虚拟机将数据包从直通的vf发出后,通过上述方式可以将数据包从网卡引导到vmm中的虚拟网络功能模块,利用该软件模块为用户提供丰富的网络功能。

在一种可能的设计中,所述主机上可以运行有多个虚拟机,每个虚拟机与所述第一网口的至少一个vf相连,所述第一网口的多个vf具有不同的虚拟局域网vlan标识。通过为每个vf设置与其他vf不同的vlan标识,保证带有vlan标识的广播报文只在vlan标识对应的虚拟局域网传播,从而不会被发送给具有不同vlan标识的其他vf。

在一种可能的设计中,第一虚拟机通过apr流程获取待发送的数据包的目的mac地址。具体的:

第一虚拟机通过与自身相连的vf发出arp请求报文,所述arp请求报文携带发出arp请求报文的所述vf的vlan标识,

第一网口的交换设备接收到所述arp请求报文后,广播所述arp请求报文,当vmm中的虚拟网桥接收到所述交换设备广播的所述arp请求报文后,向sdn控制器转发所述arp请求报文。sdn控制器记录有云计算系统的网络拓扑信息,当sdn控制器收到arp请求报文时,构建流表项,并向所述虚拟网桥返回所述流表项,所述流表项包括arp代答设置,所述arp代答设置用于指示所述虚拟网桥构造arp响应报文,所述arp响应报文携带所述虚拟网桥上行链路口的mac地址作为所述待发送的数据包的目的mac地址;

所述虚拟网桥根据所述流表项向所述第一虚拟机返回arp响应报文,arp响应报文携带所述虚拟网桥上行链路口的mac地址作为所述待发送的数据包的目的mac地址。

本发明实施例定义了新的arp流程,将待发送的数据包的目的mac地址设定为虚拟网桥上行链路口的mac地址,从而使得第一虚拟机发出的数据包经过二层转发到虚拟网桥,从而实现数据包从网卡重定向回vmm的效果。

在一种可能的设计中,所述流表项还包括mac地址设置,所述mac地址设置用于指示所述虚拟网桥在接收到第一虚拟机发送给第二虚拟机的所述数据包时,将所述数据包的目的mac地址修改为第二虚拟机的mac地址。由于第一虚拟机发出的数据包的目的mac地址为虚拟网桥上行链路口的mac地址,当虚拟网桥收到该数据包时,需要将数据包的目的mac地址替换为第二虚拟机的mac地址,从而使得虚拟网桥发出的数据包可以根据第二虚拟机真实的地址路由到第二虚拟机。

在一种可能的设计中,所述虚拟网桥上行链路口为所述第一网口的pf,所述虚拟网桥通过所述pf与所述网卡相连;或者,所述虚拟网桥上行链路口为所述第一网口的选定的vf,所述虚拟网桥通过所述选定的vf与所述网卡相连,其中,与所述虚拟网桥相连的所述选定的vf被设置为混杂模式。需要说明的是,所述虚拟网桥通过pf或vf与所述网卡相连指虚拟网桥与所述网卡存在逻辑相连,即所述虚拟网桥与所述网卡之间通过pf或vf传输数据包。

在一种可能的设计中,数据包的源虚拟机(第一虚拟机)和目的虚拟机(第二虚拟机)在同一主机上。此时,当虚拟网络功能模块处理完所述数据包后,将所述处理后的数据包返回给所述虚拟网桥,所述虚拟网桥接收处理后的数据包,根据所述数据包的目的mac地址将所述处理后的数据包通过所述交换设备发送给所述第二虚拟机。

所述第二虚拟机与所述第一虚拟机也可以运行在不同主机上,此时,所述虚拟网络功能模块建立与所述第二虚拟机所在的主机上的另一虚拟网络功能模块之间的隧道,将所述处理后的数据包发送到所述网卡的第二网口,然后通过所述隧道将所述处理后的数据包发送到所述第二虚拟机所在的主机,以使得所述另一虚拟网络功能模块将所述处理后的数据包发送到所述第二虚拟机。

第二方面,本发明实施例还提供了一种云计算系统中报文处理的方法,所述云计算系统中的至少一个主机包括虚拟机监视器vmm,以及至少一个网卡,所述主机上运行有第一虚拟机,所述vmm包含虚拟网桥以及虚拟网络功能模块,所述网卡包含交换设备以及至少两个网口,其中,第一网口支持网卡虚拟化能力,所述第一网口对应于至少一个pf和多个vf,所述第一虚拟机连接到所述第一网口的至少一个vf,所述方法包括:

所述第一虚拟机确定待发送的数据包的目的mac地址,所述待发送的数据包的mac地址为所述虚拟网桥上行链路口的mac地址;

所述第一虚拟机通过与自身相连的所述vf向第二虚拟机发送所述数据包,所述数据包携带的目的ip地址为所述第二虚拟机的ip地址,携带的目的mac地址为所述虚拟网桥上行链路口的mac地址;

所述交换设备接收所述数据包,根据所述数据包的目的mac地址,将所述数据包通过所述虚拟网桥的上行链路口发送到所述虚拟网桥;

所述虚拟网桥接收所述数据包,将所述数据包的目的mac地址修改为所述第二虚拟机的mac地址,将修改后的数据包发送给虚拟网络功能模块;

所述虚拟网络功能模块对所述修改后的数据包进行网络功能处理后,发送处理后的数据包,所述处理后的数据包的目的mac地址为所述第二虚拟机的mac地址。

在一种可能的设计中,所述第一网口的多个vf具有不同的虚拟局域网vlan标识。

在另一种可能的设计中,第一虚拟机通过arp流程从sdn控制器获取待发送数据包的目的mac地址,所述目的mac地址为所述虚拟网桥上行链路口的mac地址。具体获取的方式与第一方面的描述相同。

第三方面,本发明实施例提供了一种云计算系统,所述云计算系统包括第一方面所述的主机以及sdn控制器,所述sdn控制器,用于接收所述虚拟网桥转发的来自所述第一虚拟机的arp请求报文,向所述虚拟网桥返回流表项,所述流表项包括arp代答设置和mac地址设置,所述arp代答设置用于指示所述虚拟网桥针对所述arp请求构造arp响应报文,所述arp响应报文携带所述虚拟网桥上行链路口的mac地址作为待发送的数据包的目的mac地址。

第四方面,与前述装置、方法以及系统相对应,本发明实施例提供了一种主机,该主机具有实现第一方面中定义的主机的功能。所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块。具体的,所述主机包括第一处理器、第一存储器以及至少一个网卡,所述网卡包含第二处理器、第二存储器以及至少两个网口,其中,第一网口支持网卡虚拟化能力,所述第一网口对应于至少一个pf和多个vf,所述第一虚拟机连接到所述第一网口的至少一个vf,所述第一存储器和所述第二存储器中存储有指令,

所述第一处理器用于执行所述第一存储器中的指令以实施第一方面中第一虚拟机、虚拟网桥以及虚拟网络功能模块的功能;

所述第二处理器用于执行所述第二存储器中的指令以实施第一方面中交换设备的功能。

在一个可能的设计中,所述主机和sdn控制器由通用或专用的服务器实现,服务器的结构中包括处理器、存储器、系统总线以及输入输出接口,所述处理器被配置为支持所述系统中主机的相应的功能。所述输入输出接口用于与所述云计算系统中的其他部件进行通信,处理器执行所述存储器中存储的指令。

第五方面,本发明实施例提供了一种计算机存储介质,用于储存为上述主机所用的计算机软件指令,其包含用于执行上述方面所设计的程序。

第六方面,本发明实施例提供了另一种计算机存储介质,用于储存为上述网卡中的交换设备所用的计算机软件指令,其包含用于执行上述方面所设计的程序。

第七方面,本发明实施例提供了一种计算机程序,当物理服务器运行该计算机程序时,该物理服务器执行主机中虚拟机、虚拟网桥以及虚拟网络功能模块的功能。

第八方面,本发明实施例提供了一种计算机程序,当网卡中的处理器或可编程逻辑电路运行该计算机程序时,网卡执行前述方面中交换设备的功能。

附图说明

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

图1a是本发明实施例提供的主机上的虚拟化结构示意图;

图1b是本发明实施例提供的一种网卡直通场景下主机上的虚拟化结构示意图;

图2是本发明实施提供的另一种主机上的虚拟化架构示意图;

图3是本发明实施例提供的arp流程示意图;

图4是本发明实施例提供的vm1向vm2发送数据包的流程示意图;

图5是本发明实施例提供的一种计算机设备硬件结构示意图;

图6是本发明实施例提供的一种云计算系统结构示意图。

具体实施方式

本发明实施例描述的网络架构以及业务场景是为了更加清楚的说明本发明实施例的技术方案,并不构成对于本发明实施例提供的技术方案的限定,本领域普通技术人员可知,随着网络架构的演变和新业务场景的出现,本发明实施例提供的技术方案对于类似的技术问题,同样适用。

如图1a所示,为本发明实施例提供的主机上的虚拟化结构示意图。主机为一台物理服务器,该物理服务器的底层为硬件层,硬件层主要包括中央处理器(cpu,centralprocessingunit)、内存、硬盘以及网卡等硬件资源。服务器虚拟化是在物理服务器上借助虚拟化软件(如vmwareesx、citrixxen)实现多个虚拟机(virtualmachine,vm)的虚拟化运行环境。安装在服务器上实现虚拟化环境的软件层被称为虚拟机监视器(virtualmachinemonitor,vmm)。运行在硬件层之上的vmm承担对硬件层中的硬件资源进行调度、分配和管理工作。vmm之上运行多个虚拟机vm,vmm为每个虚拟机提供虚拟化的cpu、内存、存储、io设备(如网卡)以及以太网交换机等硬件环境,保证多个虚拟机相互隔离运行。

在虚拟化运行环境中,vmm为每个虚拟机创建虚拟网卡(virtualnetworkinterfacecard,vnic),虚拟交换机vswitch提供了虚拟机之间,以及虚拟机与外部网络之间的通讯能力。每个虚拟机的虚拟网卡对应到vswitch的一个逻辑端口上,主机的物理网卡对应于vswitch与外部物理交换机相连的端口。当虚拟机发送或接收的数据包经过vmm时,vmm中的虚拟网络功能模块对经过的数据进行网络功能处理,由于虚拟网络功能模块为软件模块,可以根据需要进行更新,因此,vmm中的虚拟网络功能模块可以为用户提供丰富的网络功能。

物理网卡的网口支持虚拟化能力可以通过单根输入输出虚拟化(singlerootinput/outputvirtualization,sr-iov)或多根输入输出虚拟化(multirootinput/outputvirtualization,mr-iov)来实现,本发明实施例以sr-iov技术为例进行说明。sr-iov技术是一种基于硬件的虚拟化解决方案,可以在虚拟机之间高效共享pcie(peripheralcomponentinterconnectexpress,快速外设组件互连)设备,并且由于sr-iov技术是在硬件中实现的,因此可以能够获得高效的i/o性能。

标准化组织pci-sig(peripheralcomponentinterconnectspecialinterestgroup,外围设备互连专业组)定义了sr-iov规范,sr-iov规范可参阅http://www.pcisig.com。

通过使用sr-iov技术,单个i/o资源可由主机上的多个虚拟机共享,这样,每个虚拟机都可访问同一个的硬件资源。因此,启用了sr-iov的pcie设备(例如物理网卡的网口)可以显示为多个单独的设备,显示出的每个单独的设备都具有独立的pcie配置空间。以支持sr-iov的物理网卡为例,该物理网卡上包含若干个网口,可以分别针对各个网口启用/禁用sr-iov能力,启用了sr-iov能力的网口对应于至少一个物理功能(physicalfunction,pf)以及多个虚拟功能(virtualfunction,vf),根据现有的sr-iov规范,每个pf最多可有64,000个与其关联的vf。创建vf后,可以直接将vf指定给主机上的虚拟机使用,从而使得多个虚拟机通过与其相连的至少一个vf共享pcie设备。

如图1b所示,为本发明实施例提供的一种网卡直通场景下主机上的虚拟化结构示意图,与图1a不同的是,物理网卡支持单根io虚拟化,物理网卡的一个网口对应于至少一个pf以及多个vf,各vf能共享物理网卡的物理资源(例如网卡端口)。

当主机上的虚拟机通过直通vf发送数据包时,虚拟机发出的数据包将会通过虚拟机上安装的vf驱动直接传递给网卡的vf,导致数据包无法经过vmm中的虚拟网络功能模块。由于网卡的交换设备中的mac表容量有限,处理能力有限,且无法进行自由的功能扩展,因此网卡无法提供丰富的网络功能。在一种可能的场景中,交换设备为virtualethernetbridge&classifier。

需要说明的是,本发明实施例针对网卡直通的场景,上述网卡直通的实现可以是sr-iov或者mr-iov,本发明实施例对此并不进行限定。

如图2所示,为本发明实施提供的另一种主机上的虚拟化架构示意图,该主机包含虚拟机监视器vmm以及至少一个物理网卡,所述主机上运行有至少一个虚拟机。所述至少一个物理网卡包括至少两个网口,第一网口和第二网口。其中,第一网口支持网卡虚拟化能力,第二网口连接到主机外部的物理交换机。第一网口虚拟出至少一个pf以及至少两个vf(图2中以两个vf为例进行说明),第一虚拟机和第二虚拟机上安装有vf驱动,第一虚拟机和第二虚拟机分别连接到至少一个vf,pf连接到vmm上的虚拟网桥,该虚拟网桥与vmm上的虚拟网络功能模块相连,该虚拟网络功能模块通过第二网口与主机外部的物理交换机相连。

在一种具体的场景中,vmm上的虚拟网桥可以为openvswitchbridge,将第一网口的pf作为该虚拟网桥的上行链路口。需要说明的是,也可以选择第一网口的一个vf作为虚拟网桥的上行链路口,即第一网口通过选择的vf与vmm上的虚拟网桥相连,此时,需要在vmm上加载vf驱动,同时将与虚拟网桥相连的vf设置为混杂模式,设置为混杂模式的vf类似于pf,可以接收到目的地址不是自身mac地址的数据包。混杂模式的具体说明可以参阅https://en.wikipedia.org/wiki/promiscuous_mode。本发明各实施例以第一网口的pf连接虚拟网桥为例进行说明,本领域技术人员可以理解的是,通过上述的设置方式,也可以使用混杂模式(promiscuousmode)的vf连接虚拟网桥。

在一种可能的实施方式中,第一网口和第二网口可以处在同一网卡上,也可以单独位于不同的网卡上,本发明实施例对此并不进行限定。

在本发明各实施例中,网卡虚拟化具体是指网卡硬件虚拟化。

第一虚拟机和第二虚拟机分别连接到第一网口的至少一个vf,第一网口的每个vf设置有不同的虚拟局域网(virtuallocalareanetwork,vlan)标识,由于一个vlan就是一个广播域,广播报文只能发送到一个vlan内的虚拟机。所以,通过为每个vf设置的不同的vlan标识,使得每个虚拟机处在不同的广播域,虚拟机发出的广播报文只能被虚拟机自身和pf收到。在设置vf的vlan标识时,需要保证主机范围内vlan标识唯一即可,不同主机上的vlan标识可以相同。

需要说明的是,图2所示的实施例中,第一虚拟机向第二虚拟机发送数据包是同一主机内部的两个虚拟机之间的通信。本领域技术人员可以理解的是,第二虚拟机与第一虚拟机也可以位于不同主机上,此时第一虚拟机和第二虚拟机为跨主机通信。图2中仅以两个vf以及两个vlan子接口为例进行说明,在实际产品实现时,支持网卡虚拟化功能的网卡可以虚拟化为至少一个pf以及多个vf,并不限定为两个vf,相对应的,vlan子接口的数量也并不限定为两个。

本发明实施例以vm1(第一虚拟机)发送数据包到vm2(第二虚拟机)为例对数据包的处理流程进行说明,网卡中的交换设备需要将来自vm1的数据包发送到vmm上的虚拟网络功能模块进行处理。在发送数据包之前,第一虚拟机确定待发送的数据包的目的介质访问控制mac地址为所述vmm中的虚拟网桥上行链路口的mac地址。第一虚拟机通过与自身相连的所述vf向第二虚拟机发送所述数据包,所述数据包携带的目的ip地址为所述第二虚拟机的ip地址,携带的目的mac地址为所述虚拟网桥上行链路口的mac地址。第一网口的交换设备接收第一虚拟机通过vf发出的数据包,根据所述数据包的目的mac地址对数据包进行二层转发,将所述数据包通过所述虚拟网桥的上行链路口发送到所述虚拟网桥。虚拟网桥接收所述数据包,将所述数据包的目的mac地址修改为所述第二虚拟机的mac地址,将修改后的数据包发送给虚拟网络功能模块,通过修改数据包的目的mac地址,使得数据后续的传输过程可以使用修改后的mac地址,从而保证数据包可以发送到第二虚拟机。虚拟网络功能模块在接收到修改后的数据包后,对所述修改后的数据包进行网络功能处理,为用户提供丰富的网络功能服务,然后根据所述第二虚拟机的mac地址,将处理后的数据包发送到第二虚拟机。

本发明实施例中,虚拟机将数据包从与虚拟机相连的vf发出,由第一网口的交换设备进行转发,将数据包发送给vmm上的虚拟网桥,通过该虚拟网桥将数据包传递到虚拟网络功能模块,由虚拟网络功能模块为该数据包提供丰富的网络功能。在网卡直通的场景上,虚拟机将数据包从直通的vf发出后,通过上述方式可以将数据包发送到vmm中的虚拟网络功能模块,利用该软件模块为用户提供丰富的网络功能,实现对数据包进行虚拟网络功能处理。

进一步的,本发明实施例提供了一种地址解析协议(addressresolutionprotocol,arp)流程,以使得第一虚拟机在发送数据包前可以获得虚拟网桥上行链路口的mac地址,从而将数据包的目的mac地址设定为虚拟网桥上行链路口的mac地址。在本发明实施例提供的arp流程中,由软件定义网络(softwaredefinednetwork,sdn)控制器对vm1发起的arp请求进行代答,在arp响应中携带vmm上的虚拟网桥的上行链路口的mac地址,通过将该mac地址与数据包的目的ip相对应,从而使得将vm1发出的数据包引导到与虚拟网桥相连的pf或者vf。需要说明的是,sdn控制器可以获得云计算网络的网络拓扑,即可实现上述arp流程。

具体的,如图3所示,为本发明实施例提供的arp流程示意图。

步骤301:vm1发出arp请求报文,携带vm2的ip地址,用于获取vm2的mac地址,该arp请求报文从与vm1相连的vf发出,网卡上的交换设备接收到该arp请求报文,该arp请求报文携带发出所述arp请求报文的vf的vlan标识;

步骤302:交换设备广播该arp请求报文,由于主机上的每个虚拟机连接的vf都具备不同的vlan标识,该arp请求报文被通过pf发送给虚拟网桥;

在一种可能的设计中,当虚拟网桥通过vf与网卡相连时,所述arp请求报文通过af发送到虚拟网桥。

步骤303:虚拟网桥将该arp请求报文转发给sdn控制器;

具体的,虚拟网桥可以通过packet-in消息将该arp请求报文发送给sdn控制器。

步骤304:sdn控制器对虚拟网桥设置流表项,将流表项下发到虚拟网桥;

所述流表项包括:

1)arp代答设置,该arp代答设置表示:当虚拟网桥接收到vm1发出的用于获取vm2的mac地址的arp报文请求时,构造arp响应报文,在arp响应报文中携带虚拟网桥上行链路口的mac地址作为vm2的mac地址,该虚拟网桥上行链路口的mac地址为与虚拟网桥相连的pf或vf的mac地址;

2)vlan标识处理设置:对于vm1发出的单播报文,去除单播报文携带的vlan标识;

3)mac地址设置:对于vm1发送给vm2的单播报文,将单播报文的目的mac地址修改为vm2的mac地址,将修改后的单播报文通过与虚拟网络功能模块相连的端口发送到虚拟网络功能模块。

需要说明的是,上述流表项的设置原理可以基于openflow协议。

步骤305:虚拟网桥配置流表项,根据arp代答设置向vm1返回arp响应报文,该arp响应报文携带虚拟网桥上行链路口的mac地址,将该arp响应报文通过该上行链路口发送给交换设备;

步骤306:交换设备转发该arp响应报文至vm1;

步骤307:vm1接收该arp响应报文,将vm2的mac地址设置为虚拟网桥上行链路口的mac地址。

本发明实施例定义了上述arp过程,无需通过自学习mac转发表的形式实现vm流量的二层转发控制。通过上述arp流程,使得vm1发出的数据包的目的mac为虚拟网桥上行链路口的mac地址,从而保证了数据包通过该上行链路口发送到虚拟网桥,进而由虚拟网桥将该数据包转发到虚拟网络功能模块进行处理。

如图4所示,为本发明实施例提供的vm1向vm2发送数据包的流程示意图。在本发明实施例中,主机1上的vm1向主机2上的vm2发送数据包,主机1的vmm中包含第一虚拟网桥以及第一虚拟网络功能模块,主机1的网卡包含至少两个网口以及第一交换设备,主机2的vmm中包含第二虚拟网桥以及第二虚拟网络功能模块,主机2的网卡包含至少两个网口以及第二交换设备。具体的,主机1和主机2的结构和各组件的功能如图2所示,此处不再赘述。vm1向vm2发送数据包的流程包括:

步骤401:vm1通过与自身相连的vf发送目的为vm2的数据包,数据包的目的ip地址为vm2的ip地址,目的mac地址为主机1上的第一虚拟网桥上行链路口的mac地址,所述数据包携带所述vf的vlan标识;

步骤402:网卡1的第一交换设备接收该数据包,根据数据包的目的mac地址将数据包通过该上行链路口发送给第一虚拟网桥;

步骤403:第一虚拟网桥根据预先设置的流表项,对该数据包进行处理,去除该数据包的vlan标识,将数据包的目的mac地址修改为vm2的mac地址;

步骤404:第一虚拟网桥将修改后的数据包发送给第一虚拟网络功能模块;

步骤405:第一虚拟网络功能模块对该数据包进行网络功能处理,包括安全组、qos、二层隧道封装以及分布式路由等等;

需要说明的是,第一虚拟网络功能模块进行网络功能处理可以采用现有技术中的各种实现方式,本发明实施例对此并不进行限定。

步骤406:第一虚拟网络功能模块将处理后的数据包通过第二网口发送到主机1外部的物理交换机,物理交换机经过网络将数据包路由到vm2所在的主机2;

需要说明的是,数据包中携带有vm2的ip地址和mac地址,采用现有的路由方式即可将数据包路由到vm2所在的主机2,本发明实施例对数据包在网络中的传输过程并不进行限定,示例性的,vm1所在的主机1和vm2所在的主机2可以建立隧道,隧道的端点分别为主机1和主机2的虚拟网络功能模块,从而在两个主机之间为vm1和vm2建立数据传输所需的隧道。

步骤407:vm2所在主机2的第二虚拟网络功能模块对接收到的数据包进行网络功能处理,将处理后的数据包发送给第二虚拟网桥;

步骤408:第二虚拟网桥根据vm2的mac地址进行二层转发,通过交换设备将数据包发送给与vm2连接的vf,从而将该数据包发送到第二虚拟机。

对于从主机外部发送到主机上的目的虚拟机的数据包,该数据包首先经过第二网口传递到虚拟网络功能模块,经过虚拟网络功能处理后再经过第一网口传递到数据包的目的虚拟机。

图4所示的实施例为虚拟机间跨主机的通信,可以理解的是,数据包的源虚拟机和目的虚拟机可以位于同一主机上,数据包的传输过程与图4的流程类似,不同之处在于,当数据包的源虚拟机和目的虚拟机位于同一主机上时,主机的虚拟网络功能模块完成网络功能处理后,将处理后的数据包发送给虚拟网桥,由虚拟网桥根据目的虚拟机的mac地址将处理后的数据包发送给目的虚拟机。

主机、sdn控制器可以采用通用的计算机设备,示例性的,如图5所示,为本发明实施例提供的计算机设备硬件结构示意图。计算机设备500包括至少一个处理器501,通信总线502,存储器503以及至少一个通信接口504。

处理器501可以是一个通用中央处理器(cpu),微处理器,特定应用集成电路(application-specificintegratedcircuit,asic),或一个或多个用于控制本发明方案程序执行的集成电路。

通信总线502可包括一通路,在上述组件之间传送信息。所述通信接口504,使用任何收发器一类的装置,用于与其他设备或通信网络通信,如以太网,无线接入网(ran),无线局域网(wirelesslocalareanetworks,wlan)等。

存储器503可以是只读存储器(read-onlymemory,rom)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(randomaccessmemory,ram)或者可存储信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器(electricallyerasableprogrammableread-onlymemory,eeprom)、只读光盘(compactdiscread-onlymemory,cd-rom)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器可以是独立存在,通过总线与处理器相连接。存储器也可以和处理器集成在一起。

其中,所述存储器503用于存储执行本发明方案的应用程序代码,并由处理器501来控制执行。所述处理器501用于执行所述存储器503中存储的应用程序代码。

在具体实现中,作为一种实施例,处理器501可以包括一个或多个cpu,例如图5中的cpu0和cpu1。

在具体实现中,作为一种实施例,计算机设备500可以包括多个处理器,例如图5中的处理器501和处理器508。这些处理器中的每一个可以是一个单核(single-cpu)处理器,也可以是一个多核(multi-cpu)处理器。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(例如计算机程序指令)的处理核。

在具体实现中,作为一种实施例,计算机设备500还可以包括输出设备505和输入设备506。输出设备505和处理器501通信,可以以多种方式来显示信息。例如,输出设备505可以是液晶显示器(liquidcrystaldisplay,lcd),发光二级管(lightemittingdiode,led)显示设备,阴极射线管(cathoderaytube,crt)显示设备,或投影仪(projector)等。输入设备506和处理器501通信,可以以多种方式接受用户的输入。例如,输入设备506可以是鼠标、键盘、触摸屏设备或传感设备等。

上述的计算机设备500可以是一个通用计算机设备或者是一个专用计算机设备。在具体实现中,计算机设备500可以是台式机、便携式电脑、网络服务器、掌上电脑(personaldigitalassistant,pda)、移动手机、平板电脑、无线终端设备、通信设备、嵌入式设备或有图5中类似结构的设备。本发明实施例不限定计算机设备500的类型。

sdn控制器和图2中的主机可以为图5所示的设备,存储器中存储了一个或多个软件模块,用于实现主机和sdn控制器的各项功能。主机和sdn控制器可以通过处理器以及存储器中的程序代码来实现本发明实施例公开的报文处理的方法。

需要说明的是,图5所示的计算机设备仅仅是给出了云计算系统中各部分的可能的硬件实现方式,根据系统各部分功能的不同或者变化,可以对计算机设备的硬件组件进行增删,以使得与系统各部分的功能进行匹配。

进一步的,与图5所示的硬件装置类似,上述实施例中的网卡中包含处理器以及存储器,网卡中的处理器执行存储器中的指令以实现上述交换设备的功能。本发明实施例不再赘述。

更进一步的,如图6所示,为本发明实施例提供的一种云计算系统结构示意图,所述云计算系统包括至少一个主机601以及sdn控制器602,所述主机中包含至少一个网卡,所述主机的结构如图2所示。

所述主机601包括虚拟机监视器vmm,以及至少一个网卡,所述主机601上运行有第一虚拟机,所述vmm包含虚拟网桥以及虚拟网络功能模块,所述网卡包含交换设备以及至少两个网口,其中,第一网口支持单根输入输出虚拟化,所述第一网口对应于至少一个pf和多个vf,所述第一虚拟机连接到所述第一网口的至少一个vf,

所述sdn控制器602,用于接收所述虚拟网桥转发的来自所述第一虚拟机的arp请求报文,向所述虚拟网桥返回流表项,所述流表项包括arp代答设置和mac地址设置,所述arp代答设置用于指示所述虚拟网桥为所述第一虚拟机构造arp响应报文,所述arp响应报文携带所述虚拟网桥上行链路口的mac地址作为待发送的数据包的目的mac地址;

所述第一虚拟机,用于通过与自身相连的所述vf向第二虚拟机发送所述数据包,所述数据包携带的目的ip地址为所述第二虚拟机的ip地址,携带的目的mac地址为所述虚拟网桥上行链路口的mac地址;

所述交换设备,用于接收所述数据包,根据所述数据包的目的mac地址,将所述数据包通过所述虚拟网桥的上行链路口发送到所述虚拟网桥;

所述虚拟网桥,用于接收所述数据包,将所述数据包的目的mac地址修改为所述第二虚拟机的mac地址,将修改后的数据包发送给虚拟网络功能模块;

所述虚拟网络功能模块,用于对所述修改后的数据包进行网络功能处理后,根据所述第二虚拟机的mac地址,将处理后的数据包发送到第二虚拟机。

其中,所述第一网口的多个vf具有不同的虚拟局域网vlan标识。

所述第一虚拟机,还用于通过所述与自身相连的所述vf发出所述arp请求报文,所述arp请求报文携带发出arp请求报文的所述vf的vlan标识;

所述交换设备,还用于广播所述arp请求报文,所述arp请求报文通过所述上行链路口发送到所述虚拟网桥;

所述虚拟网桥,还用于向所述sdn控制器转发所述arp请求报文,接收所述sdn控制器返回的所述流表项,向所述第一虚拟机返回arp响应报文,arp响应报文携带所述虚拟网桥上行链路口的mac地址作为所述待发送的数据包的目的mac地址。

所述流表项还包括mac地址设置,所述mac地址设置用于指示所述虚拟网桥在接收到第一虚拟机发送给第二虚拟机的单播报文时,将单播报文的目的mac地址修改为第二虚拟机的mac地址。

进一步的流表项中还包括输出设置,所述输出设置用于指示将修改后的数据包通过与所述虚拟网络功能模块相连的端口发出。

所述虚拟网桥上行链路口为所述第一网口的pf,所述虚拟网桥通过所述pf与所述网卡相连;或者,所述虚拟网桥上行链路口为所述第一网口的选定的vf,所述虚拟网桥通过所述选定的vf与所述网卡相连,其中,与所述虚拟网桥相连的所述选定的vf被设置为混杂模式。

当所述第二虚拟机与所述第一虚拟机运行在同一主机上时,所述虚拟网桥,还用于接收处理后的数据包,根据所述数据包的目的mac地址将所述处理后的数据包通过所述交换设备发送给所述第二虚拟机。

当所述第二虚拟机与所述第一虚拟机运行在不同主机上时,在第一虚拟机和第二虚拟机所在的两个主机的虚拟网络功能模块之间建立隧道,通过隧道将处理后的数据包从第二网口发出,传输到第二虚拟机所在的主机的虚拟网络功能模块。在第二虚拟机所在的虚拟网络功能模块对数据包完成网络功能处理后,将数据包通过第二虚拟机所在的主机的虚拟网桥发送到第二虚拟机。

本发明实施例还提供了一种计算机存储介质,用于储存为上述图2-6中的设备所用的计算机软件指令,其包含用于执行上述方法实施例所设计的程序。通过执行存储的程序,可以实现云计算系统中报文处理的方法。

综上所述,本发明实施例提供的云计算系统中报文处理的方法,主机和系统,可以将使用直通vf的虚拟机发出的报文引导到vmm上的虚拟网桥,进而由vmm上的虚拟网络功能模块对数据包进行网络功能处理,从而为用户提供丰富的网络功能。

尽管在此结合各实施例对本发明进行了描述,然而,在实施所要求保护的本发明实施例过程中,本领域技术人员通过查看所述附图、公开内容、以及所附权利要求书,可理解并实现所述公开实施例的其他变化。在权利要求中,“包括”(comprising)一词不排除其他组成部分或步骤,。单个处理器或其他单元可以实现权利要求中列举的若干项功能。相互不同的从属权利要求中记载了某些措施,但这并不表示这些措施不能组合起来产生良好的效果。

本领域技术人员应明白,本发明的实施例可提供为方法、装置(设备)、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。计算机程序存储/分布在合适的介质中,与其它硬件一起提供或作为硬件的一部分,也可以采用其他分布形式,如通过internet或其它有线或无线电信系统。

本发明实施例涉及到的计算机程序指令可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,通过执行计算机程序指令可以实现前述各实施例中各部件的功能

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管结合具体特征及其实施例对本发明进行了描述,显而易见的,在不脱离本发明的精神和范围的情况下,可对其进行各种修改和组合。相应地,本说明书和附图仅仅是所附权利要求所界定的本发明的示例性说明,且视为已覆盖本发明范围内的任意和所有修改、变化、组合或等同物。显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

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