一种用于物理设备与虚拟网络的通信方法、设备与系统与流程

文档序号:12278379阅读:391来源:国知局
一种用于物理设备与虚拟网络的通信方法、设备与系统与流程

本发明涉及网络虚拟化技术,尤其涉及用于物理设备与虚拟网络的通信方法、设备与系统。



背景技术:

就如同服务器虚拟化(hypervisor)能为操作系统提供“虚拟机”一样,网络虚拟化将虚拟网络与物理网络基础结构脱耦,从而解决了虚拟机配置的分等级IP地址分配的限制等问题。

然而,如何进行从物理网络到虚拟网络的通信成为了一个新的课题。

现有技术中,微软公司提供了一种Hyper-V网络虚拟化网关(Hyper-V Network Virtualization Gateway)用于桥接物理设备与网络虚拟化环境。具体而言,物理设备基于第三层网络协议连接路由器,并通过路由器连接网络虚拟化网关(也称为虚拟网关)。虚拟网关对物理设备发出的数据包进行网络虚拟化通用路由封装(Network Virtualization using Generic Routing Encapsulation,NVGRE),封装后的数据包即可用于在虚拟网络中进行传输以及通信。

然而,现有技术由于物理设备基于三层网络协议连接虚拟网关,因此难以将物理设备与虚拟网络中的虚拟机设置于同一子网中,进而对于虚拟机迁移至物理设备带来操作难度。对于用户在虚拟机和物理设备的体验也难以保持完全一致,难以实现虚拟化业务无缝地支持物理设备接入。



技术实现要素:

针对以上现有技术中的问题,本发明的目的在于在网络虚拟化的环境下,提供一种物理设备与虚拟网络的通信方法与系统,能够使得物理设备与虚拟机设置于同一子网中,能够对于用户在虚拟机和物理设备的体验保持完全一致。

根据本发明的第一个方面,提供一种用于物理设备与虚拟网络的通信方法,其特征在于包括步骤:NVGRE网关通过二层交换机接收来自物理设备的第一请求数据包,第一请求数据包的目标IP地址为虚拟网络中的虚拟机的IP地址;NVGRE网关将第一请求数据包进行网络虚拟化通用路由封装,以获得包括第一请求数据包的第一封装数据包;NVGRE网关将第一封装数据包转发至虚拟网络。

优选地,在NVGRE网关通过二层交换机接收来自物理设备的第一请求数据包的步骤前,还包括步骤:NVGRE网关通过二层交换机接收来自物理设备的基于ARP广播协议发送的第一广播数据包,第一广播数据包的目标IP地址为虚拟网络中的虚拟机的IP地址;NVGRE网关根据第一广播数据包,向物理设备回复第一应答数据包,第一应答数据包的源MAC地址为NVGRE网关的MAC地址。

优选地,多个物理设备通过VLAN协议进行隔离。

优选地,NVGRE网关将第一请求数据包进行网络虚拟化通用路由封装,以获得包括第一请求数据包的第一封装数据包的步骤包括:NVGRE网关根据VLAN信息获取第一请求数据包对应的二层广播域,在二层广播域中查找第一请求数据包对应的物理设备的MAC地址或IP地址;NVGRE网关将第一请求数据包进行网络虚拟化通用路由封装,以获得第一封装数据包,第一封装数据包的源地址为NVGRE网关的地址,第一封装数据包内的第一请求数据包的源地址为物理设备的MAC地址或IP地址。

优选地,NVGRE网关将第一封装数据包转发至虚拟网络的步骤包括:NVGRE网关将第一封装数据包转发至路由器;路由器将第一封装数据包转发至虚拟机所对应的宿主机;宿主机接收第一封装数据包,剥除第一封装数据包的网络虚拟化通用路由封装以获得第一请求数据包;宿主机将第一请求数据包转发至虚拟机。

优选地,还包括步骤:NVGRE网关接收来自虚拟网络的包括第二请求数据包的第二封装数据包,并查找第二封装数据包需要发往的二层广播域;NVGRE网关在二层广播域中查找第二请求数据包的目标MAC地址或IP地址对应的物理设备;NVGRE网关剥除第二封装数据包的网络虚拟化通用路由封装以获得第二请求数据包;NVGRE网关将第二请求数据包发送至物理设备。

优选地,第二封装数据包通过宿主机接收来自与宿主机对应的虚拟机发出的第二请求数据包后,将第二请求数据包进行网络虚拟化通用路由封装获得。

