首页> 中国专利> 用于单个SDN/OpenFlow网络中高性能和高可用多控制器的装置

用于单个SDN/OpenFlow网络中高性能和高可用多控制器的装置

摘要

一种用于通过包括多个控制器的逻辑集中式多控制器将路由指令分配给OpenFlow软件定义网络(SDN)中的多个节点的方法,该方法包括:接收多个入数据包;存储多个当前流表;将所述入数据包进行排队,其中,所述入数据包基于入数据包的接收顺序进行排队;基于所述入数据包的排队顺序处理所述入数据包,其中,先排队的所述入数据包先处理;通过处理所述入数据包,生成多个流表;当所述流表还未预先生成时,将所述流表发送至所述多个节点。

著录项

  • 公开/公告号CN104885421A

    专利类型发明专利

  • 公开/公告日2015-09-02

    原文格式PDF

  • 申请/专利权人 华为技术有限公司;

    申请/专利号CN201380068863.6

  • 发明设计人 罗敏;田应军;李泉材;王蛟;

    申请日2013-12-28

  • 分类号

  • 代理机构

  • 代理人

  • 地址 518129 广东省深圳市龙岗区坂田华为总部办公楼

  • 入库时间 2023-12-18 10:40:55

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-07-20

    授权

    授权

  • 2015-09-30

    实质审查的生效 IPC(主分类):H04L12/937 申请日:20131228

    实质审查的生效

  • 2015-09-02

    公开

    公开

说明书

相关申请案交叉申请

本发明申请要求于2012年12月28日递交的发明名称“为用于单个 SDN/OpenFlow网络中高性能和高可用多控制器的装置”的第13/730,040号 美国非临时申请案的在先申请优先权,该在先申请的内容以引入的方式并入 本文。

背景技术

现代通信和数据网络包括多个网络节点,如路由器、交换机、桥以及通 过网络传输数据的其他设备。多年来,为支持互联网工程任务组(IETF)制 定的日益增长的协议和规范标准的数量,电信产业对网络节点进行了重大改 进。通过创建和耦合复杂网络节点来组成支持并实现各种IETF标准(如虚 拟专用网络要求)的网络已经在无意中使现代网络变得像迷宫一般难以管 理。因此,厂商和第三方运营商都不懈努力地不断定制、优化以及改进网络 节点交织而成的网络的性能。

软件定义网络(SDN)是一种在错综复杂的网络内解决定制和最优化问 题的新兴网络技术。通过将数据转发能力(即数据平面)从路由、资源以及 预先在分布式网络节点中执行的其他管理功能(即控制平面)中分离,SDN 简化了现代网络。为简化控制平面架构,SDN采用可包括一个或多个集中式 控制器的逻辑集中式系统,以管理控制平面。例如,从网络交换节点分离出 的多个服务器中的软件可以管理网络的控制平面功能,而网络中的网络交换 节点用于管理数据平面。目前,行业中已制定OpenFlow协议来支持SDN, 该协议提供数据平面和控制平面间的通信。OpenFlow协议使运营商或其他 第三方能够将各种网络交换节点的控制平面配置与数据平面配置进行分离。 因此,采用OpenFlow协议和SDN使厂商和第三方能够轻松地开发出用于优 化和提升网络性能的全新的网络管理和控制应用。

尽管结合SDN和OpenFlow能够实现网络定制化和最优化,但通过指定 一个集中式系统来管理所有控制平面功能必然也会给网络带来了诸多缺点。 例如,SDN/OpenFlow网络更容易受到集中式系统内所出现故障的影响,这 可能会造成计算和处理瓶颈。而且,集中式系统可能缺乏动态能力,无法轻 松适应和管理不同网络位置上不断变化的业务量。当有必要对集中式系统进 行成本昂贵的升级以便对新提供的网络节点和端业务(如主机)进行管理 时,网络扩展性也成为一个问题。

为缓解这些问题,一个设计方案是采用一个应用一组中央控制器的分布 式控制系统。该组中央控制器可以用作物理上不集中但逻辑上集中的系统。 但是,采用分布式控制系统面临集中式控制器故障(如单点故障)造成的负 载均衡和路径重路由的问题。可能有必要通过每个控制器和所有网络节点之 间的专用固定控制信道来实现控制平面。而且,随着集中式控制器数量的增 加,集中式控制器和网络节点之间的同步和其他过程时延可能会影响逻辑集 中式系统的管理容量。因此,有必要通过新技术来解决在大型错综复杂网络 中实现SDN和OpenFlow所出现的问题。

发明内容

