一种云计算系统的虚拟交换系统及其虚拟交换方法

文档序号:8005430阅读:206来源:国知局
专利名称:一种云计算系统的虚拟交换系统及其虚拟交换方法
技术领域
本发明涉及一种虚拟化技术,特别涉及一种云计算系统中的虚拟交换方法及其系统。
背景技术
云计算(Cloud Computing)是由分布式处理、并行处理和网格计算演化发展出的一种商业计算模型。云计算的基本原理是构建大规模的分布式计算系统资源库,将系统的计算分布在系统资源池,统筹考虑整体系统的资源利用情况。云计算系统能够将资源切换到需要的应用上,根据需求获取计算能力、存储空间和各种软件服务,提高整个系统的设备利用率。云计算系统均采用虚拟化技术,在一台物理服务器上虚拟出多个虚拟计算机(虚拟机,Virtual Machine, VM),其上能同时运行多个独立的操作系统,这些客户操作系统 (Guest OS)通过虚拟机管理器(Virtual Machine Monitor,VMM,也称为 Hypervisor)来访问物理服务器的资源。云计算系统的用户通过网络来远程访问运行在物理服务器上的虚拟机。现有的云计算系统,一般使用Iinux操作系统的网桥模块,建立虚拟网桥,虚拟机用桥接的方式与外部网络进行通信。目前云计算系统的虚拟机与外部网络通信的方式见图
Io在图1所示的虚拟机通信技术中,要在物理服务器上创建虚拟网桥,虚拟机部署到物理服务器上时,操作系统会为虚拟机创建虚拟网络接口,将虚拟机网络接口绑定到虚拟网桥上,组成一个虚拟交换系统,虚拟机以桥接的方式与外部网络进行通信。如图1所示的虚拟机通信技术中,虚拟机发生迁移时,要从源物理服务器的虚拟网桥上注销虚拟机网络接口,在目的物理服务器上部署虚拟机完成后,将虚拟机网络接口注册到目的物理服务器的虚拟网桥上。现有技术只能实现虚拟机网络接口在目的物理服务器上的重新注册,无法同时迁移虚拟机网络接口的状态和规则。现有的虚拟机通信技术可以对虚拟机建立私有局域网,但不具备对数据报文进行路由转发的能力,因此被划入私有局域网的虚拟机要访问外部网络必须添加显式的外部连接通道,如路由器。如图1所示,现有技术需要配置一台路由器与外部网络相连。部署在物理服务器上的虚拟机通过这一路由器访问外部网络。在该路由器上需要配置网络地址转换(NAT)规则。在现有技术中,虚拟机把路由器与物理服务器相连的接口设置为网关。虚拟机到外部网络的数据报文都被转发到路由器。路由器进行地址转换,查找路由后把数据报文发送到外部网络。从外部网络发来的数据报文,路由器进行地址转换,然后转发给物理服务器,由物理服务器上的虚拟网桥进行二层虚拟交换。该方案的缺点是需要添加路由设备,从而增加了用户开销。访问外部网络时使用的网络地址转换(NAT)需要额外的用户配置。虚拟机发生迁移时,不能同步迁移虚拟机网络接口的状态和规则,需要用户重新配置,增加了用户的维护难度。