优选地,NVGRE网关接收来自虚拟网络的包括第二请求数据包的第二封装数据包,并查找第二封装数据包需要发往的二层广播域的步骤之前还包括步骤:宿主机接收来自虚拟机基于ARP广播协议发送的第二广播数据包;宿主机根据OpenFlow流表向虚拟机回复第二应答数据包,第二应答数据包的源MAC地址为物理设备的MAC地址。

优选地,NVGRE网关将第二请求数据包发送至物理设备的步骤包括:NVGRE网关将第二请求数据包发送至二层交换机;二层交换机将第二请求数据包单播转发至物理设备。

根据本发明的第二个方面,提供一种用于物理设备与虚拟网络的通信设备,包括:数据包获取模块,数据包获取模块通过二层交换机接收来自物理设备的第一请求数据包,第一请求数据包的目标IP地址为虚拟网络中的虚拟机的IP地址;代答模块,代答模块根据来自物理设备的第一广播数据包,向物理设备回复第一应答数据包,第一应答数据包的源MAC地址为NVGRE网关的MAC地址;封装模块,封装模块将第一请求数据包进行网络虚拟化通用路由封装,以获得包括第一请求数据包的第一封装数据包;数据包发送模块,数据包发送模块将第一封装数据包转发至虚拟网络。

优选地,多个物理设备通过VLAN协议进行隔离。

优选地,数据包获取模块根据VLAN信息获取第一请求数据包对应的二层广播域,在二层广播域中查找第一请求数据包对应的物理设备的MAC地址或IP地址;封装模块将第一请求数据包进行网络虚拟化通用路由封装,以获得第一封装数据包,第一封装数据包的源地址为通信设备的地址,第一封装数据包内的第一请求数据包的源地址为物理设备的MAC地址或IP地址。

根据本发明的第三个方面,提供一种用于物理设备与虚拟网络的通信系统,包括:物理设备,物理设备发出第一请求数据包,第一请求数据包的目标IP地址为虚拟网络中的虚拟机的IP地址;NVGRE网关,NVGRE网关接收第一请求数据包,并将第一请求数据包进行网络虚拟化通用路由封装,以获得包括第一请求数据包的第一封装数据包,将第一封装数据包转发至虚拟网络;二层交换机,二层交换机用于将第一请求数据包转发至NVGRE网关。

优选地,多个物理设备通过VLAN协议进行隔离。

优选地,NVGRE网关根据VLAN信息获取第一请求数据包对应的二层广播域,在二层广播域中查找第一请求数据包对应的物理设备的MAC地址或IP地址;NVGRE网关将第一请求数据包进行网络虚拟化通用路由封装,以获得第一封装数据包,第一封装数据包的源地址为NVGRE网关的地址,第一封装数据包内的第一请求数据包的源地址为物理设备的MAC地址或IP地址。

本发明中物理设备通过二层交换机连接NVGRE网关,从而来自物理设备的第一请求数据包的目标IP地址可以直接设置为虚拟网络中的虚拟机的IP地址而非虚拟网关的IP地址。由于物理设备基于第二层网络协议连接虚拟网关,因此可以将物理设备与虚拟机设置于同一子网中,以方便地实现虚拟机迁移到物理设备,这样的设置支持VRRP协议(Virtual Router Redundancy Protocol,虚拟路由冗余协议)实现高可用性。用户在虚拟机和物理设备的体验也可以保持完全一致,其他虚拟化业务也可以无缝地支持物理设备接入。

附图说明

以下结合附图和具体实施例对本发明的技术方案进行详细的说明,以使本发明的特性和优点更为明显。

图1为本发明的一个实施例的用于物理设备与虚拟网络的通信系统的结构示意图;

图2为本发明的一个实施例的用于物理设备与虚拟网络的通信设备的模块示意图;

图3为本发明的一个实施例的物理设备访问虚拟网络的方法流程图;

图4为图3中步骤S105的详细流程图;

图5为图3中步骤S106的详细流程图;

图6为本发明的一个实施例的虚拟机访问物理设备的方法流程图。

具体实施方式

以下将对本发明的实施例给出详细的说明。尽管本发明将结合一些具体实施方式进行阐述和说明,但需要注意的是本发明并不仅仅只局限于这些实施方式。相反,对本发明进行的修改或者等同替换,均应涵盖在本发明的权利要求范围当中。

一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各项操作描述成顺序的处理,但是其中的许多操作可以被并行地、并发地或者同时实施。此外,各项操作的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。

