CN111355604B - 在软件定义网络上的用户定制和自动化操作的系统和方法 - Google Patents
在软件定义网络上的用户定制和自动化操作的系统和方法 Download PDFInfo
- Publication number
- CN111355604B CN111355604B CN201910566508.0A CN201910566508A CN111355604B CN 111355604 B CN111355604 B CN 111355604B CN 201910566508 A CN201910566508 A CN 201910566508A CN 111355604 B CN111355604 B CN 111355604B
- Authority
- CN
- China
- Prior art keywords
- network
- independent command
- commands
- independent
- command
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 193
- 238000013515 script Methods 0.000 claims description 43
- 230000004044 response Effects 0.000 claims description 7
- 238000013459 approach Methods 0.000 description 72
- 238000013499 data model Methods 0.000 description 48
- 239000003795 chemical substances by application Substances 0.000 description 31
- 239000004744 fabric Substances 0.000 description 31
- 238000003860 storage Methods 0.000 description 26
- 238000012545 processing Methods 0.000 description 23
- 238000007726 management method Methods 0.000 description 21
- 238000004458 analytical method Methods 0.000 description 19
- 238000010586 diagram Methods 0.000 description 18
- 238000004891 communication Methods 0.000 description 15
- 241000721662 Juniperus Species 0.000 description 12
- 230000006870 function Effects 0.000 description 11
- 238000005538 encapsulation Methods 0.000 description 9
- 230000008901 benefit Effects 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 8
- 230000007246 mechanism Effects 0.000 description 7
- 230000008569 process Effects 0.000 description 7
- 230000005641 tunneling Effects 0.000 description 7
- 238000013500 data storage Methods 0.000 description 6
- 238000012423 maintenance Methods 0.000 description 6
- 230000008859 change Effects 0.000 description 5
- 230000009466 transformation Effects 0.000 description 5
- ZOCUOMKMBMEYQV-GSLJADNHSA-N 9alpha-Fluoro-11beta,17alpha,21-trihydroxypregna-1,4-diene-3,20-dione 21-acetate Chemical compound C1CC2=CC(=O)C=C[C@]2(C)[C@]2(F)[C@@H]1[C@@H]1CC[C@@](C(=O)COC(=O)C)(O)[C@@]1(C)C[C@@H]2O ZOCUOMKMBMEYQV-GSLJADNHSA-N 0.000 description 4
- 229940048207 predef Drugs 0.000 description 4
- 230000002776 aggregation Effects 0.000 description 3
- 238000004220 aggregation Methods 0.000 description 3
- 230000000977 initiatory effect Effects 0.000 description 3
- 238000013024 troubleshooting Methods 0.000 description 3
- 235000008694 Humulus lupulus Nutrition 0.000 description 2
- 230000009471 action Effects 0.000 description 2
- 230000003044 adaptive effect Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 230000007613 environmental effect Effects 0.000 description 2
- 230000003203 everyday effect Effects 0.000 description 2
- 238000009434 installation Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000009877 rendering Methods 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000001131 transforming effect Effects 0.000 description 2
- SPBWHPXCWJLQRU-FITJORAGSA-N 4-amino-8-[(2r,3r,4s,5r)-3,4-dihydroxy-5-(hydroxymethyl)oxolan-2-yl]-5-oxopyrido[2,3-d]pyrimidine-6-carboxamide Chemical compound C12=NC=NC(N)=C2C(=O)C(C(=O)N)=CN1[C@@H]1O[C@H](CO)[C@@H](O)[C@H]1O SPBWHPXCWJLQRU-FITJORAGSA-N 0.000 description 1
- 101100513046 Neurospora crassa (strain ATCC 24698 / 74-OR23-1A / CBS 708.71 / DSM 1257 / FGSC 987) eth-1 gene Proteins 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000007418 data mining Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 239000005022 packaging material Substances 0.000 description 1
- 230000002265 prevention Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012731 temporal analysis Methods 0.000 description 1
- 238000000700 time series analysis Methods 0.000 description 1
- 238000012384 transportation and delivery Methods 0.000 description 1
- WFKWXMTUELFFGS-UHFFFAOYSA-N tungsten Chemical compound [W] WFKWXMTUELFFGS-UHFFFAOYSA-N 0.000 description 1
- 229910052721 tungsten Inorganic materials 0.000 description 1
- 239000010937 tungsten Substances 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/58—Association of routers
- H04L45/586—Association of routers of virtual routers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0895—Configuration of virtualised networks or elements, e.g. virtualised network function or OpenFlow elements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5072—Grid computing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/46—Interconnection of networks
- H04L12/4633—Interconnection of networks using encapsulation techniques, e.g. tunneling
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/46—Interconnection of networks
- H04L12/4641—Virtual LANs, VLANs, e.g. virtual private networks [VPN]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0803—Configuration setting
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/12—Discovery or management of network topologies
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/22—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks comprising specially adapted graphical user interfaces [GUI]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/50—Routing or path finding of packets in data switching networks using label swapping, e.g. multi-protocol label switch [MPLS]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/64—Routing or path finding of packets in data switching networks using an overlay routing layer
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/70—Admission control; Resource allocation
- H04L47/82—Miscellaneous aspects
- H04L47/825—Involving tunnels, e.g. MPLS
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45591—Monitoring or debugging support
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45595—Network integration; Enabling network access in virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5017—Task decomposition
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/34—Signalling channels for network management communication
- H04L41/342—Signalling channels for network management communication between virtual entities, e.g. orchestrators, SDN or NFV entities
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/40—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks using virtualisation of network functions or resources, e.g. SDN or NFV entities
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Mathematical Physics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本公开的实施例涉及在软件定义网络上的用户定制和自动化操作的系统和方法。一般而言,描述了用于在具有多个网络设备的网络上限定和执行设备无关命令的技术。在一些示例中,控制器包括图形用户界面。控制器经由图形用户界面显示网络设备,该网络设备支持选自一个或多个设备无关命令的设备无关命令,其中每个设备无关命令在支持的网络设备上执行一个或多个操作。控制器经由图形用户界面接收用户输入,该用户输入选择所显示的网络设备中的两个或更多个所显示的网络设备;以及在所选择的网络设备上执行所选择的设备无关命令的一个或多个操作。在一些示例中,执行包括:执行与每个网络设备相关联的任务,其中任务当被执行时在每个相应的网络设备上执行一个或多个操作。
Description
技术领域
本公开的技术一般涉及计算机网络,并且更具体地,涉及虚拟网络的配置。
背景技术
虚拟化网络正在成为现代信息技术(IT)基础设施的核心基础。比如,现代数据中心使用虚拟化环境,其中部署诸如虚拟机或容器之类的虚拟计算节点(也被称为虚拟执行元件),并且在网络的物理计算设备的底层计算平台上执行。
诸如云数据中心环境之类的大规模数据中心采用网络服务器的集合来向运行各种应用的订户提供计算和/或存储容量。例如,数据中心可以托管基础设施设备,诸如网络和存储系统、冗余电源以及环境控制。在典型的数据中心中,存储系统和应用服务器的集群经由高速交换机结构互连,该高速交换机结构由一层或多层物理网络交换机和路由器提供。更复杂的数据中心提供遍布全球的基础设施,其中订户支持设备位于各种物理托管设施中的设备。
虚拟化提供了几个优点。一个优点是虚拟化可以显著提高效率。随着每个物理CPU具有大量核的多核微处理器体系架构的出现,服务器变得越来越强大;可以在虚拟环境中轻松高效地跨过应用和订户分布功率。第二个优点是虚拟化提供了对计算基础设施的显著控制。随着物理计算资源成为可替换资源,诸如在基于云的计算环境中,计算基础设施的供应和管理变得更容易。因此,企业IT员工通常更喜欢在数据中心中使用虚拟化计算集群,因为除了计算效率之外,它们还简化管理和增加投资回报率(ROI)。
在虚拟化数据中心中越来越多地采用软件定义网络(SDN)部署工作负荷。这些方法通过抽取出底层基础设施的复杂性来简化虚拟和物理计算设备、虚拟和物理存储系统以及虚拟和物理网络的管理。软件定义数据中心(SDDC)是使用软件定义网络来虚拟化底层基础设施并且将虚拟化基础设施的各个方面作为服务递送的数据中心。
发明内容
一般而言,软件定义数据中心使用意图模型来自动化用于在数据中心(DC)结构上递送多租户服务的日常任务。然而,基于意图的自动化工具不会允许系统用户实现传统元件管理系统(EMS)中的特定操作。目前,用户和管理员可能需要在由SDN抽象(意图)提供的易控性与经由命令行接口(CLI)或传统EMS执行的低级操作提供的更佳控制之间进行折衷。
本公开描述了跨过不同类型的网络设备实现设备无关命令的技术,其为用户和管理员提供机构,以对网络中的异质设备组实现特定操作。在各种示例中,可以使用作业模板、任务集合以及输入、输出和input_ui模式来限定设备无关命令。支持每个设备无关命令的设备由在设备上执行设备无关命令所需的任务以及为设备限定的模板限定。结果是跨过来自多种产品供应商的网络设备执行设备无关命令的有利方式,同时实现类似结果。比如,设备系列上的操作可以分别使用Ansible脚本和Jinga2模板被表达为任务和模板。在一个示例方法中,虚拟网络控制器上的图形用户界面提供用于限定通用操作以及用于基于代表性任务和模板文件将设备无关命令应用于设备的机构。结果提供了跨过异质网络进行设备不可知测试的灵活性。
在一个示例中,一种方法包括:经由图形用户界面显示网络设备,该网络设备支持选自一个或多个设备无关命令的设备无关命令,其中每个设备无关命令在所支持的网络设备上执行一个或多个操作;经由图形用户界面接收用户输入,该用户输入选择所显示的网络设备中的两个或更多个网络设备,其中每个网络设备具有网络设备系列,其中两个或更多个选择的网络设备中的一个网络设备来自第一设备系列并且响应于与第一网络设备系列相关联的第一设备命令集合,并且其中两个或更多个选择的网络设备中的另一网络设备来自第二设备系列并且响应于与第二网络设备系列相关联的第二不同的设备命令集合;以及在所选择的网络设备上执行所选择的设备无关命令的一个或多个操作,其中执行一个或多个操作包括:基于来自与相应的所选择的网络设备的网络设备系列相关联的命令集合的命令来在每个所选择的网络设备上执行任务,其中该任务当被执行时在相应的所选择的网络设备上执行一个或多个操作。
在一个示例中,一种虚拟网络控制器包括存储器;图形用户界面;一个或多个处理器,其连接到存储器和图形用户界面,其中存储器包括指令,该指令当由一个或多个处理器执行时,使得处理器经由图形用户界面显示支持设备无关命令的网络设备,该设备无关命令选自一个或多个设备无关命令,其中每个设备无关命令在所支持的网络设备上执行一个或多个操作;经由图形用户界面接收用户输入,该用户输入选择所显示的网络设备中的两个或更多个网络设备,其中每个网络设备具有网络设备系列,其中两个或更多个所选择的网络设备中的一个网络设备来自第一设备系列并且响应于与第一网络设备系列相关联的第一设备命令集合,并且其中两个或更多个选择的网络设备中的另一网络设备来自第二设备系列并且响应于与第二网络设备系列相关联的第二不同的设备命令集合;在所选择的网络设备上执行所选择的设备无关命令的一个或多个操作,其中执行一个或多个操作包括:基于来自与相应的所选择的网络设备的网络设备系列相关联的命令集合的命令来在每个所选择的网络设备上执行任务,其中该任务当被执行时在相应的所选择的网络设备上执行一个或多个操作。
在另一示例中,一种方法包括:在网络控制器中限定设备无关命令,其中该设备无关命令当被执行时在所支持的网络设备上执行一个或多个操作;标识两个或更多网络设备系列;配置设备无关命令以在所标识的网络设备系列上执行,其中来自所标识的网络设备系列中的一个网络设备系列的网络设备与一个命令集合相关联并且响应于该命令集合,并且来自所标识的网络设备系列的另一网络设备系列的网络设备与不同的命令集合相关联并且响应于该命令集合,其中配置包括:为每个所标识的网络设备系列并且基于与每个所标识的网络设备系列相关联的命令集合选择一个或多个任务,该一个或多个任务当被执行时,在来自相应的所标识的网络设备系列的网络设备上执行设备无关命令的一个或多个操作;选择与所标识的网络设备系列中的一个网络设备系列相关联的网络设备;以及在所选择的网络设备上执行设备无关命令的操作,其中执行包括:执行为与所选择的网络设备相关联的网络设备系列选择的任务。
在附图和以下描述中阐述了本发明的一个或多个实施例的细节。根据说明书和附图以及权利要求,本发明的其他特征、目的和优点将会显而易见。
附图说明
图1是图示了具有其中可以实现本文中所描述的技术的示例的数据中心的示例网络的框图。
图2是更详细地图示了图1的数据中心的示例实现方式的框图。
图3A是图示了根据本文中所描述的技术的软件定义网络的框图。
图3B是图示了根据本公开的一种或多种技术的图3A的虚拟网络控制器的示例方法的框图。
图3C是图示了图3A的软件定义网络中的隧道通信的框图。
图4是图示了根据本文中所描述的技术的执行虚拟网络的示例虚拟路由器的计算设备的框图。
图5是图示了根据本文中所描述的技术的用于在图3A和图3B的软件定义网络的网络设备上执行设备无关命令的示例方法的流程图。
图6A至图6H图示了根据本文中所描述的技术的用于支持设备无关命令的代表性用户界面。
图7是图示了根据本文中所描述的技术的用于在图3A和图3B的软件定义网络的网络设备上创建新设备无关命令的示例方法的流程图。
图8是图示了根据本文中所描述的技术的与设备无关命令相关联的示例作业模板的框图。
图9图示了根据本文中所描述的技术的可以在其上执行设备无关命令的代表性网络设备。
图10图示了根据本文中所描述的技术的可以用于组织设备无关命令的示例目录结构。
图11图示了图9的路由器的示例Ansible脚本。
图12图示了根据本公开的一个方面的指定网络设备上的设备无关命令的示例模板。
图13图示了根据本公开的一个方面的由在所选择的网络设备上执行设备无关命令而得到的输出文件。
在整个附图和文本中,相同的附图标记表示相同的元件。
具体实施方式
如上文所指出的,软件定义数据中心(SDDC)是使用软件定义网络(SDN)来虚拟化底层基础设施并且将虚拟化基础设施的各方面作为服务递送的数据中心。软件定义数据中心通常使用意图模型来自动化日常任务,用于在数据中心(DC)结构上递送多租户服务。然而,基于意图的自动化工具不会允许系统用户实现传统元件管理系统(EMS)中的特定操作。目前,用户/管理员可能需要在由SDN抽象(意图)提供的易控性与通过经由命令行接口(CLI)或传统EMS执行的低级操作提供的更佳控制之间进行折衷。本公开描述了使得管理员能够指定和执行设备无关命令(也被描述为通用设备操作)以在网络中的设备上实现特定操作的技术。
图1是图示了具有其中可以实现本文中所描述的技术的示例的数据中心10的示例网络8的框图。一般而言,数据中心10通过服务提供商网络7为耦合到数据中心的客户11提供应用和服务的操作环境。数据中心10可以例如托管基础设施设备,诸如网络和存储系统、冗余电源、以及环境控制。服务提供商网络7可以被耦合到由其他提供商管理的一个或多个网络,并且因此可以形成大规模公共网络基础设施(例如,因特网)的一部分。在一些示例中,数据中心10可以跨过若干个地理分布位置分布。
如图1的示例中所图示的,数据中心10可以是为客户11提供网络服务的设施。客户11可以是集体实体,诸如企业和政府或个人。例如,网络数据中心可以为几个企业和最终用户托管Web服务。其他示例性服务可以包括数据存储、虚拟专用网络、业务工程、文件服务、数据挖掘、科学计算或超级计算等。在一些实施例中,数据中心10可以是单独的网络服务器、网络对等体等等。
在该示例中,数据中心10包括存储系统和应用服务器12A-12X(本文中,“服务器12”)的集合,它们经由高速交换机结构14互连,该高速交换机结构14由一层或多层物理网络交换机和路由器提供。在图1所示的示例中,交换机结构14包括互连的架顶式(TOR)交换机16A-16BN(统称为“TOR交换机16”)的集合,它们耦合到机箱交换机18A-18M(统称为“机箱交换机18”)的分布层。尽管未示出,但是数据中心10还可以包括例如一个或多个非边缘交换机、路由器、集线器、网关、诸如防火墙之类的安全设备、入侵检测和/或入侵防御设备、服务器、计算机终端、膝上型计算机、打印机、数据库、诸如蜂窝电话或个人数字助理之类的无线移动设备、无线接入点、网桥、电缆调制解调器、应用加速器、或其他网络设备。
在图1所示的示例中,TOR交换机16和机箱交换机18经由子网17.1-17.N(统称为“子网17”)向服务器12提供与IP结构20和服务提供商网络7的冗余(多宿主)连接。机箱交换机18聚合业务流并且在TOR交换机16之间提供高速连接。TOR交换机16可以包括提供层2(例如,MAC)和/或层3(例如,IP)路由和/或交换功能的网络设备。TOR交换机16和机箱交换机18各自可以包括一个或多个处理器和存储器,并且可以能够执行一个或多个软件过程。机箱交换机18被耦合到IP结构20,该IP结构20执行层3路由以通过服务提供商网络7在数据中心10和客户11之间路由网络业务。
根据本公开的一个或多个实施例,虚拟网络控制器22(“VN控制器22”)提供逻辑上并且在一些情况下物理上集中的控制器,其用于促进数据中心10内的一个或多个虚拟网络的操作。在一些示例中,虚拟网络控制器22可以响应于从网络管理员24接收的配置输入而操作。在于2013年6月5日提交的题为“PHYSICAL PATH DETERMINATION FOR VIRTUALNETWORK PACKET FLOWS”的国际申请号PCT/US2013/044378中可以找到关于与数据中心10的其他设备或与其他软件定义网络一起操作的虚拟网络控制器22的附加信息,其描述通过引用并入本文,如同在本文中充分阐述一样。
在一个示例方法中,虚拟网络控制器22是逻辑上集中但物理上分布的软件定义网络(SDN)控制器。物理上分布意味着虚拟网络控制器22可以包括多种类型的节点,每个节点可以具有用于高可用性(HA)和水平伸缩的多个实例。在一个这样的示例方法中,虚拟网络控制器22包括三种类型的节点:配置节点、控制节点和分析节点。这些节点实例可以在物理服务器12中或在虚拟机上实现。在一个这样的示例方法中,虚拟网络控制器22中的配置节点经由存储在诸如图2中所示的元数据接入点接口(IF-MAP)服务器26上的技术数据模型来配置控制节点。在一些示例方法中,虚拟网络控制器22使用可从Juniper Networks获得的Contrail控制器或使用可从Linux Foundation获得的开源网络虚拟化平台TungstenFabric来实现。
通常,例如,任何两个网络设备之间(诸如IP结构20(未示出)内的网络设备之间或服务器12与客户11之间或服务器12之间)的业务可以使用许多不同的路径遍历物理网络。例如,两个网络设备之间可能存在几个相同成本的不同路径。在一些情况下,属于从一个网络设备到另一个网络设备的网络业务的分组可以使用在每个网络交换节点处称为多路径路由的路由策略在各种可能的路径之间分布。例如,因特网工程任务组(IETF)RFC 2992,“Analysis of an Equal-Cost Multi-Path Algorithm”描述了一种用于沿着多个等成本路径路由分组的路由技术。RFC 2992的技术分析了一种特定多路径路由策略,其牵涉到通过散列分组报头字段将流指派给仓,该分组报头字段通过单个确定性路径发送来自特定网络流的所有分组。
例如,“流”可以由分组的报头中使用的五个值或“五元组(即,用于通过物理网络路由分组的协议、源IP地址、目的地IP地址、源端口和目的地端口)”来限定。例如,协议指定通信协议,诸如TCP或UDP,源端口和目的地端口是指连接的源端口和目的地端口。匹配特定流条目的一个或多个分组数据单元(PDU)的集合表示流。可以使用PDU的任何参数来对流进行宽泛地分类,诸如源和目的地数据链路(例如,MAC)和网络(例如,IP)地址、虚拟局域网(VLAN)标签、传输层信息、多协议标签交换(MPLS)或通用MPLS(GMPLS)标签、以及接收流的网络设备的入口端口。例如,流可以是在传输控制协议(TCP)连接中传输的所有PDU、由特定MAC地址或IP地址提供的所有PDU、具有相同VLAN标签的所有PDU、或在相同交换机端口处接收的所有PDU。
根据本公开中所描述的技术的各个方面,服务器12中的一个或多个服务器可以包括虚拟路由器,其执行用于数据中心10内的对应虚拟网络的多个路由实例。由服务器12A的虚拟路由器比如从底层物理网络结构接收的分组可以包括外部报头,以允许物理网络结构将载荷或“内部分组”隧道传送到执行虚拟路由器的服务器12A的网络接口的物理网络地址。外部报头不仅可以包括服务器的网络接口的物理网络地址,而且还可以包括虚拟网络标识符,诸如VxLAN标签或多协议标记交换(MPLS)标签,其标识虚拟网络中的一个虚拟网络以及由虚拟路由器执行的对应路由实例。内部分组包括内部报头,该内部报头具有符合由虚拟网络标识符标识的虚拟网络的虚拟网络寻址空间的目的地网络地址。在图1的示例方法中,服务器12A上的虚拟路由器(vRouter)30经由隧道15与服务器12X上的vRouter 30通信,如将在下文所更详细地讨论的。
在一些示例方法中,vRouters 30在递送到每个分组的适当路由实例之前聚合从底层物理网络结构接收的隧道传送的分组。在一些示例中,vRouter 30根据匹配准则聚合隧道传送的分组,该匹配准则包括外部报头的虚拟网络标识符以及内部报头的一个或多个字段。也就是说,在服务器12中的一个服务器上执行的vRouter 30可以从交换机16接收分组流的入站隧道分组,并且在将隧道分组路由到本地执行的虚拟机之前,处理隧道分组以构造单个聚合隧道分组用于转发到虚拟机。也就是说,vRouter 30可以缓冲多个入站隧道分组并且构造单个隧道分组,其中多个隧道分组的载荷被组合成单个载荷,并且隧道分组上的外部/覆盖报头被移除并且被替换为单个报头虚拟网络标识符。这样,聚合隧道分组可以由vRouter 30转发到虚拟机,如同从虚拟网络接收到单个入站隧道分组一样。而且,为了执行聚合操作,vRouter30可以利用基于内核的卸载引擎,其无缝且自动指示隧道分组的聚合。
在一些示例方法中,在服务器12上执行的vRouter 30可以操纵在多个处理器核之间接收的入站隧道分组,以便当处理分组以便路由到一个或多个虚拟机和/或物理机时促进核之间的分组处理负荷平衡。作为一个示例,服务器12A可以包括多个网络接口卡和多个处理器核,以执行虚拟路由器,并且可以在多个处理器核之间操纵所接收的分组,以促进核之间的分组处理负荷平衡。比如,服务器12A的特定网络接口卡可以与指定的处理器核相关联,网络接口卡向该指定的处理器核指示所有接收的分组。根据应用于内部分组报头和外部分组报头中的至少一个的散列函数,各种处理器核不是处理所接收的分组中的每个分组,而是可能将流卸载到一个或多个其他处理器核以供处理,以利用其他处理器核的可用工作循环。
在一些这样的示例方法中,在服务器12上执行的虚拟路由器30可以经由虚拟路由器30主动添加流表条目以标识由虚拟路由器30的路由实例处理的流的反向流。在示例实现方式中,服务器12A的虚拟路由器可以主动添加流表条目,以标识由虚拟路由器的路由实例处理的流的反向流。例如,在服务器12A上执行的虚拟机和由数据中心10实现的虚拟网络的成员可以接收由在服务器12X上执行的虚拟机以及虚拟网络的成员发起的分组流的初始入站隧道分组。在接收到初始入站隧道分组时,除了专门为入站分组流添加流表条目之外,服务器12A的虚拟路由器还可以主动添加专门用于反向分组流的流表条目(即,出站分组流),该反向分组流与所接收的入站分组流相对应。这样,服务器12A可以预测处理具有反向流准则的出站隧道分组的需要,并且因此更有效地查找并且使用反向分组流的流表条目来处理属于反向分组流的后续分组。于2017年2月14日授权的题为“TUNNELED PACKETAGGREGATION for VIRTUAL NETWORKS”的美国专利号9,571,394中也描述了上文在图1的上下文中描述的途径,其描述通过引用并入本文。
图2是更详细地图示了图1的数据中心10的示例实现方式的框图。在图2的示例中,数据中心10包括覆盖网络,其将交换机结构14从物理交换机16、18扩展到软件或“虚拟”交换机30A-30X(统称为“vRouter 30”)。VRouter 30动态地创建并且管理可用于应用实例之间的通信的一个或多个虚拟网络34。在一个示例中,vRouter 30将虚拟网络作为覆盖网络执行,该虚拟网络提供了将应用的虚拟地址与应用正在其上执行的服务器12的物理地址(例如,IP地址)解耦的能力。因此,每个虚拟网络可以使用其自身的寻址和安全方案,并且可以被视为与物理网络及其寻址方案正交。可以使用各种技术通过物理网络在虚拟网络34内和跨虚拟网络34传送分组。例如,虚拟网络34可以被配置为在虚拟网络内提供多播服务,而不需要底层物理网络中的多播支持。
每个vRouter 30可以在管理程序31、主机操作系统或服务器12中的每个服务器的其他组件内执行。服务器12中的每个服务器可以表示能够执行虚拟机36的x86或其他通用或专用服务器。在图2的示例中,vRouter 30A在管理程序31内执行,该管理程序31通常也称为虚拟机管理器(VMM),其提供允许多个操作系统在服务器12中的一个服务器上并发运行的虚拟化平台。在图2的示例中,vRouter30A管理虚拟网络34,每个虚拟网络34提供网络环境以供在由管理程序31提供的虚拟化平台之上执行的一个或多个虚拟机(VM)36使用。每个VM 36与虚拟网络VN0-VN2中的一个虚拟网络相关联,并且可以表示运行客户应用的租户VM,诸如Web服务器、数据库服务器、企业应用程序、或用于创建服务链的托管虚拟化服务。在一些情况下,服务器12中的任一个或多个服务器或另一计算设备可以直接托管客户应用,即,不作为虚拟机。本文中所引用的虚拟机(例如,VM 36、110)和服务器12或托管客户应用的另一单独的计算设备可以可替代地称为“主机”。
一般而言,每个VM 36可以是任何类型的软件应用,并且可以被指派虚拟地址以供在对应的虚拟网络34内使用,其中虚拟网络中的每个虚拟网络可以是由vRouter 30A提供的不同的虚拟子网。VM 36可以被指派其自己的虚拟层3(L3)IP地址,例如,用于发送和接收通信,但是可能不知道虚拟机正在其上执行的物理服务器12A的IP地址。这样,“虚拟地址”是应用的地址,其与底层物理计算机系统(例如,图2的示例中的服务器12A)的逻辑地址不同。
在一个实现方式中,每个服务器12包括虚拟网络(VN)代理35A-35X(统称为“VN代理35”)中的对应一个虚拟网络代理,其控制虚拟网络34的覆盖并且协调服务器12内的数据分组的路由。一般而言,每个VN代理35与虚拟网络控制器22通信,该虚拟网络控制器22生成命令以控制通过数据中心10的分组的路由。VN代理35可以作为代理器操作用于控制虚拟机36和虚拟网络控制器22之间的控制平面消息。例如,VM 36可以请求经由VN代理35A使用其虚拟地址发送消息,并且VN代理35A又可以发送该消息并且请求接收针对发起第一消息的VM 36的虚拟地址的消息的响应。在一些情况下,VM 36可以发起由VN代理35A的应用编程接口呈现的过程或函数调用,并且VN代理35A也可以处置消息的封装,其包括寻址。
在一个示例中,可以在由物理网络传送的另一分组(例如,另一IP或以太网分组)中封装由虚拟网络域内的虚拟机36执行的应用的实例生成或消费的网络分组(例如,层3(L3)IP分组或层2(L2)以太网分组)。在虚拟网络中传送的分组在本文中可以称为“内部分组”,而物理网络分组在本文中可以称为“外部分组”或“隧道分组”。可以在vRouter 30内(例如,在管理程序31内或在服务器12中的每个服务器上运行的主机操作系统上)执行物理网络分组内的虚拟网络分组的封装和/或解封装。作为另一示例,可以在第一跳TOR交换机16处的交换机结构14的边缘处执行封装和解封装功能,该第一跳TOR交换机16是从发起分组的应用实例中移除的一跳。如上文所指出的,该功能在本文中称为隧道传送,并且可以在数据中心10内用于创建一个或多个覆盖网络。除了IPinIP之外,还可以使用的其他示例隧道传送协议包括IP over GRE、VxLAN、MPLS over GRE、MPLS over UDP等。
如上文所指出的,虚拟网络控制器22提供逻辑集中控制器,用于促进数据中心10内的一个或多个虚拟网络的操作。虚拟网络控制器22可以例如维护路由信息库,例如,存储用于物理网络以及数据中心10的一个或多个覆盖网络的路由信息的一个或多个路由表。同样,交换机16、18和vRouter 30可以维护路由信息,诸如一个或多个路由和/或转发表。在一个示例实现方式中,管理程序31的vRouter30A实现用于每个虚拟网络34的网络转发表(NFT)32。一般而言,每个NFT 32存储用于对应虚拟网络34的转发信息并且标识数据分组要被转发的位置以及是否要将分组封装在隧道传送协议中,诸如使用隧道报头,该隧道报头可以包括用于虚拟网络协议栈的不同层的一个或多个报头。
在一个这样的示例方法中,虚拟机VM1通过内部链路向vRouter30A发送“内部分组”。VRouter 30A使用NFT1来查找内部分组的虚拟网络目的地网络地址。在一个这样的示例方法中,NFT1指定vRouter30A的出站接口和内部分组的封装。VRouter 30A应用封装以添加隧道报头以生成外部分组,并且在出站接口上输出外部分组,或者在这种情况下,朝向TOR交换机16A输出外部分组。
例如,路由信息可以将分组密钥信息(例如,目的地IP信息和来自分组报头的其他选择信息)映射到由vRouters 30和交换机结构14提供的网络内的一个或多个特定下一跳。在一些情况下,下一跳可以是链接的下一跳,其指定当转发分组时要对每个分组执行的操作集合,诸如可以用于泛洪下一跳和多播复制。在一些情况下,虚拟网络控制器22以具有表示网络内的目的地的叶节点的基数树的形式维护路由信息。美国专利7,184,437提供关于利用基数树进行路由解析的路由器的示例性实施例的细节,其描述通过引用整体并入本文。
如图2所示,每个虚拟网络34为通过交换机结构14建立的覆盖网络提供封装的分组通信框架37。这样,可以使用封装的分组通信框架37经由覆盖网络来传送与虚拟机36中的任一虚拟机相关联的网络分组。另外,在图2的示例中,每个虚拟路由器(vRouter)30包括默认网络转发表NFT0,并且提供默认路由,该默认路由允许将分组转发到虚拟子网VN0而不进行封装,即,按照数据中心10的物理网络的路由规则的非封装分组通信39。这样,子网VN0和虚拟默认网络转发表NFT0提供绕过覆盖网络并且经由非封装通信框架39向交换机结构14发送非封装分组通信的机构。
而且,虚拟网络控制器22和vRouter 30可以在覆盖网络的发现和初始化期间以及在故障链路已经暂时停止经由覆盖网络的通信的条件期间根据默认网络转发表NFT0 32使用虚拟网络VN0作为子网进行通信。一旦建立了与虚拟网络控制器22的连接,虚拟网络控制器22就可以更新其本地路由表以容纳关于任何故障链路的新信息,并且可以指示vRouter30更新其本地网络转发表32。例如,虚拟网络控制器22可以向虚拟网络代理35输出命令以更新一个或多个NFT 32以指示vRouter 30改变隧道传送封装,以便重新路由覆盖网络内的通信,以例如避免故障链路。
当检测到链路故障时,故障链路本地的虚拟网络代理35(例如,VN代理35A)可以立即改变网络分组的封装以重定向覆盖网络内的业务,并且可以通知虚拟网络控制器22路由改变。反过来,虚拟网络控制器22可以更新其路由信息,并且可以向其他虚拟网络代理35发出消息,以更新由网络转发表32内的虚拟网络代理存储的本地路由信息。
图3A是图示了根据本文中所描述的技术的网络8(图1至图2)的示例软件定义网络实现方式的框图。在一个示例方法中,每个vRouter 30经由服务器到服务器隧道集合将分组从一个虚拟机36转发到其他虚拟机。隧道形成位于物理网络顶部的覆盖网络(诸如例如,物理IP-over-Ethernet网络)。在图3A所示的示例中,一个vRouter 30上的虚拟机36经由MPLS over GRE、MPLS over UDP或VXLAN与其他vRouter 30上的虚拟机36通信。
在图3A的示例方法中,虚拟网络控制器22是软件定义网络(SDN)控制器。如上文在图1和图2的讨论中所指出的,在一些示例方法中,虚拟网络控制器22在逻辑上是集中式,但是可以在物理上跨过许多设备分布。在一个示例方法中,控制器22包括用户界面45和各种类型的节点,每个节点可以具有用于高可用性(HA)和水平伸缩的多个实例。在一个示例方法中,诸如图3A中所示,虚拟网络控制器22包括三种类型的节点:配置节点40、控制节点42和分析节点44。这些节点实例可以在物理服务器12中或在虚拟机36上实现。在一个这样的示例方法中,配置节点40在虚拟网络控制器22经由存储在图2的元数据接入点接口(IF-MAP)服务器26上的技术数据模型配置控制节点42。
在一个示例方法中,配置节点40提供用于配置控制节点42的管理层。在图3A所示的示例中,配置节点40提供北向具象状态传输(REST)应用编程接口(API)43,其可以由比如指挥程序46或自动化接口48使用以配置网络8或提取网络8的操作状态。在一个示例方法中,实例化服务由水平可伸缩数据库中的对象表示,该数据库由形式服务数据模型描述。配置节点40还包含变换引擎(有时被称为编译器),其将高级服务数据模型中的对象变换为技术数据模型中的对应较低级对象。在一些示例方法中,可以通过用户界面45访问变换引擎。于2016年6月30日提交题为“TRANSLATING HIGH-LEVEL CONFIGURATION INSTRUCTIONS TOLOW-LEVEL DEVICE CONFIGURATION”的美国专利申请号15/198,657中描述了示例变换引擎,其描述通过引用并入本文。
在一个示例方法中,控制节点42实现控制平面的逻辑集中部分。在一个示例方法中,并非所有控制平面功能都是逻辑集中的,一些控制平面功能仍然以分布式方式在网络8中的物理和虚拟路由器和交换机上实现。控制节点42可以使用IF-MAP协议来监测由配置节点40计算的低级技术数据模型的内容。低级数据模型描述网络的期望状态。控制节点42可以使用南向协议(诸如可扩展消息发送和存在性协议(XMPP))的组合来配置vRouter 30,并且使用边界网关协议(BGP)和网络配置(NETCONF)协议来控制物理路由器(诸如IP结构20的底层交换机50)。在一些这样的示例方法中,BGP和NETCONF协议也可以被用于控制网关52。在一个示例方法中,当存在控制节点42的多个实例时,控制节点42还使用BGP用于彼此之间的状态同步,诸如由于向外扩展(scale-out)和高可用性(HA)的原因。
在一个示例方法中,经由形式服务数据模型限定描述实例化服务的对象。在这样的一个示例方法中,形式服务数据模型是被用于描述需要实现的服务的高级服务数据模型;每个高级服务数据模型都有相关联的低级技术数据模型,其描述了需要如何实现这些服务。每个数据模型都由对象集合、它们的能力以及它们之间的关系组成。
在一个示例方法中,每个形式服务数据模型可以被转换为描述如何实现服务的低级技术数据模型。在一个这样的示例方法中,虚拟网络控制器22中的配置节点40将高级服务数据模型中的任何改变变换为对应的低级技术数据模型中的对应改变集合。然后,配置节点40可以使用IF-MAP协议将存储在元数据接入点接口(IF-MAP)服务器26上的低级技术数据模型的内容发布到控制节点42。
在一个示例方法中,VN控制器22的分析节点44被用于收集、整理和呈现分析信息以用于故障排除问题和用于确定网络使用。在一个这样的示例方法中,网络8的每个组件生成系统中重要事件的详细事件记录。这些事件记录可以被发送到分析节点44的多个实例(用于向外扩展)中的一个实例,这些分析节点使用针对时间序列分析和查询优化的格式来将信息整理并存储在水平可伸缩数据库中。分析节点44还可以包括机构,其当某些事件发生时自动触发更详细记录的收集,从而允许VN控制器22找到任何问题的根本原因,而不必重现它。在一个示例方法中,分析节点44还提供北向分析查询REST API,其可以由指挥程序(orchestrator)46或自动化接口48使用以检索分析。
在一个示例方法中,VN控制器22在物理上是分布式但在逻辑上是集中式。在一个这样的示例方法中,VN控制器22支持任何节点的多个冗余实例。冗余实例以主动-主动模式操作(与主动-备用模式相反)。通过在主动-主动模式下操作,当任何给定节点发生故障时,VN控制器22可以继续操作,而没有任何中断。更进一步地,当节点变得过载时,可以实例化该节点类型的附加实例,并且自动重新分配负荷。这防止任何单个节点成为瓶颈,并且允许系统管理支持数万台服务器的非常大型系统。逻辑集中意味着VN控制器22表现为单个逻辑单元,尽管它实现为多个节点的物理分布式集群。
在一个示例方法中,配置节点40提供客户端可以用于定位服务提供商(即,提供特定服务的其他节点)的发现服务。例如,当计算节点12中的vRouter代理35想要连接到控制节点42(或者,在一些情况下,连接到控制VM 42的主动-主动对)时,它使用服务发现来发现控制节点42的IP地址。在一些这样的示例方法中,客户端使用本地配置、DHCP或DNS来定位服务发现服务器。
在一个示例方法中,虚拟网络控制器22实现三个基本构建块:多租户、网关功能和服务链接。多租户(也被称为网络虚拟化或网络切片)是创建虚拟网络的能力,该虚拟网络为VM36的集合提供封闭式用户组。网关功能是指经由网关路由器(例如,因特网)将虚拟网络连接到物理网络的能力以及经由网关(诸如图3A的网关52)将非虚拟化服务器或网络服务附接到虚拟网络的能力。服务链接(也被称为NFV)是通过物理或虚拟网络服务(诸如防火墙、DPI或负荷平衡器)的序列操纵业务流的能力。
在一个示例方法中,底层网络的物理路由器和交换机不包含任何每个租户状态。也就是说,它们不包含虚拟机36的媒体访问控制(MAC)地址、IP地址或策略。底层物理路由器和交换机的转发表仅包含物理服务器12的IP前缀或MAC地址。然而,将虚拟网络连接到物理网络的网关路由器或交换机确实包含租户MAC或IP地址。
在一个这样的示例方法中,vRouter 30确实包含每个租户状态。它们包含每个虚拟网络的单独转发表(路由实例)。该转发表包含虚拟机36的IP前缀(在层3覆盖的情况下)或MAC地址(在层2覆盖的情况下)。单个vRouter 30无需包含整个数据中心10中的所有虚拟机36的所有IP前缀或所有MAC地址。给定vRouter 30可能仅需要包含本地存在于服务器12上的那些路由实例(即,其具有存在于服务器12上的至少一个虚拟机)。
在一些示例方法中,指挥程序46在软件定义网络中自动化服务的提供。在一些这样的示例方法中,指挥程序46可以比如从客户11接收用于添加和提供新虚拟服务器的请求,可以分析网络配置,然后可以经由VN控制器22实现配置改变。指挥程序46还可以更新计费系统,其记录为客户添加的服务。代表性指挥程序包括Openstack、Kubernetes、Openshift、以及vCenter。
在一些示例方法中,自动化接口48使用脚本代码和其他自动化工具来减少配置、故障排除和管理系统10的物理和虚拟设备的操作工作负荷。在一些这样的示例方法中,自动化采用Python或Perl脚本代码的形式,其被用于执行特定或小功能集合。在其他这样的示例方法中,可以使用诸如Ansible和Puppet之类的更复杂的自动化工具。Ansible是一种供应、配置和部署工具,其依赖于脚本来限定任务序列。Puppet是一种配置管理工具,其用于简化IT基础设施作为代码的定义以及系统配置的实施。在一个示例方法中,VN控制器22包括其自己的自动化接口(类似于比如自动化接口48),其可经由用户界面45访问。在一个这样的示例方法中,用户界面45是使用REST API43构建的图形用户界面(GUI),以与VN控制器22的自动化接口通信。
图3B是图示了根据本公开的一种或多种技术的图3A的虚拟网络控制器的示例方法的框图。在图3B所示的示例中,虚拟网络控制器22包括一个或多个配置节点40、一个或多个控制节点42、一个或多个分析节点44、以及连接到用户界面45的接口单元60。节点实例40、42、44可以在物理服务器12中或在虚拟机36上实现。在一个这样的示例方法中,配置节点40在虚拟网络控制器22中经由存储在图2中所示的元数据接入点接口(IF-MAP)服务器26上的技术数据模型来配置控制节点42。
在一些示例中,虚拟网络控制器22可以包括一个或多个控制器设备,该一个或多个控制器设备被包括在网络中,其中一个或多个控制器设备单独地和/或共同地包括至少一个处理器,该至少一个处理器包括处理电路(图3B中未示出)。在一些情况下,该处理电路可以执行软件指令,诸如用于限定一个或多个软件或计算机程序的软件指令,该软件指令存储到计算机可读存储介质(图3B中未示出),诸如非暂态计算机可读介质,该非暂态计算机可读介质包括存储设备或存储器,其存储使一个或多个处理器执行本文中所描述的技术的指令。可替代地或附加地,至少一个处理器可以包括用于执行本文中所描述的技术的专用硬件(例如,一个或多个集成电路、一个或多个专用集成电路(ASIC)、一个或多个专用特殊处理器(ASSP)、一个或多个现场可编程门阵列(FPGA)或前述专用硬件示例中的一个或多个的任何组合)。
如图3B所示,虚拟网络控制器22包括接口单元60、一个或多个分析节点44、一个或多个配置节点40、以及一个或多个控制节点42。一般而言,接口单元60、分析节点44、配置节点40和控制节点42中的每个可以被实现为软件、硬件、固件或其任何组合,并且可以跨过一个或多个硬件计算平台分布,该一个或多个硬件计算平台提供这些单元的实现的环境(例如,跨过网络中的一个或多个控制设备分布)。而且,接口单元60、分析节点44、配置节点40和控制节点42中的每个可以维护状态数据,其可以被存储在集中式或分布式数据库中。
例如,如图3B所示,虚拟网络控制器22包括各种数据存储器或数据库,如上文所指出的,它们可以被集中存储或以分布式方式跨过虚拟网络控制器22的节点存储。这些数据存储器包括数据模型80、拓扑信息82、设备状态信息84、配置信息86、以及路由信息88。分析节点44、配置节点40、接口单元60、以及控制节点40都通信地耦合到数据模型80、拓扑信息82、设备状态信息84、配置信息86、以及路由信息88。在一个示例方法中,数据存储器还包括作业模板90和用户定义命令/模式92。分析节点44、配置节点40、接口单元60、以及控制节点40都通信地耦合以包括作业模板90和用户定义命令/模式92。在一个示例方法中,每个用户定义设备无关命令包括以下各项中的一项或多项:输入模式、输出模式和input_ui模式,如下文所进一步限定的。
在一些示例方法中,接口单元60使用脚本代码和其他自动化工具来减少配置、故障排除和管理系统10的物理和虚拟设备的操作工作负荷。在一些这样的示例方法中,自动化采用Python或Perl脚本代码的形式,其用于执行特定或小功能集合。在其他这样的示例方法中,可以使用诸如Ansible和Puppet之类的更复杂的自动化工具。在一个示例方法中,VN控制器22包括命令处理单元62,其用于经由配置节点40或分析节点44编译和执行用户定义设备无关命令。在一些这样的示例方法中,命令呈现单元64结合命令处理单元62操作以向用户呈现用于限定和执行这种用户定义设备无关命令的框架。在一个这样的示例方法中,用户界面45是使用REST API 43构建的图形用户界面(GUI),以与VN控制器22的命令呈现单元64通信。
在一个示例方法中,命令呈现单元64呈现数据模型驱动框架,其通过UI 45再现(没有进行任何硬编码),以供用户在设备集合上发起通用(设备无关)操作。在一个这样的示例方法中,框架使用标准数据模型和开源工具,诸如Ansible和Jinja2(Jinja2是Python的模板语言),并且利用VN控制器22和UI 45的以下能力:经由命令呈现单元64来再现用户可以在所选择的网络设备上定制和执行的通用操作,经由命令呈现单元64接收结果,以及通过数据模型驱动方法在UI 45上再现结果。
在一个示例方法中,用户界面60经由用户界面45显示支持选自一个或多个设备无关命令的设备无关命令的网络设备,其中每个设备无关命令在支持的网络设备上执行一个或多个操作;经由用户界面45接收用户输入,该用户输入选择所显示的网络设备中的两个或更多个网络设备,其中每个网络设备具有网络设备系列,其中两个或更多个选择的网络设备中的一个网络设备来自第一设备系列并且响应于与第一网络设备系列相关联的第一设备命令集合,并且其中两个或更多个选择的网络设备中的另一网络设备来自第二设备系列并且响应于与第二网络设备系列相关联的第二不同的设备命令集合;以及在所选择的网络设备上执行所选择的设备无关命令的一个或多个操作,其中执行一个或多个操作包括:基于来自与相应的选择的网络设备的网络设备系列相关联的命令集合的命令来在每个所选择的网络设备上执行任务,其中该任务当被执行时,在相应的选择的网络设备上执行一个或多个操作。在一个示例方法中,命令集合是与设备系列和/或设备供应商相关联的命令行接口(CLI)命令的集合。
在一个示例方法中,命令处理单元62再现用户定义设备无关命令,并且将指令转发到配置节点40和分析节点44中的一个以供执行。在一个这样的示例方法中,结果被返回到命令处理单元64以呈现给用户。
该想法完全消除了对设备特定操作/命令及其相关联的用户界面依赖性的需要。通用操作依赖于经由命令处理单元62动态再现的输入和输出数据模型。而且,这种操作利用基于角色和基于简档的设备管理的概念来将配置和操作功能与硬编码软件解耦。因此,该框架可以被用于跨过多个设备供应商自动化单个操作,从而为用户提供结果的一致视图(不考虑每个供应商:设备模型所提供的供应商-特定输出/数据)。
在一些示例方法中,配置节点40包括一个或多个设备管理器70,其提供用于配置控制节点42的管理层。在一些示例方法中,实例化的服务由水平可伸缩数据库中的对象表示,该水平可伸缩数据库由存储在数据模型存储器80中的形式服务数据模型进行描述。在一些示例方法中,设备管理器70还包括上文在图3A的讨论中所描述的变换引擎。如上文所指出的,变换引擎可以被用于将高级服务数据模型中的对象变换为技术数据模型中的对应较低级对象。
在一个示例方法中,控制节点42实现控制平面的逻辑集中部分。在一个示例方法中,经由形式服务数据模型限定描述实例化服务的对象。在这样的一个示例方法中,形式服务数据模型是用于描述需要实现的服务的高级服务数据模型;每个高级服务数据模型都有相关联的低级技术数据模型,其描述了需要如何实现这些服务。每个数据模型都由对象集合、它们的能力以及它们之间的关系组成。数据模型被存储在数据模型存储器80中。
在一个示例方法中,每个形式服务数据模型可以被转换为低级技术数据模型,其描述如何要实现服务。在一个这样的示例方法中,配置节点40在虚拟网络控制器22中将高级服务数据模型中的任何改变变换为对应低级技术数据模型中的对应改变集合。然后,配置节点40可以使用IF-MAP协议将存储在元数据接入点接口(IF-MAP)服务器26上的低级技术数据模型的内容发布到控制节点42。
在一些示例方法中,配置节点40还包括意图和策略引擎(未示出),其被配置为确定网络状态,将当前网络状态与期望的网络状态进行比较,并且将配置改变驱动到网络设备12、16、18,以实现期望的网络状态。于2018年12月17日提交的题为“NETWORK DEVICECONFIGURATION USING A MESSAGE BUS”(“使用消息总线的网络设备配置”)的美国专利申请号16/221,698中描述了一个示例意图和策略引擎,其描述通过引用并入本文。
在一些示例方法中,配置节点40还包括维护模式控制器(未示出)。于2018年12月21日提交的题为“AUTOMATION OF MAINTENANCE MODE OPERATIONS FOR NETWORK DEVICES”(“网络设备的维护模式操作自动化”)的美国专利申请号16/230,156中描述了一个示例维护模式控制器,其描述通过引用并入本文。
一般而言,分析节点44的任务是收集、存储、关联和分析来自数据中心(例如,数据中心10)内的虚拟和物理网络元件和/或设备的信息。该信息可以包括用于管理数据中心的路由和网络配置的统计、日志、事件和/或错误。分析节点44可以将该信息存储在拓扑信息82、设备状态信息84、配置信息86和/或路由信息88中的一个或多个中。接口单元60可以被配置为向虚拟网络控制器22外部的一个或多个实体(诸如向管理员24(图1)、用户界面45(图3A)、自动化接口48(图3A)和/或指挥程序46(图3A))提供通信接口。在一些示例中,分析节点44可以向接口单元60提供收集的信息、和/或存储在拓扑信息82中的任何信息、设备状态信息84、配置信息86、或路由信息88,该接口单元60可以将这种信息输出到一个或多个外部实体,诸如管理员24或指挥程序46。
在一些示例中,接口单元60可以经由门户应用向管理员24提供这种信息的任一种,该门户应用可以被包括在接口单元60中或者被耦合到接口单元60。门户应用可以提供用户界面功能,用户可以通过用户界面功能向门户应用提供输入并且从门户应用接收输出。例如,接口单元60可以经由该门户应用向用户输出日志和/或状态信息,使得可以向用户通知这样的信息(例如,在执行特定操作之前、期间和/或之后)。
如图3B所示,分析节点44包括设备/角色发现单元74和拓扑发现单元76。拓扑发现单元76可以被配置为从网络和结构收集、存储、关联和分析拓扑信息,其可以被存储在拓扑信息82中。例如,参考图1的示例,拓扑发现单元76可以收集和确定与数据中心10中的网络8的交换机结构14相关联的拓扑信息,诸如机箱交换机18和TOR交换机16的特定拓扑,并且该信息可以被存储在拓扑信息82中。随着时间的推移,当网络设备12、16、18被添加到对应网络或从对应网络移除时,拓扑发现单元76操作以确定更新的拓扑信息和/或改变,其可以被存储在拓扑信息82中。
设备/角色发现单元74可以被配置为从在给定时间段在网络中的特定网络设备12、16、18收集或检索信息、以及这些设备的角色。如上文所指出的,随着时间的推移,各个网络设备可以被添加到网络或从网络(例如,图1的网络10)移除。设备/角色发现单元74被配置为标识设备是否已被添加或移除,以及标识与这些设备相关联的设备信息。设备/角色发现单元74可以将这样的信息存储在拓扑信息82和/或设备状态信息84中。设备/角色发现单元74还可以将设备角色信息(例如,设备是否是脊或叶设备,设备是机箱交换机还是TOR交换机还是路由器等)存储在拓扑信息82和/或设备状态信息84中。
虚拟网络控制器22的配置节点40可以被配置为配置网络内(例如,图1的网络100和/或图2的网络200中)的网络设备中的一个或多个网络设备。当配置节点40配置网络设备时,配置节点40可以访问数据模型80、拓扑信息82、设备状态信息84、配置信息86和/或路由信息334中的任一个。配置节点40还可以将包括配置信息在内的任何信息存储在这些数据存储器中的任意数据存储器中。在一些示例中,配置节点40呈现北向应用编程接口(API),其诸如经由接口单元60与指挥引擎213(图2)接口。
在某些示例中,配置节点40可以提前(诸如当结构内的网络设备(例如,图1的结构14的网络设备)最初置于网络控制器22的管理范围内时)选择性地配置结构(例如,基于网络拓扑和/或状态)。在该初步阶段,配置节点40可以将某些配置(例如,底层路由协议策略和覆盖路由协议策略的组合)注入到网络设备中。在一些情况下,对特定标准协议扩展(例如,在底层边界网关协议(BGP)的情况下为AS-PATH)进行配置,并且保持暂时不活动,例如,作为这些设备的底层配置的一部分。然后,启动在网络设备上执行维护模式操作之前,配置节点40可以激活先前注入在这些设备上的配置,从而允许业务从经历这种操作(例如,软件升级)的设备转移。在各种示例中,配置信息可以包括路由实例和/或转发策略信息。
如上文所讨论的,虚拟网络控制器22包括一个或多个控制节点42。控制节点42可以实现负责维护网络状态的逻辑集中控制平面。控制节点42与网络元件交互,诸如图1中所示的网络设备,以确保网络状态最终与指挥引擎(例如,指挥引擎213)所指定的期望状态一致。在一些示例中,控制节点42从设备配置单元338接收虚拟网络控制器22的配置状态信息。进一步地,控制节点42经由XMPP与VN代理(例如,服务器12上的VN代理35,如图2所示)交换路由。控制节点42还经由例如XMPP将配置状态信息(诸如路由实例和转发策略)传达到VN代理(例如,VN代理35),以便安装在相应的虚拟路由器30内。在一些示例中,控制节点42可以代表服务器(例如,图2中的服务器12)代理业务。可以通过XMPP接收这些代理器请求。在P.Saint-Andre,Extensible Messaging and Presence Protocol(XMPP):Core,IETF RFC6120,2011年3月中对XMPP进行进一步详细描述,其全部内容通过引用并入本文。
进一步地,控制节点42可以经由BGP与网关(例如,图3A的网关52)交换路由,并且经由NETCONF在结构(例如,图1和图2的交换机结构14)中与网络设备交换虚拟网络控制器22的配置状态。如上所述,由维护模式控制器315提供的功能可以是配置节点40、控制节点42或其组合的一部分,其可以访问配置信息86。
如图3B所示,控制节点72包括协议控制器72,其能够经由一个或多个通信协议(诸如例如,XMPP协议、NET CONF协议、BGP协议和/或IF-MAP协议,列出一些示例)控制虚拟网络控制器22与其他设备、代理、实体等之间的通信。
在一些示例中,控制节点42使用IF-MAP从维护模式控制器315接收配置状态。控制节点42可以包括一个或多个控制节点,其使用IBGP与其他控制节点交换路由以确保所有控制节点具有相同的网络状态。如上所述,控制节点42使用XMPP在计算节点(例如,服务器12)上与VN代理35交换路由。控制节点42还可以使用XMPP来发送配置状态,诸如路由实例和转发策略。
控制节点42还与BGP对等体交换BGP消息,该BGP对等体包括任何网络设备,其被配置为经由BGP通信,并且还包括任何网关节点(例如,图3A中所示的网关52)。协议控制器72可以将与网络中的任何设备相关联的路由信息存储在路由信息88中,该任何设备包括计算节点(例如,图2中所示的服务器210)。
图3C是图示了图3A和图3B的软件定义网络中的通信的框图。在一个示例方法中,虚拟网络控制器22将与如在图3B的上下文中描述的那样发起的设备无关命令相对应的设备命令分发到网络设备12、16和18。另外,在图3C的示例方法中,虚拟网络控制器22配置vRouter30.1和30.2,使得连接到vRouter 30.1的虚拟机36与连接到vRouter30.2的虚拟机36通信。在一些示例方法中,经由诸如MPLS over GRE、MPLS over UDP或VXLAN之类的隧道机构来提供端到端加密。如从图3C中可以看到的,在一个示例方法中,在跨过物理网络经由隧道58被作为封装的IP分组56传输之前,跨虚拟结构34传输的IP分组54使用MPLS overUDP协议来封装。
在一些这样的示例方法中,封装作为服务链上的服务或者通过专用加密设备或防火墙来执行。因此,分组可以在服务器12内的物理卡之间或跨过子网17未加密地移动,直到它们到达执行加密的节点为止。然而,有时需要向虚拟路由器端到端加密提供虚拟路由器,作为保护离开vRouter 30的多租户业务的手段。例如,租户可能需要运行应用,同时保持符合PCI DSS(支付卡行业数据安全标准)。因此,它们可能需要使用高度安全的加密算法来加密IP分组的报头和载荷。他们可能还需要具有锁定路由表的网络多租户,其中只有到由严格策略框架管控的到端点的特定路由。美国专利申请号16/146,713中描述了一种用于在分组在底层网络上被传输之前封装它们的方法,其描述通过引用并入本文。
图4是图示了根据本文中所描述的技术的执行用于虚拟网络的示例虚拟路由器的计算设备的框图。计算设备100可以表示图1至图1-2中的服务器12中的任意服务器或其他设备,诸如TOR交换机16中的任意TOR交换机。在图4的示例方法中,计算设备100包括系统总线104,其耦合计算设备100硬件环境的硬件组件。系统总线104连接存储器144、网络接口卡(NIC)106A-106B(统称为“NIC 106”)、存储装置107和具有多个处理核108A-108J(统称为“处理”核108)的多核计算环境102。网络接口卡106包括接口,其被配置为使用底层物理网络的链路交换分组。多核计算环境102可以包括任何数目的处理器和任何数目的硬件核,例如,从4到数千。处理核108中的每个处理核各自包括独立的执行单元,以执行符合核的指令集合体系架构的指令。处理核108可以各自被实现为单独的集成电路(IC),或者可以被组合在一个或多个多核处理器(或“多核”处理器)内,每个多核处理器使用单个IC(即,芯片多处理器)实现。
存储器107表示计算机可读存储介质,其包括易失性和/或非易失性、可移除和/或不可移除介质,该易失性和/或非易失性、可移除和/或不可移除介质以用于存储诸如处理器可读指令、数据结构、程序模块或其他数据之类的信息的任何方法或技术实现。计算机可读存储介质包括但不限于随机存取存储器(RAM)、只读存储器(ROM)、EEPROM、闪存、CD-ROM、数字通用光盘(DVD)或其他光学存储装置、磁带盒、磁带、磁盘存储装置或其他磁存储设备、或可以用于存储所需信息并且可以由核108访问的任何其他介质。
存储器144包括一个或多个计算机可读存储介质,其可以包括随机存取存储器(RAM),诸如各种形式的动态RAM(DRAM)(例如,DDR2/DDR3SDRAM)或静态RAM(SRAM)、闪存、或任何其他形式的固定或可移除存储介质,其可以用于携带或存储形式为指令或数据结构的所需的程序代码和程序数据并且可以由计算机访问。存储器144提供由可寻址存储器位置组成的物理地址空间。
在一些示例中,存储器144可以向多核计算环境102呈现非均匀存储器访问(NUMA)体系架构。也就是说,核108可能没有与构成存储器144的各种存储介质相等的存储器访问时间。在某些实例下,核108可以被配置为使用存储器144的部分,其向核提供最低的存储器等待时间以减少总体存储器等待时间。
在一些实例中,可以在一个或多个核108(即,共享存储器)之间共享用于计算机可读存储介质的物理地址空间。例如,核108A、108B可以经由存储器总线(未示出)被连接到一个或多个DRAM封装、模块和/或芯片(也未示出),其呈现可以由核108A、108B访问的物理地址空间。虽然该物理地址空间可以向存储器144的部分中的任一部分的核108A、108B提供最低的存储器访问时间,但是存储器144的剩余部分中的至少一些部分可以直接由核108A、108B访问。核108中的一个或多个核还可以包括L1/L2/L3高速缓存或其组合。核108的相应高速缓存向核108提供存储介质中的任何存储介质的最低等待时间存储器访问。
存储器144、网络接口卡(NIC)106A-106B(统称为“NIC 106”)、存储装置107和多核计算环境102为软件栈提供操作环境,该软件栈执行通过抽头接口146A-146K(统称为“抽头接口146”)连接到路由实例122A-122F(统称为“路由实例122”)的虚拟路由器120和一个或多个虚拟机110A-110K(统称为“虚拟机110”)。虚拟机110可以表示图2的虚拟机36中的任意虚拟机的示例实例。虚拟路由器120可以表示图1、图2、图3A和图3B的vRouter 30中的任意vRouter30的示例实例。计算设备100将由主存储器144并且在虚拟存储器的情况下由存储器144和存储器107的组合提供的虚拟和/或物理地址空间划分为分配用于运行用户进程的用户空间111以及受保护且通常用户进程无法访问的内核空间112。
存储器144、网络接口卡(NIC)106A-106B(统称为“NIC 106”)、存储装置107和多核计算环境102还可以为在内核空间112中执行的操作系统内核提供操作环境。操作系统内核可以包括例如Linux、Berkeley Software Distribution(BSD)、另一Unix变体内核、或可从Microsoft Corp.获得的Windows服务器操作系统内核。操作系统内核实现如图4所示的内核空间112中的操作系统网络栈123。
如下文所进一步解释的,在一些示例实现方式中,内核空间112可以被配置有多个网络栈,其当在底层物理网络之上实现虚拟网络时可能是有益的。例如,如进一步描述的,操作系统网络栈123可以表示在内核空间112中执行的第一软件网络栈,而虚拟路由器120可以实现其自己的对应软件网络栈,其中每个网络栈实现网络层的对应功能(例如,OSI模型的层1至3)。在一些示例中,计算设备100可以被配置为使用IPVLAN驱动器在不同网络栈之间传送分组,这些不同网络栈在计算设备100的相同内核模块(例如,内核空间112)内操作。也就是说,IPVLAN驱动器可以被安装并且被配置为作为分组传输进行操作,该分组传输具有配置在计算设备100的相同内核空间内的不同网络栈上的端点。
在一些实例中,计算设备100可以执行管理程序以管理虚拟机110(图4中未示出)。图2中图示了示例管理程序31。示例管理程序包括用于Linux内核的基于内核的虚拟机(KVM)、Xen、可从VMware获得的ESXi、可从Microsoft获得的Windows Hyper-V、以及其他开源和专有管理程序。在一些示例中,利用诸如转发信息库(FIB)124之类的路由信息编程的专用硬件可以执行虚拟路由器120的各方面。
Eth0 114A和Eth1 114B表示根据软件设备模型的设备,并且提供用于处置由对应NIC 106接收/传输的分组的设备驱动器软件例程。NIC 106从用于虚拟网络的底层物理网络结构接收的分组可以包括外部报头,以允许物理网络结构将载荷或“内部分组”隧道传送到NIC106中的一个NIC 106的物理网络地址。外部报头不仅可以包括物理网络地址,还可以包括虚拟网络标识符,诸如VxLAN标签或多协议标签交换(MPLS)标签,其标识虚拟网络中的一个虚拟网络以及对应的路由实例122。内部分组包括内部报头,其具有符合由虚拟网络标识符标识的虚拟网络的虚拟网络寻址空间的目的地网络地址。例如,虚拟路由器转发平面128可以通过Eth1从NIC 106接收具有外部报头的分组,该外部报头包括虚拟路由器转发平面128中的与路由实例122A相关联的VxLAN。该分组可以具有内部报头,该内部报头具有目的地网络地址,该目的地网络地址是VM 110A的目的地地址,其经由抽头接口146A接入路由实例122A中。
该示例中的虚拟路由器120包括内核空间112模块:虚拟路由器转发平面128;以及用户空间111模块:虚拟路由器代理142。虚拟路由器转发平面128执行虚拟路由器120的“转发平面”或分组转发功能,并且虚拟路由器代理142执行虚拟路由器120的“控制平面”功能。虚拟路由器代理142可以表示图2的VN代理35中的任意VN代理35的示例实例。
虚拟路由器转发平面128包括用于对应虚拟网络的多个路由实例122A-122F(统称为“路由实例122”)。在图4所示的示例中,每个路由实例122包括转发信息库(FIB)124和流表126。尽管在每个路由实例122内被示为单独的数据结构,但是流表126在一些实例中可以是逻辑表,其被实现为单个表或其他关联数据结构,其中相应流表126的条目可由虚拟网络标识符(例如,诸如VxLAN标签或MPLS标记之类的VRF标识符)标识。FIB 124可以包括将目的地地址映射到目的地下一跳的查找表。目的地地址可以包括层3网络前缀或层2MAC地址。流表126还可以使得能够将转发策略应用于流。在一个示例方法中,流表126中的每个流表包括流表条目,其与可以遍历虚拟路由器转发平面128的一个或多个流匹配,并且包括用于应用于匹配流的转发策略。在一个示例方法中,比如,虚拟路由器转发平面128尝试将由路由实例122A处理的分组与流表126A的流表条目中的一个流表条目进行匹配。在该示例中,如果对于流表126A中的给定分组存在匹配的流表条目,则虚拟路由器转发平面128将策略中指定的流动作应用于分组。这可以被称为“快速路径”分组处理。如果流表126A中的分组不存在匹配的流表条目,则该分组可以表示新分组流的初始分组;在这种情况下,虚拟路由器转发平面128可以请求虚拟路由器代理142经由链路140在流表126A中为新分组流安装流表条目。这可以被称为用于分组流的初始分组的“慢速路径”分组处理。
在一个示例方法中,虚拟路由器代理142是由计算设备100执行的用户空间111过程。虚拟路由器代理142包括配置数据134、虚拟路由和转发实例配置136(“VRF 136”)和策略表138(“策略138”)。在一个示例方法中,虚拟路由器代理142与一个或多个VN控制器22交换控制信息。控制信息可以包括虚拟网络路由和低级配置状态(诸如路由实例和转发策略),用于到配置数据134、VRF 136和策略138的安装。虚拟路由器代理142还可以报告分析状态,将转发状态安装到虚拟路由器转发平面128的FIB 124,以及发现VM 110及其属性。如上文所指出的,虚拟路由器代理142可以进一步对遍历虚拟路由器转发平面128的每个新流的第一(初始)分组应用慢速路径分组处理,并且可以将对应流条目安装到新流的流表126,用于由虚拟路由器转发平面128对流的后续分组进行快速路径处理的新流。
在一个示例方法中,如上文所指出的,虚拟路由器120是加载在内核112中的内核模块,而主机操作系统在启动时加载用于变换IPSec模块125的分组的IP框架。在一个这样的示例方法中,IPSec模块125实现具有IKEv2的IPSec、IKEv2的认证管理、AES-GCM 256加密、以及AES-NI。在一种基于Linus的方法中,操作系统在启动时加载XFRM(用于变换分组的Linux IP框架)。在一个示例方法中,IPSec跨过将虚拟路由器120彼此连接的网络8以全网状隧道模式配置。
在一个示例方法中,将传输(TX)路径上的覆盖IP分组从虚拟路由器120发送到IPSec模块125以进行加密。然后,具有ESP(封装安全载荷)的IP分组被返回到虚拟路由器120以供虚拟路由器转发。
在一个示例方法中,虚拟路由器120使用源和目的地的适当L2和L3报头为租户应用创建IP/MPLS或VXLAN分组,并且经由IPSec接口127将分组写入IPSec模块125。在IPSec模块125中执行的IPSec内核基于将作为启用连接的IPSec模块的一部分提供的状态和策略来捕获分组。基于与分组中IP地址匹配的策略,XFRM使用ESP(封装安全载荷)变换和加密整个IP分组,从而确保租户业务的身份验证、完整性和机密性。一旦IPSec内核加密了分组,IPSec模块125就将具有IPSec封装安全载荷(ESP)的分组传送到虚拟路由器120。虚拟路由器120接收封装的分组并且将该分组传输到物理网络。
在接收端处,加密分组到达目的地虚拟路由器120。在一个示例方法中,虚拟路由器120的接收(RX)侧上的ESP分组被发送到OS网络栈123,其中配置有IPSec的Linux内核解密该分组,并且将所得MPLS/VxLAN分组写入虚拟路由器120。在一个示例方法中,虚拟路由器120被配置为仅查找MPLS、VXLAN和GRE报头。所有其他分组(包括ESP分组)经由IPSec内核接口127被传送到IPSec模块125。在一个示例方法中,IPSec模块125从接口读取分组,解密所加密的分组,并且将所解密的IP分组传送到虚拟路由器120。在一个示例方法中,IPSec内核接口127包括在OS网络栈和虚拟路由器栈120上检测的解密接口,使得解密的分组(实质上是IP/MPLS或VXLAN分组)由虚拟路由器120读取并且基于标记查找来发送到适当的租户应用接口。如上文所指出的,分组处理发生在IPSec模块125的内核和虚拟路由器120中。
在一个示例方法中,虚拟网络控制器122包括用于在每个虚拟路由器120或每个虚拟路由器实例122的基础上启用加密的应用接口(API)。例如,来自遍历虚拟路由器实例122的租户工作负荷的所有分组可以被配置为启用加密以便加密分组。在一个这样的示例方法中,虚拟网络控制器122提供图形用户界面(GUI),其允许管理员在虚拟路由器实例的基础上启用或禁用用于安全转发租户工作负荷的加密。
图5是图示了根据本文中所描述的技术的用于在图3A和图3B的软件定义网络的网络设备上执行设备无关命令的示例方法的流程图。在一个示例方法中,VN控制器22实现用于发起网络设备集合上的通用操作的数据模型驱动框架。用户或网络管理员可以使用这些操作以设备不可知的方式在数据中心10中的设备上限定和执行操作。在一个示例方法中,框架通过用户界面(UI)45再现,而无需对用户或网络管理员的部分进行硬编码,并且不需要用户或网络管理员使用CLI命令。在一些这样的示例方法中,框架在数据模型驱动方法中采用标准数据模型、可扩展UI和自动化工具(诸如Ansible),该数据模型驱动方法利用VN控制器22的能力在选择的网络设备集合上执行通用操作,以及在用户界面45上显示操作的结果。例如,该方法可以用于使销售工程能够从数据中心设备上的用户界面(UI)45自动运行所选择的命令,诸如获得命令。还可以基于本文中所描述的技术来实现其他更复杂的命令。在一些示例方法中,基于针对每个命令限定的job_template_type(即,device_operation)来限定设备无关命令。
这些技术消除了对特定设备操作/命令的需要,并且基于特定设备来移除用户界面依赖性。相反,通用操作依赖于输入和输出数据模型,这些模型可以动态再现。另外,在一些示例方法中,VN控制器22使用基于角色和基于简档的设备管理来将每个网络设备中的配置/操作功能与特定通用操作解耦。通过利用基于角色和基于简档的设备管理的概念,该框架可以被用于跨过多个设备供应商自动化单个操作,从而为用户提供结果的一致视图,不管特定供应商:设备型号所提供的供应商-特定输出/数据。
在图5的示例方法中,UI 45在与一个或多个网络设备12、16、18相关联的图形用户界面指示内显示(200)。用户经由标记选择一个或多个网络设备12、16、18中的一个或多个网络设备(202),然后选择一个或多个设备无关命令以在所选择的网络设备上执行(204)。然后,VN控制器22在所选择的网络设备上执行所选择的设备无关命令(206)。
在一个示例方法中,图形用户界面包括通用设备操作图标(例如,按钮),其当被激活时,开始在来自网络8的一个或多个网络设备上执行设备无关命令。在一个这样的示例方法中,UI 45显示列出通用设备操作图标的屏幕和被配置用于通用设备操作的网络设备列表。在一些这样的示例方法中,用户或管理员选择网络设备列表上的一个或多个网络设备,并且通过点击通用设备操作图标在选择的设备上启动通用设备操作。在一个示例方法中,跨过选择的设备中的每个设备执行单个通用设备操作命令被视为单个作业执行,即使这些设备是不同系列或不同的供应商。
图6A至图6C图示了根据本文中所描述的技术的用于支持设备无关命令的代表性用户界面。在图6A至图6C的示例方法中,每个设备无关命令是通用设备操作。比如,图6A中的UI 45显示通用设备操作按钮300和网络设备12、16、18的列表302。在图6A的示例方法中,通用设备操作按钮300的致动执行设备无关命令。在图6A的示例方法中。列表302中的网络设备可以通过点击标识每个网络设备的标记左侧的框304来选择。在一些示例方法中,与设备标记一起列出与网络设备相关联的其他属性(诸如IP地址或供应商名称)。在一些示例方法中,点击按钮300导致显示图6B中所示的屏幕。
在图6B所图示的示例方法中,UI 45显示可用通用设备操作308的列表306和与所选择的设备无关命令的启动相关联的图标310(例如,按钮)。在一个示例方法中,存在若干个设备无关命令,每个命令可以作为单独的作业执行来运行。在一个这样的示例方法中,经由UI 45中的下拉菜单显示可用的设备无关命令。也就是说,列表306被显示作为下拉菜单并且可以被用于选择可用设备无关命令中的一个或多个可用设备无关命令。
在一些示例方法中,用户从列表306中选择设备无关命令308(在本文中被列为通用设备操作)中的一个设备无关命令,并且通过比如点击图标310来启动操作的执行。在一些示例方法中,点击图标310导致显示图6D所示的屏幕。
在一些示例方法中,当用户从列表306中选择设备无关命令308中的一个设备无关命令时,所选择的命令被突出显示,如图6C的“显示配置接口”命令所示,并且图6A中选择的设备的列表311出现在可用的通用设备操作308的列表306的右侧的窗口中。然后,用户可以通过比如点击图标310来启动操作的执行,点击图标310又可以导致显示如图6D所示的屏幕。
在图6D中图示的示例方法中,UI 45显示与图6B中选择的设备无关命令相关联的一个或多个输入参数312、314。在一个示例方法中,所再现的参数取决于来自与所选择的设备无关命令相关联的模式文件的input_schema。在图6D所示的示例中,输入参数312是与接口过滤器相关联的参数,而输入参数314是与接口类型相关联的参数。在一些这样的示例方法中,UI 45还在单独的窗口中显示图6A中选择的设备的列表311。在一些示例方法中,用户在参数名称:参数属性对中的单个参数字段(未示出)中录入任何所需参数。
图6E图示了示例方法,其中输入参数314是用于在接口类型之间进行选择的下拉菜单,并且其中选择位于图6D中的参数312下的“添加”允许用户添加适合于设备无关命令的过滤器。在一个示例方法中,如图6E所示,选择“添加”打开用于接收过滤器表达的窗口318和用于选择过滤器类型的下拉菜单320。用户通过点击执行图标316开始使用其相关联的输入参数执行所选择的设备无关命令。
在一个示例方法中,每个设备无关命令作业在后台异步执行,并且为每个设备返回prouter_uve对象。在一些示例方法中,当完成设备无关命令作业时,在UI 45中显示结果页面,其示出了用于所选择的每个网络设备的命令输出。如果在选择的网络设备中的任一网络设备上运行设备无关命令时存在错误,则会经由作业日志摘要消息记录该错误。在一些这样的示例方法中,每个选择的网络设备的prouter_uve对象携带每个设备的操作结果,并且在UI 45内的结果页面中显示。
图6F至图6H图示了图6C中选择的命令的代表性结果页面。在一个示例方法中,结果页面322包括列出图6A中选择以运行“Show Configured Interfaces”命令的设备的列表311的窗口。在一个示例方法中,结果页面322被布置为一系列选项卡式窗口:“结果”窗口324、“结果-JSON”窗口326、“作业状态”窗口328、以及“作业状态-JSON”窗口330。从图6F中可以看出,在一个示例方法中,选项卡式“结果”窗口324显示针对选自列表311的设备334接收的结果332。在一个示例方法中,选择的设备334上的命令的结果在图6F的“结果”窗口324中显示,所显示的参数以及显示的顺序和格式由设备无关命令的输出模式限定。
图6G图示了用于显示针对选自列表311的设备334接收的结果332的一个示例方法。在一个示例方法中,在图6G的“结果-JSON”窗口326中显示选择的设备334上的命令的结果,该命令的结果是嵌套JSON文件。在一些这样的示例方法中,所显示的参数以及显示的顺序和格式由设备无关命令的输出模式限定。
图6H图示了用于列出在选自图6A中所示的列表302的设备304上执行用户定义设备无关命令的作业状态336的一个示例方法。在一个示例方法中,在图6H的“作业状态”窗口328中显示在选择的设备334上执行的命令的作业状态。理想地,对于所选择的任何特定设备,在“作业状态”窗口328中显示的信息是一致的,反映了在每个设备上命令的成功执行。在一个示例方法中,作业日志跟踪整个作业的进度(跨过所有选择的设备),并且在“作业状态”窗口328上显示选自图6A中的列表302的所有选择的设备的作业日志。在一个这样的示例方法中,窗口328还显示最终摘要消息。
未示出“作业状态-JSON”窗口330。在一些示例方法中,“作业状态-JSON”窗口330显示呈现图6H中所示信息的JSON文件。
在一些示例方法中,可以针对设备无关命令选择的当前设备数目被约束为每个作业执行的最大设备数目(例如,20)。比如,当轮询所选择的设备以进行输出的时间使得应用以笨拙的方式大于最大设备数目时,这种方法可能是必要的。在一个示例方法中,UI 45轮询当前作业的所有prouter_uve,并且跨过设备的表示显示每个设备的输出。如果某些设备执行失败,则job_log也会携带错误消息。在一些示例方法中,没有显示故障设备的输出。
在一个示例方法中,VN控制器22提供用户和管理员可以通过其添加新设备无关命令的机构,诸如例如,图3B的命令呈现单元64。在一个这样的示例方法中,用户创建新设备无关命令类型,限定新命令类型的输入和输出模式,响应于新设备无关命令类型而标识设备,并且限定在操作期间要采取的动作。图7是图示了根据本文中所描述的技术的用于在图3A和图3B的软件定义网络的网络设备上创建新设备无关命令的示例方法的流程图。在图7的示例方法中,用户创建用于新设备无关命令的作业模板对象类型(350)。在一个这样的示例方法中,用户创建用于每个新设备无关命令的新job_template,将job_template_name设置为命令名称。在一个示例方法中,每个新作业模板被存储在图3B所示的作业模板数据存储器90中。
在一个示例方法中,Ansible被用于限定新设备无关命令。如上文所指出的,Ansible是一种供应、配置和部署工具,其依赖脚本来限定任务序列。Ansible使用脚本经由名为YAML的人性化数据序列化语言将自动化作业描述为任务。YAML是常用于配置文件的标准化语言。然而,它可以被用于存储数据的任何应用。YAML对于人类来说非常容易理解、读取和写入,并且可以有利地在诸如Ansible之类的应用中被用于描述和记载脚本。
在一个示例方法中,VN控制器22限定由每个设备无关命令job_template引用的公共Ansible脚本(例如,“/fabric_ansible_playbooks/operational_command.yml”)。在一些基于Ansible的示例方法中,用户将job_template对象类型添加到predef_payloadsjson文件(例如,fabric_ansible_playbooks/conf/predef_payloads.json),将job_template_type设置为device_operation,因此将新模板标记为设备无关命令模板。在一些示例方法中,改变predef_payloads.json可能需要重新启动与设备无关命令相关联的docker容器(例如,config_api_1_xxxx docker)。JavaScript Object Notation(JSON)文件是以JavaScript Object Notation表示的文件,该JavaScript Object Notation是一种用于交换数据的开放标准文件格式。
图8是图示了根据本文中所描述的技术的与设备无关命令相关联的示例作业模板的框图。如上文所指出的,在一些示例方法中,每个新设备无关命令需要新job_template。在图8所示的示例中,新设备无关命令标题为“show_config_interfaces”,并且新job_template在名称400处被给予标题“show_config_interfaces_template”。在图8所示的示例中,job_template_type 402被设置为device_operation,其将该job_template_type指定为设备无关命令模板。并且,如上文所指出的,所有设备无关命令job_templates引用在该示例中在指针404处找到的公共Ansible脚本,如下:
/opt/contrail/fabric_ansible_playbooks/operational_command.yml
返回图7,在图7的示例方法中,用户限定新设备无关命令的输入和输出模式(352),比如,如图8所示。在一些示例方法中,限定了可以被用于捕获与新设备无关命令相关联的输入参数的表单。在一个这样的示例方法中,表单基于为设备无关命令限定的输入模式(例如,input或input_ui),并且被限定在文件夹路径:
opt/contrail/fabric_ansible_playbooks/schema/<command_name>_schema.json
其中command_name是job_template_name减去“_template”。比如,对于名称为“show_config_interfaces_template”的job_template,输入模式可以被限定在路径:
opt/contrail/fabric_ansible_playbooks/schema/
show_config_interfaces_schema.json
UI输入模式还可以被用于限定细节,诸如使用的占位符或命令的输入参数的排序。可以将模式与用户定义设备无关命令一起存储在数据存储器92中。
如上文所指出的,在一个示例方法中,“执行”使后端中的执行作业API开始。在一个这样的示例方法中,作业在后台运行,如果需要,则在UI 45上的作业日志中显示更新。当作业完成时,UI 45再现页面,该页面示出了在命令执行成功的所有设备上运行命令的输出结果。
返回到图7,用户标识支持新设备无关命令(354)的设备12、16、18,为新设备无关命令指派“角色”(356),以及将任务添加到限定在设备无关命令期间执行的任务的设备无关命令脚本中(358)。
如上文所指出的,如上所述的VN控制器22使用基于角色和基于简档的设备管理来将每个网络设备12、16、18中的配置/操作功能与特定通用操作解耦。每个设备无关命令都具有“角色”(通常由其名称限定),并且操作在由其简档限定(在一些实例中,由其设备模型限定)的目标设备的简档上执行。通过利用基于角色和基于简档的设备管理的概念,该框架可以被用于跨过多个设备供应商使单个操作自动化,为用户提供结果的一致视图,而不管由特定供应商:设备模型提供的供应商-特定输出/数据。
下文对限定新通用设备命令的示例方法进行限定。在一个示例方法中,所描述的所有改变都在config_api docker内部进行。一些改变可能需要重新启动docker。该示例说明了添加上文在图8中引用的新通用设备命令“show_config_interfaces”的步骤。在以下示例中,结构中至少一个设备是Juniper SRX设备,命令名称为“show_config_interfaces”,与要被测试的设备相关联的供应商为“Juniper”,并且设备系列为“junos-es”。
如上文在图7和图8的讨论中所指出的,第一步是创建作业模板对象类型。在一个示例方法中,用户创建类型为“device_operation”的名为<command_name>模板的作业模板。在该示例中,作业模板被命名为“show_config_interfaces_template”,类型为“device_operation”。在一个示例方法中,新job_template对象类型被添加到predef_payloads.json中的job_template对象类型列表中。在一个示例方法中,将job_template_type标记为“device_operation”确保在UI 45中列出新命令。Playbook_uri 406(图8中所示)可以被用于添加任何新命令的文件路径。然而,在一些示例方法中,对于任何命令操作仅存在一个公共入口点。在一些示例方法中,show_config_interfaces_template的剩余字段被填充,如图8所示。
接下来,对输入和输出模式进行讨论。在图8中所示的一个示例方法中,模式文件留空。在一个示例方法中,用户在目录名称/opt/contrail/fabric_ansible_playbooks/schema/下通过名称<command_name>_schema.json创建必要模式文件。在一个示例方法中,模式文件包括以下各项中的一项或多项:输入模式、输出模式和UI模式。在一个示例方法中,show_config_interfaces命令的输入模式包括两个输入参数:接口过滤器和接口类型,如下所示:
在一个示例方法中,UI模式提供所选择的UI特征。在一个这样的示例方法中,在存在大量输入参数的情况下,UI模式包括UI占位符和表单数据的排序。一个这样的实例如下所示:
在一个示例方法中,输出模式根据特定通用设备命令而变化。在show_config_interfaces设备无关命令所示的示例中,用户可能希望主要导出接口的操作状态信息。在一些示例方法中,输出模式实际上在command_output下,因为输出模式是作业的输出模式。因此,除了输出模式中的command_output部分之外,任何其他命令的格式大多相似。一个这样的示例如下所示:
Jinja模板是使用Jinja2模板语言创建的模板。
在本示例方法中,用户接下来创建用于命令show_config_interfaces的适当角色。这可能与命名命令一样简单。
图9图示了根据本文中所描述的技术的可以在其上执行设备无关命令的代表性网络设备。在图9的示例方法中,设备是路由器。它经由名称450、供应商452、设备系列454、产品名称456和管理IP地址458来限定。show_config_interfaces命令可以被配置为在图9的路由器上操作。如下文所详述的。
图10图示了根据本文中所描述的技术的可以用于组织设备无关命令的示例目录结构。在图10的示例方法中,指派的角色(即,“show_config_interfaces”)限定了目录500,其容纳用于每个设备无关命令的角色文件夹502(即,“cmd_show_config_interfaces”)。在图10所示的示例中,与命令相关联的Ansible脚本被存储在任务文件夹504中,并且与命令相关联的模板被存储在模板文件夹506中。在一个示例方法中,角色文件夹的顶部目录路径是:
/opt/contrail/fabric_ansible_playbooks).
在图10所示的方法中,用户在cmd_show_config_interfaces文件夹502下创建任务文件夹504,并且为将在其上执行命令的每个设备12、16、18添加Ansible脚本508。在一个这样的示例方法中,用于设备系列的Ansible脚本被标记为<device_vendor>_<device_family>.yml。然而,如果解码command_resp(图11中所示)的解析在给定供应商下的所有设备系列上正确操作,则给定供应商的Ansible脚本被标记为<device_vendor>.yml。模板510(例如,对于Juniper、Cisco或Arista设备)被列在模板文件夹506下面。在图10所示的示例中,模板被限定为Jinja模板。如上文所指出的,Jinja2是Python的模板语言,其将其模板存储为Jinja模板。还可以使用其他模板语言。
图11图示了用于图9的路由器的示例Ansible脚本。在图11的示例Ansible脚本550中,命令552当由命令处理单元62执行时,使用Juniper Junos CLI命令在一个或多个Juniper设备的device_management_ip地址处执行与设备无关命令“show_config_interfaces”相关联的任务。在管理IP地址处执行show_config_interfaces设备无关命令将返回该路由器设备的Juniper Junos CLI命令的结果。然后,将响应存储在“command_resp”寄存器554中并且记录在变量command_response 556中,以供show_config_interfaces设备无关命令的逻辑访问。Arista和Cisco设备的Ansible脚本遵循类似的惯例,但分别适于Arista和Cisco设备的相关联的设备命令。
如上文所指出的,用户限定与设备供应商和设备系列相对应的脚本550。在图11所示的示例中,Ansible脚本550可以已经被标记为juniper_junos-es.yml。然而,由于设备无关命令跨过所有Juniper设备工作,所以使用juniper.yml标记。
应当指出,每个脚本中的任务的数目是底层设备的函数。上述针对Juniper路由器的方法执行单个任务,将结果接收在寄存器中,并且将寄存器内容传送到show_config_interfaces设备无关命令所使用的变量。其他供应商的产品可能需要若干个任务才能获得类似的结果。然而,上述方法的优点在于无关紧要。只要可以为每个设备定义脚本和模板,就可以在任何数目的设备上运行相同的设备无关命令。
图12图示了根据本公开的一个方面的用于指定网络设备上的设备无关命令的示例模板。用户创建模板600。每个模板600与设备系列和设备供应商相关联。在图12所示的示例中,模板600是用Jinja2引擎解析的Jinja模板。在一个示例方法中,相同的命名约定被用于关于脚本的模板。在这种情况下,模板600可以被标记为“juniper_junos-es.j2”。然而,由于解码来自图11的Ansible脚本500的command_resp变量的解析跨过所有Juniper设备系列成功操作,所以模板600可以被标记为juniper.j2,如图10所示。在一个示例方法中,Jinja2引擎的解析输出被记录在类似于上文所描述的输出模式中定义的command_outputjson结构的结构中。
在一个示例方法中,每个设备无关命令的输出作为JSON文件被存储在由命令名称标记的文件夹中。一个这样的示例文件夹如下所示:
/opt/contrail/fabric_ansible_playbooks/generic_device_operations/<command_name>
在一个示例方法中,如在名为<device_management_ip>.json的文件中一样,对在设备上的命令执行的解析的JSON输出进行存储。在图10的设备的情况下,“show_config_interfaces”设备无关命令的命令执行结果被存储为10.175.72.108.json。
图13图示了根据本公开的一个方面的由在选择的网络设备上的设备无关命令的执行而得到的输出文件。在图13的示例方法中,从对于受制于图8的设备无关命令的每个设备的command_resp变量读取的结果被存储在JSON文件中作为嵌套数据,其中针对每个设备存储单独的JSON文件。在图13中示出了代表性输出文件700。在一些示例方法中,文件700具有由针对设备无关命令的作业模板限定的输出模式限定的格式,如上文所指出的。
以上描述的是跨过不同产品供应商的产品执行设备无关命令同时实现类似结果的有利方式。设备系列上的操作可以分别使用Ansible脚本和Jinja2模板表达为任务和模板。在一个示例方法中,VN控制器22上的图形用户界面45提供用于限定通用操作并且基于代表性任务和模板文件将设备无关命令应用于设备的机构。结果提供了跨过异质网络进行设备不可知测试的灵活性。
这些技术消除了对特定设备操作/命令的需要,并且基于特定设备来移除用户界面依赖性。相反,通用操作依赖于输入和输出数据模型,这些模型可以动态再现。另外,在一些示例方法中,VN控制器22使用基于角色和基于简档的设备管理来将每个网络设备中的配置/操作功能与特定通用操作解耦。通过利用基于角色和基于简档的设备管理的概念,该框架可以被用于跨过多个设备供应商使单个操作自动化,为用户提供结果的一致视图,而不管由特定供应商:设备型号提供的供应商-特定输出/数据。
本文中所描述的技术(包括前述任何部分中的技术)可以以硬件、软件、固件或其任何组合来实现。描述为模块、单元或组件的各种特征可以在集成逻辑设备中一起实现,或者作为离散但可互操作的逻辑设备或其他硬件设备单独实现。在一些情况下,电子电路的各种特征可以实现为一个或多个集成电路设备,诸如集成电路芯片或芯片组。
如果以硬件实现,则本公开可以涉及一种装置,诸如处理器或集成电路设备,诸如集成电路芯片或芯片组。可替代地或附加地,如果以软件或固件实现,则技术可以至少部分地由包括指令的计算机可读数据存储介质来实现,该指令当被执行时,使得处理器执行上文所描述的方法中的一个或多个方法。例如,计算机可读数据存储介质可以存储这样的指令以供处理器执行。
计算机可读介质可以形成计算机程序产品的一部分,该计算机程序产品可以包括包装材料。计算机可读介质可以包括计算机数据存储介质,诸如随机存取存储器(RAM)、只读存储器(ROM)、非易失性随机存取存储器(NVRAM)、电可擦除可编程只读存储器(EEPROM)、闪存、磁或光数据存储介质等。在一些示例中,制品可以包括一个或多个计算机可读存储介质。
在一些示例中,计算机可读存储介质可以包括非暂态介质。术语“非暂态”可以指示存储介质不体现在载波或传播信号中。在某些示例中,非暂态存储介质可以(例如,在RAM或高速缓存中)存储随时间而改变的数据。
代码或指令可以是由处理电路执行的软件和/或固件,该处理电路包括一个或多个处理器,诸如一个或多个数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场-可编程门阵列(FPGA)、或其他等效的集成或分立逻辑电路。因而,本文中所使用的术语“处理器”可以是指任何前述结构或适合于实现本文中所描述的技术的任何其他结构。另外,在一些方面中,可以在软件模块或硬件模块内提供本公开中所描述的功能。
Claims (20)
1.一种用于网络设备的方法,包括:
由网络控制器经由图形用户界面输出用于显示的网络设备的指示,所述网络设备支持选自一个或多个设备无关命令的设备无关命令,其中每个设备无关命令在所支持的网络设备上执行一个或多个操作,所述一个或多个操作由与所述一个或多个设备无关命令中的每个设备无关命令关联的作业模板限定;
由所述网络控制器经由所述图形用户界面接收用户输入的指示,所述用户输入选择显示的所述网络设备的指示中的两个或更多个显示的网络设备的指示,所述指示指定选择的网络设备,其中选择的所述网络设备中的一个选择的网络设备来自第一网络设备系列并且对与所述第一网络设备系列相关联的第一设备命令集合进行响应,并且其中选择的所述网络设备中的另一选择的网络设备来自第二网络设备系列并且对与所述第二网络设备系列相关联的不同的第二设备命令集合进行响应;
由所述网络控制器使选择的所述网络设备在选择的所述网络设备上执行选择的所述设备无关命令的所述一个或多个操作,其中执行所述一个或多个操作包括:在选择的所述网络设备中的每个选择的网络设备上,基于来自与相应的选择的所述网络设备的网络设备系列相关联的所述命令集合的命令而执行任务,其中所述任务由与所述设备无关命令相关联的设备无关命令脚本限定,所述设备无关命令脚本以数据序列化语言的形式指定所述任务,所述设备无关命令脚本由所述作业模板引用,并且其中所述任务当被执行时,在相应的选择的所述网络设备上执行所述一个或多个操作;以及
由所述网络控制器存储响应于所述设备无关命令的、从选择的所述网络设备接收的输出变量数据。
2.根据权利要求1所述的方法,其中所述方法还包括:
经由所述图形用户界面显示与选择的所述设备无关命令相关联的所述作业模板,其中所述作业模板限定由选择的所述设备无关命令执行的所述一个或多个操作以及以下各项中的一项或多项:输入模式、输出模式和输入_用户界面模式;以及
经由所述图形用户界面录入与由选择的所述设备无关命令所支持的网络设备相关联的一个或多个设备无关命令脚本,其中每个设备无关命令脚本包括输出变量和所述任务的列表,所述任务当被执行时,在由对应的所述设备无关命令脚本支持的所述网络设备系列的所述网络设备上执行所述一个或多个操作。
3.根据权利要求2所述的方法,其中所述方法还包括:根据网络设备系列来存储所述设备无关命令脚本。
4.根据权利要求2所述的方法,其中所述方法还包括:根据网络设备供应商存储所述设备无关命令脚本。
5.根据权利要求1至4中任一项所述的方法,其中执行所述一个或多个操作包括:经由所述图形用户界面显示用于录入与选择的所述设备无关命令相关联的输入的位置。
6.根据权利要求1至4中任一项所述的方法,其中所述方法还包括:
显示两个或更多个设备无关命令的列表;以及
接收用户输入,所述用户输入选择显示的所述设备无关命令中的一个显示的设备无关命令作为选择的所述设备无关命令。
7.一种虚拟网络控制器,包括:
存储器;
图形用户界面;以及
一个或多个处理器,所述处理器被连接到所述存储器和所述图形用户界面,
其中所述存储器包括指令,所述指令当由所述一个或多个处理器执行时,使得所述处理器:
经由所述图形用户界面显示网络设备的指示,所述网络设备支持选自一个或多个设备无关命令的设备无关命令,其中每个设备无关命令在所支持的网络设备上执行一个或多个操作,所述一个或多个操作由与所述一个或多个设备无关命令中的每个设备无关命令关联的作业模板限定;
经由所述图形用户界面接收用户输入,所述用户输入选择显示的所述网络设备的指示中的两个或更多个显示的网络设备的指示,其中每个网络设备具有网络设备系列,其中选择的两个或更多个所述网络设备中的一个选择的网络设备来自第一网络设备系列并且对与所述第一网络设备系列相关联的第一设备命令集合进行响应,并且其中选择的两个或更多个所述网络设备中的另一选择的网络设备来自第二网络设备系列并且对与所述第二网络设备系列相关联的不同的第二设备命令集合进行响应;以及
由所述虚拟网络控制器使选择的所述网络设备在选择的所述网络设备上执行选择的所述设备无关命令的所述一个或多个操作,其中执行所述一个或多个操作包括:基于来自与相应的选择的所述网络设备的所述网络设备系列相关联的所述命令集合的命令来在每个选择的网络设备上执行任务,其中所述任务由与所述设备无关命令相关联的设备无关命令脚本限定,所述设备无关命令脚本以数据序列化语言的形式指定所述任务,所述设备无关命令脚本由所述作业模板引用,并且其中所述任务当被执行时,在相应的选择的所述网络设备上执行所述一个或多个操作。
8.根据权利要求7所述的控制器,其中所述存储器还包括指令,所述指令当由所述一个或多个处理器执行时,将不同的作业模板与所述一个或多个设备无关命令中的每个设备无关命令相关联,其中每个作业模板限定由相关联的所述设备无关命令执行的所述一个或多个操作。
9.根据权利要求7至8中任一项所述的控制器,其中所述存储器还包括指令,所述指令当由所述一个或多个处理器执行时,将针对每个相应的网络设备执行的所述任务存储在与相应的所述网络设备相关联的文件中。
10.根据权利要求7至8中任一项所述的控制器,其中所述存储器还包括指令,所述指令当由所述一个或多个处理器执行时,将针对每个相应的网络设备执行的所述任务存储在与相应的所述网络设备的所述网络设备系列相关联的文件中。
11.根据权利要求7至8中任一项所述的控制器,其中所述存储器还包括指令,所述指令当由所述一个或多个处理器执行时,将针对每个相应的网络设备执行的所述任务存储在与相应的所述网络设备的所述设备供应商相关联的文件中。
12.一种用于网络设备的方法,包括:
在虚拟网络控制器的用户界面中限定设备无关命令,其中所述设备无关命令当被执行时在所支持的网络设备上执行一个或多个操作,所述一个或多个操作由与所述设备无关命令关联的作业模板限定;
标识两个或更多个网络设备系列;
配置所述设备无关命令以在标识的所述网络设备系列上执行,其中来自标识的所述网络设备系列中的一个标识的网络设备系列的网络设备与一个命令集合相关联并且对所述命令集合进行响应,来自标识的所述网络设备系列中的另一标识的网络设备系列的网络设备与不同命令集合相关联并且对所述不同命令集合进行响应,其中配置包括:对于每个标识的网络设备系列并且基于与每个标识的网络设备系列相关联的所述命令集合,选择一个或多个任务,所述一个或多个任务当被执行时,在来自相应的标识的所述网络设备系列的网络设备上执行所述设备无关命令的所述一个或多个操作,其中所述任务由与所述设备无关命令相关联的设备无关命令脚本限定,所述设备无关命令脚本以数据序列化语言的形式指定所述任务,所述设备无关命令脚本由所述作业模板引用;
选择与标识的所述网络设备系列中的一个标识的网络设备系列相关联的网络设备;以及
使选择的所述网络设备在选择的所述网络设备上执行所述设备无关命令的所述操作,其中执行包括:执行针对与选择的所述网络设备相关联的所述网络设备系列选择的所述任务;以及
由所述虚拟网络控制器存储响应于所述设备无关命令的、从选择的所述网络设备接收的输出变量数据。
13.根据权利要求12所述的方法,其中限定设备无关命令还包括:为每个设备无关命令指派角色。
14.根据权利要求12至13中任一项所述的方法,其中限定当被执行时在相应的所述网络设备上执行所述设备无关命令的所述一个或多个操作的所述一个或多个任务包括:存储所述任务作为与所述设备无关命令相关联的所述设备无关命令脚本。
15.根据权利要求12至13中任一项所述的方法,其中限定当被执行时在相应的所述网络设备上执行所述设备无关命令的所述一个或多个操作的所述一个或多个任务包括:将所述任务存储为与所述设备无关命令相关联并且与关联于相应的所述网络设备的网络设备系列相关联的所述设备无关命令脚本。
16.根据权利要求12至13中任一项所述的方法,其中限定当被执行时在相应的所述网络设备上执行所述设备无关命令的所述一个或多个操作的所述一个或多个任务包括:将所述任务存储为与所述设备无关命令相关联并且与关联于相应的所述网络设备的设备供应商相关联的所述设备无关命令脚本。
17.根据权利要求12至13中任一项所述的方法,其中限定设备无关命令包括:限定与所述设备无关命令相关联的一个或多个模式。
18.根据权利要求17所述的方法,其中所述模式包括输入模式,所述输入模式限定与所述设备无关命令相关联的输入参数。
19.根据权利要求17所述的方法,其中所述模式包括输出模式,所述输出模式限定在所述设备无关命令的执行之后如何呈现从选择的所述网络设备接收的信息。
20.根据权利要求12至13中任一项所述的方法,其中所述用户界面是图形用户界面,并且其中在选择的所述网络设备上执行所述设备无关命令的所述操作还包括:经由所述图形用户界面显示一个或多个位置,所述一个或多个位置被配置为在所述设备无关命令的执行期间接收与所述设备无关命令相关联的用户输入,其中所述一个或多个位置包括以下各项中的一项或多项:被配置为接收由所述用户录入的文本的窗口,以及下拉菜单。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310330124.5A CN116366449A (zh) | 2018-12-21 | 2019-06-27 | 在软件定义网络上的用户定制和自动化操作的系统和方法 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/231,210 | 2018-12-21 | ||
US16/231,210 US10917339B2 (en) | 2018-12-21 | 2018-12-21 | System and method for user customization and automation of operations on a software-defined network |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310330124.5A Division CN116366449A (zh) | 2018-12-21 | 2019-06-27 | 在软件定义网络上的用户定制和自动化操作的系统和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111355604A CN111355604A (zh) | 2020-06-30 |
CN111355604B true CN111355604B (zh) | 2023-03-31 |
Family
ID=66912730
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310330124.5A Pending CN116366449A (zh) | 2018-12-21 | 2019-06-27 | 在软件定义网络上的用户定制和自动化操作的系统和方法 |
CN201910566508.0A Active CN111355604B (zh) | 2018-12-21 | 2019-06-27 | 在软件定义网络上的用户定制和自动化操作的系统和方法 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310330124.5A Pending CN116366449A (zh) | 2018-12-21 | 2019-06-27 | 在软件定义网络上的用户定制和自动化操作的系统和方法 |
Country Status (3)
Country | Link |
---|---|
US (2) | US10917339B2 (zh) |
EP (1) | EP3671452A1 (zh) |
CN (2) | CN116366449A (zh) |
Families Citing this family (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10742501B1 (en) * | 2018-12-21 | 2020-08-11 | Juniper Networks, Inc. | Automation of maintenance mode operations for network devices |
US10917339B2 (en) * | 2018-12-21 | 2021-02-09 | Juniper Networks, Inc. | System and method for user customization and automation of operations on a software-defined network |
US10938660B1 (en) * | 2018-12-21 | 2021-03-02 | Juniper Networks, Inc. | Automation of maintenance mode operations for network devices |
US11956203B2 (en) * | 2019-04-04 | 2024-04-09 | Telefonaktiebolaget Lm Ericsson (Publ) | Service handling in software defined networking based container orchestration systems |
US11418399B2 (en) | 2019-04-30 | 2022-08-16 | Cisco Technology, Inc. | Multi-fabric deployment and management platform |
US10826775B1 (en) * | 2019-06-19 | 2020-11-03 | Cisco Technology, Inc. | Policy plane integration across multiple domains |
US10979300B2 (en) * | 2019-06-20 | 2021-04-13 | Kaloom Inc. | Computing device and methods for synchronizing networking information with a topology server |
US11075812B2 (en) | 2019-06-20 | 2021-07-27 | Kaloom Inc. | Server and methods for synchronizing networking information with client devices |
US11025504B2 (en) * | 2019-08-01 | 2021-06-01 | At&T Intellectual Property I, L.P. | Intent design tool for wireless communication networks |
US11640315B2 (en) | 2019-11-04 | 2023-05-02 | Vmware, Inc. | Multi-site virtual infrastructure orchestration of network service in hybrid cloud environments |
US11709698B2 (en) * | 2019-11-04 | 2023-07-25 | Vmware, Inc. | Multi-site virtual infrastructure orchestration of network service in hybrid cloud environments |
US11153180B1 (en) * | 2020-04-15 | 2021-10-19 | Verizon Patent And Licensing Inc. | Intelligent and assisted intent builder |
CN112398914B (zh) * | 2020-10-28 | 2023-03-24 | 武汉大势智慧科技有限公司 | 基于Kubernetes容器集群的云渲染平台 |
CN113179299B (zh) * | 2021-04-19 | 2022-06-21 | 温州职业技术学院 | 面向工业互联网应用的服务功能链协同控制系统及方法 |
CN113747471A (zh) * | 2021-08-11 | 2021-12-03 | 通号城市轨道交通技术有限公司 | 局域网配置方法、装置、电子设备及存储介质 |
US11733899B2 (en) | 2021-10-08 | 2023-08-22 | Dell Products L.P. | Information handling system storage application volume placement tool |
WO2023113976A1 (en) | 2021-12-14 | 2023-06-22 | Vmware, Inc. | Desired state management of software-defined data center |
US11722372B2 (en) * | 2021-12-14 | 2023-08-08 | Vmware, Inc. | Desired state management of software-defined data center |
CN114430391B (zh) * | 2021-12-23 | 2024-07-30 | 东莞市李群自动化技术有限公司 | 网络域创建的方法、网络系统、设备及存储介质 |
US11956164B2 (en) | 2022-04-29 | 2024-04-09 | Hewlett Packard Enterprise Development Lp | Remote management of a switch stack |
WO2024177751A1 (en) * | 2023-02-23 | 2024-08-29 | Vanderbilt University | Methods and systems for execution and management of software and data in a cloud environment |
CN116208498A (zh) * | 2023-05-04 | 2023-06-02 | 苏州浪潮智能科技有限公司 | 一种OpenStack云平台节点差异化配置的方法、装置、设备及介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107005482A (zh) * | 2014-09-22 | 2017-08-01 | 沃尔廷控股公司 | 为软件定义网络,存储和计算执行操作的编译器和方法 |
CN108885560A (zh) * | 2015-10-13 | 2018-11-23 | 施耐德电器工业公司 | 用于在软件定义自动化系统中分配工作负载的方法 |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8296400B2 (en) * | 2001-08-29 | 2012-10-23 | International Business Machines Corporation | System and method for generating a configuration schema |
US7184437B1 (en) | 2002-07-17 | 2007-02-27 | Juniper Networks, Inc. | Scalable route resolution |
US9307050B2 (en) * | 2007-03-07 | 2016-04-05 | Hewlett Packard Enterprise Development Lp | Configurable network device user interface |
US8661095B2 (en) * | 2011-05-25 | 2014-02-25 | Juniper Networks, Inc. | Identifying scripting form of text commands for a network device |
US8750288B2 (en) | 2012-06-06 | 2014-06-10 | Juniper Networks, Inc. | Physical path determination for virtual network packet flows |
US8887056B2 (en) | 2012-08-07 | 2014-11-11 | Advanced Micro Devices, Inc. | System and method for configuring cloud computing systems |
US9417892B2 (en) * | 2012-09-28 | 2016-08-16 | International Business Machines Corporation | Configuration command template creation assistant using cross-model analysis to identify common syntax and semantics |
US9473394B1 (en) | 2014-01-10 | 2016-10-18 | Juniper Networks, Inc. | Proactive flow table for virtual networks |
US9619631B1 (en) * | 2014-06-11 | 2017-04-11 | Ansible, Inc. | Role-based permissions for accessing computing resources |
US9864740B2 (en) * | 2015-02-05 | 2018-01-09 | Ciena Corporation | Methods and systems for creating and applying a template driven element adapter |
US9973390B2 (en) * | 2015-05-08 | 2018-05-15 | Fixstream Networks Inc. | Method of discovering network topology |
US10200248B1 (en) | 2016-06-30 | 2019-02-05 | Juniper Networks, Inc. | Translating high-level configuration instructions to low-level device configuration |
US11140032B2 (en) * | 2018-05-04 | 2021-10-05 | Oracle International Corporation | System and method for building idempotent configuration management modules for a cloud Infrastructure Service |
US11233778B2 (en) | 2018-08-15 | 2022-01-25 | Juniper Networks, Inc. | Secure forwarding of tenant workloads in virtual networks |
US10972342B2 (en) | 2018-12-17 | 2021-04-06 | Juniper Networks, Inc. | Network device configuration using a message bus |
US10917339B2 (en) * | 2018-12-21 | 2021-02-09 | Juniper Networks, Inc. | System and method for user customization and automation of operations on a software-defined network |
US10742501B1 (en) | 2018-12-21 | 2020-08-11 | Juniper Networks, Inc. | Automation of maintenance mode operations for network devices |
-
2018
- 2018-12-21 US US16/231,210 patent/US10917339B2/en active Active
-
2019
- 2019-06-17 EP EP19180604.1A patent/EP3671452A1/en not_active Withdrawn
- 2019-06-27 CN CN202310330124.5A patent/CN116366449A/zh active Pending
- 2019-06-27 CN CN201910566508.0A patent/CN111355604B/zh active Active
-
2021
- 2021-02-05 US US17/169,303 patent/US11329914B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107005482A (zh) * | 2014-09-22 | 2017-08-01 | 沃尔廷控股公司 | 为软件定义网络,存储和计算执行操作的编译器和方法 |
CN108885560A (zh) * | 2015-10-13 | 2018-11-23 | 施耐德电器工业公司 | 用于在软件定义自动化系统中分配工作负载的方法 |
Non-Patent Citations (1)
Title |
---|
《Ansible Playbook Essentials》;Gourav Shah;《Ansible Playbook Essentials》;20150831;第1-30页 * |
Also Published As
Publication number | Publication date |
---|---|
US11329914B2 (en) | 2022-05-10 |
CN116366449A (zh) | 2023-06-30 |
CN111355604A (zh) | 2020-06-30 |
EP3671452A1 (en) | 2020-06-24 |
US10917339B2 (en) | 2021-02-09 |
US20210184971A1 (en) | 2021-06-17 |
US20200204489A1 (en) | 2020-06-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111355604B (zh) | 在软件定义网络上的用户定制和自动化操作的系统和方法 | |
EP3611883B1 (en) | Secure forwarding of tenant workloads in virtual networks | |
US10999163B2 (en) | Multi-cloud virtual computing environment provisioning using a high-level topology description | |
US11329918B2 (en) | Facilitating flow symmetry for service chains in a computer network | |
US10931793B2 (en) | System and method for automated rendering of service chaining | |
US10708082B1 (en) | Unified control plane for nested clusters in a virtualized computing infrastructure | |
US11102079B2 (en) | Cross-regional virtual network peering | |
US20230123775A1 (en) | Cloud native software-defined network architecture | |
US11171834B1 (en) | Distributed virtualized computing infrastructure management | |
US10411947B2 (en) | Hot swapping and hot scaling containers | |
US10187306B2 (en) | System and method for improved service chaining | |
CN110838992B (zh) | 在不同网络堆栈中的内核模块间传送分组的系统和方法 | |
WO2017127225A1 (en) | Virtual network, hot swapping, hot scaling, and disaster recovery for containers | |
US11444836B1 (en) | Multiple clusters managed by software-defined network (SDN) controller | |
CN117255019A (zh) | 用于虚拟化计算基础设施的系统、方法及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |