软件定义网络中的拓扑感知控制器关联的制作方法

文档序号:20708808发布日期:2020-05-12 16:50阅读:286来源:国知局
软件定义网络中的拓扑感知控制器关联的制作方法

相关申请案交叉申请

本申请要求2017年9月22日递交的发明名称为“软件定义网络中的拓扑感知控制器关联”的第15/712,886号美国非临时专利申请案的在先申请优先权,该在先申请的全部内容以引入的方式并入本文本中。



背景技术:

数据网络包括网络节点,例如路由器、交换机、网桥和通过网络传输数据的其它设备。软件定义网络(softwaredefinednetwork,sdn)包括的网络技术提供传统网络管理经常没有的定制和优化功能。数据中心网络、企业网络和运营商网络等网络可以包括一个或多个sdn。

sdn将数据转发能力(例如数据面)与先前在网络节点上执行的路由、资源和其它管理功能(例如控制面)分离,从而使现代网络变得简单。支持软件定义网络的网络节点可以用于执行数据面功能,而控制面功能可以由sdn控制器提供。开放式应用编程接口(applicationprogramminginterface,api)服务,例如openflow协议,可以管理数据面与控制面之间的交互,而且能够实现网络内的网络节点和sdn控制器的非供应商特定组合。因此,软件定义网络结合开放式api服务可以为现代网络带来许多好处,包括:增加网络虚拟化、灵活控制和利用网络、根据具体需求定制网络。

虽然sdn相比于传统网络管理选择提供了许多优势,但也会带来许多挑战。sdn控制器通常控制和管理许多分布式网络节点的控制面功能。每个节点都可以拥有特定的一组设备,连接到网络中的其它节点,并且具有控制和管理能力。



技术实现要素:

根据本申请一方面,提供了一种系统,包括:

一个或多个网络,包括多个节点以及所述节点的子集内的节点(subsetofthenodes)之间的多个链路,每个节点与至少一个设备相关联;

多个控制器,用于管理所述一个或多个网络的控制面功能;以及

一个或多个服务器,耦合到所述一个或多个网络和所述多个控制器,包括存储指令的计算机可读介质,所述指令在由一个或多个处理器执行时使得所述一个或多个处理器:

确定第一父节点,所述第一父节点与所述一个或多个网络中的第二父节点分离;

从所述多个节点创建第一节点集群,所述第一节点集群包括所述第一父节点以及一个或多个第一子节点,所述一个或多个子节点与所述第一父节点之间存在一个或多个链路;

从所述多个节点创建第二节点集群,所述第二节点集群包括所述第二父节点以及一个或多个第二子节点,所述一个或多个第二子节点与所述第二父节点之间存在一个或多个链路,其中所述第二节点集群内的节点与所述第一节点集群内的节点分离;以及

配置所述第一节点集群由所述多个控制器中的第一控制器进行控制,配置所述第二节点集群由所述多个控制器中的第二控制器进行控制。

可选地,在任一前述方面中,所述一个或多个处理器执行所述指令来:基于将流量总量减到最小的目的来创建多个所述第一节点集群和多个所述第二节点集群,所述流量使得所述第一节点集群和所述第二节点集群中的每个节点集群内的节点连接到所述一个或多个网络;以及根据最小总流量确定结果将节点分配到每个节点集群。

可选地,在任一前述方面中,所述第一节点集群和所述第二节点集群中的每个节点集群都包括所述多个节点中与其它节点集群内的其它节点分离的节点。

可选地,在任一前述方面中,所述第一节点集群和所述第二节点集群中的每个节点集群内的对应子集内的节点(acorrespondingsubsetofnodes)包括至少一个父节点和一组子节点,所述子节点与所述至少一个父节点之间存在数据路径;所述第一节点集群和所述第二节点集群中的每个节点集群内的所述至少一个父节点与各个其它节点集群内的至少一个父节点分离;每个控制器控制所述至少一个父节点和所述第一节点集群或所述第二节点集群内的对应于所述控制器的每组子节点。

可选地,在任一前述方面中,所述一个或多个处理器执行所述指令来:通过(basedon)将对应于父节点的每个子节点分配到同一节点集群作为所述父节点来创建所述多个节点集群。

可选地,在任一前述方面中,所述一个或多个处理器基于将一组权重之和减到最小的目的来创建所述多个节点集群,所述权重表示所述第一节点集群和所述第二节点集群中的每个节点集群与所述一个或多个网络之间的流量总量。

可选地,在任一前述方面中,所述第一节点集群和所述第二节点集群中的每个节点集群与所述一个或多个网络之间的流量总量包括:不同集群内的节点之间的上游流量之和;以及不同集群内的节点之间的下游流量之和。

可选地,在任一前述方面中,将所述一组权重之和减到最小包括将较大权重施加到所述上游流量。

可选地,在任一前述方面中,配置所述第一节点集群由所述多个控制器中的第一控制器进行控制包括配置所述第一控制器与所述第一节点集群内每个节点之间的控制链路;配置所述第二节点集群由所述多个控制器中的第二控制器进行控制包括配置所述第二控制器与所述第二节点集群内每个节点之间的控制链路。

可选地,在任一前述方面中,所述一个或多个处理器执行所述指令来:标识与具有多个端口的线路终端设备相关联的第一节点;将所述线路终端设备中的第一端口分配到第三控制器;以及将所述线路终端设备中的第二端口分配到第四控制器。

可选地,在任一前述方面中,所述一个或多个网络为一个或多个软件定义接入网。

根据本申请的一个方面,提供了一种用于网络管理的计算机实施的方法,包括:

一个或多个处理器访问多个节点的网络信息,每个节点与至少一个设备相关联;

所述一个或多个处理器基于将流量总量减到最小的目的来创建多个节点集群,所述流量使得每个节点集群内的节点连接到一个或多个网络;

所述一个或多个处理器根据最小总流量确定结果将所述多个节点中的每个节点分配到所述多个节点集群中的一个;

所述一个或多个处理器配置多个控制器中的每个控制器对与所述节点集群中的一个或多个相关联的那部分节点进行控制。

可选地,在任一前述方面中,每个节点集群包括所述多个节点的子集,该子集中的节点与其它节点集群内的其它节点分离。

可选地,在任一前述方面中,每个节点集群内的所述子集节点包括至少一个父节点和对应的一组子节点,所述子节点与所述至少一个父节点之间存在数据路径;每个节点集群内的所述至少一个父节点与各个其它节点集群内的至少一个父节点分离;以及每个控制器控制所述至少一个父节点和对应节点集群内的每组子节点。

可选地,在任一前述方面中,该方法进一步包括:通过将对应于父节点的每个子节点分配到同一节点集群作为所述父节点来创建所述多个节点集群。

可选地,在任一前述方面中,创建多个节点集群包括将一组权重之和减到最小,所述权重表示每个节点集群与所述一个或多个网络之间的流量总量。

可选地,在任一前述方面中,所述每个节点集群与所述一个或多个网络之间的流量总量包括:不同集群内的节点之间的上游流量之和;以及不同集群内的节点之间的下游流量之和。

可选地,在任一前述方面中,配置每个控制器对与所述节点集群中的一个或多个相关联的那部分或全部节点进行控制包括创建所述控制器与对应集群内每个节点之间的控制链路。

根据本申请的一个方面,一种非瞬时性计算机可读介质,存储用于网络管理的计算机指令,所述指令在由一个或多个处理器执行时,使得所述一个或多个处理器执行以下步骤:

访问多个节点的网络信息,每个节点与至少一个设备相关联;

为每个节点分配一个权重,所述权重表示所述节点关联的流量总量;

确定第一节点和第二节点的第一组合权重小于第一控制器的容量,所述第二节点是所述第一节点的父节点;

响应于确定所述第一组合权重小于所述容量,确定所述第一节点、所述第二节点和第三节点的第二组合权重小于所述容量,所述第三节点是所述第二节点的子节点;