应当理解的是,虽然在这里可能使用了术语“第一”、“第二”等等来描述各个单元或是数据,但是这些单元或数据不应当受这些术语限制。使用这些术语仅仅是为了将一个数据与另一个数据进行区分。举例来说,在不背离示例性实施例的范围的情况下,第一请求数据包可以被称为第二请求数据包,并且类似地第二请求数据包可以被称为第一请求数据包。

图1为本发明的一个实施例的用于物理设备与虚拟网络的通信系统的结构示意图。如图1所示,通信系统包括至少一个物理设备21,22、至少一个NVGRE网关1以及至少一个二层交换机3。图1中示例性地列出了两个物理设备21,22,一个NVGRE网关以及一个二层交换机3,在实际使用时,可以根据需求确认通信系统的规模,使用负载均衡技术设置多个物理设备21,22、NVGRE网关1以及二层交换机3。

物理设备21,22通常被用于出租给不同的租户,在本实施例中,多个租户的物理设备21,22通过VLAN协议(Virtual Local Area Network,虚拟局域网协议)进行隔离,从而将不同租户的物理设备21,22分隔在不同的二层广播域中。不同的二层广播域通过二层交换机端口和/或所述物理设备的MAC地址(物理地址)进行划分,来自不同的二层广播域的数据包,通过数据包中的VLAN信息进行标记。在本示例中,物理设备21与物理设备22被不同租户租用,处于不同的二层广播域。

二层交换机3工作在第二层网络协议,即数据链路层。二层交换机3可以识别数据包中的MAC地址信息,根据MAC地址进行转发,并将这些MAC地址与对应的端口记录在自己内部的一个地址表中。

NVGRE网关1是一种网络地址转换组件,作为虚拟网关借助GRE协议(通用路由封装协议)对数据包进行网络虚拟化通用路由封装(NVGRE封装)或剥除封装,从而使得数据包能够在虚拟网络4或是物理网络进行传输。具体的NVGRE封装方法以及剥除封装的方法可以使用现有技术。

图2为本发明的一个实施例的用于物理设备与虚拟网络的通信设备的模块示意图。下面参考图2介绍NVGRE网关1的模块结构。用于物理设备与虚拟网络的通信设备即是NVGRE网关1,NVGRE网关1包括数据包获取模块11、代答模块12、封装模块13以及数据包发送模块14。数据包获取模块11用于接收数据包。代答模块12用于向物理设备21,22发送应答数据包,从而进行ARP(地址解析协议)广播代答。封装模块13用于对收到的来自物理设备21,22的广播数据包进行NVGRE封装或是对来自虚拟网络4的第二封装数据包剥除NVGRE封装。数据包发送模块14用于发送数据包。

NVGRE网关1采用英特尔数据面开发套件(Intel Data Plane Development Kit,Intel DPDK)数据处理框架。Intel DPDK是Intel公司提出的一种高速网络数据包的软件开发套件,Intel DPDK通过旁路Linux系统网络协议栈,直接对网卡进行读写,结合对多核CPU中不同内核的绑定,能够实现1Gbit网络小包流量下的线速收发。在Intel DPDK数据处理框架下具体接收以及发送数据的方法,可以采用现有的Intel DPDK数据处理方法。由于NVGRE网关1采用Intel DPDK,提升数据包的转发能力。

虚拟网络4中包括虚拟机41,虚拟机41运行在宿主机42中,宿主机42通过路由器43与外部链接。物理设备21,22与虚拟网络4的通信主要是指物理设备21,22与虚拟机41之间进行通信。

宿主机42包括虚拟交换机(Open VSwitch,OVS),OVS是一个虚拟交换软件,主要在虚拟机环境下作为一个虚拟交换机使用,用于实现虚拟机和外界网络的通信。宿主机42使用OpenFlow协议。OpenFlow协议是Nick McKeown教授等人在2007年提出的软件定义网络(Software Defined Networking,SDN)中的核心技术,SDN架构主要由OVS和OpenFlow控制器组成,OVS主要由OpenFlow流表(FlowTable)、安全通道和OpenFlow协议三部分构成。其中,OpenFlow流表用来进行数据包的查找和转发。宿主机42通过OVS进行NVGRE封装或是剥除封装,并对虚拟机41发出的ARP广播进行代答。其中具体的OVS进行NVGRE封装或是剥除封装的方法可以采用现有技术中的方法。

下面具体介绍本发明的用于物理设备与虚拟网络的通信方法。

