虚拟机报文控制方法及装置与流程

文档序号:12829019阅读:507来源:国知局
虚拟机报文控制方法及装置与流程

本发明涉及openstack(开放堆栈)技术领域,尤其涉及虚拟机(vm,virtualmachine)报文控制方法及装置。



背景技术:

openstack是一个开源的云计算管理平台项目,支持几乎所有类型的云环境。openstack通过各种互补的服务提供了基础设施即服务(iaas,infrastructureasaservice)的解决方案,每个服务提供api(applicationprogramminginterface,应用程序接口)以进行集成。

标准的openstack网络一般由控制节点、网络节点和计算节点组成。控制节点是openstack网络的核心,它管理着网络节点和计算节点。控制节点控制计算节点完成虚拟机的创建、启动和停止等功能。计算节点创建的虚拟机通过网络节点访问外部网络,位于不同计算节点的虚拟机也要通过网络节点进行互通。

由于虚拟机的报文在转发时并不经过计算节点,所以计算节点无法对虚拟机的报文进行过滤,也就无法对虚拟机的报文进行转发控制。



技术实现要素:

本发明实施例提供vm报文控制方法及装置。

本发明的技术方案是这样实现的:

一种vm报文控制方法,应用于openstack平台,通过所述openstack平台创建有虚拟网络系统,所述虚拟网络系统中虚拟有虚拟网络设备,该方法包括:

openstack控制节点创建vm的端口,将为所述vm生成的端口通用唯一标 识uuid和所述端口应用的转发规则告知给sdn控制器;

在所述虚拟网络系统中创建完所述vm后,openstack控制节点接收openstack计算节点查询到的所述vm的端口标识id,其中,所述vm的端口id为所述虚拟网络系统根据配置的端口组分配的;

openstack控制节点将vm的端口id和vm的端口uuid的对应关系发送给sdn控制器,以使得所述sdn控制器根据该端口所应用的转发规则生成流表,并根据所述对应关系,将所述流表下发给所述虚拟网络设备。

一种vm报文控制方法,应用于软件定义网络sdn控制器;在openstack平台中创建有虚拟网络系统,所述虚拟网络系统中虚拟有sdn虚拟网络设备,该方法包括:

在openstack控制节点创建vm的端口后,sdn控制器获知由openstack控制节点生成的vm的端口通用唯一标识uuid和所述端口应用的转发规则;

sdn控制器接收并保存vm的端口id和vm的端口uuid的对应关系;

sdn控制器根据所述端口应用的转发规则生成流表,并根据所述对应关系将所述流表下发给虚拟网络设备。

一种vm报文控制装置,位于openstack平台中,通过所述openstack平台创建有虚拟网络系统,所述虚拟网络系统中虚拟有虚拟网络设备,该装置包括:

端口创建通知模块:创建虚拟机vm的端口,将为所述vm生成的端口通用唯一标识uuid和所述端口应用的转发规则告知给sdn控制器;

端口更新通知模块:在所述虚拟网络系统中创建完所述vm后,接收openstack计算节点查询到的所述vm的端口标识id,其中,所述vm的端口id为所述虚拟网络系统根据配置的端口组分配的;将vm的端口id和vm的端口uuid的对应关系发送给sdn控制器,以使得所述sdn控制器根据该端口所应用的转发规则生成流表,并根据所述对应关系,将所述流表下发给所述虚拟网络设备。

一种vm报文控制装置,位于软件定义网络sdn控制器中;在openstack 平台中创建有虚拟网络系统,所述虚拟网络系统中虚拟有sdn虚拟网络设备,该装置包括:

端口创建通知接收模块:在openstack控制节点创建虚拟机vm的端口后,获知由openstack控制节点生成的vm的端口通用唯一标识uuid和所述端口应用的转发规则;

流表生成模块:接收并保存vm端口id和vm的端口uuid的对应关系;根据所述端口应用的转发规则生成流表,并根据所述对应关系将所述流表下发给虚拟网络设备。

可见,本发明中,openstack控制节点将vm的端口uuid和vm的端口id的对应关系发送给sdn控制器,sdn控制器根据该端口所应用的转发规则生成流表,并根据该对应关系,将该流表下发给虚拟网络设备,从而实现了对vm报文的转发控制。

附图说明

图1为sdn系统的示意图;

图2为本发明一实施例提供的openstack网络拓扑示意图;

