CN115801669A - 针对虚拟专用网的容器化路由协议进程 - Google Patents

针对虚拟专用网的容器化路由协议进程 Download PDF

Info

Publication number
CN115801669A
CN115801669A CN202211089760.5A CN202211089760A CN115801669A CN 115801669 A CN115801669 A CN 115801669A CN 202211089760 A CN202211089760 A CN 202211089760A CN 115801669 A CN115801669 A CN 115801669A
Authority
CN
China
Prior art keywords
virtual
network
containerized
router
routing protocol
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.)
Pending
Application number
CN202211089760.5A
Other languages
English (en)
Inventor
V·K·纳拉莫图
A·保罗
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Juniper Networks Inc
Original Assignee
Juniper Networks Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Juniper Networks Inc filed Critical Juniper Networks Inc
Publication of CN115801669A publication Critical patent/CN115801669A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/46Interconnection of networks
    • H04L12/4604LAN interconnection over a backbone network, e.g. Internet, Frame Relay
    • H04L12/462LAN interconnection over a bridge based backbone
    • H04L12/4625Single bridge functionality, e.g. connection of two networks over a single bridge
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/42Centralised routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/46Interconnection of networks
    • H04L12/4633Interconnection of networks using encapsulation techniques, e.g. tunneling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/46Interconnection of networks
    • H04L12/4641Virtual LANs, VLANs, e.g. virtual private networks [VPN]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/76Routing in software-defined topologies, e.g. routing between virtual machines

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

一种针对虚拟专用网的容器化路由协议进程。总体上,本公开描述了用于利用容器化路由协议进程来实现使用路由协议的虚拟专用网的技术。在示例中,一种系统包括用于计算设备集群的容器编排系统,计算设备集群包括计算设备,其中容器编排系统被配置为:向计算节点部署容器化应用;并且响应于向计算节点部署容器化应用,在计算节点中配置虚拟路由和转发(VRF)实例以实现针对容器化应用的虚拟专用网(VPN)。

Description