图3为本发明的一个实施例的物理设备访问虚拟网络的方法流程图。结合图1、图2与图3,物理设备21,22访问虚拟网络4的通信方法包括步骤:

S101:物理设备21发送第一广播数据包。

S102:NVGRE网关通过二层交换机接收第一广播数据包,并回复第一应答数据包。

S103:物理设备21发送第一请求数据包。

S104:NVGRE网关接收第一请求数据包。

S105:NVGRE网关1将第一请求数据包进行NVGRE封装,以获得第一封装数据包。

S105:NVGRE网关1将第一封装数据包转发至虚拟网络4。

在物理设备21首次访问虚拟机41时,首先需要基于ARP广播协议发送广播数据包,从而获取应答数据包,并根据应答数据包获取目标MAC地址,进而才能够进行后续请求数据包的单播发送。具体而言,如步骤S101,物理设备21在其所在的二层广播域中基于ARP广播协议发送第一广播数据包。二层交换机3接收第一广播数据包,并将第一广播数据包在该二层广播域中广播。第一广播数据包的源IP地址为物理设备21的IP地址10.10.1.20,源MAC地址为物理设备21的MAC地址。由于本发明中物理设备21基于第二层网络协议与NVGRE网关1连接,因此第一广播数据包的目标IP地址为虚拟机41的IP地址10.10.1.10,区别于基于第三层网络协议与虚拟网关连接的现有技术中将广播数据包目标IP地址设置为虚拟网关的IP地址并通过路由器进行传输。其中,由于物理设备21基于第二层网络协议与虚拟网关连接,从而物理设备21与虚拟机41的IP地址能够设置在同一子网中。

如步骤S102,NVGRE网关1的数据包获取模块11通过二层交换机3接收第一广播数据包,基于第一广播数据包NVGRE网关1的代答模块12向物理设备21发送第一应答数据包,从而进行ARP广播代答。第一应答数据包中的源MAC地址为NVGRE网关1的MAC地址,从而使得物理设备21后续发送的第一请求数据包中的目标MAC地址为NVGRE网关1的MAC地址,进而将流量牵引至NVGRE网关1。

如步骤S103,物理设备21接收第一应答数据包,并根据第一应答数据包中的源MAC地址发送第一请求数据包,第一请求数据包的目标IP地址为虚拟机41的IP地址10.10.1.10,目标MAC地址为NVGRE网关1的MAC地址。

如步骤S104,NVGRE网关1的数据包获取模块11通过二层交换机3接收第一请求数据包。

如步骤S105,NVGRE网关1将第一请求数据包进行NVGRE封装,以获得第一封装数据包。

图4为图3中步骤S105的详细流程图,如图1、图2和图4所示,首先如步骤S1051,NVGRE网关1的数据包获取模块11根据VLAN信息获取第一请求数据包对应的二层广播域。

接着,如步骤S1052,数据包获取模块11在二层广播域中查找第一请求数据包对应的物理设备21的MAC地址或IP地址。

如步骤S1053,NVGRE网关1的封装模块13根据第一请求数据包中的目标IP地址,即虚拟机41的IP地址10.10.1.10,获取虚拟机41所对应的宿主机42的IP地址192.168.1.10。

如步骤S1054,封装模块13将第一请求数据包进行NVGRE封装,以获得包括第一请求数据包的第一封装数据包。第一封装数据包的源IP地址为NVGRE网关1的IP地址192.168.1.20,目标IP地址为宿主机42的IP地址192.168.1.10。第一封装数据包内的第一请求数据包的源地址为物理设备21的MAC地址或IP地址。第一封装数据包能够在虚拟网络4中进行传输。

如步骤S106,NVGRE网关的数据包发送模块14将第一封装数据包转发至虚拟网络4。图5为图3中步骤S106的详细流程图。如图5所示,如步骤S1061,NVGRE网关1的数据包发送模块14将第一封装数据包发送至路由器43。如步骤S1062,路由器43根据第一数据包中目标IP的地址192.168.1.10,将第一封装数据包转发至虚拟机41所对应的宿主机42。如步骤S1063,宿主机42接收第一封装数据包,并通过OVS剥除第一封装数据包的NVGRE封装以获得第一请求数据包。如步骤S1064,宿主机42将第一请求数据包转发至虚拟机41。

图6为本发明的一个实施例的虚拟机访问物理设备的方法流程图。结合图1、图2与图6,当虚拟机41收到来自物理设备21的第一请求数据包,并处理完成需要回复时,虚拟机41访问物理设备21的通信方法包括步骤:

S201:虚拟机41发送第二广播数据包。

S202:宿主机42接收第二广播数据包,并向虚拟机41回复第二应答数据包。

S203:虚拟机41发送第二请求数据包。

S204:宿主机42接收第二请求数据包,将第二请求数据包进行NVGRE封装,以获得第二封装数据包,并向外发出。

S205:NVGRE网关1接收第二封装数据包,并查找第二封装数据包需要发往的二层广播域。

S206:NVGRE网关1在二层广播域中查找第二请求数据包的目标MAC地址或IP地址所对应的物理设备21。

S207:NVGRE网关1剥除第二封装数据包的NVGRE封装,以获得第二请求数据包。

S208:NVGRE网关1将第二请求数据包发送至物理设备21。

具体而言,当虚拟机41首次访问物理设备21时,首先如步骤S201,虚拟机41基于ARP广播协议发送第二广播数据包,其中第二广播数据包的目标MAC地址为需要通信的物理设备21的MAC地址。在本实施例中,通过目标MAC地址定位物理设备21,在其他实施例中,也可以通过目标IP地址定位物理设备21。

如步骤S202,宿主机42接收第二广播数据包,并根据OpenFlow流表向虚拟机41回复第二应答数据包,以进行ARP广播代答。具体而言,宿主机42中包括OpenFlow流表,宿主机42根据OpenFlow流表生成第二应答数据包,其中第二应答数据包中的源MAC地址为物理设备21的MAC地址。使用OpenFlow流表生成第二应答数据包的方式可采用现有的OpenFlow流表方式。宿主机42向虚拟机41回复第二应答数据包,以进行ARP广播代答。

如步骤S203,虚拟机41接收第一应答数据包,并发送第二请求数据包,第二请求数据包中的目标MAC地址为物理设备21的MAC地址。

如步骤S204,宿主机42的OVS将第二请求数据包进行NVGRE封装,以获得第二封装数据包,第二封装数据包的目标IP地址为NVGRE网关1的IP地址192.168.1.20。宿主机42的OVS将第二封装数据包向NVGRE网关1发出。

如步骤S205,NVGRE网关1的数据包获取模块11接收第二封装数据包,并查找第二封装数据包需要发往的二层广播域。NVGER网关1根据第二广播数据中的目标MAC地址,在与NVGER网关1数据连接的控制平面下发的信息中查找目标MAC地址的物理设备21所在的二层广播域。

如步骤S206,NVGRE网关1的数据包获取模块11在二层广播域中查找第二请求数据包的目标MAC地址所对应的物理设备21。在本实施例中,通过目标MAC地址定位物理设备21,在其他实施例中,也可以通过目标IP地址定位物理设备21。

如步骤S207,NVGRE网关1的封装模块13剥除第二封装数据包的NVGRE封装,以获得第二请求数据包,同时在第二请求数据包中加入物理设备21所在的二层广播域的VLAN信息。

如步骤S208,NVGRE网关1的数据包发送模块14将第二请求数据包发送至物理设备21。具体而言,NVGRE网关1的数据包发送模块14将第二请求数据包发送至二层交换机3,二层交换机3将第二请求数据包单播转发至物理设备21。

通过上述对实施例的介绍可以看出,本发明所提供的用于物理设备与虚拟网络的通信方法、设备与系统,至少具有以下优势:

物理设备21,22基于第二层网络协议连接虚拟网关,因此可以将物理设备21,22与虚拟网络4中的虚拟机41设置于同一子网中,以方便地实现虚拟机41迁移到物理设备21,22。

NVGRE网关1和物理设备21,22之间的通信二层网络协议可达,NVGRE网关1和虚拟机41之间的通信也是二层网络协议可达,和虚拟机41所在的宿主机42之间的通信三层网络协议可达,从而实现了物理设备22,23和虚拟网络4之间二层透明直连,提高了连接性能,以目前的通用服务器硬件水平,采用本发明所提供的通信方法与通信系统可以最大提供1.28T64字节小包线速转发能力。

同时,使得用户在虚拟机和物理设备上的体验保持完全一致,便于其他虚拟化业务无缝地支持物理设备接入。

以上仅是本发明的具体应用范例,对本发明的保护范围不构成任何限制。除上述实施例外,本发明还可以有其它实施方式。凡采用等同替换或等效变换形成的技术方案,均落在本发明所要求保护的范围之内。

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