图3为本发明一实施例提供的应用于openstack平台的vm报文控制方法流程图;

图4为本发明一实施例提供的应用于sdn控制器的vm报文控制方法流程图;

图5为本发明另一实施例提供的openstack网络拓扑的示意图;

图6为本发明一实施例提供的当计算节点支持vmwarevsphere类型的hypervisor时进行vm报文控制的消息流程图;

图7为本发明一实施例提供的当计算节点支持vmwarevsphere类型的hypervisor时进行vm报文控制的消息流程图;

图8为本发明实施例提供的位于openstack平台中的vm报文控制装置的组成示意图;

图9为本发明实施例提供的位于sdn控制器中的vm报文控制装置的组成示意图。

具体实施方式

下面结合附图及具体实施例对本发明再作进一步详细的说明。

sdn(softwaredefinednetwork,软件定义网络)是一种新型的网络通信架构。sdn技术实现了对网络设备的集中控制、分布转发。在sdn技术中,将网络功能分为控制器和数据通道两个部分,这两部分之间通过一个安全通道进行交互。在控制器上,可以对其控制的网络设备进行集中管理,对网络行为进行统一编排,然后规定数据通路的转发行为。sdn技术大大增加了网络管理的可控性、灵活性。目前,sdn的具体实现有各种不同的技术,其中最主流的是openflow(开放流)技术。

openflow是使传统的二层和三层交换机具备了细粒度流转发能力,即传统的基于mac(mediaaccesscontrol,媒体访问控制)的网包转发、基于ip的路由转发,被拓展到了基于多域网包包头描述的流转发。同时,传统的控制层面从转发设备中剥离出来,所有转发行为的决策从交换机自身“迁移”到了某个集中控制器上。

图1为sdn系统的示意图。

支持openflow协议的交换机可以称为openflow交换机,每个openflow交换机都有一张流表进行报文的查找和转发。openflow交换机可以通过openflow协议经一个安全通道连接到外部控制器(controller),对流表进行查找和管理。

流表包括包头域(headerfields)、活动计数器(counters)以及0个或多个执行动作(actions)。对每一个包进行查找,如果匹配则执行相关策略,否则通过安全通道上送到控制器(controller),由控制器(controller)决定相关行为。

包头域包括12个域,如表1所示,包括:进入接口(ingressport), 以太网源地址(ethersrc)、以太网目的地址(etherdst)、以太网类型(ethertype),虚拟局域网标识(vlanid),虚拟局域网优先级(vlanpriority),ip源地址(ipsrc)、ip目的地址(ipdst)、协议(protocol)、ip服务类型(iptos)位,传输控制协议/用户数据报协议源端口(tcp/udpsrcport)、tcp/udp目的端口(tcp/udpdstport)。每一个域包括一个确定值或者所有值(any),更准确的匹配可以通过掩码实现。

表1流表结构图

计数器可以针对每张表、每个流、每个端口、每个队列来维护,用来统计流量的一些信息,例如活动表项、查找次数、发送包数等。

每个表项对应到0个或者多个行动,如果没有转发行动,则默认丢弃。多个行动的执行需要依照优先级顺序依次进行,但对包的发送不保证顺序。另外交换机可以对不支持的行动返回错误(unsupportedflowerror)。

本发明所涉及的openstack网络拓扑示意图,如图2所示,包括openstack平台、虚拟网络系统和sdn控制器。openstack平台中包括openstack控制节点、openstack计算节点和openstack网络节点。基于openstack平台创建有虚拟网络系统,在虚拟网络系统中包含虚拟网络中心vcenter,以及在该虚拟网络系统中虚拟出的主机、虚拟网络设备和vm。该虚拟网络设备可以是虚拟交换机vswitch或虚拟路由器。

openstack控制节点、openstack计算节点和openstack网络节点之间通过管理网络实现连通;sdn控制器和虚拟网络设备基于openflow协议实现连通;虚拟网络设备和openstack网络节点之间通过数据网络实现连通;openstack网络节点与因特网进行通信。

在虚拟网络系统中运行有超级监督者hypervisor对虚拟网络系统中的资源进行监控,openstack计算节点需要支持该类型的hypervisor。例如,虚拟网络系统可以是kvm、vmware、citrix和xenserver等,则openstack计算 节点需要支持对应类型的hypervisor。

本发明提供了一种vm报文控制方法,应用于openstack平台,如图3所示,包括:

步骤301:openstack控制节点创建虚拟机vm的端口,将为所述vm生成的端口uuid(universallyuniqueidentifier,通用唯一标识)和所述端口应用的转发规则告知给sdn控制器。

其中,转发规则可以是openstack技术中的安全组规则。在openstack技术中,配置有vm的端口应用的安全组以及安全组规则,每个安全组中可以包含多个安全组规则,每个安全组设置有一个唯一的标识称为安全组标识。

或者,该转发规则也可以是服务链信息。在openstack技术中,可以设置服务链和服务链信息,服务链指报文所进行转发时所需要经过的多个服务节点,服务链信息指各服务节点的相关信息(例如五元组信息),每一个服务链拥有自己的服务链标识进行识别。

步骤302:在所述虚拟网络系统中创建完所述vm后,openstack控制节点接收openstack计算节点查询到的所述vm的端口标识id。

其中,所述vm的端口id为所述虚拟网络系统根据配置的端口组分配的。在虚拟网络系统中配置有多个端口组,在创建完成vm后,vcenter会从配置的端口组中选取一个端口id配置给vm。

步骤303:openstack控制节点将vm的端口id和vm的端口uuid的对应关系发送给sdn控制器,以使得所述sdn控制器根据该端口所应用的转发规则生成流表,并根据所述对应关系,将所述流表下发给所述虚拟网络设备。

在openstack计算节点查询到的端口id之后,openstack获知查询到的端口id,并告知sdn控制器。此时,sdn控制器下发vm的端口id和vm的uuid之间的对应关系时,可以基于openstack协议中的端口更新报文告知,这样便可以不改变现有的openstack协议并且不在openstack协议中添加新的报文类型。具体为,将端口id写入到端口更新报文的端口名称字段 中,并且该端口更新报文会携带端口uuid,那么,sdn控制器可以在端口更新报文中同时获得vm的端口id和端口uuid,并记录二者之间的对应关系。

相对应的,本发明还提供了一种vm报文控制方法,应用于sdn控制器,如图4所示,包括:

步骤401:在openstack控制节点创建虚拟机vm的端口后,sdn控制器获知由开放堆栈openstack控制节点生成的vm的端口通用唯一标识uuid和所述端口应用的转发规则。

步骤402:sdn控制器接收并保存的vm的端口id和vm的端口uuid的对应关系。

步骤403:sdn控制器根据所述端口应用的转发规则生成流表,并根据所述对应关系将所述流表下发给虚拟网络设备。

在本发明提供的一种vm报文控制方法通过在openstack平台和虚拟网络系统的组网下,通过sdn控制器根据配置的转发规则生成流表,并结合vm的端口id和端口uuid之间的对应关系,将生成的流表下发给对应的虚拟网络设备,从而实现虚拟网络系统中对不经过openstack计算节点的报文转发控制。

图5为本发明另一实施例提供的openstack网络拓扑的示意图,其中,vswitch支持openflow协议,计算节点支持vmwarevsphere类型的hypervisor,物理主机为esxi主机。

图6为本发明一实施例提供的当计算节点支持vmwarevsphere类型的hypervisor时进行vm报文控制的消息流程图,其具体步骤如下:

步骤600:设置sdn控制器,在vmwarevsphere的esxi主机中设置openflow虚拟交换机(vswitch)来替换vmwarevsphere自带的虚拟交换机。

sdn控制器独立于openstack网络,且独立于vmwarevsphere。

步骤601:openstack控制节点将自身配置的各安全组标识(id)以及各 安全组的规则发送给sdn控制器。

步骤602:openstack控制节点向openstack计算节点发送虚拟机(vm,virtualmachine)创建消息,该消息携带需要创建的vm的规格等信息。

vm的规格包括:vm的cpu、内存等。

步骤603:openstack计算节点接收openstack控制节点发来的vm创建消息,与openstack控制节点交互确定需要创建的vm的端口uuid(universallyuniqueidentifier,通用唯一标识)、端口ip地址、端口mac地址、端口所使用的安全组id等信息。

步骤604:openstack控制节点向sdn控制器发送vm端口创建消息,该消息携带需要创建的vm的端口uuid、端口ip地址、端口mac地址、端口所使用的安全组id等信息,sdn控制器保存vm端口创建消息携带的vm的端口uuid、端口ip地址、端口mac地址、端口所使用的安全组id等信息。

