一种基于ForCES的软件定义网络实现方法与流程

文档序号:11732088阅读:244来源:国知局
一种基于ForCES的软件定义网络实现方法与流程

本发明涉及网络通信技术领域,具体涉及一种基于forces的软件定义网络实现方法。



背景技术:

云计算是信息技术产业的一场新的革命,是继计算机革命和互联网革命后又一场重要的技术革命。云计算的出现,意味着人们可以使用互联网的虚拟资源,用户可以管理和控制所购买的服务,可以通过云计算在多租户的环境中得到按需分配的网络资源。由于网络只是业务部署的一部分。除了网络,还需要为业务分配计算资源、存储资源等。如果有一个平台,可以集中管理这些资源,且当虚拟机需要变更(增加,删除,迁移)的时候,只需要输入虚拟机所需的资源参数,然后该平台就可以根据资源参数自动计算并分配资源,这样的平台就是云计算平台。云计算在技术上需要实现虚拟化,并行计算,效用计算,负载均衡和网络存储等,虽然云计算是以前技术的整合,然而却能带来在生活生产方式和商业模式上的变化。openstack便具有这样的处理计算能力,通过openstack的各个组件多种模式的部署可以实现私有云,企业公有云和混合云的搭建。

openstack作为一个开源云操作系统吸引了来自全球的的开发者和技术专家参与其中。openstack是开源技术产品的集合,它提供可扩展、安全、基于标准的云计算软件解决方案,可用于管理一些基础设施中的资源如计算资源、存储资源、网络资源等。openstack的网络服务功能由neutron提供,neutron是用于管理openstack中网络资源的组件,neutron提供的可扩展架构允许用户部署和管理第三方插件及其他网络服务。neutron作为当下openstack领域的研究热点,已经朝着网络的软件定义网络化方向发展。ietfforces(forwardingandcontrolelementseparation,forces)作为实现软件定义网络网络架构的一种重要实现方式,目前在openstack的研究领域中涉及较少。

ietfforces是实现软件定义网络的重要技术手段,其核心思想是转发与控制分离。打破单一网络设备的“黑盒”现象作为forces的设计初衷,强调网络设备中的控制件与转发件的松耦合关系,并且能友好的支持开放可编程网络。由于以前ietfforces工作组一直将其技术定义在一个网络设备节点内,所以forces技术没有很好的被推广到类似云计算网络的应用中,限制了其在业界的受关注度和影响。本发明正是结合forces开放可编程、转发与控制分离的思想,以openstack与forces结合的方式实现控制平面与数据平面的分离,提高neutron网络的伸缩性,以及对网络的集中控制。在多租户、大规模的云环境中,neutron的性能会下降,为了减轻网络节点的三层流量集中的瓶颈。本发明通过引入forces来克服neutron的缺陷,通过实现neutron的三层服务接口为neutron提供分布式的虚拟路由功能,减小了故障域,避免单点故障。本发明通过引入forces旨在提高openstackneutron的可扩展性、性能和可靠性。



技术实现要素:

本发明的目的是克服现有技术的不足,提供一种基于forces的软件定义网络实现方法,包括如下步骤:

步骤(1)控制件以neutron插件的形态位于openstack控制节点之内,由数据库模块和远程过程调用模块组成,远程过程调用模块维护由forces格式消息组成的消息队列,所述openstack是一种常见的开源云操作系统,neutron是它实现网络功能的基本组件,forces是一种由互联网工程任务组所认定的网络控制协议;

步骤(2)转发件以neutron插件代理的形态位于openstack计算节点和网络节点之内,负责具体网络层功能的实现,由转发件对象逻辑功能块、接口逻辑功能块、远程过程调用逻辑功能块、路由逻辑功能块、浮动ip逻辑功能块组成,具体包含如下步骤:

2-1.转发件对象逻辑功能块采用linux操作系统的命名空间来隔离数据包的转发,将一个物理的三层网络隔离成两个或以上的独立虚拟三层网络,并通过创建一个虚拟路由器来为这些虚拟三层网络提供路由服务,该逻辑功能块的属性有物理和虚拟网络设备信息和路由规则;