响应于确定所述第二组合权重小于所述容量,确定所述第一节点、所述第二节点、所述第三节点和第四节点的第三组合权重大于等于所述容量,所述第四节点是所述第二节点的父节点;

响应于确定所述第三组合权重大于或等于所述容量,将所述第一节点、所述第二节点和所述第三节点分配到所述第一控制器并且将所述第四节点分配到第二控制器。

可选地,在任一前述方面中,所述指令使得所述一个或多个处理器来:

基于将流量总量减到最小的目的来创建多个节点集群,所述流量使得每个节点集群内的节点连接到一个或多个网络;

根据最小总流量确定结果,将所述第一节点、所述第二节点和所述第三节点分配到第一节点集群并且将所述第四节点分配到第二节点集群。

可选地,在任一前述方面中,所述第一节点集群和所述第二节点集群中的每个节点集群内的对应节点子集包括至少一个父节点和一组子节点,所述子节点与所述至少一个父节点之间存在数据路径;所述第一节点集群和所述第二节点集群中的每个节点集群内的所述至少一个父节点与所述第一节点集群和所述第二节点集群之外的每个其它节点集群内的至少一个父节点分离;以及每个控制器控制所述至少一个父节点和节点集群内的对应于所述控制器的每组子节点。

本发明内容简单地介绍了下文在具体实施方式中进一步描述的一系列概念。本发明内容并非旨在识别所要求保护的主题的关键特征或必要特征,也非旨在帮助确定所要求保护的主题的范围。所要求保护的主题不限于解决背景技术中所述的任意或所有缺点的实施方式。

附图说明

图1示出了用于传送数据的网络环境。

图2为示例性网络环境的方框图。

图3为软件定义网络(software-definednetwork,sdn)网络的示例性实施例的示意图。

图4为示例性sdn的方框图。

图5为包括多个控制器的示例性网络环境的方框图。

图6为包括树形拓扑中节点的示例性网络环境的方框图。

图7为包括示例性节点到控制器分配的示例性网络环境的方框图。

图8为包括一个实施例中的示例性节点到控制器分配的示例性网络环境的方框图。

图9为描述一种基于相关节点来配置节点到控制器分配的过程的一个实施例的流程图。

图10为描述一种基于流量来配置节点到控制器分配的过程的一个实施例的流程图。

图11为描述一种基于相关节点和流量来配置节点到控制器分配的过程的一个实施例的流程图。

图12为示出一个实施例中的一种将节点分配到节点集群的过程的方框图。

图13为示出控制器到端口分配的网络环境的方框图。

图14为一个或多个服务器的一个实施例的方框图。

图15为网元的一个实施例的方框图。

图16为计算系统的高级方框图。

具体实施方式

所公开技术涉及软件定义网络(software-definednetwork,sdn),更具体地,涉及包括多个网络节点和多个控制器的sdn的网络配置。sdn通常包括多个节点以及其中一些节点之间的多个链路。例如,软件定义接入网可以提供多个用户设备(例如客户端设备)与一个或多个外部网络之间的连接。

在一个实施例中,将包括多个节点的sdn配置为由多个控制器进行控制。这些节点组织成节点集群,也称为分区,其中每个节点集群分配到其中一个控制器。基于sdn的物理拓扑来构成节点集群。基于网络的拓扑来确定相关节点。然后,基于节点与拓扑中其它节点之间的关系对节点进行分组。在一个实施例中,对节点进行分组,以便在sdn中的控制器和/或节点发生故障时将停机时间减到最短。例如,可以将sdn中的每个父节点及其对应的子节点分配到同一控制器。通过这种方式,当只有该控制器发生故障时,更有可能影响sdn中的单个树形结构,而不会影响多个树形结构。如果多个父节点对应的控制器发生故障,则会影响多个树形结构。

在一个实施例中,服务器访问描述sdn的网络信息。该网络信息可以通过从sdn中节点接收网络信息、轮询sdn中节点或者读取预先存在的网络信息进行访问。网络信息可以包括与网络中节点有关的流量信息、物理拓扑信息和/或与sdn中节点有关的其它信息。在一个示例中,可以访问或生成sdn的软件定义描述等网络配置,以便确定拓扑信息。服务器访问节点信息以确定与其它父节点分离的父节点(例如根节点)。例如,服务器可以确定,如果一个节点不存在数据需要流过才能到达该节点的上游节点,则该节点是根节点。然后,控制器确定与每个根节点相关联的任何节点。例如,控制器可以确定根节点下游的任何子节点。子节点可以是数据必须通过根节点才能到达该子节点的任何节点。控制器创建节点集群,每个节点集群包括一个根节点和与该根节点相关联的任何子节点。然后,将每个节点集群分配到sdn中的单个控制器。可以为每个控制器分配一个或多个节点集群。

在一个实施例中,服务器还分析与潜在节点集群有关的流量信息,以便确定如何对sdn中节点进行分区。服务器可以基于将流量总量减到最小的目的来创建多个节点集群,流量使得每个集群内的节点连接到一个或多个网络。流量总量可以指每个节点集群与外部网络和/或sdn本身之间的流量。例如,可以基于不同集群内节点之间的上游流量和下游流量之和来确定流量总量。在一个实施例中,服务器使用存在多个约束的图形分区算法,基于将流量减到最小的目的来选择将sdn中的节点分区为集群的方式。例如,服务器可以基于将一组权重之和减到最小的目的来创建集群,权重表示每个节点集群与一个或多个网络之间的流量总量。

在一个实施例中,所公开技术可以用于在sdn中的节点处的设备上配置端口。例如,光线路终端可以覆盖大量节点。单个控制器无法很好地控制大量节点。例如,一个控制器可能无法处理终端上节点的所有请求。在一个实施例中,单个光线路终端的各个端口可以分配到进行控制面管理的不同控制器。

在一个实施例中,所公开技术包括将网络中的节点建模为树的网络模型。在树形拓扑中,子集内的连接节点被建模为树的分支,该分支不存在将子集内的节点连接到树的其它分支上节点的边缘。通过这种方式,树的分支可能不直接进行通信。这种树形结构准确地描述了接入网等网络,比通用图形更容易描述。

图1示出了用于传送数据的网络环境50。网络50包括基站58,基站58包括拥有覆盖范围54的一个或多个天线。基站(bs)58可以包括通信控制器。网络环境50包括多个用户设备(ue)56和一个例如回传网络的网络52。描述了两个ue,但是可以存在更多ue。基站58中的通信控制器可以是能够通过尤其是与ue56建立上行连接(虚线)和/或下行连接(点线)来提供无线接入的任何组件。基站58可以包括增强型基站(enb)、微微蜂窝基站、毫微微蜂窝基站和其它无线启用设备。ue56可以是能够与移动电话、智能电话、平板电脑、传感器等bs58建立无线连接的任何组件。网络52可以是允许在bs58与远程终端(未示出)之间交换数据的任何组件或组件的集合。在一些实施例中,网络52可以包括各种其它无线设备,例如中继器、毫微微蜂窝基站等。

图2为可以实践所公开技术的各实施例的示例性网络环境100的框图。网络环境包括软件定义网络(software-definednetwork,sdn)20、至少一个控制面控制器30和至少一个集中控制器40。sdn20、控制面控制器30和集中控制器40通过光学方式、电气方式或无线方式相互通信。虽然示出了控制器30与sdn20分开,但是,例如,控制器30可以在sdn20中的其中一个节点22处实现。控制器30可以在其中一个节点22处的服务器或其它计算设备中实现,或者在远离sdn20的计算设备中实现。

在一个实施例中,sdn20可以实现为提供用户设备56与网络52之间的连接的接入网。例如,sdn20可以包括多个网络节点,这些节点提供多个可配置数据路径,从而提供用户设备56与网络52之间的连接。