步骤605:openstack计算节点向vmwarevsphere的vcenter(虚拟中心节点)发送vm创建消息,该消息携带需要创建的vm的规格以及端口mac地址等信息。

步骤606:vcenter接收该vm创建消息,将该消息转发给esxi主机,esxi主机根据需要创建的vm的规格为vm分配对应的资源,且vcenter将该vm的端口加入端口组,并为该vm的端口分配端口id。

步骤607:vcenter接收esxi主机发来的vm创建完成消息,将该消息转发给openstack计算节点。

步骤608:openstack计算节点接收vcenter发来的vm创建完成消息,向vcenter发送vm端口id查询消息。

步骤609:vcenter接收该vm端口id查询消息,将vm的端口id携带在vm端口id查询响应消息中返回给openstack计算节点。

步骤610:openstack计算节点接收该vm端口id查询响应消息,将端口id携带在vm端口更新消息中发送给openstack控制节点。

步骤611:openstack控制节点接收该vm端口更新消息,向sdn控制器发送携带vm的端口uuid和端口id的vm端口更新消息;sdn控制器接收该vm端口更新消息,保存该消息携带的vm的端口uuid和端口id的对应关系。

步骤612:openstack计算节点通知vcenter启动vm。

步骤613:vswitch在vm启动后,向sdn控制器发送端口状态消息,该消息携带端口id和端口状态:up。

步骤614:sdn控制器接收该端口状态消息,根据该消息中的端口id查找到对应的端口uuid,根据该端口uuid查找到端口的安全组id,根据该安全组id查找到对应的安全组规则,将该安全组规则转化成openflow流表的格式,将转换得到的openflow流表下发给vswitch。

图7为本发明另一实施例提供的当计算节点支持vmwarevsphere类型的hypervisor时进行vm报文控制的消息流程图,其具体步骤如下:

步骤700:设置sdn控制器,在vmwarevsphere的esxi主机中设置openflow虚拟交换机(vswitch)来替换vmwarevsphere自带的虚拟交换机。

sdn控制器独立于openstack网络,且独立于vmwarevsphere。

步骤701:openstack控制节点将自身配置的子网标识发送给sdn控制器,sdn控制器保存管理员配置的子网标识与重定向的服务节点标识的对应关系。

步骤702:openstack控制节点向openstack计算节点发送vm创建消息,该消息携带需要创建的vm的规格等信息。

vm的规格包括:vm的cpu、内存等。

步骤703:openstack计算节点接收openstack控制节点发来的vm创建消息,与openstack控制节点交互确定需要创建的vm的端口uuid、端口ip地址、端口mac地址等信息。

步骤704:openstack控制节点向sdn控制器发送vm端口创建消息, 该消息携带需要创建的vm的端口uudi、端口ip地址、端口mac地址等信息,sdn控制器保存vm端口创建消息携带的vm的端口uudi、端口ip地址、端口mac地址等信息。

步骤705:openstack计算节点向vmwarevsphere的vcenter发送vm创建消息,该消息携带需要创建的vm的规格以及端口mac地址等信息。

步骤706:vcenter接收该vm创建消息,将该消息转发给esxi主机,esxi主机根据需要创建的vm的规格为vm分配对应的资源,且vcenter将该vm的端口加入端口组,并为该vm的端口分配端口id。

步骤707:vcenter接收esxi主机发来的vm创建完成消息,将该消息转发给openstack计算节点。

步骤708:openstack计算节点接收vcenter发来的vm创建完成消息,向vcenter发送vm端口id查询消息。

步骤709:vcenter接收该vm端口id查询消息,将vm的端口id携带在vm端口id查询响应消息中返回给openstack计算节点。

步骤710:openstack计算节点接收该vm端口id查询响应消息,将端口id携带在vm端口更新消息中发送给openstack控制节点。

步骤711:openstack控制节点接收该vm端口更新消息,向sdn控制器发送携带vm的端口uuid和端口id的vm端口更新消息;sdn控制器接收该vm端口更新消息,保存该消息携带的vm的端口uuid和端口id的对应关系。

步骤712:openstack计算节点通知vcenter启动vm。

步骤713:vswitch在vm启动后,向sdn控制器发送端口状态消息,该消息携带端口id和端口状态:up。

步骤714:sdn控制器接收该端口状态消息,根据该消息中的端口id查找到对应的端口uuid,根据该端口uuid查找到端口ip地址,根据端口ip地址查找到该ip地址所在子网重定向的服务节点标识,则得到vm的ip地址和端口id与重定向的服务节点标识的对应关系,将该对应关系转化成 openflow流表,将该openflow流表下发给vswitch。

本发明实施例带来的有益技术效果如下:

openstack控制节点在创建完vm的端口后,将vm的端口uuid发送给sdn控制器;openstack计算节点在该vm创建完成后向虚拟中心节点查询到该vm的端口id,并返回给openstack控制节点;openstack控制节点将该vm的端口id和端口uuid的对应关系发送给sdn控制器,sdn控制器根据该端口所应用的转发规则生成流表,并根据该对应关系,将流表下发给虚拟网络设备,从而实现了对vm报文的转发控制。

图8为本发明实施例提供的位于openstack平台中的vm报文控制装置的组成示意图,通过openstack平台创建有虚拟网络系统,虚拟网络系统中虚拟有虚拟网络设备,该装置主要包括:端口创建通知模块和端口更新通知模块,其中:

端口创建通知模块:创建vm的端口,将为该vm生成的端口uuid和该端口应用的转发规则告知给sdn控制器,并将该vm的端口uuid告知端口更新通知模块。

端口更新通知模块:在虚拟网络系统中创建完该vm后,接收openstack计算节点查询到的该vm的端口id,其中,该vm的端口id为虚拟网络系统根据配置的端口组分配的;将vm的端口id和vm的端口uuid的对应关系发送给sdn控制器,以使得sdn控制器根据该端口所应用的转发规则生成流表,并根据该对应关系,将该流表下发给虚拟网络设备。

一种实施例中,端口更新通知模块将vm的端口id和vm的端口uuid的对应关系发送给sdn控制器,具体为:

生成端口更新消息,其中,端口更新消息包含作为该vm的端口名称的端口id以及与该端口id对应的端口uuid;将端口更新消息发送给sdn控制器。

一种实施例中,端口创建通知模块进一步用于,在创建vm的端口之前,将所配置的转发组以及转发规则发送给sdn控制器,其中,每个转发组具有唯一的标识;

端口创建通知模块将为该vm生成的端口uuid和该vm的端口应用的转发规则告知给sdn控制器具体为:

将为该vm生成的端口uuid和为该vm的端口配置的转发组的转发组标识告知给sdn控制器。

一种实施例中,转发组为安全组,转发规则为安全组规则,转发组标识为安全组标识;

或者,转发组为服务链,转发规则为服务链信息,转发组标识为服务链标识。

图9为本发明实施例提供的位于sdn控制器中的vm报文控制装置的组成示意图,在openstack平台中创建有虚拟网络系统,虚拟网络系统中虚拟有sdn虚拟网络设备,该装置主要包括:

端口创建通知接收模块:在openstack控制节点创建vm的端口后,获知由openstack控制节点生成的vm的端口uuid和该端口应用的转发规则。

流表生成模块:接收并保存vm端口id和vm的端口uuid的对应关系;根据端口创建通知接收模块获知的该端口应用的转发规则生成流表,并根据该对应关系将该流表下发给虚拟网络设备。

一种实施例中,流表生成模块接收并保存vm的端口id和vm的端口uuid的对应关系,包括:

接收openstack控制节点的端口更新消息;对端口更新消息进行解析,获取vm的端口uuid和端口名称中携带的vm的端口id;保存vm的端口uuid和vm的端口id的对应关系。

一种实施例中,端口创建通知接收模块进一步用于,在获知由openstack控制节点生成的vm的端口uuid和该端口应用的转发规则之前,接收 openstack控制节点发来的转发组和转发规则,其中,每个转发组具有唯一的标识;

端口创建通知接收模块获知由openstack控制节点生成的vm的端口uuid和该端口应用的转发规则具体为:

接收openstack控制节点发来的vm的端口uuid以及该vm的端口使用的转发组的转发组标识,建立该vm的端口uuid和该vm的端口使用的转发组的转发组标识的对应关系;

流表生成模块根据该端口应用的转发规则生成流表,并根据该对应关系将该流表下发给虚拟网络设备包括:

根据转发组标识确定vm的端口应用的转发组所包含的转发规则;根据所确定的转发规则生成流表;根据该对应关系,将该流表下发给对应的虚拟网络设备。

一种实施例中,转发组为安全组,转发规则为安全组规则,转发组标识为安全组标识;

或者,转发组为服务链,转发规则为服务链信息,转发组标识为服务链标识。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。

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