CN114745332B - 促进计算机网络中的服务链的流对称的系统和网络控制器 - Google Patents
促进计算机网络中的服务链的流对称的系统和网络控制器 Download PDFInfo
- Publication number
- CN114745332B CN114745332B CN202210472360.6A CN202210472360A CN114745332B CN 114745332 B CN114745332 B CN 114745332B CN 202210472360 A CN202210472360 A CN 202210472360A CN 114745332 B CN114745332 B CN 114745332B
- Authority
- CN
- China
- Prior art keywords
- service
- virtual
- network
- instance
- server
- 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
- 238000012545 processing Methods 0.000 claims description 21
- 230000004044 response Effects 0.000 claims description 13
- 238000013341 scale-up Methods 0.000 claims description 3
- 238000000034 method Methods 0.000 abstract description 51
- 238000004873 anchoring Methods 0.000 abstract 1
- 238000003860 storage Methods 0.000 description 41
- 230000006870 function Effects 0.000 description 30
- 239000004744 fabric Substances 0.000 description 22
- 230000008569 process Effects 0.000 description 20
- 239000003795 chemical substances by application Substances 0.000 description 15
- 238000004891 communication Methods 0.000 description 10
- 238000007726 management method Methods 0.000 description 10
- 235000008694 Humulus lupulus Nutrition 0.000 description 8
- 238000010586 diagram Methods 0.000 description 8
- 238000005538 encapsulation Methods 0.000 description 8
- 230000008901 benefit Effects 0.000 description 7
- 238000002955 isolation Methods 0.000 description 7
- 238000013500 data storage Methods 0.000 description 5
- 229910052751 metal Inorganic materials 0.000 description 4
- 239000002184 metal Substances 0.000 description 4
- 230000002776 aggregation Effects 0.000 description 3
- 238000004220 aggregation Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000005457 optimization Methods 0.000 description 3
- 230000003863 physical function Effects 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 230000007613 environmental effect Effects 0.000 description 2
- 238000007689 inspection Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000011330 nucleic acid test Methods 0.000 description 2
- 238000005192 partition Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000002265 prevention Effects 0.000 description 2
- 230000010076 replication Effects 0.000 description 2
- 230000005641 tunneling Effects 0.000 description 2
- 241000721662 Juniperus Species 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
- 238000003491 array Methods 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000007418 data mining Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 239000005022 packaging material Substances 0.000 description 1
- 238000012913 prioritisation Methods 0.000 description 1
- 230000001737 promoting effect Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 239000011435 rock Substances 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- WFKWXMTUELFFGS-UHFFFAOYSA-N tungsten Chemical group [W] WFKWXMTUELFFGS-UHFFFAOYSA-N 0.000 description 1
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/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
-
- 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/38—Flow based routing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/12—Avoiding congestion; Recovering from congestion
- H04L47/125—Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
-
- 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/50—Network service management, e.g. ensuring proper service fulfilment according to agreements
- H04L41/5041—Network service management, e.g. ensuring proper service fulfilment according to agreements characterised by the time relationship between creation and deployment of a service
-
- 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/302—Route determination based on requested QoS
- H04L45/306—Route determination based on the nature of the carried application
-
- 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
- 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/827—Aggregation of resource allocation or reservation requests
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/02—Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
- H04L63/0272—Virtual private networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/34—Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本公开的实施例涉及促进针对计算机网络中的服务链的流对称的系统和网络控制器。描述了用于使用锚定服务链的可扩展服务平台促进流对称的技术。可扩展服务平台可以促进流对称,并且至少在一些情况下,促进分别在正向和反向方向上遍历服务链的针对第一分组流(“正向分组流”)和相关的第二分组流(“反向分组流”)的流粘性。例如,虚拟化计算基础设施可以部署可扩展服务平台,以在针对服务链中的入口服务的多个并行服务实例之间执行从网关接收到的多个正向分组流的负载平衡。针对多个正向分组流的每个对应的反向分组流,可扩展服务平台对反向分组流进行负载平衡至被应用于对应的正向分组流的服务链中的针对出口服务的服务实例。
Description
本申请是中国国家申请号为201910569529.8、申请日为2019年6月27日、发明名称为“促进针对计算机网络中的服务链的流对称的方法和网络控制器”的发明专利申请的分案申请。
技术领域
本公开涉及一种计算机网络,并且更具体地,涉及使用计算机网络的服务链。
背景技术
在典型的云数据中心环境中,存在大量互连的服务器,这些服务器提供计算和/或存储容量以运行各种应用。例如,数据中心可以包括为订阅者(即,数据中心的客户)托管应用和服务的设施。例如,数据中心可以托管所有基础设施设备,诸如,网络和存储系统、冗余电源和环境控制。在典型的数据中心中,存储系统和应用服务器的簇经由高速交换结构互连,该高速交换结构由物理网络交换机和路由器的一层或多层提供。更复杂的数据中心向遍布全世界的基础设施提供位于各种物理托管设施中的订阅者支持设备。
虚拟化数据中心正在成为现代信息技术(IT)基础设施的核心基础。特别地,现代数据中心已经广泛地利用了虚拟化环境,其中,虚拟主机(在本文中也称为虚拟执行元件(诸如虚拟机或容器))在物理计算设备的底层计算平台上被部署和执行。
数据中心内的虚拟化可以提供多个优点。一个优点是虚拟化可以提供对效率的显著的提高。由于随着每个物理CPU具有大量核心的多核微处理器架构的出现底层物理计算设备(即,服务器)变得越加强大,因此虚拟化变得更简单且更有效。第二优点是虚拟化提供了对计算基础设施的重要控制。随着物理计算资源成为可替代资源,诸如,在基于云的计算环境中,计算基础设施的供应和管理变得更简单。因此,除了虚拟化提供的效率和增加的投资回报(ROI)之外,企业IT职员通常更喜欢数据中心中的虚拟化计算簇,因为它们具有管理优势。
容器化是基于操作系统级虚拟化的虚拟化方案。容器是用于与彼此和主机隔离的应用的轻量级且可移植的执行元件。因为容器未与主机硬件计算环境紧密耦合,所以应用可以被绑定至容器图像并且在支持底层容器架构的任何主机或虚拟主机上被执行为单个轻量级封装。如此,容器解决了如何使软件在不同的计算环境中工作的问题。容器提供了从一个计算环境到另一虚拟或物理计算环境一致运行的承诺。
利用容器固有的轻量级性质,与传统的虚拟机(VM)相比,单个主机常常可以支持更多的容器实例。容器通常是短暂的,与VM相比,可以更有效地被创建和移动,并且它们还可以被管理为逻辑上相关的元件组(有时称为用于一些编排平台的“群聚(pod)”,例如,Kubernetes)。这些容器特性影响了针对容器网络解决方案的要求:网络应该是敏捷且可扩展的。VM、容器和裸金属服务器可能需要共存于相同计算环境中,其中在应用的不同部署之间实现通信。容器网络应该也是不可知的,以与被用来部署容器化应用的多种类型的编排平台一起工作。
管理针对应用执行的部署和基础设施的计算基础设施可能涉及两种主要作用:(1)编排—用于使跨主机簇的应用的部署、缩放和操作自动化并且提供计算基础设施,其可以包括以容器为中心的计算基础设施;以及(2)网络管理—用于在网络基础设施中创建虚拟网络以在虚拟执行环境上运行的应用(诸如,容器或VM)之间以及在旧有(例如,物理)环境上运行的应用之间实现分组化通信。软件定义的网络有助于网络管理。
虚拟网络也可以被用来在虚拟化网络功能(VNF)实例或物理设备之间实现服务链,其通过有序序列将网络功能(或“服务”)应用于分组流。用于将服务或网络功能应用于分组流的VNF实例或物理设备/器具可以称为“服务实例”。在许多情况下,VNF实例由虚拟执行环境执行,并且由一个或多个VNF实例应用的服务链中的服务可以通过产生更多的VNF实例来响应于增加的负载而放大。同样地,服务可以通过删除针对该服务产生的一个或多个VNF实例来响应于减少的负载而缩小。针对单个设备的一个或多个VNF实例可以由分离的计算设备托管,例如,计算节点或服务器。针对给定的服务链,VNF实例和/或物理设备使用一个或多个虚拟网络来互连,通过该一个或多个虚拟网络沿着针对组成服务链的网络功能的应用的有序序列来转发分组流。
发明内容
一般,描述了用于使用锚定服务链的可扩展服务平台促进流对称的技术。可扩展服务平台可以促进流对称,并且至少在一些情况下,促进针对分别在正向和反向方向上遍历服务链的第一分组流(“正向分组流”)和相关的第二分组流(“反向分组流”)的流粘性。例如,虚拟化计算基础设施可以部署可扩展服务平台,以在服务链中的针对入口服务的多个并行服务实例之间执行从网关接收到的多个正向分组流的负载平衡。针对用于多个正向分组流的每个对应的反向分组流,可扩展服务平台对反向分组流进行负载平衡至被应用于对应的正向分组流的服务链中的针对出口服务的服务实例。通过这种方式,可扩展服务平台可以促进在正向和反向方向上的针对分组流的服务链中的针对服务的服务实例之间的流对称。
可扩展服务平台可以被部署在服务链的入口处,以从网关接收分组并且在多个并行服务实例之间对分组流进行负载平衡以促进流对称。可扩展服务平台可以包括用于负载平衡服务的多个服务实例,该负载平衡服务可扩展以处理增加的流量负载。在一些情况下,用于虚拟化计算基础设施的控制器为可扩展服务平台的节点配置虚拟网络地址,并且将虚拟网络地址发送给网关以由网关用作针对所接收到的分组流的转发目的地。节点将虚拟网络地址映射到针对服务链的入口服务实例的列表,以便对服务链上的分组流执行负载平衡并且促进流对称。
该技术可以提供一个或多个技术优点。例如,通过使用由可扩展服务平台实现的已知负载平衡算法来将正向分组流和对应的反向分组流设置为针对服务链的服务的服务实例,可扩展服务平台可以将针对这些任务的责任从网关卸载。这可以通过减少网关瓶颈来提高虚拟化计算基础设施内的服务链的可扩展性。作为另一示例,因为各自执行不同的负载平衡算法的网关的不同供应者实施方式可以备选地被用作针对虚拟化计算基础设施的网关,所以用于放置分组流以进入服务链的负载平衡算法可以不同于由服务链内的节点执行以用于为链中的下一服务选择下一节点以及对应的服务实例的负载平衡算法。通过使用相同的确定性的负载平衡算法沿着服务链在入口处和不同步骤处进行负载平衡,可扩展服务平台可以促进用于正向分组流和对应的相应反向分组流的流对称。
在一个示例中,系统包括用于虚拟化计算基础设施的网络控制器,其中网络控制器被配置为:接收对服务链的请求,该服务链包括针对服务链的一个或多个服务实例;以及将针对服务链的一个或多个服务实例中的出口服务实例安装至虚拟化计算基础设施的服务器。该系统还包括可扩展服务平台,其中可扩展服务平台包括在一个或多个服务器的集合上执行的一个或多个虚拟路由器,并且其中一个或多个虚拟路由器被配置为响应于从托管出口服务实例的服务器接收到正向分组流来创建与正向分组流相对应的针对反向分组流的流表条目,其中流表条目将托管出口服务实例的服务器指定为针对反向分组流的下一跳,其中一个或多个虚拟路由器被配置为基于流表条目将反向分组流转发给服务器。
在另一示例中,用于虚拟化计算基础设施的网络控制器包括被耦合至存储器设备的处理电路装置。网络控制器被配置为:接收对服务链的请求,该服务链包括针对服务链的一个或多个服务实例;将针对服务链的一个或多个服务实例中的出口服务实例安装至虚拟化计算基础设施的服务器;将针对服务链的一个或多个服务实例安装至虚拟化计算基础设施的一个或多个服务器,一个或多个服务实例包括出口服务实例;将针对服务链的入口的第一服务实例安装至可扩展服务平台;以及将针对服务链的出口的第二服务实例安装至可扩展服务平台,该可扩展服务平台包括在一个或多个服务器的集合上执行的一个或多个虚拟路由器,其中第一服务实例和第二服务实例作为针对服务链的端点操作以锚定被映射到服务链的分组流。
在另一示例中,方法包括:由用于虚拟化计算基础设施的网络控制器接收对服务链的请求,该服务链包括针对服务链的一个或多个服务实例;由网络控制器将针对服务链的一个或多个服务实例中的出口服务实例安装至虚拟化计算基础设施的服务器;由网络控制器将针对服务链的一个或多个服务实例安装至虚拟化计算基础设施的一个或多个服务器,一个或多个服务实例包括出口服务实例;由网络控制器将针对服务链的入口的第一服务实例安装至可扩展服务平台;以及由网络控制器将针对服务链的出口的第二服务实例安装至可扩展服务平台,该可扩展服务平台包括在一个或多个服务器的集合上执行的一个或多个虚拟路由器,其中第一服务实例和第二服务实例作为针对服务链的端点操作以锚定被映射到服务链的分组流。
在下面的附图和说明书中陈述了本公开的一个或多个实施例的细节。其它特征、目的和优点将通过说明书和附图以及通过权利要求书而变得明显。
附图说明
图1是图示了可以实现本文所描述的技术的示例的示例计算基础设施的框图。
图2是图示了根据本文所描述的技术执行针对虚拟网络的示例虚拟路由器的计算设备的框图。
图3是根据本文所描述的技术的作为用于虚拟化计算基础设施的控制器的实例操作的示例计算设备的框图。
图4是根据本公开中描述的技术的虚拟化计算基础设施的框图。
图5是根据本公开中描述的技术的流程图。
相同的附图标记在整个说明书和附图中表示相同的元件。
具体实施方式
图1是图示了可以实现本文所描述的技术的示例的示例计算基础设施8的框图。一般,数据中心10为针对客户站点11(图示为“客户11”)的应用和服务提供操作环境,该客户站点具有通过服务提供者网络7被耦合至数据中心的一个或多个客户网络。例如,数据中心10可以托管基础设施设备,诸如网络和存储系统、冗余电源和环境控制。服务提供者网络7被耦合至公共网络15,该公共网络15可以表示由其它提供者管理的一个或多个网络,并因此可以形成大规模公共网络基础设施(例如,互联网)的一部分。例如,公共网络15可以表示局域网(LAN)、广域网(WAN)、互联网、虚拟LAN(VLAN)、企业LAN、层3虚拟私有网络(VPN)、由操作服务提供者网络7的服务提供者操作的互联网协议(IP)内联网、企业IP网络或其一些组合。
尽管客户站点11和公共网络15被主要图示和描述为服务提供者网络7的边缘网络,但是在一些示例中,客户站点11和公共网络15中的一个或多个可以是数据中心10或另一数据中心内的租户网络。例如,数据中心10可以托管各自与一个或多个虚拟私有网络(VPN)相关联的多个租户(客户),它们中的每一个都可以实现其中一个客户站点11。数据中心10可以通过由除了网络服务提供者之外的实体所部署的网络可达到。另外,数据中心10内的计算设备可以向网关14发起、转发或以其它方式发送分组以用于由数据中心10的服务器12A至12N(“服务器12”)处理。
服务提供者网络7将基于分组的连接性提供给所附接的客户站点11、数据中心10和公共网络15。服务提供者网络7可以表示由服务提供者拥有和操作以将多个网络互连的网络。服务提供者网络7可以实现多协议标签交换(MPLS)转发,并且在这种实例中可以称为MPLS网络或MPLS骨干。在一些实例中,服务提供者网络7表示提供来自一个或多个服务提供者的服务的多个互连的自主系统,诸如,互联网。服务提供者网络7可以表示广域网(WAN),该广域网可以将数据中心10连接至另一数据中心、客户11网络或其它设备。
在一些示例中,数据中心10可以表示许多地理上分布的网络数据中心之一。如在图1的示例中所图示的,数据中心10可以是为客户提供网络服务或功能的设施。服务提供者的客户可以是集体实体,诸如,企业和政府或个人。例如,网络数据中心可以为多个企业和终端用户托管网络服务。其它示例性服务可以包括数据存储、虚拟私有网络、流量工程、文件服务、数据挖掘、科学计算或超级计算等。尽管图示为服务提供者网络7的分离边缘网络,但是数据中心10的元件(诸如,一个或多个物理网络功能(PNF)或虚拟化网络功能(VNF))可以被包括在服务提供者网络7的核心内。
在该示例中,数据中心10包括经由由物理网络交换机和路由器的一层或多层提供的交换结构(未示出)互连的存储装置和/或计算服务器12以及服务器16A至16M(“服务器16”)。服务器12、16是计算设备,并且在本文中还可以称为“主机”或“主机设备”、计算节点或计算设备。数据中心10可以托管经由交换结构互连的数百甚或数千服务器。如本文所使用的,“A和/或B”意味着A、B或者A和B。
交换结构可以包括被耦合至机架(或者“脊柱”或“核心”)交换机的分布层的互连架顶(TOR)(或其它“叶片”)交换机。例如,尽管未示出,但是数据中心10还可以包括一个或多个非边缘交换机、路由器、集线器、诸如防火墙、入侵检测和/或入侵预防设备等安全设备、服务器、计算终端、膝上型电脑、打印机、数据库、诸如蜂窝电话或个人数字助理等无线移动设备、无线接入点、桥接器、电缆调制解调器、应用加速器或其它网络设备。数据中心10还可以包括一个或多个物理网络功能(PNF),诸如,物理防火墙、负载平衡器、路由器、路由反射器、宽带网络网关(BNG)、演进分组核心或其它蜂窝网络元件以及其它PNF。
交换结构可以向服务器12、16提供到彼此和服务提供者网络7的冗余(多宿主)连接性。机架交换机聚合流量流并且在TOR交换机之间提供连接性。TOR交换机可以是提供层2(MAC)和/或层3(例如,IP)路由和/或交换功能的网络设备。TOR交换机和机架交换机可以各自包括一个或多个处理器和存储器,并且可以执行一个或多个软件过程。机架交换机可以被耦合至网关14,该网关14可以执行层3路由以通过服务提供者网络7在数据中心10与客户站点11之间路由发送网络流量。例如,其它交换架构可以具有更多或更少的交换层。在于2018年2月20日发行的美国专利9,898,317中发现了交换结构的进一步的示例细节,其以整体内容通过引用并入本文。
可以备选地称为“边缘路由器”或“边缘设备”的网关14是将客户和WAN连接聚合到数据中心10之内和之外的设备。网关14可以使用支持控制平面和转发平面冗余、链路聚合、多机架-链路聚合组(MC-LAG)、冗余上行链路的平台来提供硬件或设备冗余。
网关14可以支持IPv4和IPv6以及开放系统互连和MPLS协议。由于数据中心10可能是多租户的,因此网关14也可以支持一个或多个路由协议,诸如,静态路由、路由信息协议(RIP)、开放最短路径优先(OSPF)、带有流量工程扩展的OSPF(OSPF-TE)、OSPFv3、中间系统到中间系统(IS-IS)或边界网关协议(BGP)。网关14可以通过支持桥接域、重叠的VLAN ID、集成路由和桥接(IRB)或IEEE 802.1Q(QinQ)来支持一个或多个虚拟私有LAN服务(VPLS)。网关14可以支持MPLS VPN,诸如,L3VPN、L2VPN、以太网VPN(EVPN)和VPLS。
网关14可以表示一个或多个物理或虚拟化路由器或者其它网络设备,诸如,交换机、防火墙或流量负载平衡器(TLB)。相反,本文相对于网关14描述的操作可以由服务控制网关或其它流量引导设备整体或部分地执行。网关14可以是针对至少部分地使用网络功能虚拟化(NFV)实现的一个或多个服务链的锚。作为锚操作的网关14基于例如路线和/或针对订阅者和/或应用的策略来经由与网关14的一个或多个通信链路将进入数据中心10的分组流引导至适当的服务链。通过这种方式,流量引导可以是订阅者感知的以及应用感知的。订阅者感知意味着不同的订阅者被分配给不同的服务链,这取决于订阅者订阅的服务。例如,订阅者可以是其中一个客户11或与其中一个客户11相关联的不同实体。应用感知意味着不同类型的应用(例如,语音与视频流)被分配给不同的服务链。网关14可以与策略或认证、授权和计费(AAA)服务器集成以获得用于订阅者感知的策略。例如,网关14可以使用深度分组检查(DPI)功能来提供应用感知。
术语“分组流”、“流量流”或简单的“流”指代来自特定的源设备或端点并且被发送给特定的目的地设备或端点的分组集合。分组的单个流可以由5元组标识:例如,<源网络地址,目的地网络地址,源端口,目的地端口,协议>。该5元组一般标识与接收到的分组相对应的分组流。n元组指代从5元组抽取的任何n个项目。例如,用于分组的2元组可以指代用于分组的<源网络地址,目的地网络地址>或<源网络地址,源端口>的组合。
服务链由一个或多个服务的有序列表组成,并且通过针对该服务的一个或多个服务实例将每个服务应用于分组流。PNF实例和VNF实例是服务实例的示例。服务器12包括一个或多个虚拟执行元件以执行服务实例28、29和30。服务器12可以表示也将服务实例28、29和30直接执行为裸金属服务器。术语“服务机器”指代可以执行服务实例并且包含容器、VM和裸金属服务器的任何物理或虚拟设备。服务实例28、29和30表示不同类型的网络功能。例如,服务实例28可以表示防火墙实例,服务实例29可以表示高速缓存实例,并且服务实例30可以表示WAN优化实例。服务链可以包括在不同的数据中心中执行的服务实例,并且在这种情况下,被映射到这些服务的分组流在数据中心10和一个或多个其它数据中心之间遍历服务提供者网络7。
每个服务器12可以表示被配置为根据本文描述的技术操作的计算设备,诸如,基于x86处理器的服务器。服务器12可以为NFV架构提供网络功能虚拟化基础设施(NFVI)。
服务器12、16中的任何服务器可以通过将服务器的资源虚拟化来配置有虚拟执行元件以在服务器上执行的一个或多个过程(应用)之间提供隔离。“基于管理程序的”或“硬件级”或“平台”虚拟化指代创建各自包括用于执行一个或多个过程的客户操作系统的虚拟机。一般,虚拟机提供虚拟化/客户操作系统以用于在隔离的虚拟环境中执行应用。因为通过主机服务器的物理硬件将虚拟机虚拟化,所以执行应用与主机的硬件和其它虚拟机两者隔离。每个虚拟机可以被配置有一个或多个虚拟网络接口以用于在对应的虚拟网络上通信。
虚拟网络是在物理网络之上实现的逻辑构造。虚拟网络可以被用来取代基于VLAN的隔离,并且在虚拟化数据中心(例如,数据中心10)中提供多租户。每个租户或应用可以具有一个或多个虚拟网络。除非由安全策略明确允许,否则每个虚拟网络都可以与所有其它虚拟网络隔离。
虚拟网络可以使用在系统8中由网关14表示的数据中心10边缘路由器来连接至物理多协议标签交换(MPLS)层3虚拟私有网络(L3VPN)和以太网虚拟私有网络(EVPN)网络,并且跨其扩展。虚拟网络也可以被用来实现网络功能虚拟化(NFV)和服务链。
虚拟网络可以使用各种机制来实现。例如,每个虚拟网络可以被实现为虚拟局域网(VLAN)、虚拟私有网络(VPN)等。虚拟网络也可以使用两个网络来实现,即,由数据中心10的交换结构(并且在一些情况下在数据中心10外部延伸)组成的物理底层网络以及虚拟覆盖网络。物理底层网络的作用是提供“IP结构”,该IP结构向任何其它物理设备(诸如,服务器12、16)提供与任何物理设备(服务器、存储设备、路由器或交换机)的单播IP连接性。底层网络可以向网络中的任何其它点提供与网络中的任何点的统一的低延迟、非阻塞、高带宽连接性。
如下面相对于虚拟路由器21A进一步描述的,在虚拟化服务器12的内核或管理程序中运行的虚拟路由器使用它们之间的动态“隧道”的网格来在物理底层网络之上创建虚拟覆盖网络。例如,这些覆盖隧道可以是通过GRE/UDP隧道或VXLAN隧道或NVGRE隧道的MPLS。底层物理路由器和交换机可以不包含针对虚拟机或其它虚拟执行元件的任何每租户状态,诸如,任何介质接入控制(MAC)地址、IP地址或策略。例如,底层物理路由器和交换机的转发表可以仅包含物理服务器12、16的IP前缀或MAC地址。(将虚拟网络连接至物理网络的网关路由器或交换机是例外,并且可以包含租户MAC或IP地址)。
服务器12、16的虚拟路由器(“v路由器(vRouter)”)21通常包含每租户状态。例如,它们可以每个虚拟网络都包含分离的转发表(路由实例)。该转发表包含虚拟机或其它虚拟执行元件(例如,容器的群聚)的IP前缀(在层3覆盖的情况下)或MAC地址(在层2覆盖的情况下)。没有单个虚拟路由器21需要将针对所有虚拟机的所有IP前缀或所有MAC地址包含在整个数据中心中。给定的虚拟路由器21仅需要包含本地存在于服务器12上的那些路由实例(即,那些路由实例具有存在于服务器12上的至少一个虚拟执行元件)。
网络控制器24或物理网关路由器(或交换机)的控制平面节点之间的控制平面协议可以是BGP(并且可以是用于管理的Netconf)。这是也可以被用于MPLS L3VPN和MPLSEVPN的相同控制平面协议。例如,网络控制器24与虚拟路由器21之间的协议可以基于XMPP。通过XMPP交换的消息的模式可以符合Mackie等人于2016年12月15日发表的draft-ietf-l3vpn-end-system-06“BGP-Signaled End-System IP/VPNs”,其以整体内容通过引用并入本文。
“基于容器的”或“操作系统”虚拟化指代操作系统的虚拟化以在单个机器(虚拟或物理的)上运行多个隔离系统。这种隔离系统表示容器,诸如,由开源DOCKER容器应用或由CoreOS Rkt(“Rocket”)提供的那些容器。与虚拟机一样,每个容器是虚拟化的并且可以保持与主机机器和其它容器隔离。然而,不同于虚拟机,每个容器可以省略单独的操作系统,并且仅提供应用套件和应用特定库。一般,容器被主机机器执行为隔离的用户空间实例,并且可以与在主机机器上执行的其它容器共享操作系统和公共库。因此,与虚拟机相比,容器可能需要更少的处理功率、存储和网络资源。一个或多个容器的组可以被配置为共享一个或多个虚拟网络接口以用于在对应的虚拟网络上通信。
在一些示例中,容器由它们的主机内核管理以允许资源(CPU、存储器、块I/O、网络等)的限制和优先,而不需要启动任何虚拟机,在一些情况下,使用允许将应用(例如,给定容器)的视图与操作环境完全隔离的命名空间隔离功能性,包括过程树、网络、用户标识符和安装的文件系统。在一些示例中,可以根据Linux容器(LXC)、用于使用单个Linux内核在控制主机上运行多个隔离的Linux系统(容器)的操作系统级虚拟化方法来部署容器。LXC是用于在单个控制主机(LXC主机)上运行多个隔离的Linux系统(容器)的操作系统级虚拟化方法。LXC不使用虚拟机(尽管LXC可以由虚拟机托管)。相反,LXC使用具有它自己的CPU、存储器、块I/O、网络和/或其它资源空间的虚拟环境。LXC资源控制机制由LXC主机上的Linux内核中的namespaces和cgroups提供。容器化方法的附加示例包括OpenVZ、FreeBSD虚拟监狱(jail)、AIX工作负载分区和Solaris容器。相应地,如本文所使用的,术语“容器”不仅可以包含LXC型容器,还可以包含虚拟化引擎、虚拟私有服务器、虚拟筒仓或虚拟监狱中的任何一个或多个。
服务器12、16托管针对一个或多个虚拟网络的虚拟网络端点,其通过在此处由IP结构20和交换结构14表示的物理网络操作。尽管主要相对于基于数据中心的交换网络进行描述,但是诸如服务提供者网络7等其它物理网络可以作为一个或多个虚拟网络的基础。服务器12、16指代服务器12和服务器16。
每个服务器12、16可以为被配置在使服务器12、16互连的物理网络中的一个或多个虚拟网络托管各自具有至少一个虚拟网络端点的一个或多个虚拟执行元件。针对虚拟网络的虚拟网络端点可以表示共享针对虚拟网络的虚拟网络接口的一个或多个虚拟执行元件。例如,虚拟网络端点可以是虚拟机、一个或多个容器的集合(例如,群聚)或(多个)另外的其它虚拟执行元件,诸如,针对虚拟网络的层3端点。术语“虚拟执行元件”包含虚拟机、容器和为应用提供至少部分独立的执行环境的其它虚拟化计算资源。术语“虚拟执行元件”也可以包含一个或多个容器的群聚。服务器12、16不需要托管虚拟执行元件或虚拟网络端点来执行虚拟路由器21。
如图1所示,服务器12B以两个服务实例28和29的形式托管两个虚拟网络端点,该两个服务实例28和29可以各自由不同的虚拟机或容器集合执行。同样地,服务器12N以服务实例29的形式托管一个虚拟网络端点,该服务实例29可以由虚拟机或容器集合执行。
然而,在服务器12的硬件资源限制的情况下,服务器12、16可以执行尽可能多的虚拟执行元件。每个虚拟网络端点可以使用一个或多个虚拟网络接口来执行分组I/O或以其它方式处理分组。例如,虚拟网络端点可以使用由服务器12、16的网络接口卡支持的一个虚拟硬件组件(例如,SR-IOV虚拟功能)来执行分组I/O并且在与交换结构的交换机的一个或多个通信链路上接收/发送分组。下面描述了虚拟网络接口的其它示例。
服务器12、16各自包括至少一个网络接口卡(NIC)(未在图1中示出),该至少一个网络接口卡各自包括至少一个接口以通过通信链路与数据中心10交换结构的交换机交换分组。任何NIC都可以为虚拟化输入/输出(I/O)提供一个或多个虚拟硬件组件。针对I/O的虚拟硬件组件可以是物理NIC的虚拟化(“物理功能”)。例如,在外围组件接口特殊兴趣小组SR-IOV规范中描述的单根I/O虚拟化(SR-IOV)中,将网络接口卡(或“网络适配器”)的PCIe物理功能虚拟化以将一个或多个虚拟网络接口呈现为“虚拟功能”以供在服务器12、16上执行的相应虚拟网络端点使用。通过这种方式,虚拟网络端点可以共享相同的PCIe物理硬件资源,并且虚拟功能是虚拟硬件组件的示例。作为另一示例,一个或多个服务器12、16可以实现Virtio(可用于例如Linux操作系统的半虚拟化框架),其将模仿的NIC功能性提供为一种类型的虚拟硬件组件以向虚拟网络端点提供虚拟网络接口。作为另一示例,一个或多个服务器12、16可以实现开放v交换机(vSwitch)以在针对所托管的虚拟机的一个或多个虚拟NIC(vNIC)之间执行分布式的虚拟多层交换,其中,这种vNIC还可以表示一种类型的虚拟硬件组件,其向虚拟网络端点提供虚拟网络接口。在一些实例中,虚拟硬件组件是虚拟I/O(例如,NIC)组件。在一些实例中,虚拟硬件组件是SR-IOV虚拟功能。在一些示例中,服务器12、16中的任何服务器都可以实现Linux桥接器,其模仿硬件桥接器并且在服务器的虚拟网络接口之间或者在服务器的虚拟网络接口与服务器的物理网络接口之间转发分组。针对由服务器托管的容器的Docker实现,在服务器上执行的在容器之间交换分组的Linux桥接器或其它操作系统桥接器可以称为“Docker桥接器”。本文所使用的术语“虚拟路由器”可以包含开放v交换机(OVS)、OVS桥接器、Linux桥接器、Docker桥接器或位于主机设备上并且在一个或多个虚拟网络的虚拟网络端点之间执行交换、桥接或路由分组的其它设备和/或软件,其中,虚拟网络端点由服务器12、16中的一个或多个托管。
任何NIC都可以包括内部设备交换机以在与NIC相关联的虚拟硬件组件之间交换数据。例如,针对支持SR-IOV的NIC,内部设备交换机可以是虚拟以太网桥接器(VEB)以在SR-IOV虚拟功能之间交换,并且相应地,在被配置为使用SR-IOV虚拟功能的端点之间交换,其中,每个端点都可以包括客户操作系统。内部设备交换机可以备选地被称为NIC交换机,或者针对SR-IOV实现,被称为SR-IOV NIC交换机。与NIC相关联的虚拟硬件组件可以与层2目的地地址相关联,该层2目的地地址可以由NIC或负责配置NIC的软件过程分配。物理硬件组件(或用于SR-IOV实现的“物理功能”)也与层2目的地地址相关联。
为了在与NIC相关联的虚拟硬件组件之间交换数据,内部设备交换机可以执行层2转发以交换或桥接虚拟硬件组件和针对NIC的物理硬件组件之间的层2分组。每个虚拟硬件组件都可以位于用于使用针对I/O的虚拟硬件组件的虚拟网络端点的针对虚拟网络的虚拟局域网(VLAN)上。
服务器12、16中的一个或多个可以各自包括虚拟路由器21,该虚拟路由器21针对数据中心10内的对应虚拟网络执行一个或多个路由实例,以提供虚拟网络接口并且在虚拟网络端点之间路由发送分组。每个路由实例可以与网络转发表相关联。每个路由实例可以表示针对互联网协议虚拟私有网络(IP-VPN)的虚拟路由和转发实例(VRF)。例如,服务器12B的虚拟路由器21从数据中心10的底层物理网络交换结构接收到的分组可以包括外部报头以允许物理网络结构将有效负载或“内部分组”隧道传送给针对执行虚拟路由器的服务器12B的NIC的物理网络地址。外部报头不仅可以包括服务器12B的NIC的物理网络地址,还可以包括标识其中一个虚拟网络以及由服务器12B的虚拟路由器21执行的对应路由实例的虚拟网络标识符,诸如,VxLAN标记或多协议标签交换(MPLS)标签。内部分组包括具有目的地网络地址的内部报头,该目的地网络地址符合针对由虚拟网络标识符标识的虚拟网络的虚拟网络寻址空间。
虚拟路由器21终止虚拟网络覆盖隧道并基于针对分组的隧道封装报头确定针对接收到的分组的虚拟网络,并且将分组转发给针对分组的适当的目的地虚拟网络端点。对于服务器12B,例如,针对从由服务器12B托管的虚拟网络端点出站的每个分组,虚拟路由器21附接指示针对分组的虚拟网络的隧道封装报头以生成封装的或“隧道”分组,并且虚拟路由器21经由用于虚拟网络的覆盖隧道将封装的分组输出到物理目的地主机,诸如,服务器12、16中的另一个。如本文所使用的,虚拟路由器21可以执行隧道端点的操作以封装来自虚拟网络端点的内部分组以生成隧道分组并且解封装隧道分组以获得用于路由发送到其它虚拟网络端点的内部分组。
计算基础设施8实现自动化平台以用于跨服务器12、16自动部署、扩展和操作虚拟执行元件以提供用于执行应用工作负载和服务的虚拟化基础设施。在一些示例中,该平台可以是自动部署、扩展和操作容器以提供以容器为中心的基础设施的容器编排平台。在一些示例中,该平台可以是自动部署、扩展和操作容器以提供以VM为中心的基础设施的虚拟机编排平台。该平台可以提供容器基础设施和VM基础设施两者。
在虚拟化计算基础设施的上下文中,“编排”一般指代对可由编排平台访问的主机服务器提供、调度和管理虚拟执行元件和/或在这种虚拟执行元件上执行的应用和服务。具体地,容器编排允许容器协调并且指代由容器编排平台对主机服务器部署、管理、扩展和配置例如容器。VM编排允许VM协调并且指代由容器编排平台对主机服务器部署、管理、扩展和配置例如容器。编排平台的示例实例包括Kubernetes、Docker swarm、Mesos/Marathon、OpenShift、OpenStack、VMware和Amazon ECS。
计算基础设施8的自动化平台的元件至少包括服务器12、编排器23和网络控制器24。可以使用基于簇的框架来将虚拟执行元件部署到虚拟化环境,在基于簇的框架中,簇的簇主节点管理容器对于簇的一个或多个簇从节点的部署和操作。本文所使用的术语“主节点”和“从节点”包含用于类似设备的不同编排平台术语,这些不同编排平台术语区分簇的主要管理元件和托管簇的设备的主要虚拟执行元件。例如,Kubernetes平台使用术语“簇主节点(cluster master)”和“从节点”,而Docker Swarm平台指代簇管理器和簇节点。
编排器23和网络控制器24一起为计算基础设施8实现整体控制器。编排器23和网络控制器24可以在分离的计算设备上执行,在相同计算设备上执行,或者各自分布以用于由多个计算设备执行。即,编排器23和网络控制器24中的每一个可以是在一个或多个计算设备上执行的分布式应用。编排器23和网络控制器24可以实现用于一个或多个簇的相应主节点,该一个或多个簇各自具有由相应服务器12实现的一个或多个从节点。一般,网络控制器24控制数据中心10结构的网络配置以例如在虚拟网络端点之间建立用于分组化通信的一个或多个虚拟网络。网络控制器24提供在逻辑上并且在一些情况下在物理上集中的控制器以用于促进数据中心10内的一个或多个虚拟网络的操作。在一些示例中,网络控制器24可以响应于从编排器23和/或管理员/操作员接收到的配置输入而操作。在美国专利9,898,317中以及在于2014年3月26日提交的标题为“Tunneled Packet Aggregation forVirtual Networks”的美国专利申请第14/226,509号中发现了关于与数据中心10的其它设备或其它软件定义的网络结合操作的网络控制器24的附加信息,它们中的每一个通过引用并入本文,就像在本文中充分陈述的那样。美国专利申请第14/226,509还包括对虚拟路由器(诸如,虚拟路由器21)的进一步的描述。
一般,编排器23控制跨服务器12的簇的虚拟执行元件的部署、扩展和操作,并且提供计算基础设施,该计算基础设施可以包括以容器为中心的计算基础设施和/或以VM为中心的计算基础设施。编排器23以及在一些情况下的网络控制器24可以实现针对一个或多个Kubernetes簇的相应簇主节点。作为示例,Kubernetes是容器管理平台,其跨公共云和私有云提供可移植性,它们中的每一个可以向容器管理平台提供虚拟化基础设施。
例如,群聚是一个或多个逻辑上相关的容器(未在图1中示出)、针对容器的共享存储以及关于如何运行容器的选项的组。群聚在被实例化以用于执行的情况下,可以备选地被称为“群聚副本”。群聚的每个容器是虚拟执行元件的示例并且可以执行服务实例。群聚的容器始终在单个服务器上位于相同位置,共同调度并且在共享上下文中运行。群聚的共享上下文可以是Linux命名空间、cgroups和其它隔离面的集合。在群聚的上下文内,单独的应用可能已经应用了进一步的子隔离。通常,群聚内的容器具有公共IP地址和端口空间,并且能够经由本地主机彼此检测。因为它们具有共享上下文,所以群聚内的容器也使用过程间通信(IPC)来彼此通信。IPC的示例包括SystemV信号量或POSIX共享存储器。一般,作为不同群聚的成员的容器具有不同的IP地址,并且在不存在用于实现该特征的配置的情况下,无法通过IPC通信。相反,作为不同群聚的成员的容器常常经由群聚IP地址彼此通信。
网络控制器24将数据中心10中的一个或多个服务链实例化。网络控制器24为对应的服务创建服务实例28、29、30。网络控制器24的用户可以请求指定针对该服务的服务实例的数目的服务。网络控制器24响应地创建服务器12中的服务实例的数目。网络控制器24可以包括用于动态地改变针对服务的虚拟执行元件的数目的应用编程接口(API)。
网络控制器24可以根据服务上的负载动态地放大/缩小服务实例的数目。网络控制器24可以监测服务的负载,并且当超过某些关键性能指标(KPI)时向外扩展服务。
编排器23可以为服务实例编排启动虚拟执行元件,诸如,虚拟机。编排器23管理服务链形式的应用或复杂网络功能的生命周期,其包含协作执行以将服务应用于分组流的多个虚拟执行元件。编排器的典型功能包括:接收请求以通常经由描述应用中的资源(虚拟机、容器、虚拟存储装置、虚拟网络、虚拟负载平衡器、虚拟数据库等)的语言来编排应用;监测虚拟执行元件的活跃度并且通过旋转新的虚拟执行元件来从故障中恢复;如已经注意到的,监测虚拟执行元件上的负载并且当超过KPI时执行向外扩展(或向内扩展)。通常,在虚拟执行元件中存在代理以允许这些KPI是应用感知的(例如,web服务器的HTTP请求延迟)。示例编排器包括由亚马逊网络服务提供的CloudFormation和CloudWatch、用于OpenStack的Heatand云高计、来自Juniper网络的航迹云/OpenContrail/钨结构、IBM智能云编排器(SCO)、Amdocs网络功能虚拟化编排器(NFVO)和Scarl。
编排器23与网络控制器24接口连接以请求虚拟网络配置,以在服务链的服务实例之间实现网络连接性并且将被映射到服务链的分组流继而引导至服务链的每个服务实例。例如,受策略约束,网络控制器24可以支持用于指定虚拟网络之间的连接的接口。例如,策略规则可以允许被映射到服务链的分组从源虚拟网络流到目的地虚拟网络,同时迫使流量通过一列服务实例。除了针对为租户创建并且分配给租户的虚拟执行元件的任何路由实例之外,网络控制器23可以为服务虚拟执行元件(即,执行服务实例的虚拟执行元件—“服务虚拟机”,其中,虚拟执行元件是虚拟机)创建附加路由实例。网络控制器23可以通过操纵路由目标以影响重要路由并且将路由从虚拟路由器21中的一个路由实例导出到虚拟路由器21中的另一路由实例以及通过操纵路由的下一跳和/或标签(这样路由会从路由实例泄漏到路由实例)来将网络配置为引导流量,以便迫使流量通过路由实例的正确序列以及对应的服务虚拟执行元件的正确序列。在其它示例中,网络控制器24可以使用其它技术以用于配置虚拟化网络基础设施8以在针对服务链的服务实例之间促进流量引导。
在图1的示例中,网络控制器安装具有服务28和服务29的服务链34,其中服务实例由网络控制器24安装。为了提供服务链34扩展,网络控制器24安装服务28和29的多个并行实例。如所图示的,服务器12B和12N各自执行针对服务28的一个服务实例,并且服务器12B、12C和12N各自执行针对服务29的一个服务实例。针对服务链34标记为34的箭头描绘了一个可能路径,该路径可以由被映射到服务链34的分组流采用。未图示的另一可能路径将是从针对在服务器12N上执行的服务28的服务实例到针对在服务器12B上执行的服务29的服务实例。
由虚拟路由器21执行并且被应用于不同的分组流的负载平衡算法使不同的分组流为每个服务针对在各种并行服务实例之间的服务链34采用不同的可能路径。虚拟路由器21执行这种负载平衡算法以执行负载平衡,这可以包括等成本多路径(ECMP)负载平衡。示例负载平衡算法包括哈希函数,诸如MD5,虚拟路由器21通过该哈希函数将分组流的分组的特征(例如,n元组的元素,有时也包括熵标签)映射到针对服务实例的索引,然后将分组流映射到该索引。用于负载平衡的哈希函数可以是对称哈希函数。负载平衡算法可以被应用于针对正向分组流和对应的反向分组流的不同字段,以使负载平衡结果(例如,路径选择)对于正向和反向分组流来说都是相同的。例如,负载平衡算法可以被应用于针对正向分组流的源网络地址以及针对反向分组流的目的地网络地址(这些网络地址值将相等)。可以在不同的虚拟路由器21处以不同方式对负载平衡算法进行播种。
网关14接收分组流31A和反向分组流31B以用于进入数据中心10。针对遍历服务链34的正向分组流31A,由服务器12B执行的虚拟路由器21将负载平衡算法应用于正向分组流31A以将正向分组流31A映射到在服务器12C上执行的服务实例29。因此,分组流31A具有由服务器12B的服务实例28应用然后由服务器12C的服务实例29应用的服务。针对对应于正向分组流31A的在反向方向上遍历服务链34的反向分组流31B,由服务器12C执行的虚拟路由器21可以将反向分组流31B映射到在服务器12B上执行的服务实例28。因此,分组流31B具有由服务器12C的服务实例29应用然后由服务器12B的服务实例28应用的服务。
为了映射反向分组流31B以促进相同的服务实例在服务链34的正向和反向方向上的一致应用,当由服务器12C执行的虚拟路由器21接收到针对分组流31A的初始分组时,虚拟路由器21做出初始负载平衡(例如,ECMP)决策,并且将该决策记录在流表中以促进流亲和性或粘性(即,针对分组流31A的后续分组将采用相同路径)。同时,虚拟路由器21还创建用于反向流的条目以促进流对称。创建用于反向流的条目可以被完成如下:虚拟路由器21在路由实例的转发表中查找有效负载的源IP地址(即,内部IP报头)。这产生一个或多个反向下一跳的集合。如果使用ECMP,则会有多于一个的下一跳。所有这些反向下一跳可以是到服务链34中的先前服务的覆盖隧道。虚拟路由器21然后观察通过哪个覆盖隧道接收到初始分组(例如,通过分析外部IP报头)。如果初始分组到达的隧道是较早确定的所标识的反向下一跳的集合成员,那么虚拟路由器21还创建反向流条目(除了正向流条目之外)。如果针对分组流的后续分组开始通过不同的隧道到达,则虚拟路由器21更新反向流条目(只要它继续满足作为反向下一跳的集合成员的标准)。
根据本公开中描述的技术,可扩展服务平台(SSP)17促进了针对被分配给服务链34的分组流的流对称。SSP 17包括虚拟路由器21的可扩展集合,其执行负载平衡以用于进入服务链34的进入点(在正向方向上)并且进入服务链34的退出点(在反向方向上)。服务器16的虚拟路由器21可以以与服务器12的虚拟路由器21类似的方式来操作,如上所述。
网络控制器24管理SSP 17的部署和操作。网络控制器24接收请求以将服务链34实例化。在一些情况下,该请求是被配置用于虚拟化计算基础设施8的新网络策略。与安装针对服务链34服务的服务实例结合,网络控制器24可以将用于服务链34的入口的服务实例安装至SSP 17,并且还安装用于服务链34的出口的另一服务实例。网络控制器24可以通过限定出针对虚拟化计算基础设施8的新配置状态来安装服务实例。在一些情况下,可以使用将服务实例对象直接链接至端口对象的端口元组对象来安装这些新服务实例中的至少一个。利用端口元组对象,网络控制器24可以创建端口,并且在创建服务实例时传递端口信息。可以在不需要启动服务机器(诸如,在一些情况下是虚拟执行元件)的情况下创建端口。
为了促进针对新服务实例的网络连接性,网络控制器24可以将一个或多个配置消息25发送给服务器16A以限定出针对附加服务实例的一个或多个网络虚拟网络接口。例如,配置消息25可以在服务器16A的虚拟路由器21中为针对服务链34的入口的服务实例配置第一虚拟网络地址。配置消息25可以在服务器16A的虚拟路由器21中为针对服务链34的出口的服务实例配置第二虚拟网络地址。第一虚拟网络地址和第二虚拟网络地址可以是相同地址。
网络控制器24还将配置消息27发送给网关14以将第一虚拟网络地址编程为针对被映射到服务链34的分组流(例如,正向分组流31A)的下一跳地址,并且将第二虚拟网络地址编程为针对在反向方向上被映射到服务链34的分组流(例如,反向分组流31B)的下一跳。结果,网关14应用第一虚拟网络地址下一跳以将进入虚拟化计算基础设施8的正向分组流31A引导至服务器16A,并且网关14还应用第二虚拟网络地址下一跳以将进入虚拟化计算基础设施8的反向分组流31B引导至服务器16A。下一跳可以是单播下一跳。由于针对服务链34的入口服务实例的情况可能是到单个服务器16A和在其上执行的服务实例的单播下一跳而不是例如到多个并行服务实例的ECMP下一跳,因此单播下一跳确保网关14将分组流31A、31B引导至相同虚拟路由器21(即,服务器16A的虚拟路由器21),然后该虚拟路由器21可以应用一致的负载平衡方案来促进针对分组流的正向和反向方向上的流对称,并且至少在一些情况下,促进流粘性。
即,在到服务器16A的服务链34的情况下,由于上述配置,用于入口的服务实例确保将到网关14并且被映射到服务链的正向分组流被引导至SSP 17上的相同服务器16。在再次到服务器16A的服务链34的情况下,用于出口的服务实例确保了网关14将针对被映射到服务链的分组流的对应反向分组流引导至SSP 17上的相同服务器16。附加服务实例还确保了托管针对服务链34的出口服务实例29的服务器12上的虚拟路由器21将被映射到服务链34的分组流引导至服务器16A。
通过这种方式被安装至SSP 17的附加服务实例充当针对服务链34的在入口之前以及在出口之后的一个附加端点。然而,不同于将服务应用于分组流并且可扩展至多个服务实例使得必须发生多个服务实例之间的负载平衡的实际服务实例,每个SSP 17服务实例是单个服务实例并且不被扩展至其它服务器16。
附加服务实例被安装至SSP 17,并且更具体地被安装至针对服务链34的服务器16A,虚拟路由器21A可以应用与由其它虚拟路由器21应用的算法相同的负载平衡算法,以便确定用于服务链34的入口服务实例。因为SSP 17的服务器16的虚拟路由器21应用与针对服务链34的服务实例在其上执行的服务器12的虚拟路由器21相同的负载平衡算法,所以SSP 17可以促进针对正向分组流31A和反向分组流31B的流亲和性和流对称。
将在服务器16A上为针对服务链34的入口的服务实例配置的第一虚拟网络地址映射到服务器16A的虚拟路由器21中的一个或多个服务实例28。映射可以是ECMP下一跳。由于服务器16A在第一虚拟网络地址处接收新分组流(例如,分组流31A),因此虚拟路由器21使用负载平衡算法选择ECMP下一跳中的其中一个路径(例如,到在服务器12B上针对分组流31A执行的服务实例28的路径),并且将针对分组流的分组发送给所选下一跳。
上述的技术优点可以克服依赖网关14对服务链34的入口执行负载平衡的固有缺陷。因为各自执行不同的负载平衡算法的网关14的不同供应者实现可以备选地被用作针对虚拟化计算基础设施的网关,所以用于放置分组流以进入服务链的负载平衡算法可以不同于由服务链内的节点执行以用于为链中的下一服务选择下一节点以及对应的服务实例的负载平衡算法。通过使用由服务器12、16的虚拟路由器21应用的相同的确定性的负载平衡算法沿着服务链在入口处和不同步骤处与虚拟路由器21进行负载平衡,SSP 17可以促进针对正向分组流31A和对应的反向分组流31B的流对称。
网络控制器23可以以针对服务实例应用的类似方式来基于负载管理虚拟路由器21到服务器12的可扩展集合的部署和扩展。在一些情况下,归属于虚拟路由器21的操作可以由在服务器16的虚拟执行元件上执行的服务实例执行。以这种方式,SSP 17可以将针对这些任务的责任从网关14卸载。这可以通过减少网关14瓶颈来提高虚拟计算基础设施内的服务链的可扩展性。
图2是图示了根据本文所描述的技术执行针对虚拟网络的示例虚拟路由器的计算设备的框图。计算设备100可以表示图1的服务器12、16中的任一个或其它设备,诸如,针对虚拟计算基础设施8的示例的任何结构交换机。
计算设备100在该示例中包括系统总线142,该系统总线142耦合计算设备100硬件环境的硬件组件。系统总线142耦合存储器144、网络接口卡(NIC)106A、存储盘107和具有多个处理核108A至108J(统称为“处理核108”)的多核计算环境102。网络接口卡106A包括被配置为使用底层物理网络的链路交换分组的接口。多核计算环境102可以包括任何数目的处理器和任何数目的硬件核,例如,从四个到数千个。每个处理核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可以经由存储器总线(未示出)被连接至表示由核108A、108B可访问的物理地址空间的一个或多个DRAM封装、模块和/或芯片(也未示出)。尽管该物理地址空间可以向存储器144的任何部分的核108A、108B提供最低存储器存取时间,但是存储器144的剩余部分中的至少一些可以由核108A、108B直接可访问。核108中的一个或多个也可以包括L1/L2/L3高速缓存或其组合。针对核108的相应高速缓存为核108提供任何存储介质的最低延迟存储器存取。在一些实例中,计算设备100可以具有单个核。
存储器144、NIC 106A、存储盘107和多核计算环境102为执行虚拟路由器120和一个或多个虚拟机110A至110K(统称为“虚拟机110”)的软件堆栈提供操作环境。虚拟机110可以表示托管图1的服务实例的任何虚拟机的示例实例。相反,在一些实例中,一个或多个虚拟机110可以是容器。虚拟路由器120可以表示图1的任何虚拟路由器21的示例。
计算设备100划分由主存储器144提供的虚拟和/或物理地址空间,并且在虚拟存储器的情况下,通过盘107将其划分为被分配用于运行用户过程的用户空间111以及被保护并且一般无法由用户过程访问的内核空间112。操作系统内核(未在图2中示出)可以在内核空间中执行,并且可以包括例如:Linux、伯克利软件套件(BSD)、另一Unix变体内核、或者从微软公司可获得的Windows服务器操作系统内核。在一些实例中,计算设备100可以执行管理程序以管理虚拟机110(也未在图2中示出)。在图2中图示了示例管理程序31。示例管理程序包括用于Linux内核的基于内核的虚拟机(KVM)、Xen、从VMware可获得的ESXi、从微软可获得的Windows Hyper-V以及其它开源的和专有的管理程序。在一些示例中,利用诸如FIB124等路由信息编程的专用硬件可以执行虚拟路由器120。
Eth0 114A根据软件设备模型表示设备,并且提供用于处理分组以供对应的NIC106A接收/传输的设备驱动器软件例程。由NIC 106A从针对虚拟网络的底层物理网络结构接收到的分组可以包括外部报头以允许物理网络结构将有效负载或“内部分组”隧道传送给针对NIC 106A的物理网络地址。外部报头不仅可以包括物理网络地址,还可以包括标识其中一个虚拟网络以及对应的路由实例122的虚拟网络标识符,诸如,VxLAN标记或多协议标签交换(MPLS)标签。内部分组包括具有目的地网络地址的内部报头,该目的地网络地址符合由虚拟网络标识符标识的针对虚拟网络的虚拟网络寻址空间。例如,虚拟路由器转发平面128可以通过Eth1从NIC 106A接收具有外部报头的分组,该外部报头包括在虚拟路由器转发平面128中与路由实例122A相关联的VxLAN。分组可以具有内部报头,该内部报头具有目的地虚拟网络地址,该目的地虚拟网络地址是经由抽头接口146A接进路由实例122A的VM 110A的目的地地址。
计算设备100可以经由NIC 106A被耦合至物理网络交换结构,该物理网络交换结构包括将交换结构从物理交换机扩展到被耦合至交换结构的物理服务器的软件或“虚拟”路由器(包括虚拟路由器120)的覆盖网络。虚拟路由器可以是由物理服务器(例如,图1的服务器12、16)执行的过程或线程或其组合,该物理服务器动态地创建和管理可用于虚拟网络端点之间的通信的一个或多个虚拟网络。在一个示例中,虚拟路由器使用覆盖网络来实现每个虚拟网络,该覆盖网络提供将端点的虚拟地址与端点在其上正在执行的服务器的物理地址(例如,IP地址)解耦的能力。每个虚拟网络可以使用它自己的寻址和安全方案,并且可以被视为与物理网络及其寻址方案正交。各种技术可以被用来通过物理网络在虚拟网络内和跨虚拟网络运输分组。本文所使用的术语“虚拟路由器”可以包含开放v交换机(OVS)、OVS桥接器、Linux桥接器、Docker桥接器或位于主机设备上并且在一个或多个虚拟网络的虚拟网络端点之间执行交换、桥接或路由发送分组的其它设备和/或软件,其中,虚拟网络端点由服务器12、16中的一个或多个托管。在图2的示例计算设备200中,虚拟路由器120在内核空间112内执行,但是在各种实现中,虚拟路由器120可以在管理程序、主机操作系统、主机应用或虚拟机内执行。
虚拟路由器120可以取代和包含通常被用于群聚202的Kubernetes部署的Linux桥接器/OVS模块的虚拟路由/桥接功能性。虚拟路由器120可以对虚拟网络执行桥接(例如,E-VPN)和路由(例如,L3VPN、IP-VPN)。虚拟路由器120可以执行网络服务,诸如,应用安全策略、NAT、多播、反射和负载平衡。在于2006年2月在互联网工程任务组网络工作组的意见请求4364中发布的“BGP/MPLS IP Virtual Private Networks(VPNs)”中描述了针对IP-VPN的附加细节,其在下文中被称为“RFC 4364”并且以整体内容通过引用并入本文。虚拟路由器120可以表示PE路由器,并且虚拟执行端点可以是在RFC 4364中描述的CE设备的示例。
通常,每个VM 110可以被分配有一个或多个虚拟网络地址以供在相应虚拟网络内使用,其中每个虚拟网络可以与由虚拟路由器120提供的不同虚拟子网相关联。VM 110B可以被分配有它自己的虚拟层三(L3)IP地址,例如,用于发送和接收通信,但是可能不知道VM110B在其上执行的计算设备100的IP地址。因此,虚拟网络地址可以不同于针对底层的物理计算机系统(例如,计算设备100)的逻辑地址。
计算设备100包括虚拟路由器代理104,该虚拟路由器代理104控制针对计算设备100的虚拟网络的覆盖并且协调计算设备100内的数据分组的路由。一般,虚拟路由器代理104与针对虚拟化基础设施的网络控制器24通信,其生成命令来控制创建虚拟网络和配置网络虚拟化端点,诸如计算设备100,并且更具体地,虚拟路由器120以及虚拟网络接口146A至146C。通过基于从网络控制器24接收到的信息配置虚拟路由器120,虚拟路由器代理104可以支持配置网络隔离、基于策略的安全性、网关、源网络地址转换(SNAT)、负载平衡器和用于编排的服务链能力。
在一个示例中,由虚拟网络域内的容器VM 110生成或消耗的网络分组(例如,层三(L3)IP分组或层二(L2)以太网分组)可以被封装在由物理网络运输的另一分组(例如,另一IP或以太网分组)中。在虚拟网络中被运输的分组在本文中可以称为“内部分组”,而物理网络分组在本文中可以称为“外部分组”或“隧道分组”。虚拟网络分组在物理网络分组内的封装和/或解封装可以由虚拟路由器120执行。该功能性在本文中称为隧道传送,并且可以被用来创建一个或多个覆盖网络。除了IPinIP之外,可以被使用的其它示例隧道传送协议包括通过通用路由封装(GRE)的IP、VxLAN、通过GRE的多协议标签交换(MPLS)、通过用户数据报协议(UDP)的MPLS等。虚拟路由器120对来自/指向任何VM 110的分组执行隧道封装/解封装,并且虚拟路由器120可以经由总线242和/或NIC 106A的桥接器与VM 110交换分组。
NIC 106A可以接收隧道分组。虚拟路由器120处理隧道分组以通过隧道封装报头确定针对内部分组的源和目的地端点的虚拟网络。虚拟路由器120可以剥离层2报头和隧道封装报头以仅在内部转发内部分组。隧道封装报头可以包括指示虚拟网络(例如,对应于路由实例122A的虚拟网络)的虚拟网络标识符,诸如VxLAN标记或MPLS标签。路由实例122A可以包括针对内部分组的转发信息。例如,路由实例122A可以将针对内部分组的目的地层3地址映射到虚拟网络接口146A。作为响应,路由实例122A经由虚拟网络接口146A将内部分组转发给VM 110A。
在该示例中,虚拟路由器120包括内核空间112模块:虚拟路由器转发平面128,以及用户空间111模块:虚拟路由器代理104。虚拟路由器转发平面128执行虚拟路由器120的“转发平面”或分组转发功能性,并且虚拟路由器代理104执行虚拟路由器120的“控制平面”功能性。
如上面提到的,网络控制器24可以提供逻辑上集中的控制器以用于促进一个或多个虚拟网络的操作。例如,网络控制器24可以维护路由信息库,例如,存储针对物理网络以及一个或多个覆盖网络的路由信息的一个或多个路由表。虚拟路由器转发平面128包括针对对应的虚拟网络的多个路由实例122A至122C(统称为“路由实例122”,有时也称为虚拟路由和转发实例(VRF))。每个路由实例122包括转发信息库(FIB)124A至124C(统称为“FIB124”)中一个对应的转发信息库和流表126A至126C(统称为“流表126”)中一个对应的流表。尽管图示为分离的数据结构,但是在一些实例中,流表126可以是被实现为单个表的逻辑表或者针对通过虚拟网络标识符(例如,诸如VxLAN标记或MPLS标签等VRF标识符)可标识的相应流表126的条目的其它关联数据结构。FIB 124包括将目的地地址映射到目的地下一跳的查找表。目的地地址可以包括层3网络前缀或层2MAC地址。流表126使得能够将转发策略应用于流。每个流表126包括各自与可以遍历虚拟路由器转发平面128的一个或多个流相匹配的流表条目,并且包括转发策略以应用于匹配流。例如,虚拟路由器转发平面128试图将由路由实例122A处理的分组与流表126A的流表条目中的一个相匹配。如果针对给定分组存在匹配流表条目,则虚拟路由器转发平面128将在策略中被指定的流动作应用于分组。这可以被称为“快路径”分组处理。如果针对分组不存在匹配流表条目,则分组可以表示针对新分组流的初始分组,并且虚拟路由器转发平面128可以请求虚拟路由器代理104将流表条目安装在针对新分组流的流表中。这可以称为针对分组流的初始分组的“慢路径”分组处理,并且在图2中通过慢路径140表示。
在该示例中,虚拟路由器代理104可以是由计算设备100执行的用户空间111过程。虚拟路由器代理104包括配置数据134、虚拟路由和转发实例配置136(“VRF 136”)和策略表138(“策略138”)。虚拟路由器代理104与网络控制器(诸如,图1的网络控制器24)交换控制信息。控制信息可以包括虚拟网络路由、低级配置状态,诸如用于安装至配置数据134、VRF136和策略138的路由实例和转发策略。虚拟路由器代理104也可以报告分析状态,将转发状态安装至虚拟路由器转发平面128的FIB 124,发现VM 110及其属性。如上面提到的,虚拟路由器代理104进一步应用针对遍历虚拟路由器转发平面128的每个新流的第一(初始)分组的慢路径分组处理,并且将对应的流条目安装至针对新流的流表126以便由虚拟路由器转发平面128对流的后续分组进行快路径处理。
根据本公开中描述的技术,计算设备100可以实现可扩展服务平台17。计算设备100可以获得针对用于服务链的入口和出口的新服务实例的配置以及针对新服务实例的相应虚拟网络地址。VM 110B、110C可以表示新服务实例对象,其中虚拟网络接口146B、146C对应于针对新服务实例对象的虚拟网络地址。在一些情况下,VM 110B、110C可以不启动。
FIB 124A将针对用于服务链的入口的服务实例的虚拟网络地址映射到针对服务链中的初始服务的对应并行服务实例的一个或多个下一跳的集合。响应于在针对用于入口的服务实例的虚拟下一地址处接收到正向分组流,虚拟路由器转发平面128应用负载平衡算法来从一个或多个下一跳的集合选择下一跳,并且将该选择记录在流表中以将针对正向分组流的后续分组映射到相同所选下一跳。
计算设备100随后在针对用于服务链的出口的服务实例的虚拟网络地址处接收正向分组流的分组,该虚拟网络地址被配置用于路由实例122B。FIB 124B将针对用于服务链的出口的服务实例的虚拟网络地址映射到网关。虚拟路由器120还为流表112B中的反向分组流创建条目以将反向分组流(即,指向正向分组流的源地址)映射到接收到正向分组流的分组的服务实例。例如,虚拟路由器120可以处理正向分组流的分组以标识托管服务实例的服务器12,并且虚拟路由器120为流表112B中的反向分组流创建条目以标识服务器12。结果,虚拟路由器120使用流表112B中的条目处理针对服务链的反向分组流以将反向分组流引导至所标识的服务器12,因此促进针对被映射到服务链的分组流的流对称。
图3是根据本文所描述的技术的作为针对虚拟化计算基础设施的控制器的实例操作的示例计算设备的框图。计算设备300是用于执行针对虚拟化计算基础设施的编排器23和网络控制器24的一个或多个方面的计算设备的示例实例。图3的计算设备300可以表示被配置为执行针对网络控制器24和编排器23中的至少一个的操作的一个或多个真实或虚拟服务器。如此,在一些实例中,计算设备300可以实现针对相应簇的一个或多个主节点。
尽管图示和描述为由单个计算设备300执行,但是调度器322、API服务器320、网络控制器管理器326、网络控制器324、网络控制器管理器325和配置存储库328可以分布在组成计算系统或硬件/服务器簇的多个计算设备300之间。换言之,多个计算设备300中的每一个可以为调度器322、API服务器320、网络控制器管理器326、网络控制器324、网络控制器管理器325或配置存储库328中的任何一个或多个的一个或多个实例提供硬件操作环境。网络控制器324可以表示图1的网络控制器24的示例实例。调度器322、API服务器320、控制器管理器326和网络控制器管理器325可以实现编排器23的示例实例。网络控制器管理器325可以表示Kubernetes云控制器管理器的示例实现。网络控制器324可以表示网络控制器24的示例实例。
计算设备300在该示例中包括总线342,该总线342耦合计算设备300硬件环境的硬件组件。总线342耦合网络接口卡(NIC)330、存储盘346和一个或多个微处理器310(在下文中为“微处理器310”)。在一些情况下,前侧总线可以耦合微处理器310和存储器设备344。在一些示例中,总线342可以耦合存储器设备344、微处理器310和NIC 330。总线342可以表示外围组件接口(PCI)高速(PCIe)总线。在一些示例中,直接存储器存取(DMA)控制器可以控制被耦合至总线242的组件之间的DMA传输。在一些示例中,被耦合至总线342的组件控制被耦合至总线342的组件之间的DMA传输。
微处理器310可以包括一个或多个处理器,该一个或多个处理器各自包括独立的执行单元以执行符合指令集架构的指令,该指令被存储至存储介质。执行单元可以被实现为分离的集成电路(IC)或者可以在各自使用单个IC(即,芯片微处理器)实现的一个或多个多核处理器(或“众核”处理器)内被组合。
盘346表示计算机可读存储介质,该计算机可读存储介质包括以用于存储信息(诸如,处理器可读指令、数据结构、程序模块或其它数据)的任何方法或技术实现的易失性和/或非易失性介质以及可移除和/或不可移除介质。计算机可读存储介质包括但不限于:随机存取存储器(RAM)、只读存储器(ROM)、EEPROM、闪速存储器、CD-ROM、数字多功能光盘(DVD)或者其它光学存储装置、磁盒、磁带、磁盘存储装置或者其它磁性存储设备、或者可以被用来存储期望信息并且可以由微处理器310访问的任何其它介质。
主存储器344包括一个或多个计算机可读存储介质,该一个或多个计算机可读存储介质可以包括随机存取存储器(RAM),诸如,各种形式的动态RAM(DRAM)(例如,DDR2/DDR3SDRAM)或静态RAM(SRAM)、闪速存储器、或者可以被用来以指令或数据结构的形式携带或存储期望的程序代码和程序数据并且可以由计算机访问的任何其它形式的固定或可移除的存储介质。主存储器344提供由可寻址存储器位置组成的物理地址空间。
网络接口卡(NIC)330包括被配置为使用底层物理网络的链路交换分组的一个或多个接口332。接口332可以包括具有一个或多个网络端口的端口接口卡。NIC 330还可以包括卡上存储器以例如存储分组数据。在NIC 330与被耦合至总线342的其它设备之间的直接存储器存取传输可以从NIC存储器读取/写入到NIC存储器。
存储器344、NIC 330、存储盘346和微处理器310可以为软件堆栈提供操作环境,该软件堆栈包括在内核空间中执行的操作系统内核314。例如,内核314可以表示Linux、伯克利软件套件(BSD)、另一Unix变体内核、或者从微软公司可获得的Windows服务器操作系统内核。在一些实例中,操作系统可以执行管理程序以及由管理程序管理的一个或多个虚拟机。示例管理程序包括用于Linux内核的基于内核的虚拟机(KVM)、Xen、从VMware可获得的ESXi、从微软可获得的Windows Hyper-V以及其它开源的和专有的管理程序。术语管理程序可以包含虚拟机管理器(VMM)。包括内核314的操作系统为用户空间345中的一个或多个过程提供执行环境。内核314包括物理驱动器325以使用网络接口卡230。
计算设备300可以被耦合至包括覆盖网络的物理网络交换结构,该覆盖网络将交换结构从物理交换机扩展到被耦合至交换结构的物理服务器的软件或“虚拟”路由器(诸如,图1的虚拟路由器21和图2的虚拟路由器120)。计算设备300可以使用一个或多个专用虚拟网络来配置簇的从节点。
API服务器320、调度器322、控制器管理器326和配置存储库可以实现针对簇的主节点,并且备选地称为“主组件”。在主组件是Kubernetes主组件的情况下,该簇可以是Kubernetes簇,并且主节点可以是Kubernetes主节点。
API服务器320包括由微处理器310可执行的代码。API服务器320可以是一个或多个计算机过程。例如,API服务器320为对象验证和配置数据,诸如虚拟执行元件(例如,容器的群聚)、服务和复制控制器。服务可以是限定出群聚的逻辑集合以及被用来访问群聚的策略的抽象概念。基于服务定义来选择实现服务的群聚集合。服务可以部分地被实现为或以其它方式包括负载平衡器。API服务器320可以实现代表性状态转移(REST)接口以处理REST操作并且向被存储到配置存储库328的对应簇的共享状态提供前端。API服务器320可以认证和批准请求。API服务器320与其它组件通信以将计算基础设施8中的虚拟执行元件实例化。API服务器320可以表示Kubernetes API服务器。
配置存储库328是用于所有簇数据的后备存储库。簇数据可以包括簇状态和配置数据。配置数据还可以提供用于服务发现的后端和/或提供锁定服务。配置存储库328可以被实现为键值存储库。配置存储库328可以是中心数据库或分布式数据库。配置存储库328可以表示etcd存储库。配置存储库328可以表示Kubernetes配置存储库。
调度器322包括由微处理器310可执行的代码。调度器322可以是一个或多个计算机过程。调度器322监测新创建的或请求的虚拟执行元件(例如,容器的群聚)并且选择虚拟执行元件要在其上运行的从节点。调度器322可以基于资源要求、硬件约束、软件约束、策略约束、位置等选择从节点。调度器322可以表示Kubernetes调度器。
一般,API服务器320可以调用调度器322以调度虚拟执行元件,该虚拟执行元件可以选择从节点并且将用于所选从节点的标识符返回到API服务器320,该API服务器320可以将该标识符与虚拟执行元件相关联地写入到配置存储库328。API服务器320可以调用针对所选从节点的编排代理209,其可以使针对所选从节点的容器引擎208从存储服务器获得虚拟执行元件并且在从节点上创建虚拟执行元件。针对所选从节点的编排代理209可以将针对虚拟执行元件的状态更新至API服务器320,其将该新状态保存到配置存储库328。通过这种方式,计算设备300将计算基础设施8中的新虚拟执行元件实例化。
控制器管理器326包括由微处理器310可执行的代码。控制器管理器326可以是一个或多个计算机过程。控制器管理器326可以嵌入核心控制回路,通过从API服务器320获得通知来监测簇的共享状态。控制器管理器326可能试图将簇的状态朝向期望状态移动。由控制器管理器326管理的示例控制器(未示出)可以包括复制控制器、端点控制器、命名空间控制器和服务账户控制器。控制器管理器326可以执行生命周期功能,诸如,命名空间创建和生命周期、事件垃圾收集、终止的群聚垃圾收集、级联删除垃圾收集、节点垃圾收集等。控制器管理器326可以表示针对Kubernetes簇的Kubernetes控制器管理器。
网络控制器324包括由微处理器310可执行的代码。网络控制器324可以包括一个或多个计算机过程。网络控制器324可以表示图1的网络控制器24的示例实例。网络控制器324可以是逻辑上集中但是物理上分布的软件定义网络(SDN)控制器,其负责提供虚拟化网络的管理、控制和分析功能。特别地,网络控制器324可以是计算基础设施8的逻辑上集中的控制平面和管理平面并且针对一个或多个从节点编排v路由器。
网络控制器324可以为通过网络基础设施操作的计算架构提供云网络。云网络可以包括针对企业或服务提供者的私有云、基础设施即服务(IaaS)以及针对云服务提供者(CSP)的虚拟私有云(VPC)。私有云VPC和IaaS用例可能涉及多租户虚拟化数据中心,诸如,相对于图1所描述的那些。在这种情况下,数据中心中的多个租户共享相同的物理资源(物理服务器、物理存储装置、物理网络)。每个租户被分配有它自己的逻辑资源(虚拟机、容器或其它形式的虚拟执行元件;虚拟存储装置;虚拟网络)。除非安全策略特别允许,否则这些逻辑资源彼此隔离。数据中心中的虚拟网络也可以被互连至物理IP VPN或L2 VPN。
网络控制器324可以向网络提供网络功能虚拟化(NFV),诸如,业务边缘网络、宽带订阅者管理边缘网络和移动边缘网络。NFV涉及虚拟机、容器或其它虚拟执行元件中(而不是物理硬件用具上)的网络功能的编排和管理,诸如,防火墙、入侵检测或预防系统(IDS/IPS)、深度分组检查(DPI)、缓存、广域网(WAN)优化等。该市场中网络服务的虚拟化的主要动因是上市时间和成本优化。
网络控制器324对网络基础设施元件进行编程以创建虚拟网络,并且可以为虚拟网络的针对虚拟网络实例创建接口配置。
在国际申请号PCT/US2013/044378和美国专利申请第14/226,509号(通过引用并入到上文)中发现关于结合数据中心10的其它设备或其它软件定义网络操作的网络控制器24的附加信息。网络控制器324仅是网络控制器的一个示例,并且编排器23可以是用于任何类型的虚拟化计算基础设施的编排器,诸如,基于虚拟机器或容器和/或裸金属服务器的计算基础设施。
网络控制器管理器325包括由微处理器310可执行的代码。网络控制器管理器325可以是一个或多个计算机过程。网络控制器管理器325作为面向编排的元件(例如,调度器322、API服务器320、控制器管理器326和配置存储库328)与网络控制器324之间的接口操作。一般,网络控制器管理器325监测针对新对象(例如,群聚和服务)的簇。网络控制器管理器325可以隔离虚拟网络中的群聚并且将群聚与服务连接。
网络控制器管理器325可以被执行为针对簇的主节点的容器。在一些情况下,使用网络控制器管理器325使得能够禁用从节点的服务代理(例如,Kubernetes kube-代理),以便使用虚拟路由器来实现所有群聚连接性,如本文所描述的。
网络控制器管理器325可以使用针对编排平台的控制器框架来侦听(或以其它方式监测)在API中被限定的对象的变化,并且向这些对象中的一些添加注释。该注释可以是指定对象属性的标签或其它标识符(例如,“虚拟网络绿色”)。网络控制器管理器325可以使用网络控制器324的接口为应用创建网络解决方案以限定出网络对象,诸如,虚拟网络、虚拟网络接口和存取控制策略。网络控制器324可以在计算基础设施中实现网络解决方案,例如,通过在虚拟路由器中配置一个或多个虚拟网络和虚拟网络接口。
根据本公开中描述的技术,网络控制器324配置可扩展服务平台17和网关14以促进针对服务链的流对称。响应于接收到对新服务链的请求,网络控制器324可以为服务链创建新服务实例。除了在请求中为服务链指定的那些服务实例之外,网络控制器324还可以在配置存储库328中以用于针对服务链的入口的服务实例和用于针对服务链的出口的服务实例的形式创建SSP 17中的附加端点。编排平台旋转在配置存储库328中所配置的服务实例以实现虚拟化计算基础设施的预期状态。
网络控制器324创建虚拟网络以用于执行服务链。于2017年4月25日发行的美国专利9,634,936描述了用于使用虚拟网络创建服务链的示例技术,并且以整体内容通过引用并入本文。网络控制器324为服务实例创建虚拟网络地址,并且对托管具有转发信息的虚拟网络地址的SSP 17节点进行编程以用于到达针对服务链的服务实例或网关14,视情况而定。
在图1至图3中图示和/或在本公开中的其它地方图示或描述的各种组件、功能单元和/或模块可以使用驻留在一个或多个计算设备中和/或在一个或多个计算设备处执行的软件、硬件、固件或者硬件、软件和固件的混合来执行所描述的操作。例如,计算设备可以利用多个处理器或多个设备执行这种模块中的一个或多个。计算设备可以将这种模块中的一个或多个执行为在底层硬件上执行的虚拟机。这种模块中的一个或多个可以执行为操作系统或计算平台的一个或多个服务。这种模块中的一个或多个可以执行为计算平台的应用层处的一个或多个可执行程序。在其它示例中,由模块提供的功能性可以由专用硬件设备实现。尽管可以分离地图示被包括在一个或多个存储设备内的某些模块、数据存储库、组件、程序、可执行文件、数据项、功能单元和/或其它项目,但是这种项目中的一个或多个可以被组合并且作为单个模块、组件、程序、可执行文件、数据项或功能单元操作。例如,一个或多个模块或数据存储库可以被组合或者部分地组合,使得它们作为单个模块操作或提供功能性。进一步地,例如,一个或多个模块可以彼此结合操作,使得一个模块充当另一模块的服务或扩展。而且,在存储设备内所图示的每个模块、数据存储库、组件、程序、可执行文件、数据项、功能单元或其它项目可以包括多个组件、子组件、模块、子模块、数据存储库和/或未被图示的其它组件或模块或数据存储库。进一步地,在存储设备内被图示的每个模块、数据存储库、组件、程序、可执行文件、数据项、功能单元或其它项目可以以各种方式来实现。例如,在存储设备内被图示的每个模块、数据存储库、组件、程序、可执行文件、数据项、功能单元或其它项目可以被实现为在计算设备上执行的操作系统的一部分。
图4是根据本公开中描述的技术的虚拟化计算基础设施的框图。在该示例中,服务链330包括服务实例302、304和306。服务实例302由在一个或多个服务器12(未在图4中示出)上执行的并行服务实例302A至302C实现。服务实例304由执行其中一个服务器12的服务实例304A实现。服务实例306由在一个或多个服务器12上执行的并行服务实例306A至306C实现。
根据本文所描述的技术,与编排服务链330结合,编排器23和网络控制器324在SSP17的服务器16A上编排和配置用于服务链330的入口的服务实例310以及用于服务链330的出口的服务实例312。服务实例310、312被配置有针对虚拟网络的对应虚拟网络接口,其将网关14连接至在服务器16A上被配置的对应路由实例。通过服务器16、12的所有转发都由虚拟路由器21(未在图4中示出)执行。
网关14接收正向分组流320,并且应用策略来将分组流320A映射到服务链330和针对服务实例310的虚拟网络接口。网关14将分组流320A转发给托管用于服务链330的入口的服务实例310的服务器16A以及用于服务实例310的虚拟网络接口。服务器16A的虚拟路由器21具有针对服务实例302A至302C的ECMP下一跳,并且应用负载平衡算法来选择服务实例302A。服务器16A的虚拟路由器21在用于分组流320A和用于反向分组流320B的流表中创建条目。针对托管服务实例302A的服务器12的虚拟路由器21以类似方式操作以选择由服务器12托管的服务实例304A,并且针对该服务器的虚拟路由器21以类似方式操作,以此类推,直到针对托管服务实例306B的服务器12的虚拟路由器21将分组流320A转发给托管用于针对服务链330的出口的服务实例312的服务器16A。针对服务器16A的虚拟路由器21将分组流320A转发给网关14以退出虚拟化计算基础设施。
已经针对对应的正向分组流320A记录了针对反向分组流320B的流条目,具有网关14、服务器16和服务器12的虚拟化计算基础设施8以类似方式操作。在图4中从右边移动到左边,网关14(用虚线示出以说明图4中的网关14的两个图示是相同设备)将反向分组流320B转发给用于针对服务链330的出口的服务实例312的虚拟网络接口。然后,尽管在反向方向上,但是该装置沿着针对服务链330的正向分组流320A所选择的相同服务实例来转发反向分组流320B。由网关14映射到服务链330的其它分组流可以采取不同路径,如通过由虚拟路由器21应用的负载平衡算法所确定的。
图5是根据本公开中描述的技术的流程图。出于示例的目的,相对于图1的网络控制器24、SSP 17和服务器12来描述操作,其中,服务器12构成计算基础设施。
网络控制器24接收对服务链的请求,该服务链包括一个或多个服务实例,该一个或多个服务实例将被实例化到至少部分地由网络控制器24控制的计算基础设施(100)。网络控制器24将服务实例安装至计算基础设施以用于通过计算基础设施应用于分组流(102)。网络控制器24可以扩展服务链中的任何服务实例以安装针对该服务实例中的多个并行服务实例。编排器23可以启动服务实例上的虚拟执行元件以应用对应服务,诸如防火墙、NAT、DPI等。
另外,网络控制器24将第一服务实例和第二服务实例作为针对服务链的端点安装至SSP 17(104)。第一服务实例在逻辑上位于网关14与针对服务链的入口服务实例之间。第二服务实例在逻辑上位于针对服务链的出口服务实例与网关14之间。通过这种方式,第一服务实例、服务链服务实例和第二服务实例形成扩展的服务链。网络控制器24可以将第一服务实例和第二服务实例安装至所选服务器16A。SSP 17在针对服务器16A的虚拟路由器21处接收第一服务实例处的正向分组流(106)。网关14可以在将正向分组流映射到服务链并且将由网络控制器24宣布的虚拟网络地址映射到网关14之后将正向分组流引导至第一服务实例,该虚拟网络地址是针对第一服务实例的地址。作为响应,SSP 17选择针对服务链的并行入口服务实例之一,并且将正向分组流发送给所选入口服务实例(108)。
在图1中由服务器12表示的计算基础设施应用服务实例,并且沿着服务实例的服务链转发正向分组流,然后退出正向分组流以将正向分组流引导至第二服务实例,该第二服务实例有效地构成针对服务链的最终端点(110)。针对服务器16A的虚拟路由器21从执行针对服务链的出口服务实例的特定服务器接收第二服务实例处的正向分组流(112)。针对服务器16A的虚拟路由器21针对分组流创建用于反向分组流的流表条目,该流表条目将特定服务器(从其接收到正向分组流)指定为下一跳(114)。在接收到反向分组流时,针对服务器16A的虚拟路由器21基于流表条目来将反向分组流发送给执行针对服务链的出口服务实例的特定服务器(116)。
本文所描述的技术可以在硬件、软件、固件或其任何组合中被实现。被描述为模块、单元或组件的各种特征可以一起被实现在集成逻辑设备中或者分离地实现为离散但可共同操作的逻辑设备或其它硬件设备。在一些情况下,电子电路装置的各种特征可以被实现为一个或多个集成电路设备,诸如,集成电路芯片或芯片组。
如果被实现在硬件中,则本公开可能涉及一种装置,诸如,处理器或集成电路设备,诸如,集成电路芯片或芯片组。备选地或者附加地,如果被实现在软件或固件中,则技术可以至少部分地由计算机可读数据存储介质实现,该计算机可读数据存储介质包括指令,该指令在被执行时使处理器执行上述方法中的一种或多种。例如,计算机可读数据存储介质可以存储这种指令以供处理器执行。
计算机可读介质可以形成计算机程序产品的一部分,该计算机程序产品可以包括封装材料。计算机可读介质可以包括计算机数据存储介质,诸如,随机存取存储器(RAM)、只读存储器(ROM)、非易失性随机存取存储器(NVRAM)、电可擦除可编程只读存储器(EEPROM)、闪速存储器、磁性或光学数据存储介质等。在一些示例中,制品可以包括一种或多种计算机可读存储介质。
在一些示例中,计算机可读存储介质可以包括非瞬态介质。术语“非瞬态”可以指示存储介质并不体现在载波或者传播信号中。在某些示例中,非瞬态存储介质可以存储可以随着时间改变的数据(例如,在RAM或高速缓存中)。
代码或指令可以是由处理电路装置执行的软件和/或固件,该处理电路系统包括一个或多个处理器,诸如,一个或多个数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或者其它等效的集成或离散逻辑电路装置。相应地,本文所使用的术语“处理器”可以指任何前述的结构或者适用于本文所描述的技术的实现的任何其它结构。另外,在一些方面中,可以在软件模块或硬件模块内提供本公开中描述的功能性。
Claims (20)
1.一种用于虚拟化计算基础设施的可扩展服务平台,包括:
虚拟路由器,在所述可扩展服务平台的服务器的处理电路上执行的第一服务实例和第二服务实例,
其中所述虚拟路由器被配置为将正向分组流发送到服务链的入口服务实例集合的入口服务实例,所述正向分组流从针对所述虚拟化计算基础设施的网关设备被接收并且前往所述第一服务实例,所述服务链包括被安装在所述虚拟化计算基础设施的多个服务器上的一个或多个服务实例,
其中所述虚拟路由器被配置为将反向分组流发送到所述服务链的出口服务实例集合的出口服务实例,所述反向分组流从针对所述虚拟化计算基础设施的所述网关设备被接收并且前往所述第二服务实例,所述反向分组流对应于所述正向分组流,
其中所述第一服务实例针对所述服务链的所述入口服务实例集合,并且被配置有用于接收来自所述网关设备的所述正向分组流的第一虚拟网络地址,
其中所述第二服务实例针对所述服务链的所述出口服务实例集合,并且被配置有用于接收来自所述网关设备的所述反向分组流的第二虚拟网络地址。
2.根据权利要求1所述的可扩展服务平台,其中所述可扩展服务平台还包括网络控制器,所述网络控制器包括处理电路和存储器设备,其中所述网络控制器被配置为:
将针对所述服务链的所述一个或多个服务实例安装至所述虚拟化计算基础设施的所述多个服务器,所述一个或多个服务实例包括所述入口服务实例和所述出口服务实例;
将针对所述服务链的所述入口的所述第一服务实例安装至所述可扩展服务平台;以及
将针对所述服务链的所述出口的所述第二服务实例安装至所述可扩展服务平台,
其中所述第一服务实例和所述第二服务实例作为针对所述服务链的端点操作以锚定被映射到所述服务链的分组流。
3.根据权利要求1所述的可扩展服务平台,
第一虚拟路由器被配置为通过接收来自所述出口服务实例的所述正向分组流,标识实现所述第二服务实例的针对路由实例的流表并且在所标识的所述流表中创建针对所述反向分组流的流表条目以将所述出口服务实例标识为下一跳,来创建所述流表条目。
4.根据权利要求3所述的可扩展服务平台,
其中所述第一虚拟网络地址和所述第二虚拟网络地址是相同的虚拟网络地址。
5.根据权利要求1所述的可扩展服务平台,其中所述可扩展服务平台还包括网络控制器,所述网络控制器包括处理电路和存储器设备,
其中所述网络控制器被配置为将配置消息发送到所述网关设备,以在所述网关设备中将所述第一虚拟网络地址编程为要被映射到所述服务链的针对一个或多个分组流的下一跳地址。
6.根据权利要求1所述的可扩展服务平台,其中所述可扩展服务平台还包括网络控制器,所述网络控制器包括处理电路和存储器设备,
其中所述网络控制器被配置为响应于在所述可扩展服务平台上检测到超过阈值的负载来添加在附加服务器上执行的附加虚拟路由器以放大所述可扩展服务平台。
7.根据权利要求1所述的可扩展服务平台,其中所述可扩展服务平台还包括网络控制器,所述网络控制器包括处理电路和存储器设备,
其中所述网络控制器被配置为将所述入口服务实例集合安装至所述虚拟化计算基础设施的所述多个服务器,
其中所述虚拟路由器被配置为响应于接收到所述正向分组流的分组,从所述入口服务实例集合中选择所述入口服务实例,并且将所述分组转发到托管所述入口服务实例的所述虚拟化计算基础设施的所述多个服务器中的服务器,并且其中所述虚拟路由器被配置为从托管所述入口服务实例的所述服务器接收所述反向分组流。
8.根据权利要求7所述的可扩展服务平台,
其中所述虚拟路由器被配置为生成具有源网络地址的隧道分组并且将所述隧道分组发送到托管所述入口服务实例的所述服务器,所述源网络地址是所述可扩展服务平台的所述服务器的网络地址。
9.根据权利要求1所述的可扩展服务平台,
其中所述第一服务实例和所述第二服务实例各自映射到不同的端口元组对象,所述端口元组对象各自定义至少一个端口。
10.一种用于虚拟化计算基础设施的可扩展服务平台,其中所述虚拟化计算基础设施包括托管服务链的多个服务实例的多个服务器,所述虚拟化计算基础设施的所述多个服务器包括托管所述服务链的出口服务实例集合的出口服务实例的服务器和托管所述服务链的入口服务实例集合的入口服务实例的服务器,所述可扩展服务平台包括:
针对所述服务链的所述入口服务实例集合执行第一服务实例并且针对所述服务链的所述出口服务实例集合执行第二服务实例的服务器,
其中所述第一服务实例和所述第二服务实例作为针对所述服务链的端点操作以通过以下方式锚定被映射到所述服务链的对应的分组流:在流表中,存储指定托管作为针对正向分组流的分组的下一跳的所述入口服务实例的所述虚拟化计算基础设施的所述服务器的互联网协议IP地址的数据,以及指定托管作为针对与所述正向分组流相对应的反向分组流的分组的下一跳的所述出口服务实例的所述虚拟化计算基础设施的所述服务器的互联网协议IP地址的数据,
其中在所述虚拟化计算基础设施的所述服务器上执行的所述第一服务实例被配置有用于接收来自网关设备的所述正向分组流的第一虚拟网络地址,
其中在所述虚拟化计算基础设施的所述服务器上执行的所述第二服务实例被配置有用于接收来自所述网关设备的所述反向分组流的第二虚拟网络地址。
11.根据权利要求10所述的可扩展服务平台,其中所述可扩展服务平台还包括网络控制器,所述网络控制器包括处理电路和存储器设备,其中所述网络控制器被配置为:
将所述服务链的所述多个服务实例安装至所述虚拟化计算基础设施的所述多个服务器;
将针对所述服务链的所述入口服务实例集合的所述第一服务实例安装至所述可扩展服务平台的所述服务器;以及
将针对所述服务链的所述出口服务实例集合的所述第二服务实例安装至所述可扩展服务平台的所述服务器。
12.根据权利要求11所述的可扩展服务平台,
其中所述第一服务实例和所述第二服务实例各自映射到不同的端口元组对象,所述端口元组对象各自定义至少一个端口。
13.根据权利要求10所述的可扩展服务平台,
其中所述可扩展服务平台包括在所述可扩展服务平台的一个或多个服务器上执行的一个或多个虚拟路由器。
14.根据权利要求13所述的可扩展服务平台,其中所述可扩展服务平台还包括网络控制器,所述网络控制器包括处理电路和存储器设备,
其中所述网络控制器被配置为响应于在所述可扩展服务平台上检测到超过阈值的负载来添加在所述可扩展服务平台的附加服务器上执行的附加虚拟路由器以放大所述可扩展服务平台。
15.根据权利要求13所述的可扩展服务平台,
其中所述一个或多个虚拟路由器中的虚拟路由器被配置为响应于接收到所述正向分组流的分组,从并行服务实例集合中选择所述入口服务实例,并且将所述分组转发到托管所述入口服务实例的所述虚拟化计算基础设施的所述多个服务器中的服务器,
其中所述虚拟路由器被配置为从托管所述入口服务实例的所述虚拟化计算基础设施的所述多个服务器中的所述服务器接收所述反向分组流,
其中所述虚拟路由器由所述可扩展服务平台的所述一个或多个服务器中的服务器托管,以及
其中所述虚拟路由器被配置为生成具有源网络地址的隧道分组并且将所述隧道分组发送到托管所述入口服务实例的所述虚拟化计算基础设施的所述多个服务器中的所述服务器,所述源网络地址是托管所述虚拟路由器的所述可扩展服务平台的所述服务器的网络地址。
16.一种用于虚拟化计算基础设施的网络控制器,所述网络控制器包括被耦合至存储器的处理电路,其中所述网络控制器被配置为:
将针对服务链的入口服务实例集合的第一服务实例和针对所述服务链的出口服务实例集合的第二服务实例安装到可扩展服务平台的服务器,其中所述第一服务实例和所述第二服务实例作为针对所述服务链的端点操作以锚定被映射到所述服务链的分组流;
利用具有第一虚拟网络地址的第一虚拟网络接口配置所述第一服务实例,以及利用具有第二虚拟网络地址的第二虚拟网络接口配置所述第二服务实例;以及
将配置消息发送到针对所述虚拟化计算基础设施的网关设备,以在所述网关设备中将所述第一虚拟网络地址编程为要被映射到所述服务链的针对所述分组流的下一跳地址。
17.根据权利要求16所述的网络控制器,还被配置为将所述服务链的所述出口服务实例集合安装至所述虚拟化计算基础设施的服务器。
18.根据权利要求17所述的网络控制器,其中所述可扩展服务平台包括在所述可扩展服务平台的一个或多个服务器上执行的一个或多个虚拟路由器,其中所述可扩展服务平台从所述网关设备接收正向分组流并且将所述正向分组流隧道传输到托管所述服务链的所述入口服务实例集合中的入口服务实例的所述虚拟化计算基础设施的服务器。
19.根据权利要求18所述的网络控制器,其中所述一个或多个虚拟路由器被配置为基于流表条目将反向分组流转发到托管所述服务链的所述出口服务实例集合中的所述出口服务实例的所述虚拟化计算基础设施的所述服务器,
其中所述流表条目指定所述虚拟化计算基础设施的所述服务器的互联网协议IP地址,所述虚拟化计算基础设施的所述服务器将所述出口服务实例托管为针对所述反向分组流的下一跳。
20.根据权利要求19所述的网络控制器,其中所述一个或多个虚拟路由器被配置为在所述一个或多个虚拟路由器响应于接收到针对所述正向分组流的分组并且基于针对所述正向分组流的所述分组的外部互联网协议IP报头来创建所述流表条目之后,基于所述流表条目来将所述反向分组流转发到托管所述服务链的所述出口服务实例集合中的所述出口服务实例的所述虚拟化计算基础设施的所述服务器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210472360.6A CN114745332B (zh) | 2018-12-21 | 2019-06-27 | 促进计算机网络中的服务链的流对称的系统和网络控制器 |
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/230,668 | 2018-12-21 | ||
US16/230,668 US10855588B2 (en) | 2018-12-21 | 2018-12-21 | Facilitating flow symmetry for service chains in a computer network |
CN202210472360.6A CN114745332B (zh) | 2018-12-21 | 2019-06-27 | 促进计算机网络中的服务链的流对称的系统和网络控制器 |
CN201910569529.8A CN111355666B (zh) | 2018-12-21 | 2019-06-27 | 促进针对计算机网络中的服务链的流对称的方法和网络控制器 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910569529.8A Division CN111355666B (zh) | 2018-12-21 | 2019-06-27 | 促进针对计算机网络中的服务链的流对称的方法和网络控制器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114745332A CN114745332A (zh) | 2022-07-12 |
CN114745332B true CN114745332B (zh) | 2023-12-08 |
Family
ID=66998119
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210472360.6A Active CN114745332B (zh) | 2018-12-21 | 2019-06-27 | 促进计算机网络中的服务链的流对称的系统和网络控制器 |
CN201910569529.8A Active CN111355666B (zh) | 2018-12-21 | 2019-06-27 | 促进针对计算机网络中的服务链的流对称的方法和网络控制器 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910569529.8A Active CN111355666B (zh) | 2018-12-21 | 2019-06-27 | 促进针对计算机网络中的服务链的流对称的方法和网络控制器 |
Country Status (3)
Country | Link |
---|---|
US (2) | US10855588B2 (zh) |
EP (2) | EP4057595A1 (zh) |
CN (2) | CN114745332B (zh) |
Families Citing this family (54)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9225638B2 (en) | 2013-05-09 | 2015-12-29 | Vmware, Inc. | Method and system for service switching using service tags |
US9774537B2 (en) | 2014-09-30 | 2017-09-26 | Nicira, Inc. | Dynamically adjusting load balancing |
US11722367B2 (en) | 2014-09-30 | 2023-08-08 | Nicira, Inc. | Method and apparatus for providing a service with a plurality of service nodes |
US10516568B2 (en) | 2014-09-30 | 2019-12-24 | Nicira, Inc. | Controller driven reconfiguration of a multi-layered application or service model |
US10594743B2 (en) | 2015-04-03 | 2020-03-17 | Nicira, Inc. | Method, apparatus, and system for implementing a content switch |
US10805181B2 (en) | 2017-10-29 | 2020-10-13 | Nicira, Inc. | Service operation chaining |
US11012420B2 (en) | 2017-11-15 | 2021-05-18 | Nicira, Inc. | Third-party service chaining using packet encapsulation in a flow-based forwarding element |
US10797910B2 (en) | 2018-01-26 | 2020-10-06 | Nicira, Inc. | Specifying and utilizing paths through a network |
US10805192B2 (en) | 2018-03-27 | 2020-10-13 | Nicira, Inc. | Detecting failure of layer 2 service using broadcast messages |
CN110661896B (zh) * | 2018-06-29 | 2021-06-22 | 网宿科技股份有限公司 | 一种确定数据流的映射地址的方法及服务器 |
US10944673B2 (en) | 2018-09-02 | 2021-03-09 | Vmware, Inc. | Redirection of data messages at logical network gateway |
US11595250B2 (en) | 2018-09-02 | 2023-02-28 | Vmware, Inc. | Service insertion at logical network gateway |
US11042397B2 (en) | 2019-02-22 | 2021-06-22 | Vmware, Inc. | Providing services with guest VM mobility |
US11895092B2 (en) * | 2019-03-04 | 2024-02-06 | Appgate Cybersecurity, Inc. | Network access controller operation |
CN111865801B (zh) * | 2019-04-24 | 2021-10-22 | 厦门网宿有限公司 | 一种基于Virtio端口传输数据的方法和系统 |
US10848418B1 (en) * | 2019-06-24 | 2020-11-24 | Amazon Technologies, Inc. | Packet processing service extensions at remote premises |
US10996938B2 (en) * | 2019-07-15 | 2021-05-04 | Juniper Networks, Inc. | Automated selection of software images for network devices |
US11038793B2 (en) | 2019-10-15 | 2021-06-15 | Cisco Technology, Inc. | Service assurance of ECMP using virtual network function hashing algorithm |
US11283717B2 (en) | 2019-10-30 | 2022-03-22 | Vmware, Inc. | Distributed fault tolerant service chain |
US11140218B2 (en) | 2019-10-30 | 2021-10-05 | Vmware, Inc. | Distributed service chain across multiple clouds |
US11546208B2 (en) | 2019-12-31 | 2023-01-03 | Vmware, Inc. | Multi-site hybrid networks across cloud environments |
US11223494B2 (en) | 2020-01-13 | 2022-01-11 | Vmware, Inc. | Service insertion for multicast traffic at boundary |
US11153406B2 (en) | 2020-01-20 | 2021-10-19 | Vmware, Inc. | Method of network performance visualization of service function chains |
US11659061B2 (en) | 2020-01-20 | 2023-05-23 | Vmware, Inc. | Method of adjusting service function chains to improve network performance |
US11537476B2 (en) * | 2020-03-25 | 2022-12-27 | Sap Se | Database management system backup and recovery management |
US11368387B2 (en) | 2020-04-06 | 2022-06-21 | Vmware, Inc. | Using router as service node through logical service plane |
US11178041B1 (en) | 2020-07-07 | 2021-11-16 | Juniper Networks, Inc. | Service chaining with physical network functions and virtualized network functions |
US11431621B2 (en) | 2020-07-15 | 2022-08-30 | Verizon Patent And Licensing Inc. | Systems and methods for user plane function (“UPF”) offload at configurable routing fabric |
US11895193B2 (en) | 2020-07-20 | 2024-02-06 | Juniper Networks, Inc. | Data center resource monitoring with managed message load balancing with reordering consideration |
EP3955522B1 (en) * | 2020-08-11 | 2022-12-21 | Deutsche Telekom AG | Method for an operation of a broadband access network of a telecommunications network comprising a central office point of delivery, a central office point of delivery, a program and a computer-readable medium |
CN112364374B (zh) * | 2020-11-04 | 2024-07-26 | 三六零数字安全科技集团有限公司 | Linux平台上文件复制、移动、压缩、解压操作识别方法 |
US11734043B2 (en) | 2020-12-15 | 2023-08-22 | Vmware, Inc. | Providing stateful services in a scalable manner for machines executing on host computers |
US11611625B2 (en) | 2020-12-15 | 2023-03-21 | Vmware, Inc. | Providing stateful services in a scalable manner for machines executing on host computers |
US11824773B2 (en) | 2021-03-30 | 2023-11-21 | Amazon Technologies, Inc. | Dynamic routing for peered virtual routers |
US11601365B2 (en) | 2021-03-30 | 2023-03-07 | Amazon Technologies, Inc. | Wide area networking service using provider network backbone network |
US11310155B1 (en) * | 2021-03-30 | 2022-04-19 | Amazon Technologies, Inc. | Virtual router workload offloading |
CN113094085B (zh) * | 2021-04-13 | 2024-01-19 | 贝壳找房(北京)科技有限公司 | 组件集成方法、装置、计算机可读存储介质及电子设备 |
US12088503B1 (en) * | 2021-04-30 | 2024-09-10 | Aviatrix Systems, Inc. | Ingress gateway with data flow classification functionality |
WO2022232445A2 (en) * | 2021-04-30 | 2022-11-03 | Aviatrix Systems, Inc. | System, classifier and method for network policy-based traffic management of data flows |
CN115412490B (zh) * | 2021-05-28 | 2023-09-26 | 戴尔产品有限公司 | 分组反射系统 |
US11838206B2 (en) | 2021-07-23 | 2023-12-05 | Vmware, Inc. | Edge node with datapath split between pods |
US20230028837A1 (en) * | 2021-07-23 | 2023-01-26 | Vmware, Inc. | Scaling for split-networking datapath |
US12034652B2 (en) * | 2021-10-04 | 2024-07-09 | Juniper Networks, Inc. | Virtual network routers for cloud native software-defined network architectures |
WO2023076010A1 (en) * | 2021-11-01 | 2023-05-04 | Microsoft Technology Licensing, Llc. | Transparent network service chaining |
EP4430813A1 (en) * | 2021-11-10 | 2024-09-18 | Telefonaktiebolaget LM Ericsson (publ) | Service instances, scheduler node and methods for handling load balancing in a communications network |
US11646935B1 (en) * | 2021-12-02 | 2023-05-09 | Charter Communications Operating, Llc | Automated provisioning and configuration for dynamically loaded NFV- and SDN-based networks |
CN114237883A (zh) * | 2021-12-10 | 2022-03-25 | 北京天融信网络安全技术有限公司 | 一种安全服务链创建方法、报文传输方法、装置及设备 |
CN114363433B (zh) * | 2021-12-24 | 2024-06-25 | 山石网科通信技术股份有限公司 | 网络资源的分配方法、装置、存储介质及处理器 |
CN114760246B (zh) * | 2022-03-29 | 2024-05-03 | 浪潮云信息技术股份公司 | 一种服务引流方法、装置及介质 |
CN115550316B (zh) * | 2022-09-06 | 2024-04-16 | 上海浪潮云计算服务有限公司 | 容器化网络系统、容器化ipv6通信方法及装置、介质、设备 |
US12101204B2 (en) * | 2022-09-09 | 2024-09-24 | Juniper Networks, Inc. | Network segmentation for container orchestration platforms |
CN116112572A (zh) * | 2023-01-29 | 2023-05-12 | 中国联合网络通信集团有限公司 | 一种业务处理方法、装置、网络设备及存储介质 |
TWI846404B (zh) * | 2023-03-27 | 2024-06-21 | 國立陽明交通大學 | 容器網路通訊系統及方法 |
US12021743B1 (en) | 2023-03-27 | 2024-06-25 | Amazon Technologies, Inc. | Software-defined multi-network-segment gateways for scalable routing of traffic between customer-premise network segments and cloud-based virtual networks |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107566440A (zh) * | 2016-06-30 | 2018-01-09 | 丛林网络公司 | 软件定义的网络环境中服务的自动发现和自动扩缩 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101202756B (zh) * | 2007-12-20 | 2011-02-02 | 杭州华三通信技术有限公司 | 一种报文处理方法和设备 |
US9898317B2 (en) | 2012-06-06 | 2018-02-20 | Juniper Networks, Inc. | Physical path determination for virtual network packet flows |
US8750288B2 (en) | 2012-06-06 | 2014-06-10 | Juniper Networks, Inc. | Physical path determination for virtual network packet flows |
US9049127B2 (en) * | 2013-03-11 | 2015-06-02 | Cisco Technology, Inc. | Methods and devices for providing service clustering in a trill network |
US9203765B2 (en) | 2013-08-30 | 2015-12-01 | Cisco Technology, Inc. | Flow based network service insertion using a service chain identifier |
US9473394B1 (en) | 2014-01-10 | 2016-10-18 | Juniper Networks, Inc. | Proactive flow table for virtual networks |
US9634936B2 (en) | 2014-06-30 | 2017-04-25 | Juniper Networks, Inc. | Service chaining across multiple networks |
US9455908B2 (en) * | 2014-07-07 | 2016-09-27 | Cisco Technology, Inc. | Bi-directional flow stickiness in a network environment |
US11044203B2 (en) * | 2016-01-19 | 2021-06-22 | Cisco Technology, Inc. | System and method for hosting mobile packet core and value-added services using a software defined network and service chains |
US11277338B2 (en) * | 2016-09-26 | 2022-03-15 | Juniper Networks, Inc. | Distributing service function chain data and service function instance data in a network |
US10462047B2 (en) * | 2017-04-10 | 2019-10-29 | Cisco Technology, Inc. | Service-function chaining using extended service-function chain proxy for service-function offload |
-
2018
- 2018-12-21 US US16/230,668 patent/US10855588B2/en active Active
-
2019
- 2019-06-18 EP EP22169289.0A patent/EP4057595A1/en active Pending
- 2019-06-18 EP EP19180812.0A patent/EP3672169B1/en active Active
- 2019-06-27 CN CN202210472360.6A patent/CN114745332B/zh active Active
- 2019-06-27 CN CN201910569529.8A patent/CN111355666B/zh active Active
-
2020
- 2020-11-23 US US16/949,999 patent/US11329918B2/en active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107566440A (zh) * | 2016-06-30 | 2018-01-09 | 丛林网络公司 | 软件定义的网络环境中服务的自动发现和自动扩缩 |
Non-Patent Citations (5)
Title |
---|
Anh-Vu Vu等.A Network Service Permission Control Platform for Service Function Chaining.2017 International Conference on Information Networking (ICOIN).2017,全文. * |
Sahel Sahhaf等.Scalable Architecture for Service Function Chain Orchestration.2015 Fourth European Workshop on Software Defined Networks.2015,全文. * |
张奇 ; .基于SDN/NFV的安全服务链自动编排部署框架.计算机系统应用.2018,(第03期),全文. * |
徐俭 ; .基于SDN服务链的云平台数据中心安全技术探究.电视工程.2017,(第04期),全文. * |
温曙光 ; 贺鹏 ; 姜海洋 ; 关洪涛 ; 谢高岗 ; .NFCloud:基于OpenContrail的NFV实践.信息通信技术.2016,(01),全文. * |
Also Published As
Publication number | Publication date |
---|---|
US10855588B2 (en) | 2020-12-01 |
CN114745332A (zh) | 2022-07-12 |
US11329918B2 (en) | 2022-05-10 |
CN111355666A (zh) | 2020-06-30 |
EP3672169B1 (en) | 2022-05-18 |
CN111355666B (zh) | 2022-04-19 |
US20200204492A1 (en) | 2020-06-25 |
EP3672169A1 (en) | 2020-06-24 |
US20210075726A1 (en) | 2021-03-11 |
EP4057595A1 (en) | 2022-09-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114745332B (zh) | 促进计算机网络中的服务链的流对称的系统和网络控制器 | |
US12010093B1 (en) | Allocating addresses from pools | |
US10728145B2 (en) | Multiple virtual network interface support for virtual execution elements | |
US11159366B1 (en) | Service chaining for virtual execution elements | |
US11792126B2 (en) | Configuring service load balancers with specified backend virtual networks | |
US11171834B1 (en) | Distributed virtualized computing infrastructure management | |
US11171830B2 (en) | Multiple networks for virtual execution elements | |
US10708082B1 (en) | Unified control plane for nested clusters in a virtualized computing infrastructure | |
US11658933B2 (en) | Dynamically learning media access control and internet protocol addresses | |
US20220334864A1 (en) | Plurality of smart network interface cards on a single compute node | |
US20230079209A1 (en) | Containerized routing protocol process for virtual private networks | |
US20240259311A1 (en) | Automatic policy configuration for packet flows | |
US20240305586A1 (en) | Hybrid data plane for a containerized router | |
EP4075757A1 (en) | A plurality of smart network interface cards on a single compute node | |
US20240179089A1 (en) | Containerized router service chaining for containerized network functions | |
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 |