在一个实施例中,sdn20是一个分组交换网络,在该网络中,数据流量使用多个数据包或多个帧沿着网络路径或网络路线进行传输。基于控制器30计算的和/或节点22开发的路径,这些数据包可以沿着通过多协议交换(multiprotocolswitching,mpls)或通用mpls(generalizedmpls,gmpls)等信令协议建立的流量工程标记交换路径进行路由或交换。sdn20包括使用光学链路、电气链路或无线链路相互耦合的多个节点22。sdn110还可以包括多个域,例如自治系统(autonomoussystem,as)域或igp区域,每个域都可以包括对应于同一地址管理和/或路径计算责任的一组网元。这些域通过物理机制(例如位置、连接等)和/或逻辑方法机制(例如网络拓扑、协议、通信层等)来组织。不同域相互耦合,每个域都包括一些节点22。

节点22为支持通过sdn20传输多个数据包的任何设备或组件。例如,节点22可以包括网桥、交换机、路由器或这些设备的各种组合。节点22可以包括用于从其它节点22接收数据包的多个入端口、确定将帧发往哪些节点22的逻辑电路、用于向其它节点22传输帧的多个出端口。在一些实施例中,至少一些节点22是标签交换路由器(labelswitchedrouter,lsr),用于修改或更新在标签交换网络20中传输的多个报文(packet)的标签。在一些实施例中,一些节点22是标签边缘路由器(labeledgerouter,ler)。例如,处于sdn20边缘的节点22用于插入或移除在标签交换网络110与外部网络之间传输的多个报文(packet)的标签。沿着一条路径的第一节点22和最后一个节点22有时分别称为源节点或头端节点和目的节点或尾端节点。虽然示出sdn20中存在四个节点22,但是sdn20可以包括任何数量的节点22。另外,节点22可以位于sdn20中的不同域内,并且可以用于跨多个域进行通信。例如,对应于不同域的节点22可以沿着跨多个域建立起来的路径来交换多个报文(packet)。

控制面控制器30为用于协调sdn20内各种活动的任何设备。控制器30可以包括网络管理系统(networkmanagementsystem,nms)或操作支持系统(operationssupportsystem,oss)。具体地,控制面控制器30从sdn30接收路由请求并返回对应的路径信息。控制面控制器30可以执行路径计算并向至少一个节点22转发计算出的路径。控制面控制器30可以位于sdn30外部的组件中,例如位于外部服务器中,还可以位于sdn110内部的组件中,例如位于节点22处的服务器中。

集中控制器40为用于协调控制面控制器30进行的各种活动的任何设备,例如使用多个控制面控制器来管理sdn20内的控制面功能。集中控制器40可以位于sdn20外部的外部服务器等组件中,还可以位于sdn20内部的节点22处服务器等组件中。在一个实施例中,集中控制器执行本文描述的各个过程以生成网络配置。网络配置可以提供给一个或多个控制面控制器30。

控制器可以基于openflow协议来操作。sdn是一种能够在不需要物理接入到网络中设备的情况下对网络流量进行可编程集中控制的网络拓扑。sdn可以采用利用传输控制协议/互联网协议(transmissioncontrolprotocol/internetprotocol,tcp/ip)的互联网协议(internetprotocol,ip)网络。sdn可以将数据面等数据转发能力与路由、资源和先前在网络节点上执行的控制面等其它管理功能分离开来。将网络的控制面与数据面分离使得网络控制器能够通过全局优化的流量工程和路由来有效地控制网络流量,而全局优化的流量工程和路由与本地优化的最短路径优先(optimizedshortestpathfirst)不同。sdn还可以简化网络操作,或者甚至有能力通过扩展的数据路由向量使网络扁平化。

可以设计一种控制器来控制和管理整个网络,例如接入网(例如包括千兆比特无源光网络(gigabitpassiveopticalnetwork,gpon)、以太网无源光网络(ethernetpassiveopticalnetwork,epon)、g.fas.)。sdn控制器的示例包括开放网络操作系统(opennetworkoperatingsystem,onos)和opendaylight(opendaylight,odl)。控制器可以利用各种协议,包括netconf、openflow或私有供应商协议。在一些示例中,在供应商设备与sdn控制器之间提供硬件抽象层。voltha是能够提供的硬件抽象层的一个示例。在一些示例中,openflow和/或netconf协议可以用于在voltha硬件抽象层与onos或odl控制器之间进行通信。

控制面控制器可以包括未示出的路径计算引擎(pathcomputationengine,pce)或者与pce进行通信。pce是用于基于路径计算请求等为sdn20执行所有或部分路径计算的任何设备或组件。pce可以从控制面控制器30、节点22或两者接收用于计算路径的信息。pce处理该信息以获取路径。例如,pce计算路径并确定包括沿着该路径的lsr的节点22。然后,pce可以向控制面控制器30或直接向至少一个节点112发送所有或部分计算出的路径信息。此外,pce130通常耦合到或包括流量工程数据库(traffic-engineeringdatabase,ted)、p2mp路径数据库(p2mppathdatabase,pdb)、p2p路径数据库、光通道性能监测(opticalperformancemonitor,opm)、物理层约束(physicallayerconstraint,plc)信息数据库或它们的组合,他们都可以用于计算路径。pce可以位于sdn20外部的组件中,例如位于外部服务器中,还可以位于sdn20内部的组件中,例如位于节点22处的组件中。pce可以配置为控制面控制器30的一部分。可替换地,pce可以配置为集中控制器40的一部分。

请求设备向pce发送路径计算请求。该请求设备是请求由pce来执行路径计算的任何客户端应用。该请求设备还可以是提出这种请求的任何网络组件,例如控制面控制器30,或lsr等任何节点22。例如,该请求设备可以在sdn20的单个域内或跨多个域向pce请求p2mp路径或p2p路径。另外,该请求设备可以通过路径计算请求和/或通过链路状态公告(linkstateadvertisement,lsa)的广播信令等向pce发送至少一些路径所需信息。

图3为sdn网络100的示例性实施例的示意图。网络100包括sdn控制器130、多个网络节点122和多个末端节点124。网络节点122包括交换机、路由器、网桥和/或用于在网络中接收和/或转发数据的任何其它设备。控制路径由虚线表示,数据路径由实线表示。系统配置、管理信息和路由/转发表信息通过控制路径在网络控制器130与网络节点122之间交换。

数据报文(datapacket)被从末端节点124接收并通过数据路径在网络节点122之间转发。例如,来自充当发布者的末端节点124-1的数据由充当入边界路由器(ingressborderrouter,ibr)的网络节点122-2接收、通过充当转交路由器(transitrouter,tr)的网络节点122-1进行路由,并且通过充当出边界路由器(egressborderrouter,ebr)的网络节点122-3传递到充当目的节点的末端节点124-2。边界路由器是连接到sdn域外部的至少一个节点的sdn域的边缘上的路由器,ibr是从sdn域外部接收流量的sdn边界路由器,ebr是在sdn域外部发送流量的sdn边界路由器。tr是在sdn域内传输流量的sdn路由器并且没有接口连接sdn域外部。根据通过lsp传输的业务流,单个边界路由器可以用作ibr、ebr或两者。末端节点124为用于传输、接收、发起和/或终止数据的任何网元,或者在替换实施例中,为ip网络、mpls网络等其它网络。在一些实施例中,网络控制器130为用于控制网络节点122和末端节点124的通用网络控制器。网络控制器130为用于执行控制路径和/或控制面功能的任何设备,例如创建网络地图(networkmap)和定义路由表中的信息,其中路由表定义如何路由传入报文(incomingpacket)。网络控制器130还用于执行控制面的管理和控制功能,包括路由和资源管理。网络节点122和末端节点124包括根据某个标准通过网络200接收和传输数据的设备。网络节点122和末端节点124中的至少一些节点和网络控制器130可以符合如在开放网络基金会(opennetworkingfoundation,onf)文档openflow交换机规范第1.3.4版、onf文档openflow控制器交换机ndm同步第1.0版和onf文档软件定义网络:网络新规范,onf白皮书(统称为openflow)中定义的某个标准。