发明内容
鉴于现有技术的缺陷,本发明的目的是提出一种云计算系统的虚拟交换方法以及实现该方法的系统,其一个目的是提供了一种虚拟机接入外部网络的方法,使用户不必添加额外的路由设备。本发明的另一个目的是提供一种同步迁移虚拟机网络接口的状态和规则的方法, 当虚拟机发生迁移时,虚拟机网络接口的状态和规则也能被同步迁移。为了实现上述目的,本发明提供了一种虚拟机通过虚拟交换系统接入外部网络的方法,包括以下步骤
(1)虚拟机启动后,将虚拟机网络接口注册到节点服务器上的虚拟交换组件,建立虚拟机私有局域网;
(2)所述虚拟交换组件和节点服务器上的地址转换组件之间建立虚拟接口;
(3)所述虚拟交换组件对来自虚拟机的数据报文进行二层交换转发,发送给所述虚拟接口,所述虚拟接口解除数据报文的链路层封装后发送给所述地址转换组件,所述地址转换组件对数据报文进行地址转换后发送到外部网络;
(4)所述地址转换组件对来自外部网络的数据报文进行地址转换后发送给所述虚拟接口,所述虚拟接口对数据报文进行链路层封装后发送给所述虚拟交换组件,所述虚拟交换组件进行二层交换转发,将数据报文发送给虚拟机;
(5)完成虚拟机与外部网络之间的数据报文交互转发。其中,所述步骤C3)包含如下具体步骤
(31)所述虚拟交换组件根据数据报文的目的MAC地址查找对应的虚拟机网络接口, 进行二层交换转发,将数据报文发送给所述虚拟接口 ;
(32)所述虚拟接口解除数据报文的链路层封装,将数据报文发送给所述地址转换组
件;
(33)所述地址转换组件将数据报文的源地址/端口由虚拟机的地址/端口转换为节点服务器的地址/端口,然后根据数据报文的目的地址查找路由表,获取下一跳的出口 ;
(34)调用物理网络接口驱动,将数据报文发送到外部网络。其中,所述步骤(4)包含如下具体步骤
(41)物理网络接口收到外部网络发来的数据报文,发送给所述地址转换组件;
(42)所述地址转换组件将数据报文的目的地址/端口由节点服务器的地址/端口转换为虚拟机的地址/端口,发送给所述虚拟接口 ;
(43)所述虚拟接口查找ARP获取链路层封装信息,对数据报文进行链路层封装,将数据报文发送给所述虚拟交换组件;
(44)所述虚拟交换组件根据数据报文的目的MAC地址查找对应的虚拟机网络接口, 进行二层交换转发,数据报文发送给虚拟机。本发明还提供了一种同步迁移虚拟机网络接口的状态和规则的方法,包括以下步骤
(1)在物理服务器上部署虚拟交换系统,部署过程中指定管理服务器及其IP地址;在管理服务器上安装监控管理组件,所述监控管理组件启动后创建一个线程监听端口 ;
(2)将虚拟机的网络接口注册到节点服务器上的虚拟交换组件后,节点服务器上的虚拟交换组件能通过上述虚拟交换方法与外部网络连接,并由外部网络通过该线程监听端口与所述监控管理组件建立连接,以将虚拟机ID发送给所述监控管理组件,所述监控管理组件为虚拟机建立一个缓存块;
(3)虚拟机发生迁移时,源节点服务器上的虚拟交换组件与云计算管理服务器上的监控管理组件建立连接,所述虚拟交换组件将虚拟机网络接口的状态和规则发给所述监控管理组件的缓存块进行缓存;
(4)源节点服务器上的所述虚拟交换组件注销虚拟机网络接口;
(5)虚拟机迁移完成后,目的节点服务器上的所述虚拟交换组件对迁移后的虚拟机网络接口进行注册;
(6)目的节点服务器上的所述虚拟交换组件与所述监控管理组件再次建立连接,获取监控管理组件所保存的虚拟机网络接口的状态和规则,进行设定。本发明还提供一种云计算系统的虚拟交换系统,所述的应用系统包括以下部分 虚拟交换组件用于注册虚拟机网络接口,对数据报文进行二层交换转发;
地址转换组件对来自虚拟接口的数据报文,将数据报文的源地址/端口由虚拟机的网络地址/端口转换为物理服务器的地址/端口,发送到外部网络;对来自外部网络的数据报文,将数据报文的目的地址/端口由物理服务器的网络地址/端口转换为虚拟机的地址 /端口,发送到虚拟接口 ;
虚拟接口 建立于所述虚拟交换组件与所述地址转换组件之间,对来自虚拟机的数据报文,解除链路层封装;对来自外部网络的数据报文,进行链路层封装。此外,所述监控管理组件能提供图形化界面,供用户查看所述虚拟交换组件的运行状态、配置规则、数据流量等信息。该虚拟交换组件能与该监控管理组件连接以同步虚拟机网络接口的状态和规则,当虚拟机发生迁移时,源节点服务器上的虚拟交换组件通过外部网络与所述监控管理组件连接,并将虚拟机网络接口的状态和规则发送到监控管组组件进行缓存,而当虚拟机迁移完成之后,目的节点服务器上的虚拟交换组件再次通过外部网络与监控管理组件连接,以获取所缓存的虚拟机网络接口状态和规则,以便进行设定。此外本发明的虚拟交换系统还包括安装在节点服务器上的“网桥兼容组件”。本发明实现的虚拟交换系统提供了一套命令行,用于对系统进行配置管理。用户安装“网桥兼容组件”后,也可以使用Iinux系统自带的网桥命令对本发明的系统进行配置管理。因此,对原本使用Iinux网桥作为虚拟机通信方案的云计算系统可以很方便得使用本发明的系统, 不需要大规模的修改代码。本发明提供了一种云计算系统的虚拟交换系统及虚拟交换方法,相对现有技术, 本发明将原本设置在路由器上、由用户配置的网络地址转换(NAT)规则的工作交给运行在物理服务器上的网络地址转换组件,无需用户另行购置路由器;在虚拟机发生迁移时,虚拟机网络接口的状态和规则也被同步迁移,降低了云计算系统的成本和复杂度;本发明还可以兼容Iinux所有的网桥命令,使用Iinux网桥的云计算系统要使用本发明的系统时,可以减少改造的工作量。


图1是现有技术的虚拟机通信流程图2是基于本发明的云计算系统虚拟机通信流程图; 图3是数据报文从虚拟机发送到外部网络的流程图; 图4是数据报文从外部网络发送到虚拟机的流程图; 图5是虚拟机网络接口的状态和规则同步迁移的流程图。
具体实施例方式为了使本发明的特征及优点得到更清楚的了解,以下结合附图和具体实施例对本发明进行详细描述,此仅供说明之用,在专利申请上并不受此种结构的限制。如图1所示,描述了使用本发明的云计算系统中虚拟机与外部网络进行通信的实施例,具体实施步骤是
(1)虚拟机启动后,将虚拟机网络接口注册到虚拟交换组件,建立虚拟机私有局域
网;
(2)虚拟交换组件和地址转换组件之间建立虚拟接口;
(3)虚拟交换组件对来自虚拟机的数据报文进行二层交换转发给虚拟接口,虚拟接口解除数据报文的链路层封装后发送给地址转换组件,地址转换组件对数据报文进行地址转换后发送到外部网络;
(4)地址转换组件对来自外部网络的数据报文进行地址转换后发送给虚拟接口,虚拟接口对数据报文进行链路层封装后发送给虚拟交换组件,虚拟交换组件进行二层交换转发,将数据报文发送给虚拟机;
(5)完成虚拟机与外部网络之间的数据报文交换转发。在步骤(1)中,首先需要用rmmod命令卸载Iinux操作系统自带的bridge内核模块,用insmod命令加载本发明提供的vswitchjiiod内核模块。vswitchjiiod内核模块加载完成后,会将自身的桥接处理函数注册到Iinux操作系统。虚拟机网络接口注册到虚拟交换组件后,会被配置为桥接模式。当有数据报文从虚拟机网络接口发出后,就会被vswitch_ mod内核模块的桥接处理函数截获,转发到虚拟交换组件。步骤C3)如图3所示,描述了数据报文从虚拟机发送到外部网络的流程,具体包括以下步骤
1)步骤31虚拟交换组件根据数据报文的目的MAC地址查找对应的虚拟机网络接口, 进行二层交换转发,将数据报文发送给虚拟接口 ;
2)步骤32虚拟接口解除数据报文的链路层封装,将数据报文发送给地址转换组件;
3)步骤33地址转换组件将数据报文的源地址/端口由虚拟机的地址/端口转换为物理服务器的地址/端口,然后根据数据报文的目的地址查找路由表,获取下一跳的出口 ;
4)步骤34调用物理网络接口驱动,将数据报文发送到外部网络。步骤(4)如图4所示,描述了数据报文从外部网络发送到虚拟机的流程,具体包括以下步骤
1)步骤41物理网络接口收到外部网络发来的数据报文,发送给地址转换组件;
2)步骤42地址转换组件将数据报文的目的地址/端口由物理服务器的地址/端口转换为虚拟机的地址/端口,发送给虚拟接口 ;
3)步骤43虚拟接口查找ARP获取链路层封装信息,对数据报文进行链路层封装,将数据报文发送给虚拟交换组件;
4)步骤44虚拟交换组件根据数据报文的目的MAC地址查找对应的虚拟机网络接口, 进行二层交换转发,将数据报文发送给虚拟机。虚拟交换组件需要管理一张哈希表,每个表项是一个二元组(MAC地址,接口指针),使用MAC地址作为哈希函数的键,计算对应表项在哈希表中的地址,加快查找效率。虚拟机网络接口被注册时,虚拟交换组件会根据接口名称获取接口对象的指针,与虚拟机网络接口的MAC地址构成一个二元组,根据虚拟机网络接口的MAC地址计算表项在哈希表中的位置,加入哈希表;虚拟机网络接口被注销时,虚拟交换组件会根据虚拟机网络接口 MAC 地址计算表项在哈希表中的位置,从哈希表中删除。虚拟交换组件收到数据报文后,根据数据报文的目的MAC地址查找哈希表,获取对应的表项,根据表项中的接口对象指针,调用虚拟机网络接口的hard_start_Xmit()函数发送数据报文,完成二层交换转发。地址转换组件需要管理一张哈希表和一个端口池。哈希表的每个表项是一个三元组(虚拟机地址,虚拟机端口,物理服务器端口),使用物理服务器端口作为哈希函数的键, 计算对应表项在哈希表中的地址,加快查找效率。地址转换组件对进出组件的数据报文进行匹配,对满足已匹配映射关系的数据报文进行虚拟机地址/端口和物理主机地址/端口的转换。对于来自虚拟机的数据报文,从端口池中分配一个物理服务器端口,将数据报文的源地址/端口替换为物理服务器地址/端口,根据物理服务器端口计算表项在哈希表中的位置,加入哈希表,同时在端口池中将物理服务器端口置为“已使用”状态;对来自外网的数据报文,根据物理服务器端口计算表项在哈希表中的位置,取得数据报文对应的虚拟机地址/端口,将数据报文的目的地址/端口转换为虚拟机地址/端口,将表项从哈希表中删除,同时在端口池中将物理服务器端口置为“未使用,,状态。虚拟接口是一个软件模块,与物理网络接口一样,通过数据结构net_deViCe与 Iinux内核相连。虚拟接口被作为内核模块实现,用命令insmod加载该模块,调用函数 initjiioduleO,在该函数中调用regiSter_netdev()实现向系统注册该虚拟接口 ;同样的,用命令rmmod卸载该模块,调用函数cleanupjnodule 0,该函数调用unregiSter_ netdevO实现向系统注销该虚拟接口。虚拟接口根据ARP节点查找数据报文的链路层封装信息,对数据报文进行解除/封装链路层信息的操作。如图5所示,描述了使用本发明的云计算系统,虚拟机发生迁移时,同步迁移虚拟机网络接口的状态和规则的实施例,具体实施步骤是
(1)在物理服务器上部署本发明虚拟交换系统,部署过程中指定管理服务器的IP地址;在管理服务器上安装监控管理组件,监控管理组件启动后创建一个线程监听端口 ;
(2)虚拟机的网络接口被注册到虚拟交换组件后,节点服务器上的虚拟交换组件通过如图2所表示的虚拟交换方法与外部网络连接,再由外部网络通过该线程监听端口与监控管理组件建立连接,将虚拟机ID发送给监控管理组件,监控管理组件为虚拟机建立缓存块;
(3)虚拟机发生迁移时,源物理服务器上的虚拟交换组件与监控管理组件建立连接, 将虚拟机网络接口的状态和规则信息组成XML格式的字符串,发送给监控管理组件进行缓存;
(4)源物理服务器上的虚拟交换组件注销虚拟机网络接口;
(5)虚拟机迁移完成后,目的物理服务器上的虚拟交换组件对虚拟机网络接口进行注
ππ
册;
(6)目的物理服务器上的虚拟交换组件与监控管理组件建立连接,获取虚拟机网络接口的状态和规则,进行相应设定。 以上步骤中,虚拟机发送迁移时,虚拟交换组件进行的操作通过调用本发明提供的脚本文件实现。本发明的系统提供两个shell脚本文件vs-vnetup和vs-vnetdown。
其中,vs-vnetup文件在虚拟机启动时被调用,将虚拟机网络接口注册到虚拟交换组件,然后从监控管理组件获取虚拟机网络接口状态和配置规则,进行设置;VS- vnetdown 文件在虚拟机关闭时被调用,向监控管理组件发送虚拟机网络接口的状态和规则,然后将虚拟机网络接口从虚拟交换组件注销。下面举例说明vs-vnetup和vs-vnetdown文件的使用方法
kvm -m 512 -net nic,maddr=001122:EE:EE:EE -net \
tap,script=/etc/vs-vnetup, downscript=/etc/vs-vnetdown -drive \
file=/path/to/disk-image, boot=on
以上是基于KVM的虚拟机的配置文件的内容。在配置文件中,将script参数设置为vs-vnetup文件,downscript参数设置为vs-vnetdown文件,即可在虚拟机启动时调用 vs-vnetup文件,关闭时调用vs-vnetdown文件。虚拟机发生迁移时,能够同步迁移虚拟机网络接口的状态和规则。在云计算系统中,物理服务器分为管理和节点两种,其中管理服务器运行云计算系统的配置管理平台,节点服务器运行虚拟机。“虚拟交换组件”被安装在节点服务器上,负责虚拟机与外网的通信;“监控管理组件”被安装在管理服务器上,负责对安装在各个节点服务器上的“虚拟交换组件”的运行情况进行监控。本发明的监控管理组件一般被部署在云计算系统的配置管理服务器上。监控管理组件启动后,建立一个socket套接字,监听指定的端口。虚拟机发生迁移时,源物理服务器上的虚拟交换组件与监控管理组件建立连接,发送虚拟机网络接口的状态和规则;虚拟机迁移完成后,目的物理服务器上的虚拟交换组件与监控管理组件建立连接,接收虚拟机网络接口的状态和规则,进行设置。本发明实现的虚拟交换系统还提供网桥兼容组件,以内核模块的形式实现。该内核模块被加载后,Iinux所有的网桥命令都可以被使用。因此,使用Iinux网桥的云计算系统要使用本发明的系统时,可以减少改造工作量。以上所述的实例对本发明的各个部分的实现方式作了详细的说明,但是本发明的具体实现形式并不局限于此,对于本技术领域的一般技术人员来说,在不背离本发明所述方法的精神和权利要求范围的情况下对它进行的各种显而易见的改变都在本发明的保护范围之内。
权利要求
1.一种云计算虚拟交换系统的虚拟交换方法,其特征在于虚拟机和外部网络之间的数据报文转发包括以下步骤(1)虚拟机启动后,将虚拟机网络接口注册到节点服务器上的虚拟交换组件,建立虚拟机私有局域网;(2)所述虚拟交换组件和节点服务器上的地址转换组件之间建立虚拟接口;(3)所述虚拟交换组件对来自虚拟机的数据报文进行二层交换转发,发送给所述虚拟接口,所述虚拟接口解除数据报文的链路层封装后发送给所述地址转换组件,所述地址转换组件对数据报文进行地址转换后发送到外部网络;(4)所述地址转换组件对来自外部网络的数据报文进行地址转换后发送给所述虚拟接口,所述虚拟接口对数据报文进行链路层封装后发送给所述虚拟交换组件,所述虚拟交换组件进行二层交换转发,将数据报文发送给虚拟机;(5)完成虚拟机与外部网络之间的数据报文交互转发。
2.根据权利要求1所述的方法,其特征在于,所述步骤C3)包含步骤(31)所述虚拟交换组件根据数据报文的目的MAC地址查找对应的虚拟机网络接口, 进行二层交换转发,将数据报文发送给所述虚拟接口 ;(32)所述虚拟接口解除数据报文的链路层封装,将数据报文发送给所述地址转换组件;(33)所述地址转换组件将数据报文的源地址/端口由虚拟机的地址/端口转换为节点服务器的地址/端口,然后根据数据报文的目的地址查找路由表,获取下一跳的出口 ;(34)调用物理网络接口驱动,将数据报文发送到外部网络。
3.根据权利要求1所述的方法,其特征在于,所述步骤(4)包含步骤(41)物理网络接口收到外部网络发来的数据报文,发送给所述地址转换组件;(42)所述地址转换组件将数据报文的目的地址/端口由节点服务器的地址/端口转换为虚拟机的地址/端口,发送给所述虚拟接口 ;(43)所述虚拟接口查找ARP获取链路层封装信息,对数据报文进行链路层封装,将数据报文发送给所述虚拟交换组件;(44)所述虚拟交换组件根据数据报文的目的MAC地址查找对应的虚拟机网络接口, 进行二层交换转发,将数据报文发送给虚拟机。
4.一种云计算虚拟交换系统的虚拟交换方法,其特征在于,虚拟机发生迁移时,能够同步迁移虚拟机网络接口的状态和规则,包括以下步骤(1)在物理服务器上部署虚拟交换系统,部署过程中指定管理服务器及其IP地址;在管理服务器上安装监控管理组件,所述监控管理组件启动后创建一个线程监听端口 ;(2)将虚拟机的网络接口注册到节点服务器上的虚拟交换组件后,节点服务器上的虚拟交换组件能通过如权利要求1所述虚拟交换方法与外部网络连接,并由外部网络通过该线程监听端口与所述监控管理组件建立连接,以将虚拟机ID发送给所述监控管理组件,所述监控管理组件为虚拟机建立一个缓存块;(3)虚拟机发生迁移时,源节点服务器上的虚拟交换组件与管理服务器上的监控管理组件建立连接,源节点服务器上的虚拟交换组件将虚拟机网络接口的状态和规则发给所述监控管理组件的该缓存块进行缓存;(4)源节点服务器上的虚拟交换组件注销虚拟机网络接口;(5)虚拟机迁移完成后,目的节点服务器上的虚拟交换组件对迁移后的虚拟机网络接口进行注册;(6)目的节点服务器上的虚拟交换组件与所述监控管理组件再次建立连接,获取该缓存块所保存的虚拟机网络接口的状态和规则,进行设定。
5.一种云计算系统的虚拟交换系统,其特征在于所述的应用系统包括以下部分虚拟交换组件用于注册虚拟机网络接口,对数据报文进行二层交换转发;地址转换组件对来自虚拟接口的数据报文,将数据报文的源地址/端口由虚拟机的网络地址/端口转换为物理服务器的地址/端口,发送到外部网络;对来自外部网络的数据报文,将数据报文的目的地址/端口由物理服务器的网络地址/端口转换为虚拟机的地址 /端口,发送到虚拟接口 ;虚拟接口 建立于所述虚拟交换组件与所述地址转换组件之间,对来自虚拟机的数据报文,解除链路层封装;对来自外部网络的数据报文,进行链路层封装。
6.如权利要求5所述的虚拟交换系统,其特征在于还包括一个位于云计算管理服务器上的监控管理组件,该虚拟交换组件能与该监控管理组件连接以同步虚拟机网络接口的状态和规则,当虚拟机发生迁移时,源节点服务器上的虚拟交换组件通过网络与所述监控管理组件连接,并将虚拟机网络接口的状态和规则发送到监控管组组件进行缓存,而当虚拟机迁移完成之后,目的节点服务器上的虚拟交换组件再次通过网络与监控管理组件连接,以获取所缓存的虚拟机网络接口状态和规则,以便进行设定。
7.如权利要求5或6所述的虚拟交换系统,其特征在于还包括一个安装在节点服务器上的网桥兼容组件,该网桥兼容组件能兼容所有的Iinux网桥命令,以便使用Iinux系统自带的网桥命令对系统进行配置管理。
全文摘要
本发明公开了一种云计算系统的虚拟交换方法,本发明还涉及一种实现该方法的系统。本发明的系统由虚拟交换组件、虚拟接口、地址转换组件、网桥兼容组件和监控管理组件五部分组成,通过对数据报文的虚拟二层转发和地址转换实现虚拟机与外部网络的通信,虚拟机发生迁移时能够同步迁移虚拟机网络接口的状态和规则。本发明实现的虚拟交换系统,提供了高效的二层转发能力和地址转换能力,解决了云计算系统私有局域网中的虚拟机与外部网络通信、虚拟机网络接口状态和规则同步迁移的问题,无需额外的硬件设备,具有易用性高和成本低廉的优点。
文档编号H04L12/56GK102457439SQ20111040486
公开日2012年5月16日 申请日期2011年12月7日 优先权日2011年12月7日
发明者兰雨晴, 夏颖, 宋潇豫, 张永军, 杨文 申请人:中标软件有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1