在一个示例实施例中,本发明包括一种用于接收多个数据包并通过所述 多个数据包为多个节点提供路由指令的装置,包括激活控制器环,该激活控 制器环包括至少一个激活控制器,其中,所述激活控制器环用于接收第一数 据包;接收第二数据包;在通过第二激活控制器接收所述第二数据包的同 时,通过第一激活控制器处理所述第一数据包;计算多个基于处理所述第一 数据包和所述第二数据包生成的流表;通过多个出数据包发送所述多个生成 的流表,其中,当所述节点接收到所述出数据包时,所述生成的流表规定了 所述节点的路由行为。

在再一个示例实施例中,本发明包括一种用于通过控制平面向多个节点 提供路由指令的逻辑集中式多控制器,其中,所述逻辑集中式多控制器包 括:多个输入端口,其中,每个所述多个输入端口均用于接收输入帧;多个 输出端口,其中,每个所述多个输出端口均用于发送输出帧;耦合至所述多 个输入端口的排队控制器,其中,所述排队控制器用于基于所述输入帧的接 收顺序,临时存储所述输入帧;耦合至所述排队控制器的激活控制器环,其 中,所述激活控制器环包括多个激活控制器,所述多个激活控制器用于从所 述排队控制器接收所述输入帧,并处理所述输入帧以生成多个路由指令;耦 合至所述激活控制器环和所述多个输出端口的分配器,其中,所述分配器用 于通过所述多个输出端口,发送从所述激活控制器接收的所述多个路由指 令;耦合至所述激活控制器环和所述排队控制器的调度器,其中,所述调度 器用于基于所述排队控制器中临时存储的输入帧的数量,修改所述激活控制 器环内的激活控制器的数量。

在再一个示例实施例中,本发明包括一种用于通过包括多个控制器的逻 辑集中式多控制器将路由指令分配给OpenFlow软件定义网络(SDN)中的 多个节点的方法,该方法包括:接收多个入数据包;存储多个当前流表;将 所述入数据包进行排队,其中,所述入数据包基于入数据包的接收顺序进行 排队;基于所述入数据包的列队顺序处理所述入数据包,其中,先排队的所 述入数据包先处理;通过处理所述入数据包,生成多个流表;当所述流表还 未预先生成时,将所述流表发送至所述多个节点;修改控制器的数量以处理 所述入数据包;重用一组激活控制器以不断处理所述入数据包。

以下将通过详细的说明书并结合附图和权利要求,对上述发明内容和其 他特征进行更清楚的描述。

附图说明

为了更透彻地理解本发明,现参阅结合附图和具体实施方式而描述的以 下简要说明,其中的相同参考标号表示相同部分。

图1是一种包括集中式多控制器以管理控制平面功能的网络的一个实施 例的示意图;

图2A是一种用于通过集中式多控制器管理控制平面的方法的一个实施 例的流程图;

图2B是一种用于通过集中式多控制器管理控制平面的方法的另一个实 施例的流程图;

图3是一种管理从队列中接收数据的控制器数量的方法的一个实施例的 流程图;

图4A是一种管理网络的控制平面功能的集中式多控制器的一个实施例 的示意图;

图4B是一种管理网络的控制平面功能的集中式多控制器的另一个实施 例的示意图;

图4C是一种集中式多控制器中调度器将激活控制器从激活控制器环移 除的另一个实施例的示意图;

图4D是一种集中式多控制器中调度器将可用控制器分配至激活控制器 环的另一个实施例的示意图;

图4E是一种通过分配器将流表分配至网络节点的集中式多控制器的一 个实施例的示意图;

图5是一种通过集中式多控制器来管理网络的控制平面功能的消息交互 流程的一个实施例的协议图;

图6是一种适于实现本发明几个实施例的通用计算机系统的一个实施例 的示意图。

具体实施方式

首先应理解,尽管下文提供一项或多项实施例的说明性实施方案,但所 公开的系统和/或方法可使用任何数目的技术来实施,无论该技术是当前已 知还是现有的。本发明决不应限于下文所说明的说明性实施方案、附图和技 术,包括本文所说明并描述的示例性设计和实施方案,而是可在所附权利要 求书的范围以及其等效物的完整范围内修改。

此处公开了一种方法、装置和系统,以实现对网络的控制平面进行管理 的集中式多控制器。所述集中式多控制器可以采用激活控制器环,其中的调 度器组件可以动态地修改该激活控制器环内激活控制器的数量。可以从可用 控制器池中添加额外的激活控制器到所述控制器环。所述激活控制器环内的 每个激活控制器可以配置为“主”状态,“从”状态,或“平等”状态。所 述集中式多控制器可以指定一个激活控制器为当前“主”控制器,所述激活 控制器环内剩余的激活控制器为“从”控制器。该当前“主”控制器可以针 对从网络节点接收的入数据包监听排队控制器。当当前“主”控制器接收到 所述入数据包时,当前“主”控制器可以切换到“从”状态并继续处理所述入数 据包。然后,“从”控制器可以切换至“主”状态并监听来自共享排队控制器的 新数据包。接收到入数据包的激活控制器可以处理所述数据包,以生成可以 用来更新一个或多个网络节点中流表的流表。