尽管图3中未示出,但是控制器130从网络节点接收数据以及向网络节点传输消息,其中数据和消息(message)可以用于管理和控制网络节点(例如,控制器能够基于从网络节点接收到的数据来确定网络拓扑)。一些传入消息(incomingmessage)或部分传入消息被转换成标准独立格式(standardindependentformat)以便由网络控制器130中的一些模块进行处理。标准独立格式以抽象网络控制数据模型为基础,该模型提供各种标准格式的属性或特性的抽象。网络控制器130通过openflow等各种应用编程接口(applicationprogramminginterface,api)协议与网络节点进行交互。控制器确定网络的全局网络拓扑。根据全局网络拓扑、状态信息、动态业务流/业务量信息和其它网络状态信息,网络控制器确定如何分配资源和路由应用、信息和/或流经网络的数据包。

图4为包括sdn控制器230和多个网络节点的另一示例性sdn200的框图。在一个示例中,sdn200可以是接入网,其中设计控制器230来管理和控制整个接入网。在具体描述的示例中,接入网包括千兆比特无源光网络(gigabitpassiveopticalnetwork,gpon)子网202、gpon+g.fast(数字用户线协议标准)子网204和g.fast网络206。gpon子网包括光线路终端节点(opticallineterminalnode,olt)221-1和两个光网络终端(opticalnetworkterminal,ont)节点222-2和222-3。gpon+g.fast网络包括olt节点222-4、两个中间olt+ftu-o节点222-5和222-8以及三个ftu-r节点222-6、222-7和222-9。g.fast网络包括ftu-o节点222-10和两个ftu-r节点222-11。

图5为包括用于管理和控制多个网络节点322的多个sdn控制器330的另一示例性网络环境300的框图。可以在需要管理大量网络节点的实施方式中使用多个控制器,还可以使用多个控制器来提供高可用性。在图5中,控制器330-1包括与节点322-1、322-2和322-3的控制链路。控制器330-2包括与节点322-7、322-8和322-9的控制链路。控制器330-3包括与节点322-4、322-5和322-6的控制链路。

以这种方式,将节点划分为三个节点分区,也称为节点集群,其中每个分区包括三个网络节点。类似地,可以称三个控制器形成用于所有网络节点的控制器集群。通过使用多个控制器,在发生故障时一个控制器能够接管另一个控制器,因此使用多个控制器可以提高可用性。节点322-1、322-3和322-3构成由控制器330-1控制的节点集群。节点322-7、322-8和322-9形成由控制器330-2控制的节点集群。节点322-4、322-5和322-6形成由控制器330-3控制的节点集群。

在一个实施例中,节点或节点处的设备只与单个主控制器进行通信。该节点可以连接到其它控制器,但是在给定时间点只与主控制器进行通信。然而,如果该节点对应的主控制器发生故障,则连接到该节点的另一控制器可以接管由发生故障的控制器控制的节点的控制面功能。例如,响应于指示控制器330-1发生故障的事件,对节点322-1、322-2和322-3的控制可以转移到控制器330-2。

图6为网络环境350的框图,继续如图5所示的网络节点322的示例。图6示出了包括接入网内的中间节点之间的连接链路的物理拓扑。对节点和链路结构的研究揭示了接入网的公共属性,即,树形拓扑拥有至少一个根节点,一个或多个下游节点的数据穿过至少一个根节点。

在图6中,节点322-1是每个其它节点的根节点。树形拓扑由根节点322-1和下游节点构成。图6具有源自根节点322-1的五个独立的连接路径。树的第一分支包括下游节点322-2和322-3。树的第二分支包括下游节点322-2和322-6。树的第三分支包括下游节点322-5和322-9。树的第四分支包括下游节点322-4和322-7。树的第五分支包括下游节点322-4和322-8。

在如图所示的树形拓扑中,所有节点并不像如图1所示的网状架构等许多架构中那样互连。在树形拓扑下,接入网可以将用户流量从树的根节点分发到叶节点或末端节点。根节点可以认为是树的基础,其中连接以类似树的方式扩展到其它节点,包括中间节点并且在树的顶部以叶节点结束。类似地,接入网可以在根节点上聚合来自叶节点的用户流量。根节点可以将叶节点连接到服务提供商(serviceprovider)。根节点可以连接到服务提供商的服务器或连接到外部网络。

分支没有连接边缘,不直接进行通信。相反,分支通过一个或多个中间连接节点进行通信。例如,每个分支上的叶节点没有直接的连接链路。因此,叶节点与根节点之间的通信必须经过中间节点。

传统上,在为sdn中节点进行控制器分配时,网络配置不考虑网络的树形拓扑。此外,尚未考虑不同控制器分配的流量影响。因此,sdn的正常运行时间尚未得到优化。

例如,考虑到图6中的控制器分配。sdn中的不同节点发生故障会对整个sdn产生不同的影响。例如,节点322-1是sdn中所有其它节点的根节点。如果根节点322-1发生故障,则与sdn中所有其它节点的通信都中断。类似地,如果控制根节点322-1的控制器330-1发生故障,则sdn中的所有通信都中断。然而,如果叶节点322-7、322-8或322-9发生故障,则只有与这些节点的通信会中断。同样地,如果控制器330-2发生故障,则只有与叶节点322-7、322-8或322-9的通信会中断。

图7为网络环境352的框图,网络环境352的配置进一步突出了具有树形拓扑的网络中的控制器分配的影响。在图7中,在sdn中有2个由网络节点构成的两个独立树形结构。网络节点322-1、322-2、322-3、322-5和322-6构成拥有根节点322-1的第一树形结构。网络节点322-4、322-7、322-8和322-9构成拥有根节点322-4的第二树形结构。

在图7中,部署了两个控制器330-1和330-2对节点322-1至322-9进行控制面管理。这两个控制器可以部署在一个或多个服务器上。控制器330-1包括与构成节点集群326-1的节点322-1、322-4、322-7和322-8的控制链路。控制器330-2包括与构成节点集群326-2的节点322-2、322-3、322-5、322-6和322-9的控制链路。节点被划分为两个节点分区,还称为节点集群,其中每个分区包括一部分不同的网络节点。节点322-1、322-4、322-7和322-8构成由控制器330-1控制的节点集群326-1。节点322-2、322-3、322-5、322-6和322-9构成由控制器330-2控制的节点集群。

在图7中,控制器330-1控制第一树形结构的根节点322-1以及第二树形结构的根节点322-4。以这种方式,如果控制器330-1发生故障,则sdn中的所有通信链路都会发生故障。在图7的示例中,没有考虑由sdn中的多个节点构成的树形拓扑。

根据一个实施例,访问并使用网络的物理拓扑来生成包括节点到控制器分配的网络配置。可以识别并使用接入网等sdn的树形拓扑来生成节点到控制器网络分配。控制器可以接入sdn并识别sdn中的一个或多个树形结构。构成树形结构的每个子集的(eachsubset)节点包括一个根节点和至少一个子节点。到该至少一个子节点的流量经过根节点。

图8为根据一个实施例的网络环境354的框图,网络环境354的网络配置包括节点到控制器分配。在图8中,与图7中同样在sdn中两个由网络节点构成的独立树形结构。网络节点322-1、322-2、322-3、322-5和322-6构成拥有根节点322-1的第一树形结构。网络节点322-4、322-7、322-8和322-9构成拥有根节点322-4的第二树形结构。

