用于网络管理系统的拓扑编译器的制作方法

文档序号:32750075发布日期:2022-12-31 00:10阅读:44来源:国知局
用于网络管理系统的拓扑编译器的制作方法
用于网络管理系统的拓扑编译器
1.本技术要求2021年6月30日提交的美国专利申请第17/305,118号的权益,其全部内容通过引用并入本文。
技术领域
2.本公开涉及计算机网络,更具体地,涉及网络设备的管理。


背景技术:

3.计算机网络是能够交换数据和共享资源的互连计算设备的集合。各种设备操作以促进计算设备之间的通信。例如,计算机网络可以包括路由器、交换机、网关、防火墙和各种其他设备以提供和促进网络通信。
4.这些网络设备通常包括用于本地或远程配置设备的机制,诸如管理接口。通过与管理界面交互,客户端可以执行配置任务以及执行操作命令,以收集和查看管理的设备的操作数据。例如,客户端可以配置设备的接口卡、调整用于支持的网络协议的参数、指定设备内的物理组件、修改由路由器维护的路由信息、访问驻留在设备上的软件模块和其他资源、以及执行其他配置任务。此外,客户端可以允许用户查看当前操作参数、系统日志、与网络连通性有关的信息、网络活动或来自设备的其他状态信息,以及查看从设备接收的事件信息并且对其作出反应。
5.网络配置服务可以由多个不同的设备来执行,诸如具有服务卡的路由器和/或专用服务设备。这种服务包括连通性服务,诸如第三层虚拟专用网络(l3vpn)、虚拟专用局域网服务(vpls)和对等(p2p)服务。其他服务包括诸如dot1q vlan服务的网络配置服务。也称为控制器或控制器设备的网络管理系统(nms)和nms设备可以支持这些服务,使得管理员可以容易地创建和管理这些高等级网络配置服务。
6.具体地,设备的用户配置可以被称为“意图(intent)”。基于意图的网络系统允许管理员描述意图的网络/计算/存储状态。用户意图可以分类为业务策略和无状态意图。可以基于网络的当前状态来解析业务策略或有状态的意图。无状态意图可以是描述所意图的网络/计算/存储状态的完全声明性方式,而不考虑当前网络状态。
7.意图可以被表示为意图数据模型,其可以使用统一图来建模。意图数据模型可以表示为连接的图,使得可以跨意图数据模型来实现业务策略。例如,数据模型可以使用具有利用has-边和参考(ref)边连接的顶点的连接的图来表示。控制器设备可以将意图数据模型建模为统一图,使得可以将图模型表示为连通的。以这种方式,可以跨意图数据模型实现业务策略。当使用统一图模型对意图进行建模时,扩展新的意图支持需要扩展图模型和编译逻辑。
8.为了配置设备以执行意图,用户(诸如,管理员)可以编写转译程序,该转译程序将高等级配置指令(例如,根据意图数据模型的指令,其可以被表示为统一图模型)转译成低等级配置指令(例如,根据设备配置模型的指令)。作为配置服务支持的部分,用户/管理员可以提供意图数据模型以及意图数据模型到设备配置模型之间的映射。
9.为了简化针对用户的映射定义,控制器设备可以被设计为以简单的方式提供定义映射的能力。例如,一些控制器设备提供速率(velocity)模板和/或可扩展样式表语言转换(xslt)的使用。这样的转译器包含从意图数据模型到低等级设备配置模型的转译或映射逻辑。通常,意图数据模型中相对小数目的更改会影响跨设备配置的相对大数目的属性。当从意图数据模型创建、更新和删除服务时,可以使用不同的转译器。


技术实现要素:

10.一般而言,本公开描述了用于管理网络设备的技术。本文也称为控制器或控制器设备的网络管理系统(nms)设备可以被配置为将高等级配置(从管理员接收到的针对多个管理的网络设备的意图)转译为低等级配置(将应用于管理的网络设备本身)。在一些情况下,控制器设备可以接收对资源设备的拓扑和角色的指示,并且生成针对资源设备的设备等级配置信息。例如,管理员(例如,人)可以选择针对资源设备的拓扑(例如,脊或叶、3级clos或5级clos)和角色,并且提供意图。在一些示例中,控制器设备可以基于资源设备的角色、拓扑和意图来生成针对资源设备的设备等级配置。在一些情况下,由管理员提供给控制器设备的意图可以与多个(例如,多于10个、多于20个等)角色相关联。随着角色数目的增加,操作控制器设备的复杂性增加,这可能导致管理员将不正确的角色或拓扑分配给资源设备,使得控制器设备不能正确地实现意图。
11.根据本公开的技术,控制器设备可以支持多个拓扑编译器,其中每个拓扑编译器与相应的拓扑相关联。例如,第一拓扑编译器可以与3级clos网络相关联,并且第二拓扑编译器可以与5级clos网络相关联。拓扑编译器可以被配置为将规则分配给每个资源设备,而不是依赖于管理员将角色分配给每个资源设备。以这种方式,可以利用来自管理员的较少交互来实现使用拓扑来设置结构,这可以提高结构的可靠性。
12.此外,支持拓扑的每个资源设备可以调用分配给该拓扑的相应的拓扑编译器,而不是依赖于针对所有拓扑的指令集。例如,第一资源设备可以调用3级clos网络拓扑编译器以及第一资源设备的角色的指示,并且3级clos网络拓扑编译器可以生成针对第一资源设备的抽象配置。在该示例中,第一资源设备可以生成设备等级配置信息以将第一资源设备配置为实现由管理员提供的意图。以这种方式,针对资源设备的资源控制器可以根据所选择的拓扑自动生成必要的配置信息,这可以减少用于配置资源设备以实现意图的时间。
13.此外,控制器设备可以实现“可扩展框架”,其可以在维护公共框架的同时,允许一个或多个附加的拓扑编译器。以这种方式,控制器设备可以被配置为在运行时操作现有拓扑的同时,支持新的拓扑,而不修改针对现有拓扑的框架。
14.在一个示例中,一种方法包括由管理多个网络设备的控制器设备,经由应用编程接口(api)框架接收意图的指示。该意图包括指示对数据结构的更新的数据,该数据结构包括表示多个网络设备的多个节点和连接多个节点的多个边。该方法还包括由控制器设备处理该意图以从多个拓扑编译器中选择拓扑编译器,以及由控制器设备经由api框架,使用多个网络设备中的网络设备的角色和网络设备的指示作为输入来调用所选择的拓扑编译器,以生成抽象配置信息。该方法还包括由控制器设备基于抽象配置信息来配置网络设备。
15.在另一示例中,一种管理多个网络设备的控制器设备包括一个或多个处理单元,一个或多个处理单元被实现在电路中并且被配置为经由应用编程接口(api)框架接收意图
的指示。该意图包括指示对数据结构的更新的数据,该数据结构包括表示多个网络设备的多个节点和连接多个节点的多个边。该一个或多个处理单元还被配置为处理该意图以从多个拓扑编译器中选择拓扑编译器,以及经由api框架,使用多个网络设备中的网络设备的角色和网络设备的指示作为输入来调用所选择的拓扑编译器,以生成抽象配置信息。该一个或多个处理单元还被配置为基于抽象配置信息来配置网络设备。
16.在一个示例中,一种其上存储有指令的计算机可读存储介质,指令在被执行时使一种管理多个网络设备的控制器设备的处理器经由应用编程接口(api)框架接收意图的指示。该意图包括指示对数据结构的更新的数据,该数据结构包括表示多个网络设备的多个节点和连接多个节点的多个边。该指令还使处理器处理该意图以从多个拓扑编译器中选择拓扑编译器,以及经由api框架,使用多个网络设备中的网络设备的角色和网络设备的指示作为输入来调用所选择的拓扑编译器,以生成抽象配置信息。该指令还使处理器基于抽象配置信息来配置网络设备。
17.一个或多个示例的细节在附图和下文的描述中阐述。其他特征、目的和优点将从说明书和附图以及权利要求书中清楚。
附图说明
18.图1是示出包括使用管理设备管理的企业网络的元素的示例的框图。
19.图2是示出用于图1的管理设备的示例组件集的框图。
20.图3是示出根据本公开的技术向元素分配角色的示例的概念图。
21.图4是示出根据本公开的技术、生成针对资源设备的抽象设备配置的示例的概念图。
22.图5是示出根据本公开的技术、生成针对服务设备的抽象设备配置的示例的概念图。
23.图6是示出根据本公开的技术、生成设备等级配置的示例的概念图。
24.图7是示出示例clos网络的框图。
25.图8是示出根据本公开的技术、使用拓扑编译器来确定针对网络设备的角色的示例过程的流程图。
26.图9是示出根据本公开的技术、用于使用拓扑编译器生成抽象配置的示例过程的流程图。
27.图10是示出根据本公开的技术、用于使用拓扑编译器配置设备资源的示例过程的流程图。
具体实施方式
28.图1是示出包括使用控制器设备10管理的企业网络2的元素的示例的框图。企业网络2的管理的元素14a至元素14g(统称为“元素14”)包括经由通信链路互连以形成通信拓扑以便交换资源和信息的网络设备。元素14(一般也称为网络设备或远程网络设备)可以包括例如,路由器、交换机、网关、网桥、集线器、服务器、防火墙或其他入侵检测系统(ids)或入侵防御系统(idp)、计算设备、计算终端、打印机、其他网络设备或这种设备的组合。虽然在本公开中描述为传输、传递或以其他方式支持分组,但是企业网络2可以根据由任何其他协
议定义的任何其他离散数据单元来传输数据,诸如由异步传输模式(atm)协议定义的小区或由用户数据报协议(udp)定义的数据报。互连元素14的通信链路可以是物理链路(例如,光链路、铜缆链路等)、无线链路或其任意组合。
29.企业网络2被示为经由通信链路耦合到公共网络18(例如,互联网)。例如,公共网络18可以包括一个或多个客户端计算设备。公共网络18可以提供对web服务器、应用服务器、公共数据库、媒体服务器、终端用户设备以及其他类型的网络资源设备和内容的访问。
30.控制器设备10经由企业网络2通信地耦合到元素14。在一些示例中,控制器设备10形成设备管理系统的部分,尽管在图1中出于示例的目的仅示出了设备管理系统的一个设备。控制器设备10可以直接或间接耦合到各种元素14。一旦元素14被部署和激活,管理员12使用控制器设备10来使用设备管理协议来管理网络设备。一个示例设备协议是简单网络管理协议(snmp),其允许控制器设备10遍历和修改在管理的元素14中的每个元素内存储配置数据的管理信息库(mib)。snmp协议的更多细节可以在下文中找到:harrington等人,rfc 3411,“an architecture for describing simple network management protocol(snmp)management frameworks”(用于描述简单网络管理协议(snmp)管理框架的架构),网络工作组,互联网工程任务组草案,2002年12月,其可在http://tools.ietf.org/html/rfc3411获得,其全部内容通过引用并入本文。
31.也称为网络管理系统(nms)或nms设备的控制器设备10和元素14由企业的it组集中维护。管理员12与控制器设备10交互以远程监控和配置元素14。例如,管理员12可以从控制器设备10接收关于任何元素14的警报、查看元素14的配置数据、修改元素14的配置数据、向企业网络2添加新的网络设备、从企业网络2移除现有的网络设备、或者以其他方式操纵企业网络2和其中的网络设备。尽管针对企业网络进行了描述,但本公开的技术也适用于其他网络类型,公共的和专用的,包括lan、vlan、vpn等。
32.在一些示例中,管理员12使用控制器设备10或本地工作站来直接与元素14交互,例如通过远程登录、安全外壳(ssh)或其他这样的通信会话。即,元素14一般提供用于直接交互的界面,诸如命令行界面(cli)、基于网络的界面、图形用户界面(gui)等,通过这些界面,用户可以与设备交互以直接发出基于文本的命令。例如,这些界面通常允许用户例如通过远程登录、安全外壳(ssh)、超文本传输协议(http)或其他网络会话直接与设备交互,以根据所定义的语法输入文本以向管理的元素提交命令。在一些示例中,用户使用控制器设备10发起与元素14中的一个元素(例如,元素14f)的ssh会话15,以直接配置元素14f。以这种方式,用户可以将用于执行的格式的命令直接提供给元素14。
33.此外,管理员12还可以创建脚本,该脚本可以由控制器设备10提交给任何或所有的元素14。例如,除了cli界面之外,元素14还提供用于接收根据脚本语言指定命令的脚本的界面。在某种意义上,脚本可以由控制器设备10输出以自动调用管理的元素14上的相应远程过程调用(rpc)。脚本可以符合例如可扩展标记语言(xml)或另一数据描述语言。
34.管理员12使用控制器设备10来配置元素14,以指定推进管理员12的目标的某些操作特性。例如,管理员12可以针对元素14指定关于安全性、设备可访问性、业务工程、服务质量(qos)、网络地址转译(nat)、分组过滤、分组转发、速率限制或其他策略的特定操作策略。控制器设备10使用针对管理的网元素14内的配置数据的管理而设计的一个或多个网络管理协议,诸如snmp协议或网络配置协议(netconf)协议或其衍生协议,诸如瞻博设备管理界
面,以执行配置。一般而言,netconf提供用于配置网络设备的机制,并且针对配置数据使用基于可扩展标记语言(xml)的数据编码,该配置数据可以包括策略数据。netconf在下文进行了描述:enns,“netconf configuration protocol”(netconf配置协议),网络工作组,rfc 4741,2006年12月,其可在tools.ietf.org/html/rfc4741获得,其全部内容通过引用并入本文。控制器设备10可以与一个或多个元素14建立netconf会话。
35.控制器设备10可以被配置为接受来自管理员12的高等级配置数据或意图(其可以被表示为结构化输入参数,例如,根据yang,其在下文进行了描述:bjorklund,“yang—a data modeling language for the network configuration protocol(netconf)”(yang-用于网络配置协议(netconf)的数据建模语言),互联网工程任务组,rfc 6020,2010年10月,其可在tools.ietf.org/html/rfc6020获得)。控制器设备10还可以被配置为输出相应的低等级设备配置数据集,例如设备配置添加、修改和移除。关于用于将高等级配置信息转译为低等级设备配置信息的示例过程的附加细节可以在下文找到:例如,jiang等人,“translating high-level configuration instructions to low-level device configuration”(将高等级配置指令转译为低等级设备配置),美国专利申请第15/198,657号,于2016年6月30日提交,其全部内容通过引用并入本文。本公开将从意图产生的低等级设备配置(即,通过编译或转译意图而产生)称为“设备等级意图配置信息”或“意图配置”,以将该设备等级配置与带外(oob)设备等级配置区分开来。在一些示例中,控制器设备10可以使用用于意图数据模型和低等级设备配置模型的yang建模。此数据可以包含yang实体之间的关系,诸如列表项和容器。在一些示例中,控制器设备10可以将yang数据模型转换为数据库模型,并且将yang验证转换为数据验证。用于使用针对高等级配置数据的图模型来管理网络设备的技术在下文进行了描述:“configuring and managing network devices using program overlay on yang-based graph database”(使用基于yang的图数据库上的程序覆盖来配置和管理网络设备),美国专利申请第15/462,465号,于2017年3月17日提交,其全部内容通过引用并入本文。
36.控制器设备10可以从管理员12中的一个管理员接收表示任何或所有关于意图数据模型的创建、更新和/或删除动作数据。控制器设备10可以被配置为使用针对与应用于图模型的创建、更新和删除中的每个相同的编译逻辑。
37.一般而言,像控制器设备10这样的控制器可以使用针对意图、低等级数据模型和资源的层级数据模型。层级数据模型可以基于yang或yaml。层级数据模型可以表示为图,如上所述。意图的使用可以简化网络的管理。意图是陈述性的。为了实现意图,控制器设备10尝试选择最佳资源。
38.一般而言,控制器设备10可以被配置为将高等级配置(例如,从管理员接收到的、针对多个管理的网络设备的意图)转译为低等级配置,其在本文中也可以被称为“设备等级配置”(将应用于管理的网络设备本身)。在一些情况下,控制器设备10可以接收针对元素14a的拓扑和角色的指示,并且生成针对元素14a的设备等级配置信息。例如,管理员12可以选择针对元素14a的拓扑和角色并且提供意图。在一些示例中,控制器设备10可以基于元素14a在拓扑(例如,脊和叶拓扑)中的角色(例如,脊或叶)、拓扑和意图来生成针对元素14a的设备等级配置。在一些情况下,由管理员12提供给控制器设备10的意图可以与多个(例如,多于10个、多于20个等)角色相关联。随着角色数量的增加,操作控制器设备的复杂性增加,
这可能导致管理员12向资源设备分配不正确的角色或拓扑,使得控制器设备10不能正确地实现意图。
39.根据本公开的技术,控制器设备10可以支持多个拓扑编译器,其中每个拓扑编译器与相应的拓扑相关联。例如,第一拓扑编译器可以与3级clos网络相关联,并且第二拓扑编译器可以与5级clos网络相关联。拓扑编译器可以被配置为将规则分配给每个资源设备,而不是依赖于管理员12将角色分配给每个资源设备。以这种方式,可以利用来自管理员的较少交互来实现使用拓扑来设置结构,这可以提高结构的可靠性。
40.此外,元素中的每个元素14可以调用分配给该拓扑的拓扑编译器,而不是依赖于针对所有拓扑的指令集。例如,元素14a可以调用3级clos网络拓扑编译器以及第一资源设备的角色的指示,并且3级clos网络拓扑编译器可以生成针对第一资源设备的抽象配置。在该示例中,元素14a可以生成设备等级配置信息以配置元素14a以实现由管理员12提供的意图。以这种方式,控制器设备10可以根据所选择的拓扑自动生成配置信息,这可以减少用于配置资源设备以实现意图的时间。
41.此外,控制器设备10可以实现“可扩展框架”,其可以在维护公共框架的同时,允许一个或多个附加的拓扑编译器。以这种方式,控制器设备10可以被配置为在运行时操作现有拓扑的同时,支持新的拓扑,而不修改针对现有拓扑的框架。例如,拓扑编译器中的每个拓扑编译器可以包括可插拔拓扑编译器,该可插拔拓扑编译器被配置为符合可扩展框架(例如,应用编程接口(api)框架)可调用的标准。
42.例如,控制器设备10可以接收意图的指示。在一些示例中,意图包括指示对数据结构的更新的数据,该数据结构包括表示元素14的多个节点和连接多个节点的多个边。控制器设备10可以处理意图以从多个拓扑编译器中选择拓扑编译器。例如,控制器设备10可以基于意图和元素14的连通性信息来选择针对元素14的多个拓扑中的拓扑。在该示例中,控制器设备10可以选择与所选择的拓扑相关联的(例如,分配给所选择的拓扑)拓扑编译器。
43.控制器设备10可以经由api框架,使用元素14a的角色和元素14a的指示作为输入来调用拓扑编译器,以生成抽象配置信息。在该示例中,控制器设备10可以基于抽象配置信息来配置元素14a。以这种方式,控制器设备10可以根据所选择的拓扑来自动生成配置信息,这可以减少配置资源设备以实现意图的时间。此外,使用api框架可以包括可扩展框架,其可以允许在运行时修改符合由可扩展框架可调用的标准的多个编译器,使得可以添加新的拓扑编译器并且可以移除现有的拓扑编译器。以这种方式,可以在运行时修改控制器设备10,这可以减少网络2的停机时间。
44.图2是示出针对图1的控制器设备10的示例组件集的框图。在该示例中,控制器设备10包括控制单元22、网络接口34和用户接口36。网络接口34表示可以通信地将控制器设备10耦合到外部设备(例如,图1的元素14中的一个元素)的示例接口。网络接口34可以表示无线和/或有线接口,例如,被配置为根据无线标准进行通信的以太网接口或无线无线电设备,无线标准诸如是ieee 802.11无线网络协议中的一个或多个协议(诸如802.11a/b/g/n或其他这种无线协议)。在各种示例中,控制器设备10可以包括多个网络接口,尽管出于示例的目的仅示出了一个网络接口。
45.控制单元22表示用于实现归属于控制单元22及其组成模块和元素的功能的硬件、软件和/或固件的任何组合。当控制单元22包括软件或固件时,控制单元22还包括用于存储
和执行软件或固件的任何必要硬件,诸如一个或多个处理器或处理单元。一般而言,处理单元可以包括一个或多个微处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fga)、或任何其他等效的集成或离散逻辑电路、以及这种组件的任何组合。此外,处理单元一般使用固定和/或可编程逻辑电路来实现。
46.用户接口36表示诸如管理员12(图1)的用户通过其与控制器设备10交互以例如提供输入和接收输出的一个或多个接口。例如,用户接口36可以表示监控器、键盘、鼠标、触摸屏、触摸板、追踪板、扬声器、相机、麦克风等中的一个或多个。此外,尽管在该示例中控制器设备10包括用户接口,但是应当理解,管理员12不需要直接与控制器设备10交互,而是可以例如经由网络接口34来远程访问控制器设备10。
47.在该示例中,控制单元22包括用户接口模块38、网络接口模块32和管理模块24。控制单元22执行用户接口模块38以从用户接口36接收输入和/或向用户接口36提供输出。控制单元22还执行网络接口模块32以经由网络接口34发送和接收数据(例如,分组)。同样用户接口模块38、网络接口模块32和管理模块24可以实现为相应的硬件单元、或软件或固件、或其组合。
48.控制单元22执行管理模块24以管理各种网络设备,例如图1的元素14。例如,管理包括根据从用户(例如,图1的管理员12)接收的指令来配置网络设备,以及向用户提供提交配置网络设备的指令的能力。在该示例中,管理模块24还包括配置模块26和转译模块28。
49.管理模块24被配置为从诸如管理员12的用户接收针对管理的网络设备集的意图(例如,高等级配置指令)。在一些示例中,管理模块24在本文中可以被称为“结构管理器”。随着时间的推移,用户可以更新配置指令,例如,以添加新服务、移除现有服务或修改由管理的设备执行的现有服务。意图可以根据例如yang来构造。在一些示例中,管理模块24还向用户提供提交转译模块28执行以将意图转换为特性于设备的、低等级配置指令的转译功能的能力,如下所述。
50.控制器设备10还包括配置数据库40。配置数据库40一般包括描述管理的网络设备(例如,元素14)的信息。例如,配置数据库40可以包括指示设备标识符(诸如,mac和/或ip地址)、设备类型、设备供应方、设备种类(例如,路由器、交换机、网桥、集线器等)等的信息。配置数据库40还基于针对管理的设备(例如,元素14)的意图(例如,高等级配置信息,或者在某些情况下,高等级配置信息和低等级配置信息两者)来存储设备等级配置信息。
51.转译模块28,本文也可以被称为“设备管理器”,可以使用配置数据库40来确定哪些设备是被管理的。转译模块28基于配置数据库40的信息来确定哪些转译功能30执行高等级配置指令,例如,哪些设备将接收低等级配置指令。然后,转译模块28执行转译功能30的所确定的转译功能中的每个转译功能,从而将高等级配置指令作为输入提供给转译功能,并且接收低等级配置指令。然后,转译模块28可以将低等级配置指令提供给配置模块26。
52.在接收到来自转译模块28的低等级配置指令之后,配置模块26经由网络接口模块32将低等级配置指令发送到要更新配置的相应管理的网络设备。网络接口模块32将低等级配置指令传递给网络接口34。网络接口34将低等级配置指令转发到相应的网络设备。
53.尽管出于示例的目的将用户接口36描述为允许管理员12(图1)与控制器设备10交互,但是应当理解,在其他示例中可以使用其他接口。例如,控制器设备10可以包括代表性状态传输(rest)客户端(未示出),其可以充当到另一设备的接口,管理员12可以通过其来
配置控制器设备10。同样,管理员12可以通过经由rest客户端与控制器设备10交互来配置元素14。
54.图3是示出根据本公开的技术向元素14分配角色的示例的概念图。结构管理器302包括api框架304(本文也简称为“api 304”)、控制器306,其包括结构控制器308、拓扑编译器310a至拓扑编译器310n(统称为“拓扑编译器301”)、拓扑验证312、角色分配314和库存管理器316。库存管理器316可以访问图2的配置数据库40以确定连通性信息。
55.在图3的示例中,结构控制器308可以利用元素14a的指示作为输入来调用拓扑编译器310a(320)。例如,结构控制器308可以基于指示与拓扑编译器310a相关联(例如,被分配给拓扑编译器310a)的拓扑的改变的意图,从拓扑编译器310中选择拓扑编译器310a。在该示例中,结构控制器308可以经由api 304来调用拓扑编译器310a。例如,结构控制器308可以经由api 304可调用的标准来调用拓扑编译器310a。
56.拓扑编译器310a可以从库存管理器316读取连通性信息(例如,链路和/或布线信息)(316)。拓扑编译器310a可以基于所提供的拓扑类型和元素14来验证用户请求的拓扑。例如,当由结构控制器308执行时,拓扑编译器310a可以将来自库存管理器316的连通性信息与针对所提供的拓扑类型的有效连通性信息进行比较。
57.拓扑编译器310a可以向元素14分配特定于拓扑的角色。例如,拓扑编译器310a可以包括当由结构控制器308执行时基于连通性信息向元素14a分配脊或叶角色的二进制文件。例如,当由结构控制器308执行时,拓扑编译器310a可以响应于指示元素14a被布线为脊和叶拓扑中的脊的连通性信息,将脊角色分配给元素14a。
58.图4是示出根据本公开的技术生成资源设备的抽象设备配置332的示例的概念图。结构管理器302包括api 304、控制器306,其包括结构控制器308、拓扑编译器310和抽象设备配置332。
59.在图4的示例中,结构控制器308可以经由api 304利用包括角色的设备资源作为输入来调用拓扑编译器310中的拓扑编译器(340)。例如,结构控制器308可以经由api 304利用包括角色(例如,叶或脊)的元素14a的指示作为输入来调用拓扑编译器310a。基于与拓扑编译器310a相关联的角色和拓扑,结构控制器308在执行拓扑编译器310a时,可以创建抽象设备配置332(342)。例如,结构控制器308在执行拓扑编译器310a时,可以基于元素14a的角色来创建针对元素14a的抽象设备配置332。抽象设备配置332可以包括在每个设备的基础上(例如,元素14a中的每个元素)的openconfig指令。
60.图5是示出根据本公开的技术生成服务资源的抽象设备配置352的示例的概念图。结构管理器302包括api 304、控制器306,其包括服务控制器350、拓扑编译器310和抽象设备配置332。
61.在图5的示例中,服务控制器350可以利用api 304,利用包括角色的服务资源作为输入来调用拓扑编译器310中的拓扑编译器(360)。例如,服务控制器350可以经由api 304利用包括角色的服务资源的指示作为输入来调用拓扑编译器310a。基于与拓扑编译器310a相关联的角色和拓扑,服务控制器350在执行拓扑编译器310a时,可以创建抽象设备配置352(362)。例如,服务控制器350在执行拓扑编译器310a时,可以基于服务资源的角色创建针对服务资源的抽象设备配置352。抽象设备配置352可以包括在每个服务资源的基础上的openconfig指令。
62.图6是示出根据本公开的技术生成设备等级配置的示例的概念图。在图6的示例中,当将意图转换为抽象设备配置时,拓扑编译器310可以使用api 304。资源控制器372a至资源控制器372c(统称为“资源控制器372”)可以被配置用于拓扑感知。例如,资源控制器372a可以确定由资源控制器372a实现的拓扑,并且调用与由资源控制器372a实现的拓扑相关联的拓扑编译器310中的拓扑编译器。在一些示例中,遥测管理器可以将遥测信息输出到资源控制器372中的每个资源控制器。设备管理器可以将抽象配置转换为设备等级配置。在一些示例中,设备管理器可以包括图2的转译模块28和/或可以被配置为执行转译模块28的一个或多个功能。
63.资源控制器372可以被配置为基于拓扑来提供意图资源到抽象配置的语义转译。例如,资源控制器372a可以调用与由资源控制器372a实现的拓扑相关联的拓扑编译器310a,以将意图转译成抽象配置。
64.资源控制器372可以被配置为支持多个拓扑编译器372。例如,资源控制器372a可以选择与由资源控制器372a实现的拓扑相关联的拓扑编译器310中的一个拓扑编译器。在一些示例中,拓扑编译器310可以是可插拔的。例如,拓扑编译器310中的每个拓扑编译器可以包括可插拔编译器,该可插拔编译器被配置为符合api 304可调用的标准。例如,api 304可以包括用于向拓扑编译器310提供意图信息的通信标准集,并且可以包括用于接收抽象配置的通信标准集。以这种方式,可以在运行时将新的拓扑编译器添加到拓扑编译器310。
65.资源控制器372可以是拓扑不可知的。例如,资源控制器372a可以向设备管理器(例如,转译模块28)发送抽象配置。在该示例中,设备管理器可以将抽象转译为设备等级配置。
66.在图6的示例中,处理电路(例如,控制器设备10的处理电路)可以经由api 304,使用意图作为输入来生成针对资源控制器372的一个或多个改变事件。例如,处理电路(例如,控制器设备10的处理电路)可以基于意图并且进一步基于存储在图数据库370中的数据结构(例如,图模型)来生成针对资源控制器372的一个或多个改变事件。
67.资源控制器372a可以确定针对资源控制器372a是否发生了改变事件。例如,监视功能305(本文也被简称为“监视305”)可以经由api 304,指示针对资源控制器372a中的每个资源控制器是否发生了改变事件。资源控制器372a可以基于一个或多个改变事件从拓扑编译器310确定拓扑编译器。例如,资源控制器372a可以基于由图数据库370存储的数据结构的部分来确定与一个或多个改变事件相关联的拓扑编译器310a。在该示例中,资源控制器372a可以经由api 304,使用元素14a的角色和元素14a的指示作为输入来调用拓扑编译器310a,以生成抽象配置信息。在该示例中,拓扑编译器310在由处理电路(例如,控制器设备10的处理电路)执行时,可以将抽象配置信息输出到资源控制器372a。
68.资源控制器372a可以基于抽象配置信息来配置元素14a。资源控制器372a可以基于抽象配置来配置元素14a。在一些示例中,资源控制器372a可以将抽象配置输出到设备管理器,并且可以接收设备等级配置。在一些示例中,资源控制器372a可以基于抽象配置来确定设备等级配置。
69.图7是示出示例clos网络430的框图。clos网络430包括三级交换机:入口交换机432a至入口交换机432n(入口交换机432)、中间级交换机434a至中间级交换机434n(中间级交换机434)和出口交换机436a至出口交换机436n(出口交换机436)。尽管字母“n”被用来指
定入口交换机432、中间级交换机434和出口交换机436中的每个可变数目,但是包括在每个级中的交换机的数目不必然相同。即,可以存在不同数目的入口交换机432、中间级交换机434和出口交换机436。此外,尽管clos网络430包括三级,但一般的clos网络可以包括任何数目的级(例如,5级clos网络或另一级clos网络)。
70.图8是示出根据本公开的技术使用拓扑编译器确定针对网络设备的角色的示例过程的流程图。在一些示例中,图8中所示的过程可以表示“第0天”操作。控制器设备10可以接收网络设备列表(502)。例如,控制器设备10可以接收图1的元素14的列表。控制器设备10可以从网络设备集合收集连通性信息(504)。例如,控制器设备10可以从一个或多个元素14收集布线信息。
71.控制器设备10可以提供所推荐拓扑集(506)。例如,控制器设备10可以响应于确定连通性信息指示元素14布置在叶和脊网络拓扑中而推荐叶和脊网络拓扑。控制器设备10可以基于所推荐的拓扑结构来验证设备和连通性信息(508)。例如,控制器设备10可以验证布线是否提供了支持所推荐拓扑的链路。控制器设备10可以接收选择拓扑的用户输入(510)。例如,控制器设备10可以接收从多个所推荐的拓扑中选择拓扑的用户输入。在一些示例中,控制器设备10可以接收确认实现单个所推荐的拓扑的指令的用户输入。
72.控制器设备10可以基于所选择的拓扑来确定拓扑编译器(512)。例如,控制器设备10可以从各自与相应拓扑相关联的多个拓扑编译器中选择与所选择的拓扑相关联(例如,被分配给所选择的拓扑)的拓扑编译器。控制器设备10可以调用拓扑编译器来确定针对每个网络设备的角色(514)。例如,控制器设备10在执行拓扑编译器时,可以确定对元素14a的脊角色和对元素14b的叶角色。
73.图9是示出根据本公开的技术使用拓扑编译器用于生成抽象配置的示例过程的流程图。在一些示例中,图9中所示的过程可以表示“天数1+”操作。控制器设备10可以接收针对多个网络设备的意图(602)。例如,控制器设备10可以从管理员12接收意图。控制器设备10可以对该意图应用赛门铁克(symantec)检查(604)。控制器设备10可以基于意图来更新图数据库370,并且在监视305上发出改变事件的指示(606)。
74.资源控制器372a可以接收事件的指示(608),并且使用角色和设备资源作为输入来调用拓扑编译器以生成针对设备资源的抽象配置(610)。例如,资源控制器372a可以基于改变事件从拓扑编译器310确定拓扑编译器。例如,资源控制器372a可以基于由图数据库370存储的数据结构的部分来确定与改变事件相关联的拓扑编译器310a。在该示例中,资源控制器372a可以利用api 304,使用元素14a的角色和元素14a的指示作为输入来调用拓扑编译器310a,以生成抽象配置信息。在该示例中,拓扑编译器310在由处理电路(例如,控制器设备10的处理电路)执行时,可以将抽象配置信息输出到资源控制器372a。
75.资源控制器372a可以基于抽象配置来配置元素14a(612)。资源控制器372a可以基于抽象配置来配置元素14a。在一些示例中,资源控制器372a可以将抽象配置输出到设备管理器,并且可以接收设备等级配置。在一些示例中,资源控制器372a可以基于抽象配置来确定设备。
76.图10是示出根据本公开的技术使用拓扑编译器来配置设备资源的示例过程的流程图。控制器设备10可以接收意图的指示(702)。例如,控制器设备10可以从管理员12接收意图。该意图可以包括指示对数据结构的更新的数据,该数据结构包括表示多个网络设备
(例如,元素14)的多个节点和连接多个节点的多个边。在一些示例中,数据结构可以包括图模型。多个边可以定义多个节点之间的关系。
77.控制器设备10可以处理该意图以从多个拓扑编译器中选择拓扑编译器(704)。例如,控制器设备10可以基于意图和元素14的连通性信息来选择针对元素14的多个拓扑中的拓扑。在该示例中,控制器设备10可以选择与所选择的拓扑相关联(例如,被分配给所选择的拓扑)的拓扑编译器。在一些示例中,拓扑编译器310中的每个拓扑编译器与多个拓扑中的相应拓扑相关联。例如,拓扑编译器310a可以被分配给第一拓扑,拓扑编译器310b可以被分配给第二拓扑,以此类推。多个拓扑可以包括3级clos网络拓扑、5级clos网络拓扑或脊和叶拓扑中的一个或多个。在一些示例中,拓扑编译器中的每个拓扑编译器包括由控制器设备10可执行的二进制文件。
78.多个拓扑编译器中的每个拓扑编译器可以包括可插拔编译器,该可插拔编译器被配置为符合api框架可调用的标准。例如,拓扑编译器310中的每个拓扑编译器可以包括被配置为符合api 304可调用的标准的可插拔拓扑编译器。例如,api 304可以包括用于向拓扑编译器310提供意图信息的通信标准集,并且可以包括用于接收抽象配置的通信标准集。
79.控制器设备10可以经由api,使用网络设备的角色和网络设备的指示作为输入来调用所选择的拓扑编译器,以生成抽象配置信息(708)。例如,资源控制器372a可以利用api 304,使用网络设备14a的角色和网络设备14a的指示作为输入来调用拓扑编译器310a,并且拓扑编译器310a在由控制器设备10执行时,生成抽象配置信息。控制器设备10可以基于抽象配置信息来配置网络设备(710)。例如,资源控制器372a可以将抽象配置输出到设备管理器,并且可以接收设备等级配置。在该示例中,资源控制器372a可以利用从设备管理器接收的设备等级配置来配置元素14a。在一些示例中,资源控制器372a可以基于抽象配置来确定设备,并且利用由资源控制器372a确定的设备等级配置来配置元素14a。
80.在一些示例中,控制器设备10可以确定网络设备的角色。例如,控制器设备10可以接收多个网络设备(例如,元素14)的指示。在该示例中,控制器设备10可以确定针对多个设备的连通性信息(例如,布线信息)。控制器设备10可以基于连通性信息选择针对多个网络设备的拓扑。拓扑编译器(例如,拓扑编译器310a)可以与所选择的拓扑相关联。控制器设备10可以经由api框架(例如,api304),使用连通性信息作为输入来调用拓扑编译器,以确定网络设备的角色。在一些示例中,调用拓扑编译器以确定网络设备的角色响应于用户交互指示对所选择的拓扑的确认。
81.本公开所描述的技术可以至少部分地以硬件、软件、固件或其任意组合来实现。例如,所描述的技术的各个方面可以在一个或多个处理器内实现,包括一个或多个微处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fga)、或任何其他等效的集成或离散逻辑电路、以及这些组件的任何组合。术语“处理器”或“处理电路”一般可以指任何前述逻辑电路,单独地或与其他逻辑电路组合,或任何其他等效电路。包括硬件的控制单元也可以执行本公开的一种或多种技术。
82.这样的硬件、软件和固件可以在同一设备内或在分开的设备内实现,以支持本公开中描述的各种操作和功能。此外,任何所描述的单元、模块或组件可以一起或分开地实现为离散但可互操作的逻辑设备。将不同的特征描绘为模块或单元旨在突出显示不同的功能方面,并不一定意味着这样的模块或单元必须由分开的硬件或软件组件来实现。相反,与一
个或多个模块或单元相关联的功能可以由分开的硬件或软件组件执行,或者集成在公共或分开的硬件或软件组件内。
83.本公开所描述的技术还可以在包含指令的计算机可读介质(诸如计算机可读存储介质)中实施或编码。嵌入或编码在计算机可读介质中的指令可以使可编程处理器或其他处理器例如在指令被执行时执行该方法。计算机可读介质可以包括非瞬态计算机可读存储介质和瞬态通信介质。有形并且非瞬态的计算机可读存储介质可以包括随机存取存储器(ram)、只读存储器(rom)、可编程只读存储器(prom)、可擦除可编程只读存储器(eprom)、电可擦除可编程只读存储器(eeprom)、闪存、硬盘、cd-rom、软盘、盒式磁带、磁介质、光介质或其他计算机可读存储介质。术语“计算机可读存储介质”指的是物理存储介质,而不是信号、载波或其他瞬态介质。
84.已经描述了各种示例。这些和其他示例在所附权利要求的范围内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1