图1是一种包括集中式多控制器102以管理控制平面功能的网络100的 一个实施例的示意图。所述网络100可以是任何传输数据的网络,例如互联 网协议(IP)网络,多协议标记交换(MPLS)网络,或者以太网络等。网 络100可以是包括多个符合OpenFlow协议的网络节点(如交换机)的网 络。所述网络100可以是运行在电气域、光域或者两种域的组合中的网络。 所述网络100可以提供无需使用预先配置的路径将数据从一个节点106转发 至另一节点106的数据业务。在所述网络100的另一个实施例中,数据可以 经过网络沿集中式控制器确定的预先设置或预先建立的路径从一个节点106 转发至另一节点106。

所述集中式多控制器102可以包括图1未示出的多个激活控制器,而且 可以用于监控所述网络100的路由和其他管理功能(如控制平面)。所述集 中式多控制器102可以通过控制路径110管理多个网络节点104a-d的控制平 面。在一个实施例中,所述集中式多控制器可以是SDN控制器,用于使用 OpenFlow协议访问所述网络节点104a-d的转发平面。本领域普通技术人员 可以意识到所述集中式多控制器102可以使用其他开放应用程序接口 (API)业务访问所述网络节点104a-d的转发平面。

所述网络节点104a-d可以包括交换设备(如交换机和路由器等),这 些交换设备符合OpenFlow组织在2011年12月发布的OpenFlow规范1.2版 本中定义的OpenFlow协议,该协议的内容整体并入本文中。所述网络节点 104a-d也可以包括符合OpenFlow协议先前版本(如1.0版本和1.1版本)的 交换设备。所述网络节点104a-d可以通过数据路径108相互耦合,同时所述 网络节点104a-d也可以通过控制路径110耦合至所述集中式多控制器102。 数据路径108和控制路径110都可以是直连链路,例如光纤链路、电气链 路、无线链路或间接链路等,如图1中未示出的与中转节点连接的逻辑连接 或物理链路。所述数据路径108可以包括单跳链路,或一系列平行链路,或 图1未示出的多个互连的网络节点,或上述的各种组合,以在网络100中管 理转发平面。所述控制路径110可以与所述数据路径108大体相似,只是所 述控制路径110可以用于管理控制平面。图1也示出了所述网络节点104a-d 可以通过数据路径108耦合至多个末端节点106a-h。所述末端节点106a-h可 以包括主机、服务器、存储设备或其他类型的可以向网络100发送数据或从 网络100接收数据的终端设备。

图2A是一种用于通过集中式多控制器管理控制平面的方法200的一个 实施例的流程图。所述方法200可以从方框202开始,即可以从网络节点接 收入数据包。在所述方法200接收所述入数据包之前,该网络节点可能已从 一个末端节点或另一网络节点接收数据包。并且,在方框202,所述方法 200可以从相同或不同的网络节点接收不止一个数据包。例如在图1中,集 中式多控制器102可能已从网络节点104a和104b接收不同的数据包。又例 如,所述集中式多控制器102可以从所述网络节点104a接收来源于末端节 点106a和106b的数据包。来源于所述末端节点106a和106b以及所述网络 节点104b的数据包可能需要所述集中式多控制器102计算并生成不同的流 表或路由指令。

在一个实施例中,方法200可能会因为新数据流而从一个网络节点和/ 或末端节点接收数据包。以图1为例,网络100可以通过网络节点104a、b 和d建立从末端节点106a到末端节点106f的新数据流。为了获得针对新数 据流的路由信息,所述集中式多控制器102可以通过所述网络节点104a接 收所述末端节点106a为该新流发送的第一数据包。或者,当网络中发生其 他变化时,例如网络状态改变(如节点和链路故障等)、网络应用修改、用 户优先级修改和/或服务质量(QoS)修改等,所述集中式多控制器102可以 从网络节点104和/或末端节点106接收数据包。

在接收入数据包后,所述方法200继续进入到方框204。在方框204, 所述入数据包可以放入排队控制器中,以临时存储入数据包。方框204之后 可以基于排队控制器接收入数据包的顺序将队列中存储的数据包转发出去。 以图1为例,在从网络节点104b接收第二数据包之前,所述排队控制器可 以从网络节点104a接收数据包。因此,方框204的一个实施例可以为先进 先出(FIFO)队列,即在转发来自节点104b的第二数据包之前转发来自节 点104a的数据包。一旦数据包被推送到所述排队控制器堆栈前部或顶部, 所述方法200继续进入到方框206,将来自所述排队控制器的入数据包转发 至激活控制器环内的当前“主”控制器。该当前“主”控制器可以是所述激 活控制器环内唯一接收来自所述排队控制器数据包的激活控制器。图4A和 4B将更详细地描述激活控制器环和激活控制器配置。