针对虚拟专用网的容器化路由协议进程
相关申请的交叉引用
本申请要求于2022年6月17日提交的美国专利申请No.17/807,700的权益,该专利申请要求于2021年9月9日提交的美国临时专利申请No.63/242,434的权益,这些申请中的每个申请的全部内容通过引用并入本文。
技术领域
本公开涉及虚拟化计算基础设施,并且更具体地涉及使用虚拟化计算基础设施的虚拟专用网。
背景技术
在典型的云数据中心环境中,存在大量互连服务器,这些服务器提供计算和/或存储能力以运行各种应用。例如,数据中心可以包括一种为订户(即,数据中心的客户)托管应用和服务的设施。例如,数据中心可以托管所有基础设施设备,诸如网络和存储系统、冗余电源和环境控件。在典型的数据中心中,存储系统和应用服务器集群经由由一层或多层物理网络交换机和路由器提供的高速交换结构互连。更复杂的数据中心利用位于各种物理托管设施中的订户支持设备来提供遍布全球的基础设施。
虚拟化数据中心正在成为现代信息技术(IT)基础设施的核心基础。特别地,现代数据中心已经广泛利用虚拟化环境,在虚拟化环境中,虚拟主机(在本文中也称为虚拟执行元素,诸如虚拟机或容器)被部署在物理计算设备的底层计算平台上并且在其上执行。
数据中心内的虚拟化可以提供多个优点。一个优点是,虚拟化可以显著提高效率。随着每个物理CPU具有大量核心的多核微处理器架构的出现,底层物理计算设备(即,服务器)变得越来越强大,虚拟化变得更容易和更高效。第二优点是,虚拟化提供了对计算基础设施的重要控制。随着物理计算资源成为可替代资源,诸如在基于云的计算环境中,计算基础设施的供应和管理变得更加容易。因此,除了由虚拟化提供的效率和增加的投资回报(ROI),企业IT人员通常由于其管理优点而更偏好数据中心中的虚拟化计算集群。
容器化是一种基于操作系统级虚拟化的虚拟化方案。容器是轻量级和可移植的执行元素,其适用于彼此隔离的应用以及与主机隔离的应用。由于容器与主机硬件计算环境没有紧密耦合,因此应用可以绑定到容器镜像并且作为单个轻量级分组在支持底层容器架构的任何主机或虚拟主机上执行。因此,容器解决了如何使软件在不同计算环境中工作的问题。容器提供了从一个计算环境到另一虚拟或物理计算环境一致运行的承诺。
由于容器固有的轻量级特性,单个主机通常可以支持比常规虚拟机(VM)多得多的容器实例。通常来说,容器的生命周期很短,可以比VM更高效地创建和移动,并且容器还可以作为逻辑上相关的元素组进行管理(对于某些编排平台,有时称为“pod”,例如,Kubernetes)。这些容器特性影响对容器网络解决方案的要求:网络应当是敏捷和可扩展的。VM、容器和裸机服务器可能需要在同一计算环境中共存,并且不同应用部署之间通信被启用。容器网络还应当对与用于部署容器化应用的多种类型的编排平台一起工作不可知。
管理应用执行的部署和基础设施的计算基础设施可以涉及两个主要角色:(1)编排——用于跨主机集群进行应用的自动部署、扩展和操作并且提供计算基础设施,其可以包括以容器为中心的计算基础设施;(2)网络管理——用于在网络基础设施中创建虚拟网络,以启用在虚拟执行环境(诸如,容器或VM)上运行的应用之间以及在传统(例如,物理)环境上运行的应用之间的分组通信。软件定义网络有助于网络管理。
发明内容
总体上,本公开描述了用于利用容器化路由协议进程来实现使用路由协议的虚拟专用网的技术。容器网络接口插件(CNI)是一种用于应用容器的网络解决方案,并且是运行时可执行文件,其可以帮助配置容器与托管容器的计算设备(“主机”)的其他组件之间的接口。计算设备可以备选地称为“计算节点”或“服务器”。CNI通常创建网络接口,将网络地址(例如,IP地址)分配给网络接口,并且还可以添加与网络接口相关的路由,诸如针对默认网关和一个或多个名称服务器的路由。
在所描述的技术的示例中,容器化路由协议守护进程(cRPD)是容器化路由协议进程,其被封装为容器以在例如基于Linux的环境中运行。cRPD可以作为容器化进程在主机的用户空间中执行。因此,cRPD在基于Linux的计算节点上提供了丰富的物理路由器路由软件谱系(pedigree)。cRPD提供控制平面功能。cRPD的现有实现(在主机上运行)使用由Linux内核提供的转发。因此,这个控制平面被容器化。虚拟路由器是在计算节点上提供数据平面功能的软件实体。计算节点可以托管被集中编排和配置的VM或容器。虚拟路由器可以与SDN控制器一起工作,以通过交换路由、配置和其他数据来创建覆盖网络。虚拟路由器可以作为Linux内核模块、作为基于DPDK的进程或在SmartNIC上运行。DPDK允许虚拟路由器每秒处理比作为内核模块运行时更多的分组。这个虚拟路由器也可以被容器化。无论虚拟路由器如何实现,cRPD和虚拟路由器都可以一起实现虚拟化提供方边缘(PE)路由器,该路由器可以通过跨核心3层(L3)网络来接收和通告路由来实现各种类型的虚拟专用网(VPN)。VPN的示例类型包括3层VPN(L3VPN)、2层VPN(L2VPN)和以太网VPN(EVPN),尽管其他类型的VPN可以使用本文中描述的技术来实现。
这些技术可以提供实现至少一种实际应用的一种或多种技术优点。例如,虽然本文中描述的虚拟化PE路由器的容器化路由协议进程和虚拟路由器组件是由服务器或其他计算节点(而不是部署在3层网络的逻辑边缘处的物理设备,诸如PE路由器)执行的,但这些技术可以允许运营方在虚拟化计算基础设施中使用服务提供方VPN模型。以这种方式,这些技术可以有助于弥合信息技术(IT)运营方与网络管理员之间的差距,从而允许IT运营方利用底层3层网络基础设施来提供虚拟专用网来托管工作负载,而无需部署和配置物理PE路由器。此外,部署容器化工作负载以部分地作为客户边缘(CE)设备进行操作的租户可以依赖于虚拟化PE路由器来与物理PE路由器类似地操作,以提供VPN来互连容器化工作负载。
作为技术优点的另一示例,尽管有很多不同CNI解决方案可以为由容器编排系统(例如,Kubernetes)部署的容器提供联网,但这些CNI解决方案涉及在主机计算设备上创建虚拟桥接设备以互连在主机计算设备上执行的pod,然后使用隧道机制(诸如,VxLAN或通用路由封装(GRE))来互连在不同主机计算设备上执行的pod。这些CNI通常无法与其他类型的CNI一起工作,从而为部署在主机计算设备集群(例如,Kubernetes集群)内部或外部的pod实现联网。也就是说,为了连接不同计算设备上的工作负载,每个计算设备都需要按照CNI的规定以相同方式实现相同类型的隧道。这可以防止集群中的第一工作负载与另一集群中的第二工作负载之间的连通性,并且还可以防止集群中的第一工作负载与作为CE设备而附接到物理路由器的设备、以及经由CE设备可达的设备之间的连通性。通过利用标准VPN技术,虚拟PE设备可以终止与其他虚拟化PE路由器和甚至也实现这些标准VPN技术的物理PE设备的隧道,从而促进经由任何这些虚拟化PE路由器或物理PE设备的可达的各种设备或工作负载之间的连通性。
在示例中,计算设备包括处理电路系统和存储设备,其中处理电路系统能够访问存储设备;由处理电路系统执行并且被配置为实现虚拟化提供方边缘(PE)路由器的数据平面的虚拟路由器;容器化应用;启用虚拟路由器与容器化应用之间的通信的虚拟网络接口;由处理电路系统执行并且被配置为实现针对虚拟化PE路由器的控制平面的容器化路由协议进程,容器化路由协议进程被配置为:获取由容器化应用经由虚拟网络接口发送的媒体访问控制(MAC)地址或互联网协议(IP)地址;以及执行第一路由协议以生成和输出包括MAC地址或IP地址中的至少一项的路由以实现针对容器化应用的虚拟专用网(VPN)。
在示例中,一种用于包括计算设备的计算设备集群的容器编排系统包括处理电路系统和存储设备,其中处理电路系统被配置为使容器编排系统:向计算节点部署容器化应用;以及响应于向计算节点部署容器化应用,在计算节点中配置虚拟路由和转发(VRF)实例以实现针对容器化应用的虚拟专用网(VPN)。
在示例中,一种非暂态计算机可读介质包括指令,该指令在由计算设备的处理电路系统执行时使计算设备:执行虚拟路由器以实现针对虚拟化提供方边缘(PE)路由器的数据平面;配置虚拟网络接口,以启用虚拟路由器与计算设备上的容器化应用之间的通信;以及执行容器化路由协议进程以实现针对虚拟化PE路由器的控制平面,以:获取由容器化应用经由虚拟网络接口发送的媒体访问控制(MAC)地址或互联网协议(IP)地址,以及执行第一路由协议以生成和输出包括MAC地址或IP地址中的至少一项的路由以实现针对容器化应用的虚拟专用网(VPN)。
本公开的一个或多个示例的细节在附图和以下描述中阐述。从说明书和附图以及从权利要求中,其他特征、目的和优点将很清楚。
附图说明
图1是示出可以在其中实现本文中描述的技术的示例的示例系统的框图;
图2是根据本公开的技术的使用具有容器化路由协议进程的虚拟化路由器来实现VPN的示例系统的框图;
图3是根据本公开中描述的技术的示例计算设备的框图;
图4是根据本公开中描述的技术的作为用于虚拟化计算基础设施的集群的编排器(“orchestrator”)主节点的实例进行操作的示例计算设备的框图;
图5是示出根据本公开中描述的技术的cRPD的示例实现的框图,编排器可以使用pod来部署该cRPD;
图6是示出根据本公开的技术的示例vRouter代理的框图;
图7是示出根据本公开的技术的用于对虚拟路由器转发信息进行编程的示例操作的概念图;
图8是示出根据本公开的技术的用于在具有虚拟化路由器的服务器中配置和通告虚拟网络接口的示例操作的概念图;
图9是示出根据本文中描述的技术的计算设备的组件的示例操作模式的流程图;以及
图10是示出根据本文中描述的技术的示例操作模式的流程图。
在整个说明书和附图中,相同的附图标记表示相同的元素。
具体实施方式
图1是示出可以在其中实现本文中描述的技术的示例的示例系统的框图。该系统包括虚拟化计算基础设施8。通常,数据中心10为客户站点11(示出为“客户11”)的应用和服务提供操作环境,客户站点11具有通过服务提供方网络7耦合到数据中心的一个或多个客户网络。数据中心10A至10B(统称为“数据中心10”)中的每个数据中心可以例如托管基础设施设备,诸如网络和存储系统、冗余电源和环境控件。主要关于更详细地说明的数据中心10A来进一步描述这些技术。
服务提供方网络7耦合到公共网络15,公共网络15可以表示由其他提供方管理的一个或多个网络,并且因此可以形成大规模公共网络基础设施(例如,互联网)的部分。公共网络15可以表示例如局域网(LAN)、广域网(WAN)、互联网、虚拟LAN(VLAN)、企业LAN、3层虚拟专用网(VPN)、由运营服务提供方网络7的服务提供方运营的互联网协议(IP)内联网、企业IP网络或其某种组合。
尽管客户站点11和公共网络15主要被示出和描述为服务提供方网络7的边缘网络,但在一些示例中,客户站点11和公共网络15中的一个或多个可以是数据中心10或另一数据中心内的租户网络。例如,数据中心10A可以托管多个租户(客户),每个租户(客户)与一个或多个虚拟专用网(VPN)相关联,VPN中的每个VPN可以实现客户站点11中的一个客户站点。
服务提供方网络7提供到所附接的客户站点11、数据中心10和公共网络15的基于分组的连通性。服务提供方网络7可以表示由服务提供方拥有和操作以互连多个网络的网络。服务提供方网络7可以实现多协议标签交换(MPLS)转发,并且在这种情况下,可以被称为MPLS网络或MPLS主干网。在一些情况下,服务提供方网络7表示诸如互联网的多个互连的自治系统,该多个互连的自治系统从一个或多个服务提供方提供服务。服务提供方网络7可以是3层网络,并且可以表示核心网或者是核心网的部分。
在一些示例中,数据中心10A可以表示多个地理上分布的网络数据中心中的一个数据中心。如图1的示例中所示,数据中心10A可以是为客户提供网络服务的设施。服务提供方的客户可以是诸如企业和政府等集体实体,或者是个人。例如,网络数据中心可以为多个企业和最终用户托管web服务。其他示例性服务可以包括数据存储、虚拟专用网、业务工程、文件服务、数据挖掘、科学计算或超级计算等。尽管被示出为服务提供方网络7的单独的边缘网络,但数据中心10A的元件(诸如,一个或多个物理网络功能(PNF)或虚拟化网络功能(VNF))可以被包括在服务提供方网络7核心内。
在该示例中,数据中心10A包括存储和/或计算服务器(或“节点”),该存储和/或计算服务器(或“节点”)经由由一层或多层物理网络交换机和路由器提供的交换结构14与被描绘为耦合到架顶式交换机16A至16N的服务器12A至12X(统称为“服务器12”)互连。服务器12是计算设备并且在本文中也可以称为“主机”、“主机设备”、“主机计算设备”、“计算节点”或其他类似术语。尽管在图1中仅详细示出了耦合到TOR交换机16A的服务器12A,但是数据中心10A可以包括耦合到数据中心10A的其他TOR交换机16的多个附加服务器,这样的服务器具有类似于关于服务器12A所示的硬件和软件组件。
所示示例中的交换结构14包括互连的架顶式(TOR)(或其他“叶”)交换机16A至16N(统称为“TOR交换机16”),交换机16A至16N耦合到机箱(或“主干”或“核心”)交换机18A至18M(统称为“机箱交换机18”)的分布层。尽管未示出,但是数据中心10A还可以包括例如一个或多个非边缘交换机、路由器、集线器、网关、诸如防火墙等安全设备、入侵检测和/或入侵防御设备、服务器、计算机终端、膝上型计算机、打印机、数据库、无线移动设备(诸如,蜂窝电话或个人数字助理)、无线接入点、网桥、电缆调制解调器、应用加速器或其他网络设备。数据中心10A还可以包括一个或多个物理网络功能(PNF),诸如物理防火墙、负载均衡器、路由器、路由反射器、宽带网络网关(BNG)、移动核心网元件和其他PNF。
在该示例中,TOR交换机16和机箱交换机18为服务器12提供到IP结构20和服务提供方网络7的冗余(多宿主)连通性。机箱交换机18聚合业务流并且提供TOR交换机16之间的连通性。TOR交换机16可以是提供2层(MAC)和/或3层(例如,IP)路由和/或交换功能的网络设备。TOR交换机16和机箱交换机18各自可以包括一个或多个处理器和存储器并且可以执行一个或多个软件过程。机箱交换机18耦合到IP结构20,IP结构20可以执行3层路由以通过服务提供方网络7在数据中心10A与客户站点11之间路由网络业务。数据中心10A的交换架构仅仅是示例。例如,其他交换架构可以具有更多或更少的交换层。IP结构20可以是或包括一个或多个网关路由器。
术语“分组流”、“业务流”或简称“流”是指源自特定源设备或端点并且被发送给特定目的地设备或端点的分组集。例如,单个分组流可以由5元组标识:<源网络地址,目的地网络地址,源端口,目的地端口,协议>。这个5元组通常标识接收的分组所对应于的分组流。n元组是指从5元组中抽取的任何n个项。例如,针对分组的2元组可以是指针对该分组的<源网络地址,目的地网络地址>或<源网络地址,源端口>的组合。
服务器12各自可以表示计算服务器。例如,服务器12中的每个服务器可以表示诸如基于x86处理器的服务器的计算设备,,该计算设备被配置为根据本文中描述的技术进行操作。服务器12可以为作为虚拟化计算基础设施的示例的NFV架构提供网络功能虚拟化基础设施(NFVI)。
服务器12中的任何服务器可以通过虚拟化服务器的资源来配置具有虚拟执行元素,以提供在服务器上执行的一个或多个进程(应用)之间的隔离。“基于管理程序的”或“硬件级”或“平台”虚拟化是指创建虚拟机,每个虚拟机包括用于执行一个或多个进程的客户操作系统。通常,虚拟机提供用于在隔离的虚拟环境中执行应用的虚拟化/客户操作系统。因为虚拟机是从主机服务器的物理硬件虚拟化的,所以执行的应用与主机的硬件和其他虚拟机两者都是隔离的。每个虚拟机可以配置有用于在对应虚拟网络上进行通信的一个或多个虚拟网络接口(VNI)。
虚拟网络是在物理网络之上实现的逻辑结构。虚拟网络可以用于替代基于VLAN的隔离并且在虚拟化数据中心(例如,数据中心10A)中提供多租户。每个租户或应用可以具有一个或多个虚拟网络。除非安全策略明确允许,否则每个虚拟网络都可以与所有其他虚拟网络隔离。
虚拟网络可以使用数据中心10网关路由器(图1中未示出)而被连接到物理多协议标签交换(MPLS)3层虚拟专用网(L3VPN)和以太网虚拟专用网(EVPN)网络并且跨其扩展。虚拟网络也可以用于实现网络功能虚拟化(NFV)和服务链。
虚拟网络可以使用多种机制来实现。例如,每个虚拟网络可以实现为虚拟局域网(VLAN)、虚拟专用网(VPN)等。虚拟网络也可以使用两个网络来实现——由IP结构20和交换结构14组成的物理底层网络、和虚拟覆盖网络。物理底层网络的作用是提供“IP结构”,“IP结构”提供从任何物理设备(服务器、存储设备、路由器或交换机)到任何其他物理设备的单播IP连通性。底层网络可以提供从网络中的任何点到网络中的任何其他点的统一的低延迟、无阻塞、高带宽连通性。
如以下关于虚拟路由器21A进一步描述的,在服务器12中运行的虚拟路由器可以在它们之间使用动态“隧道”网格在物理底层网络之上创建虚拟覆盖网络。例如,这些覆盖隧道可以是GRE/UDP隧道、VXLAN隧道或NVGRE隧道之上的MPLS。底层物理路由器和交换机可以不存储任何针对虚拟机或其他虚拟执行元素的每租户状态,诸如任何媒体访问控制(MAC)地址、IP地址或策略。例如,底层物理路由器和交换机的转发表可以仅包含物理服务器12的IP前缀或MAC地址。(将虚拟网络连接到物理网络的网关路由器或交换机是例外,并且可以包含租户MAC或IP地址。)
服务器12的虚拟路由器21A至虚拟路由器21X(统称为“虚拟路由器21”)通常包含每租户状态。例如,它们可以每虚拟网络包含单独的转发表(路由实例)。该转发表包含虚拟机或其他虚拟执行元素(例如,容器的pod)的IP前缀(在3层覆盖的情况下)或MAC地址(在2层覆盖的情况下)。没有单个虚拟路由器21需要包含针对整个数据中心中的所有虚拟机的所有IP前缀或所有MAC地址。给定虚拟路由器21只需要包含本地存在于服务器12上的那些路由实例(即,它们具有至少一个虚拟执行元素存在于服务器12上并且需要该路由实例。)
网络控制器24的控制平面节点或物理网关路由器(或交换机)之间的控制平面协议可以是BGP(并且可以是用于管理的Netconf)。也就是说,相同的控制平面协议也可以用于MPLS L3VPN和MPLS EVPN。例如,网络控制器24与虚拟路由器21之间的协议可以基于XMPP。
“基于容器的”或“操作系统”虚拟化是指用于在单个机器(虚拟或物理)上运行多个隔离系统的操作系统的虚拟化。这样的隔离系统表示容器,诸如由开源DOCKER容器应用或由CoreOS Rkt(“Rocket”)提供的容器。像虚拟机一样,每个容器都被虚拟化,并且可以与主机和其他容器保持隔离。然而,与虚拟机不同,每个容器都可以省略个体操作系统,而是提供应用套件和应用特定库。通常,容器作为隔离的用户空间实例由主机执行,并且可以与在主机上执行的其他容器共享操作系统和公共库。因此,与虚拟机相比,容器可能需要更少的处理能力、存储和网络资源。一个或多个容器组可以被配置为共享一个或多个虚拟网络接口用于在对应虚拟网络上通信。
在一些示例中,容器由其主机内核管理以允许资源(CPU、存储器、块I/O、网络等)的限制和优先级划分,而无需启动任何虚拟机,在一些情况下使用命名空间隔离功能,该功能允许完全隔离应用(例如,给定容器)对操作环境的视图,包括进程树、网络、用户标识符和挂载的文件系统。在一些示例中,容器可以根据Linux容器(LXC)来部署,LXC是操作系统级虚拟化方法,其用于使用单个Linux内核在控制主机上运行多个隔离的Linux系统(容器)。
Kubernetes Pod是一个或多个逻辑相关容器组,它们具有共享的命名空间和共享的文件系统卷。每个pod被分配有唯一的IP地址。pod的容器共享网络命名空间,该网络命名空间包括IP地址和网络端口。pod的容器可以使用localhost彼此通信。但是,当pod中的容器与pod外部的实体通信时,容器可以共享IP地址和端口空间。pod中的容器也可以使用标准的进程间通信彼此通信。不同pod中的容器具有不同IP地址。想要与在不同pod中运行的容器交互的容器可以使用IP网络来通信,并且这通常使用容器网络接口(CNI)来建立。
服务器12托管针对一个或多个虚拟网络的虚拟网络端点,该虚拟网络端点在此通过由IP结构20和交换结构14表示的物理网络来操作。虽然主要针对基于数据中心的交换网络进行描述,但其他物理网络(诸如,服务提供方网络7)可以是一个或多个虚拟网络的基础。
服务器12中的每个服务器可以托管一个或多个虚拟执行元素,每个虚拟执行元素具有用于在物理网络中配置的一个或多个虚拟网络的至少一个虚拟网络端点。针对虚拟网络的虚拟网络端点可以表示针对共享虚拟网络的虚拟网络接口的一个或多个虚拟执行元素。例如,虚拟网络端点可以是虚拟机、一个或多个容器集(例如,pod)或另一(多个)其他虚拟执行元素,诸如虚拟网络的3层端点。术语“虚拟执行元素”包括为应用提供至少部分独立的执行环境的虚拟机、容器和其他虚拟化计算资源。术语“虚拟执行元素”还可以包含一个或多个容器的pod。如图1所示,服务器12A以pod 22A至22C的形式托管多个虚拟网络端点,每个pod具有一个或多个容器。然而,在给定服务器12的硬件资源限制的情况下,服务器12可以执行尽可能多的虚拟执行元素。虚拟网络端点中的每个虚拟网络端点可以使用一个或多个虚拟网络接口来执行分组I/O或以其他方式处理分组。例如,虚拟网络端点可以使用由NIC 13A启用的一个虚拟硬件组件(例如,SR-IOV虚拟功能)来在与TOR交换机16A的一个或多个通信链路上执行分组I/O和接收/发送分组。下面描述虚拟网络接口的其他示例。
服务器12包括相应网络接口卡(NIC)13A至13X(统称为“NIC 13”),NIC 13A至13X各自包括至少一个接口以通过通信链路来与TOR交换机16交换分组。例如,服务器12A包括NIC 13A,NIC 13A被示出为具有到TOR交换机16A的两个链路。任何NIC 13可以为虚拟化输入/输出(I/O)提供一个或多个虚拟硬件组件。用于I/O的虚拟硬件组件可以是物理NIC(“物理功能”)的虚拟化。例如,在外围组件接口特殊兴趣组SR-IOV规范中描述的单根I/O虚拟化(SR-IOV)中,网络接口卡(或“网络适配器”)的PCIe物理功能被虚拟化,以将一个或多个虚拟网络接口呈现为“虚拟功能”以供在服务器12上执行的相应端点使用。以这种方式,虚拟网络端点可以共享相同PCIe物理硬件资源,并且虚拟功能是虚拟硬件组件的示例。作为另一示例,一个或多个服务器12可以实现Virtio,其是一种可用的准虚拟化框架,例如,可用于Linux操作系统,Virtio提供模拟的NIC功能作为一种类型的虚拟硬件组件以向虚拟网络端点提供虚拟网络接口。作为另一示例,一个或多个服务器12可以实现Open vSwitch以在一个或多个虚拟NIC(vNIC)之间针对托管的虚拟机执行分布式虚拟多层交换,其中这样的vNIC还可以表示向虚拟网络端点提供的虚拟网络接口的一种类型的虚拟硬件组件。在某些情况下,虚拟硬件组件是虚拟I/O(例如,NIC)组件。在某些情况下,虚拟硬件组件是SR-IOV虚拟功能。在一些示例中,服务器12中的任何服务器可以实现Linux网桥,该Linux网桥模拟硬件网桥并且在服务器的虚拟网络接口之间或者在服务器的虚拟网络接口与服务器的物理网络接口之间转发分组。对于由服务器托管的容器的Docker实现,在容器之间切换分组的在服务器上执行的Linux网桥或其他操作系统网桥可以称为“Docker网桥”。如本文中使用的,术语“虚拟路由器”可以涵盖Contrail或Tungsten Fabric虚拟路由器、Open vSwitch(OVS)、OVS网桥、Linux网桥、Docker网桥、或位于主机设备上并且在一个或多个虚拟网络的虚拟网络端点之间执行分组的交换、桥接或路由的其他设备和/或软件,其中虚拟网络端点由服务器12中的一个或多个服务器托管。虚拟路由器21A是这样的虚拟路由器的示例。
服务器12中的一个或多个服务器可以各自包括对应虚拟路由器21,虚拟路由器21执行针对数据中心10A内的对应虚拟网络的一个或多个路由实例,以提供虚拟网络接口并且在虚拟网络端点之间路由分组。路由实例中的每个路由实例可以与网络转发表相关联。路由实例中的每个路由实例可以包括用于互联网协议虚拟专用网(IP-VPN)的虚拟路由和转发实例(VRF)。由服务器12A的虚拟路由器21A(示出为“vROUTER 21A”)例如从数据中心10A的底层物理网络结构(即,IP结构20和交换结构14)接收的分组可以包括外部报头,该外部报头用于允许物理网络结构将有效载荷或“内部分组”隧道传输到执行虚拟路由器的服务器12A的网络接口卡13A的物理网络地址。外部报头不仅可以包括服务器的网络接口卡13A的物理网络地址,还可以包括虚拟网络标识符,诸如标识虚拟网络中的一个虚拟网络的VxLAN标签或多协议标签交换(MPLS)标签、以及由虚拟路由器21A执行的对应路由实例。内部分组包括内部报头,该内部报头具有符合由虚拟网络标识符标识的虚拟网络的虚拟网络寻址空间的目的地网络地址。
虚拟路由器21终止虚拟网络覆盖隧道并且基于针对分组的隧道封装报头来确定针对接收的分组的虚拟网络,并且将分组转发给针对分组的适当目的地虚拟网络端点。对于服务器12A,例如,对于从由服务器12A托管的虚拟网络端点(例如,任何pod 22A至22C)出站的分组中的每个分组,虚拟路由器21A附接隧道封装报头,该隧道封装报头指示用于生成封装的或“隧道”分组的该分组的虚拟网络,并且虚拟路由器21A经由针对虚拟网络的覆盖隧道将封装的分组输出到物理目的地计算设备,诸如服务器12中的另一服务器。如本文中使用的,虚拟路由器21可以执行隧道端点的操作,以封装由虚拟网络端点发出的内部分组以生成隧道分组并且解封装隧道分组以获取内部分组以路由到其他虚拟网络端点。
在各种示例中,虚拟路由器21中的每个虚拟路由器可以表示基于SmartNIC的虚拟路由器、基于内核的虚拟路由器(即,作为内核模块来执行)或启用数据平面开发套件(DPDK)的虚拟路由器。启用DPDK的虚拟路由器21A可以使用DPDK作为数据平面。在这种模式下,虚拟路由器21A作为链接到DPDK库(未示出)的用户空间应用来运行。这是虚拟路由器的性能版本,并且通常由电信公司使用,其中VNF通常是基于DPDK的应用。虚拟路由器21A作为DPDK虚拟路由器的性能可以实现比作为基于内核的虚拟路由器进行操作的虚拟路由器高十倍的吞吐量。物理接口由DPDK的轮询模式驱动程序(PMD)使用,而不是由Linux内核的基于中断的驱动程序使用。
用户I/O(UIO)内核模块(诸如vfio或uio_pci_generic)可以用于将物理网络接口的寄存器公开到用户空间中,使得DPDK PMD可以访问它们。当NIC 13A绑定到UIO驱动程序时,它会从Linux内核空间移动到用户空间,并且因此不再由Linux OS管理或可见。因此,完全管理NIC 13的是DPDK应用(即,本示例中的虚拟路由器21A)。这包括分组轮询、分组处理和分组转发。用户分组处理步骤可以由虚拟路由器21A DPDK数据平面执行,而内核(图1中未示出的内核)的参与有限或不参与。与中断模式相比,这种“轮询模式”的性质使虚拟路由器21A DPDK数据平面分组处理/转发效率更高,尤其是在分组速率高时。在分组I/O期间,中断和上下文切换是有限的或没有。
DPDK vRouter的示例的其他细节可以见于“DAY ONE:CONTRAIL DPDK vROUTER”(2021年,Kiran KN等人,Juniper Networks,Inc.),其通过引用整体并入本文。
服务器12包括并且执行容器化路由协议守护进程25A至25X(统称为“cRPD 25”)。容器化路由协议守护进程(cRPD)是路由协议进程,它被包装为容器,并且可以在基于Linux的环境中运行。cRPD可以作为容器化进程在主机的用户空间中执行。因此,在某些情况下,cRPD使得基于Linux的计算节点(例如,服务器12)上的物理路由器的丰富路由软件谱系可用。cRPD提供控制平面功能。因此,这个控制平面被容器化。例如,cRPD 25A实现针对由服务器12A执行的虚拟化路由器32A的控制平面。
同时,虚拟路由器21是在服务器12上提供数据平面功能的软件实体。CRPD 25A可以将由服务器12A的Linux内核提供的转发平面用于基于内核的虚拟路由器21A。CRPD 25A可以备选地使用虚拟路由器21的启用DPDK的实例或SmartNIC执行的实例。虚拟路由器21A可以与SDN控制器(例如,网络控制器24)一起工作,以通过交换路由、配置和其他数据来创建覆盖网络。虚拟路由器21A可以被容器化。在一些示例中,以组合方式,容器化cRPD和容器化虚拟路由器因此可以是功能齐全的容器化虚拟化路由器32A。
虚拟化计算基础设施8实现自动化平台,该自动化平台用于跨服务器12来自动化虚拟执行元素的部署、缩放和操作,以提供用于执行应用工作负载和服务的虚拟化基础设施。在一些示例中,平台可以是容器编排平台,该容器编排平台提供以容器为中心的基础设施,该基础设施用于容器的自动化部署、缩放和操作以提供以容器为中心的基础设施。在虚拟化计算基础设施的上下文中,“编排(Orchestration)”通常是指向编排平台可用的主机服务器提供、调度和管理虚拟执行元素和/或在这样的虚拟执行元素上执行的应用和服务。具体地,容器编排允许容器协调,并且是指例如容器通过容器编排平台对托管服务器的部署、管理、缩放和配置。编排平台的示例实例包括Kubernetes、Docker swarm、Mesos/Marathon、OpenShift、OpenStack、VMware和Amazon ECS。
编排器23表示针对容器编排系统的一个或多个编排组件。编排器23至少将容器化RPD 25进行编排。在一些示例中,数据平面虚拟路由器21也由编排器23容器化和编排。例如,数据平面可以是基于DPDK的虚拟路由器。
计算基础设施8的自动化平台的元素至少包括服务器12、编排器23和网络控制器24。容器可以使用基于集群的框架被部署到虚拟化环境,在该框架中,集群的集群主节点管理容器到集群的一个或多个集群从节点的部署和操作。本文中使用的术语“主节点”和“从节点”涵盖用于区分集群的主要管理元素和集群的主要容器托管设备的类似设备的不同编排平台术语。例如,Kubernetes平台使用术语“集群主节点”和“从节点”,而Docker Swarm平台涉及集群管理器和集群节点。
编排器23和网络控制器24可以在单独的计算设备上执行,在同一计算设备上执行。编排器23和网络控制器24中的每个可以是在一个或多个计算设备上执行的分布式应用。编排器23和网络控制器24可以实现针对一个或多个集群的相应主节点,每个集群具有由相应服务器12(也称为“计算节点”)实现的一个或多个从节点。
通常,网络控制器24控制数据中心10A结构的网络配置以例如建立针对虚拟网络端点之间的分组的通信一个或多个虚拟网络。网络控制器24提供逻辑上和在某些情况下物理上集中的控制器,该控制器用于促进数据中心10A内的一个或多个虚拟网络的操作。在一些示例中,网络控制器24可以响应于从编排器23和/或管理员/操作员接收的配置输入而操作。关于与数据中心10A的其他设备或其他软件定义网络一起操作的网络控制器24的附加信息可以见于2013年6月5日提交的题为“PHYSICAL PATH DETERMINATION FOR VIRTUALNETWORK PACKET FLOWS(针对虚拟网络分组流的物理路径确定)”的国际申请号PCT/US2013/044378;以及2014年3月26日提交的题为“Tunneled Packet Aggregation forVirtual Networks(针对虚拟网络的隧道分组聚合)”的美国专利申请No.14/226,509,其各自通过引用并入本文,就好像在此完全阐述一样。
通常,编排器23控制容器跨服务器12集群的部署、缩放和操作,并且提供计算基础设施,该计算基础设施可以包括以容器为中心的计算基础设施。编排器23以及在某些情况下的网络控制器24可以实现针对一个或多个Kubernetes集群的相应集群主机。例如,Kubernetes是容器管理平台,其提供跨公有云和私有云的可移植性,云中每个云可以为容器管理平台提供虚拟化基础设施。下面参考图4描述Kubernetes容器编排系统的示例组件。
在一个示例中,pod 22A是Kubernetes pod并且是虚拟网络端点的示例。pod是一个或多个逻辑相关容器组(图1中未示出)、容器的共享存储、以及关于如何运行容器的选项。在为执行而实例化的情况下,pod也可以称为“pod副本”。pod 22A的每个容器是虚拟执行元素的示例。pod的容器始终共同位于单个服务器上,被共同调度,并且在共享上下文中运行。pod的共享上下文可以是Linux命名空间集、cgroup和其他隔离方面。在pod的上下文中,个体应用可以应用了另外的子隔离。通常,pod内的容器具有公共IP地址和端口空间,并且能够经由localhost彼此检测。因为它们具有共享上下文,所以pod内的容器也使用进程间通信(IPC)彼此通信。IPC的示例包括SystemV信号量或POSIX共享存储器。通常,作为不同pod的成员的容器具有不同IP地址,并且在没有用于启用该特征的配置的情况下无法通过IPC进行通信。作为不同pod的成员的容器通常经由pod IP地址彼此通信。
服务器12A包括用于运行容器化应用的容器平台19A,诸如pod22A的容器化应用。容器平台19A从编排器23接收在服务器12A中获取和托管容器的请求。容器平台19A获取并且执行容器。
容器平台19A包括配置针对虚拟网络端点的虚拟网络接口的容器网络接口(CNI)17A。编排器23和容器平台19A使用CNI 17A来管理包括pod 22A的pod的联网。例如,CNI 17A创建虚拟网络接口以将pod连接到虚拟路由器21A并且使得这些pod的容器能够通过虚拟网络经由虚拟网络接口与其他虚拟网络端点通信。例如,CNI 17A可以将针对虚拟网络的虚拟网络接口插入到pod 22A中的针对容器的网络命名空间中,并且配置(或请求配置)虚拟路由器21A中的虚拟网络的虚拟网络接口,使得虚拟路由器图21A被配置为向pod 22A的容器发送经由虚拟网络接口从虚拟网络接收的分组,并且在虚拟网络上发送经由虚拟网络接口从pod 22A的容器接收的分组。CNI 17A可以分配网络地址(例如,针对虚拟网络的虚拟IP地址)并且可以建立虚拟网络接口的路由。在Kubernetes中,默认情况下,所有pod都可以与所有其他pod通信,而无需使用网络地址转换(NAT)。在某些情况下,编排器23和网络控制器24创建由所有命名空间共享的服务虚拟网络和pod虚拟网络,从该服务虚拟网络和pod虚拟网络,可以分别分配服务和pod网络地址。在某些情况下,在Kubernetes集群中产生的所有命名空间中的所有pod可以能够彼此通信,并且针对所有pod的网络地址可以从由编排器23指定的pod子网来分配。当用户创建针对pod的隔离命名空间时,编排器23和网络控制器24可以创建针对新的隔离命名空间的新的pod虚拟网络和新的共享服务虚拟网络。在Kubernetes集群中产生的隔离命名空间中的pod从新的pod虚拟网络中提取网络地址,并且针对这样的pod的对应服务从新的服务虚拟网络中提取网络地址。
pod之间的Kubernetes联网是经由称为容器网络接口(CNI)(也称为容器网络接口插件)的插件来进行的。然而,典型CNI的联网能力相当初级,并且不适用于CNI所服务于的容器化网络功能在网络中发挥关键作用的情况。如本文所述,虚拟化路由器更适合这些情况。虚拟化路由器是具有容器化控制平面的路由器,容器化控制平面允许基于x86或ARM的主机成为网络路由系统的一级成员,以参与诸如中间系统到中间系统(IS-IS)和边界网关协议(BGP)等协议并且提供基于多协议标签交换/分段路由(MPLS/SR)的传输和多租户。换言之,平台不是网络的附属物(如客户边缘(CE)路由器),而是可以作为提供方边缘(PE)路由器来操作。
CNI 17A可以表示用于服务器12A的库、插件、模块、运行时或其他可执行代码。CNI17A可以至少部分符合容器网络接口(CNI)规范或rkt Networking Proposal。CNI 17A可以表示Contrail、OpenContrail、Multus、Calico、cRPD或其他CNI。CNI 17A可以备选地称为网络插件或CNI插件或CNI实例。例如,可以由Multus CNI调用单独的CNI来建立针对pod 202A的不同虚拟网络接口。
CNI 17A由编排器23调用。为了CNI规范的目的,容器可以被认为是Linux网络命名空间的同义词。这所对应于的单元取决于特定容器运行时实现:例如,在诸如rkt等应用容器规范的实现中,每个pod在唯一的网络命名空间中运行。然而,在Docker中,通常针对每个单独的Docker容器存在网络命名空间。出于CNI规范的目的,网络是指唯一可寻址并且可以彼此通信的实体组。这可以是个体容器、机器/服务器(真实或虚拟)、或某个其他网络设备(例如,路由器)。容器可以从概念上被添加到一个或多个网络或从一个或多个网络中移除。CNI规范为符合要求的插件(“CNI插件”)指定了很多注意事项。
因为cRPD 25A是云原生应用,所以它支持使用Kubernetes清单或Helm图表进行安装。这包括cRPD 25A作为针对虚拟化路由器32A的控制平面的初始配置,包括路由协议和一个或多个虚拟专用网的配置。cRPD可以在几秒钟内编排和配置,其中与网络的其余部分的所有路由协议邻接项启动并且运行。在cRPD 25A生命周期内的持续存在的配置变化可以经由CLI、Kubernetes清单、NetConf或Terraform的选择来进行。
通过采用Kubernetes CNI框架,虚拟化路由器32A可以减轻在使用容器化设备而不是其物理对应物时招致的传统操作开销。通过公开适当的设备接口,虚拟化路由器32A可以将虚拟设备的操作模型标准化为物理设备,从而消除在运营方的网络操作环境中采用的障碍。虚拟化路由器32A可以向任何经训练的操作团队呈现熟悉的路由设备外观和感觉。虚拟化路由器32A具有与基于硬件的平台类似的特征和能力以及类似的操作模型。同样,域控制器可以使用它与任何其他路由器一起使用的协议来与虚拟化路由器32A通信并且控制虚拟化路由器32A,例如Netconf/OpenConfig、gRPC、路径计算元素协议(PCEP)或其他接口。
根据本公开的技术,虚拟化路由器32A可以参与IS-IS、开放最短路径优先(OSPF)、BGP和/或其他内部或外部路由协议,并且与其他路由器交换路由协议消息,无论是物理路由器还是虚拟化路由器32B至32X(统称为“虚拟化路由器32”)驻留在其他主机上。此外,可以使用MPLS,通常基于分段路由(SR)。这样做的原因有两个:在需要时允许业务工程,以及通过使用VPN(诸如,基于MPLS的3层VPN或EVPN)来支持多租户。
由服务提供方提供的虚拟专用网(VPN)由两个拓扑区域组成:提供方的网络和客户的网络。客户的网络通常位于多个物理站点处,并且也是私有的(非互联网)。客户站点通常由位于单个物理位置处的路由器组或其他网络设备组成。提供方的网络(其在整个公共互联网基础设施上运行)由为客户网络提供VPN服务的路由器以及提供其他服务的路由器组成。提供方的网络连接各种客户站点,因为提供方的网络在客户和提供方看来是专用网络。
为了确保VPN保持私有并且与其他VPN和公共互联网隔离,提供方的网络维护使来自不同VPN的路由信息保持分离的策略。只要提供方的策略将来自不同VPN的路由分开,提供方就可以服务于多个VPN。同样,客户站点可以属于多个VPN,只要它将来自不同VPN的路由分开。在本公开中,对客户或客户网络的引用可能不必然是指独立实体或企业,而是可以是指数据中心租户、跨3层网络经由VPN连接的工作负载集、或某种其他逻辑分组。
尽管被开发为跨服务提供方网络和公共互联网运行,但VPN技术可以由任何3层网络提供,并且类似的术语被使用。提供方网络通常被称为3层核心网或简称为3层网络或核心网。3层VPN在OSI模型的3层(网络层)操作。3层VPN由通过核心网连接的客户网络集组成。对等模型用于连接到客户站点,其中提供方边缘(PE)路由器在与客户边缘(CE)设备对等时获知客户路由。公共路由信息使用多协议BGP(MP-BGP)跨整个核心网而被共享,并且VPN业务使用MPLS在PE路由器之间被转发。3层VPN可以基于Rosen&Rekhter,“BGP/MPLS IP虚拟专用网(VPN)”(征求意见4364,互联网工程任务组,网络工作组,2006年2月),其通过引用整体并入本文。
客户边缘(CE)设备连接到提供方网络并且可以(或可以不)提供到其他网络的可达性。PE设备是3层核心网的部分,并且连接到一个或多个CE设备以提供VPN服务。在PE路由器中,IP路由表(也称为全局路由表或默认路由表)包含未被包括在虚拟路由和转发(VRF)表中的服务提供方或底层网络路由。提供方边缘设备需要IP路由表才能彼此到达,而VRF表需要能够到达特定VPN上的所有客户设备。例如,具有到CE路由器的接口A和面向核心的接口B的PE路由器将接口A地址放在VRF中,并且将接口B地址放在针对默认VRF的全局IP路由表中。
虚拟路由和转发(VRF)表区分不同VPN的路由、以及VPN路由与PE设备上的提供方/底层路由。这些路由可以包括重叠的专用网络地址空间、客户特定的公共路由、以及对客户有用的PE设备上的提供方路由。VRF实例由一个或多个路由表、派生转发表、使用转发表的接口、以及确定转发表中的内容的策略和路由协议组成。因为每个实例都是为特定VPN而配置的,所以每个VPN都有用于控制其操作的单独的表、规则和策略。为具有到CE设备的连接的每个VPN都被创建有单独的VRF表。VRF表填充有从与VRF实例相关联的直接连接的CE设备接收的路由、以及从同一VPN中的其他PE路由器接收的路由。
3层VPN在直接连接的PE路由器与CE设备之间使用对等路由模型。也就是说,不需要在3层核心网上的多跳来连接PE路由器和CE设备对。PE路由器基于BGP路由区分符在本地和跨整个提供方网络来向属于同一VPN的所有CE设备分发路由信息。每个VPN都有自己的用于该VPN的路由表,该路由表与CE和PE对等体中的路由表协调。PE路由器可以连接一个以上的CE设备,因此PE路由器针对与VPN附接的每个CE具有通用IP路由表和VRF表。
在2层VPN中,业务以L2格式被转发给路由器。它由MPLS通过3层核心网来传输,然后在接收站点处被转换回L2格式。您可以在发送站点和接收站点处配置不同的2层格式。在2层VPN上,路由由CE设备执行,CE设备必须选择适当的链路来发送业务。接收业务的PE路由器跨3层核心网将业务发送给连接到接收CE设备的PE路由器。PE路由器不需要存储或处理VPN路由。PE路由器只需要被配置为将数据发送给适当的隧道。PE路由器使用2层VPN接口在CE设备之间传输业务。VPN拓扑由PE路由器上配置的策略来确定。
以太网VPN(EVPN)是一种基于标准的技术,它通过IP或IP/MPLS主干网络在不同的2层域之间提供虚拟多点桥接连通性。与诸如3层VPN和虚拟专用LAN服务(VPLS)等其他VPN技术一样,在提供方边缘(PE)路由器上配置有EVPN实例,以保持客户之间的逻辑服务分离。PE路由器连接到CE设备,该CE设备可以是路由器、交换机或主机。然后,PE路由器使用多协议BGP(MP-BGP)来交换可达性信息,并且封装的业务在PE路由器之间被转发。EVPN架构的元素与其他VPN技术(诸如3层VPN)相同,EVPN MAC-VRF是一种类型的VRF,其用于在EVPN实例的PE路由器上存储MAC地址。EVPN实例跨越参与特定EVPN的PE设备,并且因此在概念上类似于3层VPN。关于EVPN的其他信息可以见于Sajassi等人的“基于BGP MPLS的以太网VPN(BGPMPLS-Based Ethernet VPN)”(征求意见7432,互联网工程任务组,2015年2月),其通过引用整体并入本文。
虚拟化路由器32A可以作为提供方边缘(PE)路由器(即,虚拟化PE路由器)操作。虚拟化路由器32A可以经由BGP与网络中的其他PE路由器交换VPN路由,而不管那些其他PE是物理路由器还是驻留在其他主机上的虚拟化路由器32。每个租户可以被放置在虚拟化路由器32A上的单独的VRF表中,从而在租户之间提供正确程度的隔离和安全性,就像常规的VPN服务一样。这巧妙地解决了Kubernetes本身不提供这样的隔离的问题。VPN是一种在网络中实现多租户的久经考验的方法,并且受到从其网络服务提供方处购买该服务的全球很多大公司的信任。
虚拟化路由器32可以以这种方式将全部范围的路由能力带入托管容器化应用的计算基础设施。这可以让平台充分参与运营方的网络路由系统并且促进多租户。它可以提供与基于硬件的路由器相同的熟悉的外观、操作体验和控制平面接口,从而为容器化应用提供虚拟专用网。
在一些情况下,cRPD 25A可以与两个数据平面进行接口,用于计算节点的内核网络栈和基于DPDK的虚拟路由器。CRPD 25A可以利用内核的网络堆栈专门建立针对DPDK快速路径的路由。cRPD25A接收的路由信息可以包括底层路由信息和覆盖路由信息。CRPD25A可以在内核中可见的vHost接口上运行路由协议,并且cRPD 25A可以在内核FIB中安装与内部网关协议(IGP)学习的路由(底层)相对应的转发信息库(FIB)更新(例如,以使得能够建立到这些目的地的多跳内部边界网关协议(iBGP)会话)。同时,虚拟路由器21A可以向cRPD25a通知由CNI 17A为计算节点而创建的应用pod接口。CRPD 25A可以将到这些pod接口的可达性作为例如L3VPN网络层可达性信息(NLRI)通告给网络的其余部分。对应多协议标签交换(MPLS)路由可以在虚拟路由器21A上被编程,因为这些标签的下一跳是对pod接口的“POP转发”操作,并且这些接口仅在虚拟路由器中可见。类似地,通过BGP L3VPN接收的可达性信息可以只被编程到虚拟路由器21A,因为POD可能需要这样的可达性信息以进行转发。
cRPD 25A包括默认VRF 28(示出为“D.VRF 28”)和VRF 29A至29B(统称为“VRF29”)。默认VRF 28存储全局路由表。cRPD 25A将从VRF 29得到的转发信息编程到虚拟路由器21A中。以这种方式,虚拟路由器21A实现用于VRF 29的VPN,其被示出为被包括在虚拟路由器21A和cRPD 25A两者中。
cRPD 25A被配置为以主机网络模式操作,也称为本地网络。因此,cRPD 25A使用其主机(即,服务器12A)的网络命名空间和(多个)IP地址。cRPD 25A具有对NIC 13A的网络接口30A至30B的可见性和访问权,网络接口30A至30B被插入默认VRF 28中并且被cRPD 25A视为面向核心的接口。接口30A至30B连接到交换结构14并且可以是以太网接口。接口30被cRPD 25A视为和用作面向核心的接口以提供VPN,因为接口30可以用于通过3层网络来传输VPN服务业务,该3层网络由交换结构14、IP结构20、服务提供方网络7或公共网络15中的一个或多个组成。
根据本公开的技术,CNI 17A使用由网络控制器24提供的虚拟网络接口配置数据来配置pod 22A至22C与虚拟化路由器32A之间的虚拟网络接口26(示出为“VNI 26”)以启用网络pod 22与虚拟路由器21A之间的通信,从而允许应用通常部署在服务提供方网络中的VPN服务模型。pod 22A至22C被有效地建模为CE路由器或主机设备,并且pod 22A至22C能够经由虚拟网络接口26与被建模为PE路由器的虚拟化路由器32A交互。虚拟网络接口26有效地变成附接电路(用于L3VPN)或以太网段的链路(用于EVPN),以将pod 22连接到作为PE路由器进行操作的虚拟化路由器32A的VRF 29。
虚拟网络接口26中的每个虚拟网络接口被插入到虚拟化路由器32A的VRF 29A至29B中的至少一个VRF中。在图1中,pod 22A具有与VRF 29A的虚拟网络接口26,pod 22B具有与VRF 29A和29B的虚拟网络接口26,并且pod 22C具有与VRF 29B的虚拟网络接口26。虚拟网络接口26可以表示veth对,其中veth对的每个端是单独的设备(例如,Linux/Unix设备),每个veth对的一端插入VRF,一端插入pod。veth对或veth对的一端有时称为“端口”。虚拟网络接口可以表示具有媒体访问控制(MAC)地址的macvlan网络,该MAC地址被分配给pod 22和虚拟路由器21A,以用于pod 22的容器与虚拟路由器21A之间的通信。在启用DPDK的虚拟路由器21A的情况下,虚拟网络接口26各自可以表示DPDK(例如,vhost)接口,其中DPDK接口的一端插入VRF,一端插入pod。在一些示例中,pod22可以作为vhost服务器操作,虚拟路由器21A作为vhost客户端操作,以建立DPDK接口。在一些示例中,虚拟路由器21A可以作为vhost服务器操作,其中pod 22作为vhost客户端操作,以建立DPDK接口。例如,虚拟网络接口可以备选地称为虚拟机接口(VMI)、pod接口、容器网络接口、tap接口、veth接口或简称为网络接口(在特定上下文中)。
结果,cRPD 25A和任何pod 22可以成为虚拟网络接口26之上的路由协议对等体。分配给pod 22的IP地址经由在pod 22与cRPD 25A之间交换的路由协议消息来获知。cRPD25A使用与核心3层网络中的路由协议对等体的路由协议对等会话在面向核心的接口30中的一个或多个接口上执行路由协议并且交换路由协议消息。由cRPD 25A输出的路由协议消息可以包括针对pod 22的IP地址信息,或者更具体地,包括针对pod 22的虚拟网络接口26的IP地址(不同于服务器12A的主机IP地址)。因此,cRPD 25A可以将使用VRF 29实现的针对VPN的覆盖扩展到pod 22,并且从而使得pod能够作为CE或VPN中的主机设备来操作。
在一些示例中,相同的服务IP地址或共享的任播IP地址被给予用于等价多路径(ECMP)或加权ECMP的多个pod。通过使用BGP添加路径将这个共享IP地址通告到网络中,系统可以在3层使用这些负载均衡技术。现有的Kubernetes负载均衡器提供基于L4至L7应用的负载均衡。虽然典型的层负载均衡使用NAT/防火墙或转发平面内的专用模块,但这些技术可以用于使用网络路由本身来实现负载均衡。
在一些示例中,pod可以具有到不同cRPD VRF 29的多个接口,例如,一个用于管理业务,另一个用于数据业务。在图1中,例如,pod 22B可以将VRF 29B用于管理业务,将VRF29A用于数据业务。
pod 22(例如,pod 22A)可以连接到一些物理接口,它正在其中获知其他设备的IP地址,诸如pod正在其中实现移动网络网关的用户设备、或pod正在其中实现CE路由器或网关的客户网络子网。为了将这些IP地址通告到网络中,pod 22A将具有VRF 29的虚拟网络接口26视为IP链路并且将这些IP地址的路由通告给cRPD 25A。然后,CRPD 25A可以通过cRPD25A和作为下一跳的pod 22A来通告针对这些IP地址的可达性,以再次符合VPN服务模型。cRPD 25A利用从VRF 29和默认VRF 28得到的对应转发信息对虚拟路由器21进行编程,并且虚拟路由器21根据VPN服务模型转发VPN业务以实现VPN。
例如,CRPD 25A可以使用多种底层隧道类型(包括MPLS、SR-MPLS、SRv6、MPLSoUDP、MPLSoGRE或IP-in-IP)来应用多种不同类型的覆盖网络/VPN,包括L3VPN或EVPN(Type-2/Type-5)。
CNI 17A可以针对pod 22s结合图1所示的一个或多个其他组件来配置虚拟网络接口26。pod 22的任何容器可以利用(即,共享)该pod的任何虚拟网络接口。编排器23可以存储或以其他方式管理用于应用部署的虚拟网络接口配置数据。例如,编排器23可以从用户、操作员/管理员或其他机器系统接收针对容器化应用(在Kubernetes的上下文中为“pod规范”)和网络附接定义规范,并且网络控制器24可以从该信息中导出配置数据以配置VRF 29和默认VRF 28的;以及配置虚拟网络接口26。
例如,作为创建pod 22A的过程的部分,编排器23可以请求网络控制器24创建针对pod规范和由pod规范引用的网络附接定义中所指示的VRF 29A的虚拟网络接口。根据本公开的技术,网络附接定义和pod规范符合新模型,该新模型允许运营方在网络附接定义中指定VPN并且将pod连同网络接口规范一起配置为VPN的成员。pod22可以针对它所属的每个网络具有不同虚拟网络接口。网络控制器24处理针对pod 22A的虚拟网络接口26生成接口配置数据的请求。接口配置数据可以包括容器或pod唯一标识符以及列表或其他数据结构,该列表或其他数据结构为虚拟网络接口中的每个虚拟网络接口指定用于配置虚拟网络接口的网络配置数据。针对虚拟网络接口的网络配置数据可以包括网络名称、分配的虚拟网络地址、MAC地址和/或域名服务器值。下面是JavaScript对象表示法(JSON)格式的接口配置数据的示例。
网络控制器24向服务器12A发送接口配置数据,并且在一些情况下更具体地发送给虚拟路由器21A。为了配置针对pod 22A的虚拟网络接口,编排器23可以调用CNI 17A。CNI17A从虚拟路由器21A获取接口配置数据并且对其进行处理。CNI 17A创建在接口配置数据中指定的每个虚拟网络接口。例如,CNI 17A可以将实现虚拟网络接口26的veth对的一端附接到虚拟路由器21A,并且可以将同一veth对的另一端附接到pod 22A,这可以使用virtio-user来实现。
以下是用于虚拟网络接口26的pod 22A的示例接口配置数据。
Figure BDA0003836525940000271
Figure BDA0003836525940000281
图2是根据本公开的技术的使用具有容器化路由协议进程的虚拟化路由器来实现VPN的示例系统的框图。系统68包括核心网86。核心网86是3层网络并且可以包括一个或多个交换机和P个(核心)路由器。核心网86可以表示交换结构14、IP结构20、服务提供方网络7、公共网络15、互联网或单独的3层网络的任何组合。核心网86还包括物理PE路由器70。CE设备72提供到具有网络子网P1的客户网络的可达性。
服务器12A的配置与图1中的类似,但仅为简单起见而用pod 22A来说明。虚拟化路由器32A、32Y具有默认VRF 28以及其相应主机网络接口。
PE路由器70、虚拟化路由器32A和虚拟化路由器32Y配置有VRF 29A以通过核心网86来实现VPN 80。VPN 80可以表示L3VPN、EVPN、或通过3层网络可操作并且使用路由协议来通告VPN路由的另一VPN。PE路由器70、cRPD 25A和cRPD 25Y协商隧道以形成针对VPN 86的覆盖网络。
根据本公开的技术,虚拟网络接口26具有由pod 22A终止的一端和由VRF 29A终止的另一端。在一些示例中,cRPD 25A和pod 22A可以执行一个或多个路由协议以交换“客户路由”,即,到设备的路由,该设备可以是pod 22A或经由作为CE路由器或网关操作的pod22A可达。路由协议消息73包括路由,该路由可以指定可达目的地的IP前缀和/或指定被分配给作为下一跳或作为目的地的pod 22A的IP地址。路由协议消息73可以确认内部网关协议,诸如BGP、中间系统到中间系统(IS-IS)或开放最短路径优先(OSPF)。cRPD 25A接收路由协议消息73并且将路由输入VRF 29A中。然后,cRPD 25A在路由协议消息74中将该路由作为用于pod 22A的VPN路由进行通告。路由协议消息74可以是包括VPN路由作为NLRI的MP-BGP消息。例如,针对被通告的pod 22A的IP地址可以是VPN-IPv4地址。
PE路由器70和cRPD 25Y接收路由协议消息73的副本并且将VPN路由输入到其对应VRF 29A。使用VPN路由,虚拟化路由器32Y和PE路由器70都可以经由VPN 80向pod 22A发送覆盖网络分组。虚拟化路由器32A接收这样的分组,基于分组中的隧道报头信息(例如,MPLS标签)来标识VRF 29A,并且将内部分组转发给具有分配给pod 22A的IP地址的虚拟网络接口26。pod 22A接收内部分组。
在一些示例中,虚拟化路由器32A实现EVPN实例并且执行数据平面学习以获知经由虚拟网络接口26连接的设备的MAC地址。这些可以由cRPD 25A在路由协议消息74中跨整个核心网86而被通告,路由协议消息74包括EVPN路由,例如Type-2或Type-5。这样的MAC地址可以包括用于pod 22A的MAC地址、以及经由pod 22A可达的任何其他设备,其中pod 22A与CE设备类似地操作。在这样的示例中,虚拟网络接口26实际上是EVPN实例的以太网段。此后,虚拟化路由器32可以在面向核心的接口上接收业务,该业务以任何这些MAC地址为目的地,并且虚拟化路由器32经由虚拟网络接口26将这样的业务转发给pod 22。
图3是根据本公开中描述的技术的示例计算设备(例如,主机)的框图。计算设备200可以表示真实或虚拟服务器,并且可以表示图1的任何服务器12的示例实例。在该示例中,计算设备200包括耦合计算设备200硬件环境的硬件组件的总线242。总线242耦合网络接口卡(NIC)230、磁盘246和一个或多个微处理器210(下文中称为“微处理器210”)。NIC230可以支持SR-IOV。在一些情况下,前端总线可以耦合微处理器210和存储器设备244。在一些示例中,总线242可以耦合存储器设备244、微处理器210和NIC 230。总线242可以表示外围组件接口(PCI)快速(PCIe)总线。在一些示例中,直接存储器访问(DMA)控制器可以控制耦合到总线242的组件之间的DMA传输。在一些示例中,耦合到总线242的组件控制耦合到总线242的组件之间的DMA传输。
微处理器210可以包括一个或多个处理器,每个处理器包括独立的执行单元,该执行单元用于执行符合指令集架构的指令,该指令存储到存储介质。执行单元可以实现为单独的集成电路(IC),或者可以组合在一个或多个多核处理器(或“多核”处理器)内,每个多核处理器(或“多核”处理器)使用单个IC(即,芯片多处理器)来实现。
磁盘246表示计算机可读存储介质,其包括以用于存储诸如处理器可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和/或非易失性、可移动和/或不可移动介质。计算机可读存储介质包括但不限于随机存取存储器(RAM)、只读存储器(ROM)、EEPROM、闪存、CD-ROM、数字多功能光盘(DVD)或其他光存储、磁盒、磁带、磁盘存储或其他磁性存储设备、或者可以用于存储期望信息并且可以由微处理器210访问的任何其他介质。
主存储器244包括一个或多个计算机可读存储介质,其可以包括诸如各种形式的动态RAM(DRAM)等随机存取存储器(RAM),例如DDR2/DDR3 SDRAM或静态RAM(SRAM)、闪存、或者任何其他形式的固定或可移动存储介质,该介质可以用于以指令或数据结构形式携带或存储期望程序代码和程序数据并且可以由计算机访问。主存储器244提供由可寻址存储器位置组成的物理地址空间。
网络接口卡(NIC)230包括被配置为使用底层物理网络的链路来交换分组的一个或多个接口232。接口232可以包括具有一个或多个网络端口的端口接口卡。NIC 230还可以包括例如用于存储分组数据的卡上存储器。NIC 230与耦合到总线242的其他设备之间的直接存储器访问传输可以从NIC存储器读取/向NIC存储器写入。
存储器244、NIC 230、磁盘246和微处理器210可以为包括在内核空间中执行的操作系统内核380的软件栈提供操作环境。内核380可以表示例如Linux、Berkeley软件分发(BSD)、另一Unix变体内核或Windows服务器操作系统内核,其从微软公司可获取。在某些情况下,操作系统可以执行管理程序和由管理程序管理的一个或多个虚拟机。示例管理程序包括用于Linux内核的基于内核的虚拟机(KVM)、Xen、从VMware可获取的ESXi、从Microsoft可获取的Windows Hyper-V、以及其他开源和专有管理程序。术语管理程序可以包含虚拟机管理器(VMM)。包括内核380的操作系统为用户空间245中的一个或多个进程提供执行环境。
内核380包括用于使用网络接口卡230的物理驱动程序225。网络接口卡230还可以实现SR-IOV以使得能够在一个或多个虚拟执行元素之间共享物理网络功能(I/O),诸如容器229A或一个或多个虚拟机(图3中未示出)。诸如虚拟功能的共享虚拟设备可以提供专用资源,使得虚拟执行元素中的每个虚拟执行元素可以访问NIC 230的专用资源,因此对于虚拟执行元素中的每个虚拟执行元素来说,NIC 230表现为专用NIC。虚拟功能可以表示与由物理驱动程序225使用的物理功能以及与其他虚拟功能共享物理资源的轻量级PCIe功能。对于支持SR-IOV的NIC 230,根据SR-IOV标准,NIC 230可以具有数千个可用的虚拟功能,但对于I/O密集型应用,配置的虚拟功能的数目通常要少得多。
计算设备200可以耦合到物理网络交换结构,该物理网络交换结构包括覆盖网络,该覆盖网络将交换结构从物理交换机扩展到耦合到交换结构的物理服务器的软件或“虚拟”路由器,包括虚拟路由器206A。虚拟路由器可以是由物理服务器(例如,图1的服务器12)执行的进程或线程或其组件,该进程或线程或其组件动态地创建和管理可用于虚拟网络端点之间的通信的一个或多个虚拟网络。在一个示例中,虚拟路由器使用覆盖网络来实现每个虚拟网络,该覆盖网络提供用于将端点的虚拟地址与端点正在其上执行的服务器的物理地址(例如,IP地址)解耦的能力。每个虚拟网络可以使用其自己的寻址和安全方案,并且可以被视为与物理网络及其寻址方案正交。各种技术可以用于通过物理网络在虚拟网络内和跨虚拟网络传输分组。本文中使用的术语“虚拟路由器”可以涵盖Open vSwitch(OVS)、OVS网桥、Linux网桥、Docker网桥、或者位于主机设备上并且执行在一个或多个虚拟网络的虚拟网络端点之间交换、桥接或路由分组的其他设备和/或软件,其中虚拟网络端点由服务器12中的一个或多个服务器托管。在图2的示例计算设备200中,虚拟路由器206A在内核380内执行,但在某些情况下,虚拟路由器206A可以在用户空间中作为基于DPDK的虚拟路由器在管理程序、主机操作系统、主机应用或虚拟机内执行。
虚拟路由器206A可以替换和包含通常用于pod 202A至202B(统称为“pod 202”)的Kubernetes部署的Linux桥/OVS模块的虚拟路由/桥接功能。虚拟路由器206A可以为虚拟网络执行桥接(例如,E-VPN)和路由(例如,L3VPN、IP-VPN)。虚拟路由器206A可以执行网络服务,诸如应用安全策略、NAT、多播、镜像和负载均衡。
虚拟路由器206A可以作为内核模块或作为用户空间DPDK进程来执行(虚拟路由器206A在此被示出为在内核380中)。虚拟路由器代理314也可以在用户空间中执行。虚拟路由器代理314具有使用通道与网络控制器24的连接,该通道用于下载配置和转发信息。虚拟路由器代理314将该转发状态编程到由虚拟路由器206A表示的虚拟路由器数据(或“转发”)平面。虚拟路由器206A和虚拟路由器代理314可以是进程。
虚拟路由器206A可以是多线程的并且在一个或多个处理器核上执行。虚拟路由器206A可以包括多个队列。虚拟路由器206A可以实现分组处理流水线。流水线可以由虚拟路由器代理314根据要应用于分组的操作从最简单到最复杂的方式拼接。虚拟路由器206A可以维护转发库的多个实例。虚拟路由器206A可以使用RCU(读取复制更新)锁来访问和更新表。
为了向其他计算节点或交换机发送分组,虚拟路由器206A使用一个或多个物理接口232。通常,虚拟路由器206A与工作负载交换覆盖分组,诸如VM或pod 202(在图3中)。虚拟路由器206A可以具有多个虚拟网络接口(例如,vifs)。这些接口可以包括内核接口vhost0,其用于与主机操作系统交换分组;与虚拟路由器代理314的接口pkt0,其用于从网络控制器获取转发状态并且向上发送异常分组。可以存在与一个或多个物理网络接口232相对应的一个或多个虚拟网络接口。
虚拟路由器206A的其他虚拟网络接口用于与工作负载交换分组。虚拟路由器206A的虚拟网络接口212、213在图3中示出。虚拟网络接口212、213可以是任何上述类型的虚拟接口。在一些情况下,虚拟网络接口212、213是tap接口。
cRPD 324可以表示图1的cRPD 25A的示例实例。CRPD 324启动以便以主机网络模式操作。附接到虚拟路由器206A的默认VRF 223的虚拟网络接口213向cRPD 324提供对计算设备的主机网络接口的访问。pod 202B因此可以具有底层网络上计算设备200的主机IP地址。
pod 202B可以被分配其自己的虚拟3层(L3)IP地址以用于发送和接收通信,但可能不知道pod 202B在其上执行的计算设备200的IP地址。因此,虚拟L3(网络)地址可以不同于底层物理计算机系统(例如,计算设备200)的逻辑地址。虚拟网络地址可以在pod规范中指定或由网络控制器24从VPN的地址池中选择。
计算设备200包括虚拟路由器代理314,虚拟路由器代理314控制计算设备200的虚拟网络的覆盖并且协调计算设备200内的数据分组的路由。通常,虚拟路由器代理314与用于虚拟化基础架构的网络控制器24通信,该虚拟化基础架构生成创建虚拟网络并且配置网络虚拟化端点的命令,诸如计算设备200、并且更具体地是虚拟路由器206A、以及虚拟网络接口212。通过基于从网络控制器24接收的信息来配置虚拟路由器206A,虚拟路由器代理314可以支持配置网络隔离、基于策略的安全性、网关、源网络地址转换(SNAT)、负载均衡器和用于编排的服务链能力。
在一个示例中,网络分组(例如,由虚拟网络域内的容器229A生成或消费的3层(L3)IP分组或2层(L2)以太网分组)可以封装在另一分组(例如,另一IP或以太网分组)中,该分组由物理网络传输。在虚拟网络中传输的分组在本文中可以称为“内部分组”,而物理网络分组在本文中可以称为“外部分组”或“隧道分组”。物理网络分组内的虚拟网络分组的封装和/或解封装可以由虚拟路由器206A执行。该功能在本文中称为隧道传输并且可以用于创建一个或多个覆盖网络。除了IPinIP,可以使用的其他示例隧道协议包括通用路由封装(GRE)上的IP、VxLAN、GRE上的多协议标签交换(MPLS)、用户数据报协议(UDP)上的MPLS等。虚拟路由器206A对源自/发往任何pod 202的容器的分组执行隧道封装/解封装,并且虚拟路由器206A经由总线242和/或NIC 230的网桥与pod 202交换分组。
如上所述,网络控制器24可以提供逻辑上集中的控制器以促进一个或多个虚拟网络的操作。例如,网络控制器24可以维护路由信息库,例如存储物理网络以及一个或多个覆盖网络的路由信息的一个或多个路由表。虚拟路由器206A为虚拟路由器206A作为隧道端点操作的VPN实现虚拟路由和转发实例(VRF)222A。通常,VRF存储对应虚拟网络的转发信息,并且标识数据分组将被转发给何处以及分组是否要封装在隧道协议中,诸如使用隧道报头,该隧道报头可以包括针对虚拟网络协议栈的不同层的一个或多个报头。VRF可以包括存储针对虚拟网络的路由和转发信息的网络转发表。
NIC 230可以接收隧道分组。虚拟路由器206A处理隧道分组以根据隧道封装报头确定内部分组的源端点和目的地端点的虚拟网络。虚拟路由器206A可以剥离2层报头和隧道封装报头以仅在内部转发内部分组。隧道封装报头可以包括虚拟网络标识符,诸如VxLAN标签或MPLS标签,该虚拟网络标识符指示虚拟网络,例如与VRF 222A相对应的虚拟网络。VRF 222A可以包括针对内部分组的转发信息。例如,VRF 222A可以将针对内部分组的目的地3层地址映射到虚拟网络接口212。作为响应,VRF 222A将内部分组经由虚拟网络接口212转发给pod 202A。
容器229A还可以将内部分组作为源虚拟网络端点来提供。例如,容器229A可以生成去往由另一计算设备(即,不是计算设备200)执行的目的地虚拟网络端点或去往容器的另一3层内部分组。容器229A可以经由附接到VRF 222A的虚拟网络接口212向虚拟路由器206A发送3层内部分组。
虚拟路由器206A接收内部分组和2层报头并且确定针对内部分组的虚拟网络。虚拟路由器206A可以使用任何上述虚拟网络接口实现技术(例如,macvlan、veth等)来确定虚拟网络。虚拟路由器206A使用与内部分组的虚拟网络相对应的VRF 222A来生成针对内部分组的外部报头,外部报头包括用于覆盖隧道的外部IP报头和标识虚拟网络的隧道封装报头。虚拟路由器206A用外部报头来封装内部分组。虚拟路由器206A可以用新的2层报头来封装隧道分组,该2层报头具有与计算设备200外部的设备相关联的目的地2层地址,例如,TOR交换机16、或服务器12中的一个服务器。如果在计算设备200外部,则虚拟路由器206A使用物理功能221向NIC 230输出具有新的2层报头的隧道分组。NIC 230在出站接口上输出分组。如果目的地是在计算设备200上执行的另一虚拟网络端点,则虚拟路由器206A将分组路由到虚拟网络接口212、213中的适当虚拟网络接口。
在一些示例中,计算设备200的控制器(例如,图1的网络控制器24)在pod 202中的每个pod中配置默认路由,以使虚拟机224使用虚拟路由器206A作为出站分组的初始下一跳。在一些示例中,NIC 230配置有一个或多个转发规则以使从虚拟机224接收的所有分组被切换到虚拟路由器206A。
pod 202A包括一个或多个应用容器229A。pod 202B包括cRPD 324的实例。容器平台204包括容器运行时208、编排代理310、服务代理211和CNI 312。
容器引擎208包括由微处理器210可执行的代码。容器运行时间208可以是一个或多个计算机进程。容器引擎208以容器229A的形式运行容器化应用。容器引擎208可以表示Dockert、rkt、或用于管理容器的其他容器引擎。通常,容器引擎208接收请求并且管理对象,诸如镜像、容器、网络和卷。镜像是带有用于创建容器的指令的模板。容器是镜像的可执行实例。基于来自控制器代理310的指令,容器引擎208可以获取镜像并且将它们实例化为pod 202A至202B中的可执行容器。
服务代理211包括由微处理器210可执行的代码。服务代理211可以是一个或多个计算机进程。服务代理211监测服务和端点对象的添加和移除,并且维护计算设备200的网络配置以确保pod与容器之间的通信,例如,使用服务。服务代理211还可以管理ip地址表(iptables)以捕获到服务的虚拟IP地址和端口的业务,并且将业务重定向到代理支持的pod的代理端口。服务代理211可以表示Kubernetes集群的从节点的kube-proxy。在一些示例中,容器平台204不包括服务代理211或者服务代理211被禁用以支持由CNI 312来配置虚拟路由器206A和pod 202。
编排代理310包括由微处理器210可执行的代码。编排代理310可以是一个或多个计算机进程。编排代理310可以表示Kubernetes集群的从节点的kubelet。编排代理310是编排器的代理,例如,图1的编排器23,该编排器接收容器的容器规范数据并且确保容器由计算设备200执行。容器规范数据可以是从编排器23发送给编排代理310的清单文件的形式,或者经由命令行接口、HTTP端点或HTTP服务器而被间接接收。容器规范数据可以是容器229的pod 202中的一个pod的pod规范(例如,PodSpec——描述pod的YAML(又一种标记语言)或JSON对象)。基于容器规范数据,编排代理310指示容器引擎208获取和实例化针对容器229的容器镜像,以供计算设备200执行容器229。
编排代理310实例化或以其他方式调用CNI 312以为pod 202中的每个pod配置一个或多个虚拟网络接口。例如,编排代理310接收pod 202A的容器规范数据并且指示容器引擎208基于pod 202A的容器规范数据使用容器229A来创建pod 202A。编排代理310还调用CNI 312来为pod 202A配置与VRF 222A相对应的虚拟网络的虚拟网络接口212。在该示例中,pod 202A是与VRF 222A相对应的虚拟网络的虚拟网络端点。
CNI 312可以获取用于配置pod 202的虚拟网络接口的接口配置数据。虚拟路由器代理314作为虚拟网络控制平面模块来操作,该虚拟网络控制平面模块用于使得网络控制器24能够配置虚拟路由器206A。与管理供应、调度和管理虚拟执行元素的编排控制平面(包括用于从节点和(多个)主节点的容器平台204,例如,编排器23)不同,虚拟网络控制平面(包括用于从节点的网络控制器24和虚拟路由器代理314)管理部分由从节点的虚拟路由器206A在数据平面中实现的虚拟网络的配置。虚拟路由器代理314向CNI 312传送虚拟网络接口的接口配置数据,以使编排控制平面元素(即,CNI 312)能够根据由网络控制器24确定的配置状态来配置虚拟网络接口,从而缩小编排控制平面与虚拟网络控制平面之间的差距。此外,这可以使得CNI 312能够获取用于pod的多个虚拟网络接口的接口配置数据并且配置多个虚拟网络接口,这可以减少调用单独CNI 312来配置每个虚拟网络接口所固有的通信和资源开销。
根据本公开的技术,网络控制器24经由虚拟代理314为VPN配置VRF 222A。容器229和cRPD 324执行一个或多个路由协议280。容器229和cRPD 324可以是路由协议280的路由协议对等体。路由协议280可以包括内部网关协议,诸如OSPF、IS-IS、路由信息协议(RIP)、内部BGP(IBGP)或其他协议。容器229A可以使用路由协议280中的一个路由协议的路由协议消息来通告分配给容器229A的IP地址的路由(这里,共享分配给pod 202B的IP地址)。例如,这样的消息可以是OSPF链路状态通告、RIP响应消息、BGP更新消息、或通告到分配给容器229A的IP地址的路由的其他路由协议消息。虚拟路由器206A将在VRF 222A处接收的路由协议消息转发给cRPD 324。
CRPD 324处理为分配给容器229A的IP地址通告路由的路由协议消息,并且将IP地址作为VPN-IPv4地址导入VRF 222A。然后,CRPD 324在发送给其他PE路由器的路由协议消息中将自己作为VPN-IPv4地址的下一跳进行通告。例如,cRPD 324可以输出MP-BGP更新消息,该MP-BGP更新消息将其IP地址(也是主机IP地址)指定为针对VPN-IPv4地址的下一跳。其他PE路由器接收该路由协议消息并且更新针对VPN的其相应的VRF,以将目的地为容器229A的VPN业务转发给计算设备200(和cRPD 324)。因为cRPD 324以主机网络模式操作,所以特定TCP/UDP端口可以被分配给cRPD 324用于其通信。
以这种方式,容器229A和cRPD 324为服务提供方网络建模熟悉的PE-CE VPN服务模型,并且可以将覆盖网络扩展到容器229A。由于cRPD 324使用标准路由协议和VPN,因此该模型与同样使用这些标准的物理PE路由器兼容,这为虚拟计算基础设施中的容器配置网络提供了优于现有CNI的技术优点。
CNI 312可以经由cRPD 324的管理接口来对cRPD 324进行编程。在一些示例中,编排器(经由编排代理310)将初始配置模板作为ConfigMap推送到CNI 312。ConfigMap可以是Kubernetes ConfigMap。
当包括cRPD 324的pod 202B启动时,CNI 312(其部署pod 202B)也作为控制器操作以处理初始配置模板并且为cRPD 324生成配置数据。配置数据可以符合管理接口格式,例如Netconf、CLI或专有。
配置模板的目的是允许用户/运营方提供一种简单的方式来定制配置以适应其网络需求(例如,要使用的特定IPG、应当启用的BGP系列、策略配置等)。CNI 312将初始配置模板中的变量替换为特定于计算设备200的值(例如,环回地址、IS-IS地址、SR节点索引等),从而使用户/运营方可以定义通用配置模板,该通用配置模板可以应用于在集群中的多个节点上运行的cRPD 324的实例。
此外,控制器可以监听事件以监测对该ConfigMap的更新并且在运行时更新基本配置,而不必重新启动/重新部署可能导致业务中断的cRPD 324和虚拟路由器206A。
与自定义资源定义(CRD)相比,使用模板的优点在于,鉴于支持cRPD 324的大量配置参数,CRD对象定义可能变得笨拙并且难以开发,并且构建对应软件逻辑来处理这些对象很耗时。这可能会限制使用CRD的模型集,并且在新特征/网络模型时需要软件变化。(例如,现有CRD未定义的分段路由的添加。)一些可配置特征(诸如,路由策略)将花费大量的精力来表达为CRD和软件。基于CRD的方法将简单地复制cRPD 324中已经存在的相同CLI旋钮,尽管格式不同(例如,json、yaml、Netconf、openconfig、yang)并且没有太多好处。基于模板的方法提供对所有CLI旋钮的访问,而无需更新软件和/或开发工作。带有变量和某种逻辑的示例初始配置模板如下:
Figure BDA0003836525940000391
Figure BDA0003836525940000401
Figure BDA0003836525940000411
Figure BDA0003836525940000421
Figure BDA0003836525940000431
Figure BDA0003836525940000441
Figure BDA0003836525940000451
Figure BDA0003836525940000461
Figure BDA0003836525940000471
Figure BDA0003836525940000481
Figure BDA0003836525940000491
Figure BDA0003836525940000501
图4是根据本公开的技术的作为用于虚拟化计算基础设施的集群的编排器主节点的实例进行操作的示例计算设备的框图。图4的计算设备1300可以表示一个或多个真实或虚拟服务器。因此,计算设备1300在一些情况下可以实现针对相应集群的一个或多个主节点。
虽然被示出和描述为由单个计算设备1300执行,但调度器1322、API服务器1320、网络控制器管理器1326、SDN控制器1324、SDN控制器管理器1325和配置存储库1328可以分布在组成计算系统或硬件/服务器集群的多个计算设备300之间。换言之,多个计算设备1300中的每个计算设备可以为调度器1322、API服务器1320、网络控制器管理器1326、SDN控制器1324、SDN控制器管理器1325或配置存储库1328中的任何一个或多个的一个或多个实例提供硬件操作环境。SDN控制器1324可以表示图1的网络控制器24的示例实例。调度器1322、API服务器1320、控制器管理器1326和SDN控制器管理器1325可以实现编排器23的示例实例。SDN控制器管理器1325可以表示Kubernetes云控制器管理器或Kube管理器的示例实现。
在该示例中,计算设备1300包括耦合计算设备1300硬件环境的硬件组件的总线1342。总线1342耦合网络接口卡(NIC)1330、磁盘1346和一个或多个微处理器1310(下文中称为“微处理器1310”)。在一些情况下,前端总线可以耦合微处理器1310和存储器设备1344。在一些示例中,总线1342可以耦合存储器设备1344、微处理器1310和NIC 1330。总线1342可以表示外围组件接口(PCI)快速(PCIe)总线。在一些示例中,直接存储器访问(DMA)控制器可以控制耦合到总线242的组件之间的DMA传输。在一些示例中,耦合到总线1342的组件控制耦合到总线1342的组件之间的DMA传输。
微处理器1310可以包括一个或多个处理器,每个处理器包括独立的执行单元,该执行单元用于执行符合指令集架构的指令,该指令存储到存储介质。执行单元可以实现为单独的集成电路(IC),或者可以组合在一个或多个多核处理器(或“多核”处理器)内,每个多核处理器(或“多核”处理器)使用单个IC(即,芯片多处理器)来实现。
磁盘1346表示计算机可读存储介质,其包括以用于存储诸如处理器可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和/或非易失性、可移动和/或不可移动介质。计算机可读存储介质包括但不限于随机存取存储器(RAM)、只读存储器(ROM)、EEPROM、闪存、CD-ROM、数字多功能光盘(DVD)或其他光存储、磁盒、磁带、磁盘存储或其他磁性存储设备、或者可以用于存储期望信息并且可以由微处理器1310访问的任何其他介质。
主存储器1344包括一个或多个计算机可读存储介质,其可以包括诸如各种形式的动态RAM(DRAM)等随机存取存储器(RAM),例如DDR2/DDR3 SDRAM或静态RAM(SRAM)、闪存、或者任何其他形式的固定或可移动存储介质,该介质可以用于以指令或数据结构形式携带或存储期望程序代码和程序数据并且可以由计算机访问。主存储器1344提供由可寻址存储器位置组成的物理地址空间。
网络接口卡(NIC)1330包括被配置为使用底层物理网络的链路来交换分组的一个或多个接口3132。接口3132可以包括具有一个或多个网络端口的端口接口卡。NIC 1330还可以包括例如用于存储分组数据的卡上存储器。NIC 1330与耦合到总线1342的其他设备之间的直接存储器访问传输可以从NIC存储器读取/向NIC存储器写入。
存储器1344、NIC 1330、磁盘1346和微处理器1310可以为包括在内核空间中执行的操作系统内核1314的软件栈提供操作环境。内核1314可以表示例如Linux、伯克利软件分发(BSD)、另一Unix变型内核或Windows服务器操作系统内核,其从微软公司可获取。在某些情况下,操作系统可以执行管理程序和由管理程序管理的一个或多个虚拟机。示例管理程序包括用于Linux内核的基于内核的虚拟机(KVM)、Xen、从虚拟机可获取的ESXi、从微软可获取的Windows Hyper-V、以及其他开源和专有管理程序。术语管理程序可以包含虚拟机管理器(VMM)。包括内核1314的操作系统为用户空间1345中的一个或多个进程提供执行环境。内核1314包括用于使用网络接口卡230的物理驱动程序1325。
计算设备1300可以耦合到物理网络交换结构,该物理网络交换结构包括覆盖网络,该覆盖网络将交换结构从物理交换机扩展到耦合到交换结构的物理服务器的软件或“虚拟”路由器,例如,图2的虚拟路由器220。计算设备1300可以使用一个或多个专用虚拟网络来配置集群的从节点。
API服务器1320、调度器1322、控制器管理器1326和配置存储可以实现集群的主节点并且可以备选地称为“主组件”。集群可以是Kubernetes集群,并且主节点是Kubernetes主节点,在这种情况下,主组件是Kubernetes主组件。
API服务器1320包括由微处理器1310可执行的代码。API服务器1320可以是一个或多个计算机进程。API服务器1320验证和配置针对对象的数据,诸如虚拟执行元素(例如,容器的pod)、服务和复制控制器。服务可以是限定逻辑pod集和用于访问pod的策略的抽象。实现服务的pod集基于服务定义而被选择。服务可以部分地实现为负载均衡器,或者以其他方式包括负载均衡器。API服务器1320可以实现表述性状态转移(REST)接口以处理REST操作并且将前端提供给存储到配置存储库1328的对应集群的共享状态。API服务器1320可以认证和授权请求。API服务器1320与其他组件通信以实例化计算基础设施8中的虚拟执行元素。API服务器1320可以表示Kubernetes API服务器。
配置存储库1328是所有集群数据的后备存储库。集群数据可以包括集群状态和配置数据。配置数据还可以为服务发现提供后端和/或提供锁定服务。配置存储库1328可以实现为键值存储库。配置存储库1328可以是中央数据库或分布式数据库。配置存储库1328可以表示etcd存储库。配置存储库1328可以表示Kubernetes配置存储库。
调度器1322包括由微处理器1310可执行的代码。调度器1322可以是一个或多个计算机进程。调度器1322监测新创建或请求的虚拟执行元素(例如,容器的pod)并且选择虚拟执行元素将在其上运行的从节点。调度器1322可以基于资源需求、硬件约束、软件约束、策略约束、位置等来选择从节点。调度器1322可以表示Kubernetes调度器。
通常,API服务器1320可以调用调度器1322来调度虚拟执行元素,该虚拟执行元素可以选择从节点并且将所选择的从节点的标识符返回给API服务器1320,API服务器1320可以将标识符与虚拟执行元素相关联地写入配置存储库1328。API服务器1320可以为所选择的从节点调用编排代理310,这可以使所选择的从节点的容器引擎208从存储服务器获取虚拟执行元素并且在从节点上创建虚拟执行元素。所选择的从节点的编排代理310可以将虚拟执行元素的状态更新到API服务器1320,API服务器1320将这个新状态保持到配置存储库1328。以这种方式,计算设备1300在计算基础设施8中实例化新的虚拟执行元素。
控制器管理器1326包括由微处理器1310可执行的代码。控制器管理器1326可以是一个或多个计算机进程。控制器管理器1326可以嵌入核心控制循环,以通过从API服务器1320获取通知来监测集群的共享状态。控制器管理器1326可以尝试将集群的状态移向期望状态。由控制器管理器1326管理的示例控制器(未示出)可以包括复制控制器、端点控制器、命名空间控制器和服务帐户控制器。控制器管理器1326可以执行生命周期功能,诸如命名空间创建和生命周期、事件垃圾收集、终止的pod垃圾收集、级联删除垃圾收集、节点垃圾收集等。控制器管理器1326可以表示针对Kubernetes集群的Kubernetes控制器管理器。
SDN控制器1324包括由微处理器1310可执行的代码。SDN控制器1324可以包括一个或多个计算机进程。SDN控制器1324可以表示图1的网络控制器24的示例实例。SDN控制器1324可以是逻辑上集中但物理上分布式的软件定义网络(SDN)控制器,该SDN控制器负责提供虚拟化网络的管理、控制和分析功能。特别地,SDN控制器1324可以是计算基础设施8的逻辑上集中的控制平面和管理平面,并且编排针对一个或多个从节点的vRouter。
SDN控制器1324可以为在网络基础设施之上操作的计算架构提供云网络。云网络可以包括企业或服务提供方的私有云、基础设施即服务(IaaS)、和云服务提供方(CSP)的虚拟私有云(VPC)。私有云、VPC和IaaS用例可以涉及多租户虚拟化数据中心,如图1所述。在这种情况下,数据中心中的多个租户共享相同物理资源(物理服务器、物理存储,物理网络)。每个租户被分配有其自己的逻辑资源(虚拟机、容器或其他形式的虚拟执行元素;虚拟存储;虚拟网络)。这些逻辑资源彼此隔离,除非安全策略特别允许。数据中心的虚拟网络也可以与物理IP VPN或L2 VPN互连。
SDN控制器1324可以向诸如商业边缘网络、宽带用户管理边缘网络和移动边缘网络等网络提供网络功能虚拟化(NFV)。NFV涉及虚拟机、容器或其他虚拟执行元素而不是物理硬件设备中的网络功能的编排和管理,诸如防火墙、入侵检测或预防系统(IDS/IPS)、深度分组检测(DPI)、高速缓存、广域网(WAN)优化等。该市场中网络服务虚拟化的主要驱动力是上市时间和成本优化。
SDN控制器1324对网络基础设施元素进行编程以创建虚拟网络并且可以创建针对虚拟网络的虚拟网络接口的接口配置。
关于示例网络控制器的附加信息可以见于国际申请号PCT/US2013/044378和美国专利申请中No.14/226,509,其通过引用并入本文。
SDN控制器管理器1325包括由微处理器1310可执行的代码。SDN控制器管理器1325可以是一个或多个计算机进程。SDN控制器管理器1325作为面向编排的元素(例如,调度器1322、API服务器1320、控制器管理器1326和配置存储库1328)与SDN控制器1324之间的接口进行操作。一般来说,SDN控制器管理器1325监测集群中的新的对象(例如,pod和服务)。SDN控制器管理器1325可以隔离虚拟网络中的pod并且将pod与服务连接。
SDN控制器管理器1325可以作为集群的主节点的容器来执行。在一些情况下,使用SDN控制器管理器1325使得能够禁用从节点的服务代理(例如,Kubernetes kube-proxy),使得所有pod连接能够使用虚拟路由器来实现,如本文所述。
SDN控制器管理器1325可以使用用于编排平台的控制器框架来监听(或以其他方式监测)在API中定义的对象的变化,并且向这些对象中的一些对象添加注释。注释可以是指定对象属性的标签或其他标识符(例如,“Virtual Network Green”)。SDN控制器管理器1325可以使用到SDN控制器1324的接口以定义诸如虚拟网络、虚拟网络接口和访问控制策略的网络对象来创建针对应用的网络解决方案。SDN控制器1324可以通过例如在虚拟路由器中配置一个或多个虚拟网络和虚拟网络接口来实现计算基础设施中的网络解决方案。
根据本公开的技术,该应用的以下示例部署配置包括pod和该pod的网络信息,该网络信息引用针对VPN的NetworkAttachmentDefinition。NetworkAttachmentDefinition是用于管理pod的网络附接定义的自定义资源,并且在网络附接定义规范中定义。
Figure BDA0003836525940000561
Figure BDA0003836525940000571
该元数据信息被复制到由控制器管理器1326创建的每个pod副本。当SDN控制器管理器1325被通知这些pod时,对于在注释中列出的VPN,SDN控制器管理器1325可以在cRPD324(由将被部署pod副本的任何节点执行)对VRF进行编程(上述示例中引用的“blue-net”NetworkAttachmentDefinition)。主机的CNI 312将为VRF创建具有唯一私有虚拟网络地址(此处取自ipv4的1.1.1.2/30子网)的每pod副本(例如,pod 202A)的虚拟网络接口。在pod内部,接口将被命名为“net1”,并且CNI 312将在cRPD 324中配置该接口的另一端。接口将配置有ipconfig信息和要安装在pod内的任何路由。以这种方式,这些技术允许运营方使用NetworkAttachmentDefinition来表示路由实例,并且将pod绑定到NetworkAttachmentDefinition,以便根据PE-CE VPN服务模型来编排VPN。例如,新的“cni-args”对象使CNI 312配置pod,类似于配置CE路由器或主机,包括经由pod可达的子网的“路由”。
基于pod和NetworkAttachmentDefinition的这些规范,SDN控制器管理器1325将规范转换成cRPD 324可以消耗的配置数据。该配置数据可以用于配置路由实例并且使cRPD324通告路由前缀,建立协议会话和控制平面信令的其他方面,所有这些都可以由SDN控制器管理器1325经由cRPD 324的接口配置cRPD 324来触发。在一些示例中,SDN控制器1324可以经由cRPD 324的接口来配置cRPD 324。
以下是NetworkAttachmentDefinition的示例。NetworkAttachmentDefinition是自定义资源对象,其描述如何将pod附接到对象的逻辑或物理网络引用。以下示例符合根据本公开的技术已经被扩展用于编排VPN的NetworkAttachmentDefinition的模式。编排器23可以接收NetworkAttachmentDefinition并且创建对应对象实例。SDN控制器管理器1325可以监测或监听关于NetworkAttachmentDefinition对象实例的事件,并且将虚拟计算基础设施配置为实现NetworkAttachmentDefinition中的意图,包括配置cRPD 324和虚拟化的PE路由器32。
以下blue-l3vpn.yaml定义名为“blue-net”的L3VPN,其可以被上面的pod规范引用。该L3VPN指定VRF名称和VRF路由目标,SDN控制器管理器1325可以使用它们创建针对被通告的路由信息的导入策略并且创建针对通告路由信息的导出策略,包括附接到该VRF的任何pod的路由:
Figure BDA0003836525940000581
Figure BDA0003836525940000591
以下blue-evpn.yaml定义名为“blue-net”的EVPN,其可以被上面的pod规范引用。该EVPN指定VRF名称和VRF路由目标,SDN控制器管理器1325可以使用它们创建针对被通告的路由信息的导入策略并且创建针对通告MAC地址(此处为EVPN类型5消息)的导出策略,包括为附接到该VRF的任何pod。blue-evpn.yaml还为EVPN-VXLAN指定了VxLAN虚拟网络标识符:
Figure BDA0003836525940000592
Figure BDA0003836525940000601
以下vswitch.yaml包括用于L2VPN的各种桥接域的多个NetworkAttachmentDefinition,从而使虚拟化路由器35作为虚拟交换机操作:
Figure BDA0003836525940000602
Figure BDA0003836525940000611
Figure BDA0003836525940000621
Figure BDA0003836525940000631
Figure BDA0003836525940000641
以下pod规范引用上述NetworkAttachmentDefinitions。SDN控制器管理器1325为创建任何pod副本的对应接口,以使用上述vswitch.yaml的NetworkAttachmentDefinitions中定义的桥接域。在该示例中,针对pod副本的IP地址从NetworkAttachmentDefinitions的IPAM被分配。
Figure BDA0003836525940000642
Figure BDA0003836525940000651
Figure BDA0003836525940000661
下面描述根据本公开的附加技术。Contrail是示例网络控制器架构。ContrailCNI可以是为Contrail而开发的CNI。Contrail控制器可以是本公开中描述的SDN控制器的示例,诸如网络控制器24。
图5是示出根据本公开的技术的cRPD或本公开的任何其他cRPD的示例实现的框图,编排器可以使用pod来部署该cRPD。cRPD1440可以作为微服务部署在Docker、coreOS(rkt)或其他容器平台中。
cRPD 1440包括管理接口1400,管理接口1400可以表示命令行接口(CLI)、Netconf、安全外壳(SSH)、PCEP、简单网络管理协议(SNMP)接口或其他管理接口中的一个或多个。管理接口1400可以支持YANG、OpenConfig或其他配置数据格式。管理接口1400可以从自动化系统1420接收配置数据并且可以向遥测系统1422输出遥测数据。CNI可以经由管理接口1400对cRPD 1440进行编程,如上面进一步详细描述的。
cRPD 1440实现路由协议1402,路由协议1402可以包括BGP、OSPF、IS-IS、LDP、分段路由,并且可以从控制器或自动化系统(由可编程性1424表示)接收用于编程的静态路由。cRPD 1440包括路由基础设施1404以支持路由协议1402。路由基础设施1404可以包括路由信息库(RIB)、RIB管理器、标签信息库(LIB)、LIB管理器。路由基础设施1404可以实现双向转发检测(BFD)。cRPD 1440包括转发信息库(FIB)适配层1406以通过启用在数据平面中配置转发信息来将cRPD 1440集成到数据平面中。例如,FIB适配层1406可以实现gRPC、Netlink或rtsock接口以对vRouter(例如,基于DPDK的vRouter)进行编程。FIB适配层1406可以实现另一类型的接口以对vRouter、基于内核的vSwitch、SmartNIC、网络处理器、基于ASIC的转发芯片或其他数据平面进行编程。
图6是示出根据本公开的技术的示例vRouter代理的框图。vRouter代理314包括用于经由通用接口340与cRPD 324(gRPC客户端)交换数据的gRPC服务器520。gRPC服务器520的API包括用于交换虚拟网络接口数据和请求的虚拟机接口(VMI)API 530、用于交换配置数据和请求的配置API 532、以及用于交换路由和请求的路由API 534——包括用于使cRPD324能够经由vRouter代理314将路由编程到vRouter 206A。同步模块544用虚拟网络接口(例如,DPDK pod与基于DPDK的vRouter 206A之间的veth对或virtio-vhost接口的部分)对vRouter 206A进行编程并且用路由信息对vRouter 206A进行编程。
接口540可以表示存储数据的数据结构,该数据描述在执行vRouter代理314的服务器上执行的应用pod的虚拟网络接口。端口服务542监听来自CNI 312的请求,诸如添加针对应用pod的新的“端口”的请求,端口服务542可以经由接口340将该请求转换为向cRPD324的订阅请求,该订阅请求从cRPD 324获取虚拟网络接口配置信息。端口服务542可以使用REST服务器来实现。
以这种方式,vRouter代理314向数据平面提供通用接口340(如图3所示),以用于源自或去往服务器上的应用pod的覆盖业务。该通用接口340可以由任何控制器、路由协议进程或其他代理来实现,因为它依赖于gRPC而不是专有接口。
图7是示出根据本公开的技术的用于对vRouter转发信息进行编程的示例操作1480的概念图。cRPD 324确定应当更新转发信息,并且通过添加、改变或删除路由以及调节转发平面中的下一跳来进行更新。cRPD 324的转换器组件可以将用于编程硬件转发平面的指令转换成针对虚拟路由器代理314的等效指令,并且调用虚拟路由器代理314的北向接口(在一些示例中由gRPC服务器520提供),该北向接口对虚拟路由器206A的转发信息库进行编程以相应地执行分组转发。
图8是示出根据本公开的技术的用于在具有虚拟化路由器的服务器中配置和通告虚拟网络接口的示例操作1500的概念图。
为了提供通过隧道的可达性,cRPD 324可以配置有必要的协议(IGP、BGP等)。vRouter 206A将管理面向物理核心的网络接口——通过该接口将发送和接收路由业务,但cRPD 324在主机网络模式下启动并且能够访问该物理接口。
cRPD 324可以经由网络控制器通过Netconf其他配置协议而被配置具有必要的协议。cRPD 324将建立针对各种协议的邻接关系;使用其路由协议来获知和通告路由信息(包括到应用容器的可达性)。cRPD 324需要将这个获知的路由信息编程到vRouter代理314。vRouter 206A将提供双向gRPC通道340,以用于与cRPD 324的来回通信。数据对象(路由、VRF、接口等)可以在协议缓冲区中被建模。
如图8所示,基于cRPD的CNI 312可以创建在被Kubernetes/编排代理310通知时针对应用容器中的每个应用容器的veth等效对。CNI 312负责将IP地址分配给这些接口。veth等效对的一端将终止于应用容器的接口中。至于另一端,CNI 312将请求vRouter 206A开始监测veth等效接口的这一端。这促进了从物理端口流向应用容器的所有隧道业务。CNI 312可以依赖于IP地址管理器(IPAM)来获取IP地址信息。CNI 312因此可以从SDN控制器管理器1325接收的虚拟路由器代理314、从DHCP服务器、静态分配、或从定制分配器获取IP地址信息。在一些示例中,至少一些应用容器的虚拟网络接口启用DPDK。因此,virtio-net接口可以附接到应用容器(或pod),并且vhost-net端附接到启用DPDK的vRouter 206A。
在一些示例中,由于vRouter 206A现在管理这些veth接口的一端,因此这些接口对内核380不可见。因此,这些接口对cRPD 324不可见,并且因此cRPD 324不能向外部世界宣布可达性信息。为了解决这个问题,可以使veth等效接口对cRPD 324可见。这不是cRPD324可以在其之上运行路由协议的接口(因为这需要使用内核设施,如套接字、TCP/IP堆栈等)。该接口用于向cRPD 324通知它需要通告的可达性。
在一些情况下,vRouter 206A可以直接向cRPD 324通知这个接口。这可能更可取,因为它在某些方面类似于当前VRF在cRPD 324中的处理方式。此外,如果该接口关闭,则vRouter 206A可以通知cRPD 324。如果cRPD启动,则vRouter 206A可以让cRPD知道它再次监测的所有接口。
利用这些接口,cRPD 324可以通告到达应用容器的MPLS可达性。cRPD 324可以通告vrf-table-label或per-nexthop标签(其中next-hop表示veth等效项)或per-prefix标签。当该MPLS路由可以安装到vRouter 206A时,vRouter代理314将具有将veth等效项转换为实际veth接口的能力。
以下是根据本公开的一个或多个方面的各种组件之间的另外的示例操作序列:
I.各种组件之间的用于创建初始连接的交互
1.cRPD 324 324通过netlink获知vhost0形式的内核。
2.域/网络控制器经由Netconf或其他管理协议在cRPD 324上配置(IGP和BGP)协议配置。备选地,操作员可以使用cRPD 324上的CLI手动执行该操作。
3.cRPD 324建立IGP邻接关系并且获知网络可达性和分段路由信息。
4.cRPD 324通过现有的netlink通道将该可达性信息编程到主机内核。
5.cRPD 324通过IGP获知的连通性来建立BGP会话。
6.BGP通过这个BGP会话来获知L3VPN路由。
7.cRPD 324从虚拟路由器206A获知工作负载接口。cRPD 324创建与该接口相对应的子网(例如,/30)和接口路由(/32)。
8.CNI 312在cRPD 324上的特定VRF下配置工作负载接口。对于DPDK接口,CNI 312还与虚拟路由器206A交互以启动pod与虚拟路由器206A之间的virtio-net/vhost-net接口。虚拟路由器206A继而向cRPD 324通知(通过基于gRPC的FIB通道)接口变得可用。
9.cRPD 324向虚拟路由器206A发送vrf接口映射。
10.cRPD 324将在步骤6中接收到的l3vpn路由导入到适当的vrfs,并且通过步骤3中的SR隧道来解析它们。
11.cRPD 324将这些隧道路由(在vrf.inet(6).0表中)安装到虚拟路由器206A。(虚拟路由器206A需要进行vhost0到物理端口0的转换)。
12.此外,cRPD 324为来自步骤7的vrf路由通告l3vpn路由。
13.cRPD 324安装带有弹出标签并且转发到工作负载(pop label and forwardto workload)语义的mpls.0路由。
II.当工作负载接口关闭时各种组件之间的交互。
1.当CNI 312触发请求移除接口时,虚拟路由器206A向cRPD
324通知接口删除。
2.cRPD 324删除子网和接口路由。
3.cRPD 324向工作负载发送可达性的撤回。
4.cRPD 324从虚拟路由器206A删除具有弹出并且转发到工作负载(pop andforwarding to workload)语义的mpls.0隧道路由。
III.VRF删除的各个组件之间的交互。
1.cRPD 324在内部从适当的vrf删除在步骤6(交互I.)中接收的l3vpn路由。
2.cRPD 324为这些路由发送删除(在vrf.inet(6).0表中),并且带有到vRouter的隧道下一跳。
3.此外,cRPD 324从步骤8中撤消针对vrf路由的l3vpn路由(交互I.)
4.cRPD 324向虚拟路由器206A发送删除,以获取具有弹出标签并且转发到工作负载(pop label and forward to workload)语义的mpls.0路由。
在本公开的一个方面,软件组件集提供了解决云原生5G网络环境所特有的联网要求的CNI功能。软件组件包括容器化路由协议守护进程(cRPD)以支持网络服务网格(NSM)架构。该软件组件集支持NSM架构,并且可以提供附加能力,诸如混合网络(物理与虚拟基础架构之间)、从计算节点集群外部到pod的直接可达性,以例如通过诸如BGP等协议进行通告,使用诸如MPLS、SRv6、IP-IP/VxLAN/GRE、IPsec等各种技术动态地建立隧道。
在这个方面的用例中,5G O-RAN网络可以使用云原生技术来部署,并且遵循5G拆分,其中DU(分布式单元)和CSR(小区站点路由器)被虚拟化并且在pod中的计算节点作为虚拟化路由器的实例来运行。该软件组件集可以作为蜂窝站点路由器操作,以为5G网络的中程提供L3可达性。
软件组件使用cRPD 324不仅在集群内而且在集群外分发pod的3层(L3)网络可达性信息。cRPD还在每个计算节点上对数据平面进行编程。为了获取更好的网络分组I/O性能,DU应用可以在应用pod中运行以绕过内核网络堆栈和抽象,并且从而使用例如零复制机制直接从物理NIC发送/接收分组。数据平面开发套件(DPDK)就是一个这样的框架,并且基于DPDK的虚拟路由器可以用作用户空间数据平面,该用户空间数据平面为此目的而利用DPDK实现高转发性能。
软件组件可以包括基于DPDK的虚拟路由器以支持DPDK应用。CNI插件管理针对应用的DPDK配置并且对虚拟路由器进行编程。这可以包括建立vhost控制通道和分配IP(例如,IPv4和IPv6两者)和MAC地址,通告pod IP地址,以及在pod被认为关闭或移除时检测和撤回路由。
针对cRPD的大多数现有用例要么提供仅控制平面的路由功能,诸如BGP路由反射器,要么驱动转发平面:白盒平台上的基于内核或基于ASIC的转发平面。容器和云计算的兴起导致需要容器编排平台来管理容器的生命周期。Kubernetes(K8s)是编排平台,其用于在集群计算环境中运行容器化应用。它提供容器化应用的自动部署、缩放、联网和管理。K8spod由表示应用实例的一个或多个容器组成,并且是K8s可以处理的最小单元。pod中的所有容器共享相同的网络命名空间。容器网络接口(CNI)提供针对Kubernetes中的应用pod的联网。它负责建立pod接口、k8s集群中的pod之间的地址分配和联网、以及不同工作负载之间的网络隔离。
CNI 312可以是CNI功能以及对支持网络服务网格(NSM)架构有用的能力。
虽然存在很多CNI解决方案,主要迎合数据中心用例,但本文中描述的技术可以通过与cRPD 324交互以提供NSM功能来解决云原生5G环境特有的网络要求。支持NSM架构的CNI提供了附加的功能,诸如混合网络(物理与虚拟基础设施之间)、从集群外部到pod的直接可达性,例如,通过诸如BGP等协议进行通告,使用诸如MPLS、SRv6、IP-IP/VxLAN/GRE、IPsec等各种技术动态来建立隧道。
5G O-RAN网络可以使用云原生技术部署并且遵循5G 7.2拆分,其中DU(分布式单元)和CSR(小区站点路由器)被虚拟化并且在服务器上运行。CNI 312充当蜂窝站点路由器以为中程提供L3可达性。
cRPD 324可以不仅在Kubernetes集群内(在Kubernetes部署中)而且在集群外分发pod的3层网络可达性信息。cRPD 324还负责对每个计算节点/服务器上的对应转发平面虚拟路由器206A进行编程。
vRouter 206A支持DPDK应用。CNI 312将负责为应用建立DPDK配置并且对vrouter206A进行编程。这包括建立vhost控制通道和分配IP(IPv4和IPv6两者)和MAC地址,通告podIP地址,并且在pod被认为关闭或删除时检测和撤回路由。
本公开中描述的方面提供的其他特征包括:
·使用诸如BGP和IS-IS等L3路由协议来通告pod的网络可达性
·使用BGP在集群内和集群外通告可达性
·网络命名空间(使用L3VPN和EVPN Type-5支持)
·用于安全和QoS的ACL和网络策略
·支持隧道:MPLS、SR-MPLS、SRv6、SR-MPLSoIPv6、VxLAN、IPIP、GRE
·使用BGP发信号通知的动态隧道
·用于业务加密的IPsec隧道
·用于提供安全、隔离的网络策略
·与vRouter 206A的DPDK版本集成,以获取更高的转发性能、封装、分组过滤和QoS
·作为可以使用YAML规范文件来部署在K8s中的容器集的递送。
构成CNI 312、虚拟化路由器、SDN控制器1324和SDN控制器管理器1325的组件集一起可以被认为是Kubernetes CNI,在本文中称为盘片(Platter)CNI——这不同于CNI 312插件,而是包含容器编排系统的网络解决方案,并且可以实现容器网络接口。
CNI 312和虚拟化路由器可以提供以下特征中的一项或多项:
·网络命名空间:应用pod应当经由非默认网络命名空间或使用L3VPN实现的路由实例可到达。
·IPv6底层:根据用例的要求支持IPv6底层。IGP协议应当能够交换IPv6路由。BGP协议会话应当使用IPv6地址来建立。
·IPv6覆盖:通过将IPv6地址分配给pod并且通过BGP通告它们来支持IPv6覆盖。
·BGP:盘片在k8s集群中的每个节点上运行,并且使用BGP向网络通告pod可到达性。通过BGP通告的路由可以传送SRv6标签栈或其他隧道封装属性。
·IGP:每个节点都将参与IGP底层以获知与其他BGP对等方和路由反射器的可到达性。IS-IS可以用于向网络通告主机/节点地址。
·SRv6:pod业务可以通过SRv6隧道传输。IS-IS用于获知分段路由SID信息。
·vrouter-dpdk:为了获取更好的分组I/O性能,在某些情况下支持vrouter-dpdk作为数据平面。这包括分配IP和MAC地址、生成针对应用的合适的DPDK配置、vrouter编程和路由通告。
K8s集群中的部署是使用YAML文件执行的,该YAML文件包含有关作为CNI的部分的所有容器的各种详细信息:镜像被托管在其上的存储库、初始化顺序、环境变量、配置和许可证密钥信息。通常,将定制YAML文件以适应Kubernetes部署。下面提供用于盘片CNI的示例YAML配置(platter.yml):
Figure BDA0003836525940000751
Figure BDA0003836525940000761
Figure BDA0003836525940000771
Figure BDA0003836525940000781
Figure BDA0003836525940000791
Figure BDA0003836525940000801
Figure BDA0003836525940000811
Figure BDA0003836525940000821
Figure BDA0003836525940000831
pod YAML配置
pod YAML应当将pod UID导出为DPDK应用可能需要的KUBERNETES_POD_UID。
注释
注释可以用于设置盘片所需要的以下可选配置细节:
·VRF名称:用于将接口添加到路由实例
·VRF目标:用于通过BGP来通告实例路由
示例配置
具有环境变量和注释的示例应用YAML配置如下所示。在本公开的前面部分提供了名为“du”的pod YAML的不同模式。
Figure BDA0003836525940000832
Figure BDA0003836525940000841
节点配置
盘片的初始版本将使用静态定义的pod网络配置,该pod网络配置使用配置映射文件而被加载。该配置映射在盘片CNI安装期间被读取并且作为文件存储在每个节点上。该配置文件包含基于每个接口的每个应用的详细信息,并且包括这样的IP地址、路由实例详细信息。每次盘片CNI被调用以建立pod接口时,使用pod名称和接口名称作为键,可以找到调出接口所需要的接口配置详细信息。
示例节点配置图
具有环境变量和注释的示例应用YAML配置(platter-node-config.yaml)如下所示:
Figure BDA0003836525940000842
Figure BDA0003836525940000851
Figure BDA0003836525940000861
Figure BDA0003836525940000871
图9是示出计算设备的示例操作模式的流程图。操作900是关于图2的计算设备200描述的,但可以由本公开的其他计算设备执行。虚拟路由器206A实现针对虚拟化PE路由器的数据平面(902)。CNI312配置虚拟网络接口(例如,启用DPDK的通道),以启用虚拟路由器206A与由容器229A表示的容器化应用之间的通信(904)。容器化RPD 324实现针对虚拟化PE路由器的控制平面(906)。容器化RPD 324获取由容器化应用发送的MAC地址或IP地址(908)。容器化RPD 324执行路由协议以生成和输出包括MAC地址或IP地址中的至少一项的路由,以实现针对容器化应用的VPN(910)。
图10是示出容器编排平台(诸如,编排器23)的示例操作模式的流程图。编排器23向计算节点部署容器化应用(例如,服务器12A)(702)。响应于向计算节点部署容器化应用,编排器23在计算节点中配置虚拟路由和转发(VRF)实例以实现针对容器化应用的虚拟专用网(VPN)(704)。
本文中描述的技术可以以硬件、软件、固件或其任何组合实现。描述为模块、单元或组件的各种特征可以在集成逻辑器件中一起实现,或者作为分立但可互操作的逻辑器件或其他硬件设备单独实现。在一些情况下,电子电路系统的各种特征可以实现为一个或多个集成电路器件,诸如集成电路芯片或芯片组。
如果以硬件实现,则本公开可以涉及一种装置,诸如处理器或集成电路设备,诸如集成电路芯片或芯片组。备选地或附加地,如果以软件或固件实现,则这些技术可以至少部分通过包括指令的计算机可读数据存储介质来实现,该指令在被执行时使处理器执行上述方法中的一个或多个方法。例如,计算机可读数据存储介质可以存储这样的指令以供处理器执行。
计算机可读介质可以形成计算机程序产品的部分,该计算机程序产品可以包括包装材料。计算机可读介质可以包括计算机数据存储介质,诸如随机存取存储器(RAM)、只读存储器(ROM)、非易失性随机存取存储器(NVRAM)、电可擦除可编程只读存储器(EEPROM)、闪存、磁性或光学数据存储介质等。在一些示例中,制品可以包括一个或多个计算机可读存储介质。
在一些示例中,计算机可读存储介质可以包括非暂态介质。术语“非暂态”可以表示存储介质没有体现在载波或传播信号中。在某些示例中,非暂态存储介质可以存储可以随时间改变的数据(例如,在RAM或高速缓存中)。
代码或指令可以是由包括一个或多个处理器的处理电路系统执行的软件和/或固件,诸如一个或多个数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、或者其他等效的集成或分立逻辑电路系统。因此,如本文中使用的术语“处理器”可以是指任何前述结构或适用于实现本文中描述的技术的任何其他结构。此外,在一些方面,本公开中描述的功能可以在软件模块或硬件模块内提供。

