CN116888940A - 利用虚拟联网的容器化路由器 - Google Patents
利用虚拟联网的容器化路由器 Download PDFInfo
- Publication number
- CN116888940A CN116888940A CN202280016939.XA CN202280016939A CN116888940A CN 116888940 A CN116888940 A CN 116888940A CN 202280016939 A CN202280016939 A CN 202280016939A CN 116888940 A CN116888940 A CN 116888940A
- Authority
- CN
- China
- Prior art keywords
- containerized
- network
- computing device
- virtual
- router
- 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
Links
- 230000006855 networking Effects 0.000 title claims description 43
- 238000000034 method Methods 0.000 claims abstract description 156
- 230000008569 process Effects 0.000 claims abstract description 80
- 238000012545 processing Methods 0.000 claims abstract description 58
- 230000001413 cellular effect Effects 0.000 claims abstract description 18
- 238000003860 storage Methods 0.000 claims description 35
- 238000011161 development Methods 0.000 claims description 13
- 230000005540 biological transmission Effects 0.000 claims description 12
- 235000008694 Humulus lupulus Nutrition 0.000 claims description 3
- 239000003795 chemical substances by application Substances 0.000 description 117
- 230000006870 function Effects 0.000 description 58
- 238000010586 diagram Methods 0.000 description 27
- 238000007726 management method Methods 0.000 description 24
- 101100116973 Mus musculus Dmbt1 gene Proteins 0.000 description 18
- 230000008901 benefit Effects 0.000 description 12
- 238000005538 encapsulation Methods 0.000 description 12
- 238000005516 engineering process Methods 0.000 description 11
- 238000004891 communication Methods 0.000 description 10
- 239000004744 fabric Substances 0.000 description 9
- 238000013500 data storage Methods 0.000 description 8
- 230000005641 tunneling Effects 0.000 description 8
- 230000007246 mechanism Effects 0.000 description 7
- 230000010354 integration Effects 0.000 description 6
- 230000003993 interaction Effects 0.000 description 6
- 238000002955 isolation Methods 0.000 description 6
- 230000004044 response Effects 0.000 description 6
- 238000012546 transfer Methods 0.000 description 6
- 230000000694 effects Effects 0.000 description 4
- 238000013507 mapping Methods 0.000 description 4
- 230000006978 adaptation Effects 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 3
- 238000012217 deletion Methods 0.000 description 3
- 230000037430 deletion Effects 0.000 description 3
- 230000001419 dependent effect Effects 0.000 description 3
- 238000009434 installation Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000003863 physical function Effects 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- ABEXEQSGABRUHS-UHFFFAOYSA-N 16-methylheptadecyl 16-methylheptadecanoate Chemical compound CC(C)CCCCCCCCCCCCCCCOC(=O)CCCCCCCCCCCCCCC(C)C ABEXEQSGABRUHS-UHFFFAOYSA-N 0.000 description 2
- 241000764238 Isis Species 0.000 description 2
- 241000721662 Juniperus Species 0.000 description 2
- 230000009471 action Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 238000001914 filtration Methods 0.000 description 2
- 238000005417 image-selected in vivo spectroscopy Methods 0.000 description 2
- 238000012739 integrated shape imaging system Methods 0.000 description 2
- 239000002184 metal Substances 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 241000380131 Ammophila arenaria Species 0.000 description 1
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 239000000872 buffer Substances 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 238000013499 data model Methods 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- GVVPGTZRZFNKDS-JXMROGBWSA-N geranyl diphosphate Chemical compound CC(C)=CCC\C(C)=C\CO[P@](O)(=O)OP(O)(O)=O GVVPGTZRZFNKDS-JXMROGBWSA-N 0.000 description 1
- 230000036541 health Effects 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000011065 in-situ storage Methods 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 230000007935 neutral effect Effects 0.000 description 1
- 239000005022 packaging material Substances 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000002265 prevention Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 238000012384 transportation and delivery Methods 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/58—Association of routers
- H04L45/586—Association of routers of virtual routers
Abstract
一般而言,本公开描述了用于在云原生编排框架内操作的对容器化路由器的技术。在一个示例中,虚拟化蜂窝站点路由器包括被配置有容器化路由器的计算设备,该计算设备包括:容器化虚拟路由器,该容器化虚拟路由器被配置为在处理电路上执行并且被配置为实现针对容器化路由器的数据平面;容器化路由协议过程,该容器化路由协议过程被配置为在处理电路上执行并且被配置为实现针对容器化路由器的控制平面;以及网荚,该网荚包括容器化分布式单元,其中容器化路由协议过程被配置为通告包括容器化分布式单元的可达性信息的路由信息。
Description
相关申请的交叉引用
该申请要求具有以下的权益:
美国专利申请号17/649,632,于2022年2月1日提交;
美国专利申请号17/649,640,于2022年2月1日提交;
美国专利申请号17/649,643,于2022年2月1日提交;
美国临时申请号63/242,434,于2021年9月9日提交;
印度申请号202141008548,于2021年3月1日提交;
每个申请的全部内容通过引用并入本文。
技术领域
本公开涉及虚拟化计算基础设施,并且更特别地涉及容器化路由器。
背景技术
在传统的云数据中心环境中,存在提供计算和/或存储能力以运行各种应用的大量互连服务器。例如,数据中心可包括为订户(即数据中心的客户)托管应用和服务的设施。例如,数据中心可托管所有基础设施装备,诸如网络和存储系统、冗余电源和环境控件。在传统的数据中心中,存储系统和应用服务器的集群经由一层或多层物理网络交换机和路由器所提供的高速交换结构来互连。更复杂的数据中心提供遍布世界各地的基础设施,以及位于各种物理托管设施中的订户支持装备。
虚拟化数据中心正在成为现代信息技术(IT)基础设施的核心基础。特别地,现代数据中心已广泛利用虚拟化环境,其中虚拟主机(在本文中也称为虚拟执行元件,诸如虚拟机或容器)在物理计算设备的底层计算平台上部署并执行。
数据中心或包括一个或多个服务器的任何环境内的虚拟化可提供若干优势。一个优点是虚拟化可对效率的显著改进。随着每个物理CPU具有大量内核的多核微处理器架构的出现,底层物理计算设备(即,服务器)变得越来越强大,虚拟化变得更加容易和高效。第二优点是虚拟化提供了对计算基础设施的重要控制。随着物理计算资源成为可替代资源(诸如在基于云的计算环境中),计算基础设施的供应和管理变得更加容易。因此,企业IT人员通常更喜欢数据中心中的虚拟化计算集群,因为除了虚拟化提供的效率和更高的投资回报(ROI)之外,还具有管理优势。
容器化是基于操作系统级虚拟化的虚拟化方案。容器是用于彼此隔离并与主机隔离的应用的轻量级且可移植的执行元素。因为容器与主机硬件计算环境不紧密耦接,所以应用可绑定到容器图像并且作为单个轻量级封装在支持底层容器架构的任何主机或虚拟主机上执行。因此,容器解决了如何使软件在不同计算环境中工作的问题。容器提供了从一种计算环境到另一种计算环境(虚拟或物理)一致地运行的承诺。
由于容器的固有轻量级特性,单个主机通常可支持比传统虚拟机(VM)更多的容器实例。容器通常是短暂的,可比VM更有效地创建和移动容器,并且它们还可作为逻辑相关元素组进行管理(对于一些编排平台,例如Kubernetes,有时称为“网荚(pod)”)。这些容器特性影响了容器联网解决方案的要求:网络应为灵活且可扩展的。VM、容器和裸机服务器可能需要共存于相同计算环境中,其中在不同的应用部署之间启用通信。容器网络还应不知道与用于部署容器化应用的多种类型的编排平台一起工作。
管理部署和基础设施以用于应用执行的计算基础设施可涉及两个主要角色:(1)编排—用于跨主机集群的自动部署、扩展和应用操作以及提供计算基础设施,其可包括以容器为中心的计算基础设施;和(2)网络管理—用于在网络基础设施中创建虚拟网络以实现在虚拟执行环境(诸如容器或VM)上运行的应用之间以及在传统(例如,物理)环境上运行的应用之间的分组化通信。软件定义的网络有助于网络管理。
发明内容
一般而言,本公开描述了用于在云原生编排框架内操作的容器化路由器的技术。在至少一些方面,这些技术可涉及部署一个或多个容器(“网荚(pod)”)的逻辑相关组,该组支持数据平面开发套件(DPDK)以便支持虚拟路由器和网荚之间的数据信道上的快速路径分组通信。容器联网接口插件(CNI)是应用容器的联网解决方案并且是运行时可执行文件,其可帮助配置容器与托管容器的计算设备(“主机”)的其他组件之间的接口,其可以是网荚的构件。计算设备可另选地被称为“计算节点”或“服务器”。CNI通常将网络地址(例如,IP地址)分配给网络接口并且还可添加与该接口相关的路由,诸如针对默认网关和一个或多个名称服务器的路由。
在本公开的一方面,描述了针对虚拟化蜂窝站点路由器的技术,该虚拟化蜂窝站点路由器具有用于在计算节点上实现分布式单元(DU)的容器化应用。至少在一些情况下,计算节点包括针对数据平面的基于DPDK的虚拟路由器。
在本公开的一方面,容器化路由协议守护程序(cRPD)是被封装为容器以在基于Linux的环境中运行的路由协议过程。cRPD可作为容器化过程在主机的用户空间中执行。因此,cRPD在基于Linux的计算节点上提供了丰富的物理路由器路由软件系列。cRPD提供控制平面功能。cRPD的现有具体实现方式(在主机上运行)使用由Linux内核提供的转发。因此,该控制平面是容器化的。
虚拟路由器是在计算节点上提供数据平面功能的软件实体。计算节点可托管集中编排和供应的VM或容器。虚拟路由器可与SDN控制器一起工作以通过交换路由、配置和其他数据来创建覆盖网络。虚拟路由器可作为Linux内核模块或基于DPDK的过程运行。DPDK允许虚拟路由器每秒处理比在作为内核模块运行时更多的分组。该虚拟路由器数据平面可以是容器化的。组合起来,容器化cRPD和容器化基于DPDK的虚拟路由器因此可以是全功能的容器化路由器。
计算节点可用于使用云原生、开放无线电接入网络(“O-RAN”或“开放RAN”)架构来实现(第5代)蜂窝网络的部分。可以利用容器和Kubernetes来构建云。蜂窝站点路由器功能可在托管分布式单元(DU)5G功能作为容器化应用的计算节点上实现。也就是说,DU功能可在这些计算节点上实现为Kubernetes网荚。在非常高的层面上,DU功能将消耗RAN业务,对其进行处理,然后通过隧道将其发送到数据中心托管的控制单元功能(CU)。
为了满足针对该5G网络用例的丰富路由功能和转发性能要求,计算节点可被配置为使用集成方案,其中在计算节点上运行的cRPD作为控制平面进行操作并且配置基于DPDK的虚拟路由器作为将由容器化DU处理的、针对移动网络业务的对应快速路径转发平面。
在本公开的一方面,通用数据平面模型与虚拟化计算基础设施的网络控制器解耦。例如,根据该方面的数据平面可暴露可由任何控制平面服务实现的应用编程接口(API)。在一些示例中,数据平面还能够与多种类型的CNI配合使用。数据平面可使用基于DPDK的虚拟路由器来实现并且暴露用于交换控制数据的远程过程调用(例如,gRPC)接口。例如,用于虚拟路由器数据平面的虚拟路由器代理可作为暴露用于对虚拟路由器数据平面进行编程的gRPC API的gRPC服务器进行操作。这些技术包括用于为网荚配置虚拟网络接口的工作流程,其中虚拟路由器代理响应于由CNI发出的端口请求而从容器化路由协议守护程序(cRPD)获得信息。
在本公开的一方面,容器化路由协议守护程序(cRPD)与两个不相交的数据平面进行对接:针对计算节点的内核联网堆栈和基于DPDK的虚拟路由器。cRPD可充分利用内核的联网堆栈来专门为DPDK快速路径设置路由。cRPD接收的路由信息可包括底层路由信息和覆盖路由信息。cRPD可在内核中可见的vHost接口上运行路由协议,并且cRPD可在内核FIB中安装与内部网关协议(IGP)学习的路由(底层)相对应的转发信息库(FIB)更新(例如,以支持建立到这些目的地的多跳内部边界网关协议(iBGP)会话)。同时,基于DPDK的虚拟路由器可向cRPD通知由CNI针对计算节点创建的应用网荚接口。此类网荚接口不能向内核公布或以其他方式告知内核。cRPD可将到这些网荚接口的可达性通告给网络的其余部分,例如,L3VPN网络层可达性信息(NLRI)。对应的多协议标签交换(MPLS)路由可在虚拟路由器上编程,但不能编程到内核,因为这些标签的下一跳是到网荚接口的“POP和转发”操作,并且这些接口只是在虚拟路由器中可见的。类似地,通过BGP L3VPN接收到的可达性信息只能被编程到虚拟路由器,因为只有网荚需要此类可达性信息以用于转发。也就是说,内核可能没有任何用途或需要此类可达性信息的应用。
在本公开的一方面,为了提供网络连接性的高可用性,当将DPDK接口添加到在计算节点上实例化的应用网荚时,CNI还可将第二备份接口添加到应用网荚中。备份接口可被配置在计算节点内的与其上配置有活动接口的活动数据平面不同的备份数据平面上。例如,活动数据平面可以是基于DPDK的虚拟路由器,而备份数据平面可以是基于内核的虚拟路由器。
在本公开的一方面,软件组件集合提供解决云原生5G网络环境特有的联网要求的CNI功能。软件组件包括容器化路由协议守护程序(cRPD)以支持网络服务网格(NSM)架构。软件组件集合支持NSM架构并且可提供附加功能,诸如混合联网(物理和虚拟基础设施之间)、从计算节点集群外部到网荚的可达性以使用诸如MPLS、SRv6、IP-IP/VxLAN/GRE、IPsec等的各种技术来动态建立隧道(例如,通过诸如BGP的协议进行通告)。在此方面的用例中,5G O-RAN网络可使用云原生技术来部署并遵循5G拆分,其中DU(分布式单元)和CSR(蜂窝站点路由器)被虚拟化并在计算节点上运行。软件组件集合可作为蜂窝站点路由器运行以为针对5G网络的中传提供L3可达性。
软件组件使用cRPD来不仅在集群内部而且在集群外部分配网荚的第三层(L3)网络可达性信息。cRPD还对每个计算节点上的数据平面进行编程。为了更好的网络分组I/O性能,DU应用可在应用网荚中运行以绕过内核联网堆栈和抽象,并且由此使用例如零复制机制以直接从物理NIC发送/接收分组。数据平面开发套件(DPDK)就是一个此类框架,并且基于DPDK的虚拟路由器可用作用户空间数据平面,其充分利用DPDK以用于针对此目的的高转发性能。
软件组件可包括基于DPDK的虚拟路由器以支持DPDK应用。CNI插件管理针对应用的DPDK配置并且对虚拟路由器进行编程。这可包括设置vhost控制通道并且分配IP(例如,IPv4和IPv6两者)和MAC地址、通告网荚IP地址,以及在认为网荚已关闭或删除时检测和撤回路由。
本公开中描述的各个方面可以以这些方面的任何组合一起使用。“DAY ONE:CONTRAIL DPDK vROUTER”,2021,Kiran KN等人,Juniper Networks,Inc.,以其全部内容通过引用并入本文。“DAY ONE:CLOUD NATIVE ROUTING WITH cRPD”,2021,Hitesh Mali等人,Juniper Networks,Inc.,以其全部内容通过引用并入本文。
在一个示例中,计算设备被配置有容器化路由器,该计算设备包括:处理电路;容器化虚拟路由器,该容器化虚拟路由器被配置为在处理电路上执行并且被配置为实现针对容器化路由器的数据平面;以及容器化路由协议过程,该容器化路由协议过程被配置为在处理电路上执行并且被配置为实现针对容器化路由器的控制平面。
在一个示例中,5G无线接入网络包括:中传网络,该中传网络将gNodeB的分布式单元连接到gNodeB的集中式单元;以及计算设备,该计算设备包括:处理电路;容器化路由协议过程,该容器化路由协议过程被配置为在处理电路上执行并且被配置为实现针对容器化路由器的控制平面;网荚,该网荚包括容器化分布式单元或容器化集中式单元中的一者,其中容器化路由协议过程被配置为经由中传网络通告路由信息,该路由信息包括容器化分布式单元或容器化集中式单元中的一者的可达性信息;以及容器化虚拟路由器,该容器化虚拟路由器被配置为在处理电路上执行并且被配置为实现针对容器化路由器的数据平面以将在该容器化虚拟路由器处接收的业务转发到容器化分布式单元或容器化集中式单元中的一者。
在一个示例中,虚拟化蜂窝站点路由器包括被配置有容器化路由器的计算设备,该计算设备包括:容器化虚拟路由器,容器化虚拟路由器被配置为在处理电路上执行并且被配置为实现针对容器化路由器的数据平面;容器化路由协议过程,该容器化路由协议过程被配置为在处理电路上执行并且被配置为实现针对容器化路由器的控制平面;以及网荚,网荚包括容器化分布式单元,其中容器化路由协议过程被配置为通告包括容器化分布式单元的可达性信息的路由信息。
本公开的一个或多个示例的细节在附图和下面的描述中阐述。其他特征、目的和优点将从描述和附图以及权利要求中变得显而易见。
附图说明
图1是示出根据本公开中描述的技术的示例移动网络系统的框图。
图2是示出根据本公开的技术的更详细的图1的移动网络系统的一部分的示例实现的框图。
图3A至3B是示出根据本公开的技术的实现虚拟化蜂窝站点路由器的服务器的示例实例的框图。
图4是示出根据本公开的技术的示例服务器的框图。
图5是示出根据本公开的技术的示例虚拟路由器代理的框图。
图6是示出根据本公开的技术的示例服务器的框图,该示例服务器具有在服务器内的示例控制和数据业务流。
图7是描绘根据本公开的示例方面的导致虚拟路由器中的路由编程的端口添加上的操作序列的概念图。
图8是根据本公开中描述的技术的示例计算设备(例如,主机)的框图。
图9是根据本公开中描述的技术的作为虚拟化计算基础设施的集群的编排器主节点的实例进行操作的示例计算设备的框图。
图10是示出根据本公开中描述的技术的示例容器化路由协议守护程序的示例实现的框图,编排器可使用网荚来部署该守护程序。
图11是示出根据本公开的技术的虚拟路由器代理的示例组件以及用于为网荚创建和通告新端口的操作和消息的示例序列的框图。
图12示出了根据本公开中描述的技术的示例系统和分组转发。
图13示出了根据本公开中描述的技术的示例系统和分组转发。
图14是示出根据本公开的技术的用于对虚拟路由器转发信息进行编程的示例操作的概念图。
图15是示出根据本公开的技术的用于在具有云原生路由器的服务器中配置和通告虚拟网络接口的示例操作的概念图。
在整个描述和附图中,相同的附图标记表示相同的元件。
具体实施方式
5G使用云原生方法,其中功能块被分解成微服务。微服务作为容器部署在x86平台上,由Kubernetes(缩写为“K8s”)编排。这包括5G核心控制平面功能,诸如接入和移动管理功能(AMF)和会话管理功能(SMF)、RAN控制平面功能诸如CU-CP、服务管理和编排(SMO)、近实时和非实时无线电智能控制器(RIC)以及甚至一些数据平面功能诸如CU-DP和DU。
网荚之间的K8s网络是经由称为容器联网接口(CNI)的插件(也称为容器联网接口插件)实现的。然而,当CNI所服务的容器化网络功能在电信网络内发挥关键作用时,传统CNI的网络能力相当初级并且不适合。如本文所述,云原生路由器更适合这些情况。云原生路由器是一种容器化路由器,其允许基于x86或ARM的主机成为网络路由系统的一流成员,从而参与诸如中间系统到中间系统(IS-IS)和边界网关协议(BGP)的协议并且提供基于多协议标签交换/分段路由(MPLS/SR)的传输和多租户。换句话说,该平台不是网络的附属物(如客户边缘(CE)路由器),而是可作为提供方边缘(PE)路由器运行。
与常规路由器相比,云原生路由器可能具有一个或多个优势。路由器具有控制平面和转发平面。控制平面参与动态路由协议并且与网络中的其他路由器交换路由信息。它将结果以前缀、下一跳和相关联的SR/MPLS标签的形式下载到转发平面中。本文描述的具体实现方式是模块化的,在这个意义上,控制平面不知道如何实现转发平面的确切细节。在硬件路由器中,转发平面可能基于定制ASIC。相比之下,云原生路由器是虚拟化路由器。然而,这两种情况下的路由协议软件在功能上是类似的。这意味着云原生路由器受益于与支持世界的一些最大网络的基于硬件的路由器相同的高度全面和健壮的协议实现方式。
云原生路由器使用容器化路由协议守护程序(cRPD)控制平面和虚拟路由器(vRouter)转发平面,从而以占用空间较小的软件包递送高性能网络,该软件包的功能类似于非虚拟路由器、物理网络功能(PNF)。转发平面可经由DPDK、Linux内核或智能NIC的选择来实现。完整集成递送符合K8s CNI的分组,其可在K8s环境中部署(例如,支持Multus)。
云原生路由器可被合并到其所位于的主机中并且与K8s集成。通过示例,本公开描述了DU和云原生路由器如何能够在相同1U大小的基于x86或ARM的主机或其他计算设备上共存。这对于那些功率和空间有限的蜂窝站点尤其有吸引力,因为它避免了对以单独DU和路由器形式的两盒解决方案的需求。多个O-DU或其他工作负载可附接到相同云原生路由器。
蜂窝站点服务器可以是K8s工作节点(或“从属”)。O-DU网荚连接到云原生路由器中。O-DU可能需要多个网络接口,在某些情况下由Multus元CNI促进。这些接口中的每个接口可被映射到云原生路由器上的不同第三层VPN以支持多个网络切片。本文描述的CNI在由K8s网荚事件触发时动态地添加或删除网荚与虚拟路由器容器之间的接口。它还以路由区分符和路由目标的形式动态更新cRPD控制平面容器,其具有针对每个网荚接口的主机路由和对应的第三层VPN映射。第三层VPN可使用虚拟路由和转发实例(VRF)来实现。进而,cRPD控制平面经由gRPC接口相应地对虚拟路由器转发平面进行编程。以此方式,云原生路由器就被引入到数据路径中,从而支持与边缘或区域DC站点中运行的CU的F1接口。
虽然主要相对于O-RAN应用(诸如分布式单元)进行描述,但云原生路由器技术适用于为其他容器化应用配置基于主机的虚拟路由器。
由于CNR本身是云原生应用,因此它支持使用K8smanifest或Helm Chart进行安装。这些包括路由器的初始配置,包括路由协议和第三层VPN以支持切片。CNR可在几秒钟内被编排和配置,其中所有路由协议与网络启动和运行的其余部分邻接。在CNR的生命周期期间,持续的配置改变(例如,添加或删除网络切片)可经由选择CLI、K8s manifest、NetConf或Terraform来实现。
通过采用K8s CNI框架,云原生路由器可减轻在使用容器化设备而不是其物理设备时产生的传统操作开销。通过公开适当的设备接口,云原生路由器可将虚拟设备的操作模型标准化为物理设备,从而消除运营商网络操作环境内的采用的障碍。云原生路由器可向任何经训练的操作团队呈现熟悉的路由设备外观和感觉。云原生路由器具有与基于硬件的平台类似的特性和功能以及类似的操作模型。同样,域控制器可使用与任何其他Junos路由器一起使用的协议以便与云原生路由器通信并且控制云原生路由器,例如Netconf/OpenConfig、gRPC、路径计算元素协议(PCEP)和可编程路由守护程序(pRPD)API。
执行云原生路由器的节点可参与IS-IS、开放最短路径优先(OSPF)、BGP和/或其他内部或外部路由协议。此外,可通常基于分段路由(SR)使用MPLS。这样做的原因有两个:在需要时允许业务工程,以及通过使用基于MPLS的第三层VPN来支持多租户。作为可选方案,可替代地使用SRv6来满足这些要求。拥有全面的路由能力也是实现网络切片所必要的。每个切片租户被放置在其自身的第三层VPN中。从第三层VPN的角度来看,云原生路由器充当提供方边缘(PE)路由器。因此,云原生路由器经由BGP与网络中的其他PE路由器交换第三层VPN前缀,无论这些其他PE是物理路由器还是驻留在其他主机上的云原生路由器。每个租户可被放置在每个PE上的单独VRF表中,从而提供租户之间的正确隔离和安全程度,就像常规第三层VPN服务一样。这巧妙地解决了K8s本身不提供这种隔离的问题。第三层VPN是经过验证的用于实现网络中的多租户的方法,并且受到全球从其网络服务提供方购买此服务的许多大公司的信任。
通常,传输网络提供多种路径,每条路径都针对特定成本函数(诸如最小延迟或高带宽)进行调整。这些是使用分段路由弹性算法或RSVP或基于分段路由的业务工程来实现的。当使用业务工程时,路径可由控制器计算并且经由PCEP协议传送到云原生路由器。当控制器经由流式遥测来检测到网络拥塞时,它自动重新计算受影响的路径以缓解拥塞。PE路由器(包括云原生路由器)根据对应切片所需的路径类型将标签(BGP颜色社区)应用于给定VRF中的前缀。例如,第一切片可能需要可能的最低延迟传输,并且因此被映射到低延迟路径以便到达边缘数据中心(EDC)中的O-CU。第二切片需要具有相当低的延迟的高带宽。因此其O-CU也位于EDC中,并且业务被映射到通向EDC的高带宽路径。第三切片需要高带宽传输,但对延迟不敏感,因此其O-CU可被放置在区域数据中心(RDC)中。第三切片的业务被映射到通向RDC的高带宽路径。在其中将存在更多切片的实际部署中,切片到传输路径的映射通常将是多对一。例如,需要给定端点对之间的低延迟传输的所有切片共享连接这两个端点的相同低延迟业务工程或弹性算法路径。
总之,云原生路由器可向托管容器化网络功能的计算平台带来全方位的路由功能。这可允许平台充分参与运营商的网络路由系统并且促进多租户和网络切片。它可提供与基于硬件的路由器相同的熟悉的查找和释放、操作体验和控制平面接口。
图1是示出根据本公开中描述的技术的示例移动网络系统的框图。移动网络系统100可以是实现由例如第3代合作伙伴计划(3GPP)、开放无线电接入网络(“O-RAN”或“ORAN”)联盟、欧洲电信标准协会(ETSI)、因特网工程任务组(IETF)和国际电信联盟(ITU)颁布的5G标准的5G网络。
5G网络通过围绕云原生原则构建来分解移动前传和中传网络。因此,服务提供方可避免被锁定到特定设备供应商,并且可在不同层和位置处结合来自不同供应商的有效解决方案来构建和供应移动网络系统。这可改进无线电接入网络(RAN),特别地使它们更加开放、有弹性和可扩展。
基于O-RAN的网络将传统电信网络中发现的基带单元(BBU)分解成三个功能单元:无线电单元(RU)、分布式单元(DU)和集中单元(CU)。RU、DU和CU的不同功能可通过由基于x86或基于ARM的主机服务器执行的软件来实现。CU可进一步分成不同控制平面(CU-CP)和用户平面(CU-UP)功能以进一步实现控制和用户平面分离(CUPS)。这种解耦有助于为部署带来灵活性—RU、DU和CU的不同组合可部署在相同位置处,或者可部署在不同位置处。例如,在延迟至关重要的情况下,RU、DU和CU可一起放置在边缘处。符合O-RAN的DU和CU通常分别称为O-DU和O-CU。被称为用户平面功能(UPF)的附加数据平面元件在移动核心网络7中操作以在CU和数据网络15之间转发业务。附加控制平面元件在移动核心网络7中操作。这些控制平面元件包括网络切片选择功能(NSSF)、策略控制功能(PCF)、认证服务器功能(ASUF)、接入和移动管理功能(AMF)、网络暴露功能(NEF)、网络功能存储库功能(NRF)、应用功能(AF)、统一数据管理(UDM)和会话管理功能(SMF)。
移动网络系统100包括无线电接入网络9和移动核心网络7。无线电接入网络9包括位于各个蜂窝网络站点(“蜂窝站点”)处的RU 14。每个RU 14由LO PHY和RF发射器组成。LOPHY组件可使用用于高性能分组处理的专用硬件来实现。
RU 14经由前传网络连接到DU 22A-22X(统称为“DU 22”)。前传网络连接LO PHY和HIPHY并且由RU 14和DU 22用来实现5G的F2接口。DU 22管理由RU 14进行的无线电的分组传输。在一些情况下,此类分组传输符合公共分组无线电接口(CPRI)和/或增强型CPRI(eCPRI)标准,或者IEEE 1914.3。DU 22可实现无线电链路控制(RLC)、媒体访问控制(MAC)和HIPHY层。DU 22至少部分地由CU 13A-13B(统称为“CU 13”)控制。
DU 22经由中传网络连接到CU 13,该中传网络可由DU 22和CU 13用来实现5G的F1。CU 13可实现无线电资源控制(RRC)层和分组数据汇聚协议(PDCP)层。CU 13经由回传网络连接到移动核心网络7。中传网络和回传网络各自可以是广域网(WAN)。
在移动网络系统100的无线电接入网络9中,gNodeB包括CU 13中的一个和DU 22中的一个。CU可支持多个DU以实现多个gNodeB。并且单个DU可支持一个或多个RU。因此,例如相对于图1,CU 13A和DU 22A以及RU 14中的一个RU 14可形成一个eNodeB,而(服务器12B的)CU 13A和DU 22B以及RU 14中的另一个RU 14可形成另一个eNodeB。
如图1所示,DU 22中的任何DU可位于或者可不位于包括DU所支持的RU 14的蜂窝站点处。DU 22X位于蜂窝站点处,而DU 22A-22N位于本地数据中心并且共同支持多个RU14。移动网络系统100可具有包括数千个蜂窝站点的无线电接入网络9,每个蜂窝站点具有一个或多个RU 14以及任选的一个或多个DU 22。无论位于蜂窝站点还是异地,DU通常都位于所支持的RU的20km范围内。CU 13在图1中被示为位于区域数据中心处,通常在所支持的DU 22的40km范围内。
无线电接入网络9连接到移动核心网络7以与数据网络15交换分组。移动核心网络7可以是5G核心网络,并且数据网络(DN)15可表示例如一个或多个服务提供方网络和服务、因特网、第3方服务、IP多媒体子系统或其他网络。
移动网络系统100包括多个服务器12A-12X以执行DU 22。服务器12中的每一个可以是托管/执行实现DU 22的软件的真实或虚拟服务器。这种软件可包括作为例如虚拟机或容器部署到服务器12的一个或多个应用。虽然图1中未示出,但CU 13也可由服务器执行。
DU 22、中传网络、CU 13和回传网络的组合有效地实现无线电单元14和移动核心网络7之间的基于IP的传输网络。
根据本公开的一个或多个方面的技术,虚拟化蜂窝站点路由器24A-24X(“vCSR20A-20X”并且统称为“vCSR 20”)提供DU 22与CU 13之间的第三层路由功能。这些vCSR 24可在与一个或多个DU 22相同的服务器12上执行以将提供方边缘路由器功能提供给此类DU22。尽管每个vCSR 20被称为“蜂窝站点”路由器,但任何vCSR 20可与vCSR为其提供IP服务的一个或多个DU 22一起部署到本地数据中心,如相对于vCSR 20A-20N所示,即其中本地数据中心包括执行一个或多个蜂窝站点的DU 22的服务器12。
vCSR 20中的每一个使用容器化路由协议守护程序20A-20X(“cRPD 24A-24X”并且统称为“cRPD 24”)中的一个来实现。更特别地,vCSR 20中的每一个使用cRPD 24中的对应cRPD作为用于实现第三层路由器的控制平面。cRPD提供控制平面路由功能。例如,cRPD可执行IP(IPv4/IPv6)底层路由协议,诸如中间系统-中间系统(IS-IS)和边界网关协议(BGP);通告集群内部和外部的DU 22的可达性,例如,到CU 13;实现网络名称空间(使用L3VPN和EVPN类型5广告来支持);为了安全、网络隔离和服务质量(QoS)而实现访问控制列表(ACL)和网络策略;支持隧道和隧道协议(例如MPLS、SR-MPLS、SRv6、SR-MPLSoIPv6、SR-MPLSoIPv4、VxLAN、IP-in-IP、GRE);支持使用BGP来发信号通知的动态隧道;支持IPSec隧道的加密;以及通过获知和/或配置的路由信息对服务器的vCSR的转发平面进行编程,以在DU22中的一者或多者与CU 13中的一个之间提供第三层分组转发、封装、分组过滤和/或QoS。
例如,由服务器12A执行的vCSR 20A包括cRPD 24A和服务器12A的转发平面(例如,SmartNIC、基于内核的转发平面、或基于数据平面开发套件(DPDK)的转发平面)。cRPD 24A提供一种或多种上述路由功能来对vCSR 20A的转发平面进行编程以除其他任务外,为集群外部的DU 22A通告第三层路由——包括跨中传网络到CU 13A——并且在DU 22A和CU 13A之间转发第三层分组。以这种方式,技术实现了在与容器化DU 22相同的服务器12上执行的云原生容器化蜂窝站点路由器20,从而显著减小DU 22和CU 13之间的中传上的延迟。
作为容器化路由器,vCSR 20允许基于x86或基于ARM的主机成为网络路由系统的一流成员,从而参与诸如IS-IS和BGP的协议并且提供基于MPLS/SR的传输和多租户。因此,vCSR 20可作为在DU 22、CU 13和移动核心网络7之间传输第三层分组的网络的提供方边缘(PE)路由器来操作,而不是作为网络的附属物(类似于客户边缘(CE)路由器)。
此外,在一些示例中,cRPD 24和基于主机的转发平面的集成还可递送可在Kubernetes环境内部署的Kubernetes CNI兼容包。DU 22的单个服务器和vCSR 20的一起执行可避免具有单独的DU和路由器的两盒解决方案,从而潜在地减小成本、功率和空间要求,这对于蜂窝站点特别有吸引力。应用工作负载可以是容器化网络功能(CNF),诸如DU。
编排器50表示容器编排平台。在虚拟化计算基础设施的上下文中,“编排”通常是指向对于编排平台可用的主机服务器供应、调度和管理虚拟执行元件和/或在此类虚拟执行元件上执行的应用和服务。特别地,容器编排允许容器协调并且是指例如由容器编排平台进行的容器到主机服务器的部署、管理、扩展和配置。编排平台的示例实例包括Kubernetes、Docker swarm、Mesos/Marathon、OpenShift、OpenStack、VMware和AmazonECS。编排器50编排DU 22和vCSR 20的至少容器化RPD 24。在一些示例中,vCSR 20的数据平面也由编排器50容器化和编排。例如,数据平面可以是基于DPDK的虚拟路由器。
容器(包括实现容器化路由协议守护程序24的容器)可使用基于集群的框架来部署到虚拟化环境,其中集群的集群主节点管理容器到集群的一个或多个集群从属节点的部署和操作。本文使用的术语“主节点”和“从属节点”涵盖类似设备的不同编排平台术语,其区分集群的主要管理元件和集群的主要虚拟执行元件托管设备。例如,Kubernetes平台使用术语“集群主节点”和“从属节点”,而Docker Swarm平台是指集群管理器和集群节点。服务器12或其上的虚拟机可表示集群节点。
编排器50和软件定义网络(SDN)控制器70可在单独的计算设备上执行或者在相同的计算设备上执行。编排器50和SDN控制器70中的每一者可以是在一个或多个计算设备上执行的分布式应用。编排器50和SDN控制器70可实现一个或多个集群的相应主节点,每个集群具有由相应服务器12实现的一个或多个从属节点。一般而言,SDN控制器70控制无线电接入网络9的网络配置以促进DU 22、CU 13和移动核心网络7之间的分组化通信。SDN控制器70可将路由和配置信息分发到无线电接入网络9的控制平面元件,特别地到cRPD 24。例如,SDN控制器70可对分段路由报头进行编程、配置L3VPN、配置无线电接入网络9的路由器(包括虚拟化蜂窝站点路由器20)中的VRF。SDN控制器70可实现一种或多种南向协议以用于配置路由器、交换机以及中传和回传网络的其他网络设备,以及用于配置vCSR 20。示例南向协议可包括路径计算元件协议(PCEP)、BGP、Netconf、OpenConfig、用于配置cRPD 24的另一个协议等。有关L3VPN的附加信息可在通过引用整体并入的“BGP/MPLS IP VirtualPrivate Networks(VPNs)”,征求意见4364,因特网工程任务组的网络工作组,2006年2月中发现。
SDN控制器70可提供逻辑上且在一些情况下物理上集中的控制器。在一些示例中,SDN控制器70可响应于从编排器50和/或管理员/操作员接收的配置输入而操作。SDN控制器70可对诸如服务器12、网络交换机/路由器和/或其他网络基础设施的NFV基础设施(NFVI)进行编程。在NFVI编程的情况下,SDN控制器70可配置操作系统内核的各方面以配置L3 IP路由、Linux桥、iptable、网络名称空间和/或虚拟交换机。
示例SDN控制器70、虚拟路由器和虚拟路由器代理的附加信息可在以下中发现:国际申请号PCT/US2013/044378,于2013年6月5日提交,并且名称为“PHYSICAL PATHDETERMINATION FOR VIRTUAL NETWORK PACKET FLOWS”;美国专利申请号14/226,509,于2014年3月26日提交,并且名称为“Tunneled Packet Aggregation for VirtualNetwork”;和美国专利申请号17/305,110,于2021年6月30日提交,并且名称为“NetworkController Horizontal Scaling for Network Device Configurations SessionManagement”;每一者通过引用并入,如同在本文中完整阐述一样。
一般而言,编排器50控制跨服务器12的集群的容器的部署、扩展和操作以及计算基础设施的提供,该计算基础设施可包括以容器为中心的计算基础设施。编排器50以及在一些情况下的网络控制器70可为一个或多个Kubernetes集群实现相应的集群主控。例如,Kubernetes是提供跨公共云和私有云的可移植性的容器管理平台,每个云可向容器管理平台提供虚拟化基础设施。
虚拟化蜂窝站点路由器20可提供实现至少一个实际应用的一种或多种技术优势。现有的移动网络使用位于每个BBU上或靠近每个BBU的物理蜂窝站点路由器。物理路由器通常具有专门的外形尺寸,相对难以更新和配置,并且由于供应商锁定效应而相对难以更换。虽然在蜂窝站点相对较少的情况下(如3G和4G/LTE移动网络),这些影响是可忍受的,但5G移动网络的RAN所需的相对较多的蜂窝站点数量加剧了与这些影响相关的资本和运营成本。尽管5G网络提供方正在转向分解式RAN架构(例如,O-RAN),但此类网络仍然依赖于物理蜂窝站点路由器或基于虚拟机的路由器来管理通过中传网络的DU和CU之间的路由和数据业务。
具有容器化路由协议守护程序24的虚拟化蜂窝站点路由器20减轻了在蜂窝站点处部署物理或基于VM的路由器的许多负面影响。例如,与基于VM的路由器相比,容器化RPD24在计算资源(CPU、存储器)方面更轻量,并且在空间和功率利用方面可能比基于VM和物理路由器更高效。虚拟化CSR 20可实现这些优势,同时实现相当的性能,其中基于DPDK的虚拟路由器被用作数据平面以便为vCSR 20提供高效且高的分组I/O速率从而与DU 22通信。也就是说,在具有基于DPDK的数据平面的单个物理服务器12A上具有vCSR 20A和DU 22A(例如,O-DU)可提供与物理蜂窝站点路由器同等的分组转发性能。作为技术优势的进一步示例,vCSR 20消除了对物理蜂窝站点路由器的需要并且可减小空间、减小功耗并且还减小资本/运营支出。另外,在一些示例中并且如下文进一步详细描述的,通过将vCSR 20呈现为与编排平台的容器联网接口(CNI),vCSR 20可被集成到Kubernetes基础设施中,可用于为应用工作负载配置网络。因此,通过部署容器化vCSR 20/RPD 24以用作CNI、集成到移动网络系统100中以及集成到Kubernetes中,技术可促进vCSR 20部署和配置的云原生体验。集成在Kubernetes中允许利用其现有机制来监测容器化RPD 24的健康并且在必要时重新启动,同时管理vCSR 20(并且特别是容器化RPD 24)的生命周期。
图2是示出根据本公开的技术的更详细的图1的移动网络系统的一部分的示例具体实现的框图。系统200包括CU 213A-213K,CU 213A-213K中的每一个可表示CU 13中的任一个。在该示例中,使用L3VPN和隧道231A-231K来实现多个网络切片(例如,5G网络切片)以将DU 22A连接到针对相应网络切片的不同CU 213A-213K。
当今服务提供方面临的主要技术挑战之一是提供未来服务将需要的各种网络性能特征的能力。仅举几例,带宽、延迟、分组丢失、安全性和可靠性将因服务而异。诸如机器人的远程操作、大规模物联网(IOT)和自动驾驶汽车的新兴应用需要连接性,但特性截然不同。架构灵活性、软件可编程性以及不同业务领域(医疗、工厂、军事、公共安全等)和应用的需求的结合导致了网络切片概念的产生。网络切片提供了对移动网络进行完全分段的方法,以支持特定类型的服务或业务或者甚至支持不拥有物理网络的主机服务提供方(多租户)。此外,每个切片可根据容量、覆盖范围、连接性、安全性和性能特征进行优化。由于切片可相互隔离,就像它们在控制平面和用户平面上物理上分开一样,因此网络切片的用户体验将与其为单独网络的体验相同。网络切片可跨越网络的所有域,包括在网络节点上运行的软件应用(存储器和处理)、核心传输网络的特定配置、接入网络配置以及终端设备。网络切片使得多个运营商能够安全地共享移动网络,但将其自身的用户与其他用户分开,并且用户的不同应用可使用提供截然不同的性能特征的不同网络切片。
虚拟化蜂窝站点路由器20A包括虚拟路由器转发平面(虚拟路由器)206A,该虚拟路由器转发平面被配置有针对通过相应L3VPN实现的相应网络切片的VRF 212A-212K(统称为“VRF 212”),vCSR 20A和路由器204A-204B使用将VRF 212连接到路由器204A-204B上的VRF 210A-210K的隧道231A-231K来实现VRF 212A-212K。隧道231A-231K中的每一者可表示SR-MPLSoIPv6或上述其他类型的隧道。路由器204A-204K中的每一者可以是针对具有一个或多个服务器以执行CU 213A-213K中的任一者或多者的数据中心的网关路由器。数据中心可包括数据中心布局以在路由器和CU之间交换移动数据业务。在一些情况下,数据中心的一个或多个服务器还可执行针对移动网络的UPF,在这种情况下,数据中心布局还可在CU和UPF之间交换移动数据业务。
VRF 212A-212K中的每一者具有与DU 22A的对应虚拟网络接口。因此,DU 22A的虚拟网络接口中的每一个可被映射到vCSR 20A中的不同L3VPN以例如支持多个网络切片中的不同网络切片。如下文进一步详细描述的,服务器12A的CNI在由来自编排器50的网荚事件触发时动态地添加或删除网荚(这里部署有DU 22A)和虚拟路由器206A之间的虚拟网络接口,该虚拟路由器在一些示例中也可被部署为容器。CNI还利用针对每个DU 22A/网荚虚拟网络接口的主机路由和对应的第三层VPN映射以路由区分符和路由目标的形式动态更新cRPD 24A(vCSR 20A的控制平面)。进而,cRPD 24A相应地对虚拟路由器206A(vCSR 20A的数据平面)进行编程,任选地使用gRPC接口。以这种方式,vCSR 20A作为云原生路由器被引入到数据路径中,例如以支持与例如可在边缘或区域数据中心站点中执行的CU 213A-213K的F1接口。在各种示例中,虚拟路由器206A可表示基于SmartNIC的虚拟路由器、基于内核的虚拟路由器或基于DPDK的虚拟路由器。
图3A至3B是示出根据本公开的技术的实现虚拟化蜂窝站点路由器的服务器的示例实例的框图。服务器300、350可各自表示图1的服务器12中的任一个。在一些情况下,服务器300、350被配置为实现虚拟化蜂窝站点路由器和分布式单元两者以用于DU 22A与虚拟化蜂窝站点路由器20A的数据平面之间的移动数据业务的同盒转发。服务器300、350各自可以是裸机服务器或虚拟机。在图8中描述了服务器300、350的示例硬件架构。
服务器300、350包括一个或多个网络接口卡(NIC)321A-321B(统称为“NIC 321”),每个网络接口卡具有一个或多个硬件接口。在5G无线电接入网络部署中,NIC 321A的接口320可经由物理布线耦接到RU。接口320可实现F2接口。NIC 321B的接口322可经由物理布线耦接到中传网络,用于向/从CU发送/接收移动数据业务。接口322可实现F1接口。
在高层,基于DPDK的虚拟路由器数据或转发平面(“虚拟路由器”)206A由虚拟路由器代理314通过转发信息进行编程以用于实现分组快速路径。虚拟路由器代理314可以是用户空间过程。虚拟路由器代理314可具有用于从控制平面过程(诸如cRPD 324)接收配置和路由信息的北向接口340。cRPD 324可以是图1的cRPD 24A的示例。虚拟路由器代理314具有用于对虚拟路由器206A进行编程的南向接口341。参考图5更详细地描述接口340的示例实现。本文对“虚拟路由器”的引用可具体指虚拟路由器转发平面,或者指虚拟路由器转发平面(例如,虚拟路由器206A)和对应的虚拟路由器代理(例如,虚拟路由器代理314)的组合。
cRPD 324可具有用于与SDN控制器70交换配置和路由信息的北向接口。容器化网络接口312可以是CNI插件,其配置容器工作负载(在该示例中为DU 22A-1至22A-N)与基于DPDK的虚拟路由器206A的接口。编排器50可编排基于DPDK的虚拟路由器206A、cRPD 324和/或DU 22工作负载。在一些情况下,工作负载可能具有多个接口和多种类型的接口(例如,一些具有虚拟路由器206A,一些具有NIC 321A)。因此,CNI 312可表示能够通过多种类型的接口配置工作负载的CNI或统一CNI的组合。多个CNI可由诸如Multus的主CNI控制。在编排器50是Kubernetes主控的情况下,可为编排器50实现定制资源定义(CRD)以支持多租户和网络隔离。
编排器50编排包括容器工作负载的网荚。CNI 312配置网荚和数据平面之间的虚拟接口,该数据平面可以是基于DPDK的虚拟路由器206A、基于内核的虚拟路由器或基于SmartNIC的虚拟路由器。在一些示例中,CNI 312将每个网荚的virtio接口配置为基于DPDK的虚拟路由器206A的vhost用户接口。在一些示例中,CNI 312将每个网荚的veth对配置到虚拟路由器206A。虚拟路由器代理314可例如以系统日志的形式收集遥测数据并且将其输出到遥测收集器。在一些示例中,虚拟路由器206A具有与NIC 321B的绑定接口,该NIC可以是支持DPDK的基于Intel的NIC。绑定接口有利于布局接口之间的分组负载平衡。配置虚拟接口的附加描述可在2020年7月28日发布的美国专利10,728,145中发现,该专利的全部内容通过引用并入本文。
在Kubernetes部署中,CNI 312为应用工作负载提供网络。例如,这包括设置接口、IP地址管理和接入控制列表;通告包括服务器300、350(Kubernetes从属节点的示例)中的任何一者的Kubernetes集群内的工作负载的可达性;以及设置网络名称空间。
CNI 312可利用cRPD 324来扩展其控制平面能力并且促进与应用工作负载DU22A-1至22A-N一起机载的虚拟化蜂窝站点路由器20A。cRPD 324可合并网络服务网格架构(NSM)、服务发现、外部端点和隧道的元件。cRPD 324可使用诸如边界网关协议(BGP)的外部路由协议来通告Kubernetes集群内部和外部的网荚可达性。cRPD 324可使用内部网关和其他路由协议(诸如IS-IS、OSPF、标签分发协议(LDP)等)来参与底层网络。cRPD 324还可使用协议/技术诸如MPLS、MPLSoUDP或MPLSoGRE隧道;VxLAN;SR-MPLS、SRv6、SRv4和/或IPSec来提供对高级L3VPN覆盖的支持。
cRPD 324作为vCSR 20A的控制平面操作,而虚拟路由器206A作为vCSR 20A的数据或转发平面操作。因此,利用cRPD 324的CNI 312能够促进使用L3VPN的多租户,例如,实现不同租户的网络切片;应用的ACL和网络策略;和IPSec以用于高安全性。
图10是示出编排器可网荚容器来部署的cRPD 324或本公开的任何其他cRPD的示例实现的框图。cRPD 1440可被部署为Docker、coreOS(rkt)或其他容器平台中的微服务。
cRPD 1440包括管理接口1400,其可表示命令行接口(CLI)、Netconf、安全外壳(SSH)、PCEP或简单网络管理协议(SNMP)接口。管理接口1400可支持YANG、OpenConfig或其他配置数据格式。管理接口1400可从自动化系统1420接收配置数据并且可将遥测数据输出到遥测系统1422。
cRPD 1440实现可包括BGP、OSPF、IS-IS、LDP、分段路由的路由协议1402,并且可从控制器或自动化系统接收用于编程的静态路由(由可编程性1424表示)。cRPD 1440包括路由基础设施1404以支持路由协议1402。路由基础设施1404可包括路由信息库(RIB)、RIB管理器、标签信息库(LIB)、LIB管理器。路由基础设施1404可实现双向转发检测(BFD)。cRPD1440包括转发信息库(FIB)适配层(1406)以通过在数据平面中配置转发信息来将cRPD1440集成到数据平面中。例如,FIB适配层1406可实现gRPC、Netlink或rtsock接口以便对虚拟路由器(例如,基于DPDK的虚拟路由器)进行编程。FIB适配层1406可实现另一种类型的接口以便对虚拟路由器、基于内核的vSwitch、SmartNIC、网络处理器、基于ASIC的转发芯片或其他数据平面进行编程。
图3B示出了具有不相交数据平面的服务器的示例实现。内核380可表示Linux内核、其他Unix变体内核、或包括联网堆栈并且能够进行分组转发的其他操作系统内核。
服务器350具有用于分组转发的两个数据平面,由内核380实现的第一数据平面和由虚拟路由器206A实现的第二数据平面。基于DPDK的虚拟路由器206A被配置有物理接口322的“所有权”。物理接口322可以是VRF 212的VPN附接电路。物理接口322可与虚拟路由器206A的相应接口相关联,虚拟路由器206A通过该相应接口经由物理接口322发送和接收业务。
根据本公开的技术,虚拟路由器206A将相应接口382暴露给物理接口322的内核380。也就是说,对于每个物理接口,虚拟路由器206A向内核380暴露接口。每个接口382可以是vHost接口。因此,内核380可经由接口382与虚拟路由器206A发送和接收网络分组。
在一些示例中,cRPD 324运行路由协议并且需要与服务器350外部的路由器交换路由协议消息。此外,cRPD 324依赖于内核380联网堆栈来获取底层网络的网络拓扑信息,cRPD 324需要该信息来与外部路由器建立路由协议邻接。接口382为cRPD 324提供经由内核380和虚拟路由器206A对物理接口322的访问,并且因此提供对可经由物理接口322访问的底层网络的访问。此类底层网络可包括中传网络、用于服务器350位于其中的本地数据中心的交换布局等。虚拟路由器206A被配置有路由,该路由使虚拟路由器206A将在物理接口322中的一个处接收并且目的地为接口382中的对应接口的IP地址的网络分组经由接口382中的该对应接口转发到内核380。
内核380经由接口384将网络分组输出到cRPD 324。接口384可表示由内核380暴露的系统调用接口/API、文件系统、pthread、套接字、或诸如cRPD 324的过程可通过其从内核380接收分组以及将分组注入到该内核中的其他机制。以此方式,cRPD 324可作为控制平面操作以用于以合并联网堆栈、路由协议基础设施和内核380的其他网络特征的方式执行虚拟化蜂窝站点路由器20A的路由协议;而虚拟路由器206A可作为数据平面操作以用于以排除内核380的方式在DU 22A-1-22A-N和物理接口322之间转发数据业务。因此,因为基于DPDK的虚拟路由器206A在用户空间中运行,并且与基于内核的转发相比,通常提供更好的性能能力,所以这些不相交的数据平面(内核380+虚拟路由器206A)和(单独的虚拟路由器206A)可通过虚拟路由器206A提供快速路径数据分组处理以及针对虚拟化蜂窝站点路由器20A的完整控制平面路由功能。
图6是示出根据本公开的技术的示例服务器的框图,该示例服务器具有在服务器内的示例控制和数据业务流。服务器600可类似于图3B的服务器350或本文描述的其他服务器。服务器600与服务器350的不同之处在于网荚422A-422L不一定是DU(例如,DU微服务),尽管网荚422A-422L在一些情况下可以是DU。cRPD 324作为由服务器600实现的路由器的控制平面操作,并且基于DPDK的虚拟路由器206A作为路由器的快速路径转发平面操作。从虚拟路由器206A的角度来看,网荚422A-422L是端点,并且特别地可表示已经被编程到虚拟路由器206A中的一个或多个虚拟网络的覆盖端点。单个vhost接口vhost0接口382A可以是图3B的接口328中的任一个的示例,并且由虚拟路由器206A向内核380暴露并且在一些情况下由内核380向虚拟路由器206A暴露。vhost接口382A具有用于“在主机处”接收业务的相关联底层主机IP地址。因此,内核380可以是包括作为网络设备的服务器600的底层网络的网络端点,该网络端点具有vhost接口382A的IP地址。应用层端点可以是cRPD 324或由内核380管理的其他过程。
底层网络是指提供网络中的节点(通常是服务器)之间的连接性的物理基础设施。底层网络负责跨基础设施递送分组。底层的网络设备使用路由协议来确定IP连接性。底层网络设备上为路由目的使用的传统路由协议为OSPF、IS-IS和BGP。覆盖网络是指提供虚拟工作负载(通常是VM/网荚)之间的连接性的虚拟基础设施。这种连接性建立在底层网络之上并且允许构建虚拟网络。覆盖业务(即,虚拟网络)通常封装在IP/MPLS隧道或其他隧道中,其由底层网络路由。覆盖网络可跨底层网络设备的全部或子集运行并且经由虚拟化实现多租户。
控制业务700可表示由cRPD 324执行的一种或多种路由协议的路由协议业务。在服务器600中,可通过虚拟路由器206A所拥有的物理接口322接收控制业务700。虚拟路由器206A被编程有针对vhost0接口382A主机IP地址的路由以及接收下一跳,这使虚拟路由器206A将在物理接口322处接收并且目的地为vhost0接口382A主机IP地址的业务经由vhost0接口382A发送到内核380。从cRPD 324和内核380的角度来看,所有此类控制业务700看起来都来自vhost0接口382A。因此,cRPD 324路由将指定vhost0接口382A作为路由的转发下一跳。cRPD 324选择性地安装一些到虚拟路由器代理314的路由以及到内核380的相同(或其他)路由,如下文进一步详细描述的。虚拟路由器代理314将接收与由cRPD 324接收的一些路由相对应的转发信息库(FIB)更新。这些路由将指向vHost0接口382A,并且虚拟路由器206A可自动将vHost0接口382A转换或映射到物理接口322。
如上面相对于图3B解释的,由cRPD 324编程的路由信息可被分类成底层和覆盖。cRPD 324将安装到内核380的底层路由,因为cRPD 324可能需要该可达性来与外部路由器建立附加协议邻接/会话,例如,通过由IGP提供的可达性的BGP多跳会话。cRPD 324支持使用允许与RIB、路由实例、前缀或其他属性进行匹配的路由策略构造来选择性过滤对特定数据平面(例如对内核380或虚拟路由器206A)的FIB更新。
由cRPD 324通过vhost0接口382A发送到虚拟路由器206A的控制业务700可由虚拟路由器206A从针对vhost0接口382A的对应物理接口322发送出去。
如图所示,在由编排器50经由编排代理310通知时,基于cRPD的CNI 312将为每个应用网荚422A、422L创建虚拟网络(此处为“网荚”)接口。网荚接口的一端终止于网荚中包括的容器中。CNI 312可请求虚拟路由器206A开始监测网荚接口的另一端,并且cRPD 324促进来自物理接口322的目的地为基于DPDK的网荚422A、422L的应用容器的业务使用DPDK、排他地并且不涉及内核380地转发。相反过程适用于由容器422A、422L发起的业务。
然而,因为基于DPDK的虚拟路由器206A管理这些针对网荚422A、422L的虚拟网络接口,所以内核380不知道这些虚拟网络接口。服务器600可使用DPDK转发路径专用的隧道来在基于DPDK的集群422A、422L;虚拟路由器206A;和NIC 312B之间内部地发送和接收覆盖数据业务800。
这样,在服务器600中,cRPD 324与两个不相交的数据平面接合:内核380和基于DPDK的虚拟路由器206A。cRPD 324利用内核380联网堆栈以专门为DPDK快速路径设置路由。cRPD 324接收的路由信息包括底层路由信息和覆盖路由信息。cRPD 324在内核380中可见的vHost接口382A上运行路由协议,并且cRPD 324可在内核380FIB中安装与IGP学习的路由(底层路由信息)相对应的FIB更新。这可允许建立到此类IGP学习路由中指示的目的地的多跳iBGP会话。再次,cRPD 324路由协议邻接涉及内核380(和vHost接口382A),因为内核380执行联网堆栈。
虚拟路由器206A的虚拟路由器代理314向cRPD 324A通知网荚422A、422L的应用网荚接口。这些网荚接口由CNI 312创建并且由虚拟路由器代理314专门管理(即,不涉及内核380)。这些网荚接口对于内核380来说是未知的。cRPD 324可将这些容器接口的可达性作为包括网络层可达性信息(NLRI)的L3VPN路由通告给网络的其余部分。在5G移动网络上下文中,此类L3VPN路由可存储在针对不同网络切片的虚拟路由器206A的VRF中。经由与虚拟路由器代理314的接口340,对应的MPLS路由可由cRPD 324仅编程到虚拟路由器206A,而不编程到内核380。这样是因为这些MPLS标签的下一跳是到网荚422A、422L中的一个的网荚接口的弹出和转发;这些接口仅在虚拟路由器206A中可见并且在内核380中不可见。类似地,通过BGP L3VPN接收到的可达性信息可由cRPD 324选择性地编程到虚拟路由器206A,因为仅需要此类路由以用于转发由网荚422A、422生成的业务。内核380没有需要这种可达性的任何应用。编程到虚拟路由器206A的以上路由构成覆盖网络的覆盖路由。
图4是示出根据本公开的技术的示例服务器的框图。服务器400可类似于图6的服务器600。第一数据平面394包括内核380。第二数据平面392包括虚拟路由器206A和虚拟路由器206A的虚拟路由器代理314。第一数据平面394和第二数据平面392是不相交的。第一数据平面394和第二数据平面392可分别存储针对底层网络和覆盖网络的不同路由。第一数据平面394和第二数据平面392可独立地执行转发查找并使用相应的不同存储路由来转发业务。cRPD 324是针对处理底层路由和覆盖路由的路由协议过程。在获悉路由后,无论是通过路由协议还是从SDN控制器70,cRPD 324都可选择性地对到内核380的底层路由和到虚拟路由器206A的覆盖路由进行编程(经由虚拟路由器代理314)。
图5是示出根据本公开的技术的示例虚拟路由器代理的框图。虚拟路由器代理314包括用于经由通用接口340与cRPD 324(gRPC客户端)交换数据的gRPC服务器520。gRPC服务器520的API包括用于交换虚拟网络接口数据和请求的虚拟机接口(VMI)API 530、用于交换配置数据和请求的配置API 532、以及用于交换路由和请求的路由API 534—包括用于使得cRPD 324能够对经由虚拟路由器代理314到虚拟路由器206A的路由进行编程。同步模块544通过虚拟网络接口(例如,DPDK网荚和基于DPDK的虚拟路由器206A之间的veth对的一部分或virtio-vhost接口)对虚拟路由器206A进行编程,并且利用路由信息来对虚拟路由器206A进行编程。
接口540可表示存储描述在执行虚拟路由器代理314的服务器上执行的应用网荚的虚拟网络接口的数据的数据结构。端口服务542监听来自CNI 312的请求,诸如为应用网荚添加新“端口”的请求,该端口服务542可将其转换为经由接口340订阅对cRPD 324的请求以从cRPD 324获得虚拟网络接口配置信息。端口服务542可使用REST服务器来实现。
以这种方式,虚拟路由器代理314向针对由服务器上的应用网荚发起或目的地为服务器上的应用网荚的覆盖业务的数据平面提供通用接口340。该通用接口340可由任何控制器、路由协议过程或其他代理实现,因为它依赖于gRPC而不是专有接口。
下面进一步描述图5的虚拟路由器314的示例实现细节。
在本公开的一方面,通用数据平面模型与虚拟化计算基础设施的网络控制器解耦。例如,根据该方面的数据平面可暴露可由任何控制平面服务实现的应用编程接口(API)530、532、534。在一些示例中,数据平面还能够与多种类型的CNI 312配合使用。数据平面可使用基于DPDK的虚拟路由器来实现并且暴露gRPC接口340以用于交换控制数据。例如,针对虚拟路由器数据平面的虚拟路由器代理314可作为暴露用于对虚拟路由器数据平面206A进行编程的gRPC API的gRPC服务器520进行操作。这些技术包括用于为网荚配置虚拟网络接口的工作流程,其中虚拟路由器代理314响应于来自CNI 312的端口请求而从容器化路由协议守护程序(cRPD)324获得信息。
本公开描述了与SDN控制器解耦的通用数据平面模型,并且可暴露可由任何控制平面服务(诸如虚拟路由器代理314)实现的API。所提出的数据平面(例如,虚拟路由器206A和虚拟路由器代理314)也将具有与任何CNI一起工作的能力。在一些情况下,数据平面将与Platter CNI一起工作。(Platter被描述为本公开的另一个方面,作为提供解决云原生5G网络环境特有的网络需求的CNI功能的软件组件集合。软件组件包括容器化路由协议守护程序(cRPD)以支持网络服务网格(NSM)架构。软件组件集合支持NSM架构。)此外,还将考虑可能将数据平面优化为模块化且占用空间更小的解决方案。本文提出的通用数据平面可以是对当前基于轨迹的数据平面的扩展。所提出的设计将包括针对虚拟路由器和dpdk转发平面两者的范围,同时还将满足支持即将推出的技术(例如eBPF和XDP)以及支持基于虚拟路由器和DPDK的转发平面的需求。该设计还将为使相同通用数据平面同时与多个控制平面协同工作铺平道路。因此,与现有的控制平面和数据平面集成方案相比,计算节点数据平面可变得与SDN控制平面更加松散地耦接。
在现有数据平面的模型中,存在实现数据平面的两个构建块—虚拟路由器代理和虚拟路由器(或dpdk)转发平面。虚拟路由器代理可以是在Linux上运行的用户空间过程。它充当本地轻量级控制平面并且负责以下功能:
●它使用XMPP与控制节点交换诸如路由的控制状态。
●它使用XMPP从控制节点接收低级配置状态,诸如路由实例和转发策略。
●它向分析节点报告分析状态(诸如日志、统计数据和事件)。
●它将转发状态安装到转发平面中。
●它与编排代理合作发现VM的存在和属性。
●它对每个新流的第一分组应用转发策略并且在转发平面的流表中安装流条目。
●它代理DHCP、ARP、DNS和MDNS。未来可包括附加代理。
每个虚拟路由器代理连接到至少两个控制节点以实现双活冗余模型中的冗余。
虚拟路由器转发平面是现有系统,可作为Linux中的可加载内核模块运行,并且负责以下功能:
●它实现了封装要发送到覆盖网络的分组以及解封装要从覆盖网络接收的分组。
●它将分组分配给路由实例:从覆盖网络接收的分组基于MPLS标签或虚拟网络标识符(VNI)分配给路由实例。与本地虚拟机的虚拟接口绑定到路由实例。
●它在转发信息库(FIB)(也称为转发表)中查找目标地址并且将分组转发到正确的目的地。路由可以是第三层IP前缀或第二层MAC地址。
●可使用流表来应用转发策略:它将分组与流表进行匹配并且应用流动作。
○它将未找到流规则的分组(即每个流的第一分组)发送到虚拟路由器代理,然后该虚拟路由器代理在流表中安装规则。
○它将某些分组(诸如DHCP、ARP、MDNS)发送到虚拟路由器代理以用于代理到SDN控制器。
根据本公开的一个或多个方面的技术,虚拟路由器转发平面可使用基于DPDK的路由器来实现,其可呈现以下属性:
●基于DPDK的转发完全在用户空间实现
●虚拟路由器应用作为多个逻辑核心运行
○逻辑(Lcore)是具有核心关联性的pthread
○Lcore以轮询模式运行并处理分组突发以获得最佳性能
●DPDK提供无锁环以用于Lcore之间的通信
●针对Intel架构进行高度优化
○有效使用CPU高速缓存
○巨大页面以减小TLB未命中
○NUMAaware
任一类型的虚拟路由器到控制平面的通用数据平面接口可通过以下面方式之一增强当前模型来完成:
(1)虚拟路由器代理+虚拟路由器/DPDK转发平面以及XMPP北向接口。通过使用虚拟路由器代理作为数据平面来保持当前模型不变,并且使控制平面实现XMPP(如轨迹控制节点所做的那样)。然而,并非所有控制平面都支持XMPP并且它可能不是优选方法。虚拟路由器代理对可能没有必要的传统openstack功能提供了大量支持,从而导致更大的占用空间。
(2)虚拟路由器代理+虚拟路由器/DPDK转发平面以及GRPC北向接口。保持当前的数据平面和转发平面,但实现常用的开源协议(诸如GRPC)作为与控制平面的接口。使用更广泛适用的协议(诸如GRPC)作为北向接口会带来更多机会。控制平面的采用可增加。尽管如此,虚拟路由器代理对可能没有必要的传统openstack功能提供了大量支持,从而导致更大的占用空间。
(3)虚拟路由器/DPDK转发平面+精益虚拟路由器代理以及GRPC北向接口。保持虚拟路由器/DPDK转发平面不变,但通过仅采用由转发平面严格要求的功能来减少虚拟路由器代理的占用空间。北向接口可以是XMPP或者优选是GRPC。可以两种方式减小虚拟路由器代理占用空间:
●使当前虚拟路由器代理模块化和精益
●实现将表示精益代理并且仅具有必要功能的新库在此方案中,如(2)所示,使用更广泛适用的协议(诸如GRPC)作为北向接口会带来更多机会,并且控制平面的采用可增加。此外,精益和模块化代理减小了总体占用空间并且提供了根据需要挑选和选择功能的灵活性。
(4)虚拟路由器/DPDK转发平面+北向接口(GRPC)。将虚拟路由器/DPDK转发平面直接暴露给控制平面。该方案消除了对单独虚拟路由器代理的需要,但它失去了当前硬件抽象,其中虚拟路由器被与控制平面屏蔽。此外,由虚拟路由器代理提供的智能必须由控制平面或虚拟路由器吸收,这使其更加复杂。
方案(2)和(3)的组合可促进通用数据平面。在基于虚拟路由器的数据平面可与基于cRPD的控制平面结合使用的情况下,所提出的架构将如图3A至3B和图4至6所示。可看出,在这些示例中存在虚拟路由器代理314、虚拟路由器/DPDK转发平面206A、以及作为通用数据平面接口的gRPC北向接口340。然后,通过将北向接口从虚拟路由器代理314解耦到cRPD324,虚拟路由器206A和虚拟路由器代理314的数据平面变得“通用”。在一些示例中,虚拟路由器206A和虚拟路由器代理314可在单个容器中运行和/或作为独立软件片段运行。使用gRPC减少了对任何特定控制平面的依赖。可提供对以下的支持:作为虚拟路由器代理314之上的抽象层的gRPC接口、与处理配置+路由的接口、用于为配置对象提供抽象的gRPC接口、用于与控制平面的配置北向接口的标准数据模型以及在南向接口上转换为代理可理解格式。
端口添加(Port Add)和端口关闭(Port Down)序列可主要经由cRPD或经由虚拟路由器代理来完成。端口添加和端口关闭的此类序列示例如下:
/>
VRF与inet.0或inet.3中的覆盖路由
在一个示例方面,系统支持VRF功能,其中覆盖路由和底层路由保持分离在不同VRF中。
对象格式和协议缓冲(WIP)
在gRPC中,客户端可调用服务器应用上的方法。尽管虚拟路由器代理314是XMPP模型中的客户端,但它是根据本公开的技术的服务器并且当它必须推送对象时调用客户端中的功能。
为路由和配置编程定义了单独服务。此外,还为Agent定义了单独服务以向cRPD通知端口添加/删除/关闭事件。
/>
虚拟机接口(例如,虚拟网络接口)
/>
路由/下一跳(NH)
/>
/>
/>
/>
本地VMI的IPv4路由10.10.10.1/32
/>
本地VMI的MPLS路由,标签=100
覆盖远程路由10.10.10.2/32,服务标签200,DIP 100.100.100.1
以下是用于接入控制列表(ACL)策略的示例消息结构。.ACL
/>
/>
客户端/服务器模型
服务器可通过两个完成队列来实现以便以异步模式工作—一个用于VMI订阅服务530并且另一个用于路由/配置服务532、534。可定义抽象类ServiceData,单独服务数据类型从该抽象类继承。服务数据对象的地址可用作添加到各种调用的完成队列中的标签。
/>
/>
图7是描绘根据本公开的示例方面的导致虚拟路由器中的路由编程的端口添加上的操作序列的概念图。操作序列是相对于服务器300的组件来描述的,但可由本公开中描述的任何服务器(例如,服务器12、350、400、600)的组件执行。图7中的操作序列可类似于上述CNI-代理(选项2)的操作。CNI 312为网荚保留了IP地址块。虚拟路由器代理314例如在thrift服务上监听端口添加和端口删除消息,其中“端口”对应于虚拟网络接口。CNI 312向虚拟路由器代理314发送端口添加消息(702)。端口添加消息包括端口的虚拟网络的标识符和CNI 312为网荚分配的IP地址。(CNI 312可单独配置网荚与虚拟网络接口的另一端)。虚拟路由器代理314在接口540中创建虚拟网络接口(这里称为虚拟机接口或VMI,其是虚拟网络接口的示例)(704)。虚拟路由器代理314利用默认VRF标识符和VMI添加消息来配置虚拟路由器206A中的虚拟网络接口(706)。虚拟路由器代理314通过VMI订阅消息来订阅cRPD324而不是SDN控制器,该VMI订阅消息包括在端口添加消息中接收的虚拟网络名称和IP地址(708)。cRPD 327将具有虚拟网络接口的虚拟网络的正确VRF标识符的VMI配置消息发送到虚拟路由器代理314(712),如果需要的话,任选地利用VRF添加消息将VRF添加到虚拟路由器代理314(710)。虚拟路由器代理314将具有正确VRF标识符的VMI更新消息发送到虚拟路由器206A以使虚拟路由器206A将虚拟网络接口附接到正确VRF(714)。cRPD 324分配服务标签并且使用路由添加消息来将路由和下一跳(例如,用于BGP IP-VPN的MPLS路由)添加到虚拟路由器代理314(716)。cRPD 324还将用于到达网荚的路由通告给其对等路由器(718),该对等路由器可包括其他cRPD、底层网络中的路由器或其他路由器。虚拟路由器代理314通过在来自cRPD 324的路由添加消息中接收的路由的转发信息来配置虚拟路由器206A(720)。上文限定了相对于图7描述的示例消息结构和消息的数据结构。
图11是示出根据本公开的技术的虚拟路由器代理的示例组件以及用于为网荚创建和通告新端口的操作和消息的示例序列的框图。示例序列在一些方面可与关于图7描述的序列类似。
图8是根据本公开中描述的技术的示例计算设备(例如,主机)的框图。图2的计算设备800可表示真实或虚拟服务器,并且可表示图1的服务器12或服务器350或400中的任一者的示例实例。在该示例中,计算设备800包括耦接计算设备800硬件环境的硬件组件的总线242。总线242耦接网络接口卡(NIC)230、存储盘246和一个或多个微处理器210(下文中称为“微处理器810”)。NIC 230可具有SR-IOV能力。在一些情况下,前侧总线可耦接微处理器810和存储器设备244。在一些示例中,总线242可耦接存储器设备244、微处理器810和NIC230。总线242可表示外围组件接口(PCI)express(PCIe)总线。在一些示例中,直接存储器存取(DMA)控制器可控制耦接到总线242的组件之间的DMA传输。在一些示例中,耦接到总线242的组件控制耦接到总线242的组件之间的DMA传输。
微处理器810可包括一个或多个处理器,每个处理器包括单独的执行单元以执行符合指令集架构的指令,该指令被存储到存储介质。执行单元可被实现为单独的集成电路(IC),或者可被组合在一个或多个多核处理器(或“众核”处理器)内,每个处理器各自使用单个IC(即,芯片多处理器)来实现。
盘246表示计算机可读存储介质,其包括以用于存储诸如处理器可读指令、数据结构、程序模块或其他数据的信息的任何方法或技术实现的易失性和/或非易失性、可移除和/或不可移除介质。计算机可读存储介质包括但不限于随机存取存储器(RAM)、只读存储器(ROM)、EEPROM、闪存存储器、CD-ROM、数字多功能光盘(DVD)或其他光存储装置、磁卡带、磁带、磁盘存储装置或其他磁存储设备、或可用于存储期望信息并且可由微处理器810访问的任何其他介质。
主存储器244包括一种或多种计算机可读存储介质,其可包括随机存取存储器(RAM),诸如各种形式的动态RAM(DRAM),例如,DDR2/DDR3 SDRAM或静态RAM(SRAM)、闪存存储器、或任何其他形式的固定或可移除存储介质,其可用于以指令或数据结构的形式承载或存储期望的程序代码和程序数据并且可由计算机访问。主存储器244提供由可寻址存储器位置组成的物理地址空间。
网络接口卡(NIC)230包括被配置为使用底层物理网络的链路来交换分组的一个或多个接口232。接口232可包括具有一个或多个网络端口的端口接口卡。NIC 230还可包括卡上存储器以例如存储分组数据。NIC 230和耦接到总线242的其他设备之间的直接存储器访问传输可从NIC存储器读取/向NIC存储器写入。
存储器244、NIC 230、存储盘246和微处理器810可为包括在内核空间中执行的操作系统内核380的软件堆栈提供操作环境。内核380可表示例如Linux、伯克利软件发行版(BSD)、另一个Unix变体内核、或可从微软公司获得的Windows服务器操作系统内核。在一些情况下,操作系统可执行管理程序和由管理程序管理的一个或多个虚拟机。示例管理程序包括用于Linux内核的基于内核的虚拟机(KVM)、Xen、可从VMware获得的ESXi、可从Microsoft获得的WindowsHyper-V以及其他开源和专有管理程序。术语管理程序可涵盖虚拟机管理器(VMM)。包括内核380的操作系统为用户空间245中的一个或多个过程提供执行环境。
内核380包括物理驱动器225以使用网络接口卡230。网络接口卡230还可实现SR-IOV以使得能够在一个或多个虚拟执行元件(诸如容器229A-229B或一个或多个虚拟机(图2中未示出))之间共享物理网络功能(I/O)。诸如虚拟功能的共享虚拟设备可提供专用资源,使得每个虚拟执行元件可访问NIC 230的专用资源,因此该NIC对于每个虚拟执行元件来说表现为专用NIC。虚拟功能可表示与物理驱动器225所使用的物理功能以及与其他虚拟功能共享物理资源的轻量级PCIe功能。对于具有SR-IOV能力的NIC 230,根据SR-IOV标准,NIC230可具有数千个可用虚拟功能,但对于I/O密集型应用,配置的虚拟功能的数量通常小得多。
计算设备800可耦接到物理网络交换布局,该物理网络交换布局包括覆盖网络,该覆盖网络将交换布局从物理交换机延伸到耦接到交换布局的物理服务器的软件或“虚拟”路由器,包括虚拟路由器206A。虚拟路由器可以是由物理服务器(例如,图1的服务器12)执行的过程或线程或其组件,其动态地创建和管理可用于虚拟网络端点之间的通信的一个或多个虚拟网络。在一个示例中,虚拟路由器使用覆盖网络来实现每个虚拟网络,该覆盖网络提供将端点的虚拟地址与端点正在其上执行的服务器的物理地址(例如,IP地址)解耦的能力。每个虚拟网络可使用其自身的寻址和安全方案并且可被视为与物理网络和其寻址方案正交。可使用各种技术以通过物理网络在虚拟网络内以及跨虚拟网络传输分组。如本文使用的术语“虚拟路由器”可涵盖Open vSwitch(OVS)、OVS桥、Linux桥、Docker桥、或位于主机设备上并且在一个或多个虚拟网络的虚拟网络端点之间执行交换、桥接或路由分组的其他设备/或软件,其中虚拟网络端点由一个或多个服务器12托管。在图2的示例计算设备800中,虚拟路由器206A作为基于DPDK的虚拟路由器在用户空间内执行,但虚拟路由器206A可在各种实现内在管理程序、主机操作系统、主机应用或虚拟机内执行。
虚拟路由器206A可替换并包含通常用于网荚202的Kubernetes部署的Linux桥/OVS模块的虚拟路由/桥接功能。虚拟路由器206A可执行虚拟网络的桥接(例如,E-VPN)和路由(例如,L3VPN、IP-VPN)。虚拟路由器206A可执行网络服务,诸如应用安全策略、NAT、多播、镜像和负载平衡。
虚拟路由器206A可作为内核模块或作为用户空间DPDK过程来执行(虚拟路由器206A在此被示为处于用户空间245中)。虚拟路由器代理314也可在用户空间中执行。在图2的示例计算设备800中,虚拟路由器206A作为基于DPDK的虚拟路由器在用户空间内执行,但虚拟路由器206A可在各种实现内在管理程序、主机操作系统、主机应用或虚拟机内执行。虚拟路由器代理314使用信道来连接到网络控制器24,该信道用于下载配置和转发信息。虚拟路由器代理314将该转发状态编程到由虚拟路由器206A表示的虚拟路由器数据(或“转发”)平面。虚拟路由器206A和虚拟路由器代理314可以是过程。
虚拟路由器206A可替换并包含通常用于网荚202的Kubernetes部署的Linux桥/OVS模块的虚拟路由/桥接功能。虚拟路由器206A可执行虚拟网络的桥接(例如,E-VPN)和路由(例如,L3VPN、IP-VPN)。虚拟路由器206A可执行网络服务,诸如应用安全策略、NAT、多播、镜像和负载平衡。
虚拟路由器206A可以是多线程的并且在一个或多个处理器核心上执行。虚拟路由器206A可包括多个队列。虚拟路由器206A可实现分组处理管线。取决于要应用于分组的操作,虚拟路由器代理314可以从最简单到最复杂的方式缝合管线。虚拟路由器206A可维持转发库的多个实例。虚拟路由器800可使用RCU(读取复制更新)锁来访问和更新表。
为了将分组发送到其他计算节点或交换机,虚拟路由器206A使用一个或多个物理接口232。一般而言,虚拟路由器206A与诸如VM或网荚202(在图2中)的工作负载交换覆盖分组。虚拟路由器206A具有多个虚拟网络接口(例如,vif)。这些接口可能包括内核接口vhost0,其用于与主机操作系统交换分组;具有虚拟路由器代理314p的接口kt0,以从网络控制器获取转发状态并发送异常分组。可存在与一个或多个物理网络接口232相对应的一个或多个虚拟网络接口。
虚拟路由器206A的其他虚拟网络接口用于与工作负载交换分组。在图2中示出了虚拟路由器206A的虚拟网络接口212、213。虚拟网络接口212、213可以是任何上述类型的虚拟接口。在一些情况下,虚拟网络接口212、213是分接接口。
在虚拟路由器206A(未示出)的基于内核的部署中,虚拟路由器206A作为内核模块安装在操作系统内。虚拟路由器206A向TCP/IP堆栈注册其自身以从其想要的任何期望的操作系统接口接收分组。接口可以是bond、物理、tap(对于VM)、veth(对于容器)等。该模式中的虚拟路由器206A依赖于操作系统以从不同接口发送和接收分组。例如,操作系统可暴露由vhost-net驱动器支持的tap接口以与VM进行通信。一旦虚拟路由器206A注册来自该tap接口的分组,TCP/IP堆栈就向其发送所有分组。虚拟路由器206A经由操作系统接口发送分组。此外,NIC队列(物理或虚拟)由操作系统处理。分组处理可以中断模式操作,这生成中断并且可能导致频繁的上下文切换。当存在较高分组速率时,频繁中断和上下文切换带来的开销可能会压垮操作系统并导致性能下降。
在虚拟路由器206A的基于DPDK的部署中(如图2所示),虚拟路由器206A被安装为链接到DPDK库的用户空间245应用。这可导致比基于内核的部署更快的性能,特别是在存在高分组速率的情况下。物理接口232由DPDK的轮询模式驱动器(PMD)使用,而不是由内核的基于中断的驱动器使用。物理接口232的寄存器可暴露到用户空间245中以便对于PMD可访问;以这种方式绑定的物理接口232不再由主机操作系统管理或对该主机操作系统可见,并且基于DPDK的虚拟路由器206A管理物理接口232。这包括分组轮询、分组处理和分组转发。换句话说,用户分组处理步骤由虚拟路由器206ADPDK数据平面执行。当分组速率高时,该“轮询模式”的性质使虚拟路由器206A DPDK数据平面分组处理/转发与中断模式相比更加高效。与内核模式虚拟路由器206A相比,在分组I/O期间存在相对较少的中断和上下文切换,并且在一些情况下可完全避免在分组I/O期间的中断和上下文切换。
一般而言,网荚202A-202B中的每一者可被分配一个或多个虚拟网络地址以供在相应虚拟网络内使用,其中虚拟网络中的每一者可与虚拟路由器206A提供的不同虚拟子网相关联。网荚202B可被分配其自己的虚拟第三层(L3)IP地址,例如用于发送和接收通信,但可能不知道网荚202B在其上执行的计算设备800的IP地址。因此,虚拟网络地址可能不同于底层物理计算机系统(例如,计算设备800)的逻辑地址。
计算设备800包括虚拟路由器代理314,其控制用于计算设备800的虚拟网络的覆盖并且协调计算设备800内的数据分组的路由。一般而言,虚拟路由器代理314与虚拟化基础设施的网络控制器24通信,该网络控制器生成命令以创建虚拟网络并配置网络虚拟化端点,诸如计算设备800,并且更特别地,虚拟路由器206A以及虚拟网络接口212。通过基于从网络控制器24接收到的信息来配置虚拟路由器206A,虚拟路由器代理314可支持配置网络隔离、基于策略的安全性、网关、源网络地址转换(SNAT)、负载均衡器和服务链接能力以用于编排。
在一个示例中,由虚拟网络域内的容器229A-229B生成或消耗的网络分组,例如第三层(L3)IP分组或第二层(L2)以太网分组可被封装在由物理网络传输的另一个分组(例如,另一个IP或以太网分组)。在虚拟网络中传输的分组在本文中可被称为“内部分组”,而物理网络分组在本文中可被称为“外部分组”或“隧道分组”。物理网络分组内的虚拟网络分组的封装和/或解封装可由虚拟路由器206A执行。此功能在此被称为隧道并且可用于创建一个或多个覆盖网络。除了IPinIP之外,可使用的其他示例隧道协议包括基于通用路由封装(GRE)的IP、VxLAN、基于GRE的多协议标签交换(MPLS)、基于用户数据报协议(UDP)的MPLS等。虚拟路由器206A/对发起/目的地为网荚202的任何容器的分组执行隧道封装/解封装,并且虚拟路由器206A经由总线242和/或NIC 230的桥与网荚202交换分组。
如上所述,网络控制器24可提供逻辑上集中的控制器以促进一个或多个虚拟网络的操作。网络控制器24可例如维持路由信息库,例如存储物理网络以及一个或多个覆盖网络的路由信息的一个或多个路由表。虚拟路由器206A为相应虚拟网络实现一个或多个虚拟路由和转发实例(VRF)222A-222B,其中虚拟路由器206A作为相应隧道端点进行操作。一般而言,每个VRF 222存储对应虚拟网络的转发信息,并且标识数据分组将被转发到何处以及分组是否将被封装在隧道协议中,诸如利用隧道报头,该隧道报头可包括针对虚拟网络协议堆栈的不同层的一个或多个报头。VRF 222中的每一个可包括存储虚拟网络的路由和转发信息的网络转发表。
NIC 230可接收隧道分组。虚拟路由器206A处理隧道分组以根据隧道封装报头确定内部分组的源端点和目的地端点的虚拟网络。虚拟路由器206A可剥离第二层报头和隧道封装报头以仅在内部转发内部分组。隧道封装报头可包括虚拟网络标识符(诸如VxLAN标签或MPLS标签),其指示虚拟网络(例如对应于VRF 222A的虚拟网络)。VRF 222A可包括内部分组的转发信息。例如,VRF 222A可将内部分组的目的地第三层地址映射到虚拟网络接口212。作为响应,VRF 222A经由虚拟网络接口212将内部分组转发到网荚202A。
容器229A还可发起内部分组作为源虚拟网络端点。例如,容器229A可生成目的地为由另一个计算设备(即,不计算设备800)执行的目的地虚拟网络端点或目的地为另一个容器的第三层内部分组。容器229A可经由附接到VRF 222A的虚拟网络接口212将第三层内部分组发送到虚拟路由器206A。
虚拟路由器206A接收内部分组和第二层报头并且确定内部分组的虚拟网络。虚拟路由器206A可使用任何上述虚拟网络接口实现技术(例如,macvlan、veth等)来确定虚拟网络。虚拟路由器206A使用与内部分组的虚拟网络相对应的VRF 222A来生成内部分组的外部报头,该外部报头包括针对覆盖隧道的外部IP报头和标识虚拟网络的隧道封装报头。虚拟路由器206A利用外部报头封装内部分组。虚拟路由器206A可利用新的第二层报头封装隧道分组,该报头具有与计算设备800外部的设备(例如,TOR交换机16或服务器12之一)相关联的目的地第二层地址。如果在计算设备800的外部,则虚拟路由器206A使用物理功能221将具有新的第二层报头的隧道分组输出到NIC 230。NIC 230在出站接口上输出分组。如果目的地是在计算设备800上执行的另一个虚拟网络端点,则虚拟路由器206A将分组路由到虚拟网络接口212、213中适当的一者。
在一些示例中,计算设备800的控制器(例如,图1的网络控制器24)在网荚202中的每一个中配置默认路由以使虚拟机224使用虚拟路由器206A作为出站分组的初始下一跳。在一些示例中,NIC 230被配置有一个或多个转发规则以使从虚拟机224接收的所有分组被切换到虚拟路由器206A。
网荚202A包括一个或多个应用容器229A。网荚202B包括cRPD 324的实例。容器平台804包括容器运行时208、编排代理310、服务代理211和CNI 312。
容器引擎208包括可由微处理器810执行的代码。容器运行时208可以是一个或多个计算机过程。容器引擎208以容器229A-229B的形式运行容器化应用。容器引擎208可表示Dockert、rkt或用于管理容器的其他容器引擎。一般而言,容器引擎208接收请求并管理诸如图像、容器、网络和卷的对象。图像是具有用于创建容器的指令的模板。容器是图像的可执行实例。基于来自控制器代理310的指令,容器引擎208可获得图像并且将它们实例化为网荚202A-202B中的可执行容器。
服务代理211包括可由微处理器810执行的代码。服务代理211可以是一个或多个计算机过程。服务代理211监测服务和端点对象的添加和移除,并且其维护计算设备800的网络配置以确保网荚和容器之间的通信,例如使用服务。服务代理211还可管理iptable以捕获到服务的虚拟IP地址和端口的业务并且将业务重定向到代理支持的网荚的代理端口。服务代理211可表示Kubernetes集群的从属节点的kube代理。在一些示例中,容器平台804不包括服务代理211,或者服务代理211被禁用以有利于CNI 312配置虚拟路由器206A和网荚202。
编排代理310包括可由微处理器810执行的代码。编排代理310可以是一个或多个计算机过程。编排代理310可表示Kubernetes集群的从属节点的kubelet。编排代理310是编排器(例如图1的编排器23)的代理,其接收容器的容器规范数据并确保容器由计算设备800执行。容器规范数据可以是从编排器23发送到编排代理310或者经由命令行接口、HTTP端点或HTTP服务器间接接收的清单文件的形式。容器规范数据可以是容器229的网荚202之一的容器规范(例如,网荚Spec—描述容器的YAML(又一种标记语言)或JSON对象)。基于容器规范数据,编排代理310指示容器引擎208获得并实例化容器229的容器图像以通过计算设备800来执行容器229。
编排代理310实例化或以其他方式调用CNI 312来为网荚202中的每一者配置一个或多个虚拟网络接口。例如,编排代理310接收网荚202A的容器规范数据并且指示容器引擎208基于网荚202A的容器规范数据来创建具有容器229A的网荚202A。编排代理310还调用CNI 312以为网荚202A配置与VRF 222A相对应的虚拟网络的虚拟网络接口。在该示例中,网荚202A是对应于VRF 222A的虚拟网络的虚拟网络端点。
CNI 312可获得用于配置网荚202的虚拟网络接口的接口配置数据。虚拟路由器代理314作为虚拟网络控制平面模块进行操作以用于使得网络控制器24能够配置虚拟路由器206A。与管理供应、调度和管理虚拟执行元件的编排控制平面(包括用于从属节点和主节点的容器平台804,例如,编排器23)不同,虚拟网络控制平面(包括用于从属节点的网络控制器24和虚拟路由器代理314)管理部分地由从属节点的虚拟路由器206A在数据平面中实现的虚拟网络的配置。虚拟路由器代理314向CNI 312传送虚拟网络接口的接口配置数据以使得编排控制平面元件(即,CNI 312)能够根据由网络控制器24确定的配置状态来配置虚拟网络接口,从而桥接编排控制平面和虚拟网络控制平面之间的间隙。此外,这可使得CNI312能够获得网荚的多个虚拟网络接口的接口配置数据并且配置多个虚拟网络接口,这可减小调用单独的CNI 312来配置每个虚拟网络接口所固有的通信和资源开销。
图9是作为虚拟化计算基础设施的集群的编排器主节点的实例进行操作的示例计算设备的框图。图9的计算设备300可表示一个或多个真实或虚拟服务器。这样,计算设备300在一些实例中可实现用于相应集群的一个或多个主节点。
调度器1322、API服务器1320、网络控制器管理器1326、网络控制器1324、网络控制器管理器1325和配置存储库1328虽然被示出和描述为由单个计算设备300执行,但可分布在建立计算系统或硬件/服务器集群的多个计算设备300之间。换句话说,多个计算设备300中的每一者可为调度器1322、API服务器1320、网络控制器管理器1326、网络控制器1324、网络控制器管理器1325或配置存储库1328中的任一者或多者的一个或多个实例提供硬件操作环境。网络控制器1324可表示图1的网络控制器24的示例实例。调度器1322、API服务器1320、控制器管理器1326和网络控制器管理器1325可实现编排器23的示例实例。网络控制器管理器1325可表示Kubernetes云控制器管理器或Kube管理器的示例实现。网络控制器1324可表示网络控制器24的示例实例。
在该示例中,计算设备300包括耦接计算设备300硬件环境的硬件组件的总线1342。总线1342耦接网络接口卡(NIC)1330、存储盘1346和一个或多个微处理器1310(下文中称为“微处理器1310”)。在一些情况下,前侧总线可耦接微处理器1310和存储器设备1344。在一些示例中,总线1342可耦接存储器设备1344、微处理器1310和NIC 1330。总线1342可表示外围组件接口(PCI)express(PCIe)总线。在一些示例中,直接存储器存取(DMA)控制器可控制耦接到总线242的组件之间的DMA传输。在一些示例中,耦接到总线1342的组件控制耦接到总线1342的组件之间的DMA传输。
微处理器1310可包括一个或多个处理器,每个处理器包括单独的执行单元以执行符合指令集架构的指令,该指令被存储到存储介质。执行单元可被实现为单独的集成电路(IC),或者可被组合在一个或多个多核处理器(或“众核”处理器)内,每个处理器各自使用单个IC(即,芯片多处理器)来实现。
盘1346表示计算机可读存储介质,其包括以用于存储诸如处理器可读指令、数据结构、程序模块或其他数据的信息的任何方法或技术实现的易失性和/或非易失性、可移除和/或不可移除介质。计算机可读存储介质包括但不限于随机存取存储器(RAM)、只读存储器(ROM)、EEPROM、闪存存储器、CD-ROM、数字多功能光盘(DVD)或其他光存储装置、磁卡带、磁带、磁盘存储装置或其他磁存储设备、或可用于存储期望信息并且可由微处理器1310访问的任何其他介质。
主存储器1344包括一种或多种计算机可读存储介质,其可包括随机存取存储器(RAM),诸如各种形式的动态RAM(DRAM),例如,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、可从VMware获得的ESXi、可从Microsoft获得的WindowsHyper-V以及其他开源和专有管理程序。术语管理程序可涵盖虚拟机管理器(VMM)。包括内核1314的操作系统为用户空间1345中的一个或多个过程提供执行环境。内核1314包括物理驱动器1325以使用网络接口卡230。
计算设备300可耦接到物理网络交换布局,该物理网络交换布局包括覆盖网络,该覆盖网络将交换布局从物理交换机延伸到耦接到交换布局的物理服务器的软件或“虚拟”路由器,诸如图2的虚拟路由器220。计算设备300可使用一个或多个专用虚拟网络来配置集群的从属节点。
API服务器1320、调度器1322、控制器管理器1326和配置存储库可实现集群的主节点并且可另选地被称为“主组件”。集群可以是Kubernetes集群并且主节点是Kubernetes主节点,在这种情况下,主组件是Kubernetes主组件。
API服务器1320包括可由微处理器1310执行的代码。API服务器1320可以是一个或多个计算机过程。例如,API服务器1320验证并配置对象的数据,诸如虚拟执行元件(例如,容器的网荚)、服务和复制控制器。服务可以是限定网荚的逻辑集以及用于访问网荚的策略的抽象。实现服务的网荚的集合是基于服务定义来选择的。服务可部分地被实现为负载平衡器或者以其他方式包括负载平衡器。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监测新创建或请求的虚拟执行元件(例如,容器的网荚)并且选择虚拟执行元件将在其上运行的从属节点。调度器1322可基于资源要求、硬件约束、软件约束、策略约束、局部性等来选择从属节点。调度器1322可表示Kubernetes调度器。
一般而言,API服务器1320可调用调度器1322以调度虚拟执行元件,该虚拟执行元件可选择从属节点并将选定从属节点的标识符返回到API服务器1320,该API服务器可将该标识符写入与虚拟执行元件相关联的配置存储库1328。API服务器1320可调用选定从属节点的编排代理310,这可使选定从属节点的容器引擎208从存储服务器获得虚拟执行元件并且在从属节点上创建虚拟执行元件。用于选定从属节点的编排代理310可将虚拟执行元件的状态更新到API服务器1320,该API服务器将该新状态保存到配置存储库1328。以这种方式,计算设备300在计算基础设施8中实例化新虚拟执行元件。
控制器管理器1326包括可由微处理器1310执行的代码。控制器管理器1326可以是一个或多个计算机过程。控制器管理器1326可嵌入核心控制循环,通过从API服务器1320获取通知来监测集群的共享状态。控制器管理器1326可尝试将集群的状态移向期望状态。由控制器管理器1326管理的示例控制器(未示出)可包括复制控制器、端点控制器、名称空间控制器和服务帐户控制器。控制器管理器1326可执行生命周期功能,诸如名称空间创建和生命周期、事件垃圾收集、终止网荚垃圾收集、级联删除垃圾收集、节点垃圾收集等。控制器管理器1326可表示用于Kubernetes集群的Kubernetes控制器管理器。
网络控制器1324包括可由微处理器1310执行的代码。网络控制器1324可包括一个或多个计算机过程。网络控制器1324可表示图1的网络控制器24的示例实例。网络控制器1324可以是逻辑上集中但物理上分布式的软件定义网络(SDN)控制器,其负责提供虚拟化网络的管理、控制和分析功能。特别地,网络控制器1324可以是计算基础设施8的逻辑上集中的控制平面和管理平面并且为一个或多个从属节点编排虚拟路由器。
网络控制器1324可为在网络基础设施上操作的计算架构提供云联网。云网络可包括企业或服务提供方的私有云、基础设施即服务(IaaS)以及云服务提供方(CSP)的虚拟私有云(VPC)。私有云、VPC和IaaS用例可涉及多租户虚拟化数据中心,诸如相对于图1所述的那种。在此类情况下,数据中心中的多个租户共享相同的物理资源(物理服务器、物理存储、物理网络)。每个租户都被分配有其自己的逻辑资源(虚拟机、容器、或其他形式的虚拟执行元件;虚拟存储;虚拟网络)。这些逻辑资源是相互隔离的,除非安全策略特别允许。数据中心中的虚拟网络还可互连到物理IP VPN或L2 VPN。
网络控制器1324可向网络提供网络功能虚拟化(NFV),诸如商业边缘网络、宽带订户管理边缘网络和移动边缘网络。NFV涉及在虚拟机、容器或其他虚拟执行元件中而不是物理硬件设备上的网络功能的编排和管理,诸如防火墙、入侵检测或预防系统(IDS/IPS)、深度分组检测(DPI)、高速缓存、广域网(WAN)优化等。该市场中的网络服务的虚拟化的主要驱动力是上市时间和成本优化。
网络控制器1324对网络基础设施元件进行编程以创建虚拟网络并且可为虚拟网络的虚拟网络接口创建接口配置。
有关示例网络控制器的附加信息可在通过引用并入上文的国际申请号PCT/US2013/044378以及美国专利申请14/226,509中找到。
网络控制器管理器1325包括可由微处理器1310执行的代码。网络控制器管理器1325可以是一个或多个计算机过程。网络控制器管理器1325作为面向编排的元件(例如,调度器1322、API服务器1320、控制器管理器1326和配置存储库1328)和网络控制器1324之间的接口进行操作。一般而言,网络控制器管理器1325监测集群的新对象(例如,网荚和服务)。网络控制器管理器1325可隔离虚拟网络中的网荚并将网荚与服务连接。
网络控制器管理器1325可被执行为集群的主节点的容器。在一些情况下,使用网络控制器管理器1325使得能够禁用从属节点的服务代理(例如,Kubernetes kube-代理),使得所有的网荚连接性使用虚拟路由器来实现,如本文所述。
网络控制器管理器1325可使用编排平台的控制器框架来监听(或以其他方式监测)API中定义的对象的变化,并向这些对象中的一些添加注释。注释可以是指定对象属性的标签或其他标识符(例如,“虚拟网络绿色”)。网络控制器管理器1325可使用到网络控制器1324的接口来为应用创建联网解决方案以定义诸如虚拟网络、虚拟网络接口和访问控制策略的网络对象。网络控制器1324可通过例如在虚拟路由器中配置一个或多个虚拟网络和虚拟网络接口而在计算基础设施中实现联网解决方案。
此应用的以下示例部署配置由网荚和网荚的虚拟网络信息组成:
该元数据信息被复制到由控制器管理器1326创建的每个网荚副本。当网络控制器管理器1325被通知这些网荚时,网络控制器管理器1325可创建如注释中列出的虚拟网络(在上面的示例中为“红色网络”、“蓝色网络”和“默认/扩展网络”))并且通过来自虚拟网络的集群范围地址块(例如10.0/16)的唯一专用虚拟网络地址为每个虚拟网络创建虚拟网络接口每网荚副本(例如,网荚202A)。
下面描述根据本公开的附加技术。轨迹(Contrail)是示例网络控制器架构。轨迹CNI可能是为轨迹开发的CNI。轨迹控制器可以是本公开中描述的SDN控制器的示例,诸如SDN控制器50。
下面是根据本公开的技术的服务器的控制平面和数据平面操作的附加细节。例如,这些细节可在图6的服务器600中实现。
作为vCSR的用例的一部分,vCSR 20可支持底层中的IPv6以及虚拟路由器206上的基于IPv6隧道的SR-MPLS。cRPD 324控制平面业务,例如:OSPF、ISIS等可使用由虚拟路由器206提供的IPv6底层支持来路由。来自用户网荚的覆盖业务可由虚拟路由器206通过SR-MPLSoIPv6或其他隧道来路由。可使用L3VPN服务标签(由cRPD 24编程)来标识覆盖业务。SR-MPLS隧道可使用由cRPD 24编程的“标签堆栈”来表示。
在图6的服务器600中,用于网荚422到虚拟路由器206A的虚拟网络接口可以是用于在虚拟路由器206A中配置的单独VRF的虚拟主机接口。虚拟路由器代理314和虚拟路由器206A可被配置有用于彼此通信的多个接口:pkt0接口和Unix域套接字(例如,Sandesh)。vHost0 382A在本公开的别处进行了描述。在某些情况下,经由IPv6底层的cRPD 324控制平面业务路径可能如下:
●虚拟路由器206A的Vhost0接口382A将托管由cRPD 324使用的IPv6地址以发送和接收用于例如BGP、IS-IS、OSPF或其他路由和控制协议的控制平面业务。
●在cRPD 324可发送实际单播控制平面分组之前,cRPD 324可尝试经由IPv6邻居征求请求来解析下一跳MAC地址。
●虚拟路由器206A将通过附接到其的物理/布局接口(例如,到IF 322之一)透明地发送这些IPv6 ND请求。类似地,在接收到对恳求请求的响应时,虚拟路由器206A可将响应分组发送到cRPD 324以及虚拟路由器代理314。
●一旦cRPD 324解析了下一跳链路层地址,实际的单播控制平面分组就可流动。
●实际的单播控制平面分组可由虚拟路由器206A路由到物理/布局接口,反之亦然。路由将基于由cRPD 324和虚拟路由器代理314编程的路由进行。
●由cRPD 324通过vhost0接口382A发送的控制平面多播分组可由虚拟路由器206A通过物理接口转发。类似地,可使用vhost0接口206A将来自物理接口的任何多播分组发送到cRPD 324。
覆盖数据路径业务(SR处理)是由在服务器600(计算节点)中创建的用户网荚422发送和接收的业务。这可以是IPv4或IPv6业务。
利用PHP在vCSR 20处进行入口SR-MPLS处理:在传输方向上,对于由网荚422发送的业务,虚拟路由器206A可执行入口SR-MPLS处理。图12示出了服务器1200、1220的示例配置以及将分组从服务器1200上的网荚422A转发到服务器1220上的网荚422M。云原生路由器1202包括用于控制平面的cRPD 324和针对数据平面的虚拟路由器206A的实例。
接口1204A具有IP地址为10.1.1.1和标签L1,而接口1204B具有IP地址为20.1.1.1和标签L2。容器422M、422N具有类似的此类接口,并且CNR未在服务器1220上示出。
在图12的依赖于分段路由的该示例中:
●cRPD 324和路由器1210以及中间的具有SR能力的路由器1206、1208被配置有具有SR能力的ISIS/OSPF以根据标签交换SR分段标识符(SID)。这导致cRPD 324和路由器1210知道网络中的SID以及这些SID对应于什么。
●cRPD 324和路由器1210还配置有具有inet和inet6 VPN的BGP,其用于交换针对网荚(“虚拟”)网络的覆盖L3 VPN路由。因此,覆盖路由的服务标签在cRPD 324和路由器1210之间交换。
●cRPD 324现在经由虚拟路由器代理(图12中未示出)将覆盖路由、服务标签和底层SR-MPLS下一跳信息编程到虚拟路由器206A。选择SR路径的机制由cRPD 324和任选的SDN控制器/路径计算引擎负责。
●在虚拟路由器206A中,覆盖路由被编程在集群VRF中并且与服务标签和SR-MPLS下一跳相关联。
●虚拟路由器206A SR-MPLS下一跳由要推送的SR标签列表以及L3(IPv6)、L2(以太网)报头信息和传出接口组成,所有这些都可用于封装分组并将分组作为分组1230发送出去。
●如图12所示,一旦从容器422A接收到分组,则在VRF红色中发生路由查找。这导致检索将用于目的地(此处为网荚422M)的服务标签以及用于将分组发送出去的SR-MPLS下一跳。随后,虚拟路由器使用SR-MPLS下一跳来封装分组并将其发送出去。
●然后,分组到达后续支持SR的路由器,其中SID标签被弹出并用于将分组转发到路径中的下一个路由器。
●最后,当分组到达1210时,NULL标签和服务标签被弹出,这导致将实际覆盖分组转发到O-CU目的地网荚。
没有倒数第二跳弹出(PHP)的处理与上面描述的类似,不同之处在于,所有SR节点还将接收它们在堆栈SID的顶部中通告的SID。然后,其弹出堆栈SID的顶部并且查看下一个SID以进一步转发分组。最终的SR端点将弹出其SID和服务标签并且使用服务标签来转发覆盖分组。
通过PHP在vCSR处进行出口SR处理:在接收方向上,虚拟路由器206A将对通过网荚的布局接口传入的业务进行出口SR处理。图13示出了服务器1200、1220的示例配置以及将分组从网荚422M转发到网荚422A。
●虚拟路由器代理314(图13中未示出)将为vhost0 IPv6地址安装L3接收NH。在读取将包含vhost0 IP地址的代理.conf文件后,这将在虚拟路由器代理314初始化时完成。
●路由过程将在cRPD 324和路由器1210两者中发生,如入口处理的前两个步骤中给出的。
●接收NH导致了虚拟路由器206A能够接收目的地为vhost0 IP地址的传入业务并且对其进行进一步处理。
●对于目的地为vhost0 IP地址的传入业务,虚拟路由器206A将检查分组是否是SR-MPLS分组并且如果是,则它将弹出外部NULL/vCSRS ID(在没有PHP的情况下)标签。
●此外,虚拟路由器206A将弹出分组中的服务标签。服务标签将指向网荚VMI下一跳。
●在进行必要的L2重写后,虚拟路由器206A将然后使用网荚VMI的下一跳将分组转发到网荚。
还将支持针对外部SR标签的隐式NULL。在这种情况下,分组中将没有SR标签并且处理将直接在内部服务标签上发生。
图14是示出根据本公开的技术的用于对虚拟路由器转发信息进行编程的示例操作1400的概念图。
图15是示出根据本公开的技术的用于在具有云原生路由器的服务器中配置和通告虚拟网络接口的示例操作1500的概念图。操作15在一些方面可与关于图7描述的序列类似。
如相对于图3A至3B所解释的,DU 22容器可从Port0接收5G无线电业务,其使用单根I/O虚拟化(SR-IOV)来创建多个虚拟功能(VF)或物理功能的实例(端口),其中每个VF终止于其自身的网荚(DU 22中的一个)。这些VF对于Linux内核380是可见的,然而,它们不是在其上运行的路由协议。它们的唯一目的是将无线电业务拖入DU 22。DU 22处理无线电业务并希望通过隧道(SR-MPLS)将该处理后的业务发送到在数据中心中运行的CU 5G功能,如相对于图1所描述的。
为了提供隧道上的可达性,cRPD 324可被配置有必需的协议(IGP、BGP等)。DPDK虚拟路由器206A将管理物理端口1——通过物理端口1发送和接收路由业务。
cRPD 324可经由域控制器通过Netconf配置有必需的协议。cRPD 324将为各种协议建立邻接;使用其路由协议来学习并通告路由信息(包括应用容器的可达性)。cRPD 324需要将该学习到的路由信息编程到虚拟路由器代理314。虚拟路由器206A将提供双向gRPC通道340以用于与cRPD 324的来回通信。数据对象(路由、VRF、接口等)可在协议缓冲区中建模。
控制业务将来自与端口0不同的物理端口(例如,端口1)。然而,虚拟路由器206A将检测到这是控制业务(非隧道业务)并通过vhost0接口382A转发它。从cRPD 324的角度来看,所有业务似乎都来自vhost0接口382A。因此,所有cRPD路由都将引用vhost0接口382A。cRPD 324将把这些路由安装到虚拟路由器代理314和内核380(在一些情况下,这可涉及使用RIB/实例策略来选择性地将inet.0中的底层路由安装到内核)。虚拟路由器代理314可自动将指向vhost0的路由转换到端口1,如图14所示。cRPD 324将安装到内核380的路由是因为cRPD 324可能需要可达性来建立附加协议邻接/会话,例如通过IGP提供的可达性的BGP多跳会话。由cRPD 324通过vhost0接口382A发送到虚拟路由器206A的控制业务必须从端口1发送出去,而无需任何其他进一步的操作。
cRPD 324可通过以下方式之一与虚拟路由器代理314通信:
1.cRPD 324将继续发出netlink消息。外部(到cRPD 324)转换器将把这些转换为相应的gRPC消息。引入此转换器可能会带来一些附加延迟。该转换器可以是就地无状态实体。
2.cRPD 324通过内核路由表多信道或某个版本的FDM来直接开始使用这些gRPCAPI。在一些情况下,cRPD 324可通过现有通道的顶部上的另一个内核路由表直接开始使用这些gRPC API以对Linux内核以及用于对SONiC进行编程的内核进行编程。
如图15所描绘,基于cRPD的CNI 312将在收到Kubernetes/编排代理310的通知后为应用容器中的每一个创建veth对。CNI 312负责向这些接口分配IP地址。veth对的一端将终止于应用容器的接口。至于另一端,CNI 312将请求虚拟路由器206A开始监测veth接口的这一端。这有助于DPDK转发从物理端口前往应用容器的所有隧道业务而无需涉及内核380。最后,CNI 312将通知网荚开始使用DPDK/内存映射接口。
然而,由于虚拟路由器206A现在管理这些veth接口的一端,因此这些接口从内核280中不可见。因此,这些接口对于cRPD 324不可见,并且因此cRPD 324不能向外界宣告可达性信息。为了解决这个问题,使cRPD 324可见veth等效接口。这将不是cRPD 324可通过其运行路由协议的接口(因为其需要使用内核设施作为套接字、TCP/IP堆栈等)。该接口用于通知cRPD 324它需要通告的可达性。
在一些情况下,虚拟路由器206A可直接向cRPD 324通知该接口。这可能是更可取的,因为它在某些方面类似于在cRPD 324中处理当前VRF的方式。此外,如果该接口发生故障,虚拟路由器206A可通知cRPD 324。如果cRPD启动,虚拟路由器206A可让cRPD知道它再次监测的所有接口。
通过这些接口,cRPD 324可通告MPLS到达应用容器的可达性。cRPD 324可通告vrf-table-label或每下一跳标签(其中下一跳表示veth等效物)或每前缀标签。当该MPLS路由可被安装到虚拟路由器206A时,虚拟路由器代理314将具有将veth等效物转换为实际veth接口的能力。
下面是根据本公开的一个或多个方面的各个组件之间的操作的进一步示例序列:
I.用于创建初始连接性的各个组件之间的交互
1.cRPD通过netlink从内核中了解vhost0。
2.域控制器经由Netconf在cRPD上配置(IGP和BGP)协议配置。备选地,操作员可使用cRPD上的CLI来手动执行此操作。
3.cRPD建立IGP邻接并且学习网络可达性和分段路由信息。
4.cRPD通过现有的netlink通道将此可达性信息编程到主机内核。
5.cRPD通过IGP学习的连接性来建立BGP会话。
6.BGP通过此BGP会话来学习l3vpn路由。
7.cRPD从虚拟路由器了解工作负载接口。cRPD创建与该接口对应的子网(例如/30)和接口路由(/32)。
8.CNI在cRPD上的特定vrf下配置工作负载接口。
9.cRPD将vrf接口映射发送到虚拟路由器。
10.cRPD将步骤6中接收的l3vpn路由导入到相应的VRF并且通过步骤3中的SR隧道解析它们。
11.cRPD将这些隧道路由(在vrf.inet(6).0表中)安装到虚拟路由器。(虚拟路由器需要进行vhost0到物理端口0的转换)。
12.此外,cRPD为步骤7中的VRF路由通告l3vpn路由。
13.cRPD安装具有pop标签以及转发到工作负载语义的mpls.0路由。
II.当工作负载接口出现故障时,各个组件之间的交互。
1.虚拟路由器通知cRPD接口删除。
2.cRPD删除子网和接口路由。
3.cRPD向工作负载发送可达性撤销。
4.cRPD从虚拟路由器删除具有pop和转发到工作负载语义的mpls.0隧道路由。
III.VRF删除时的各个组件之间的相互作用。
1.cRPD在内部删除在步骤6(交互I.)中从相应VRF接收到的l3vpn路由。
2.cRPD发送这些路由的删除(在vrf.inet(6).0表中),其中隧道下一跳到虚拟路由器。
3.此外,cRPD从步骤8(交互I.)中撤回VRF路由的l3vpn路由。
4.cRPD将具有pop标签和转发到工作负载语义的mpls.0路由的删除发送到虚拟路由器。
在本公开的一方面,为了提供网络连接性的高可用性,当将DPDK接口添加到在计算节点上实例化的应用网荚时,CNI 312还可将第二备份接口添加到应用网荚中。备份接口可被配置在计算节点内的与其上配置有活动接口的活动数据平面不同的备份数据平面上。例如,活动数据平面可以是基于DPDK的虚拟路由器,而备份数据平面可以是基于内核的虚拟路由器,类似于服务器350,但除了DPDK虚拟路由器206A之外还具有基于内核的虚拟路由器。
DPDK转发平面的高可用性
针对使用不同转发平面的网荚使用备份接口
DPDK支持构建可绕过内核以进行分组I/O的应用。应用可直接从NIC发送/接收分组并且可通过使用轮询来实现高性能。绕过内核以进行分组I/O会带来更好的性能(由于减少了上下文交换机的数量、分组内容被复制以及轮询模式在内核中不可行/不理想)。
DPDK虚拟路由器206A将拥有/接管系统上的一个或多个(物理)网络端口。内核280将无法像虚拟路由器206A那样利用这些端口进行正常网络I/O。
在Kubernetes(K8s)集群中,DPDK应用在网荚内运行。K8s负责这些网荚的编排(生命周期管理)。由于网荚中的这些应用需要网络连接性,因此K8s使用称为CNI的组件来设置网络接口、IP地址分配和路由。
在DPDK网荚启动后(由CNI添加的接口),可能会出现DPDK数据路径因某种原因而不可用的情况(Datapath已经崩溃、正在重启或正在进行升级/维护)。需要高网络可用性的应用,期望应用网荚具有回退或备选业务转发方法。
为了提供网络连接性的高可用性,在将DPDK接口添加到网荚时,CNI 312还将会向每个应用网荚添加附加(备份)接口,但经由与当前无法运行的数据平面不同的数据平面。
在该窗口期间,应用(或作为应用过程的一部分运行的增强型DPDK库)将检测到主(DPDK)接口已关闭并切换到使用内核(备份)接口。
当DPDK虚拟路由器206A由于软件问题或正在进行维护而无法工作时,DPDK虚拟路由器206A物理端口可被释放回内核380。这将允许内核380开始使用这些端口来转发业务,直到DPDK虚拟路由器206A返回并声明这些端口。
为了能够实现这一点,CNI 312和/或路由堆栈将相同路由编程到DPDK虚拟路由器206A和内核380转发表中,尽管通过不同的下一跳接口。路由堆栈可检测DPDK虚拟路由器206A停止服务(在路由堆栈和DPDK虚拟路由器206A之间使用TCP连接)并且更新下一跳信息并相应地调出面向核心的(物理)接口状态。
类似地,当DPDK虚拟路由器206A恢复时,路由堆栈可检测可用性并恢复路由和接口状态,使得应用网荚业务开始经由DPDK虚拟路由器206A。
通过确保先前由虚拟路由器206A管理的面向核心的接口被分配相同的接口名称和IP地址,这将导致对控制平面路由协议状态(诸如BGP)的最小破坏。
在本公开的一方面,软件组件集合提供解决云原生5G网络环境特有的网络需求的CNI功能。软件组件包括容器化路由协议守护程序(cRPD)以支持网络服务网格(NSM)架构。软件组件集合支持NSM架构并且可提供附加功能,诸如混合联网(物理和虚拟基础设施之间)、从计算节点集群外部直接访问网荚(例如通过BGP等协议通告)、使用诸如MPLS、SRv6、IP-IP/VxLAN/GRE、IPsec等的各种技术来动态建立隧道。
在此方面的用例中,5G O-RAN网络可使用云原生技术来部署并遵循5G拆分,其中DU(分布式单元)和CSR(蜂窝站点路由器)被虚拟化并在计算节点上运行。软件组件集合可作为蜂窝站点路由器运行以便为5G网络的中传提供L3可达性。
软件组件使用cRPD以便不仅在集群内部而且在集群外部分配网荚的第三层(L3)网络可达性信息。cRPD还对每个计算节点上的数据平面进行编程。为了更好的网络分组I/O性能,DU应用可在应用网荚中运行以绕过内核联网堆栈和抽象,并且由此使用例如零复制机制以直接从物理NIC发送/接收分组。数据平面开发套件(DPDK)就是一个此类框架,并且基于DPDK的虚拟路由器可用作用户空间数据平面,其利用DPDK来实现此目的的高转发性能。
软件组件可包括基于DPDK的虚拟路由器以支持DPDK应用。CNI插件管理应用的DPDK配置并且对虚拟路由器进行编程。这可包括设置vhost控制通道并且分配IP(例如,IPv4和IPv6两者)和MAC地址、通告网荚IP地址,以及在认为网荚已关闭或删除时检测和撤回路由。
cRPD的大多数现有用例提供仅控制平面的路由功能诸如BGP路由反射器,或者驱动转发平面:白盒平台上的基于内核或基于ASIC的转发平面。容器和云计算的兴起导致需要容器编排平台来管理容器的生命周期。Kubernetes(K8s)是用于在集群计算环境中运行容器化应用的编排平台。它提供容器化应用的自动部署、扩展、联网和管理。K8s网荚由表示应用实例的一个或多个容器组成并且是K8s可处理的最小单元。网荚中的所有容器共享相同的网络名称空间。容器联网接口(CNI)为Kubernetes中的应用网荚提供网络。它负责设置网荚接口、k8s集群中网荚之间的地址分配和网络以及不同工作负载之间的网络隔离。
CNI 312可具有CNI功能以及对于支持网络服务网格(NSM)架构有用的能力。
虽然存在多种主要迎合数据中心用例的CNI解决方案,但本文描述的技术可通过与cRPD 324交互以提供NSM功能来解决云原生5G环境特有的网络需求。支持NSM架构的CNI提供了附加功能,诸如混合联网(物理和虚拟基础设施之间)、从集群外部直接访问网荚,例如:通过诸如BGP的协议进行通告、使用诸如MPLS、SRv6、IP-IP/VxLAN/GRE、IPsec等的各种技术来动态设置隧道。
5G O-RAN网络可使用云原生技术来部署并遵循5G 7.2拆分,其中DU(分布式单元)和CSR(蜂窝站点路由器)被虚拟化并在服务器上运行。CNI 312充当蜂窝站点路由器以便为中传提供L3可达性。
cRPD 324不仅在Kubernetes集群内(在Kubernetes部署中)分配网荚的第三层网络可达性信息,而且还在集群外分配。cRPD 324还负责对每个计算节点/服务器上的转发平面进行编程。
为了更好的网络分组I/O性能,DU应用在应用网荚中运行以绕过内核联网堆栈和抽象,并且使用(零复制)机制以直接从物理NIC发送/接收分组。数据平面开发套件(DPDK)是一个此类框架。
DPDK虚拟路由器206A是利用DPDK以实现高转发性能的用户空间数据平面。虚拟路由器206A支持DPDK应用。CNI 312将负责为应用设置DPDK配置并且对虚拟路由器206A进行编程。这包括设置vhost控制通道和分配IP(IPv4和IPv6)和MAC地址、通告网荚IP地址以及在认为网荚已关闭或移除时检测并撤回路由。
本公开中描述的方面提供的其他特征包括:
●使用诸如BGP和IS-IS等L3路由协议通告网荚的网络可达性
●使用BGP来通告集群内部和集群外部的可达性
●网络名称空间(使用L3VPN和EVPN Type-5来支持)
●针对安全和QoS的ACL和网络策略
●针对隧道的支持:MPLS、SR-MPLS、SRv6、SR-MPLSoIPv6、VxLAN、IPIP、GRE
●使用BGP来发信号通知动态隧道
●针对业务加密的IPsec隧道
●用于提供安全、隔离的网络策略
●与DPDK虚拟路由器206A集成以实现更高的转发性能、封装、分组过滤和QoS
●可使用YAML规范文件来部署在K8s中的容器的集合的递送。
组成CNI 312和云原生路由器的组件集合可一起被认为是Kubernetes CNI,在本文中被称为Platter CNI。
为了满足如相对于图1描述的5G使用案例的目标,CNI 312和云原生路由器提供以下功能:
●网络名称空间:应用网荚应当可经由非默认网络名称空间或使用L3VPN实现的路由实例来进行访问。
●IPv6底层:根据用例的需要支持IPv6底层。IGP协议应当能够交换IPv6路由。应当使用IPv6地址来设置BGP协议会话。
●IPv6覆盖:通过向网荚分配IPv6地址并通过BGP通告它们来支持IPv6覆盖。
●BGP:Platter在k8s集群中的每个节点上运行并且使用BGP向网络通告网荚可达性。通过BGP通告的路由可承载SRv6标签堆栈或其他隧道封装属性。
●IGP:每个节点将参与IGP底层以了解其他BGP对等方和路由反射器的可达性。IS-IS可用于向网络通告主机/节点地址。
●SRv6:网荚业务可通过SRv6隧道承载。IS-IS用于学习分段路由SID信息。
●虚拟路由器-dpdk:为了更好的分组I/O性能,支持虚拟路由器-dpdk作为数据平面。这包括分配IP和MAC地址、为应用生成合适的DPDK配置、虚拟路由器编程以及通告路由。
K8s集群中的部署是使用YAML文件来执行的,该文件包含有关作为CNI的所有容器的各种详细信息:托管图像的存储库、初始化顺序、环境变量、配置和许可证密钥信息。通常,必须自定义YAML文件以适应K8s部署。下面提供了platter CNI的示例YAML配置
/>
/>
/>
/>
/>
/>
/>
/>
DPDK应用配置
在使用内核联网功能的情况下,CNI 312、cRPD 324和虚拟路由器206A设置网络接口、分配IP地址并设置路由,不存在与作为应用网荚的一部分的应用的直接交互。
如虚拟路由器206A的此类用户空间数据平面使用非标准机制为应用网荚提供网络功能。这需要协调CNI 312、cRPD 324和虚拟路由器206A组件和网荚之间的配置细节。
当应用使用DPDK时,可在网荚中运行的应用和虚拟路由器206A之间使用Unix域套接字(UDS)(称为vhost-user适配器)作为控制通道,其用于协商数据信道(网荚中的virtio接口和虚拟路由器206A上的网荚和vhost接口)以传输分组。
在主机上,生成配置文件,该配置文件应在应用可访问/已知的合适位置处被卷安装到应用网荚中。例如:
/var/run/cni/platter/<pod-id>/dpdk-config-<pod-interface>.json下面提供了示例dpdk-config.json配置文件:
应用网荚卷将被安装并创建配置文件,如由YAML文件的configmap部分中的以下参数指定:
dpdkConfigBaseDir:“/var/run/cni/platter”#映射到网荚中的主机上的路径
dpdkConfigFileName:“dpdk-conFIGjson”
DPDK应用可知道配置文件的位置和名称。网荚中的应用当能够访问网荚-id作为环境变量。系统将设置路径的权限,使得只有当网荚-id已知时才能访问该目录的内容。
网荚YAML配置
当本文描述的组件用作CNI时,为了利用诸如DPDK和VRF支持的高级功能,应用网荚YAML配置应包括诸如环境变量和注释的其他详细信息。
网荚UID
DPDK应用配置可被存储在已安装的卷和路径中。出于安全原因,路径将插入网荚UID并且DPDK应用应当知道UID。
示例路径如下所示:
/var/run/cni/platter/<pod-uid>/dpdk-config-<pod-ifname>.json
网荚YAML应将网荚UID导出作为DPDK应用可能需要的KUBERNETES_网荚_UID。
注释
注释可用于设置Platter所需的以下任选配置详细信息:
●VRF名称:用于将接口添加到路由实例
●VRF目标:用于通过BGP发布实例路由
配置示例
具有环境变量和注释的示例应用YAML配置如下所示:
节点配置
Platter的初始版本将使用静态限定的网荚网络配置,其使用配置映射文件来加载。此配置映射在Platter CNI安装期间被读取并且作为文件存储在每个节点上。该配置文件保存每个应用的每个接口的详细信息,包括IP地址、路由实例详细信息。每次调用Platter CNI来设置网荚接口时,都会使用网荚名称和接口名称作为键,其查找启动接口所需的接口配置详细信息。
示例节点配置图
具有环境变量和注释的示例应用YAML配置(platter-node-config.yaml)如下所示:
/>
/>
/>
本文描述的技术可以硬件、软件、固件或其任意组合来实现。附图中示出和/或本公开其他地方示出或描述的各种组件、功能单元和/或模块可使用驻留在一个或多个计算设备中和/或在其处执行的软件、硬件、固件或硬件、软件和固件的混合来执行所描述的操作。例如,计算设备可通过多个处理器或多个设备来执行一个或多个此类模块。计算设备可将一个或多个此类模块执行为在底层硬件上执行的虚拟机。一个或多个此类模块可作为操作系统或计算平台的一个或多个服务来执行。一个或多个此类模块可在计算平台的应用层处作为一个或多个可执行程序来执行。在其他示例中,由模块提供的功能可由专用硬件设备来实现。尽管可单独示出包括在一个或多个存储设备内的某些模块、数据存储装置、组件、程序、可执行文件、数据项、功能单元和/或其他项,但一个或多个此类项可被组合并作为单个模块、组件、程序、可执行文件、数据项或功能单元来操作。例如,一个或多个模块或数据存储装置可被组合或部分组合,使得它们作为单个模块操作或提供功能。此外,一个或多个模块可彼此结合操作,使得例如一个模块充当另一个模块的服务或扩展。此外,存储设备内示出的每个模块、数据存储装置、组件、程序、可执行文件、数据项、功能单元或其他项可包括多个组件、子组件、模块、子模块、数据存储装置和/或未示出的其他组件或模块或数据存储装置。此外,存储设备内示出的每个模块、数据存储装置、组件、程序、可执行文件、数据项、功能单元或其他项可以各种方式实现。例如,存储设备内示出的每个模块、数据存储装置、组件、程序、可执行文件、数据项、功能单元或其他项可被实现为在计算设备上执行的操作系统的一部分。
如果以硬件实现,则本公开可涉及诸如处理器的装置或诸如集成电路芯片或芯片组的集成电路设备。另选地或附加地,如果以软件或固件实现,则这些技术可至少部分地通过包括指令的计算机-可读数据存储介质来实现,该指令在被执行时使处理器执行上述方法中的一个或多个方法。例如,计算机可读数据存储介质可存储此类指令以供处理器执行。
计算机可读介质可形成计算机程序产品的一部分,该计算机程序产品可包括包装材料。计算机可读介质可包括计算机数据存储介质,诸如随机存取存储器(RAM)、只读存储器(ROM)、非易失性随机存取存储器(NVRAM)、电可擦除可编程只读存储器(EEPROM)、闪存存储器、磁或光数据存储介质等。在一些示例中,制品可包括一个或多个计算机可读存储介质。
在一些示例中,计算机可读存储介质可包括非暂态介质。术语“非暂态”可指示存储介质不体现在载波或传播信号中。在某些示例中,非暂态存储介质可存储可随时间推移而改变的数据(例如,在RAM或高速缓存中)。
代码或指令可以是由处理电路执行的软件和/或固件,该处理电路包括一个或多个处理器,诸如一个或多个数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其他等效的集成或分立逻辑电路。因此,本文所使用的术语“处理器”可指任何前述结构或适合于实现本文所描述的技术的任何其他结构。此外,在一些方面,本公开中描述的功能可设置在软件模块或硬件模块内。
示例1:一种系统,包括:容器工作负载;容器化路由协议守护程序,所述容器化路由协议守护程序包括处理电路并且被配置为从外部网络控制器接收路由信息;内核网络堆栈,所述内核网络堆栈包括处理电路并且被配置为基于第一路由信息来路由针对所述容器工作负载的分组;基于DPDK的虚拟路由器,所述基于DPDK的虚拟路由器包括处理电路并且被配置为基于第二路由信息来路由针对所述容器工作负载的分组;以及容器联网接口插件,所述容器联网接口插件包括处理电路并且被配置为配置针对所述工作负载的第一虚拟网络接口以与所述基于DPDK的虚拟路由器对接,以及针对所述工作负载的第二虚拟网络接口以与所述内核网络堆栈进行对接。
示例2:根据示例1所述的系统,还包括:针对所述虚拟路由器的虚拟路由器代理,所述虚拟路由器代理包括所述处理电路并且被配置为从所述容器化路由协议守护程序接收所述第二路由信息。
示例3:根据示例1所述的系统,其中所述第二路由信息包括针对所述计算基础设施的覆盖网络的路由信息。
示例4:根据示例1所述的系统,其中所述系统作为针对移动网络的虚拟化蜂窝站点路由器进行操作。
示例5:根据示例1所述的系统,其中所述工作负载是针对5G移动网络的分布式单元(DU)。
示例6:根据示例1所述的系统,其中所述系统是单个计算节点。
示例7:根据示例1所述的系统,其中所述容器联网接口插件被配置为从Kubernetes基础设施接收针对所述虚拟路由器的虚拟网络接口信息。
示例8:根据示例1所述的系统,其中所述系统与作为容器联网接口的Kubernetes基础设施对接。
示例9:根据示例1所述的系统,其中所述路由信息包括分段路由信息。
示例10:根据示例1所述的系统,其中虚拟路由器代理被配置为与多个不同类型的控制平面对接。
示例11:一种计算设备,包括:容器联网接口插件,所述容器联网接口插件包括处理电路;编排代理,所述编排代理包括处理电路,其中所述编排代理是针对包括所述计算设备的计算基础设施的编排器的代理;内核网络堆栈,所述内核网络堆栈包括处理电路;虚拟路由器,所述虚拟路由器包括虚拟路由器数据平面和虚拟路由器代理,所述虚拟路由器包括处理电路;以及一个或多个容器的逻辑相关组,所述计算设备被配置为操作以实现针对所述一个或多个容器的备份网络接口。
Claims (64)
1.一种计算设备,所述计算设备被配置有容器化路由器,所述计算设备包括:
处理电路;
容器化虚拟路由器,所述容器化虚拟路由器被配置为在所述处理电路上执行并且被配置为实现针对所述容器化路由器的数据平面;以及
容器化路由协议过程,所述容器化路由协议过程被配置为在所述处理电路上执行并且被配置为实现针对所述容器化路由器的控制平面。
2.根据权利要求1所述的计算设备,还包括:
第一网荚,所述第一网荚包括所述容器化虚拟路由器;以及
不同的第二网荚,所述第二网荚包括所述容器化路由协议过程。
3.根据权利要求1所述的计算设备,还包括:
网络接口卡,
其中所述第一网荚是支持数据平面开发套件(DPDK)的并且被配置成所述容器化虚拟路由器能够使用DPDK来与所述网络接口卡交换分组。
4.根据权利要求1所述的计算设备,其中所述容器化路由协议过程被配置为执行一个或多个路由协议,以与所述计算设备外部的路由器交换路由信息。
5.根据权利要求4所述的计算设备,其中所述容器化路由器与所述计算设备外部的所述路由器建立路由协议邻接。
6.根据权利要求4所述的计算设备,
其中所述一个或多个路由协议包括内部网关协议,并且
其中所述路由信息包括针对网络的底层路由信息,所述底层路由信息经由所述内部网关协议而被获得。
7.根据权利要求6所述的计算设备,其中所述网络是针对移动网络系统的5G无线电接入网络(RAN)的中传网络。
8.根据权利要求4所述的计算设备,其中所述路由信息包括针对底层网络的底层路由信息以及针对一个或多个虚拟网络的覆盖路由信息。
9.根据权利要求8所述的计算设备,
其中所述一个或多个路由协议包括边界网关协议(BGP),
其中所述覆盖路由信息包括BGP UPDATE消息,所述BGP UPDATE消息包括针对三层虚拟专用网络(L3VPN)的标记路由,并且
其中所述BGP UPDATE消息指示被部署到所述计算设备的容器工作负载经由所述容器化路由器可到达。
10.根据权利要求8所述的计算设备,
其中所述一个或多个路由协议包括边界网关协议(BGP),
其中所述覆盖路由信息包括BGP UPDATE消息,所述BGP UPDATE消息包括针对三层虚拟专用网络(L3VPN)的标记路由,并且
其中所述容器化路由协议过程被配置为向所述容器化虚拟路由器编程针对所述标记路由的对应路由,以使所述容器化虚拟路由器向所述容器工作负载转发分组。
11.根据权利要求8所述的计算设备
其中所述一个或多个路由协议包括边界网关协议(BGP),并且
其中所述覆盖路由信息包括BGP UPDATE消息,所述BGP UPDATE消息包括针对三层虚拟专用网络(L3VPN)的标记路由,
其中所述BGP UPDATE消息指示针对在另一计算设备上执行的容器工作负载的下一跳,
其中所述容器化路由协议过程被配置为向所述容器化虚拟路由器编程针对所述标记路由的对应路由,以使所述容器化虚拟路由器向所述另一计算设备转发由所述容器工作负载发起的分组。
12.根据权利要求8所述的计算设备,
其中所述容器工作负载包括针对移动网络系统的5G无线电接入网络(RAN)的分布式单元(DU),并且
其中所述底层网络包括针对所述5G RAN的中传网络。
13.根据权利要求8所述的计算设备,其中所述容器化路由器被配置为作为针对所述底层网络的提供方边缘路由器进行操作,所述提供方边缘路由器向所述容器工作负载提供虚拟专用联网服务。
14.根据权利要求1所述的计算设备,还包括:
容器联网接口插件,所述容器联网接口插件被配置为在所述处理电路上执行并且被配置为:
在所述容器化虚拟路由器中,配置具有针对容器工作负载的网络地址的虚拟网络接口,所述容器工作负载被部署到所述计算设备;以及
向所述容器化路由协议过程输出针对所述虚拟网络接口的主机路由;
其中所述容器化路由协议过程被配置为向所述容器虚拟路由器推送针对所述主机路由的转发信息,以使所述容器虚拟路由器向所述容器工作负载转发分组。
15.根据权利要求14所述的计算设备,其中所述虚拟网络接口包括针对所述容器工作负载的virtio接口以及所述容器化虚拟路由器中的vhost接口。
16.根据权利要求14所述的计算设备,其中所述主机路由被映射到包括所述容器工作负载的三层虚拟专用网络。
17.根据权利要求14所述的计算设备,还包括:
编排系统的编排代理,所述编排代理被配置为在所述处理电路上执行并且被配置为:
部署所述容器工作负载;以及
调用所述容器联网接口插件以配置所述虚拟网络接口。
18.根据权利要求1所述的计算设备,其中在所述计算设备被部署为支持蜂窝站点时,所述容器化路由器被配置为作为针对移动网络系统的5G无线电接入网络(RAN)的蜂窝站点路由器进行操作。
19.根据权利要求1所述的计算设备,还包括:
操作系统内核,所述操作系统内核被配置为在所述处理电路上执行并且被配置有与所述容器化路由协议过程的vhost接口,
其中所述容器化路由协议过程使用被分配给所述vhost接口的网络地址作为用于建立路由协议邻接的所述容器化路由器的网络地址。
20.根据权利要求19所述的计算设备,
其中所述虚拟路由器被配置有转发信息,以使所述虚拟路由器经由所述vhost接口向所述内核输出目的地为被分配给所述vhost接口的所述网络地址的网络业务。
21.根据权利要求19所述的计算设备,
其中所述容器化路由协议过程被配置为执行路由协议,
其中所述网络业务包括由所述计算设备外部的路由器通告的路由信息,并且
其中所述容器化路由协议过程被配置为从所述内核获得所述路由信息。
22.根据权利要求19所述的计算设备,还包括:
支持数据平面开发套件(DPDK)的第一网荚,所述第一网荚包括所述容器化虚拟路由器;以及
支持DPDK的不同的第二网荚,所述第二网荚包括所述容器化路由协议过程,
其中所述容器化虚拟路由器被配置为使用DPDK来从网络接口卡接收分组,并且
其中所述容器化虚拟路由器被配置为使用DPDK来向容器工作负载发送所述分组而所述内核不转发所述分组。
23.根据权利要求1所述的计算设备,还包括:
网络接口卡;以及
操作系统内核,所述操作系统内核被配置为在所述处理电路上执行,
其中所述容器化路由协议过程被配置为在所述网络接口卡与被部署到所述计算设备的容器工作负载之间转发数据业务而没有所述内核的参与,并且
其中所述容器化虚拟路由器被配置为经由所述内核通告包括针对所述容器工作负载的可达性信息的路由信息。
24.一种5G无线电接入网络,包括:
中传网络,所述中传网络将gNodeB的分布式单元连接到所述gNodeB的集中式单元;以及
计算设备,所述计算设备包括:
处理电路;
容器化路由协议过程,所述容器化路由协议过程被配置为在所述处理电路上执行并且被配置为实现针对所述容器化路由器的控制平面;
网荚,所述网荚包括容器化分布式单元或容器化集中式单元中的一者,其中所述容器化路由协议过程被配置为经由所述中传网络通告路由信息,所述路由信息包括针对所述容器化分布式单元或所述容器化集中式单元中的一者的可达性信息;以及
容器化虚拟路由器,所述容器化虚拟路由器被配置为在所述处理电路上执行并且被配置为实现针对所述容器化路由器的数据平面,以向所述容器化分布式单元或所述容器化集中式单元中的一者转发在所述容器化虚拟路由器处被接收的业务。
25.一种虚拟化蜂窝站点路由器,包括:
被配置有容器化路由器的计算设备,所述计算设备包括:
容器化虚拟路由器,所述容器化虚拟路由器被配置为在所述处理电路上执行并且被配置为实现针对所述容器化路由器的数据平面;
容器化路由协议过程,所述容器化路由协议过程被配置为在所述处理电路上执行并且被配置为实现针对所述容器化路由器的控制平面;以及
网荚,所述网荚包括容器化分布式单元,其中所述容器化路由协议过程被配置为通告路由信息,所述路由信息包括针对所述容器化分布式单元的可达性信息。
26.一种计算设备,包括:
处理电路;
容器化工作负载集合;
容器化路由协议过程,所述容器化路由协议过程被配置为在所述处理电路上执行并且被配置为接收路由信息;
内核网络堆栈,所述内核网络堆栈在所述处理电路上执行并且被配置为基于来自所述容器化路由协议过程的第一路由信息来转发分组;以及
基于数据平面开发套件(DPDK)的虚拟路由器,所述虚拟路由器在处理电路上执行并且被配置为基于来自所述容器化路由协议过程的第二路由信息来向所述工作负载转发业务以及从所述工作负载转发业务。
27.根据权利要求26所述的计算设备,还包括:
针对所述虚拟路由器的虚拟路由器代理,所述虚拟路由器代理在所述处理电路上执行并且被配置为从所述容器化路由协议过程接收所述第二路由信息。
28.根据权利要求26所述的计算设备,
其中所述第一路由信息包括针对计算基础设施的底层网络的路由信息,并且
其中所述第二路由信息包括针对所述计算基础设施的覆盖网络的路由信息。
29.根据权利要求26所述的计算设备,其中所述计算设备作为针对移动网络的虚拟化蜂窝站点路由器进行操作。
30.根据权利要求26所述的计算设备,其中所述工作负载是针对5G移动网络的分布式单元(DU)。
31.根据权利要求26所述的计算设备,还包括:
容器联网接口插件,所述容器联网接口插件被配置为在所述处理电路上执行并且被配置为从Kubernetes编排器接收针对所述虚拟路由器的虚拟网络接口信息。
32.根据权利要求26所述的计算设备,其中所述计算设备使用容器联网接口来与Kubernetes编排器对接。
33.根据权利要求26所述的计算设备,其中所述路由信息包括分段路由信息。
34.根据权利要求26所述的计算设备,还包括:
针对所述虚拟路由器的虚拟路由器代理,所述虚拟路由器代理被配置为在所述处理电路上执行并且被配置为与多个不同类型的控制平面对接。
35.根据权利要求26所述的计算设备,其中所述容器化路由协议过程被配置为从外部网络控制器或从对等路由器接收所述路由信息。
36.一种方法,包括:
由在计算设备上执行的容器化路由协议过程接收路由信息;
由在所述计算设备上执行并且执行内核网络堆栈的内核从所述容器化路由协议过程接收第一路由信息;
由所述内核基于从所述容器化路由协议过程被接收的所述第一路由信息来转发分组;
由基于数据平面开发套件(DPDK)的虚拟路由器从所述容器化路由协议过程接收第二路由信息;以及
由所述虚拟路由器基于从所述容器化路由协议过程被接收的所述第二路由信息来向所述容器化路由协议过程转发业务以及从所述容器化路由协议过程转发业务。
37.根据权利要求36所述的方法,其中接收所述第二路由信息包括:由针对所述虚拟路由器的虚拟路由器代理从所述容器化路由协议过程接收所述第二路由信息。
38.根据权利要求36所述的方法,
其中所述第一路由信息包括针对计算基础设施的底层网络的路由信息,并且
其中所述第二路由信息包括针对所述计算基础设施的覆盖网络的路由信息。
39.根据权利要求36所述的方法,其中所述计算设备作为针对移动网络的虚拟化蜂窝站点路由器进行操作。
40.根据权利要求36所述的方法,其中所述工作负载是针对5G移动网络的分布式单元(DU)。
41.根据权利要求36所述的方法,还包括:
由容器联网接口从编排器接收添加针对所述工作负载的虚拟网络接口的请求;以及
由所述容器联网接口配置针对所述工作负载的所述虚拟网络接口。
42.根据权利要求36所述的方法,其中所述路由信息包括分段路由信息。
43.根据权利要求36所述的方法,其中接收所述路由信息包括:从外部网络控制器或从对等路由器接收所述路由信息。
44.一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质被编码有指令,所述指令在被执行时使处理电路执行包括以下的操作:
由计算设备的容器化路由协议过程接收路由信息;
由包括内核网络堆栈的所述计算设备的内核从所述容器化路由协议过程接收第一路由信息;
由所述内核基于从所述容器化路由协议过程被接收的所述第一路由信息来转发分组;
由基于数据平面开发套件(DPDK)的虚拟路由器从所述容器化路由协议过程接收第二路由信息;以及
由所述虚拟路由器基于从所述容器化路由协议过程被接收的所述第二路由信息向容器化工作负载集合转发业务以及从容器化工作负载集合转发业务。
45.一种计算设备,包括:
容器化路由协议过程,所述容器化路由协议过程在所述计算设备的处理电路上执行并且被配置为接收路由信息;
容器化工作负载集合;
基于数据平面开发套件(DPDK)的虚拟路由器,所述虚拟路由器在所述处理电路上执行并且被配置为基于来自所述容器化路由协议过程的所述路由信息向所述工作负载转发业务以及从所述工作负载转发业务;以及
针对所述虚拟路由器的虚拟路由器代理,所述虚拟路由器代理在所述处理电路上执行并且被配置为暴露通用数据平面接口。
46.根据权利要求45所述的计算设备,其中所述通用数据平面接口包括远程过程调用应用编程接口。
47.根据权利要求45所述的计算设备,其中所述虚拟路由器代理是远程过程调用应用编程接口服务器。
48.根据权利要求45所述的计算设备,其中所述计算设备作为移动网络的虚拟化蜂窝站点路由器进行操作。
49.根据权利要求45所述的计算设备,其中所述工作负载是针对5G移动网络的分布式单元(DU)。
50.根据权利要求45所述的计算设备,还包括:
容器联网接口插件,所述容器联网接口插件包括处理电路并且被配置为从编排器接收针对所述虚拟路由器的虚拟网络接口信息。
51.根据权利要求45所述的计算设备,其中所述计算设备利用针对Kubernetes的容器联网接口来与编排器对接。
52.根据权利要求45所述的计算设备,其中所述路由信息包括分段路由信息。
53.根据权利要求45所述的计算设备,其中虚拟路由器代理被配置为经由所述通用数据平面接口与多个不同类型的控制平面对接。
54.根据权利要求45所述的计算设备,其中所述虚拟路由器代理被配置为经由所述通用数据平面接口从所述容器化路由协议过程接收用于利用虚拟网络接口来配置所述工作负载的虚拟网络接口信息。
55.根据权利要求45所述的计算设备,
其中所述容器联网接口插件具有为工作负载保留的因特网协议(IP)地址块,所述容器联网接口插件在被分配来自所述IP地址块的IP地址的Port Add上并且配置所述工作负载中的工作负载,并且利用网络名称和所述IP地址来触发到所述虚拟路由器代理的PortAdd,
其中所述虚拟路由器代理被配置为向所述容器化路由协议过程发送虚拟接口(VMI)订阅,所述容器化路由协议过程利用提供虚拟路由和转发实例标识符的更新来进行响应,
其中所述容器化路由协议过程被配置为分配标签、添加到所述虚拟路由器的路由和下一跳、以及导出所述路由。
56.根据权利要求55所述的计算设备,其中所述路由将所述工作负载通告为在所述系统处可到达。
57.根据权利要求45所述的计算设备,其中所述容器化路由协议过程被配置为从外部网络控制器或从对等路由器接收所述路由信息。
58.一种方法,包括:
由计算设备的虚拟路由器代理配置连接在所述计算设备上执行的容器化工作负载集合与基于数据平面开发套件(DPDK)的虚拟路由器的虚拟网络接口;
由所述虚拟路由器代理经由通用数据平面接口从在所述计算设备上执行的容器化路由协议过程接收路由信息;以及
由所述虚拟路由器代理基于所述路由信息利用转发信息来配置所述虚拟路由器,以使所述虚拟路由器向所述工作负载转发业务以及从所述工作负载转发业务。
59.根据权利要求58所述的方法,其中所述通用数据平面接口包括远程过程调用应用编程接口。
60.根据权利要求58所述的方法,其中所述虚拟路由器代理是远程过程调用应用编程接口服务器。
61.根据权利要求58所述的方法,其中所述系统作为针对移动网络的虚拟化蜂窝站点路由器进行操作。
62.根据权利要求58所述的方法,其中所述工作负载是针对5G移动网络的分布式单元(DU)。
63.根据权利要求58所述的方法,其中虚拟路由器代理被配置为经由所述通用数据平面接口与多个不同类型的控制平面对接。
64.一种非暂态计算机可读介质,所述非暂态计算机可读介质包括指令,所述指令在被执行时使处理电路执行操作,所述操作包括:
由虚拟路由器代理配置连接在计算设备上执行的容器化工作负载集合与基于数据平面开发套件(DPDK)的虚拟路由器的虚拟网络接口;
由所述虚拟路由器代理经由通用数据平面接口从在所述计算设备上执行的容器化路由协议过程接收路由信息;以及
由所述虚拟路由器代理基于所述路由信息利用转发信息来配置所述虚拟路由器,以使所述虚拟路由器向所述工作负载转发业务以及从所述工作负载转发业务。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311106067.9A CN117061425A (zh) | 2021-03-01 | 2022-02-28 | 利用虚拟联网的容器化路由器 |
CN202311105157.6A CN117061424A (zh) | 2021-03-01 | 2022-02-28 | 利用虚拟联网的容器化路由器 |
Applications Claiming Priority (7)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
IN202141008548 | 2021-03-01 | ||
US63/242,434 | 2021-09-09 | ||
US17/649,643 US11818647B2 (en) | 2021-03-01 | 2022-02-01 | Containerized router with a generic data plane interface |
US17/649,632 | 2022-02-01 | ||
US17/649,640 | 2022-02-01 | ||
US17/649,643 | 2022-02-01 | ||
PCT/US2022/070865 WO2022187796A1 (en) | 2021-03-01 | 2022-02-28 | Containerized router with virtual networking |
Related Child Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311106067.9A Division CN117061425A (zh) | 2021-03-01 | 2022-02-28 | 利用虚拟联网的容器化路由器 |
CN202311105157.6A Division CN117061424A (zh) | 2021-03-01 | 2022-02-28 | 利用虚拟联网的容器化路由器 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116888940A true CN116888940A (zh) | 2023-10-13 |
Family
ID=88266717
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311105157.6A Pending CN117061424A (zh) | 2021-03-01 | 2022-02-28 | 利用虚拟联网的容器化路由器 |
CN202280016939.XA Pending CN116888940A (zh) | 2021-03-01 | 2022-02-28 | 利用虚拟联网的容器化路由器 |
CN202311106067.9A Pending CN117061425A (zh) | 2021-03-01 | 2022-02-28 | 利用虚拟联网的容器化路由器 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311105157.6A Pending CN117061424A (zh) | 2021-03-01 | 2022-02-28 | 利用虚拟联网的容器化路由器 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311106067.9A Pending CN117061425A (zh) | 2021-03-01 | 2022-02-28 | 利用虚拟联网的容器化路由器 |
Country Status (1)
Country | Link |
---|---|
CN (3) | CN117061424A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117857646A (zh) * | 2024-02-28 | 2024-04-09 | 荣耀终端有限公司 | 数据网络共享方法、电子设备及存储介质 |
-
2022
- 2022-02-28 CN CN202311105157.6A patent/CN117061424A/zh active Pending
- 2022-02-28 CN CN202280016939.XA patent/CN116888940A/zh active Pending
- 2022-02-28 CN CN202311106067.9A patent/CN117061425A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117857646A (zh) * | 2024-02-28 | 2024-04-09 | 荣耀终端有限公司 | 数据网络共享方法、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN117061425A (zh) | 2023-11-14 |
CN117061424A (zh) | 2023-11-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11818647B2 (en) | Containerized router with a generic data plane interface | |
US10708082B1 (en) | Unified control plane for nested clusters in a virtualized computing infrastructure | |
CN110875848B (zh) | 控制器和用于配置虚拟执行元件的虚拟网络接口的方法 | |
CN114745332B (zh) | 促进计算机网络中的服务链的流对称的系统和网络控制器 | |
US11159366B1 (en) | Service chaining for virtual execution elements | |
US20230123775A1 (en) | Cloud native software-defined network architecture | |
US20220334864A1 (en) | Plurality of smart network interface cards on a single compute node | |
US20230079209A1 (en) | Containerized routing protocol process for virtual private networks | |
US11700236B2 (en) | Packet steering to a host-based firewall in virtualized environments | |
EP4307632A2 (en) | Containerized router with virtual networking | |
EP4160409A1 (en) | Cloud native software-defined network architecture for multiple clusters | |
US20230107891A1 (en) | User interface for cloud native software-defined network architectures | |
CN115941241A (zh) | 云本地软件定义网络架构中基于角色的访问控制自动生成 | |
CN116888940A (zh) | 利用虚拟联网的容器化路由器 | |
US11570097B1 (en) | Overlay broadcast network for management traffic | |
US20240031908A1 (en) | Containerized router with a disjoint data plane | |
US20230412526A1 (en) | Hybrid data plane for a containerized router | |
EP4336790A1 (en) | Network segmentation for container orchestration platforms | |
US20240073087A1 (en) | Intent-driven configuration of a cloud-native router | |
US11895020B1 (en) | Virtualized cell site routers with layer 2 forwarding | |
EP4160410A1 (en) | Cloud native software-defined network architecture | |
US20230106531A1 (en) | Virtual network routers for cloud native software-defined network architectures | |
CN117255019A (zh) | 用于虚拟化计算基础设施的系统、方法及存储介质 | |
EP4075757A1 (en) | A plurality of smart network interface cards on a single compute node | |
CN117640389A (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 |