所述方法200再继续进入到方框208,在方框208处判断所述激活控制 器环内的下一个激活控制器是否可用来接收另一入数据包。如果下一个激活 控制器不可用,所述方法200可以继续进入方框210,等待下一个激活控制 器变为可用。通过循环方框208和方框210,所述方法200可以继续等待并 检查下一个激活控制器是否可用来接收消息。一旦所述激活控制器环内的下 一个激活控制器可用来接收消息,所述方法可以继续进入到方框212。

在从所述排队控制器接收数据包后,在方框212可以切换当前“主”控 制器为“从”控制器。当当前“主”控制器切换为“从”控制器时,该控制 器可以不再从所述排队控制器接收数据包。随后,方法200继续进入到方框 214,将所述激活控制器环内的下一下激活控制器从“从”控制器切换为当 前“主”控制器。此时,所述方法200则可以返回到方框206,使用不同的 激活控制器重新处理方框206、208、210、212和214。例如,在下一个激活 控制器由“从”控制器切换为当前“主”控制器后,该激活控制器现在可以准 备从所述排队控制器接收数据包。在第二激活控制器接收数据包后,该激活 控制器可以切换回“从”控制器。所述激活控制器环内的第三激活控制器可 以随后成为当前“主”控制器。为了从所述排队控制器接收数据包,所述方法 200可以继续循环方框206、208、210、212和214。

图2B是一种用于通过集中式多控制器管理控制平面的方法250的另一 个实施例的流程图。在方框212所述的激活控制器从排队控制器接收数据包 并切换为“从”控制器之后,所述方法250可以从方框216处开始。所述方 法250可以处理接收到的数据包,从而为数据流内的网络节点生成数据流 表。在一个实施例中,数据流内的网络节点可以包括网络中的所有网络节 点。与数据流相关联的网络节点可以由网络节点厂商定义的路由策略和/或 流表管道确定。方法250可以在方法200处理图2A所述的方框206、208、 210、212和214的同时处理方框216。换言之,方框216可以与方框206、 208、210、212和214并行进行处理。在方框216处,所述方法250无需检 查或等待另一个激活控制器完成数据包处理就可以处理接收到的数据包。换 言之,在接收到数据包后,方法250可以并行处理接收到的数据包和其他数 据包。

方法250从方框216处继续进入到方框218,判断网络节点是否需要更 新流表。方框216处生成的流表可以和网络节点现有的流表进行对比。例 如,通过先采用先前接收到的数据包判断现有流表是否已经生成,方法200 可以避免产生不必要的流量。如果现有流表与方框216中生成的流表包括相 同的数值,则流表不需要更新。在一个实施例中,流表可以是与网络中不止 一个数据流相关联的多流表。以图1为例,网络100可以包括从末端节点 106a到末端节点106f的数据流以及从末端节点106b到末端节点106g的第 二数据流。方框218处可以生成与这两个数据流相关联的一个多流表。当数 据包需要重路由,数据流表条目超过预先规定的时间且过时,和/或当网络 环境发生其他变化时,流表可能需要更新。

如果流表不需要更新,方法250可以继续进入到方框222。在方框 222,方法250可以配置“从”控制器为准备接收额外的数据包,因此,可 用于切换为当前“主”控制器。方法250可以在方框222后结束。返回至方 框218,如果方框218处判断流表需要更新,则方法250跳至方框222处, 为对应数据流内的网络节点分配流表。之后,方法250可以随后结束。

图3是一种用于通过调度器管理激活控制器环内激活控制器数量的方法 300的一个实施例的流程图。在方框302处,方法300可以为激活控制器环 内的每个激活控制器的利用率和/或临时存储在排队控制器内数据包的数量 设置一个最大和最小预先规定界限。初始的预先规定界限可以基于预测入数 据流量和每个激活控制器的容量以及利用率进行设置。最大预先规定界限可 以指示激活控制器环内每个激活控制器的利用率,和/或在向激活控制器环 添加激活控制器之前排队控制器的最大长度。最小预先规定界限可以指示在 从激活控制器环移除激活控制器前排队控制器的最小长度。例如,每个激活 控制器可以用于每秒处理约200个数据包。方框302可以起初为激活控制器 环分配五个激活控制器,用以以每秒大约1000个数据包的速率处理入数据 包。因此,最大预先规定界限可以设置为数据包队列中大约1000个数据 包,而最小预先规定界限可以设置为大约800个数据包。在一个实施例中, 最大和最小预先规定界限可以是基于给定时间间隔内的入数据包的平均速率 或排队控制器的平均长度。本领域普通技术人员可以意识到方框302可以设 置其他排队控制器的长度。