Claims (17)

1.一种用于虚拟专用网的计算设备,包括:
处理电路系统和存储设备,其中所述处理电路系统能够访问所述存储设备;
虚拟路由器,由所述处理电路系统执行并且被配置为实现针对虚拟化提供方边缘PE路由器的数据平面;
容器化应用;
虚拟网络接口,启用所述虚拟路由器与所述容器化应用之间的通信;以及
容器化路由协议进程,由所述处理电路系统执行并且被配置为实现针对所述虚拟化PE路由器的控制平面,所述容器化路由协议进程被配置为:
获取由所述容器化应用经由所述虚拟网络接口发送的媒体访问控制MAC地址或互联网协议IP地址;以及
执行第一路由协议以生成和输出包括所述MAC地址或所述IP地址中的至少一项的路由,以实现针对所述容器化应用的虚拟专用网VPN。
2.根据权利要求1所述的计算设备,其中所述容器化路由协议进程被配置为执行所述第一路由协议以与所述计算设备外部的物理路由器建立路由协议对等会话。
3.根据权利要求1所述的计算设备,其中所述容器化路由协议进程被配置为执行所述第一路由协议以与所述计算设备外部的不同虚拟化PE路由器建立路由协议对等会话。
4.根据权利要求1所述的计算设备,其中所述VPN是以太网VPN EVPN,并且所述路由包括EVPN Type-2路由或EVPN Type-5路由。
5.根据权利要求1所述的计算设备,其中所述VPN是3层VPN L3 VPN,并且所述路由被包括在多协议边界网关协议MP-BGP消息中。
6.根据权利要求1至5中任一项所述的计算设备,其中所述容器化路由协议进程被配置为:向所述虚拟路由器编程用于所述路由的转发信息,以使所述虚拟路由器向所述容器化应用转发分组。
7.根据权利要求1至5中任一项所述的计算设备,其中所述容器化路由协议进程被配置为:
执行第二路由协议以从所述容器化应用接收指示所述IP地址的路由协议消息。
8.根据权利要求1至5中任一项所述的计算设备,
其中所述容器化路由协议进程被配置为以主机网络模式操作以能够访问所述计算设备的主机网络接口,并且
其中所述容器化路由协议进程经由所述主机网络接口来输出所述路由。
9.根据权利要求1至5中任一项所述的计算设备,还包括:
针对所述VPN的虚拟路由和转发实例VRF,所述VRF被配置在所述容器化路由协议进程中,
其中所述VRF被配置有所述虚拟网络接口的端点。
10.根据权利要求1至5中任一项所述的计算设备,还包括:
容器网络接口CNI插件,由所述处理电路系统执行并且被配置为:
在所述虚拟路由器中为所述虚拟网络接口配置针对所述容器化应用的虚拟网络地址;以及
向所述容器化路由协议进程提供针对所述虚拟网络接口的IP地址。
11.根据权利要求10所述的计算设备,
其中所述容器化路由协议进程被配置为执行第二路由协议以使用针对所述虚拟网络接口的所述IP地址与所述容器化应用建立路由协议对等会话。
12.根据权利要求1至5中任一项所述的计算设备,
其中所述容器化路由协议进程被配置为:执行第二路由协议以与所述容器化应用建立路由协议对等会话,以接收经由所述虚拟网络接口而被发送的所述IP地址。
13.一种用于包括计算设备的计算设备集群的容器编排系统,所述容器编排系统包括:
处理电路系统和存储设备,其中所述处理电路系统被配置为使所述容器编排系统:
向计算节点部署容器化应用;以及
响应于向所述计算节点部署所述容器化应用,在所述计算节点中配置虚拟路由和转发VRF实例,以实现针对所述容器化应用的虚拟专用网VPN。
14.根据权利要求13所述的容器编排系统,
其中网络附接义规范定义所述VRF实例,并且
其中所述容器编排系统被配置为:响应于确定针对所述容器化应用的规范引用所述网络附接定义规范中的网络附接定义而配置所述VRF实例。
15.根据权利要求13至14中任一项所述的容器编排系统,其中所述容器编排系统被配置为:
向在所述计算节点上执行的容器网络接口CNI发送具有互联网协议IP前缀的路由,以使所述CNI使用所述IP前缀对所述容器化应用进行编程以指示经由所述容器化应用可到达的网络,其中针对所述容器化应用的规范包括所述IP前缀。
16.根据权利要求13至14中任一项所述的容器编排系统,其中所述容器编排系统被配置为:
向在所述计算节点上执行的容器网络接口CNI发送媒体访问控制MAC地址,以使所述CNI使用所述MAC地址对所述容器化应用进行编程,其中针对所述容器化应用的规范包括所述MAC地址。
17.一种包括指令的非暂态计算机可读介质,所述指令在由计算设备的处理电路系统执行时使所述计算设备:
执行虚拟路由器以实现针对虚拟化提供方边缘PE路由器的数据平面;
配置虚拟网络接口,以启用所述虚拟路由器与所述计算设备上的容器化应用之间的通信;以及
执行容器化路由协议进程以实现针对所述虚拟化PE路由器的控制平面,以:
获取由所述容器化应用经由所述虚拟网络接口发送的媒体访问控制MAC地址或互联网协议IP地址,以及
执行第一路由协议以生成和输出包括所述MAC地址或所述IP地址中的至少一项的路由,以实现针对所述容器化应用的虚拟专用网VPN。
CN202211089760.5A 2021-09-09 2022-09-07 针对虚拟专用网的容器化路由协议进程 Pending CN115801669A (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US202163242434P 2021-09-09 2021-09-09
US63/242,434 2021-09-09
US17/807,700 2022-06-17
US17/807,700 US20230079209A1 (en) 2021-09-09 2022-06-17 Containerized routing protocol process for virtual private networks

Publications (1)

Publication Number Publication Date
CN115801669A true CN115801669A (zh) 2023-03-14

Family

ID=83149150

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211089760.5A Pending CN115801669A (zh) 2021-09-09 2022-09-07 针对虚拟专用网的容器化路由协议进程

Country Status (3)

Country Link
US (1) US20230079209A1 (zh)
EP (1) EP4149064A1 (zh)
CN (1) CN115801669A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116599892A (zh) * 2023-07-17 2023-08-15 浪潮电子信息产业股份有限公司 一种服务器系统、路由方法、装置及电子设备和存储介质

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11212262B2 (en) * 2019-03-04 2021-12-28 Cyxtera Cybersecurity, Inc. Management of network access request based on source address of device
US11968243B2 (en) * 2021-06-21 2024-04-23 Northrop Grumman Systems Corporation Containerized cross-domain solution
WO2023069729A1 (en) * 2021-10-22 2023-04-27 Dish Wireless L.L.C. Systems and methods for cloud-native network slicing and testing-as-a-service with continuous integration and continuous delivery (ci/cd) capabilities
US11888819B2 (en) * 2021-11-09 2024-01-30 Axonius Solutions Ltd. Secure access to multiple isolated networks
US20230239268A1 (en) * 2022-01-21 2023-07-27 Vmware, Inc. Managing ip addresses for dpdk enabled network interfaces for cloud native pods
US20240037229A1 (en) * 2022-07-28 2024-02-01 Pure Storage, Inc. Monitoring for Security Threats in a Container System
US12068958B1 (en) * 2023-03-30 2024-08-20 Juniper Networks, Inc. Network service discovery
US11973849B1 (en) * 2023-06-22 2024-04-30 Bank Of America Corporation System and method for automated data sorting in an electronic network

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102724118B (zh) * 2012-06-06 2014-12-31 华为技术有限公司 标签分发方法及设备
US9473394B1 (en) * 2014-01-10 2016-10-18 Juniper Networks, Inc. Proactive flow table for virtual networks
US9948552B2 (en) * 2015-04-17 2018-04-17 Equinix, Inc. Cloud-based services exchange
US10237176B2 (en) * 2016-06-30 2019-03-19 Juniper Networks, Inc. Auto discovery and auto scaling of services in software-defined network environment
US10506083B2 (en) * 2017-06-27 2019-12-10 Cisco Technology, Inc. Segment routing gateway storing segment routing encapsulating header used in encapsulating and forwarding of returned native packet
CN112753204B (zh) * 2018-07-24 2023-07-25 上海诺基亚贝尔股份有限公司 递送数据平面分组的方法、设备和计算机可读介质
US10728145B2 (en) * 2018-08-30 2020-07-28 Juniper Networks, Inc. Multiple virtual network interface support for virtual execution elements
US11070469B1 (en) * 2019-09-11 2021-07-20 Juniper Networks, Inc. Scaling border gateway protocol services
US10944691B1 (en) * 2020-01-15 2021-03-09 Vmware, Inc. Container-based network policy configuration in software-defined networking (SDN) environments

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116599892A (zh) * 2023-07-17 2023-08-15 浪潮电子信息产业股份有限公司 一种服务器系统、路由方法、装置及电子设备和存储介质
CN116599892B (zh) * 2023-07-17 2023-10-03 浪潮电子信息产业股份有限公司 一种服务器系统、路由方法、装置及电子设备和存储介质

Also Published As

Publication number Publication date
US20230079209A1 (en) 2023-03-16
EP4149064A1 (en) 2023-03-15

Similar Documents

Publication Publication Date Title
US20230123775A1 (en) Cloud native software-defined network architecture
CN110875844B (zh) 用于虚拟执行元件的多虚拟网络接口支持
CN114422351B (zh) 用指定的后端虚拟网络配置服务负载平衡器
CN110875848B (zh) 控制器和用于配置虚拟执行元件的虚拟网络接口的方法
US20230079209A1 (en) Containerized routing protocol process for virtual private networks
CN115001962A (zh) 多种类型接口的容器网络接口
CN114995945A (zh) 部署到计算节点的容器的隔离的数据接口
US20230107891A1 (en) User interface for cloud native software-defined network architectures
US12074884B2 (en) Role-based access control autogeneration in a cloud native software-defined network architecture
US12101204B2 (en) Network segmentation for container orchestration platforms
EP4160409A1 (en) Cloud native software-defined network architecture for multiple clusters
EP4160408A1 (en) Network policy generation for continuous deployment
EP4302469A1 (en) Containerized router with virtual networking
US20240305586A1 (en) Hybrid data plane for a containerized router
US20240095158A1 (en) Deployment checks for a containerized sdn architecture system
EP4160411A1 (en) Virtual network routers for cloud native software-defined network architectures
CN115208825A (zh) 单个计算节点上的多个智能网络接口卡
CN116888940A (zh) 利用虚拟联网的容器化路由器
US20240179089A1 (en) Containerized router service chaining for containerized network functions
US20240073087A1 (en) Intent-driven configuration of a cloud-native router
EP4160410A1 (en) Cloud native software-defined network architecture
CN117255019A (zh) 用于虚拟化计算基础设施的系统、方法及存储介质
CN117640389A (zh) 云原生路由器的意图驱动配置
CN117687773A (zh) 用于容器编排平台的网络分段
CN117278428A (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