CN112740628A - 用于容器联网的利用快速重新路由的分段路由 - Google Patents
用于容器联网的利用快速重新路由的分段路由 Download PDFInfo
- Publication number
- CN112740628A CN112740628A CN201980060289.7A CN201980060289A CN112740628A CN 112740628 A CN112740628 A CN 112740628A CN 201980060289 A CN201980060289 A CN 201980060289A CN 112740628 A CN112740628 A CN 112740628A
- Authority
- CN
- China
- Prior art keywords
- segment
- packet
- container
- host
- srv6
- 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.)
- Granted
Links
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/28—Routing or path finding of packets in data switching networks using route fault recovery
-
- 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/02—Topology update or discovery
- H04L45/04—Interdomain routing, e.g. hierarchical routing
-
- 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/22—Alternate routing
-
- 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/34—Source routing
-
- 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
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/09—Mapping addresses
- H04L61/25—Mapping addresses of the same type
- H04L61/2503—Translation of Internet protocol [IP] addresses
- H04L61/256—NAT traversal
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2212/00—Encapsulation of packets
-
- 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/38—Flow based routing
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
系统和方法提供了在容器网络中使用快速重新路由的分段路由(SR)。SR入口可以接收来自第一容器并且去往容器服务的分组。入口可以生成SR分组,该SR分组包括分段列表,该分段列表包括指向第一容器服务主机的第一分段、指向第二服务主机的第二分段、以及指向服务的第三分段。入口可以使用第一分段向与第一主机相对应的第一SR出口转发SR分组。第一出口可以确定第一服务和/或主机是否是可达的。如果第一服务和/或主机是可达的,则第一出口可以向第一主机转发SR分组,或者向服务转发分组。如果第一服务和/或主机不是可达的,则第一出口可以执行快速重新路由,并且使用第二分段向与第二主机相对应的第二SR出口转发SR分组。
Description
相关申请的交叉引用
本申请要求于2018年9月21日提交的第16/138,595号美国非临时专利申请的权益和优先权,该非临时专利申请的标题为“SEGMENT ROUTING WITH FAST REROUTE FORCONTAINER NETWORKING”(用于容器联网的利用快速重新路由的分段路由),其内容据此通过引用被明确地全部并入。
技术领域
本公开的主题总体上涉及电信网络领域,更具体地,涉及用于在容器网络中进行使用快速重新路由的分段路由的系统和方法。
背景技术
网络运营商越来越多地部署容器,用于在持续集成和持续交付(continuousintegration and continuous delivery,CI/CD)环境中开发软件,并在私有网络、公共云、或两者(例如混合云或多云)中运行分布式应用和微服务。容器是操作系统级虚拟化的一种示例。容器可以是独立的执行环境,它们具有自己的隔离的CPU、存储器、输入/输出(I/O)和网络资源,并共享主机操作系统的内核。容器可以彼此隔离,也可以与它们的主机(物理服务器或虚拟服务器)相隔离。例如,它们可以拥有它们自己的文件系统。它们可能无法看到彼此的进程。它们的计算资源(例如,处理、存储、联网等)可以是有界的。容器比虚拟机更易于构建和配置,并且由于容器可以与其底层基础设施解耦并与主机文件系统解耦,因此它们可以是跨各种云和操作系统分布而高度可移植的。然而,容器可能为联网引入附加的复杂性。
附图说明
为了提供对本公开及其特征和优点的更完整的理解,结合附图来参考以下描述,其中:
图1示出了根据一种实施例的网络的示例;
图2示出了根据一种实施例的容器编排平台(container orchestrationplatform)的示例;
图3A和图3B示出了根据一种实施例的分段路由分组的示例;
图4A至图4D示出了根据一种实施例的分段路由的示例;
图5A至图5D示出了根据一种实施例的在容器网荚(pod)不可达的情况下进行使用快速重新路由的分段路由的示例;
图6A至图6F示出了根据一种实施例的分段路由的示例;
图7A至图7E示出了根据一种实施例的在服务器不可达的情况下进行使用快速重新路由的分段路由的示例;
图8示出了根据一种实施例的在容器网荚或主机不可达的情况下用于启用使用快速重新路由的分段路由的过程的示例;并且
图9A和9B示出了根据一些实施例的系统的示例。
具体实施方式
以下阐述的详细描述意在作为对实施例的各种配置的描述,而不意在代表可以实施本公开的主题的唯一配置。附图被并入本文并构成详细描述的一部分。为了提供对本公开的主题的更透彻的理解,详细描述包括具体细节。然而,将清楚并显而易见的是,本公开的主题不限于本文阐述的具体细节,并且可以在没有这些细节的情况下被实施。在一些实例中,以框图形式示出了结构和组件,以避免模糊本公开的主题的概念。
概述
在独立权利要求中陈述了本发明的各方面,并在从属权利要求中陈述了优选特征。一个方面的特征可以单独地或与其他方面相组合地应用于每个方面。
系统和方法提供了当容器或容器集合(例如,网荚)或容器/网荚主机变得不可达时,以快速重新路由进行的分段路由(SR)。SR入口设备(例如,物理或虚拟交换机、路由器或主机)可以接收来自第一主机(例如,物理服务器或虚拟服务器)中的第一容器/网荚并且去往容器服务(例如,容器/网荚的集群)的分组(例如,IPv6)。SR入口设备可以生成SR分组,该SR分组包括分段列表和原始分组。分段列表可以包括指向第二主机的第一分段或分段标识符(SID)、指向第三主机的第二分段或SID、以及指向容器服务的第三分段或SID,其中,第二主机包括服务的第二容器/网荚,第三主机包括服务的第三容器/网荚。SR入口设备可以向与第一分段或SID相对应的第一SR出口设备转发SR分组。第一SR出口设备可以确定第二容器/网荚和/或主机是否可达。如果第二容器/网荚和/或主机是可达的,则第一SR出口设备可以向第二主机转发SR分组,或者向第二容器/网荚转发原始分组(解封装后)。如果第二容器/网荚和/或主机是不可达的,则第一SR出口设备可以执行快速重新路由,并且向与第二分段相对应的第二SR出口设备转发SR分组。
示例实施例
在网络中部署容器的一种方式是利用容器编排平台。容器编排平台可以包括一个或多个主模块(master)(这些主模块可以充当用于网络中容器的控制器),以及可以执行网络工作负载的一个或多个工作节点。容器编排平台还可以支持对可执行相同或相似功能(有时称为容器服务)的容器主机(例如,物理服务器或虚拟服务器)的聚类。容器网络的当前实现方式为每个容器服务分配网络地址(例如,ClusterIP),然后在每个容器主机处安装网络地址转换(Network Address Translation,NAT)规则,以从容器服务地址映射到该容器主机中特定容器或容器网荚的网络地址。一种替代方法可以是在入口主机到出口主机之间通过隧道传输流量,并将容器服务地址保留为隧道中的内部目的地IP地址。本公开的一些实施例可以将IPv6数据平面上的分段路由(Segment Routing over IPv6 data plane,SRv6)用于隧道机制。这可以提供分段路由的各种益处,例如提高的网络简化性、可编程性和可扩缩性、以及灵活性。
分段路由可以使用简单的网络指令来提供对转发路径的控制。此外,分段路由不需要附加的协议,甚至可以在某些部署中移除不必要的协议,以进一步简化网络。
分段路由不需要路径信令,使得只有SR入口设备可能需要维持针对每流的状态。这可以提高网络灵活性,同时降低成本。此外,路径可以被唯一地表述为分段的集合,并且不需要路由注入。由于具有SR能力的设备可以只需要存储其所需的确切路径,因此该架构可以是高度可扩缩的。
SR路径可以基于尽力而为域间可达性(best effort inter-domainreachability),或可以用于服务等级协议(Service Level Agreement,SLA)可达性。分段路由也可以用于沿着网络中任何任意的路径引导流量。这可以允许网络运营商施行低延迟和/或不相交(disjoint)的路径,而不管正常的转发路径如何。SR可以实现这种灵活性,而无需任何附加的信令或中点结构状态。
在容器服务或容器主机变得不可达的情况下,分段路由还可以支持快速重新路由。容器网络的当前实现方式对于检测容器服务和/或容器主机的不可用性和/或对网络进行重新编程方面可能是较慢的。本公开的各种实施例可以使用分段路由对到容器服务的多个分段进行编码,以便在该容器服务和/或容器沿主路由不可达的情况下快速重新路由到辅(secondary)路由,从而克服现有技术的这些缺陷和其他缺陷。
图1示出了用于实现本公开的各种实施例的网络100的示例。应当理解,对于网络100和本文讨论的任何网络,在类似配置或替代配置中可以存在附加的或更少的节点、设备、链路、网络或组件。本文还预期这样的实施例:这些实施例具有不同数量和/或类型的客户端、网络、节点、云组件、服务器、软件组件、设备、虚拟或物理资源、配置、拓扑、服务、电气设备(appliance)、部署、或网络设备。此外,网络100可以包括可以由客户端或租户访问和利用的任何数量或类型的资源。为了清楚和简单起见,本文提供了图示和示例。
网络100可以包括网络结构102、第二层(L2)网络104、L3网络106、网络控制器108、计算资源110A和110B(统称为“110”)、存储资源112、以及L4-L7服务114。网络结构102可以包括脊交换机116A和116B(统称为“116”)以及叶交换机118A、118B、118C、118D和118E(统称为“118”)。在网络结构102中,脊交换机116可以连接到叶交换机118。叶交换机118可以包括访问端口(或非结构端口)和结构端口。结构端口可提供到脊交换机116的上行链路,而访问端口可提供到端点(例如,计算资源110、存储资源112、L4-L7服务等)、内部网络(例如,L2网络104)或外部网络(例如,L3网络106)的连接性。
叶交换机118可以驻留在网络结构102的边缘,并且因此可以表示物理网络边缘。例如,在一些实施例中,叶交换机118D和118E可以作为与位于外部网络106中的边缘路由器120A和120B通信的边界叶交换机进行操作。边界叶交换机118D和118E可以用于将任何类型的外部网络设备、服务(例如,防火墙、深度分组检查器、流量监视器、负载均衡器等)或网络(例如,L3网络106)连接到结构102。
尽管本文将网络结构102图示和描述为叶-脊架构,但是本领域的普通技术人员将容易认识到,可以基于包括任何数据中心或云网络结构的任何网络拓扑来实现各种实施例。实际上,本文设想了其他架构、设计、基础设施和变型。例如,本文公开的原理适用于包括三层(包括核心、聚合和访问级别)、胖树、网格、总线、轴辐式(hub and spoke)等的拓扑。在一些实施例中,叶交换机118可以是根据架顶架构来配置的架顶交换机。在其他实施例中,叶交换机118可以是任何特定拓扑结构中的聚合交换机,例如行尾(end-of-row)或行中(middle-of-row)拓扑。在一些实施例中,叶交换机118也可以使用聚合交换机来实现。
此外,图1所示和本文描述的拓扑易于扩缩,并且可以容纳大量组件以及更复杂的布置和配置。例如,网络可以包括可以在地理上分散或位于相同地理区域中的任何数量的结构102。因此,网络节点可以在任何合适的网络拓扑中被使用,该网络拓扑可以包括互连以形成大型复杂网络的任何数量的服务器、虚拟机或容器、交换机、路由器、电气设备、控制器、网关、或其他节点。节点可以通过采用任何合适的有线或无线连接的一个或多个接口而耦合到其他节点或网络,这为电子通信提供了可行的途径。
网络结构102中的网络通信可以流过叶交换机118。在一些实施例中,叶交换机118可以提供到网络结构102的端点(例如,计算资源110或存储资源112等)访问、服务(例如,L4-L7服务114)访问、内部网络(例如,L2网络104)访问、或外部网络(例如,L3网络106)访问,并且可以将叶交换机118彼此连接。在一些实施例中,叶交换机118可以将端点组(EPG)连接到网络结构102、内部网络(例如,L2网络104)和/或任何外部网络(例如,L3网络106)。EPG是应用或应用组件以及用于实现转发和策略逻辑的层的群组。EPG可以通过使用逻辑应用边界来允许将网络策略、安全性和转发与寻址分开。EPG可以在网络100中用于映射网络中的应用。例如,EPG可以包括网络100中的端点的群组,该群组指示针对应用的连接性和策略。
如所讨论的,计算资源110可以经由叶交换机118连接到网络结构102。例如,计算资源110A可以直接连接到叶交换机118A和118B,其中叶交换机118A和118B可以将计算资源110A连接到网络结构102和/或任何其他叶交换机。计算资源110B和存储资源112可以经由L2网络104连接到叶交换机118B和118C。计算资源110B、存储资源112和L2网络104构成局域网(LAN)。LAN可以通过位于同一一般物理位置(例如,建筑物或校园)的专用私有通信链路来对节点进行连接。
WAN 106可以经由边缘路由器120而连接到叶交换机118D或118E。WAN可以通过长距离通信链路(例如,公共运营商电话线(common carrier telephone line)、光学光路径、同步光网络(synchronous optical networks,SONET)或同步数字体系(synchronousdigital hierarchy,SDH)链路)来连接在地理上分散的节点。LAN和WAN可以包括L2和/或L3网络和端点。
互联网是WAN的示例,互联网连接世界各地的不同网络,并在各种网络上的节点之间提供全局通信。节点通常通过根据预定义协议(例如传输控制协议/互联网协议(TCP/IP))交换离散的数据帧或分组来在网络上进行通信。在这种情境下,协议可以指代定义节点彼此如何交互的一组规则。计算机网络可以通过诸如路由器之类的中间网络节点进一步互连,以扩展每个网络的有效大小。端点可以包括任何通信设备或组件,例如,计算机、服务器、刀片、管理程序、虚拟机、容器、进程(例如,在虚拟机上运行的)、交换机、路由器、网关、主机、设备、外部网络,等等。
在一些实施例中,网络100可以经由WAN 106连接到公共云提供商的外部网络,以用于有时被称为混合云或多云的架构中的附加计算、存储和/或网络资源。混合云可以包括私有网络或云(例如,网络100)与公共云的组合的计算、存储和/或网络资源,以用于执行网络100的运营商的工作负载。多云可以将私有云的计算、存储和/或网络资源与多个公共云提供商的资源相组合。
在该示例中,使用来自Cisco公司的应用策略基础设施控制器(APICTM)来实现网络控制器108。APICTM可以为结构102提供自动化和管理、策略编程、应用部署以及运行状况监视的集中式点。此处,APICTM可以作为复制的同步集群控制器进行操作。在其他实施例中,可以使用其他配置或软件定义的网络(SDN)平台来管理结构102。
计算资源110可以包括主机,所述主机包括物理或裸金属服务器、虚拟机和/或容器,以用于运行网络100的运营商的应用。在一些实施例中,物理服务器可以在其上实例化用于创建和运行一个或多个虚拟机的管理程序。一些虚拟机可以托管一个或多个容器。在其他实施例中,物理服务器可以运行用于托管容器(例如,裸金属容器)的共享内核。在其他实施例中,物理服务器可以运行其他软件以支持其他虚拟分区方法。根据各种实施例的网络可以包括托管任何数量的虚拟机、容器或其他虚拟分区的任何数量的物理服务器。主机也可以包括不具有虚拟机、容器或其他虚拟分区的刀片/物理服务器。
存储资源112可以包括用于存储网络100的运营商的数据的各种技术。存储介质可以包括硬盘驱动器(HDD)、固态驱动器(SSD)、合并了闪存和HDD的混合存储阵列、和/或其他介质。存储资源可以被组织为直接附接存储(DAS)、网络附接存储(NAS)、存储区域网络(SAN)、或其他存储基础设施。
L4-L7服务114可以为网络100提供联网服务,例如网络地址转换(NAT)、防火墙、互联网协议安全性(IPSec)、会话边界控制(SBC)、深度分组检查(DPI)、流量监视、负载均衡等。L4-L7服务114可以作为物理电气设备在硬件中被实现和/或使用通用CPU(例如,虚拟机和/或容器内的虚拟电气设备)在软件中被实现。在该示例中,网络控制器108可以基于由网络运营商定义的策略来提供自动服务插入。控制器108可以使用L4-L7服务图(例如,在一组端点和被指定用于应用的一组网络服务功能之间的服务功能节点的有序集合)将所需的配置和安全策略推送到结构102、L4-L7服务114以及网络100的其他基础设施组件。
如图1所示,容器在现代网络中扮演着越来越重要的角色。可以通过如下操作来使用容器使数据中心现代化:将现有应用打包到容器中,以提高计算资源的利用率并降低成本。由于容器的可移植性,容器还可以简化不同的云迁移策略,例如混合云或多云架构。容器还可以促进现代开发策略(例如,持续集成、交付和部署(CI/CD)),这是因为它们具有隔离的性质并且对快速变化的环境具有鲁棒性。此外,容器在设计上是轻量级的,并且对于启用微服务(无论是构建新的微服务还是将整体应用重构为较小的服务)是理想选择。
图2示出了用于管理网络(例如,网络100)中的容器的容器编排平台200的示例。本领域普通技术人员将理解,对于容器编排平台200以及本公开中所讨论的任何系统,在类似或替代配置中可以有附加的或更少的组件。为了简洁和清楚起见,本公开中提供了图示和示例。其他实施例可以包括不同数量和/或类型的元件,但是本领域的普通技术人员将认识到,这样的变体不必脱离本公开的范围。
在此示例中,容器编排器平台200可以对应于来自Cloud Native Computing的(K8s)系统。是一种开源容器编排系统,用于跨主机集群自动部署、扩缩和管理应用容器。然而,在不脱离本公开的范围的情况下,其他实施例可以部署其他容器编排平台,例如,来自公司的Docker来自Software Foundation的Apache或其他容器编排器。
容器编排平台200可以包括一个或多个集群。集群是计算、存储和联网资源的集合,容器编排平台200可以使用这些资源来运行网络的各种工作负载。每个集群可以包括一个或多个主机(物理服务器和/或虚拟机)。此处,主模块202和工作节点220A和220B(统称为“220”)可以表示单个集群。在该示例中,存在一个主模块202,但是其他实施例可以包括多个主模块以提供高可用性。
主模块202可以提供用于集群的控制平面。主模块202可以负责网荚(一个或多个容器的集合)的全局、集群级调度以及对事件的处置(例如,当需要附加的计算资源时启动新的网荚)。主模块202可以包括应用编程接口(API)服务器204、控制器管理器206、调度器208、和分布式键值(Key Value,KV)存储装置210。主模块组件可以在集群中的任何主机上运行,但通常可以在没有工作节点的相同(物理或虚拟)机器上运行。
API服务器204(例如,kube-apiserver)可以作为控制平面的前端进行操作,并且可以暴露容器编排平台200的API(例如,Kubernetes API)。API服务器204可以是无状态的并且在分布式KV存储装置210中存储数据,因此API服务器204可以水平扩缩(例如,通过部署更多实例来进行扩缩)。
控制器管理器206(例如,kube-controller-manager(kube-控制器-管理器)、cloud-controller-manager(云-控制器-管理器))可以是汇总成一个二进制文件的各种管理器的集合。控制器管理器206可以包括节点控制器、复制控制器、端点控制器、服务控制器、卷(volume)控制器等。节点控制器可以负责当节点出现故障时进行通知以及响应。复制控制器可以负责针对系统中的每个复制控制器维护正确数量的网荚。端点控制器可以填充端点(例如,网荚)。服务控制器可以负责创建、更新和删除网络服务(例如,防火墙、负载均衡、深度分组检查等)。卷控制器可以负责创建、附接和安装卷。
调度器208(例如,kube-scheduler(kube-调度器))可以负责将网荚调度到节点中。这可涉及对以下各项的评估:资源需求、服务需求、硬件/软件策略约束、节点亲和性和反亲和性规范、网荚亲和性和反亲和性规范、数据局部性、期限、以及其他因素。
分布式KV存储装置(例如,etcd)210是高可用性分布式数据存储装置。容器编排平台200可以使用分布式KV存储装置210来存储集群状态信息。在小型、短暂的集群中,KV存储装置210的单个实例可以与其他主模块组件在同一主机上运行,但是对于较大的集群,分布式KV存储装置210可以包括主机的集群(例如,3至5个节点)以实现冗余和高可用性。
工作节点220可以维护运行的网荚,并为容器编排平台200提供运行时(runtime)环境(未显示)。容器运行时可负责运行容器(例如,来自公司的rkt、来自Open Container InitiativeTM的runC、等等)。每个工作节点220可以对应于单个主机,该单个主机可以是物理机或虚拟机。每个工作节点220可以包括代理222(例如,kubelet)和网络接口224(例如,kube proxy、Open vSwitch(OVS)/Contiv netplugin、等等)。
代理222可以在集群中的每个节点220上运行,并确保容器(例如,容器228A、228B、228C等(统称为“228”))在网荚(例如,网荚226A、226B、226C等(统称为“226”))中运行。代理222可以监督与主模块202的通信,包括从API服务器204下载机密、安装卷、报告节点220和每个网荚226的状态。
网荚是容器编排平台200中的工作单元。网荚可以帮助对紧密相关的容器的组进行管理,这些紧密相关的容器可能彼此依赖并且可能需要在同一主机上进行协作以完成它们的任务。每个网荚226可以包括一个或多个容器228。网荚可以被一起调度并在同一机器上运行。每个网荚226中的容器228可以具有相同的IP地址和端口空间;它们可以使用本地主机或标准的进程间通信来进行通信。此外,每个网荚226中的容器228可以具有对托管该网荚的节点220上的共享本地存储装置的访问权限。该共享存储装置可以被安装在每个容器228上。
网络接口224可以负责容器联网,包括每个节点上的低级网络内务、本地服务的反映、TCP和UDP转发、通过环境变量或域名系统(DNS)查找集群IP。在一些实施例中,容器编排平台200可以采用涉及节点220、网荚226和容器228如何彼此交互的联网模型,例如确保:容器可以在没有NAT的情况下与其他容器通信,节点可以在没有NAT的情况下与容器通信(反之亦然),并且容器看到的自己的IP地址与其他容器看到的它的IP地址相同。此联网模型可以在网荚级别分配IP地址,使得网荚内的容器共享IP地址和端口空间。此联网模型还可以使网荚中的容器能够到达本地主机上的其他容器端口。
容器编排平台200可以经由本地文件系统、任何IPC机制或本地主机,在同一节点内启用节点内通信或网荚到网荚通信。容器编排平台200可以支持用于跨节点进行节点间通信或网荚到网荚通信的各种方法,包括L2(交换)、L3(路由)和覆层联网。L2方法可涉及将L2网络附接到节点的物理网络接口控制器(NIC),并且将网荚直接暴露给底层物理网络而无需端口映射。桥接模式可用于使网荚能够内部互连,使得除非是必要情况,否则流量不离开主机。L3方法可不在数据平面中使用覆层,并且网荚到网荚通信可以利用由节点主机和外部网络路由器做出的路由决策通过IP地址而进行。网荚到网荚通信可以利用边界网关协议(BGP)对等互联(peering)来不离开主机,并且针对传出流量使用NAT。覆层方法可以使用这样的虚拟网络:该虚拟网络可以使用隧道技术(例如,虚拟可扩展LAN(VXLAN)、通用路由封装(GRE)、分段路由(SR)等)与底层物理网络解耦。虚拟网络中的网荚可以经由隧道方式找到彼此。此外,L2网络可以彼此隔离,并且L3路由可以用于节点间的网荚到网荚通信。
在一些实施例中,容器编排平台200可以支持标签和选择器。标签是可用于将对象集合(例如,网荚)分组在一起的键值对。标签还可以用于指定可以有意义并且与网络用户相关的对象属性。对象和标签之间可存在NxN关系。每个对象可以具有多个标签,并且每个标签可以应用于不同的对象。对象上的每个标签都可具有唯一键。标签键可以包括前缀和名称。前缀可以是可选的。如果存在前缀,则可以使用正斜杠(/)将前缀与名称分开,并且前缀可以是有效的DNS子域。前缀和名称可以具有指定的最大长度(例如,分别为253个字符和63个字符)。名称可以以字母数字字符(a-z、A-Z、0-9)开始和结束,并且可以在其间包括字母数字字符、点、破折号和下划线。值可以遵循与名称相同的限制。
标签选择器可用于基于对象的标签来选择对象,并且标签选择器可以包括基于相等性的选择器和基于集合的选择器。基于相等性(和不相等性)的选择器可以允许通过键名称或值来选择对象。匹配的对象必须满足指定的相等(=或==)或不相等(!=)运算符。基于集合的选择器可以使能根据值的集合进行的对对象的选择,包括:“在”或“不在”具有“存在的”键的对象集合中的对象。空标签选择器可选择集合中的每个对象。空值标签选择器(可能仅对于可选的选择器字段是可能的)可不选择任何对象。
在一些实施例中,容器编排平台200可以支持容器服务。容器服务是一种抽象概念,它定义了网荚的逻辑集合以及用于访问这些网荚的策略。可以由标签选择器来确定作为容器服务的目标的网荚集合。可以通过DNS或环境变量来发布或发现服务。服务可以具有不同的类型,例如ClusterIP、NodePort、LoadBalancer或ExternalName。ClusterIP可以在集群内部IP上暴露容器服务,使得容器服务可以是只从集群内部可达的。NodePort可以在静态端口处在每个节点的IP上暴露容器服务。可以自动创建NodePort容器服务可路由到的ClusterIP容器服务。可以通过请求<NodeIP>:<NodePort>来从集群外部联系NodePort容器服务。LoadBalancer可以使用云提供商的负载均衡器在外部暴露容器服务。可以自动创建外部负载均衡器路由到的NodePort和ClusterIP容器服务。ExternalName可以将容器服务映射到DNS中指定的规范名称(CNAME)记录的内容。
如所讨论的,容器网络中的控制平面的当前实现方式对于检测容器网荚或节点的过载或故障和/或从过载的或不可达的容器网荚或节点重新路由流量而言可能较慢。但是,通过利用分段路由(SR)、源SR设备(例如,物理或虚拟交换机、路由器或主机等)可以对多个SR路由或策略进行编码,以转发流量并且使得能够在容器网荚或节点发生过载或故障的情况下立即重新路由该流量。
分段路由是一种源路由架构,在该架构中,源选择路径或路由(有时也被称为SR策略)并将该路径或路由编码在分组报头中以作为被称为分段的指令有序列表。分段可以表示拓扑或服务中的任何指令。例如,可以沿着最短路径来从源沿第一分段转发分组到第一分段端点(例如,物理或虚拟交换机、路由器或主机),然后通过最短路径来从第一分段端点沿第二分段转发分组到第二分段端点,依此类推。已针对至少两个数据平面实现了SR:多协议标签交换(MPLS)和IPv6。IPv6数据平面上的分段路由(SRv6)可以通过分段路由报头(SRH)来实现。
图3A示出了SRv6分组300内的SRH 320的示例。SRv6分组300还可以包括有效载荷360和IPv6报头350。SRH 320可以包括下一报头322、报头扩展长度324、路由类型326、剩余分段328、最后条目330、标志332、标签334、基于哈希的消息认证码(HMAC)336、以及分段列表340。下一报头322可以标识紧接在SRH 320之后的报头的类型。报头扩展长度324可以指示SRH 320的长度。路由类型326可以标识特定路由报头变体。剩余分段328可以表示剩余的路由分段的数量(例如,在到达最终目的地之前仍要访问的明确列出的具有SRv6能力的中间设备的数量)。最后条目330可以表示分段列表340的最后元素的索引。标志332可以包括分组元数据,例如,用于从分组中剥离SRH 320的清除标志和其他元数据。标签334可以将分组标记为一类分组或一组分组(例如,共享相同属性集合的分组)的一部分。HMAC信息336可以是可选的,并且可以包括类型(例如1个八位位组)、长度(例如1个八位位组)、保留位(例如2个八位位组)、HMAC键ID(例如4个八位位组)、以及HMAC(例如32个八位位组)。
分段列表340可以包括SRv6分段342A...342N(统称为“342”)的集合。SRv6分段342有时通过其分段标识符(SID)来指代。SRv6分段342可以包括128个位值,该128个位值代表拓扑指令(例如,节点或链路遍历)或运营商定义的指令(例如,虚拟功能)。可以从SR路由或策略的最后一个分段来开始对分段列表340进行编码。即,分段列表的第一个元素(分段列表[0])可以与SR路由或策略的最后一个分段相对应,第二个元素(分段列表[1])可以与SR路由或策略的倒数第二个分段相对应,以此类推。分段列表340可以用于引导分组通过具有给定属性(例如,带宽或时延)的路径以及通过各种网络功能(例如,防火墙、负载均衡器、IPSec等)。
当具有SRv6能力的设备(例如,物理或虚拟交换机、路由器或服务器)将SRH 320添加到分组时,该分组可以由外部IPv6报头(例如IPv6报头350)和SRH 320来封装,并且原始分组可以保持未被修改而作为有效载荷360。该具有SRv6能力的设备可以称为SR入口设备。可以将外部IPv6报头350的目的地地址354设置为第一分段或SID 342,并且可以沿着最短路径向相应的分段端点转发分组。该分段端点可以通过将目的地地址354更新为下一分段并使剩余分段328递减来处理分组。分段列表340的倒数第二个分段的分段端点可以被称为SR出口设备或分段端点。SR出口设备或分段端点可以对内部分组(例如,有效载荷360)进行解封装并且向分组的最终目的地转发分组。
在一些实施例中,可以使用直接或内联(inline)SRH插入来代替封装。在直接或内联SRH插入中,SRH 320可以被直接插入在紧接在IPv6报头350之后。与封装相比,这可以使得开销更少,但在发生网络错误时可能更容易受到破坏。例如,针对通过直接或内联SRH插入而修改的分组生成的互联网控制消息协议(ICMP)消息可以到达该分组的原始源但可能不知道被插入的SRH。
IPv6报头350可以包括源地址352和目的地地址354。源地址352可以标识分组300的源。如所讨论的,目的地地址354可以标识来自分段列表340的下一分段或节点。即使分组300穿过不支持SRv6的设备,IPv6报头350中的目的地地址354也可以允许分组300被路由。目的地地址354可以包括所标识的分段端点或分段的网络前缀。这可以确保分组300被发送到该分段端点或分段。在分组300被分段端点处理之后,分段端点可以向分段列表340中的下一分段转发分组300。当分段端点转发分组时,分段端点可以覆写IPv6报头350上的目的地地址354,以标识下一分段端点或分段。然后,下一分段端点可以基于目的地地址354接收分组300。以这种方式,SRH 320中的分段列表340和IPv6报头350中的目的地地址354可以用于将分组300推送到其最终目的地。
除转发地址外,目的地地址354和/或分段列表340还可以包括要由相关联的分段端点或分段执行的功能或命令(“SR功能”)。SR功能可以在分段列表340的分段342和/或IPv6报头350中直接对要由分段端点采取的动作进行编码。SR功能可由具有SRv6能力的设备在本地执行。
图3B示出了可以如何将SR功能编码在DA 354或分段342内。编码的最高有效位可以组成定位符344,用于将分组路由到特定分段端点。最低有效位可以组成要由分段执行的SR功能346,以及(如果存在的话)针对该功能的参量348(例如32位)。分配给定位符344、SR功能346和参量348的位数可以由每个分段端点在本地确定。例如,一个分段端点可以为定位符344分配80个位,为功能346分配16个位,为参量348分配32个位。另一分段端点可以为定位符344分配64个位,为功能346分配32个位,为参量348分配32个位。
表1陈述了SR功能的示例集合。然而,本领域的普通技术人员将理解,此功能集合并不是穷举的。例如,任何功能都可以附加到本地SID,因为具有SRv6能力的设备可以将SID绑定到可以对分组应用任何复杂功能的本地虚拟机或容器。
表1:示例分段路由功能
图4A至图4D示出了穿过网络结构402(例如,图1的网络结构102)的IPv6分组的示例、以及可以如何使用SRv6来源路由该分组。本领域普通技术人员将理解,对于本文所讨论的任何过程,除非另有说明,否则在各种实施例的范围内可以有附加的、更少的或替代的步骤,这些步骤以类似的或替代顺序执行或并行执行。
图4A示出了由节点410A(例如,图1的计算资源110或图2的工作节点220)内的容器网荚426A(例如,图2的容器网荚226)生成的IPv6分组404A的初始状态,该分组旨在发送到被标记为SVC:svc1的容器服务。分组404A可以包括IPv6报头450A(例如,图3的IPv6报头350),该IPv6报头450A具有与节点410A和网荚426A相对应的源地址(SA)(例如,nodeA:podA)以及与被标记为SVC:svc1的容器服务相对应的目的地地址(DA)。分组404A还可以包括有效载荷460(例如,图3的有效载荷360)。容器网荚426A可以将分组404A发送到节点410A的虚拟交换机424A(例如,图2的网络接口224)。
在此示例中,虚拟交换机424A、424B和424C(统称为“424”)可以是具有SRv6能力的设备。网络结构102中的网络设备(未示出)可以是也可以不是具有SRv6能力的设备。不支持SRv6的网络设备可以被称为非SR运送设备(例如,转发如下IPv6分组的设备:其中,该分组的DA既没有在本地被配置作为分段,也没有在本地被配置作为本地接口)。非SR运送设备既不需要能够处理分段,也不需要能够处理SRH。
在一些实施例中,网络可以将绑定分段或绑定SID(BSID)用于分段路由。BSID可以被绑定到SR策略,该SR策略的实例化可涉及SID的列表。以等于BSID的活跃分段被具有SRv6能力的设备所接收的分组可以被引导到所绑定的SR策略。对BSID的使用可以在需要施行该策略的具有SR能力的设备上实例化该策略(SID列表)。因此,将流量定向到支该策略的具有SR能力的设备可以只需要施加BSID。如果策略改变,这也可意味着只有施加该策略的具有SR能力的设备可能需要被更新。
BSID可以是本地SID或全局SID。如果BSID是本地的,则可以从SR本地块(SRLB)分配BSID。SRLB是具有SRv6能力的设备的本地属性。如果具有SRv6能力的设备参与多个SR域,则针对每个SR域可以有一个SRLB。SRLB可以包括为本地SRv6 SID保留的本地IPv6地址集合。
SR域可以包括参与基于源的路由模型的具有SRv6能力的设备的集合。这些设备可以连接到相同的物理基础设施(例如,服务提供商的网络)。这些设备也可以彼此远程地连接(例如,经由企业虚拟专用网络(VPN)或覆层网络)。如果部署了多个协议实例,则SR域可以包括网络中的所有协议实例。然而,某些部署可以将网络细分为多个SR域,每个域可以包括一个或多个协议实例。
如果BSID是全局的,则可以从SR全局块(SRGB)分配BSID。SRGB是SR域中的全局分段的集合。如果具有SRv6能力的设备参与多个SR域,则针对每个SR域可以有一个SRGB。该SRGB可以包括该SR域中的全局SRv6 SID的集合。
SRv6可以支持各种类型的控制平面,以将具有SRv6能力的设备与BSID相关联,所述各种类型的控制平面包括分布式、集中式或混合式控制平面。在分布式场景中,可以通过路由协议来分配和用信号发送分段,这些路由协议为例如中间系统到中间系统(IS-IS)、开放式最短路径优先(OSPF)、边界网关协议(BGP)等。具有SR能力的设备可以单独决定基于源路由策略来引导分组,并且该具有SR能力的设备可以单独计算源路由策略。
在集中式场景中,可以由一个或多个SR控制器(例如,图1的网络控制器108)分配和实例化分段。(一个或多个)SR控制器可以决定哪些具有SR能力的设备需要基于哪些源路由策略来引导哪些分组,并且(一个或多个)SR控制器可以计算这些源路由策略。(一个或多个)SR控制器可以使用各种技术来对网络进行编程,例如网络配置协议(NETCONF)、路径计算元素协议(PCEP)和BGP等。(一个或多个)SR控制器可以发现哪些SID在哪些具有SR能力的设备处被实例化,以及哪些(例如,存储在SRLB中的)局部标签和(例如,存储在SRGB中的)全局标签的集合在哪个具有SR能力的设备处是可用的。
混合式场景可以用一个或多个集中式控制器来补充基础分布式控制平面。例如,当目的地在内部网关协议(IGP)域之外时,(一个或多个)SR控制器可以代表IGP设备来计算源路由策略。此外,由于主机也可以是SR域的一部分,因此(一个或多个)SR控制器可以通过将策略推送到主机或对来自主机的请求进行响应来通知主机有关这些策略的信息。
图4B示出了与虚拟交换机424A相关联的SR策略410,该SR策略410用于在容器网荚或节点发生故障或过载的情况下提供快速重新路由(FRR)。SR策略410可以包括将容器服务SVC:svc1绑定到分段列表414的BSID 412。如所讨论的,SR策略410可以以各种方式与虚拟交换机424A相关联,例如通过使用路由协议(例如,IS-IS、OSPF、BGP等)的分布式模型、一个或多个集中式网络控制器(例如,图1的网络控制器108)、或混合式方法。
分段列表414可以包括分段或SID(nodeB:End.S、nodeC:End.X.PSP、以及SVC:svc1)。第一分段或SID(nodeB:End.S)可以表示到容器服务SVC:svc1的主SR路径或路由;第二分段或SID(nodeC:End.X.PSP)可以表示到容器服务SVC:svc1的辅SR路径或路由;第三分段或SID(SVC:svc1)可以表示预期目的地。第一分段或SID可以包括定位符(例如,图3B的定位符344)(即nodeB),以及功能(例如,图3B的功能346)(即End.S)。End.S功能可涉及确定分段列表中的最后一个SID是否是可达的。例如,执行End.S功能的分段端点可以搜索本地SID表(有时也称为转发信息库(FIB))中是否存在针对最后一个SID的条目。如果存在,则分段端点可以对该分组进行解封装并向最后一个SID转发该分组。如果不存在,则分段端点可以对下一SID执行SRH处理。表2陈述了End.S功能的实现方式的示例。
表2:端点在表T中搜索目标的功能(End.S)的伪代码
第二分段或SID包括定位符(nodeC)和功能(End.X.PSP)。End.X功能可涉及:使剩余分段字段(例如,“剩余分段”328)递减、用活动分段或SID(例如,SRH[SL])来更新IPv6报头中的DA、以及向与活跃分段或SID相对应的接口或下一跳进行转发。End.X功能的倒数第二分段弹出(PSP)变体可涉及弹出SRH。表3陈述了End.X功能的实现方式的示例,表4陈述了PSP变体的实现方式的示例。其他SR功能的附加示例实现方式可在Clarence Filsfils等人的“SRv6 Network Programming”(SRv6网络编程)(Internet-Draft draft-filsfils-spring-srv6-network-programming-05,互联网工程任务组(Internet Engineering TaskForce),2018年7月)中找到,该文献通过引用被全部合并于此。
表3:具有第3层交叉连接的端点(End.X)功能的伪代码
表4:End、End.X以及End.T功能的PSP变体的伪代码
在图4B的示例中,虚拟交换机424A可以作为SR入口设备进行操作。在接收到IPv6分组404A(如图4A所示)时,虚拟交换机424A可以针对原始DA(例如SVC:svc1)在SID表(例如SRLB或SRGB)中进行搜索,将原始DA与BSID 412进行匹配,并插入SRH 420α,该SRH420α包括分段列表414和“剩余分段”字段的值2(例如,SL=2)。如所讨论的那样,虚拟交换机424A可以用外部IPv6报头450B和SRH 420α来对分组404A进行封装,并且使分组保持未修改以作为有效载荷460。替代地,虚拟交换机424A可以将SRH 420α内联地插入在IPv6报头450B和有效载荷460之间。此外,虚拟交换机424A可以将IPv6报头450B中的DA设置为分段列表414的第一分段或SID(例如,nodeB:End.S)。在被虚拟交换机424A进行SR处理之后,分组的状态被示出为SRv6分组404B。虚拟交换机424A可以向第一分段或SID转发分组404B。
图4C示出了SRv6分组404C的状态,该状态是在该分组穿过网络结构402之后并且在节点420B的虚拟交换机424B接收到该分组之前的状态。如所讨论的,网络结构402中的联网设备(未示出)不一定需要支持SRv6,并且可以使用IPv6报头450C的DA来转发分组并且使该分组保持不变,如分组404C所示。如果这些联网设备确实支持SRv6但这些联网设备由于(例如)它们形成到分段端点的最短路径而被穿过,则可以将它们称为SR运送设备。SRv6支持各种路由算法,包括最短路过优先(Shortest Past First)、最严格的最短路过优先等。如果这些设备不支持SRv6,则可以将它们称为非SR运送设备。
图4D示出了针对虚拟交换机424B的本地SID表430。在接收到分组404C(如图4C所示)时,虚拟交换机424B可以执行End.S功能(表2中陈述了End.S功能的实现方式的示例),并确定在其FIB中存在针对最后一个分段或SID(例如SVC:svc1)的条目并且容器网荚426B在节点410B内是可达的。虚拟交换机424B可以对SRv6分组(例如,删除外部IPv6和SR报头)进行解封装并向容器网荚426B转发解封装后的分组;或者虚拟交换机424B可以移除SR报头,将IPv6报头450D的DA更新为最后一个分段或SID,并向容器网荚426B转发IPv6分组。在被虚拟交换机424B进行SR处理之后,分组的状态被示出为IPv6分组404D。
图5A至图5D示出了IPv6分组穿过网络结构502(例如,图1的网络结构102),以及在容器网荚或节点发生故障或过载的情况下可以如何使用SRv6来快速重新路由分组的示例。图5A示出了IPv6分组504A的第一状态和被编码为SRv6分组504B的分组的第二状态,其中该第二状态是在分组经由节点510A的虚拟交换机524A(例如,图2的联网接口224)被从节点510A(例如,图1的计算资源110或图2的工作节点220)的容器网荚526A(例如,图2的容器网荚226)发送到网络结构502之后并且刚好在分组到达节点510B的虚拟交换机524B之前的状态。分组的当前状态可以类似于图4C的分组404C的状态。例如,SRv6分组504B可以包括IPv6报头550B,该IPv6报头550B具有SA(例如,nodeA:podA)和DA,其中该SA与节点510A和容器网荚526A相对应,并且该DA包括与节点510B相对应的定位符(例如,图3B的定位符344)(例如,nodeB)和功能(例如,图3B的功能346)End.S。SRv6分组504B还可以包括SRH 520α(例如,图3A的SRH 320),该SRH 520α具有分段列表(例如,图3A的分段列表340)以及值为2的“剩余分段”(例如,图3A的“剩余分段”328),该分段列表包括分段或SID(例如,图3A和图3B的分段342)(即,nodeB:End.S、nodeC:End.X.PSP、和SVC:svc1)。此外,SRv6分组504B可以包括有效载荷560(例如,图3的有效载荷360),如果该分组已经被封装,则有效载荷560可以是未修改的IPv6分组,或者如果对该分组应用了直接或内联插入,则有效载荷560可以是IPv6有效载荷。图5A还示出了用于虚拟交换机524B的本地SID表530,该本地SID表530具有针对nodeB:End.S的条目。
然而,在该示例中,与图4A至图4D的示例不同的是,节点510B的容器网荚526B已发生故障、过载或因其他原因而不可达。因此,在虚拟交换机524B接收到SRv6分组504B并启动End.S功能(在表2中陈述了End.S功能的实现方式的示例)时,虚拟交换机524B可能无法将最后一个分段或SID(例如,SVC:svc1)匹配到其FIB中的条目。结果,虚拟交换机524B可以对SRv6分组504B执行FRR(例如,处理下一分段或SID,即nodeC:End.X.PSP)。也就是说,在检测到网荚526B不可达时,虚拟交换机524B可以立即将分组504B重新路由到辅路径或路由。
图5B示出了SRv6分组504C的状态,该状态是在虚拟交换机524B对分组执行FRR/End.X.PSP功能之后的状态。例如,虚拟交换机524B可以将SRH 520β中的“剩余分段”(SL)的值从2递减到1。此外,虚拟交换机524B可以将IPv6报头550C中的DA更新为SRH 520β的分段列表中的下一分段(即,从nodeB:End.S到nodeC:End.X.PSP)。最后,虚拟交换机524B可以关于更新后的DA执行FIB查找,并根据匹配的条目转发分组504C。在一些实施例中,入口SR设备(例如,虚拟交换机524A)也可以被重新编程以反映容器网荚526B的不可用性,例如更新其分段列表以包括一个或多个不同的分段或SID(例如,新的主路由或路径,以及(可选地)一个或多个新的辅路由或路径)。
图5C示出了SRv6分组504D的状态,该状态是在分组已穿过网络结构502之后并且刚好在节点510C的虚拟交换机524C接收到该分组之前的状态。如所讨论的,网络结构502不一定需要支持SRv6,而是依赖于IPv6报头550D中的DA来向虚拟交换机524C转发分组。这样,SRv6分组504D的状态可以保持不变。
图5D示出了IPv6分组504E的状态,该状态是在被虚拟交换机524C进行SR处理之后的状态。这可涉及对分组执行End.X.PSP功能(例如,在表3和表4中陈述了End.X.PSP功能的实现方式的示例)。例如,虚拟交换机524C可以将分段列表从1递减到0,弹出外部IPv6报头和SRH(如果分组是被封装的),或者将IPv6报头的DA更新为SVC:svc1并弹出SRH(如果对分组应用了直接或内联插入),并对分组执行IPv6处理(例如,向与容器网荚526C相对应的接口或下一跳进行转发)。
图6A至图6F示出了IPv6分组穿过网络结构602(例如,图1的网络结构102),以及可以如何将SRv6用于对该分组进行源路由的示例。图6A示出了由节点610A(例如,图1的计算资源110或图2的工作节点220)中的容器网荚626A(例如,图2的容器网荚226)生成的IPv6分组604A的初始状态,该IPv6分组604A旨在传输到被标记为SVC:svc1的服务。分组604A可以包括IPv6报头650A(例如,图3的IPv6报头350),该IPv6报头具有源地址(SA)(例如,nodeA:podA)和目的地地址(DA),其中该源地址(SA)与节点610A和网荚626A相对应,并且该目的地地址(DA)与被标记为SVC:svc1的服务相对应。分组604A还可以包括有效载荷660(例如,图3的有效载荷360)。网荚626A可以将分组604A发送到节点610A的虚拟交换机624A(例如,图2的网络接口224)。
在该示例中,虚拟交换机624A、624B和624C(统称为“624”)以及网络结构602中的叶交换机618A、618B和618C(统称为“618”)(例如,图1中的叶交换机118)可以是具有SRv6能力的设备。脊交换机616A和616B(统称为“616”)(例如,图1中的脊交换机116)可以是具有SRv6能力的设备,也可以不是具有SRv6能力的设备。
图6B示出了与虚拟交换机624A相关联的SR策略610,该SR策略610用于在容器网荚或节点发生故障或过载的情况下提供FRR。SR策略610可以包括BSID 612,该BSID 612将标签SVC:svc1绑定到分段列表614。如所讨论的,SR策略610可以通过各种方式与虚拟交换机624A相关联,例如通过使用路由协议(例如,IS-IS、OSPF、BGP等)的分布式模型、一个或多个集中式网络控制器(例如图1的网络控制器108)、或混合式方法。
分段列表614可以包括分段或SID(leafB:End.R、nodeB:End.S、nodeC:End.X.PSP、以及SVC:svc1)。第一分段可以包括定位符(例如,图3B的定位符344)(即leafB)以及功能(例如,图3B的功能346)(即End.R)。End.R功能可涉及确定“分段列表”中的下一分段是否是可达的。如果是可达的,则可以按照通常的SR处理(例如,使剩余分段递减,更新DA、以及转发分组)来处理分组。如果不是可达的,则可以将剩余分段减少2,可以将DA更新为新的活跃分段(例如SRH[SL]),并且可以根据更新后的DA来转发分组。表5陈述了End.R功能的实现方式的示例。
表5:在表T中搜索SID的端点(End.R)功能的伪代码
在图6B中,分段列表614的第二分段或SID可以包括定位符nodeB和功能End.S。表2陈述了End.S功能的实现方式的示例。第三分段或SID可以包括定位符nodeC和功能End.X.PSP。表3陈述了End.X功能的实现方式的示例,并且表4陈述了PSP变体的实现方式的示例。第四分段或SID可以包括与SVC:svc1相对应的标签、定位符、或IPv6地址。
在该示例中,虚拟交换机624A可以作为SR入口设备进行操作。虚拟交换机624A在接收到IPv6分组604A(如图6A所示)时,可以在SID表(例如,SRLB或SRGB)中搜索原始DA(例如,SVC:svc1),将原始DA与BSID 612相匹配,并插入SRH 620α,该SRH 620α包括分段列表614和值为3的剩余分段字段(例如,SL=3)。如所讨论的,虚拟交换机624A可以用外部IPv6报头650B和SRH 620α来对分组604A进行封装,并将分组保持未被修改以作为有效载荷660。替代地,虚拟交换机624A可以将SRH 620α内联插入在IPv6报头650B和有效载荷660之间。此外,虚拟交换机624A可以将IPv6报头650B中的DA设置为分段列表614的第一分段或SID(例如,leafB:End.R)。在被虚拟交换机624A进行SR处理之后,分组的状态被示出为SRv6分组604B。虚拟交换机624A可以沿着最短路径向叶交换机618B转发分组604B。
图6C示出了SRv6分组604C的状态,该状态是在叶交换机618A转发了该分组之后并且在脊交换机616A接收到该分组之前的状态。此处,叶交换机618A可以支持SRv6但是可以作为如下SR运送设备进行操作:该SR运送设备形成到叶交换机618B的最短路径的一部分。网络结构602中的脊交换机616不一定需要支持SRv6,并且可以使用IPv6报头650C的DA来转发分组并使它保持不变,如分组604C所示。如果脊交换机616不支持SRv6,则它们作为非SR运送设备进行操作。
图6D示出了SRv6分组604D的状态,该状态是在脊交换机616A转发了该分组之后并且在叶交换机618B接收到该分组之前的状态。如所讨论的,脊交换机616A可以作为非SR运送设备进行操作并且基于IPv6报头650D来转发分组604D。脊交换机616A可以忽略SRH 620γ,并使分组604D相对于其先前状态保持不变。
图6E示出了叶交换机618B的本地SID表630。叶交换机618B在接收到分组604D(如图6D所示)时,可以执行End.R功能(在表5中陈述了End.R功能的实现方式的示例),并确定其FIB中存在针对下一分段或SID(例如,nodeB:End.S)的条目并且节点610B是可达的。因此,叶交换机618B可以将剩余分段从3递减到2,将IPv6报头650E的DA更新为下一分段或SID(例如,nodeB:End.S),关于更新后的DA执行FIB查找,并且根据匹配的条目来转发分组604。被叶交换机618B进行SR处理之后的分组的状态被示出为SRv6分组604E。
图6F示出了针对虚拟交换机624B的本地SID表640。虚拟交换机624B在接收到分组604E(如图6E所示)后,可以执行End.S功能(表2中陈述了End.S功能的实现方式的示例),并确定其FIB中存在针对最后一个分段或SID(例如,SVC:svc1;用于向与容器网荚626B相对应的接口或下一跳进行转发)的条目。虚拟交换机624B可以对SRv6分组进行解封装(例如,移除外部IPv6和SR报头)并向容器网荚626B转发解封装后的分组;或者虚拟交换机624B可以移除SR报头,将IPv6报头650F的DA更新为最后一个分段或SID,并向容器网荚626B转发IPv6分组。被虚拟交换机624B进行SR处理后的分组的状态被示出为IPv6分组604F。
图7A-7E示出了IPv6分组穿过网络结构702(例如,图1的网络结构102),以及在容器网荚或节点发生故障或过载的情况下可以如何使用SRv6来快速重新路由分组的示例。图7A示出了IPv6分组704A的第一状态和被编码为SRv6分组704B的分组的第二状态,该第二状态是在该分组被从节点710A(例如,图1的计算资源110或图2的工作节点220)的容器网荚726A(例如,图2的容器网荚226)发送通过节点710A的虚拟交换机724A(例如,图2的联网接口224)、网络结构702的叶交换机718A(例如,图1的叶交换机118)以及脊交换机716A(例如,图1的脊交换机116),并且刚好在该分组到达叶交换机718B之前的状态。分组的当前状态可以类似于图6D的分组604D的状态。例如,SRv6分组704B可以包括IPv6报头750B,该IPv6报头750B具有SA(例如,nodeA:podA)以及DA,其中该SA与节点710A和容器网荚726A相对应,并且该DA包括与节点710B相对应的定位符(例如,图3B的定位符344)(例如,nodeB)和功能(例如,图3B的功能346)End.R。SRv6分组704B还可以包括SRH 720α(例如,图3A的SRH 320),该SRH 720α具有分段列表(例如,图3A的分段列表340)以及值为3的剩余分段(例如,图3A的剩余分段328),该分段列表包括分段或SID(例如,图3A和图3B的分段342)(即,leafB:End.R、nodeB:End.S、nodeC:End.X.PSP、以及SVC:svc1)。此外,SRv6分组704B可以包括有效载荷760(例如,图3的有效载荷360),如果该分组已被封装,则该有效载荷760可以是未修改的IPv6分组,如果对该分组应用了直接或内联插入,则该有效载荷760可以是IPv6有效载荷。图7A还示出了针对叶交换机718的本地SID表730,其具有针对nodeB:End.R的条目。
然而,在该示例中,与图6A至图6F的示例不同的是,节点710B发生了故障、过载或者因其他原因而不可达。因此,在叶交换机718B接收到SRv6分组704B并启动End.R功能(在表5中陈述了End.R功能的实现方式的示例)之后,叶交换机718B可能无法将下一分段或SID(例如,nodeB:End.S)匹配到其FIB中的条目。因此,叶交换机718B可以对SRv6分组704B执行FRR(例如,将分段列表减小2,用SRH[SL]来更新IPv6 DA,关于更新后的DA进行FIB查找,并根据匹配的条目来进行转发)。即,在检测到节点710B不可达时,叶交换机718B可以立即将分组704B重新路由到辅路径或路由。
图7B示出了SRv6分组704C的状态,该状态是在叶交换机718B对分组执行FRR之后的状态。例如,叶交换机718B可以将SRH 720β中的“剩余分段”(SL)的值从3减小到1。此外,叶交换机718B可以将IPv6报头750C中的DA更新为SRH 720β的分段列表中的新的活跃分段(即,从leafB:End.R更新为nodeC:End.X.PSP)。最后,叶交换机718B可以关于更新后的DA执行FIB查找,并根据匹配的条目来转发分组704C。在一些实施例中,入口SR设备(例如,虚拟交换机724A)也可以被重新编程以反映节点710B的不可用性,例如更新其分段列表以包括一个或多个不同的分段或SID(例如,新的主路由或路径,以及(可选地)一个或多个新的辅路由或路径)。
图7C示出了SRv6分组704D的状态,该状态是在脊交换机716B已转发该分组之后并且在叶交换机718C接收到该分组之前的状态。如所讨论的,脊交换机716B可以作为非SR运送设备进行操作,并且基于IPv6报头750D来转发分组704D。脊交换机716B可以忽略SRH 720γ,并使分组704D相对于其先前状态保持不变。
图7D示出了SRv6分组704E的状态,该状态是在叶交换机718C向节点710C的虚拟交换机724C转发该分组之后的状态。在该示例中,叶交换机718C可以支持SRv6并且作为SR运送设备进行操作以形成从叶交换机718B到节点710C的最短路径的一部分。如此,SRv6分组704E的状态可以相对于其先前状态保持不变。
图7E示出了IPv6分组704F的状态,该状态是由虚拟交换机724C进行SR处理之后的状态。这可涉及在对分组执行End.X.PSP功能(例如,表3和表4中陈述了End.X.PSP功能的实现方式的示例)。例如,虚拟交换机724C可以将“分段列表”从1递减到0,弹出外部IPv6报头和SRH(如果分组是被封装的)或者将IPv6报头的DA更新为SVC:svc1并弹出SRH(如果对该分组应用了直接或将内联插入),并且对该分组执行IPv6处理(例如,向与容器网荚726C相对应的接口或下一跳进行转发)。
图8示出了过程800的示例,该过程800用于在容器/网荚或主机不可达的情况下提供使用快速重新路由的分段路由。过程800可开始于SR入口设备(例如,图2的虚拟交换机224、图4A至图4D的SRv6虚拟交换机424A、图5A至图5D的SRv6虚拟交换机524A、图6A至图6F的物理交换机618、图7A至图7E的物理交换机718,等等)从第一主机(例如,物理服务器或虚拟服务器110)中的第一容器/网荚(例如,图2的容器228/网荚226)接收分组(例如,IPv6分组)。该分组可以是前往容器服务的。该容器服务可以具有与多个主机中的多个容器/网荚相关联的网络地址,这些容器/网荚至少包括第二主机中的第二容器/网荚和第三主机中的第三容器/网荚。例如,网络地址可以是ClusterIP、NodePort、LoadBalancer、和/或ExternalName。关于图4A、图5A、图6A和图7A示出并讨论了该步骤的示例。
过程800可以前进到步骤804,在步骤804中,SR入口设备可以生成SR分组,该SR分组包括原始分组和分段列表。例如,SR入口设备可以与对应于容器服务的绑定分段标识符(BSID)相关联,这在分组的目的地地址(DA)与该BSID相匹配时引起分段列表的实例化。在一些实施例中,网络控制器可以将SR入口设备与BSID相关联,并确定分段列表。在其他实施例中,SR入口设备可以例如通过路由协议(例如,IS-IS、OSPF、BGP等)单独地计算分段列表,并且单独地施加BSID。
在一些实施例中,SR入口设备可以使用封装来生成SR分组。例如,SR入口设备可以创建外部IPv6报头,该外部IPv6报头包括源地址(SA)和DA,其中该源地址(SA)与始发主机和容器/网荚相对应,并且该DA与分段列表的第一分段或分段标识符(SID)相对应。SR入口设备还可以创建分段路由报头(SRH)(例如,SRH 320)和分段列表,该分段路由报头(SRH)包括SR元数据字段(例如,剩余分段、最后条目、标志等)。SR入口设备可以添加外部IPv6报头、SRH和原始分组以生成SR分组。
在其他实施例中,SR入口设备可以使用直接或内联插入。例如,SR入口设备可以将原始分组报头(例如,IPv6报头)的DA更新为分段列表的第一分段或SID。然后,SR入口设备可以创建SRH,并将SRH插入在原始分组报头和原始分组有效载荷之间。
分段列表可以至少包括指向第二主机的第一分段或SID、指向第三主机的第二分段或SID、以及指向容器服务的第三分段或SID,其中,第二主机包括容器服务的第二容器/网荚,并且第三主机包括容器服务的第三容器/网荚。在第一SID之前,在第一SID、第二SID和第三SID中的每一个之间,以及在第三SID之后可以有零个SID或一个或多个SID。可以存在主SR出口设备和一个或多个辅SR出口设备。在一些实施例中,SID可以包括与SR分段端点相对应的定位符和SR指令(例如,表1中陈述的SR指令)。关于图4B、图5B、图6B和图7B示出并讨论了步骤804的示例。
在步骤806处,可以向与第一分段或SID相对应的第二SR设备转发SR分组。在一些情况下,第二SR设备可以是第二主机中的虚拟交换机,该第二主机包括容器服务的第二容器/网荚。即,第二SR设备可以是SR出口设备。例如,图4B至图4C和图5A示出了SR入口设备(例如,分别为虚拟交换机424A和524A)向第一SR出口设备(例如,分别为虚拟交换机424B和524B)转发SRv6分组(例如,分别为SRv6分组404B/404C和504B)的示例。在一些实施例中,第二SR设备可以是与第二主机相邻的物理交换机。例如,图6B至图6D和图7A示出了SR入口设备(例如,分别为虚拟交换机624A和724A)向叶交换机718B(其中叶交换机718A作为SR运送设备进行操作,而脊交换机716A作为非SR运送设备进行操作)转发SRv6分组(例如,分别为分组604B/604C/604D和704B)。在其他实施例中,在分段列表中,在与包括容器服务的第二容器/网荚的第二SR设备相对应的第一分段或SID之前,可存在一个或多个分段或SID。
在判定点808处,第二SR设备可以确定第二主机和/或第二容器/网荚是否是可达的。例如,第二SR设备可以在其FIB中针对与第二主机相对应的分段或SID或者与第二容器/网荚相对应的分段或SID执行查找。作为另一示例,第二SR设备可以周期性地轮询第二主机和/或第二容器/网荚以确定它们的可达性。作为又一示例,第二主机和/或第二容器可以周期性地向第二SR设备发送心跳消息以指示它们的可达性。
如果第二主机和第二容器/主机是可达的,则过程800可以继续到步骤810,该步骤810可以包括:根据第二SR设备是否是SR出口设备,向第二主机转发SR分组或者向第二容器/网荚转发原始分组。例如,如果第二SR设备是SR出口设备,则第二SR设备可以对SR分组进行解封装(或将DA更新为第三分段,并从SR分组中移除SRH)并向第二容器/网荚转发恢复的原始分组。关于图4C至图4D示出和讨论了这些操作的示例。另一方面,如果第二SR设备不是SR出口设备,则第二SR设备可以对剩余分段进行递减,将IP报头的DA更新为新的活跃分段或SID,并向第二主机转发SR分组。关于图6E示出并讨论了这些操作的示例。第二主机的SR设备(例如,虚拟交换机624B)可以作为SR出口设备进行操作,并评估第二容器/网荚(例如,容器网荚626B)是否可达,如果可达,则对SR分组进行解封装,并且向第二容器/网荚转发解封装后的分组,如关于图6F所示出和讨论的那样。
如果第二主机和/或第二容器/网荚是不可达的,则过程可以前进到步骤812,该步骤812可以涉及将SR分组重新路由到与第二分段或SID相对应的第三SR设备,例如关于图5B至图5C和图7B至图7D所讨论的那样。第三SR设备可以作为SR出口设备进行操作,并且可以评估第三容器/网荚(例如,容器网荚526B和72B)是否可达,并且如果可达,则对SR分组进行解封装并向第三容器/网荚转发解封装后的分组,如关于图5D和图7E所示出和讨论的那样。在一些实施例中,第三主机或第三容器/网荚也可能是不可达的,并且SR入口设备可以包括附加分段或SID,用于快速重新路由到包括容器服务的第四容器/网荚的第四主机。SR入口设备可以在分段列表中包括与网络中可用的辅SR出口设备一样多的附加分段或SID。
图9A和图9B示出了根据各种实施例的系统。在实践各种实施例时,更合适的系统对于本领域普通技术人员将是显而易见的。本领域普通技术人员也将容易地认识到,其他系统也是可能的。
图9A示出了总线计算系统900的示例,其中该系统的组件使用总线905彼此电气通信。计算系统900可以包括处理单元(CPU或处理器)910和系统总线905,系统总线905可以将包括系统存储器915的各种系统组件(例如,只读存储器(ROM)920和随机存取存储器(RAM)925)耦合到处理器910。计算系统900可以包括与处理器910直接连接、与处理器910紧密接近、或被集成为处理器910的一部分的高速存储器的缓存912。计算系统900可以将数据从存储器915、ROM 920、RAM 925和/或存储设备930复制到缓存912,以供处理器910快速访问。以这种方式,缓存912可以提供性能提升,从而避免了在等待数据时的处理器延迟。这些模块和其他模块可以控制处理器910执行各种动作。其他系统存储器915也可供使用。存储器915可以包括具有不同性能特性的多种不同类型的存储器。处理器910可以包括任何通用处理器和硬件模块或软件模块(例如,存储在存储设备930中的模块1 932、模块2 934和模块3936),该硬件模块或软件模块被配置为控制处理器910,并且处理器910可以包括专用处理器,在该专用处理器中软件指令被合并到实际的处理器设计中。处理器910可以基本上是完全自包含的计算系统,其包含多个核心或处理器、总线、存储器控制器、缓存等。多核处理器可以是对称的或非对称的。
为了使用户能够与计算系统900进行交互,输入设备945可以表示任何数量的输入机构,例如用于语音的麦克风、用于手势或图形输入的触摸保护屏、键盘、鼠标、运动输入、语音等等。输出设备935也可以是本领域技术人员已知的许多输出机构中的一种或多种输出机构。在一些情况下,多模态系统可以使用户能够提供多种类型的输入以与计算系统900进行通信。通信接口940可以支配和管理用户输入和系统输出。对于在任何特定硬件布置上的操作没有限制,因此随着改进的硬件或固件布置被开发,这里的基本特征可以容易地替换为这些改进的硬件或固件布置。
存储设备930可以是非易失性存储器,并且可以是硬盘或是可以存储可由计算机访问的数据的其他类型的计算机可读介质,例如磁带盒、闪存卡、固态存储器设备、数字通用盘、盒式磁带、随机存取存储器、只读存储器、以及前述项的混合。
如上所述,存储设备930可以包括用于控制处理器910的软件模块932、934、936。设想其他硬件或软件模块。存储设备930可以连接到系统总线905。在一些实施例中,执行特定功能的硬件模块可以包括存储在计算机可读介质中的软件组件,该软件组件与必要的硬件组件(例如,处理器910、总线905、输出设备935等)相关联以执行该功能。
图9B示出了可以根据一种实施例使用的常规芯片组计算系统950的示例架构。计算系统950可以包括处理器955,该处理器955代表能够执行被配置为执行所标识的计算的软件、固件和硬件的任何数量的物理上和/或逻辑上不同的资源。处理器955可以与芯片组960通信,该芯片组960可以控制到处理器955的输入和来自处理器955的输出。在该示例中,芯片组960可以将信息输出到诸如显示器之类的输出设备965,并且可以向存储设备970读取和写入信息,该存储设备970可以包括磁介质、固态介质和其他合适的存储介质。芯片组960还可以从RAM 975读取数据以及将数据写入到RAM 975。可以提供用于与各种用户接口组件985接口连接的桥980,以用于与芯片组960接口连接。用户接口组件985可以包括键盘、麦克风、触摸检测及处理电路系统、诸如鼠标之类的指点设备等。到计算系统950的输入可以来自机器生成的和/或人工生成的各种来源中的任何一种。
芯片组960还可以与一个或多个通信接口990接口连接,这些通信接口990可以具有不同物理接口。通信接口990可以包括用于有线和无线LAN、用于宽带无线网络以及个域网的接口。用于生成、显示和使用本文公开的技术的方法的一些应用可以包括通过物理接口接收有序的数据集,或者这些应用可以通过由处理器955分析存储在存储设备970或RAM975中的数据来由机器本身生成。此外,计算系统950可以经由用户接口组件985从用户接收输入,并且通过使用处理器955解释这些输入来执行适当的功能,例如浏览功能。
应当理解,计算系统900和950可以分别具有多于一个的处理器910和955,或者计算系统900和950可以是联网在一起以提供更大处理能力的计算设备组或计算设备集群的一部分。
总而言之,本文描述的系统和方法的实施例提供了在容器网络中使用快速重新路由的分段路由(SR)。SR入口可以接收来自第一容器并且去往容器服务的分组。入口可以生成SR分组,该SR分组包括分段列表,该分段列表包括指向第一容器服务主机的第一分段、指向第二服务主机的第二分段、以及指向服务的第三分段。入口可以使用第一分段将SR分组转发到与第一主机相对应的第一SR出口。第一出口可以确定第一服务和/或主机是否是可达的。如果是可达的,则第一出口可以将SR分组转发到第一主机,或者将分组转发到服务。如果是不可达的,则第一出口可以执行快速重新路由,并且使用第二分段将SR分组转发到与第二主机相对应的第二SR出口。
为了解释的清楚,在某些情况下,各种实施例可以被表示为包括各个功能块,这些功能块包括包含以下各项的功能块:设备、设备组件、以软件实现的方法中的步骤或例程、或硬件和软件的组合。
在一些实施例中,计算机可读存储设备、介质、和存储器可以包括含有比特流等的电缆或无线信号。然而,当提及时,非暂态计算机可读存储介质明确地排除诸如能量、载波信号、电磁波、和信号本身之类的介质。
可以使用存储在计算机可读介质中或以其他方式可从计算机可读介质获得的计算机可执行指令来实现根据上述示例的方法。这样的指令可以包括例如引起或以其他方式配置通用计算机、专用计算机、或专用处理设备以执行特定功能或功能组的指令和数据。所使用的部分计算机资源可以是通过网络可访问的。计算机可执行指令可以是例如二进制、中间格式指令,例如汇编语言、固件、或源代码。可以用于对指令、在根据所述示例的方法期间使用的信息和/或创建的信息进行存储的计算机可读介质的示例包括磁盘或光盘、闪存、配备有非易失性存储器的USB设备、联网存储设备,等等。
实现根据这些公开内容的方法的设备可以包括硬件、固件和/或软件,并且可以采用多种形状因子中的任何一种。这样的形状因子的一些示例包括膝上型计算机、智能电话、小形状因子的个人计算机、个人数字助理、机架安装设备、独立设备等。本文描述的功能性还可以体现在外围设备或附加卡中。作为进一步的示例,这样的功能性也可以在不同芯片或在单个设备中执行的不同进程之间的电路板上实现。
指令、用于传达这样的指令的介质、用于执行这样的指令的计算资源、以及用于支持这样的计算资源的其他结构是用于提供这些公开内容中所描述的功能的手段。
尽管使用各种示例和其他信息来解释所附权利要求的范围内的各方面,但是不应基于这样的示例中的特定特征或布置来暗示对权利要求的限制,因为本领域的普通技术人员将能够使用这些示例来导出各种各样的实现方式。此外,虽然可能已经用特定于结构特征和/或方法步骤的示例的语言描述了一些主题,但是应理解,所附权利要求中限定的主题不一定限于这些描述的特征或动作。例如,这样的功能性可以以不同的方式被分布或在除本文所标识的那些组件之外的组件中被执行。而是,将描述的特征和步骤公开为在所附权利要求的范围内的系统的组件和方法的示例。
Claims (23)
1.一种由计算机实现的方法,包括:
由第一分段路由设备从第一主机中的第一容器接收去往容器服务的分组;
由所述第一分段路由设备生成包括所述分组和分段列表的分段路由分组,所述分段列表包括指向第二主机的第一分段、指向第三主机的第二分段、以及指向所述容器服务的第三分段,其中,所述第二主机包括所述容器服务的第二容器,并且所述第三主机包括所述容器服务的第三容器;
向第二分段路由设备转发所述分段路由分组,所述第二分段路由设备与所述第一分段相对应;以及
响应于确定所述第二容器或所述第二主机中的至少一者是不可达的,向第三分段路由设备重新路由所述分段路由分组,所述第三分段路由设备与所述第二分段相对应。
2.根据权利要求1所述的由计算机实现的方法,其中,所述第二分段路由设备是所述第二主机中的虚拟交换机。
3.根据权利要求1所述的由计算机实现的方法,其中,所述第二分段路由设备是连接到所述第二主机的物理交换机。
4.根据权利要求1至3中的任一项所述的由计算机实现的方法,还包括:
使用外部互联网协议(IP)报头和包括所述分段列表的分段路由报头来对所述分组进行封装,以生成所述分段路由分组。
5.根据权利要求1至4中的任一项所述的由计算机实现的方法,还包括:
在所述分组的IP报头和所述分组的有效载荷之间插入包括所述分段列表的分段路由报头,以生成所述分段路由分组。
6.根据权利要求1至5中的任一项所述的由计算机实现的方法,还包括:
由所述第一分段路由设备从网络控制器接收所述分段列表。
7.根据权利要求1至6中的任一项所述的由计算机实现的方法,还包括:
由所述第一分段路由设备基于路由协议来确定所述分段列表。
8.根据权利要求1至7中的任一项所述的由计算机实现的方法,还包括:
由所述第一分段路由设备接收去往第二容器服务的第二分组;
由所述第一分段路由设备生成第二分段路由分组,所述第二分段路由分组包括所述第二分组和第二分段列表,所述第二分段列表包括:与包括所述第二容器服务的第四容器的主机相关联的第四分段、与包括所述第二容器服务的第五容器的主机相关联的第五分段、以及指向所述第二容器服务的第六分段;
向与所述第四分段相对应的分段路由设备转发所述第二分段路由分组;以及
响应于确定所述第四容器可达,向所述第四容器转发所述第二分组。
9.根据权利要求8所述的由计算机实现的方法,还包括:
响应于确定包括所述第四容器的主机是可达的,向该主机转发所述第二分段路由分组;以及
对所述第二分段路由分组进行解封装,以恢复所述第二分组。
10.根据权利要求1至9中的任一项所述的由计算机实现的方法,还包括:
响应于确定所述第三容器或所述第三主机中的至少一者是不可达的,向第四分段路由设备重新路由所述分段路由分组。
11.根据权利要求1至10中的任一项所述的由计算机实现的方法,还包括:
从所述分段路由分组解封装外部IP报头和分段路由报头,以恢复所述分组;以及
向所述第三容器转发所述分组。
12.根据权利要求1至11中的任一项所述的由计算机实现的方法,还包括:
使用所述第三分段来更新所述分段路由分组的IP报头中的目的地地址;
从所述分段路由分组中移除分段路由报头,以恢复所述分组;以及
向所述第三容器转发所述分组。
13.一种系统,包括:
一个或多个处理器;以及
至少一个计算机可读存储介质,其中存储有指令,所述指令当被所述一个或多个处理器执行时使所述一个或多个处理器执行以下操作:
由第一分段路由设备从第一主机中的第一容器网荚接收去往容器服务的分组;
由所述第一分段路由设备生成包括所述分组和分段列表的分段路由分组,所述分段列表包括指向第二主机的第一分段、指向第三主机的第二分段、以及指向所述容器服务的第三分段,其中,所述第二主机包括所述容器服务的第二容器,并且所述第三主机包括所述容器服务的第三容器网荚;
向第二分段路由设备转发所述分段路由分组,所述第二分段路由设备与所述第一分段相对应;以及
响应于确定所述第二容器或所述第二主机中的至少一者是不可达的,向第三分段路由设备重新路由所述分段路由分组,所述第三分段路由设备与所述第二分段相对应。
14.根据权利要求13所述的系统,其中,所述指令当被执行时还使所述一个或多个处理器执行以下操作:
使用所述分段列表,针对所述容器服务生成绑定分段标识符(BSID);以及
将所述BSID与所述第一分段路由设备相关联。
15.根据权利要求13或14所述的系统,其中,所述分段列表的一个或多个分段包括定位符和分段路由功能。
16.根据权利要求13至15中的任一项所述的系统,其中,所述指令当被执行时还使所述一个或多个处理器执行以下操作:
针对所述分段列表的一个或多个分段,确定这样的路由:该路由穿过非分段路由运送设备。
17.一种非暂时性计算机可读存储介质,其中存储有指令,所述指令当被一个或多个处理器执行时使所述一个或多个处理器执行以下操作:
由第一互联网协议版本6数据平面分段路由(SRv6)设备,从第一主机中的第一容器接收去往容器服务的互联网协议版本6(IPv6)分组;
由所述第一SRv6设备生成SRv6分组,所述SRv6分组包括所述IPv6分组和分段列表,所述分段列表包括指向第二主机的第一分段、指向第三主机的第二分段、以及指向所述容器服务的第三分段,其中,所述第二主机包括所述容器服务的第二容器,并且所述第三主机包括所述容器服务的第三容器;
向第二SRv6设备转发所述SRv6分组,所述第二SRv6设备与所述第一分段相对应;以及
响应于确定所述第二容器或所述第二主机中的至少一者是不可达的,向第三SRv6设备重新路由所述SRv6分组,所述第三SRv6设备与所述第二分段相对应。
18.根据权利要求17所述的非暂时性计算机可读存储介质,其中,所述分段列表包括SRv6 End.S功能和SRv6 End.X.PSP功能。
19.根据权利要求18所述的非暂时性计算机可读存储介质,其中,所述分段列表还包括SRv6 End.R功能。
20.根据权利要求17至19中的任一项所述的非暂时性计算机可读存储介质,其中,所述指令当被执行时还使所述一个或多个处理器执行以下操作:
由Kubernetes主模块在第一容器网荚中实例化所述第一容器、在第二容器网荚中实例化所述第二容器、以及在第三容器网荚中实例化第三容器。
21.一种设备,包括:
用于通过第一分段路由设备从第一主机中的第一容器接收去往容器服务的分组的装置;
用于通过所述第一分段路由设备生成包括所述分组和分段列表的分段路由分组的装置,所述分段列表包括指向第二主机的第一分段、指向第三主机的第二分段、以及指向所述容器服务的第三分段,其中,所述第二主机包括所述容器服务的第二容器,并且所述第三主机包括所述容器服务的第三容器;
用于向第二分段路由设备转发所述分段路由分组的装置,所述第二分段路由设备与所述第一分段相对应;以及
用于响应于确定所述第二容器或所述第二主机中的至少一者是不可达的而向第三分段路由设备重新路由所述分段路由分组的装置,所述第三分段路由设备与所述第二分段相对应。
22.根据权利要求21所述的设备,还包括:用于实现根据权利要求2至12中任一项所述的方法的装置。
23.一种计算机程序、计算机程序产品或计算机可读介质,包括指令,所述指令当由计算机执行时使所述计算机执行权利要求1至12中任一项所述的方法的步骤。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/138,595 US10812374B2 (en) | 2018-09-21 | 2018-09-21 | Segment routing with fast reroute for container networking |
US16/138,595 | 2018-09-21 | ||
PCT/US2019/050663 WO2020060826A1 (en) | 2018-09-21 | 2019-09-11 | Segment routing with fast reroute for container networking |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112740628A true CN112740628A (zh) | 2021-04-30 |
CN112740628B CN112740628B (zh) | 2022-09-02 |
Family
ID=68052007
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980060289.7A Active CN112740628B (zh) | 2018-09-21 | 2019-09-11 | 用于容器联网的利用快速重新路由的分段路由 |
Country Status (4)
Country | Link |
---|---|
US (2) | US10812374B2 (zh) |
EP (1) | EP3854038B1 (zh) |
CN (1) | CN112740628B (zh) |
WO (1) | WO2020060826A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115604272A (zh) * | 2022-11-30 | 2023-01-13 | 苏州浪潮智能科技有限公司(Cn) | 负载均衡方法、装置、系统及系统创建方法及设备和介质 |
Families Citing this family (52)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10848552B2 (en) * | 2018-03-29 | 2020-11-24 | Hewlett Packard Enterprise Development Lp | Determining whether to perform address translation to forward a service request or deny a service request based on blocked service attributes in an IP table in a container-based computing cluster management system |
US11128530B2 (en) | 2018-03-29 | 2021-09-21 | Hewlett Packard Enterprise Development Lp | Container cluster management |
US11238012B1 (en) | 2018-05-15 | 2022-02-01 | Splunk Inc. | Log data extraction from data chunks of an isolated execution environment |
US11537627B1 (en) | 2018-09-28 | 2022-12-27 | Splunk Inc. | Information technology networked cloud service monitoring |
CN110971433B (zh) * | 2018-09-29 | 2022-02-22 | 华为技术有限公司 | 获取SRv6隧道信息的方法、设备和系统 |
US10929415B1 (en) * | 2018-10-01 | 2021-02-23 | Splunk Inc. | Isolated execution environment system monitoring |
US10977140B2 (en) * | 2018-11-06 | 2021-04-13 | International Business Machines Corporation | Fault tolerant distributed system to monitor, recover and scale load balancers |
US11245617B1 (en) * | 2018-12-28 | 2022-02-08 | Juniper Networks, Inc. | Compressed routing header |
WO2020152503A1 (en) * | 2019-01-24 | 2020-07-30 | Telefonaktiebolaget Lm Ericsson (Publ) | State controller running in a kubernetes system and method for operating same |
US10768923B2 (en) | 2019-01-29 | 2020-09-08 | Salesforce.Com, Inc. | Release orchestration for performing pre release, version specific testing to validate application versions |
US11003434B2 (en) | 2019-01-29 | 2021-05-11 | Salesforce.Com, Inc. | Cloud services release orchestration with a reusable deployment pipeline |
US10776099B2 (en) | 2019-01-29 | 2020-09-15 | Salesforce.Com, Inc. | Release orchestration for cloud services |
CN111510386B (zh) * | 2019-01-30 | 2023-06-20 | 华为技术有限公司 | 用于处理报文的方法和装置 |
CN109981458B (zh) * | 2019-03-08 | 2022-07-26 | 华为技术有限公司 | 一种确定报文转发路径的方法、网络节点及系统 |
CN113645136B (zh) * | 2019-03-11 | 2022-12-06 | 华为技术有限公司 | 网络中报文转发的方法、网络节点、网络系统 |
JP7056626B2 (ja) * | 2019-04-09 | 2022-04-19 | 日本電信電話株式会社 | 通信システム及び通信方法 |
US11412071B2 (en) * | 2019-05-13 | 2022-08-09 | Juniper Networks, Inc. | Compressed routing header information for networks |
CN111953604B (zh) * | 2019-05-17 | 2023-07-18 | 华为技术有限公司 | 一种为业务流提供业务服务的方法和装置 |
WO2021021172A1 (en) * | 2019-07-31 | 2021-02-04 | Huawei Technologies Co., Ltd. | Transporting mtnc-id over srv6-header for 5g transport |
US11165681B2 (en) | 2019-09-27 | 2021-11-02 | Juniper Networks, Inc. | Inter-autonomous system trace route message |
CN112702773B (zh) * | 2019-10-22 | 2023-03-03 | 华为技术有限公司 | 一种通信方法及装置 |
US11159410B1 (en) * | 2019-10-23 | 2021-10-26 | Juniper Networks, Inc | Systems and methods for facilitating traceroute operations across segment routing paths within networks |
US11057295B1 (en) * | 2020-01-07 | 2021-07-06 | Juniper Networks, Inc. | Loop avoidance and egress link protection with ethernet virtual private network (EVPN) fast reroute (FRR) |
JP2023521022A (ja) * | 2020-04-02 | 2023-05-23 | 華為技術有限公司 | Srv6の信頼領域境界フィルタリングの方法および装置 |
CN113556284B (zh) * | 2020-04-24 | 2023-01-10 | 中国移动通信有限公司研究院 | 数据包处理的方法及设备 |
CN113691448B (zh) * | 2020-05-18 | 2022-09-23 | 华为技术有限公司 | SRv6业务链中转发报文的方法、SFF及SF设备 |
CN116582476A (zh) * | 2020-05-28 | 2023-08-11 | 华为技术有限公司 | 绑定段标识的处理方法及设备 |
US11516136B2 (en) * | 2020-06-04 | 2022-11-29 | Juniper Networks, Inc. | Distributed node processing of network traffic |
CN113301174B (zh) * | 2020-07-14 | 2023-04-28 | 阿里巴巴集团控股有限公司 | 数据处理、转换规则部署方法和装置 |
CN114006854B (zh) * | 2020-07-16 | 2023-06-06 | 北京华为数字技术有限公司 | 通信方法及网络设备 |
CN112202671B (zh) * | 2020-09-09 | 2022-04-08 | 中盈优创资讯科技有限公司 | 一种通过代理实现业务编排的方法及装置 |
CN112187657B (zh) * | 2020-09-16 | 2022-04-15 | 北京理工大学 | 一种软件定义广域网中实现负载均衡的可扩展路由方法 |
CN114363231B (zh) * | 2020-09-28 | 2024-06-18 | 中国移动通信有限公司研究院 | 一种切换下行流量的方法、装置和计算机可读存储介质 |
CN112235199B (zh) * | 2020-10-14 | 2022-04-22 | 苏州盛科通信股份有限公司 | 基于srv6协议的evpn水平分割方法和装置 |
US11196665B1 (en) * | 2020-11-12 | 2021-12-07 | Sap Se | Routing application calls |
US11709699B2 (en) * | 2020-11-24 | 2023-07-25 | International Business Machines Corporation | Virtualized fabric name server for storage area network |
US11683372B2 (en) | 2020-11-24 | 2023-06-20 | International Business Machines Corporation | Virtualized fabric management server for storage area network |
US11502954B1 (en) | 2020-12-04 | 2022-11-15 | Juniper Networks, Inc. | Processing segment routing packets with two policy processing instructions in a segment routing domain |
CN112751826B (zh) * | 2020-12-07 | 2024-04-30 | 中兴通讯股份有限公司 | 算力应用流量转发方法及装置 |
CN112491926A (zh) * | 2020-12-11 | 2021-03-12 | 迈普通信技术股份有限公司 | SRv6路径质量测量方法、装置、电子设备及存储介质 |
CN116530065A (zh) * | 2020-12-18 | 2023-08-01 | 华为技术有限公司 | 使用路径计算单元协议创建sr策略的方法、装置及系统 |
US20220237048A1 (en) * | 2021-01-26 | 2022-07-28 | Vmware, Inc. | Affinity and anti-affinity for sets of resources and sets of domains in a virtualized and clustered computer system |
CN113079207B (zh) * | 2021-03-26 | 2022-07-08 | 重庆紫光华山智安科技有限公司 | 一种实现端口或网络高可用的方法、系统、终端及介质 |
US11822442B2 (en) * | 2021-06-03 | 2023-11-21 | Avaya Management L.P. | Active-standby pods in a container orchestration environment |
US11941421B1 (en) | 2021-07-09 | 2024-03-26 | Splunk Inc. | Evaluating and scaling a collection of isolated execution environments at a particular geographic location |
US11838206B2 (en) | 2021-07-23 | 2023-12-05 | Vmware, Inc. | Edge node with datapath split between pods |
CN113992759B (zh) * | 2021-10-22 | 2023-12-15 | 杭州博盾习言科技有限公司 | 应用于局域网的联合解析装置、方法及电子设备 |
US11659027B1 (en) * | 2022-01-06 | 2023-05-23 | Vmware, Inc. | Multi-network/domain service discovery in a container orchestration platform |
US11973842B2 (en) | 2022-02-11 | 2024-04-30 | International Business Machines Corporation | Service status prediction based transaction failure avoidance |
CN114448868B (zh) * | 2022-02-28 | 2024-02-27 | 百果园技术(新加坡)有限公司 | 一种基于分段路由策略的路径调度方法、装置及设备 |
US11775204B1 (en) * | 2022-04-12 | 2023-10-03 | Netapp, Inc. | Distributed control plane for facilitating communication between a container orchestration platform and a distributed storage architecture |
US11789660B1 (en) | 2022-04-12 | 2023-10-17 | Netapp, Inc. | Distributed control plane tracking object ownership changes within a distributed storage architecture |
Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101771618A (zh) * | 2010-03-11 | 2010-07-07 | 中兴通讯股份有限公司 | 一种分组传送网络接入环中主机路由可达的方法及系统 |
US20140122875A1 (en) * | 2012-10-31 | 2014-05-01 | Ubs Ag | Container-based management at a user device |
US20140344424A1 (en) * | 2013-05-16 | 2014-11-20 | Fujitsu Limited | System, method and computer-readable medium |
US20150109902A1 (en) * | 2013-10-18 | 2015-04-23 | Cisco Technology, Inc. | SCALABLE EDGE NODE PROTECTION USING IPv6 SEGMENT ROUTING EXTENSION HEADER |
US20150256445A1 (en) * | 2014-03-04 | 2015-09-10 | Cisco Technology, Inc. | Avoiding gratuitous address resolution protocol and unsolicited neighborhood discovery during host mobility events |
CN105049350A (zh) * | 2014-04-17 | 2015-11-11 | 思科技术公司 | 分段路由-出口对等工程(sp-epe) |
CN105052090A (zh) * | 2013-03-15 | 2015-11-11 | 思科技术公司 | 无缝分段路由 |
CN105324765A (zh) * | 2013-05-16 | 2016-02-10 | 惠普发展公司,有限责任合伙企业 | 选择用于去重复数据的存储区 |
CN105591820A (zh) * | 2015-12-31 | 2016-05-18 | 北京轻元科技有限公司 | 一种高可扩展的容器网络管理系统和方法 |
CN105704033A (zh) * | 2016-01-08 | 2016-06-22 | 烽火通信科技股份有限公司 | 一种pon设备路由转发表管理的实现方法 |
CN107078950A (zh) * | 2014-10-24 | 2017-08-18 | 思科技术公司 | 透明网络服务报头路径代理 |
US20180026885A1 (en) * | 2016-07-21 | 2018-01-25 | Cisco Technology, Inc. | System and method of providing segment routing as a service |
US20180109450A1 (en) * | 2016-10-14 | 2018-04-19 | Cisco Technology, Inc. | Creating and maintaining segment routed traffic engineering policies via border gateway protocol |
CN108370333A (zh) * | 2015-12-09 | 2018-08-03 | 华为技术有限公司 | 用于分段路由网络中性能测量的系统、方法和节点 |
WO2018146526A1 (en) * | 2017-02-13 | 2018-08-16 | Telefonaktiebolaget Lm Ericsson (Publ) | Method and apparatus for dynamic service chaining with segment routing for bng |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10171338B2 (en) * | 2016-02-08 | 2019-01-01 | Cisco Technology, Inc. | On-demand next-hop resolution |
US10728135B2 (en) * | 2017-10-13 | 2020-07-28 | Keysight Technologies, Inc. | Location based test agent deployment in virtual processing environments |
-
2018
- 2018-09-21 US US16/138,595 patent/US10812374B2/en active Active
-
2019
- 2019-09-11 CN CN201980060289.7A patent/CN112740628B/zh active Active
- 2019-09-11 EP EP19773700.0A patent/EP3854038B1/en active Active
- 2019-09-11 WO PCT/US2019/050663 patent/WO2020060826A1/en unknown
-
2020
- 2020-10-15 US US17/071,919 patent/US11283707B2/en active Active
Patent Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101771618A (zh) * | 2010-03-11 | 2010-07-07 | 中兴通讯股份有限公司 | 一种分组传送网络接入环中主机路由可达的方法及系统 |
US20140122875A1 (en) * | 2012-10-31 | 2014-05-01 | Ubs Ag | Container-based management at a user device |
CN105052090A (zh) * | 2013-03-15 | 2015-11-11 | 思科技术公司 | 无缝分段路由 |
US20140344424A1 (en) * | 2013-05-16 | 2014-11-20 | Fujitsu Limited | System, method and computer-readable medium |
CN105324765A (zh) * | 2013-05-16 | 2016-02-10 | 惠普发展公司,有限责任合伙企业 | 选择用于去重复数据的存储区 |
US20150109902A1 (en) * | 2013-10-18 | 2015-04-23 | Cisco Technology, Inc. | SCALABLE EDGE NODE PROTECTION USING IPv6 SEGMENT ROUTING EXTENSION HEADER |
US20150256445A1 (en) * | 2014-03-04 | 2015-09-10 | Cisco Technology, Inc. | Avoiding gratuitous address resolution protocol and unsolicited neighborhood discovery during host mobility events |
CN105049350A (zh) * | 2014-04-17 | 2015-11-11 | 思科技术公司 | 分段路由-出口对等工程(sp-epe) |
CN107078950A (zh) * | 2014-10-24 | 2017-08-18 | 思科技术公司 | 透明网络服务报头路径代理 |
CN108370333A (zh) * | 2015-12-09 | 2018-08-03 | 华为技术有限公司 | 用于分段路由网络中性能测量的系统、方法和节点 |
CN105591820A (zh) * | 2015-12-31 | 2016-05-18 | 北京轻元科技有限公司 | 一种高可扩展的容器网络管理系统和方法 |
CN105704033A (zh) * | 2016-01-08 | 2016-06-22 | 烽火通信科技股份有限公司 | 一种pon设备路由转发表管理的实现方法 |
US20180026885A1 (en) * | 2016-07-21 | 2018-01-25 | Cisco Technology, Inc. | System and method of providing segment routing as a service |
US20180109450A1 (en) * | 2016-10-14 | 2018-04-19 | Cisco Technology, Inc. | Creating and maintaining segment routed traffic engineering policies via border gateway protocol |
WO2018146526A1 (en) * | 2017-02-13 | 2018-08-16 | Telefonaktiebolaget Lm Ericsson (Publ) | Method and apparatus for dynamic service chaining with segment routing for bng |
Non-Patent Citations (3)
Title |
---|
CISCO SYSTEMS: "SRv6 Network Programming", 《DRAFT-FILSFILS-SPRING-SRV6-NETWORK-PROGRAMMING-04》 * |
YOANN DESMOUCEAUX: "6LB: Scalable and Application-Aware Load Balancing with Segment Routing", 《IEEE/ACM TRANSACTIONS ON NETWORKING》 * |
刘洪: "面向业务性能需求的数据中心网络流量管理技术研究", 《中国优秀硕士学位论文全文数据库》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115604272A (zh) * | 2022-11-30 | 2023-01-13 | 苏州浪潮智能科技有限公司(Cn) | 负载均衡方法、装置、系统及系统创建方法及设备和介质 |
CN115604272B (zh) * | 2022-11-30 | 2023-03-14 | 苏州浪潮智能科技有限公司 | 负载均衡方法、装置、系统及系统创建方法及设备和介质 |
Also Published As
Publication number | Publication date |
---|---|
US20210036951A1 (en) | 2021-02-04 |
US20200099610A1 (en) | 2020-03-26 |
US10812374B2 (en) | 2020-10-20 |
EP3854038B1 (en) | 2023-12-27 |
WO2020060826A1 (en) | 2020-03-26 |
CN112740628B (zh) | 2022-09-02 |
EP3854038A1 (en) | 2021-07-28 |
US11283707B2 (en) | 2022-03-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112740628B (zh) | 用于容器联网的利用快速重新路由的分段路由 | |
CN113454971B (zh) | 基于远程智能nic的服务加速 | |
CN109716717B (zh) | 从软件定义的网络控制器管理虚拟端口信道交换机对等体 | |
US11102059B2 (en) | Virtual network health checker | |
CN109791482B (zh) | 用于在微服务环境中缩放服务发现的方法和装置 | |
US10432532B2 (en) | Dynamically pinning micro-service to uplink port | |
US11057387B2 (en) | Infrastructure aware adaptive resource allocation | |
US7984123B2 (en) | Method and system for reconfiguring a virtual network path | |
US8370530B2 (en) | Method and system for controlling network traffic in a blade chassis | |
EP3984181A1 (en) | L3 underlay routing in a cloud environment using hybrid distributed logical router | |
US10230628B2 (en) | Contract-defined execution of copy service | |
EP4075738A1 (en) | Failure protection method for service function chain, device, apparatus, system, and storage medium | |
US9998805B2 (en) | Adaptive telemetry based on in-network cross domain intelligence | |
US11558478B2 (en) | Scaling service discovery in a micro-service environment | |
US11595303B2 (en) | Packet handling in software-defined net working (SDN) environments | |
US9825814B2 (en) | Dynamic attribute based application policy | |
US20240163689A1 (en) | Management orchestrator for a content-centric network in a 6g network |
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 |