一旦设置了最大和最小预先规定界限,则方法300可以继续进入到方框 304,判断排队控制器长度是否超过最大规定界限。如果排队控制器长度超 过最大预先规定界限,则方法300跳至方框306。在方框306处,从可用控 制器池中分配一个或多个控制器到激活控制器环中。在添加一个或多个控制 器到激活控制器环后,方法300可以返回至方框302处,设置新的最大和最 小预先规定界限。继续上一个例子,最大预先规定界限可以是排队控制器内 大约1000个数据包。当排队控制器长度超过1000个数据包(如大约1300 个数据包)时,可以将一个或多个可用控制器(如两个可用控制器)添加至 激活控制器环,以处理数据包。每次可从可用控制器中添加一个可用控制器 到激活控制器环,并有一个短时延。之后,基于激活控制器环内的七个激活 控制器,可以设置新的最大(如大约1400个数据包)和最小(如大约1200 个数据包)预先规定界限。当在入业务流量波动时当前激活控制器的利用率 用于增加或减少激活控制器数量时,方法300也可以应用。

返回至方框304,如果排队控制器长度不超过最大预先规定界限,则方 法300跳至方框308。在方框308处,方法300判断排队控制器长度是否低 于最小预先规定界限。当排队控制器长度不低于最小预先规定界限,则方法 300继续进入到方框304,继续检查排队控制器是否不超过最大预先规定界 限。但是,如果预先规定队列长度小于最小预先规定界限,则方法300继续 进入到方框310。在方框310处,可以将一个或多个控制器从激活控制器环 移除,并放回至可用控制器池。与方框302所述的例子相同,最小预先规定 界限可以是排队控制器内大约800个数据包。当排队控制器长度小于800个 数据包(如大约500个数据包)时,可以将一个或多个激活控制器(如两个 激活控制器)从激活控制器环移除,并分配至可用控制器池中。与方框306 相似,方框310可以再返回至方框302,为三个激活控制器设置新的最大 (如大约600个数据包)和最小(如大约400个数据包)预先规定界限。当 在入业务流量波动时当前激活控制器的利用率用于增加或减少激活控制器数 量时,方法300也可以应用。

图4A是一种管理网络的控制平面功能的集中式多控制器400的一个实 施例的示意图。该集中式多控制器400可以包括一个排队控制器组件406, 调度器组件408,网络信息库(NIB)组件410,激活控制器环组件412,可 用控制器池组件414,和分配器组件420。所述集中式多控制器400也可以 包括接收入数据包402和发送出数据包422至网络内网络节点的多个输入端 口和输出端口。在一个实施例中,所述多控制器400的输入和输出端口可以 和多个不同的虚拟业务实例相关联。

所述集中式多控制器400可以在一个或多个输入端口接收一个或多个入 数据包402。所述入数据包402可以包括头信息,该头信息可以被激活控制 器416a用来生成为网络中网络节点生成路由信息的流表。在一个实施例 中,入数据包402可以是任何开放系统互连(OSI)第2层或第3层编码数 据包,例如以太网帧或IP数据包。该头信息可以使用各种协议进行编码, 例如MPLS、异步传输模式(ATM)、以太网、第四版互联网协议 (IPv4)、第六版互联网协议(IPv6)等等。该头信息可包括在以太网帧内 编码的目的地址、多协议标记交换(MPLS)、IP数据包或其他相似类型的 数据信号等。在另一个实施例中,该头信息可以包括各协议中使用的标记, 例如MPLS或帧中继协议中的数据链路连接标识标记(DLCI)。

在接收所述入数据包402后,所述集中式多控制器400可以将该入数据 包放至所述排队控制器组件406中。所述排队控制器组件406可以临时存储 最终可被转发至所述激活控制器环组件412的入数据包402。所述排队控制 器组件406可在所述激活控制器环组件412内的激活控制器416a之间共 享。入数据包402可以基于所述多控制器400接收入数据包402的顺序存储 至所述排队控制器组件406中。在一个实施例中,排队控制器组件406可以 是FIFO队列。作为一个FIFO队列,所述集中式多控制器402先接收的入数 据包402可以先放至所述排队控制器组件406中。因此,先接收到的入数据 包402比任何其他之后接收到的入数据包402先转发至所述激活控制器环组 件412。例如,图4中,所述排队控制器组件406临时保存入数据包402a- m。入数据包402a处于所述排队控制器堆栈前部或顶部,而入数据包402b 排在入数据包402a后。最后存储至所述排队控制器组件406的入数据包为 入数据包402m。这种情况下,所述集中式多控制器400可能在接收入数据 包402b之前已经接收入数据包402a,而入数据包402m可能为最后接收的 数据包。此外,因为入数据包402a处于队列堆栈前部,所以该入数据包 402a可能是下一个将被转发至所述激活控制器环组件412的入数据包402。