在图8中,以考虑到sdn中多个节点组成的物理拓扑的拓扑感知方式将sdn控制器分配到节点。具体地,系统访问指示节点322-1和322-4为独立父节点的物理拓扑信息。在本示例中,节点322-1和322-4为根节点。系统确定根节点不存在流量需要流经才能到达根节点的上游节点。系统根据拓扑信息确定第一子集的节点322-2、322-3、322-5和322-6,如先前结合图6和图7所述作为子节点,与根节点322-1相关联。系统确定第一子集内的子节点与根节点322-1之间存在路径。系统确定第二子集的节点322-7、322-8和322-9作为子节点与根节点322-4相关联。系统确定第二子集内的子节点与根节点322-4之间存在路径。根据该信息,系统确定节点322-1、322-2、322-3、322-5和322-6构成一个独立树形结构。类似地,系统确定节点322-4、322-7、322-8和322-9构成第二独立树形结构。

响应于物理拓扑信息,系统创建节点集群326-3并将节点322-1、322-2、322-3、322-5和322-6分配到该集群。系统创建第二节点集群326-4并将节点322-4、322-7、322-8和322-9分配到该集群。第一节点集群326-3内的多个节点分配到控制器330-2,第二节点集群326-4内的多个节点分配到控制器330-1。系统配置控制器330-1对第二集群内的多个节点进行控制,配置控制器330-2对第一集群内的多个节点进行控制。系统可以配置控制器330-2与第一节点集群326-3中每个节点之间的控制链路。系统可以配置控制器330-1与第二节点集群326-4中每个节点之间的控制链路。如下文所述,系统在进行节点分配时可以考虑控制器330的容量和每个节点关联的流量。

与图7中的网络配置相比,如图8所示的包括节点到控制器分配的网络配置,控制器发生故障时所产生的影响显著不同。在图8中,如果控制器330-1发生故障,则与第一节点集群326-3内的多个节点进行的通信不受影响。只有与第二节点集群326-4内的多个节点进行的通信会受到控制器330-1发生故障的影响。类似地,控制器330-2发生故障不会影响与第二节点集群326-4内的多个节点进行的通信。只有与第一节点集群326-3内的多个节点进行的通信会受到影响。

图9为描述一种配置控制器对软件定义网络中的节点的控制面功能进行控制和管理的过程400的一个实施例的流程图。图9可以作为生成网络配置的一部分来执行,网络配置包括控制sdn的描述。过程400可以在环境10、50、100、200和300等网络环境中执行。然而,过程400并不限于在这些环境中执行。过程400可以在服务器或其它计算设备中实现,也可以由服务器或其它计算设备来实现,以配置sdn中的控制器和节点。过程400可以由sdn中的控制面控制器30、集中控制器40或sdn控制器130、230或330等控制器来执行。要分配给sdn中的节点的控制器可以执行过程400,或者过程400可以由不构成控制面的一部分的控制器来执行。例如,控制器可以是专用控制器,也可以实现为网络管理系统。在一个实施例中,过程400可以由节点322处的设备来执行。例如,在路由器等专用网络设备中,控制器可以实现为一个或多个电路。可替代地,例如,该过程可以在处理器中实现为用于对过程进行编程的处理器可读代码。

在步骤402处,访问sdn的物理拓扑信息。在一个实施例中,sdn中的服务器访问物理信息。在一个示例中,物理拓扑信息可以通过从网络节点接收一个或多个消息来访问。在另一个示例中,该信息可以通过轮询一个或多个网络节点或者访问包含物理拓扑信息的一个或多个数据存储来访问。物理拓扑信息描述了sdn内的基础设施和连接以及与任何外部网络的连接。

例如,物理拓扑信息可以包括光纤拓扑和站点信息、业务流信息以及网络定时信息。拓扑信息和站点信息可以包括但不限于,网络的光可达图、站点规范、光纤规范和网元规范。业务流信息(trafficflowinformation)可以包括但不限于:业务流类型、业务流承载类型、流量带宽配置描述(trafficbandwidthprofile)、流量保护配置描述(trafficprotectionprofile)、业务流路由约束、业务流服务质量(qualityofservice,qos)需求以及业务流操作、管理和维护(operations,administration,andmanagement,oam)需求。例如,业务流类型可以包括但不限于,以太网虚拟专线(ethernetvirtualprivateline,e-line)、以太网虚拟专用局域网(ethernetvirtualprivatelocalareanetwork,e-lan)和以太网虚拟专用树(ethernetvirtualprivatetree,e-tree)。网络定时信息可以包括但不限于网络定时系统信息。网络的光可达图是考虑给定物理光纤网络的传输损伤和光组件配置的一种表示。在一个实施例中,步骤402包括访问标识物理拓扑的网络描述。

在步骤404处,服务器根据物理拓扑信息来识别sdn中的独立父节点。服务器可以将没有如下上游节点的节点识别为根节点:数据需要流经上游节点才能到达该节点。

在步骤406处,服务器识别与每个独立父节点相关联的任何子节点。对于每个父节点,服务器可以识别穿过父节点到达的任何节点。步骤404和步骤406可以包括识别sdn中构成独立树形结构的多个节点的子集。sdn中的每个树形结构彼此分离。到达每个树形结构中节点的数据不经过任何其它树形结构中的节点。

在步骤408处,服务器基于独立父节点及其对应的子节点来创建多个节点集群。在一个实施例中,系统将包括父节点和对应于该父节点的每个子节点的树形结构分配到一个节点集群。可以将单个树形结构分配到一个节点集群,还可以将多个树形结构分配到一个节点集群。然而,系统尝试将每个父节点及其对应的子节点保持在单个节点集群内。

在步骤410处,服务器配置控制器来处理节点集群的控制面功能。对于每个节点集群,系统将每个节点分配到同一控制器。在一个实施例中,将每个节点集群分配到不同的控制器。在另一个实施例中,可以将一个以上节点集群分配到单个控制器。

在一个实施例中,系统基于将所提供的多个节点集群关联的流量减到最小的目的来提供控制器到节点的分配。系统可以尝试创建具有独立节点的节点集群,同时将节点分配到集群,以便将每个节点集群关联的数据流量和/或控制流量减到最小。例如,系统可以尝试将每个节点集群与一个或多个网络之间的数据流量的总量减到最小。一个或多个网络可以包括外部网络,例如回传网络、互联网等,也可以包括接入网本身。在这种方式下,系统能够尝试将接入网中不同集群内的节点之间的流量减到最小。系统可以尝试将不同集群内的节点之间的上游流量和/或不同集群内的节点之间的下游流量减到最小。在这种方式下,系统尝试将包括节点与外部网络之间的流量以及接入网中不同集群内的节点之间的流量的总量减到最小。

除数据流量(datatraffic)之外,系统可以尝试将节点集群与控制器之间的控制流量(controltraffic)减到最小。通过这样做,系统可以尝试找到每个控制器最适合处理的控制流量的量。系统的确定可能受到控制器能够处理的控制流量的最大量的限制。例如,每个节点集群内的控制流量之和可能受到控制器能够处理的控制流量的总量的限制。

在一个实施例中,提供多约束图形分区算法来确定sdn的最佳分区方式。考虑用图形g表示sdn,sdn包括多个节点和提供用来管理sdn中的节点的控制面功能的k个控制器。系统可以尝试基于将每个节点集群与一个或多个外部网络之间的数据流量和/或控制流量的量减到最小的目的来确定每个节点集群(即每个分区)中应该存在的节点的数量k。如上所述,流量可以是不同集群内的节点之间的流量和/或节点集群与外部网络之间的流量。在一个示例中,系统可以尝试根据等式1来确定每个分区内的最佳节点数量。

使用等式1,系统尝试将网络传输到分区或者从分区传输到网络的流量的量减到最小,流量表示为权重w。ci表示一个分区,cj表示另一个分区。变量“i”的范围可以从1到k–1。分区ci中的任何节点由vi表示,分区cj中的任何节点由vj表示。

根据等式1,系统确定表示分区ci中的节点vi与分区cj中的节点vj之间的流量的权重w。系统确定不同分区中的两个节点之间的连接链路并计算这两个节点之间的流量的权重。

在一个实施例中,根据等式2来确定权重w。

w=ui,j+di,j等式2

在等式2中,ui,j表示节点i与节点j之间的上游流量。di,j表示节点i与节点j之间的下游流量。然后,系统确定表示两个节点之间的总的上游流量和下游流量的权重。系统能够提供等于每个分区与网络之间的所有流量的总权重的总和。

系统采用所示的总和来确定k的值,该值使得分配到不同分区的节点之间的流量的量减到最小。然后,系统将k个节点分配到一个节点集群。每个节点集群分配到一个控制器。如上所述,系统还可以确定相关节点的子集(subsetsofrelatednodes),例如包括根节点和根节点的任何子节点的树形结构。在将节点分配到每个节点集群时,系统尝试将每个父节点及其对应的子节点分配到同一节点集群。

在一个实施例中,系统根据控制器能够处理的控制流量的最大量来采用等式1。例如,系统基于分区对应的控制器能够处理的控制流量的总量来限制任何分区。在一个示例中,系统分配的节点数量不会导致控制流量超过对每个分区或控制器施加的限制。

图10为描述一种配置控制器对软件定义网络中的节点的控制面功能进行控制和管理的过程500的一个实施例的流程图。过程500尝试在创建节点集群和将集群分配到控制器的同时将sdn关联的流量减到最小。

过程500可以作为生成网络配置的一部分来执行,网络配置包括控制sdn的描述。过程500可以在环境10、50、100、200和300等网络环境中执行。然而,过程500并不限于在这些环境中执行。过程500可以在服务器或其它计算设备中实现,也可以通过服务器或其它计算设备来实现,以配置sdn中的控制器和节点。过程500可以由sdn中的控制面控制器30、集中控制器40或sdn控制器130、230或330等控制器来执行。要分配给sdn中各节点的控制器可以执行过程500,或者过程500可以由不构成控制面的一部分的控制器来执行。例如,控制器可以是专用控制器,也可以实现为网络管理系统。在一个实施例中,过程500可以由节点322处的设备来执行。例如,在路由器等专用网络设备中,控制器可以实现为一个或多个电路。可替代地,例如,该过程可以在处理器中实现为用于对过程进行编程的处理器可读代码。

在步骤502处,访问sdn的网络信息。在一个实施例中,sdn中的服务器访问网络信息。在一个示例中,网络信息可以通过从网络节点接收一个或多个消息来访问。在另一个示例中,该信息可以通过轮询一个或多个网络节点或者访问包含该信息的一个或多个数据存储来访问。在一个实施例中,网络信息包括sdn中各节点关联的流量数据。数据可以包括在节点处接收的数据和/或从节点发送的数据。在一个实施例中,网络信息包括物理拓扑信息,描述了sdn内的基础设施和连接以及与任何外部网络的连接。

在步骤504处,系统确定表示sdn中成对节点之间的总流量的权重。该权重可以表示成对节点之间的上游流量和/或下游流量。

在步骤506处,系统分析可以基于流量权重在sdn中创建的潜在节点集群。在一个实施例中,系统分析潜在集群,以确定将节点分区为集群的方式,以便将节点与一个或多个网络之间的流量的总量减到最小。所述一个或多个网络可以包括sdn,使得系统尝试将不同节点集群内的节点之间的流量减到最小。所述一个或多个网络还可以包括外部网络,以便将节点集群与sdn外部的节点之间的流量减到最小。在一个实施例中,步骤606包括图9的步骤402、步骤404和步骤406。

在步骤508处,系统基于将节点集群与sdn之间的流量减到最小的目的来创建多个节点集群。步骤608可以包括确定分配到每个节点集群以便将节点集群之间的流量减到最小的节点的数量。步骤508可以替换地或另外包括确定节点的数量,以便将节点集群与外部网络之间的流量减到最小。可以确定表示每个潜在节点集群关联的流量的总权重。步骤508还可以包括考虑每个节点集群关联的控制流量的量。例如,系统可以基于每个集群或分配到集群的控制器对应的控制流量的最大量来限制每个节点集群内的节点数量。

在步骤510处,系统根据步骤508中的最小总流量确定结果将sdn中的每个节点分配到其中一个节点集群。在一个实施例中,系统根据为每个节点分区确定的节点数量来分配节点,以将流量减到最小。步骤510可以包括将单个树形结构分配到每个节点集群,或者将多个树形结构分配到每个节点集群。

在一个实施例中,步骤510包括在为节点集群分配节点时考虑sdn的物理拓扑。在一个实施例中,步骤510包括或可以采用过程400的步骤404至步骤406的结果。例如,系统可以识别相关节点,相关节点包括父节点及其对应的子节点。当将节点分配到每个集群时,系统将相关节点分配到同一节点集群。在这种方式下,系统不会将树形结构中的相关父节点和子节点分配到不同节点集群和不同控制器。

在步骤512处,系统将控制器分配到每个节点集群。步骤512可以包括创建或更新sdn的网络配置。在一个实施例中,步骤512包括创建或分配控制器与对应节点集群内的每个节点之间的控制链路。

图11为描述一种基于控制器关联的流量容量或带宽以及与每个节点相关联的流量权重来生成节点集群的过程的流程图。流量权重是与某个节点相关联的用户流量和/或控制流量的量的加权度量。任何表示节点流量的合适度量都可以用作流量权重。可以如上所述确定每个节点的流量权重。可以在做出确定之后为每个节点分配流量权重,以便创建节点集群。控制器330可以具有其能够处理的最大控制流量容量。例如,控制器可以与最大带宽相关联。带宽可以基于控制器能力或基于特定实施方式中的其它能力、限制或需求来确定。在一个实施例中,系统可以为控制器分配或确定最大带宽。

图11的过程尝试将相关子节点和父节点分配到相同集群,同时考虑与每个节点相关联的流量以及集群将被分配到的控制器的容量。

在步骤602处,将变量ifnode设置为任何节点集群内当前都不包含的叶节点。系统可以随机选择叶节点或可以使用用于选择叶节点的预定义过程。在步骤604处,将叶节点添加到节点集群中。在步骤606处,该过程确定叶节点是否存在父节点。如果叶节点ifnode存在父节点,则在步骤608处选择父节点。在步骤610处,系统确定父节点和叶节点ifnode的组合权重是否大于节点集群对应的控制器的容量。如果权重大于控制器的容量,则不将父节点添加到节点集群中,并且在步骤626处创建包括ifnode的节点集群。

如果组合权重小于等于容量,则在步骤612处将父节点添加到节点集群中。在步骤614处,系统确定叶节点ifnode是否具有任何兄弟节点。选中节点的兄弟节点是与兄弟节点处于树的同一级别的节点。兄弟节点和选中节点一样与父节点具有直接上游连接。

如果ifnode存在兄弟节点,则在步骤616处选择兄弟节点。在步骤618处,系统确定添加兄弟节点之后的集群的组合权重是否大于控制器容量。如果权重超过控制器容量,则不添加兄弟节点,并且在步骤626处创建包括父节点和叶节点ifnode的集群。

如果权重不超过容量,则在步骤620处将兄弟节点添加到节点集群中。然后该过程返回步骤614,确定叶节点是否存在其它兄弟节点。如果叶节点不存在更多兄弟节点,则该过程前进到步骤628,将变量ifnode设置为当前叶节点的父节点。然后,该过程返回步骤606,确定新节点ifnode是否存在父节点。如果是,则该过程通过选择新ifnode的父节点从步骤608开始重复。在这种方式下,系统将从叶节点开始,尝试将有关节点(父节点和兄弟节点)分配到同一集群,并将在上游方向继续,直到达到控制器容量或未发现其它父节点。

一旦在步骤606处未发现当前ifnode的其它父节点,该过程就在步骤622处确定当前ifnode是否存在任何兄弟节点。如果ifnode存在兄弟节点,则在步骤616处选择兄弟节点,该过程继续。如果ifnode不存在父节点,也不存在兄弟节点,则该过程前进到步骤624,选择另一个未包含的叶节点。如果不存在叶节点,则在步骤626处创建节点集群。如果存在另一叶节点,则该过程返回步骤602。虽然未示出,但该过程可以先确定添加未包含的叶节点是否会超过容量。如果是,则创建不存在其它叶节点的节点集群。如果否,该过程返回步骤602。

图12描绘了应用图12中过程的具体示例。描绘了三个控制器以及一组七个网络节点。网络节点包括根节点322-1以及叶节点322-2、322-3、322-4、322-5、322-6、322-7。容量c与每个控制器关联。容量表示控制器的最大流量。在一个示例中,容量可以表示控制器的控制流量对应的最大带宽。容量可以通过任何合适的形式来表示。在特定示例中,每个控制器对应的容量是20。

权重w与每个网络节点关联。权重表示每个节点关联的流量的量。权重可以是一个加权流量度量。流量可以是每个节点关联的上游流量和下游流量之和。可以使用任何合适的形式来表示权重。在该特定示例中,根节点322-1的权重是16,节点322-2的权重是6,节点322-3的权重是8,节点322-4的权重是6,节点322-5的权重是6,节点32-6的权重是3,节点322-7的权重是2。

系统创建节点集群326-6、326-8、326-10。集群326-6包括节点322-1。集群322-8包括集群322-4、322-5、322-2。集群326-10包括集群322-6、322-7、322-3。系统从其中一个叶节点开始创建节点集群。例如,系统可以从权重为6的叶节点322-4开始。系统将叶节点322-4添加到集群326-8中。然后,系统选择叶节点322-4的父节点322-2。父节点322-2的权重是6。系统确定组合权重12小于控制器容量20。因此,系统将父节点322-2添加到集群326-8中。然后,系统选择叶节点322-4的兄弟节点322-5。系统确定组合权重18小于控制器容量20。在确定节点322-4不存在其它兄弟节点之后,系统则选择节点322-2的父节点。系统确定组合权重34大于控制器容量20。因此,系统不将节点322-1添加到集群326-8中。

然后,系统选择另一叶节点,重新开始该过程。系统选择叶节点322-6并将其添加到集群326-10中。系统选择父节点322-2并确定组合权重11小于控制器容量20。因此,系统将父节点322-2添加到集群中。然后,系统选择兄弟节点322-7并确定组合权重13小于容量20。系统将节点322-7添加到集群中。在确定节点322-6不存在其它兄弟节点之后,系统则选择节点322-3的父节点。系统确定组合权重29大于控制器容量20。因此,系统不将节点322-1添加到集群326-10中。然后,系统为剩下的根节点322-1创建最后一个集群326-6。

sdn中的节点越来越多地配备有各种设备,能力得到扩展。例如,光线路终端(opticallineterminal,olt)可以包含多个千兆比特无源光线路终端(gigabitpassiveopticallineterminal,gpon)片上系统(system-on-chip,soc)。在这类实施方式中,光线路终端可能会覆盖较大区域,使用大量无源光网络(passiveopticalnetwork,pon)端口。在一些情况下,与单个olt或其它终端相关联的所有设备可能无法由单个控制器进行处理。单个控制器可能无法处理单个控制器覆盖的多个节点的所有请求。

所公开技术可以用于配置控制器到sdn中的节点处设备上的各个端口的分配。在一个实施例中,单个光线路终端的各个端口可以分配到进行控制面管理的不同控制器。

图13为包括控制器到单个olt中多个端口的多种分配的网络环境640的框图。网络环境540包括光线路终端650和两个sdn控制器330-1和330-2。由于可以使用任何数量的控制器,所以通过示例示出了两个控制器。olt650包括cpu652和多个gpon。通过示例示出了十二个gpon,包括两个gponsoc654-1和654-2。每个gponsoc连接到四个端口,总计48个端口。端口656-1连接到gpon654-1,端口656-2连接到gpon654-2。图13示出了端口656-1耦合到gfast路由器658的示例。如图所示,gfast路由器可以连接到wifi路由器660或其它终端用户设备。

根据一个实施例,端口656-1分配到第一sdn控制器330-1,端口656-2分配到第二sdn控制器330-2。通过示例示出了这种分配。一个控制器可以分配有任意数量的端口,包括单个端口,可达所有端口数量减1的数量。

这些端口可以分配到不同控制器,从而认识到olt的多个端口实际上是独立的设备。在这种方式下,管理单个设备的不同端口的不同控制器可以提供更高的可用性。

图14为用于配置接入网中的软件定义网络(software-definednetwork,sdn)类控制器到网络节点分配的一个或多个服务器730的一个实施例的框图。在一个实施例中,服务器730可以包括sdn控制器。服务器可以可替代地包括用于配置sdn的外部控制器或专用控制器。服务器还可以包括客户端设备或另一网络设备,如上所述进行配置。在某些实施例中,可以基于服务器730来执行过程400、500和600。各个单元可以在单个服务器上实现,也可以分布在多个服务器上。

服务器包括网络信息单元702、集群单元704、节点分配单元706和控制器配置单元708。各种单元可以通过硬件和/或软件的任何组合来实现。

一般而言,网络信息单元702可以用于访问网络信息,例如一个或多个sdn的流量信息和/或物理拓扑信息。网络信息单元702是网络信息访问构件的一个示例。单元702是用于访问网络信息的构件的一个示例,网络信息可以包括多个节点以及连接至少多个节点的子集的多个链路的流量信息和/或物理拓扑信息。信息单元是用于分配或确定权重的单元的一个示例,该权重表示节点关联的流量总量。信息单元可以确定多个节点的组合权重并且确定组合权重是否小于节点集群对应的控制器的容量。单元702是用于确定不同节点集群内的节点之间的流量和/或节点集群与外部网络之间的流量关联的权重的构件的一个示例。单元702是用于确定与sdn中的其它父节点分离的父节点的一个构件。

集群单元704用于从sdn中的多个节点生成多个节点集群。单元704是用于基于将流量总量减到最小的目的来创建多个节点集群的构件的一个示例,流量使每个节点集群内的多个节点连接到一个或多个网络。单元704是用于确定与其它父节点分离的父节点的构件的一个示例。单元704是用于创建包括独立父节点和对应于独立父节点的子节点的节点集群的构件的一个示例。

节点分配单元706用于将sdn中的每个节点分配到多个节点集群中的一个。节点分配单元706是用于将相关父节点和子节点等相关节点分配到同一节点集群的构件的一个示例。节点分配单元706是用于根据最小总流量确定结果将节点分配到多个节点集群之一的构件的一个示例。

控制器配置单元708用于提供或配置节点集群,以便由多控制器网络环境中的特定控制器进行控制。单元708是用于配置节点由特定控制进行控制的构件的一个示例。单元708是用于在控制器与节点之间创建控制链路的构件的一个示例。单元708是用于配置多个控制器分别对与一个或多个节点集群相关联的部分节点进行控制的构件的一个示例。

图15为网元800的一个实施例的框图。网元800可以适用于实施所公开的实施例。网元800可以是通过网络、系统和/或域来传送或协助传送数据的任何设备(例如调制解调器、交换机、路由器、网桥、服务器、客户端、控制器等)。例如,网元800可以用于实现用户设备56,基站58,控制器30、40、130、230、330,服务器730以及节点22、122、124、222、322。网元800可以用于实现本文描述的其它设备。

网元800包括端口810、收发单元(transceiverunit,tx/rx)822、处理器820和存储器840。处理器820耦合到存储器840和收发单元822。端口810耦合到收发单元822,收发单元822可以是发射器、接收器或其组合。收发单元822可以经由端口810传输和接收数据。处理器820用于处理数据。存储器840用于存储用于实施本文描述的实施例的数据和指令。在一个实施例中,存储器840实现服务器730和本文描述的各种单元。

网元800还可以包括耦合到端口810和收发单元822的电光(electrical-to-optical,eo)组件和光电(optical-to-electrical,oe)组件,用于接收和传输电信号和光信号。

处理器820可以通过硬件和软件来实现。处理器820可以实现为一个或多个中央处理器(centralprocessingunit,cpu)芯片、逻辑单元、内核(例如,实现为多核处理器)、现场可编程门阵列(field-programmablegatearray,fpga)、专用集成电路(applicationspecificintegratedcircuit,asic)和数字信号处理器(digitalsignalprocessor,dsp)。处理器820与端口810、收发单元822和存储器840通信。

存储器840包括磁盘、磁带驱动器和固态硬盘中的一个或多个,并且可以用作溢流数据存储设备,以在程序被选择执行时存储这类程序以及存储在程序执行期间读取的指令和数据。存储器840可以是易失性的或非易失性的,可以是只读存储器(read-onlymemory,rom)、随机存取存储器(random-accessmemory,ram)、三重内容寻址存储器(ternarycontent-addressablememory,tcam)和静态随机存取存储器(staticrandom-accessmemory,sram)。在一个实施例中,控制器830包括能够由处理器820执行的编程程序、指令或例程。控制器可以由处理器820实现,以执行用于访问网络信息以及配置sdn中的控制器到节点分配的指令包含服务器730或此处描述的任一单元改进了网元800的功能。这些单元将网元800转变到另一状态。

图16为能够用于实施各种实施例的计算系统1300的高级框图。在一个示例中,计算系统1300是网络系统1300。特定设备可以利用示出的所有组件或仅组件的一个子集,且设备之间的集成程度可能不同。此外,设备可以包括组件的多个实例,例如多个处理单元、处理器、存储器、发射器和接收器等。

网络系统可以包括配备有一个或多个输入/输出设备的处理单元1301,这些输入/输出设备包括网络接口、存储接口等。处理单元1301可以包括连接到总线的中央处理器(centralprocessingunit,cpu)1310、存储器1320、大容量存储设备1330,以及i/o接口1360。该总线可以为任何类型的若干总线架构中的一个或多个,任何类型的若干总线架构包括存储器总线或者存储器控制器、外设总线,等等。处理单元1301可以用于实现本文描述的任何计算设备,例如服务器、控制器和/或客户端设备。

所述cpu1310可以包括任何类型的电子数据处理器。通过实施例中描述的任一步骤或步骤组合,cpu1310可以用于实施本文描述的任何方案,例如过程400、500和600。存储器1320可以包括任何类型的系统存储器,例如静态随机存取存储器(staticrandomaccessmemory,sram)、动态随机存取存储器(dynamicrandomaccessmemory,dram)、同步dram(synchronousdram,sdram)、只读存储器(read-onlymemory,rom)或其组合,等等。在一个实施例中,存储器1320可以包括在开机时使用的rom以及在执行程序时使用的存储程序和数据的dram。在各种实施例中,存储器1320是非瞬时的。大容量存储器设备1330可以包括任何类型的存储设备,其用于存储数据、程序和其它信息,并使这些数据、程序和其它信息通过总线访问。大容量存储器设备1330可以包括如下项中的一种或多种:固态磁盘、硬盘驱动器、磁盘驱动器、光盘驱动器,等等。

处理单元1301还包括一个或多个网络接口1350,网络接口1350可包括以太网电缆等有线链路,和/或到接入节点或者一个或多个网络1380的无线链路。网络接口1350允许处理单元1301通过网络1380与远程单元通信。例如,网络接口1350可以通过一个或多个发射器/发射天线以及一个或多个接收器/接收天线提供无线通信。在一个实施例中,处理单元1301耦合到局域网或广域网以用于数据处理以及与远程设备进行通信,该远程设备包括其它处理单元、因特网、远程存储设施等。在一个实施例中,网络接口1350可以用于在sdn中接收和/或传输事件、消息、数据、路由信息等。在本文中,术语“网络接口”将理解为包括端口。

通过实施例中描述的任一步骤或步骤组合,处理单元1301可以用于实施本文描述的任何方案,例如过程400、500和600。

图16的计算系统中描述的组件是通常在计算系统中发现的适用于本文所述技术的组件,旨在代表本领域中众所周知的一大类这种计算机组件。可以使用多种不同的总线配置、网络平台和操作系统。

本文描述的技术可以使用硬件、软件或者硬件与软件的组合来实现。所用软件存储在上述处理器可读存储设备(例如存储器1320或大容量存储器1330)中的一个或多个上,以对处理器中的一个或多个进行编程,从而执行本文描述的功能。处理器可读存储设备可以包括计算机可读介质,例如易失性和非易失性介质、可移动和不可移动介质。例如而非限制,计算机可读介质可以包括计算机可读存储介质和通信介质。计算机可读存储介质是非瞬时性的,可以在任何用于存储计算机可读指令、数据结构、程序模块或其它数据等信息的方法或技术中实现。计算机可读存储介质的示例包括ram、rom、eeprom、闪存或其它存储技术、cd-rom、数字多功能光盘(digitalversatiledisk,dvd)或其它光盘存储器、盒式磁带、磁带、磁盘存储器或其它磁存储设备,或可以用来存储所需信息并且可以由计算机访问的任何其它介质。通信媒体通常体现计算机可读指令、数据结构、程序模块或例如载波或其它输送机构的调制后数据信号中的其它数据,且包含任何信息传送媒体。“调制数据信号”这一术语是指这样一种信号:信号的一个或多个特性通过对该信号中的信息进行编码的方式来设置或更改。例如而非限制,通信介质包括有线介质,例如有线网络或直接有线连接,还包括无线介质,例如rf和其它无线介质。任何上述介质的组合也包括在计算机可读介质的范围内。

非瞬时性计算机可读介质包括磁性存储介质、光存储介质和固态存储介质等各种类型的计算机可读介质,但不包括信号。应理解,软件可以安装在路由器、客户端或其它网络设备中并且随该路由器、客户端或其它网络设备一同出售。可替代地,可以获取软件并将其加载到设备中,包括通过磁盘介质或者以网络或分配系统的任何方式获取软件,例如,包括从软件开发者所有的服务器或从非软件开发者所有但为其所用的服务器获取软件。例如,软件可以存储在服务器上,以便通过互联网分发。

在替代性实施例中,可以将部分或所有软件替换为专用硬件,包括自定义集成电路、门阵列、fpga、pld和专用计算机。在一个实施例中,使用实施一个或多个实施例的(存储在存储设备上的)软件来对一个或多个处理器进行编程。该一个或多个处理器可以与一个或多个计算机可读介质/存储设备、外围设备和/或通信接口进行通信。在替代性实施例中,可以将部分或所有软件替换为专用硬件,包括自定义集成电路、门阵列、fpga、pld和专用计算机。在各种实施例中,“单元”这一术语可以包括电路(或集成电路)或软件组件。

出于说明性和描述性目的,提供了前述具体实施方式。其并非旨在穷举或限制发明主题为所公开的精确形式。根据上述教导,许多修改和变更是可能的。选出和描述的各个实施例的目的是为了更好地解释公开技术的原理和其实际应用,因而使本领域技术人员能够更好利用各个实施例的技术和适合预期特定用途的各种变更。本发明的范围由所附权利要求书限定。

本发明已结合各种实施例进行了描述。但是,通过对附图、本发明和所附权利要求书的研究可以理解和实现所公开实施例的其它变体和修改,这些变体和修改被理解为包含在所附权利要求书中。在权利要求书中,词语“包括”不排除其它元素或步骤,不定冠词“a”或者“an”不排除多个。单个处理器或其它单元可满足权利要求中描述的几项的功能。在仅凭某些措施被记载在相互不同的从属权利要求书中这个单纯的事实并不意味着这些措施的结合不能被有效地使用。计算机程序可存储或分发到合适的介质上,例如与其它硬件一起或者作为其它硬件的部分提供的光存储介质或者固态介质,还可以以其它形式例如通过因特网或者其它有线或无线电信系统分发。

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