2-2.接口逻辑功能块为虚拟路由器创建端口,并将租户网络中的子网绑定到该新创端口,该逻辑功能块的属性有端口标识号、端口连接子网的标识号、端口的mac地址、端口对应的ip地址;

2-3.远程过程调用逻辑功能块循环检测从控制件发送过来的远程过程调用请求,并这些请求进行处理,这些请求包括租户网络创建、更新路由、添加路由器接口和创建浮动ip,该逻辑功能块的属性有逻辑功能块的id号、处理动作和返回动作;

2-4.路由逻辑功能块为已经创建好的虚拟路由器配置静态路由表,路由表属性内容包含无类目标地址、下一跳信息,以及路由器的id;

2-5.浮动ip逻辑功能块为虚拟机分配浮动ip,并将该浮动ip与虚拟机内部ip一对一映射,使得外部网络可以通过访问该浮动ip来访问内部网络中的虚拟机,该逻辑功能块的属性有浮动ip编号、浮动ip、固定ip地址、网络标识号、虚拟路由器号;

步骤(3)用户通过控制件所提供的北向接口来实现网络的重新定义,这些北向接口包括:租户网络创建、对步骤(2)所述各逻辑功能块的属性的修改和查询操作,具体包含如下步骤:

3-1.用户通过调用北向接口发送网络重定义请求至控制件,请求类型包括:租户网络创建和逻辑功能块属性操作;

3-2.控制件中的数据库模块根据网络重定义请求中所包含的信息,执行数据库的写入或删除;

3-3.控制件中的远程过程调用模块根据网络重定义请求中所包含的信息构造forces格式消息,并放入步骤(1)所述的消息队列;

3-4.转发件中的远程过程调用逻辑功能块从消息队列中提取出请求类型和forces格式消息,如果请求类型为步骤3-1所述的租户网络创建,则进入3-5;如果请求类型为步骤3-1所述的逻辑功能块属性操作,则进入3-6;

3-5.转发件对象逻辑功能块创建步骤2-1所述的命名空间,进而为用户创建虚拟的三层网络;

3-6.转发件中的远程过程调用逻辑功能块根据步骤3-4所述的forces格式消息对步骤2所述的接口逻辑功能块、远程过程调用逻辑功能块、路由逻辑功能块组成、浮动ip逻辑功能块进行属性的修改和查询操作。

本发明以neutron的sdn框架为基础提出了一种基于forces扩展插件的实现方案,forces扩展插件的基本架构包括插件和插件代理两部分,控制件作为插件即neutron的扩展api,转发件作为插件代理即一个实现3层网络服务的代理嵌入到neutron中,控制件与转发件的信息交互采用rpc的方式,北向接口采用标准的api接口即restapi。本发明可以实现控制平面与数据平面的分离,提高neutron网络的伸缩性,以及对网络的集中控制;通过引入forces来克服neutron在多租户、大规模的云环境中性能下降的缺陷,通过集中式的控制平面来管理自己的虚拟化资源和网络。

附图说明

图1forces插件的逻辑架构图;

图2远程过程调用模型;

图3控制件插件所提供北向接口的调用示意图。

具体实施方式

本发明提供了一种基于forces的软件定义网络实现方法,包括如下步骤:

步骤(1)控制件以neutron插件的形态位于openstack控制节点之内,由数据库模块和远程过程调用模块组成,远程过程调用模块维护由forces格式消息组成的消息队列,所述openstack是一种常见的开源云操作系统,neutron是它实现网络功能的基本组件,forces是一种由互联网工程任务组所认定的网络控制协议;

步骤(2)转发件以neutron插件代理的形态位于openstack计算节点和网络节点之内,负责具体网络层功能的实现,由转发件对象逻辑功能块、接口逻辑功能块、远程过程调用逻辑功能块、路由逻辑功能块、浮动ip逻辑功能块组成,具体包含如下步骤:

2-1.转发件对象逻辑功能块采用linux操作系统的命名空间来隔离数据包的转发,将一个物理的三层网络隔离成两个或以上的独立虚拟三层网络,并通过创建一个虚拟路由器来为这些虚拟三层网络提供路由服务,该逻辑功能块的属性有物理和虚拟网络设备信息和路由规则;