所述NIB组件410可以耦合至调度器组件408和所述激活控制器环组件 412内的多个激活控制器416a。NIB可以为资源利用和流量控制维护和提供 必要的支撑信息。例如,所述NIB组件410为控制逻辑提供多种方法以访问 网络节点,基于网络节点标识检索所有网络节点,跟踪网络节点的状态信息 和网络节点特征与能力。所述NIB组件410也可以使用流表提供路由信息, 例如可以与路由信息库(RIB)或转发信息库(FIB)类似的NIB表。NIB 表可以存储网络拓扑内网络节点图,而不是存储RIB或FIB内发现的目的地 址前缀。而且,NIB组件410可以支持网络内逻辑单元(如覆盖式隧道)。 NIB也可以指定哪个数据流表条目或流表对应于哪个网络节点。所述激活控 制器环组件412内的激活控制器416a可以采用所述NIB组件410提供的路 由信息(如流表等)以及入数据包402的头信息,生成并对比流表。

所述激活控制器环组件412可以包括多个可以用来处理入数据包402的 激活控制器416a。所述激活控制器416a可以逻辑上耦合一起以形成一个圆 形或环形激活控制器环组件412。所述激活控制器416a可以包括一个或多个 中央处理器(CPU)芯片、网络处理器或其他通用处理器等。所述激活控制 器416a可以用于实现几个不同的逻辑状态,例如“主”状态、“从”状态 或“平等”状态等。所述激活控制器环组件412的形状以及令牌的不断循环 可以交替进入“主”状态的激活控制器416a。图4A示出了所述激活控制器 环组件412内的一个激活控制器C1 416a可以为“主”状态而其余的激活控 制器C2-C4 416a为“从”状态。尽管为“主”状态,该激活控制器C1 416a 也可以负责监听并等待以从所述排队控制器组件406接收入数据包402。激 活控制器C2 416a可以为“从”状态,并可以负责处理入数据包402以生成 流表,或等待切换至“主”状态。令牌或一部分其他特殊数据包可以从 “主”状态的激活控制器C1 416a传递至所述激活控制器环组件412中的下 一个排队中的激活控制器C2 416a。当所述激活控制器C1 416a准备或将要 接收入数据包402时,可以传递令牌。当下一个排队中的激活控制器C2 416a接收到令牌时,该下一个排队中的激活控制器C2 416a可以由“从”状 态切换至“主”状态。激活控制器416a之间使用的令牌可以在所述集中式 多控制器400中集中维护。“平等”状态可以代表此时激活控制器416a中 没有一个被设置为“主”状态和/或“从”状态,以及每个控制器对网络节 点具有完全的访问权限且在相同角色上与其他控制器平等。

图4B是一种集中式多控制器400中激活控制器C2 416a为当前“主” 控制器的另一个实施例的示意图。激活控制器C1 416a可以为“从”状态, 并可以处理图4A中接收的入数据包402。同时,激活控制器C2 416a可以 为“主”状态,并监听额外的入数据包402。激活控制器C1 416a处理入数 据包402和激活控制器C2 416a监听额外的入数据包402可以并行实现。一 旦激活控制器C2 416a接收入数据包402,该激活控制器C2 416a可以开始 切换回“从”状态,并将控制权转移至下一个排队中的激活控制器C3 416a。图4B示出了激活控制器C3 416a可以在激活控制器C2 416a接收入数 据包后切换为新的“主”控制器。

图4A和4B所示的状态迁移过程可以为不同的激活控制器416a(如激 活控制器C4 416a)自动重复,直到所有的激活控制器416a从排队控制器组 件406接收到入数据包402。当出现上述情况时,所有的激活控制器416a可 能会临时变为不可用,以从排队控制器组件406接收额外的入数据包402。 返回参见图3的方框306,在激活控制器416a处理入数据包402的同时,如 果排队控制器组件406的长度超过最大预先规定界限或所有当前激活控制器 的利用率超过预先规定界限,则可以添加可用控制器416b。

在接收到入数据包402后,激活控制器416a可以通过计算流表处理入 数据包402。多流表可以按照以引入的方式并入本文的2012年11月29日递 交的发明名称为“SDN OpenFlow下多流表的设计与实现机制”的第 61/731,389号美国临时专利申请案的描述生成。每个流表中的数据流表条目 可以采用头信息和路由协议。通过流表管道的特征探究和结构,其中,流表 管道具有与网络节点厂商预定义的每个流表相关联的属性,激活控制器416a 也可以获知。激活控制器416a可以用于以并行的方式处理不同入数据包 402。换言之,激活控制器416a可以不用在处理自己的入数据包402之前等 待其他激活控制器416a完成处理入数据包。以图4A和4B为例,当前 “主”激活控制器C1 416a可以将令牌传递至新“主”激活控制器C2,接 收入数据包402a,并处理入数据包402a。之后,“主”激活控制器C2 416a 可以继续接收入数据包402b并可以处理接收到的入数据包402b。因此,可 以使用两个不同的激活控制器416a实现并行处理两个入数据包402a和b。

图4C是一种集中式多控制器400中调度器组件408将激活控制器416a 从激活控制器环组件412移除的另一个实施例的示意图。所述调度器组件 408可以耦合至NIB组件410、排队控制器组件406、激活控制器环组件412 内的多个激活控制器416a,以及可用控制器池组件414内的多个可用控制器 416b。所述调度器组件408可以是任何能够监控所述排队控制器组件406、 动态移除激活控制器416a并分配可用控制器416b至所述激活控制器环组件 412的任意计算性逻辑设备(如通用处理器)。所述调度器组件408可以配 置有所述排队控制器组件406的预先规定最大和最小长度,或用于判断何时 添加或移除控制器416a和416b的激活控制器的利用率。回想一下,预先规 定最小长度值可以是在一个或多个激活控制器416a可以动态地从激活控制 器环移除和放至可用控制器池组件414之前入数据包402的最小数量。图 4C示出了当队列低于预先规定最小长度时激活控制器C3416a可以从激活控 制器环组件412移除并放入可用控制器池组件414中。

图4D是一种集中式多控制器400中调度器组件408将可用控制器416b 分配至激活控制器环组件412的另一个实施例的示意图。如上图3所述,所 述调度器组件408可以具有预先规定最大长度值,表示在添加一个或多个可 用控制器416b至激活控制器环组件412前,排队控制器组件406可以临时 存储的入数据包402的最大数量。当队列长度超过最大长度值时,则一个或 多个可用控制器416b可以分配至激活控制器环组件412。可用控制器416b 可以用可被分配至激活控制器环数据结构的独特编号或指针预先标上首字 母。图4D示出了调度器组件408可将可用控制器C5 416b分配至激活控制 器环组件412,而其他可用控制器C6-C8 416b留在可用控制器池组件414 内。

图4E是一种通过分配器组件420将流表分配至网络节点424的集中式 多控制器400的一个实施例的示意图。回想一下,激活控制器416a可以采 用并行的方式生成流表。激活控制器416a可以判断该激活控制器416a和/或 其他激活控制器416a是否已经处理相同和/或相似的流。例如,激活控制器 C1 416a可以接收并处理来自排队控制器组件406的入数据包402,以生成 流表。激活控制器C1 416a随后可以判断该激活控制器C1 416a和/或激活控 制器环组件412内的其他激活控制器C2-C4 416a是否已经处理相同和/或相 似的流。激活控制器C1 416a可以采用该激活控制器C1 416a可获得的信息 中的关键属性判断是否已经处理相同和/或相似的流。因为网络状态改变、 数据流表条目过时、以及网络应用、用户优先级和/或QoS要求的修改,可 以使用额外的数据流表条目和/或具有不同数值的数据流表条目来更新流 表。激活控制器416a可以转发数据流表条目、流表更改指令和/或流表至分 配器组件420。

分配器组件420可以耦合至多个输出端口和激活控制器环内的多个激活 控制器416a。所述分配器组件420可以用于发送包括激活控制器416a生成 的流表的多个出数据包422。所述分配器组件420将激活控制器416a生成的 流表或流表条目更改传递至与给定数据流相关联的网络节点424。所述分配 器组件420可以采用流表或多流表管道控制流表何时可以分配至网络节点 424。如上所述,流表可以与网络中不止一个数据流相关联。在一个实施例 中,所述分配器组件420可以采用OpenFlow协议将流表分配至网络节点 424。在接收流表后,这些网络节点424则可以使用新流表将网络中的数据 包转发至末端节点426。

图5是一种通过集中式多控制器来管理网络的控制平面功能的消息交互 流程500的一个实施例的协议图。图5示出了主机H1可以发送消息502a到 交换机S1,同时另一台主机H2可以发送消息502b到交换机S2。交换机S1 和交换机S2随后可以分别将消息504a和504b转发到集中式排队控制器。 集中式排队控制器可以在接收消息504b之前接收消息504a。这样,消息 504a可被转发至控制器C1,而消息504b可被转发至控制器C2。流程方框 506、508、510和512所述的控制器C1和C2之间主控权的指定可以与图 2A所示的方法200中方框206-214的指定过程大体相似。流程方框514、 516、518和520中通过消息504a和504b处理和生成流表可以与图2B所示 的方框216、218和220所述的方法200大体相似。如图5所示,控制器C1 可以在514和516分别并行处理消息504a和消息504b。在分配器将流表分 配至所有交换机后,如流程方框522和524所述,交换机S1和S2可以利用 流表并将数据包转发至目的主机。图5也示出了调度器可以通过方框528、 530、532和534监控排队控制器的长度,其过程与方框302、304、306、 308和310所述的方法300大体相似。

