一种应用于软件定义网络的多控制器管理网络设备的方法
技术领域
本发明涉及网络虚拟化领域,具体涉及一种应用于软件定义网络(Software Defined Network, SDN)的多控制器管理网络设备的方法。
背景技术
从新一代网络基础架构来说,无论对于互联网还是电信网的发展,新一代网络都被认为应该具有分组化、多业务、QoS、宽带化、开放性、兼容性、移动性、泛在性、安全性、可管理/可运营性等多种特征。但是现有传统网络体系架构及设备在满足上述需求面前显得力不从心。对此,国际上出现了对后IP时代的新型网络架构研究,比如美国NSF资助的GENI(Global Environment for Network Innovation)计划(其原型PlanetLab是一个为互联网新技术和新应用的开发和测试服务的覆盖网络)、FIND(Future Internet Network Design)计划、欧盟FP7中下一代网络计划,ITU-T 的NGN 计划、日本的AKARI计划、韩国的下一代网络BcN(Broadband Convergence Network)计划、中国科技部863计划“新一代高可信网络”等。这些研究计划试图以革新或演变方式改变已有网络系统设计,让未来的互联网更加安全、可靠、可管理,而且更适合于未来的计算环境。
作为新一代网络研究领域的一个重要方向,ONF(Open Networking Foundation)组织在2011年提出的SDN(Software Defined Networking)受到了特别关注。SDN网络将传统网络中集中在数据平台的控制平台从数据平台中分离出来,并且引入了集中控制的概念。对于传统的设备,因为不同的硬件、供应商私有的软件,使得网络本身相对封闭,只能通过标准的互通协议与计算设备配合运行。网络中所有设备的自身系统都是相对孤立和分散的,网络控制分布在所有设备中,网络变更复杂、工作量大,并且因为设备异构,管理上兼容性很差,不同设备的功能与配置差异极大;同时网络功能的修改或演进,会涉及到全网的升级与更新。而在SDN的开放架构下,一定范围内的网络(或称SDN域),由集中统一的控制逻辑单元来实施管理,由此解决了网络中大量设备分散独立运行管理的问题,使得网络的设计、部署、运维、管理在一个控制点完成,而底层网络差异性也因为解耦合的架构得到了消除。集中控制在网络中引入了SDN区别于传统网络架构的角色——SDN控制器,也就是运行SDN网络操作系统并控制所有网络节点的控制单元。SDN能够提供网络应用的接口,在此基础上按照业务需求进行软件设计与编程,并且是在SDN控制器上加载,从而使得全网迅速升级新的网络功能,而不必再对每个网元节点进行独立操作。
然而,随着网络数量和尺寸的增加,整个网络依赖于单个的控制器变得有点困难。首先,随着交换机、流及带宽的增加,指向控制器的事件和请求将增加,单个控制器将不足以完全处理它们;其次,如果网络范围比较大,无论控制器放置在哪里,都将会有有一些交换机遭遇较长的流延时;再次,如果控制器因故停止工作,整个网络将会处于瘫痪状态。因此,研究一种用多控制器替代单个控制器的方案有是必要的。且当前情况下,不仅网络设备和控制器往往是不同的人来管理,为了促进竞争,多个控制器也很可能属于不同的人来管理。在这种情况下,关于多控制器的研究就可以分为两个方向,一是多个控制器由一个运营商提供;二是多个控制器由多个运营商提供。
HyperFlow设计了一种在逻辑上集中但在物理上分布的OpenFlow控制平面,它在网络集中控制的基础上实现了网络控制的扩展。HyperFlow不需要接触任何远程节点就可以使所有的控制器共享一致的全网视图和本地服务请求。
FlowVisor是在OpenFlow控制器和OpenFlow交换机之间充当透明代理的一种特殊用途的OpenFlow控制器。FlowVisor通过切割网络资源并委派单个控制器观察控制自己切片范围内的交换机来实现随多个OpenFlow控制器的管理。
Onix是一个平台,在这个平台之上,一个网络控制平台可以作为一个分布式系统实施。在Onix中,控制平台通过收集交换机信息并分配适当的控制器状态给交换机来处理控制平台的状态分布。
Kandoo构建了两层的控制器:本地控制器和根控制器。本地控制器处理靠近交换机的本地应用,逻辑上集中的根控制器既负责全网状态的应用,同时负责本地控制器之间的协调工作。
SiBF用一些机架管理器(RM)替代一个集中的控制器。每一个机架上一个机架管理器,担当OpenFlow控制器的工作。
Devolved Controllers使一个控制器只负责一部分网络,所有控制器一起负责整个网络。当网络要求某个控制器实现路由功能时,它仅回应它负责的那部分拓扑的路由。
研究主要集中在多个控制器由一个运营商提供的情况,在他们的方案中,单个网络设备仅有一个控制器来管理。
发明内容
本发明的目的是克服现有技术的不足,提供一种应用于软件定义网络的多控制器管理网络设备的方法。本发明针对多个控制器由多个运营商提供的情况,提供了多个控制器管理单个网络的研究方案。如一个区域的光纤线路是由电信公司搭建的,公司A可以租用这个区域的线路进行视屏会议,同时公司B可租用这个区域的线路做其他的事情,在我们的方案中,光纤线路是网络设备,公司A、B是不同运营商提供的控制器。
一种应用于软件定义网络的多控制器管理网络设备的方法,SDN中,多个控制器管理多个网络设备,单个网络设备由多个控制器管理,该方法包括以下步骤:
1)用户提交网络应用请求,该应用请求通过多个虚拟网支撑。控制器接收部署虚拟网的请求,选择适当的网络设备部署虚拟网。
2)控制器选择网络设备发送建立连接请求,网络设备根据已建立连接的控制器数目及当前的资源状况决定是否接收连接请求。
3)连接建立后,网络设备定期向建立连接的控制器发布自己的资源状况。
4)如果仍有未部署的虚拟网,控制器将选择合适的网络设备发送部署虚拟网的请求。部署虚拟网的过程由两阶段提交(Two-Phase Commit,2PC)方法实现。
5)如果网络设备没有参与部署的虚拟网个数多于k个(k为正整数),控制器向该网络设备发送消息,要求断开连接。
6)连接断开一段时间后,控制器将重新发送连接请求给该网络设备要求重新建立连接。
7)SDN中的每个控制器及相关网络设备重复执行上述步骤2)-步骤6)。
步骤2)所叙述的控制器与网络设备建立连接的过程,包含如下步骤:
(1)采用OpenFlow协议,发送Hello消息,该消息携带支持的最高协议版本号;
(2)控制器主动发OFPT_HELLO消息给所管理的网络设备,同时网络设备发OFPT_HELLO消息给控制器。若双方支持的协议版本相同,则连接建立,否则发送OFPT_ERROR消息,描述失败原因,终止连接;
(3)如果控制该网络设备的控制器数已经达到上限或该网络设备资源不足,网络设备发送OFPT_ERROR消息给控制器,描述失败原因,终止连接。
步骤3)所叙述的网络设备发布自己资源状况的过程,包含如下步骤:
采用OpenFlow协议,网络设备端口状态发生变化,触发Port-status消息,网络设备发送Port-status消息给控制器告知自己的资源状况。
步骤4)所叙述的使用两阶段提交(Two-Phase Commit,2PC)方法部署虚拟网,包含如下步骤:
(1)控制器发送参与部署虚拟网的消息给所有相关的网络设备。
(2)如果网络资源有足够的资源来部署虚拟网,回复同意参加部署虚拟网的消息,否则,回复拒绝消息。
(3)如果所有网络设备均回复同意参加部署虚拟网,开始部署虚拟网,否则,虚拟网不被部署。
步骤5)所叙述的控制器与网络设备断开连接的过程,包含如下步骤:
采用OpenFlow协议,控制器发送携带连接不保持信息的Echo Request消息给网络设备,网络设备回复Echo Reply消息,同意中断连接,连接断开。
本发明提供了多控制器管理多网络设备的一般方法。本发明的显著技术优点是:通过支持多控制器管理同一个网络设备,解决了目前文献中尚未解决的多个控制器因为属于不同网络服务商而无法统一协调的问题;通过控制器与网络设备之间的自适应连接,提高了控制器对网络设备的管理效率。
附图说明
图1是应用于软件定义网络的多控制器管理网络设备的方法的结构示意图;
图2是SDN控制器与网络设备关系示意图;
图3是SDN控制器与网络设备连接建立示意图;
图4 是SDN 控制器管理网络设备示意图;
图5 是SDN控制器与网络设备连接断开示意图。
具体实施方式
以下通过附图和具体实施方式对本发明做进一步的说明。
如图1所示,一种应用于软件定义网络的多控制器管理网络设备的方法, SDN中,多个控制器管理多个网络设备,单个网络设备由多个控制器管理,该方法包括以下步骤:
1)用户提交网络应用请求,该应用请求通过多个虚拟网支撑。控制器接收部署虚拟网的请求,选择适当的网络设备部署虚拟网。
2)控制器选择网络设备发送建立连接请求,网络设备根据已建立连接的控制器数目及当前的资源状况决定是否接收连接请求。
3)连接建立后,网络设备定期向建立连接的控制器发布自己的资源状况。
4)如果仍有未部署的虚拟网,控制器将选择合适的网络设备发送部署虚拟网的请求。部署虚拟网的过程由两阶段提交(Two-Phase Commit,2PC)方法实现。
5)如果网络设备没有参与部署的虚拟网个数多于k个(k为正整数),控制器向该网络设备发送消息,要求断开连接。
6)连接断开一段时间后,控制器将重新发送连接请求给该网络设备要求重新建立连接。
7)SDN中的每个控制器及相关网络设备重复执行上述步骤2)-步骤6)。
步骤2)所叙述的控制器与网络设备建立连接的过程,包含如下步骤:
(1)采用OpenFlow协议,发送Hello消息,该消息携带支持的最高协议版本号;
(2)控制器主动发OFPT_HELLO消息给所管理的网络设备,同时网络设备发OFPT_HELLO消息给控制器。若双方支持的协议版本相同,则连接建立,否则发送OFPT_ERROR消息,描述失败原因,终止连接;
(3)如果控制该网络设备的控制器数已经达到某个上限或该网络设备资源不足,网络设备发送OFPT_ERROR消息给控制器,描述失败原因,终止连接。
步骤3)所叙述的网络设备发布自己资源状况的过程,包含如下步骤:
采用OpenFlow协议,网络设备端口状态发生变化,触发Port-status消息,网络设备发送Port-status消息给控制器告知自己的资源状况。
步骤4)所叙述的使用两阶段提交(Two-Phase Commit,2PC)方法部署虚拟网,包含如下步骤:
(1)控制器发送参与部署虚拟网的消息给所有相关的网络设备。
(2)如果网络资源有足够的资源来部署虚拟网,回复同意参加部署虚拟网的消息,否则,回复拒绝消息。
(3)如果所有网络设备均回复同意参加部署虚拟网,开始部署虚拟网,否则,虚拟网不被部署。
步骤5)所叙述的控制器与网络设备断开连接的过程,包含如下步骤:
采用OpenFlow协议,控制器发送携带连接不保持信息的Echo Request消息给网络设备,网络设备回复Echo Reply消息,同意中断连接,连接断开。
实施例
有四个服务提供商S1、S2、S3、S4,分别提供控制器C1、控制器C2、网络设备F1-F3和网络设备F4-F5。控制器选择网络设备进行管理。控制器C1管理服务提供商S3提供的网络设备,控制器C2同时管理服务提供商S3和 S4提供的网络设备(如图2)。
用户提交应用,每一个应用有一个或多个虚拟网支撑。控制器C1收到部署虚拟网VNn(n为正整数)的请求,查看相关数据库,了解到网络设备F1、F3适合参与部署虚拟网VNn。控制器C1向网络设备F1发送携带支持的最高协议版本号的Hello消息,同时F1向控制器C1也发送携带支持的最高协议版本号的Hello消息,双方支持的协议版本相同,连接建立。网络设备F3与控制器C1建立连接过程同上。当网络设备F1、F3端口状态发生变化,触发Port-status消息,向控制器C1公布自己的资源状况。控制器C1向网络设备F1、F3发送参与部署虚拟网VNn的消息,F1和F3有足够的资源部署虚拟网VNn,同意参与部署虚拟网VNn,参与部署虚拟网VNn(如图3)。如果两者其中之一或均不同意参与部署虚拟网,虚拟网VNn则不被部署。同样的步骤F1、F2、F3、F5与C2建立连接并参与部署相关的虚拟网(如图4)。当C1和C2同时分别要求其共同管理的网络设备(以F3为例)参与部署虚拟网VNm和VNw(m和w为不同的正整数)时,一种方法是C1和C2可以先协商好具体需要部署那个虚拟网,然后发消息给F3,要求F3参与部署虚拟网。在我们的方案中,F3根据自己的资源状况决定是否参与部署虚拟网VNm或VNw。
控制器C2根据F1发布的资源状况知道F1没有参与部署的虚拟网个数超过k个,控制器C2发Echo Request消息给网络设备F1,要求连接不保持,F1回复Echo reply,同意断开连接,C2与F1的连接中断(如图5)。间隔T时间段后,控制器C2主动发Hello消息给网络设备F1,再次请求建立连接。如果控制网络设备F1的控制器数没有达到某个上限或F1有充足的资源剩余,连接将被重新建立。如果不对连接状态加以限制,即连接不会因网络设备不参与的虚拟网个数超过某个值而断开。例如,排除其他原因,C2与F1一直处于连接状态,平均每小时内,C2会向F1发送i(i为正整数)条消息要求网络设备参与构建虚拟网,网络设备F1向控制器发送j(j为正整数)条消息公布自己的资源状况。在我们的方案中,如果每次连接断开时间是两个小时,那么这两个小时内,C2向F1发送的2i条要求网络设备参与构建虚拟网的消息及网络设备F1向控制器发送的2j条公布自己的资源状况的消息将可以被节省。