2-2.接口逻辑功能块为虚拟路由器创建端口,并将租户网络中的子网绑定到该新创端口,该逻辑功能块的属性有端口标识号、端口连接子网的标识号、端口的mac地址、端口对应的ip地址;

2-3.远程过程调用逻辑功能块循环检测从控制件发送过来的远程过程调用请求,并这些请求进行处理,这些请求包括租户网络创建、更新路由、添加路由器接口和创建浮动ip,该逻辑功能块的属性有逻辑功能块的id号、处理动作和返回动作;

2-4.路由逻辑功能块为已经创建好的虚拟路由器配置静态路由表,路由表属性内容包含无类目标地址、下一跳信息,以及路由器的id;

2-5.浮动ip逻辑功能块为虚拟机分配浮动ip,并将该浮动ip与虚拟机内部ip一对一映射,使得外部网络可以通过访问该浮动ip来访问内部网络中的虚拟机,该逻辑功能块的属性有浮动ip编号、浮动ip、固定ip地址、网络标识号、虚拟路由器号;

步骤(3)用户通过控制件所提供的北向接口来实现网络的重新定义,这些北向接口包括:租户网络创建、对步骤(2)所述各逻辑功能块的属性的修改和查询操作,具体包含如下步骤:

3-1.用户通过调用北向接口发送网络重定义请求至控制件,请求类型包括:租户网络创建和逻辑功能块属性操作;

3-2.控制件中的数据库模块根据网络重定义请求中所包含的信息,执行数据库的写入或删除;

3-3.控制件中的远程过程调用模块根据网络重定义请求中所包含的信息构造forces格式消息,并放入步骤(1)所述的消息队列;

3-4.转发件中的远程过程调用逻辑功能块从消息队列中提取出请求类型和forces格式消息,如果请求类型为步骤3-1所述的租户网络创建,则进入3-5;如果请求类型为步骤3-1所述的逻辑功能块属性操作,则进入3-6;

3-5.转发件对象逻辑功能块创建步骤2-1所述的命名空间,进而为用户创建虚拟的三层网络;

3-6.转发件中的远程过程调用逻辑功能块根据步骤3-4所述的forces格式消息对步骤2所述的接口逻辑功能块、远程过程调用逻辑功能块、路由逻辑功能块组成、浮动ip逻辑功能块进行属性的修改和查询操作。

实施例

为了便于本领域一般技术人员理解和实现本发明,现结合附图进一步说明本发明的技术方案,给出一种本发明所述方法的具体实施方式。

一)总体方案设计

本发明采用一个控制件和一个转发件来实现forces的扩展插件,并基于此forces插件来实现neutron的三层转发功能,通过在每个计算节点部署插件代理来实现分布式路由功能,使openstack中只有南北流量走网络节点,而东西流量不用再走网络节点,直接由计算节点上的插件代理进行转发。如图1所示,控制件部署在控制节点,由数据库模块和远程过程调用模块组成;转发件部署在网络节点和计算节点,由转发件对象逻辑功能块、接口逻辑功能块、远程过程调用逻辑功能块、路由逻辑功能块、浮动ip逻辑功能块组成。

为了使neutron支持可能出现的ip地址重叠,转发件对象逻辑功能块采用linux操作系统的命名空间来隔离数据包转发。在三层网络上命名空间可以将一个物理的三层网络分割成几个独立的虚拟三层网络。每一个路由器运行在一个命名空间中,由qrouter-命名,如果一个节点不支持命名空间的话,则只能支持一个虚拟路由器。转发件对象逻辑功能块主要为neutron网络创建一个路由器,并通过对这个路由器的配置为openstack租户提供三层网络服务。接口逻辑功能块为虚拟路由器创建端口,并将租户网络中的子网绑定到该新创端口。循环检测从控制件发送过来的远程过程调用请求,如果有远程过程调用请求过来,比如需要更新路由、添加路由的接口、创建浮动ip等,当收到这些请求的时候,会去通知相应的逻辑功能块做进一步的处理。路由逻辑功能块为neutron网络提供三层路由功能,为已经创建好的虚拟路由器配置其静态路由。浮动ip逻辑功能块的主要功能是为虚拟机分配浮动ip,并将该浮动ip与虚拟机内部ip一对一映射,使外部网络可以通过访问该浮动ip来访问内部网络的虚拟机。