图6示出了可以对应于或可以是一部分此处所述节点的典型通用网络组 件600,如服务器、交换机、路由器或其他任何网络节点。该网络组件600 包括处理器602(可称为中央处理器或CPU),所述处理器602与包括辅助 存储器604、只读存储器(ROM)606、随机存取存储器(RAM)608在内 的存储器设备,输入/输出(I/O)设备610以及网络连通设备612进行通 信。该通用网络组件600也可以包括处理器602和/或该通用网络组件600的 任何其他组件。

处理器602可作为一个或多个通用CPU芯片实现,或者可以是一个或 多个专用集成电路(ASIC)和/或数字信号处理器(DSP)的一部分。处理 器602可以包括中央处理器或CPU。处理器602可以作为一个或多个CPU 芯片实现。辅助存储器604通常包括一个或多个磁盘驱动器或磁带机,用于 数据的非易失性存储,并且在RAM 608不够容纳所有工作数据时用作溢出 数据的存储设备。当选择执行载入所述RAM 608的程序时,所述辅助存储 器604可用于储存这些程序。所述ROM 606用于存储指令或在程序执行期 间读取的数据。所述ROM 606为一种非易失性存储设备,与更大内存容量 的辅助存储器604相比,通常具有较小的内存容量。所述RAM 608用于存 储易失性数据或存储指令。访问所述ROM 606和RAM 608通常要比所述辅 助存储器604的速度更快。

本发明公开至少一项实施例,且所属领域的普通技术人员对所述实施例 和/或所述实施例的特征作出的变化、组合和/或修改均在本发明公开的范围 内。因组合、合并和/或省略所述实施例的特征而得到的替代性实施例也在 本发明的范围内。在明确说明数字范围或限制的情况下,此类表达范围或限 制应被理解成包括在明确说明的范围或限制内具有相同大小的迭代范围或限 制(例如,从约为1到约为10包括2、3、4等;大于0.10包括0.11、 0.12、0.13等)。例如,只要公开具有下限Rl和上限Ru的数字范围,则明 确公开了此范围内的任何数字。具体而言,在所述范围内的以下数字是明确 公开的:R=R1+k*(Ru–R1),其中k为从1%到100%范围内以1%递增的变 量,即,k为1%、2%、3%、4%、7%……70%、71%、72%……97%、 96%、97%、98%、99%或100%。此外,由上文所定义的两个数字R定义的 任何数字范围也是明确公开的。除非另有说明,否则使用术语“约”是指随 后数字的±10%。相对于权利要求的任一元素使用术语“选择性地”意味着 所述元素是需要的,或者所述元素是不需要的,两种替代方案均在所述权利 要求的范围内。使用如“包括”、“包含”和“具有”等较广术语应被理解 为提供对如“由……组成”、“基本上由……组成”以及“大体上由……组 成”等较窄术语的支持。因此,保护范围不受上文所陈述的说明限制,而是 由所附权利要求书界定,所述范围包含所附权利要求书的标的物的所有等效 物。每一和每条权利要求作为进一步揭示内容并入说明书中,且所附权利要 求书是本发明的实施例。对所述揭示内容中的参考进行的论述并非承认其为 现有技术,尤其是具有在本申请案的在先申请优先权日期之后的公开日期的 任何参考。本发明中所引用的所有专利、专利申请案和公开案的揭示内容特 此以引用的方式并入本文本中,其提供补充本发明的示例性、程序性或其它 细节。

虽然本发明中已提供若干实施例,但应理解,在不脱离本发明的精神或 范围的情况下,本发明所公开的系统和方法可以以许多其他特定形式来体 现。本发明的实例应被视为说明性而非限制性的,且本发明并不限于本文本 所给出的细节。例如,各种元件或组件可以在另一系统中组合或合并,或者 某些特征可以省略或不实施。

此外,在不脱离本发明的范围的情况下,各种实施例中描述和说明为离 散或单独的技术、系统、子系统和方法可以与其它系统、模块、技术或方法 进行组合或合并。展示或论述为彼此耦合或直接耦合或通信的其它项也可以 采用电气方式、机械方式或其它方式通过某一接口、设备或中间组件间接地 耦合或通信。其他变化、替代和改变的示例可以由本领域的技术人员在不脱 离本文精神和所公开的范围的情况下确定。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号