二)控制件主要模块设计

1.数据库模块

数据库模块是控制件的核心模块,负责对用户发送过来的请求进行相应数据库的读写操作。如用户通过horizon、cli命令或自定义脚本,发送与路由器或浮动ip相关的操作时,这些api请求首先到达neutron服务器,通过neutron提供的api扩展相对应,如果是创建、更新、删除等操作,则由控制件和数据库来完成,控制件操作数据库对其进行相应请求数据的写入和删除,然后通过远程过程调用协议机制来通知网络节点或计算节点上的转发件进行相应的操作。如果用户只通过horizon创建一个路由器,不进行任何操作的话,控制件只会操作数据库进行请求数据的写入,而不会通知转发件进行处理。图2是neutron三层网络的数据模型。

2.远程过程调用模块

在neutron中插件与代理通信采用的是一种远程过程调用(remoteprocesscall,rpc)机制,在openstack中,rpc采用应用层标准高级消息队列协议(advancedmessagequeuingprotocol,amqp)协议进行进程间的通信,如openstack采用了rabbitmq和qpid。

amqp即高级消息队列协议是一种开放的应用层标准协议服务于基于消息的中间件。它能够有效的支持各种通信模型,它以实现开放的合作开发为目的。一个完整的amqp包括系统类型、进程间对称的异步通信协议、消息格式、一系列标准化但可扩展的“消息能力”。amqp模型主要由发布者,中间件和订阅者三部分构成。中间件用来连接发布者和订阅者,实现消息的存储、交换和路由功能,发布者首先将消息发送给中间件,然后中间件将消息存储在消息队列中,最后订阅者从消息队列中获取消息。

在控制件插件与转发件代理中定义了两种rpc远程调用方式,即分别为rpc.call与rpc.cast。rpc.call方式是当rpcclient向rpcserver发送rpc调用的时候,需要获取到rpcserver的响应。而rpc.cast方式,是不需要获取服务器端的响应。rpc.call需要用到主题交换和直接交换这两种消息交换方式,主题交换是用于client端发送rpc请求到server端,而直接交换方式是server端向client端返回rpc调用结果。rpc.cast是初始化创建一个publisher,然后将消息发送到消息交换器,消息被交换器分发到相应的消息队列,最后被consumer获取到。

rpc模块的主要功能是控制件插件向转发件代理发送rpc请求,当控制件插件接收到neutron服务器发送过来的api请求(如nova发送过来创建网络的请求)的时候,会去操纵数据库模块调用neutron数据库对请求数据的写入,或者通过rpc通知转发件代理进行网络请求相应的处理操作。

如图2所示,neutron服务器负责接收外来的api网络请求,如果是关于三层的网络请求者会通过rpc发送给控制件插件进行进一步的处理,然后控制件插件会将该网络请求通过rpc发送给转发件代理进行三层网络的创建。

3.控制件插件所提供北向接口的调用过程

包含了控制件插件的neutron对外统一提供了北向的restapi,这其中分为标准的api和扩展api两组,定义了neutron中二层网络资源的接口和其基本属性的是neutron的核心api,允许用户对neutron核心网络资源进行增、删、改、查等操作,这其中包括网络、端口、子网。对于neutron的扩展api,对l2网络资源定义了其扩展的属性,同时网络的所有高级服务的api也都属于扩展的api,如负载均衡,虚拟专用网的api等。图3展示了neutronapi请求的处理过程。

当neutron服务启动的时候会去启动一个web服务器网关接口(webservergatewayinterface,wsgi)的服务,以及rpc-server的创建,rpc-client的创建,当neutron启动了wsgi后,会去监听api请求,然后由neutron的应用程序接口路由器(apirouter)分发至neutron的控制器,在apirouter类中有一个factory方法,这个方法可以返回一个apirouter的对象,apirouter类做了两件事,一个是加载插件对象,一个是为neutron的每一个资源注册相应的url,在控制器中有已经实例化的插件来处理发来的api请求,然后调用该插件中具体的方法进行处理并返回结果。

三)相关逻辑功能块模型建模

1.转发件对象逻辑功能块

引入网络命名空间后,即使不采用vlan等网络技术,也可以使在同一台物理设备上同时存在多个相同或不同的网络。网络命名空间可以对网络设备进行隔离,使属于不同的网络命名空间的网络设备互不影响。转发件对象逻辑功能块主要功能是为neutron网络创建一个路由器即开启一个由qrouter-命名的网络命名空间,然后通过控制件下发forces协议控制其他逻辑功能块对该路由器进行配置,实现租户之间不同网段的子网的互相访问,以及租户内部网络对外网的访问。

(1)输入描述:

输入:普通ip数据包。

(2)输出描述:

输出1:输出服务请求包。

输出2:无。

(3)metadata:

<routerid,value>:router的id号。

<nsname,value>:namespace由qrouter-routerid命名的名字。

(4)属性描述:

转发件对象逻辑功能块的主要属性包括一些物理或虚拟网络设备信息,以及一些路由规则信息。其中的路由规则属性可以进行配置,可以通过控制件下发forces协议消息控制路由逻辑功能块进行配置路由器的路由表信息,即为路由器添加一些静态路由。

2.接口逻辑功能块

接口逻辑功能块部署在转发件对象逻辑功能块之后,为通过转发件对象逻辑功能块创建好的路由器添加端口,并为此端口绑定一个子网,使该子网(虚拟交换机)能够连接到路由器上。当没有子网存在的时候,则会报错,并把错误信息上报给转发件。

(1)输入描述:

输入:无

(2)输出描述:

输出:无

(3)metadata:

<ifid,value>:router的端口id。

<subnetid,value>:该端口所连接的子网的id号。

<mac,value>:该端口的mac地址。

<ifip,value>:该端口的ip地址

(4)属性描述:

接口逻辑功能块的主要属性包括端口标识号、端口连接子网的标识号、端口的mac地址、端口对应的ip地址等。

3.远程过程调用逻辑功能块

远程过程调用逻辑功能块的主要功能是循环检测控制件通过rpc发送过来的forces协议消息,比如创建路由,更新路由,创建路由器端口,或更新浮动ip等。当收到这个forces消息后,会去通知相应的lfb(逻辑功能块)进行处理,如转发件对象逻辑功能块、接口逻辑功能块等。

(1)输入描述:

输入1:forces协议消息

输入2:元数据输入

(2)输出描述:

输出:解析后的forces协议消息

(3)metadata:

<rfid,value>:传递过来的forces协议消息id

(4)属性描述:

远程过程调用逻辑功能块的主要属性包括被调用lfb的id号、处理动作、返回动作等。当用户通过调用北向restapi发送更新neutron三层网络请求的时候,该请求会被发送到控制件,然后由控制件的远程过程调用模块进行处理,将该请求发送到转发件的远程过程调用逻辑功能块,最后由远程过程调用逻辑功能块通知相应的逻辑功能块进行进一步的处理。

4.路由逻辑功能块

路由逻辑功能块部署在接口逻辑功能块之后,其主要功能是为创建好的路由器添加静态路由。

(1)输入描述:

输入:无

(2)输出描述:

输出:无

(3)metadata:

<ruleid,value>router的静态路由表条目id

(4)属性描述:

路由逻辑功能块的主要属性包括静态路由表,路由表属性内容包含无类目标地址、下一跳信息,以及路由器的id。

5.浮动ip逻辑功能块

当外网用户要访问租户网络的虚拟机的时候,需要配置一个防火墙允许访问的公网ip,然后将这个公网ip与虚拟机的内网ip进行映射,浮动ip逻辑功能块的主要功能就是创建这些能访问的公网ip,并把这些公网ip映射到虚拟机内网ip,然后将这些浮动ip绑定到虚拟机。如果虚拟机宕机了话,浮动ip不会消失,可以分配给其他虚拟机。

(1)输入描述:

输入:无

(2)输出描述:

输出:无

(3)metadata:

<ftid>:分配浮动ip的id号

(4)属性描述:

浮动ip逻辑功能块的主要属性包括浮动ip匹配表,浮动ip匹配表的主要内容包括浮动ip的id号、浮动ip地址、固定ip地址、网络标识id号、routerid号等。

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