用于云原生软件定义网络架构的用户界面的制作方法-尊龙凯时官方app下载

文档序号:36175674发布日期:2023-11-25 01:57阅读:4757来源:国知局
用于云原生软件定义网络架构的用户界面的制作方法
用于云原生软件定义网络架构的用户界面
1.相关申请
2.本技术要求于
2022
年5月6日提交的美国临时申请第
63/364,283
号和于
2021

10
月4日提交的印度临时申请第
202141044924
号的权益,它们中的每一个通过引用整体并入本文

技术领域
3.本公开涉及虚拟化计算基础设施,并且更具体地,涉及云原生联网



背景技术:

4.在典型的云数据中心环境中,存在提供计算和
/
或存储容量以运行各种应用的互连服务器的大集合

例如,数据中心可以包括为订户
(
即,数据中心的客户
)
托管应用和服务的设施

数据中心可以例如托管所有基础设施装备,诸如联网和存储系统

冗余电源和环境控制

在典型的数据中心中,存储系统和应用服务器的集群经由一层或多层物理网络交换机和路由器提供的高速交换结构互连

更复杂的数据中心利用位于各种物理主机设施中的订户支持装备提供遍布全世界的基础设施

5.虚拟化数据中心正在成为现代信息技术
(it)
基础设施的核心基础

特别地,现代数据中心已经广泛地利用了虚拟化环境,在虚拟化环境中,虚拟主机
(
在本文也被称为虚拟执行元件,诸如虚拟机或容器
)
被部署在物理计算设备的底层计算平台上并在其上执行

6.数据中心或包括一个或多个服务器的任何环境内的虚拟化可以提供若干优点

一个优点是虚拟化可以提供对效率的显著改进

随着每个物理
cpu
具有大量核的多核微处理器架构的出现,底层物理计算设备
(
即,服务器
)
已经变得越来越强大,虚拟化变得更容易和更有效

第二个优点是虚拟化提供了对计算基础设施的显著控制

随着物理计算资源变成可替代资源,诸如在基于云的计算环境中,计算基础设施的供应和管理变得更容易

因此,企业
it
人员通常更喜欢数据中心中的虚拟化的计算集群,因为除了虚拟化提供的效率和增加的投资回报
(roi)
之外,它们的管理具备优势

7.容器化是一种基于操作系统级虚拟化的虚拟化方案

容器是用于彼此隔离并且与主机隔离的应用的重量轻且便携的执行元件

因为容器没有紧密耦接到主机硬件计算环境,所以应用可以被绑定到容器图像并且作为单个轻量包在支持底层容器架构的任何主机或虚拟主机上执行

这样,容器解决了如何使软件在不同的计算环境中工作的问题

容器提供了从一个计算环境到另一个虚拟或物理环境一致运行的承诺

8.利用容器的固有轻量级性质,单个主机通常可以支持比传统虚拟机
(vm)
更多的容器实例

通常短期的
(
与大多数
vm
相比
)
,可以比
vm
更有效地创建和移动短期容器,并且还可以将它们作为逻辑相关的元件组来管理
(
例如,对于一些编排平台,有时称为“pod”,例如
kubernetes)。
这些容器特性影响对于容器联网尊龙凯时官方app下载的解决方案的要求:网络应当是敏捷的和可扩展的
。vm、
容器和裸金属服务器可能需要在同一计算环境中共存,其中在应用的多样部署之间启用通信

容器网络还应当是不可知的,以与用于部署容器化的应用的多种类型的编排
平台一起工作

9.管理部署和应用执行的基础设施的计算基础设施可以涉及两个主要角色:
(1)
编排

用于跨主机集群自动化应用的部署

缩放和操作,并且提供计算基础设施,其可以包括以容器为中心的计算基础设施;和
(2)
网络管理-用于在网络基础设施中创建虚拟网络以使得能够在诸如容器或
vm
的虚拟执行环境上运行的应用中以及在传统
(
例如,物理
)
环境上运行的应用中进行封包通信

软件定义网络有助于网络管理



技术实现要素:

10.总体上,描述了用于提供用于与云原生软件定义网络
(sdn)
架构进行接口的用户界面
(
例如,图形用户界面
)
的技术

在一些示例中,
sdn
架构可以包括在计算节点和诸如路由器或交换机等网络设备中实现的数据平面元件,并且
sdn
架构还可以包括用于创建和管理虚拟网络的网络控制器
。sdn
架构配置和控制平面被设计为具有支持服务中升级的基于容器的微服务架构的横向扩展云原生软件

可以实现用于配置平面的配置节点以展露定制资源

用于
sdn
架构配置的这些定制资源可以包括传统上由网络控制器展露的配置元件,但是配置元件可以与
kubernetes
本地
/
内置资源合并以支持统一意图模型,由聚合的
api
层展露,其由
kubernetes
控制器和工作以协调
sdn
架构的实际状态与意图状态的定制资源控制器实现

11.用于
sdn
架构配置的定制资源包括虚拟网络路由器,该虚拟网络路由器表示用于在由
sdn
架构实现的虚拟网络之间互连和实现通信的逻辑抽象

虚拟网络路由器定制资源的实例使用在相应虚拟网络的路由实例内配置的引入和引出路由目标来促进路由信息的交换
(
指的是非对称或对称的引入和引出
)。
于是,实际上,虚拟网络路由器使得能够在针对
sdn
架构定义的虚拟网络资源之间实现路由泄漏

因为虚拟网络路由器资源隐藏了用于实现各种虚拟网络资源的
vrf
中的虚拟路由和转发实例
(vrf
或“路由实例
(routing instance)”)
配置的复杂详细信息,所以该技术提供了一种直观的基于意图的模型,用于定义虚拟网络资源和
sdn
架构中配置的相应虚拟网络之间的互连性,并且甚至对于可能不熟悉边界网关协议和
vrf
配置的那些人也提高了可用性

12.用于对控制路由信息的引入和
/
或引出的策略进行抽象的
vnr
的添加可简化将网络元件
(
诸如虚拟网络
)
拼接在一起以促进此类网络元件之间的互连

本公开所述的技术的各个方面可提供被配置为图形地呈现可包括各种网络元件
(
诸如虚拟网络
)
的网络的拓扑的用户界面,而不是求助于复杂的接口来定义涉及可能需要复杂的网络构造知识
(
诸如路由目标

标识网络元件的标签等
)
的复杂陈述的
vnr。
用户可以与用户界面
(
其可以指图形用户界面
(gui))
进行接口,以可视地配置
vnr
以互连两个或更多个网络元件

13.用户界面可以接收用户输入
(
其可以被称为经由
gui
输入的输入
)
,诸如用于拖放或以其他方式定义
vnr
的图形用户界面输入

用户界面可以将这些输入作为配置
vnr
的请求传递到网络控制器

用户可以通过与
gui
的交互来输入,以图形地定义
vnr
,选择
vnr
针对其建立互连性
(
例如,网格连通性和
/
或中心辐条式连通性
)
的虚拟网络和其他网络元件

网络控制器可以处理这些输入并更新
gui
以呈现提示和其他
gui
,通过这些提示和
gui
来提示用户定义
vnr
可能需要的附加输入

网络控制器可将定义
vnr
的这些输入减少到控制网络元件之间的路由信息的引入和
/
或引出的各种策略中,并且在适当的网络元件中配置策略以促
进实现网络元件之间的互连性的路由信息的交换

14.这些技术可以提供附加的一个或多个技术优点

例如,云原生
(cloud-native)sdn
架构可以解决传统
sdn
架构中的限制,该限制涉及生命周期管理的复杂性

强制性高资源分析部件

配置管理中的规模限制以及缺少基于命令行界面
(cli)
的接口

例如,用于
sdn
架构的网络控制器是具有简化的安装覆盖区的云原生

轻量级分布式应用

这还便于配置和控制平面的配置节点和控制节点的各种部件微服务的更容易和模块化的升级

15.该技术还可以实现可选的云原生监视
(
遥测
)
和用户界面

使用连接到启用
dpdk

pod
的基于数据平面转发工具
(
基于
dpdk)
的虚拟路由器的用于容器的高性能数据平面,以及在一些情况下利用用于现有编排平台
(
诸如
kubernetes

openstack)
的配置框架的云原生配置管理

作为云原生架构,网络控制器是可扩展的并且弹性的,以寻址和支持多个集群

在一些情况下,网络控制器还可以支持关键性能指标
(kpi)
的可扩展性和性能要求

16.另外,根据本公开所述的技术的各个方面配置的用户界面可以使没有经验的用户
(

sdn
架构的上下文中
)
能够在不具有网络构造的广泛知识
(
诸如以上列出的那些
)
的情况下定义
vnr。
这样,用户可以更有效地与用户界面交互以定义
vnr
来满足企业和
/
或客户目标

用户界面可以引导用户以减少并可能消除配置
vnr
中的错误,同时还使得用户能够查看网络的拓扑并获得对网络本身的更好的理解

通过易于使用以及消除错误,用户界面可以减少用户定义复杂配置数据的需要,同时还避免可能使得网络控制器的低效操作
(
在计算资源方面,诸如处理周期

存储器

存储器总线带宽等,以及相关联的功率
)
的此类错误

这样,用户界面可以改进网络控制器本身的操作

17.在一个示例中,本技术的各个方面涉及一种用于软件定义网络
(sdn)
架构系统的网络控制器,该网络控制器包括:存储器,其被配置为存储用户界面;处理电路,其被配置为呈现该用户界面并执行控制节点,其中该用户界面被配置为:图形地表示由该软件定义网络
(sdn)
架构系统支持的网络的拓扑,该网络包括第一虚拟网络和第二虚拟网络;以及动态地生成表示虚拟网络路由器的图形元件,通过该虚拟网络路由器来互连该第一虚拟网络和该第二虚拟网络,该虚拟网络路由器表示一个或多个策略的逻辑抽象,该一个或多个策略使得在该第一虚拟网络和该第二虚拟网络之间的路由信息的引入和引出中的一个或多个,其中,该控制节点根据该一个或多个策略来配置该第一虚拟网络和该第二虚拟网络,以实现经由该虚拟网络路由器在该第一虚拟网络和该第二虚拟网络之间进行路由信息的引入和引出中的一个或多个

18.在另一个示例中,本技术的各个方面涉及一种方法,该方法包括:由用于软件定义网络
(sdn)
架构系统的网络控制器呈现用户界面,其中该用户界面被配置为:图形地表示由该软件定义网络
(sdn)
架构系统支持的网络的拓扑,该网络包括第一虚拟网络和第二虚拟网络;以及动态地生成表示虚拟网络路由器的图形元件,通过该虚拟网络路由器来互连该第一虚拟网络和该第二虚拟网络,该虚拟网络路由器表示一个或多个策略的逻辑抽象,该一个或多个策略使得该第一虚拟网络和该第二虚拟网络之间的路由信息的引入和引出中的一个或多个;以及由网络控制器执行控制节点,该控制节点根据一个或多个策略配置第一虚拟网络和第二虚拟网络,以实现经由虚拟网络路由器在第一虚拟网络和第二虚拟网络之间引入和引出路由信息中的一个或多个

19.在另一个示例中,本技术的各方面涉及一种非暂时性计算机可读介质,该非暂时
性计算机可读介质包括用于使软件定义网络
(sdn)
架构系统的网络控制器的处理电路执行以下操作的指令:呈现用户界面,其中该用户界面被配置为:图形地表示由该软件定义网络
(sdn)
架构系统支持的网络的拓扑,该网络包括第一虚拟网络和第二虚拟网络;以及动态地生成表示虚拟网络路由器的图形元件,通过该虚拟网络路由器来互连该第一虚拟网络和该第二虚拟网络,该虚拟网络路由器表示一个或多个策略的逻辑抽象,该一个或多个策略使得在该第一虚拟网络和该第二虚拟网络之间的路由信息的引入和引出中的一个或多个;以及执行控制节点,该控制节点根据该一个或多个策略来配置该第一虚拟网络和该第二虚拟网络,以实现经由该虚拟网络路由器在该第一虚拟网络和该第二虚拟网络之间的路由信息的引入和引出中的一个或多个

20.在附图和以下描述中阐述本公开的一个或多个示例的详细信息

从说明书和附图以及从权利要求书中,其他特征

目的和优点将是显而易见的

附图说明
21.图1是图示了其中可实现本文所述的技术的示例的示例性计算基础设施的框图

22.图2是图示了根据本公开的技术的用于云原生联网的云原生
sdn
架构的示例的框图

23.图3是根据本公开的技术,更详细地图示
sdn
架构的部件的另一视图的框图

24.图4是图示了根据本公开的技术的
sdn
架构的示例性部件的框图

25.图5是根据本公开所述的技术的示例性计算设备的框图

26.图6是根据本公开的技术的操作为
sdn
架构系统的一个或多个集群的计算节点的示例性计算设备的框图

27.图
7a
是图示了根据本公开的技术的用于使用
sdn
架构的基础网络和覆盖网络配置的控制
/
路由平面的框图

28.图
7b
是图示了根据本公开的技术的使用底层网络中配置的隧道来连接
pod
的经配置的虚拟网络的框图

29.图8是图示了根据本公开的技术的用于
sdn
架构配置的定制资源的定制控制器的实例的框图

30.图9是图示了在对不同的定制资源类型具有依赖性的定制资源类型之间的创建

观察和协调的示例性流程的框图

31.图
10a

10m
是图示了提供网络的拓扑的图形表示的图形用户界面的示例的示图,其中虚拟网络路由器可被图形地定义以允许不同网络元件之间的连通性

32.图
11

17
是图示了根据本公开所述的技术的各方面的虚拟网络路由器可被配置为实现虚拟网络之间的互连性的各种实例的示图

33.图
18a

18d
是图示了根据本公开所述的技术的各方面在
sdn
架构内建立一个或多个虚拟网络路由器时所执行的操作的流程图

34.图
19
是图示了图1的示例中所示的计算机架构在执行本文所述的技术的各个方面时的操作的另一流程图

35.在整个说明书和附图中,相同的附图标记表示相同的元件

具体实施方式
36.图1是图示了其中可实现本文所述的技术的示例的示例性计算基础设施8的框图

由于例如生命周期管理的复杂性

强制性高资源分析部件

配置模块中的规模限制以及没有基于命令行界面
(cli)(

kubectl)
的接口,用于虚拟网络的软件定义网络
(sdn)
架构的当前实现对云原生采用提出了挑战

计算基础设施8包括本文所述的云原生
sdn
架构系统,其解决了这些挑战并为
telco
云原生时代
(telco cloud-native era)
现代化

云原生
sdn
架构的示例用例包括
5g
移动网络以及云和企业云原生用例
。sdn
架构可以包括在计算节点
(
例如,服务器
12)
和诸如路由器或交换机的网络设备中实现的数据平面元件,并且
sdn
架构还可以包括用于创建和管理虚拟网络的
sdn
控制器
(
例如,网络控制器
24)。sdn
架构配置和控制平面被设计为具有支持服务中升级的基于容器的微服务架构的横向扩展云原生软件

37.结果,
sdn
架构部件是微服务,并且与现有网络控制器相比,
sdn
架构假设基本容器编排平台来管理
sdn
架构部件的生命周期

利用容器编排平台搭建
sdn
架构部件;
sdn
架构使用云原生监视工具,该云原生监视工具可以与客户提供的云原生选项集成;
sdn
架构使用用于
sdn
架构对象
(
即,定制资源
)
的聚合的
api
来提供资源的声明性方式
。sdn
架构升级可以遵循云原生模式,并且
sdn
架构可以利用
kubernetes
构造,诸如
multus、
认证与授权

集群
api、kubefederation、kubevirt

kata
容器
。sdn
架构可以支持数据平面转发工具
(dpdk)pod
,并且
sdn
架构可以扩展为支持具有虚拟网络策略和全局安全策略的
kubernetes。
38.对于服务提供商和企业,
sdn
架构自动化网络资源供应和编排以动态创建高度可扩展的虚拟网络,并且链接虚拟化网络功能
(vnf)
和物理网络功能
(pnf)
以按需形成差异化服务链
。sdn
架构可以与诸如
kubernetes、openshift、mesos、openstack、vmware vsphere
的编排平台
(
例如,编排器
23)
以及与服务提供商运营支持系统
/
业务支持系统
(oss/bss)
集成

39.通常,一个或多个数据中心
10
为客户站
11(
图示为“客户
11”)
的应用和服务提供操作环境,该客户站具有通过服务提供商网络7耦接到数据中心的一个或多个客户网络

数据中心
10
中的每一个可以例如托管基础设施装备,诸如联网和存储系统

冗余电源和环境控制

服务提供商网络7耦接到公共网络
15
,其可以表示由其他提供商管理的一个或多个网络,并且因此可以形成大规模公共网络基础设施的一部分,诸如互联网

公共网络
15
可以表示例如局域网
(lan)、
广域网
(wan)、
互联网

虚拟
lan(vlan)、
企业
lan、
层3虚拟专用网
(vpn)、
由运行服务提供商网络7的服务提供商操作的互联网协议
(ip)
内联网

企业
ip
网络或其某种组合

40.虽然客户站
11
和公共网络
15
主要被图示和描述为服务提供商网络7的边缘网络,但是在一些示例中,客户站
11
和公共网络
15
中的一个或多个可以是数据中心
10
中的任何数据中心内的租户网络

例如,数据中心
10
可以托管多个租户
(
客户
)
,每个租户与一个或多个虚拟专用网络
(vpn)
相关联,每个
vpn
可以实现客户站
11
中的一个

41.服务提供商网络7提供到附接的客户站
11、
数据中心
10
和公共网络
15
的基于数据包的连通性

服务提供商网络7可以表示由服务提供商拥有和运营以互连多个网络的网络

服务提供商网络7可以实现多协议标签交换
(mpls)
转发,并且在此类实例中可以被称为
mpls
网络或
mpls
骨干

在一些实例中,服务提供商网络7表示提供来自一个或多个服务提供商的服务的多个互连的自治系统,诸如互联网

42.在一些示例中,数据中心
10
中的每一个可以表示地理上分布的许多网络数据中心中的一个,其可以经由服务提供商网络
7、
专用网络链路

暗光纤或其他连接而彼此连接

如图1的示例所示,数据中心
10
可以包括为客户提供网络服务的设施

服务提供商的客户可以是集体实体,诸如企业和政府或个人

例如,网络数据中心可以为若干企业和终端用户托管
web
服务

其他示例性服务可包括数据存储

虚拟专用网络

流量工程

文件服务

数据挖掘

科学或超级计算等

虽然被图示为服务提供商网络7的单独边缘网络,但是数据中心
10
的元件,诸如一个或多个物理网络功能
(pnf)
或虚拟化网络功能
(vnf)
可以被包括在服务提供商网络7核心内

43.在该示例中,数据中心
10
包括经由由一层或多层物理网络交换机和路由器提供的交换机结构
14
互连的存储和
/
或计算服务器
(
或“节点”)
,其中服务器
12a

12x(
本文为“服务器
12”)
被描绘为耦接到架顶交换机
16a

16n。
服务器
12
是计算设备,并且在本文中还可以被称为“计算节点”、“主机”或“主机设备”。
虽然在图1中仅详细示出了耦接到
tor
交换机
16a
的服务器
12a
,但是数据中心
10
可以包括耦接到数据中心
10
的其他
tor
交换机
16
的许多附加服务器

44.所示示例中的交换结构
14
包括互连的架顶
(tor)(
或其他“叶”)
交换机
16a

16n(
统称为“tor
交换机
16”)
,其耦接到机箱
(
或“主干”或“核心”)
交换机
18a

18m(
统称为“机箱交换机
18”)
的分布层

尽管未示出,但是数据中心
10
还可以包括例如一个或多个非边缘交换机

路由器

中心

网关

诸如防火墙的安全设备

入侵检测和
/
或入侵防御设备

服务器

计算机终端

膝上型计算机

打印机

数据库

诸如蜂窝电话或个人数字助理的无线移动设备

无线接入点

网桥

线缆调制解调器

应用加速器或其他网络设备

数据中心
10
还可以包括一个或多个物理网络功能
(pnf)
,诸如物理防火墙

负载均衡器

路由器

路由反射器

宽带网络网关
(bng)、
移动核心网络元件和其他
pnf。
45.在该示例中,
tor
交换机
16
和机箱交换机
18
向服务器
12
提供到
ip
结构
20
和服务提供商网络7的冗余
(
多宿主
)
连接

机箱交换机
18
聚合业务流并提供
tor
交换机
16
之间的连接
。tor
交换机
16
可以是提供层
2(mac)

/
或层
3(
例如,
ip)
路由和
/
或交换功能的网络设备
。tor
交换机
16
和机箱交换机
18
可以各自包括一个或多个处理器和存储器,并且可以执行一个或多个软件过程

机箱交换机
18
耦接到
ip
结构
20
,其可以执行层3路由以通过服务提供商网络7在数据中心
10
和客户站
11
之间路由网络流量

数据中心
10
的交换架构仅是示例

例如,其他交换架构可以具有更多或更少的交换层
。ip
结构
20
可以包括一个或多个网关路由器

46.术语“数据包流”、“业务流”或简单地“流”是指源自特定源设备或端点并被发送到特定目的地设备或端点的一组数据包

单个数据包流可以由5元组来标识:

源网络地址

目的地网络地址

源端口

目的端口

协议
》。
该5元组通常标识接收到的数据包所对应的数据包流
。n
元组是指从5元组提取的任何n个项

例如,数据包的2元组可以指数据包的

源网络地址

目的地网络地址



源网络地址

源端口

的组合

47.服务器
12
可以各自表示计算服务器或存储服务器

例如,每个服务器
12
可以表示被配置为根据本文所述的技术操作的计算设备,诸如基于
x86
处理器的服务器

服务器
12
可为网络功能虚拟化基础设施
(nfvi)
架构提供
nfvi。
48.服务器
12
中的任何服务器都可以配置有虚拟执行元件,诸如
pod
或虚拟机,通过虚
拟化服务器的资源以提供在服务器上执行的一个或多个处理
(
应用
)
之间的隔离的某种措施
。“基于管理程序的”或“硬件级”或“平台”虚拟化是指创建虚拟机,每个虚拟机包括用于执行一个或多个处理的访客操作系统

通常,虚拟机提供用于在隔离的虚拟环境中执行应用的虚拟化
/
访客操作系统

因为虚拟机从主机服务器的物理硬件虚拟化,所以执行的应用与其他虚拟机和主机的硬件隔离

每个虚拟机可以配置有一个或多个虚拟网络接口,用于在对应的虚拟网络上通信

49.虚拟网络是在物理网络之上实现的逻辑构造

虚拟网络可用于替代基于
vlan
的隔离,并在虚拟化数据中心,诸如数据中心
10
中提供多租户

每个租户或应用可以具有一个或多个虚拟网络

除非安全策略明确允许,否则每个虚拟网络可以与所有其他虚拟网络隔离

50.虚拟网络可以使用数据中心
10
网关路由器
(
图1中未示出
)
连接到物理多协议标签交换
(mpls)
层3虚拟专用网络
(l3vpn)
和以太网虚拟专用网络
(evpn)
网络并在其上扩展

虚拟网络也可用于实现网络功能虚拟化
(nfv)
和服务链

51.可以使用各种机制来实现虚拟网络

例如,每个虚拟网络可以被实现为虚拟局域网
(vlan)、
虚拟专用网
(vpn)


虚拟网络也可以使用两个网络来实现,这两个网络是由
ip
结构
20
和交换结构
14
组成的物理底层网络以及虚拟覆盖网络

物理底层网络的作用是提供“ip
结构”,其提供从任何物理设备
(
服务器

存储设备

路由器或交换机
)
到任何其他物理设备的单播
ip
连接

底层网络可以提供从网络中的任何点到网络中的任何其他点的统一的低延迟

非阻塞

高带宽连通性

52.如下面关于虚拟路由器
21(
被示出并且在本文也被称为“vrouter 21”)
进一步所述的,在服务器
12
中运行的虚拟路由器使用它们之间的动态“隧道”的网格在物理底层网络之上创建虚拟覆盖网络

这些覆盖隧道可以是例如通过
gre/udp
隧道

或者
vxlan
隧道,或者
nvgre
隧道的
mpls。
底层物理路由器和交换机可以不存储虚拟机或其他虚拟执行元件的任何每租户状态,诸如任何媒体访问控制
(mac)
地址
、ip
地址或策略

底层物理路由器和交换机的转发表例如可以仅包含物理服务器
12

ip
前缀或
mac
地址
。(
将虚拟网络连接到物理网络的网关路由器或交换机是例外,并且可以包含租户
mac

ip
地址
)
53.服务器
12
的虚拟路由器
21
通常包含每租户状态

例如,它们可以包含每个虚拟网络的单独的转发表
(
路由实例
)。
该转发表包含虚拟机或其他虚拟执行元件
(
例如,容器的
pod)

ip
前缀
(
在层3覆盖的情况下
)

mac
地址
(
在层2覆盖的情况下
)。
没有单个虚拟路由器
21
需要包含整个数据中心中的所有虚拟机的所有
ip
前缀或所有
mac
地址

给定的虚拟路由器
21
仅需要包含本地存在于服务器
12
上的那些路由实例
(
即,其具有至少一个存在于服务器
12
上的虚拟执行元件
)。
[0054]“基于容器”或“操作系统”虚拟化是指操作系统的虚拟化,以在单个机器
(
虚拟或物理
)
上运行多个隔离系统

此类隔离系统代表容器,诸如由开源
docker
容器应用或由
coreos rkt(“rocket”)
提供的那些容器

与虚拟机一样,每个容器被虚拟化并且可以保持与主机和其他容器隔离

然而,与虚拟机不同,每个容器可以省略单独的操作系统,而是提供应用套件和应用专用库

通常,容器由主机作为隔离的用户空间实例来执行,并且可以与主机上执行的其他容器共享操作系统和公共库

因此,容器可能比虚拟机
(“vm”)
需要更少的处理能力

存储和网络资源

一个或多个容器的组可以被配置为共享一个或多个虚拟网络接口,以便在对应的虚拟网络上通信

[0055]
在一些示例中,容器由它们的主机内核管理以允许资源
(cpu、
存储器


i/o、
网络等
)
的限制和优先化而不需要启动任何虚拟机,在一些情况下使用允许完全隔离应用
(
例如,给定容器
)
的操作环境视图的命名空间隔离功能,包括进程树

联网

用户标识符和安装的文件系统

在一些示例中,可以根据
linux
容器
(lxc)
部署容器,
linux
容器是用于使用单个
linux
内核在控制主机上运行多个隔离的
linux
系统
(
容器
)
的操作系统级虚拟化方法

[0056]
服务器
12
托管在本文由
ip
结构
20
和交换结构
14
表示的物理网络上操作的一个或多个虚拟网络的虚拟网络端点

尽管主要关于基于数据中心的交换网络进行描述,但是诸如服务提供商网络7的其他物理网络可以承载一个或多个虚拟网络

[0057]
每个服务器
12
可以托管一个或多个虚拟执行元件,每个虚拟执行元件具有用于在物理网络中配置的一个或多个虚拟网络的至少一个虚拟网络端点

虚拟网络的虚拟网络端点可表示共享该虚拟网络的虚拟网络接口的一个或多个虚拟执行元件

例如,虚拟网络端点可以是虚拟机

一个或多个容器
(
例如,
pod)
的集合

或另一虚拟执行元件,诸如用于虚拟网络的层3端点

术语“虚拟执行元件”涵盖虚拟机

容器和为应用提供至少部分独立的执行环境的其他虚拟化计算资源

术语“虚拟执行元件”也可以包含一个或多个容器的
pod。
虚拟执行元件可以表示应用工作负载

如图1所示,服务器
12a
以具有一个或多个容器的
pod 22
的形式托管一个虚拟网络端点

然而,给定服务器
12
的硬件资源限制,服务器
12
可执行与实际情况一样多的虚拟执行元件

每个虚拟网络端点可以使用一个或多个虚拟网络接口来执行数据包
i/o
或以其他方式处理数据包

例如,虚拟网络端点可以使用由
nic 13a
启用的一个虚拟硬件部件
(
例如,
sr-iov
虚拟功能
)
来在与
tor
交换机
16a
的一个或多个通信链路上执行数据包
i/o
和接收
/
发送数据包

下面描述虚拟网络接口的其他示例

[0058]
服务器
12
各自包括至少一个网络接口卡
(nic)13
,其各自包括至少一个接口以通过通信链路与
tor
交换机
16
交换数据包

例如,服务器
12a
包括
nic 13a。nic 13
中的任一个可提供用于虚拟化输入
/
输出
(i/o)
的一个或多个虚拟硬件部件
21。
用于
i/o
的虚拟硬件部件可以是物理
nic(“物理功能”)
的虚拟化

例如,在单根
i/o
虚拟化
(sr-iov)
中,其在外围设备接口特殊兴趣组
sr-iov
规范中描述,网络接口卡
(
或“网络适配器”)

pcie
物理功能被虚拟化以将一个或多个虚拟网络接口呈现为“虚拟功能”,以供在服务器
12
上执行的相应端点使用

这样,虚拟网络端点可以共享相同的
pcie
物理硬件资源,并且虚拟功能是虚拟硬件部件
21
的示例

作为另一个示例,一个或多个服务器
12
可以实现虚拟化
(virtio)
,例如对于
linux
操作系统可用的半虚拟化框架,其提供仿真的
nic
功能作为一种类型的虚拟硬件部件以向虚拟网络端点提供虚拟网络接口

作为另一个示例,一个或多个服务器
12
可实现开放
vswitch
以在所托管的虚拟机的一个或多个虚拟
nic(vnic)
之间执行分布式虚拟多层交换,其中此类
vnic
还可表示向虚拟网络端点提供虚拟网络接口的一种类型的虚拟硬件部件

[0059]
在一些实例中,虚拟硬件部件是虚拟
i/o(
例如,
nic)
部件

在一些实例中,虚拟硬件部件是
sr-iov
虚拟功能

在一些示例中,服务器
12
中的任何服务器可以实现
linux
网桥,该
linux
网桥仿真硬件网桥并且在服务器的虚拟网络接口之间或在服务器的虚拟网络接口与服务器的物理网络接口之间转发数据包

对于由服务器
、linux
网桥或在服务器上执行的其他操作系统网桥托管的容器的
docker
实现,在容器之间交换数据包可以被称为“docker
网桥”。
本文使用的术语“虚拟路由器”可以包括
contrail

tungsten
结构虚拟路由器

开放
vswitch(ovs)、ovs
网桥
、linux
网桥
、docker
网桥或位于主机设备上并且在一个或多个虚拟
网络的虚拟网络端点之间执行交换

桥接或路由数据包的其他设备和
/
或软件,其中虚拟网络端点由一个或多个服务器
12
托管

[0060]
nic 13
中的任一个可包括内部设备交换机以在与
nic
相关联的虚拟硬件部件之间交换数据

例如,对于支持
sr-iov

nic
,内部设备交换机可以是虚拟以太网网桥
(veb)
,以在
sr-iov
虚拟功能之间进行交换,并且相应地,在被配置为使用
sr-iov
虚拟功能的端点之间进行交换,其中每个端点可以包括访客操作系统

内部设备交换机可以可替代地称为
nic
交换机,或者对于
sr-iov
实现,称为
sr-iov nic
交换机


nic 13a
相关联的虚拟硬件部件可以与层2目的地地址相关联,该目的地地址可以由
nic 13a
或负责配置
nic 13a
的软件进程分配

物理硬件部件
(

sr-iov
实现的“物理功能”)
也与层2目的地地址相关联

[0061]
一个或多个服务器
12
中的每一个可以包括虚拟路由器
21
,其执行用于数据中心
10
内的对应虚拟网络的一个或多个路由实例,以提供虚拟网络接口并在虚拟网络端点之间路由数据包

每个路由实例可以与网络转发表相关联

每个路由实例可以表示用于互联网协议-虚拟专用网
(ip-vpn)
的虚拟路由转发实例
(vrf)。
由服务器
12a
的虚拟路由器
21
例如从数据中心
10
的底层物理网络结构
(
即,
ip
结构
20
和交换结构
14)
接收的数据包可以包括外报头,以允许物理网络结构将有效载荷或“内数据包”隧道传输到执行虚拟路由器的服务器
12a
的网络接口卡
13a
的物理网络地址

外报头不仅可以包括服务器的网络接口卡
13a
的物理网络地址,还可以包括虚拟网络标识符,诸如
vxlan
标签或多协议标签交换
(mpls)
标签,其标识虚拟网络中的一个以及由虚拟路由器
21
执行的相应路由实例

内数据包包括具有目的地网络地址的内部报头,该目的地网络地址符合由虚拟网络标识符所标识的虚拟网络的虚拟网络寻址空间

[0062]
虚拟路由器
21
终止虚拟网络覆盖隧道,并基于数据包的隧道封装报头来确定所接收数据包的虚拟网络,并将数据包转发到数据包的适当目的地虚拟网络端点

对于服务器
12a
,例如,对于从由服务器
12a
托管的虚拟网络端点
(
例如,
pod 22)
出站的每个数据包,虚拟路由器
21
附加指示数据包的虚拟网络的隧道封装头部以生成封装的或“隧道”数据包,并且虚拟路由器
21
经由虚拟网络的覆盖隧道将封装的数据包输出到物理目的地计算设备,诸如服务器
12
中的另一个

如本文所使用的,虚拟路由器
21
可以执行隧道技术端点的操作,以封装由虚拟网络端点源起的内数据包,以生成隧道数据包,并且解封装隧道数据包,以获得用于路由到其他虚拟网络端点的内数据包

[0063]
在一些示例中,虚拟路由器
21
可以是基于内核的,并且作为服务器
12a
的操作系统的内核的一部分来执行

[0064]
在一些示例中,虚拟路由器
21
可以是使能数据平面转发工具
(data plane development kit

dpdk)
的虚拟路由器

在这样的示例中,虚拟路由器
21
使用
dpdk
作为数据平面

在该模式下,虚拟路由器
21
作为链接到
dpdk

(
未示出
)
的用户空间应用而运行

这是虚拟路由器的性能版本,并且通常由
telco
公司使用,其中
vnf
通常是基于
dpdk
的应用

虚拟路由器
21
作为
dpdk
虚拟路由器的性能可以实现比作为基于内核的虚拟路由器操作的虚拟路由器高十倍的吞吐量

物理接口由
dpdk
的轮询模式驱动器
(pmd)
代替
linux
内核的基于中断的驱动器使用

[0065]
诸如
vfio

uio_pci_generic
的用户-i/o(uio)
内核模块可用于将物理网络接口的寄存器展露到用户空间中,以使得它们可由
dpdk pmd
访问


nic 13a
被绑定到
uio
驱动
器时,它从
linux
内核空间移动到用户空间,并且因此不再由
linux os
管理或可见

因此,是
dpdk
应用
(
即,在该示例中为虚拟路由器
21a)
完全管理
nic 13。
这包括数据包轮询

数据包处理和数据包转发

用户数据包处理步骤可以由虚拟路由器
21dpdk
数据平面执行,而由内核
(
其中内核未在图1中示出
)
参与是有限的或者没有参与

该“轮询模式”的本质使得虚拟路由器
21dpdk
数据平面数据包处理
/
转发与中断模式相比高效得多,尤其是在数据包速率高时

在数据包
i/o
期间存在有限中断和上下文切换或不存在中断和上下文切换

可以在以下找到
dpdk vrouter
的示例的附加详细信息:“day one

contrail dpdk vrouter
,”2021

kiran kn
等,
juniper networks
公司,其通过引用整体并入本文

[0066]
计算基础设施8实现用于跨服务器
12
自动化虚拟执行元件的部署

缩放和操作的自动化平台,以提供用于执行应用工作负载和服务的虚拟化基础设施

在一些示例中,平台可以是容器编排系统,其提供以容器为中心的基础设施,用于使容器的部署

缩放和操作自动化以提供以容器为中心的基础设施

在虚拟化计算基础设施的上下文中的“编排”一般是指向编排平台可用的主机服务器供应

调度和管理虚拟执行元件和
/
或在此类虚拟执行元件上执行的应用和服务

容器编排可以促进容器协调,并且涉及例如由容器编排平台将容器部署

管理

缩放和配置到主机服务器

编排平台的示例性实例包括
kubernetes(
容器编排系统
)、docker swarm、mesos/marathon、openshift、openstack、vmware

amazon ecs。
[0067]
计算基础设施8的自动化平台的元件至少包括服务器
12、
编排器
23
和网络控制器
24。
可以使用基于集群的框架将容器部署到虚拟化环境,其中集群的集群主节点管理将容器部署到集群的一个或多个集群工作节点和对集群工作节点的操作

本文使用的术语“主节点”和“工作节点”包含用于类似装置的不同编排平台术语,其在集群的主要管理元件和集群的主要容器托管装置之间进行区分

例如,
kubernetes
平台使用术语“集群主机”和“工作节点”,而
docker swarm
平台是指集群管理器和集群节点

[0068]
编排器
23
和网络控制器
24
可以在分开的计算设备上执行,在同一计算设备上执行

编排器
23
和网络控制器
24
中的每一个可以是在一个或多个计算设备上执行的分布式应用

编排器
23
和网络控制器
24
可以实现用于一个或多个集群的相应主节点,每个集群具有由相应服务器
12
实现的一个或多个工作节点
(
也称为“计算节点”)。
[0069]
通常,网络控制器
24
控制数据中心
10
结构的网络配置,以例如建立一个或多个虚拟网络,用于虚拟网络端点之间的封包通信

网络控制器
24
提供逻辑上和在一些情况下物理上集中式的控制器,以便于数据中心
10
内的一个或多个虚拟网络的操作

在一些示例中,网络控制器
24
可以响应于从编排器
23

/
或管理员
/
操作者接收的配置输入而操作


2013
年6月5日提交的命名为“physical path determination for virtual network packet flows”的国际申请号
pct/us2013/044378

2014
年3月
26
日提交的名称为“tunneled packet aggregation for virtual networks”的美国专利申请第
14/226,509
号中找到关于结合数据中心
10
的其他设备或其他软件定义网络操作的关于网络控制器
24
的示例性操作的附加信息,其每一个通过引用并入本文,如同在本文完全阐述一样

[0070]
通常,编排器
23
控制跨服务器
12
的集群的容器的部署

缩放和操作以及计算基础设施的提供,该计算基础设施可以包括以容器为中心的计算基础设施

编排器
23
以及在一些情况下的网络控制器
24
可以实现用于一个或多个
kubernetes
集群的相应集群主机

作为示例,
kubernetes
是提供跨公共和私有云的可移植性的容器管理平台,公共和私有云中的
每一个都可以向容器管理平台提供虚拟化基础设施
。kubernetes
编排系统的示例性部件在下面参考图3描述

[0071]
在一个示例中,
pod 22

kubernetes pod
和虚拟网络端点的示例
。pod
是一个或多个逻辑上相关的容器
(
图1中未示出
)、
容器的共享存储以及如何运行容器的选项的组

在被例示以便执行时,
pod
可以可替代地被称为“pod
副本”。pod 22
的每个容器是虚拟执行单元的一个示例
。pod
的容器总是共同位于单个服务器上

共同调度

以及在共享的上下文中运行
。pod
的共享上下文可以是一组
linux
命名空间
、cgroups
和隔离的其他方面

[0072]

pod
的上下文中,单独的应用可以应用另外的子隔离

通常,
pod
内的容器具有公共
ip
地址和端口空间,并且能够经由本地主机来检测彼此

因为它们具有共享的上下文,所以
pod
内的容器也使用进程间通信
(ipc)
彼此通信
。ipc
的示例包括
systemv
信号量或
posix
共享存储器

通常,作为不同
pod
的成员的容器具有不同的
ip
地址,并且在缺少用于实现该特征的配置的情况下不能通过
ipc
进行通信

作为不同
pod
的成员的容器通常改为经由
pod ip
地址相互通信

[0073]
服务器
12a
包括用于运行容器化应用
(
诸如
pod 22
的容器化应用
)
的容器平台
19。
容器平台
19
从编排器
23
接收请求以在服务器
12a
中获得和托管容器

容器平台
19
获得并执行容器

[0074]
容器网络接口
(cni)17
为虚拟网络端点配置虚拟网络接口

编排器
23
和容器平台
19
使用
cni 17
来管理包括
pod 22

pod
的联网

例如,
cni 17
创建虚拟网络接口以将
pod
连接到虚拟路由器
21
,并且使得这种
pod
的容器能够经由虚拟网络接口通过虚拟网络与其他虚拟网络端点通信
。cni 17
可以例如将用于虚拟网络的虚拟网络接口插入到用于
pod 22
中的容器的网络命名空间中,并且在虚拟路由器
21
中配置
(
或请求配置
)
用于虚拟网络的虚拟网络接口,使得虚拟路由器
21
被配置为经由虚拟网络接口将从虚拟网络接收的数据包发送到
pod 22
的容器,并且发送经由虚拟网络接口从虚拟网络上的
pod 22
的容器接收的数据包
。cni 17a
可以分配网络地址
(
例如,用于虚拟网络的虚拟
ip
地址
)
并且可以为虚拟网络接口建立路由

[0075]

kubernetes
中,默认地,所有的
pod
可以与所有其他
pod
通信,而不使用网络地址转换
(nat)。
在一些情况下,编排器
23
和网络控制器
24
创建由所有命名空间共享的服务虚拟网络和
pod
虚拟网络,从其分别分配服务和
pod
网络地址

在一些情况下,在
kubernetes
集群中引起的所有命名空间中的所有
pod
可能能够彼此通信,并且所有
pod
的网络地址可从编排器
23
指定的
pod
子网分配

当用户为
pod
创建隔离的命名空间时,编排器
23
和网络控制器
24
可以为新的隔离的命名空间创建新的
pod
虚拟网络和新的共享服务虚拟网络


kubernetes
集群中引起的隔离的命名空间中的
pod
从新
pod
虚拟网络中提取网络地址,并且用于此类
pod
的对应服务从新服务虚拟网络中提取网络地址

[0076]
cni 17
可以表示用于服务器
12a
的库

插件

模块

运行时间或其他可执行代码
。cni 17a
可至少部分地符合容器网络接口
(cni)
规范或
rkt
联网提议
。cni 17
可表示
contrail、opencontrail、multus、calico、crpd
或其他
cni。cni 17
可以替代地被称为网络插件或
cni
插件或
cni
实例

例如,可以由
multus cni
调用分开的
cni
,以便为
pod 22
建立不同的虚拟网络接口

[0077]
cni 17
可以由编排器
23
调用

为了
cni
规范的目的,容器可以被认为与
linux
网络
命名空间同义

对应于什么单元取决于特定的容器运行时间实现:例如,在诸如
rkt
的应用容器规范的实现中,每个
pod
在唯一的网络命名空间中运行

然而,在
docker
中,网络命名空间通常对于每个单独的
docker
容器而存在

为了
cni
规范的目的,网络是指一组可唯一寻址并且可以彼此通信的实体

这可以是单独的容器

机器
/
服务器
(
真实的或虚拟的
)
或一些其他网络设备
(
例如,路由器
)。
容器可以在概念上添加到一个或多个网络或从一个或多个网络移除
。cni
规范指定了用于符合插件
(“cni
插件”)
的多个考虑

[0078]
pod 22
包括一个或多个容器

在一些示例中,
pod 22
包括容器化的
dpdk
工作负载,其被设计为使用
dpdk
来加速数据包处理,例如通过使用
dpdk
库与其他部件交换数据

在一些示例中,虚拟路由器
21
可以作为容器化的
dpdk
工作负载来执行

[0079]
pod 22
配置有用于与虚拟路由器
21
发送和接收数据包的虚拟网络接口
26。
虚拟网络接口
26
可以是
pod 22
的默认接口
。pod 22
可以将虚拟网络接口
26
实现为以太网接口
(
例如,命名为“eth0”)
,而虚拟路由器
21
可以将虚拟网络接口
26
实现为
tap
接口
、virtio-用户界面或其他类型的接口

[0080]
pod 22
和虚拟路由器
21
使用虚拟网络接口
26
交换数据数据包

虚拟网络接口
26
可以是
dpdk
接口
。pod 22
和虚拟路由器
21
可以使用
vhost
建立虚拟网络接口
26。pod 22
可以根据聚合模型操作
。pod 22
可以使用虚拟设备,诸如具有
vhost
用户适配器的
virtio
设备,用于虚拟网络接口
26
的用户空间容器进程间通信

[0081]
cni 17
可以结合图1所示的一个或多个其他部件为
pod 22
配置虚拟网络接口
26。pod 22
的任何容器都可以利用
(
即,共享
)pod 22
的虚拟网络接口
26。
[0082]
虚拟网络接口
26
可以表示虚拟以太网
(“veth”)
对,其中该对的每一端是单独的设备
(
例如,
linux/unix
设备
)
,该对的一端被分配给
pod 22
,而该对的一端被分配给虚拟路由器
21。veth
对或
veth
对的端部有时被称为“端口”。
虚拟网络接口可以表示具有分配给
pod 22
和虚拟路由器
21
的媒体访问控制
(mac)
地址的
macvlan
网络,用于
pod 22
和虚拟路由器
21
的容器之间的通信

虚拟网络接口可以替代地被称为例如虚拟机接口
(vmi)、pod
接口

容器网络接口
、tap
接口
、veth
接口或简单地称为网络接口
(
在特定上下文中
)。
[0083]
在图1的示例性服务器
12a
中,
pod 22
是一个或多个虚拟网络中的虚拟网络端点

编排器
23
可以存储或以其他方式管理用于应用部署的配置数据,该配置数据指定虚拟网络并且指定
pod 22(
或其中的一个或多个容器
)
是虚拟网络的虚拟网络端点

编排器
23
可从例如用户

操作员
/
管理员或其他计算系统接收配置数据

[0084]
作为创建
pod 22
的过程的一部分,编排器
23
请求网络控制器
24
为一个或多个虚拟网络
(
在配置数据中指示
)
创建相应的虚拟网络接口

对于
pod 22
所属的每个虚拟网络,
pod 22
可以具有一不同的虚拟网络接口

例如,虚拟网络接口
26
可以是用于特定虚拟网络的虚拟网络接口

可以为其他虚拟网络配置附加的虚拟网络接口
(
未示出
)。
[0085]
网络控制器
24
处理该请求以生成用于
pod 22
的虚拟网络接口的接口配置数据

接口配置数据可以包括容器或
pod
唯一标识符和为每个虚拟网络接口指定用于配置虚拟网络接口的网络配置数据的列表或其他数据结构

虚拟网络接口的网络配置数据可以包括网络名称

分配的虚拟网络地址
、mac
地址和
/
或域名服务器值

下面是
javascript object notation(json)
格式的接口配置数据的示例

[0086]
网络控制器
24
将接口配置数据发送到服务器
12a
,更具体地说,在某些情况下,发
送到虚拟路由器
21。
为了配置
pod 22
的虚拟网络接口,编排器
23
可以调用
cni 17。cni 17
从虚拟路由器
21
获取接口配置数据并对其进行处理
。cni 17a
创建接口配置数据中指定的每个虚拟网络接口

例如,
cni 17
可以将实现管理接口
26

veth
对的一端附接到虚拟路由器
21
,并且可以将同一
veth
对的另一端附接到可以使用
virtio-用户来实现它的
pod 22。
[0087]
以下是虚拟网络接口
26

pod 22
的示例性接口配置数据

[0088]
[{
[0089]
//virtual network interface 26
[0090]
"id":"fe4bab62-a716-11e8-abd5-0cc47a698428",
[0091]
"instance-id":"fe3edca5-a716-11e8-822c-0cc47a698428",
[0092]
"ip-address":"10.47.255.250",
[0093]
"plen":12,
[0094]
"vn-id":"56dda39c-5e99-4a28-855e-6ce378982888",
[0095]
"vm-project-id":"00000000-0000-0000-0000-000000000000",
[0096]
"mac-address":"02:fe:4b:ab:62:a7",
[0097]
"system-name":"tapeth0fe3edca",
[0098]
"rx-vlan-id":65535,
[0099]
"tx-vlan-id":65535,
[0100]
"vhostuser-mode":0,
[0101]“v6-ip-address”:“::“,
[0102]“v6-plen”:,
[0103]“v6-dns-server”:“::”,
[0104]“v6-gateway”:“::”,
[0105]
"dns-server":"10.47.255.253",
[0106]
"gateway":"10.47.255.254",
[0107]
"author":"/usr/bin/contrail-vrouter-agent",
[0108]
"time":"426404:56:19.863169"
[0109]
}]
[0110]
常规
cni
插件由容器平台
/
运行时间调用,从容器平台接收
add
命令以将容器添加到单个虚拟网络,并且此类插件随后可以被调用以从容器
/
运行时间接收
del(ete)
命令并且从虚拟网络移除容器

术语“调用”可以指将存储器中的软件部件或模块例示为可执行代码以供处理电路执行

[0111]
根据本公开所述的技术,网络控制器
24
是用于软件定义网络
(software-defined networking

sdn)
的云原生分布式网络控制器,该云其使用一个或多个配置节点
30
和一个或多个控制节点
32
来实施

每个配置节点
30
本身可以使用一个或多个云原生部件微服务来实现

每个控制节点
32
本身可以使用一个或多个云原生部件微服务来实现

[0112]
在一些示例中,配置节点
30
可以通过扩展本地编排平台来实现以支持用于软件定义网络的编排平台的定制资源,并且更具体地,通过例如配置用于虚拟执行元件的虚拟网络接口

配置连接服务器
12
的底层网络

配置包括用于虚拟网络的覆盖隧道和用于多播层2和层3的覆盖树的覆盖路由功能,来提供到编排平台的北向接口以支持虚拟网络的意图驱

/
声明性创建和管理

[0113]
作为图1所示的
sdn
架构的一部分,网络控制器
24
可以是多租户感知的,并且支持用于编排平台的多租户

例如,网络控制器
24
可以支持
kubernetes
基于角色的访问控制
(rbac)
构造

本地身份访问管理
(iam)
和外部
iam
集成

网络控制器
24
还可以支持
kubernetes
定义的联网构造和高级联网特征,如虚拟联网
、bgpaas、
联网策略

服务链和其他
telco
特征

网络控制器
24
可以使用虚拟网络结构来支持网络隔离,并且支持层3联网

[0114]
为了互连多个虚拟网络,网络控制器
24
可以使用
(
并在底层和
/
或虚拟路由器
21
中配置
)
使用虚拟网络路由器
(vnr)
资源定义的引入和引出策略

虚拟网络路由器资源可以用于通过配置用于实现
sdn
架构中的虚拟网络的相应路由实例之间的路由信息的引入和引出来定义虚拟网络之间的连通性

单个网络控制器
24
可支持多个
kubernetes
集群,并且
vnr
因此允许连接命名空间中的多个虚拟网络

不同命名空间中的虚拟网络
、kubernetes
集群以及跨
kubernetes
集群
。vnr
也可以扩展为支持网络控制器
24
的多个实例之间的虚拟网络连通性
。vnr
在本文也可以可替代地被称为虚拟网络策略
(vnp)
或虚拟网络拓扑

[0115]
如图1的示例所示,网络控制器
24
可维护表示虚拟网络
(vn)50a

50n(“vn 50”)
的配置数据
(
例如,
config.30)
,该虚拟网络表示用于通过物理底层网络和
/
或虚拟路由器
(
诸如虚拟路由器
21(“vrouter 21”))
在数据中心
10
内建立
vn 50
的策略和其他配置数据

网络控制器
24
还可维护表示虚拟网络路由器
(vnr)52a

52n(“vnr 52”)
的配置数据
(
例如,
config.30)
,该虚拟网络路由器可至少部分地使用策略和其他配置数据来实现,以便建立
vn 50
之间的互连性

[0116]
诸如管理员的用户可以与网络控制器
24

ui 60
交互以定义
vn 50

vnr 52。
在一些情况下,
ui 60
表示便于输入定义
vn 50

vnr 52
的配置数据的图形用户界面
(gui)。
在其他实例中,
ui 60
可表示命令行界面
(cli)
或其他类型的界面

假设
ui 60
表示图形用户界面,则管理员可以通过将表示诸如
pod 22
等不同
pod
的图形元件布置为将
pod

vn 50
相关联来定义
vn 50
,其中
vn 50
中的任一个使能分配给
vn
的一个或多个
pod
之间的通信

[0117]
在这方面,管理员可以理解
kubernetes
或其他编排平台,但不能完全理解支持
vn 50
的底层基础设施

一些控制器架构,诸如
contrail
,可以基于与传统物理网络中的路由协议类似
(
如果不是基本上类似的话
)
的网络协议来配置
vn 50。
例如,
contrail
可以利用来自边界网关协议
(bgp)
的概念,边界网关协议是用于在所谓的自治系统
(as)
内并且有时在
as
之间传送路由信息的路由协议

[0118]
存在
bgp
的不同版本,诸如用于在
as
内传送路由信息的内部
bgp(ibgp)
和用于在
as
之间传送路由信息的外部
bgp(ebgp)。ase
可能涉及
contrail
内的项目的概念,其也类似于
kubernetes
中的命名空间


as、
项目和命名空间的每个实例中,类似项目和命名空间的
as
可以表示一个或多个网络
(
例如,
vn 50
中的一个或多个
)
的集合,其可以共享路由信息并由此促进网络
(
或者,在该实例中,
vn 50)
之间的互连性

[0119]
在最简单的形式中,
vnr 52
表示在
kubernetes
的上下文中设置的路由器的逻辑抽象,其中
vnr 52
可以被定义为便于
vn 50
之间的互连性的定制资源

假定
kubernetes
管理员可能不完全理解根据复杂的路由协议
(
诸如
bgp)
的路由信息的复杂散布,云原生联网技术的各个方面可促进作为
vnr 52
的底层路由协议
(

contrail
或其他控制器架构的补充过程
)
的抽象

[0120]
即,管理员可定义一个或多个
vnr 52
以互连
vn 50
,而不必手动开发和部署广泛的策略和
/
或路由实例配置以实现这样的
vn 50
之间的路由信息的交换,而不是采取定义在两个或更多个
vn 50
之间如何发生路由的手段

相反,管理员
(
可能对路由协议几乎没有理解
)
可使用熟悉的
kubernetes
语法
/
语义
(
或甚至仅通过拖动图形元件并指定表示例如
vnr 52a
的该图形元件与表示例如
vn 50a

50n
的图形元件之间的互连
)
来定义定制资源
(
例如,
vnr 52
中的一个或多个
)。
[0121]
在这方面,管理员可使用图1的示例中所示的逻辑抽象容易地将
vn 50
互连为
vnr 50
,于是网络控制器
24
可将
vnr 50
转换为底层路由目标,以自动
(
意味着很少或可能没有任何人为干预
)
使
vn 50a

50n
的路由信息被交换,并使
vn 50a

50n
之间能够通信
(
意味着数据包或其他数据的交换
)。
[0122]
假定管理员可以采用熟悉的
kubernetes
语法
/
语义来配置
vnr 50
,而不是配置符合路由协议语法
/
语义的复杂配置数据,网络控制器
24
可有助于更好的用户体验,同时也促进数据中心8本身的更有效的运行

即,让管理员输入这样的管理员不熟悉的配置数据可使得浪费数据中心8的底层资源
(
在处理周期

存储器

总线带宽等以及相关联的功率方面
)
的错误配置,同时还延迟网络拓扑的适当实现
(
这可阻止
vn 50
之间的数据包和其他数据的成功路由
)。
这种延迟不仅会使管理员沮丧,而且还会使与
vn 50
相关联的客户失望,这可能需要迅速操作
vn 50
以实现各种商业目标

通过使管理员能够使用被示出为
vnr 50
的逻辑抽象来容易地有助于
vn 50
之间的通信,数据中心8本身可以经历更高效的操作
(
就上述计算资源而言,包括处理器周期

存储器

总线带宽和相关联的功率
)
,同时为管理员和客户提供更好的用户体验

[0123]
网络控制器
24
,代表数据中心
10

sdn
架构系统,包括处理电路以实现配置节点和控制节点
(
如关于图3的示例更详细地描述的
)。
网络控制器
24
可被配置为互连在由数据中心
10
表示的
sdn
架构系统内操作的第一虚拟网络
(
例如,
vn 50a)
和第二虚拟网络
(
例如,
vn 50n)。
网络控制器
24
可被配置为定义一个或多个策略的逻辑抽象,以便经由一个或多个
vnr 52
,例如
vnr 52a
执行这样的互连

[0124]
策略可包括关于虚拟网络
(
在此示例中,可指
vn 50a

50n)
所维护的路由信息的引入和引出策略

即,
kubernetes
可通过代表
vnr 52a
的定制资源被扩展,以将
vnr 52a
转换成一个或多个引入和引出策略,该引入和引出策略关于
vn 50a

vn 50n
被部署,以便经由
vn 50a

vn 50n
之间的路由信息分发来配置互通

一旦被配置,
vn 50a
可将路由信息
(
例如,表示
vn 50a
的路由
)
引出到
vn 50n
,并将路由信息
(
例如,表示
vn 50n
的路由
)
引入到
vn 50a。
同样地,
vn 50n
可将路由信息
(
例如,表示
vn 50n
的路由
)
引出到
vn 50a
,并将路由信息
(
例如,表示
vn 50a
的路由
)
引入到
vn 50n。
[0125]
抽象可隐藏底层路由配置以实现这种路由泄漏,诸如定义路由信息到用于实现
vn 50a

vn 50n
的路由实例的引入和引出的路由目标

相反,网络控制器
24
可将
vnr 52a
转换为公共路由目标,并配置用于实现
vn 50a

vn 50n(
在该示例中
)
的路由实例的经由公共路由目标的路由信息的通信

[0126]
为了实现网格连通性,网络控制器
24
可以利用与
vn 50a、vn 50n

vnr 52a
相关联的路由目标来配置
vn 50a、vn 50n

vnr 52a
的路由实例的引入和引出

为了实现中心辐条式连通性,网络控制器
24
可配置与
vn 50a

vn 50n
相关联的路由实例的引出,以将路由信
息引出到与
vnr 52a(
充当中心
)
相关联的路由实例,以及配置
vnr 52a
的路由实例,以将路由信息引入到与
vn 50a

vn 50n
相关联的路由实例

在该中心辐条式连通性中,
vn 50a

vn 50n
可以不彼此直接通信

关于
vnr
的更多信息可以在
2022
年7月
29
日提交的名称为“virtual network routers for cloud native software-defined network architectures”的美国申请第
17/809,659
号中找到,其全部内容通过引用并入本文

[0127]
虽然
vnr
可以在将
vnr
抽象自动转换为底层路由配置方面降低复杂度,但是仍然难以可视化
vnr
将如何适配可以包括一个或多个
vn(
诸如
vn 50a

vn 50n)
的网络拓扑以便于
vn 50a

vn 50n
之间的连通性

这样的困难可能使得在配置诸如
vnr 52a

vnr
时的用户错误,这可能使得网络控制器
24
和由网络控制器
24
管理的底层网络的有效操作

[0128]
根据本公开所述的技术的各个方面,网络控制器
24
可以呈现
ui 60(
例如,图形用户界面,其可以被表示出为
gui 60)
,通过该
ui 60
来可视化网络的拓扑,并且通过与
gui 60
的各种交互来交互地定义诸如
vnr 52a

vnr。
添加用于抽象控制路由信息的引入和
/
或引出的策略的
vnr 52
可简化将网络元件
(
诸如
vn 50a

50n)
拼接在一起以促进此类网络元件之间的互连

本公开所述的技术的各方面可以提供
gui 60
,该
gui 60
被配置为图形地呈现可以包括各种网络元件
(
诸如
vn 50a

50n)
的网络拓扑,而不是借助于复杂的接口来定义涉及可能需要对网络构造
(
诸如路由目标

标识网络元件的标签等
)
的复杂声明的
vnr 52。
用户可以与
gui 60
接口连接以可视地配置
vnr 52a
以互连两个或更多个网络元件

[0129]
gui 60
可以接收用户输入
(
其可以被称为经由
gui 60
输入的输入
)
,诸如拖放或以其他方式定义
vnr 52a
的图形用户输入
。gui 60
可以将这些输入作为配置
vnr 52a
的请求传递给网络控制器
24。
用户可通过与
gui 60
的交互来输入,以图形地定义
vnr 52a
,选择
vn 50a

50n
以及
vnr 52a
针对其建立互连性
(
例如,网格连通性和
/
或中心辐条式连通性
)
的其他网络元件

网络控制器
24
可处理这些输入并更新
gui 60
以呈现提示和其他
gui 60
,通过该
gui 60
来提示用户定义
vnr 52a
所需的附加输入

网络控制器
24
可以将定义
vnr 52a
的这些输入减少到控制
vn 50a

50n
之间的路由信息的引入和
/
或引出的各种策略中,并且在适当的网络元件中配置策略以便于实现
vn 50a

50n
之间的互连性的路由信息的交换

[0130]
在操作中,网络控制器
24
可以本地地
(
经由本地显示器
)
呈现
gui 60。
在一些示例中,
gui 60
可以表示基于
web

gui
,网络控制器
24
可以经由客户端设备
(
诸如远程计算机或其他终端
)
远程托管该基于
web

gui
以用于显示

不管如何呈现
gui 60

gui 60
可被配置为图形地表示由软件定义网络
(sdn)
架构系统8支持的网络的拓扑

出于说明的目的,假设网络包括
vn 50a

vn 50n。
然而,网络可以包括任何数量的
vn 50
或其他网络元件

[0131]
网络控制器
24
可以维护定义网络的拓扑的配置数据
(
在图1的示例中未示出
)
,网络控制器
24
可以将其变换成网络的拓扑的图形表示

网络拓扑的图形表示可以便于查看网络的一部分或全部,其中
gui 60
可以提供过滤和其他操作,以使得用户能够以各种粒度级别查看网络拓扑的图形表示,如下面更详细描述的

[0132]
gui 60
还可以被配置为动态地生成表示
vnr 52a
的图形元件,通过其互连
vn 50a

vn 50n。gui 60
可以接收来自用户的标识
vnr 52a

vn 50a

50n
的输入,诸如指示代表
vnr
的图形元件
(
例如,图形图标
)
已被拖到可能接近

邻近和
/
或在
vn 50a

50n
中的一个或多个之上的网络拓扑上的输入
。gui 60
可以将这些输入提供回网络控制器
24
,该网络控制器
24
可以响应于这些输入

更新
gui 60
以包括关于
vnr 52a

vn 50a

50n
的信息的附加提


[0133]
gui 60(
经由网络控制器
24)
可以以这种方式迭代,直到
vnr 52a
已经以实现
vn 50a

50n
之间的连通性的方式被成功定义

网络控制器
24
可以执行配置节点
30
以在调用控制节点
32
来配置
vn 50a

50n
之前验证
vnr 52a。
一旦被成功验证,控制节点
32
就根据一个或多个策略来配置
vn 50a

50n
,以实现经由
vnr 52a

vn 50a

vn 50n
之间引入和引出路由信息中的一个或多个

[0134]
这样,根据本公开所述的技术的各个方面配置的
gui 60
可使得无经验的用户
(

sdn
架构的上下文中
)
能够定义
vnr 52
,而不需要具有网络构造
(
诸如上面列出的那些
)
的广泛知识

这样,用户可以更有效地与
gui 60
交互以定义
vnr 52
来满足企业和
/
或客户目标
。gui 60
可引导用户减少并可能消除配置
vnr 52
中的错误,同时还使用户能够查看网络的拓扑并获得对网络本身的更好理解

通过易于使用并且消除错误,
gui 60
可以减少用户定义复杂配置数据的需要,同时还避免可能使得网络控制器的低效操作
(
在计算资源方面,诸如处理周期

存储器总线带宽等,以及相关联的功率
)
的此类错误

这样,
gui 60
可以改善网络控制器自身的运行

[0135]
此外,网络控制器
24
可以使用网络策略来实现多层安全性
。kubernetes
默认行为是
pod
彼此通信

为了应用网络安全策略,由网络控制器
24
和虚拟路由器
21
实现的
sdn
架构可以通过
cni 17
作为
kubernetes

cni
来操作

对于层3,隔离发生在网络级,并且虚拟网络在
l3
操作

虚拟网络通过策略连接
。kubernetes
本地网络策略在层4提供安全性
。sdn
架构可以支持
kubernetes
网络策略
。kubernetes
网络策略在
kubernetes
命名空间边界处操作
。sdn
架构可以添加用于增强网络策略的定制资源
。sdn
架构可以支持基于应用的安全性
。(
在某些情况下,这些安全策略可以基于元标记,以便以可扩展的方式应用粒度安全策略
)。
对于层
4

sdn
架构在一些示例中可以支持与容器式安全设备和
/

istio
的集成,并且可以提供加密支持

[0136]
作为图1所示的
sdn
架构的一部分,网络控制器
24
可以支持多集群部署,这对于
telco
云和高端企业使用情况是重要的

例如,
sdn
架构可以支持多个
kubernetes
集群

集群
api
可用于支持
kubernetes
集群的生命周期管理
。kubefedv2
可用于跨
kubernetes
集群的配置节点
32
联合

集群
api

kubefedv2
是用于对支持多个
kubernetes
集群的网络控制器
24
的单个实例进行支持的可选部件

[0137]
sdn
架构可以使用
web
用户界面和遥测部件来提供对基础设施

集群和应用的洞察

遥测节点可以是云原生的并且包括微服务以支持洞察

[0138]
作为上述特征和将在本文别处所述的其他特征的结果,计算基础设施8实现作为云原生的
sdn
架构,并且可以呈现以下技术优点中的一个或多个

例如,网络控制器
24
是具有简化的安装覆盖区的云原生

轻量分布式应用

这还便于配置节点
30
和控制节点
32(
以及本公开所述的网络控制器的其他示例的任何其他部件
)
的各种部件微服务的更容易和模块化的升级

该技术还可以实现可选的云原生监视
(
遥测
)
和用户界面

使用连接到启用
dpdk

pod
的基于
dpdk
的虚拟路由器的容器的高性能数据平面

以及在一些情况下利用用于现有编排平台的配置框架
(
诸如
kubernetes

openstack)
的云原生配置管理

作为云原生架构,网络控制器
24
是用于寻址和支持多个集群的可缩放和弹性架构

在某些情况下,网络控制器
24
还可以支持关键性能指标
(kpi)
的可缩放性和性能要求

[0139]
具有诸如在本文所述的特征和技术优点的
sdn
架构可以用于实现云原生
telco
云以支持例如
5g
移动联网
(
和后续代
)
和边缘计算,以及包括例如高性能云原生应用托管的企业
kubernetes
平台
。telco
云应用正迅速向容器化的云原生方法发展
。5g
固定和移动网络正在驱动将工作负载部署为具有显著分离的微服务的需求,特别是在
5g next-gen ran(5gnr)

。5g nextgen core(5gnc)
可能被部署为与
3gpp
描述的不同部件中的每一个相对应的基于微服务的应用集合

当被视为微服务递送应用的组时,
5gnc
可能是具有复杂联网

安全性和策略要求的
pod
的高度复杂组合

对于这种使用情况,可以利用本文所述的云原生
sdn
架构,其具有用于联网

安全和策略的明确定义的构造

网络控制器
24
可以提供能够创建这些复杂结构的相关
api。
[0140]
同样,
5gnc
内的用户平面功能
(upf)
将是超高性能应用

它可以作为一组高度分布的高性能
pod
来递送

本文所述的
sdn
架构能够提供非常高的吞吐量数据平面
(
按照每部分比特
(bps

bits per section)
和每秒数据包
(pps))。
与具有最近性能增强的
dpdk
虚拟路由器
、ebpf
以及与
smartnic
的集成将有助于实现所需的吞吐量

基于
dpdk
的虚拟路由器在第
17/649,632
号美国申请中有更详细的描述,该申请在
2022
年2月1日提交,名为“containerized router with virtual networking”,通过引用将其整体并入本文

[0141]
高性能处理可能在
gilan
中也是相关的,因为工作负载从更传统的虚拟化工作负载迁移到容器化微服务


upf

gilan
服务的数据平面中,诸如
gilan
防火墙

入侵检测和预防

虚拟化
ip
多媒体子系统
(vims)
语音
/
视频等,吞吐量将是高的,并且在
bps

pps
方面都是持续的

对于
5gnc
功能的控制平面功能,诸如接入和移动性管理功能
(amf)、
会话管理功能
(smf)
等,以及对于一些
gilan
服务
(
例如,
ims)
,虽然就
bps
而言绝对业务量可能是适度的,但是小数据包的优势意味着
pps
将保持较高

在一些示例中,
sdn
控制器和数据平面提供每虚拟路由器
21
每秒数百万个数据包,如在服务器
12
上实现的


5g
无线电接入网络
(ran)
中,为了远离由传统无线电供应商提供的专有垂直集成
ran
栈,开放
ran
将多个部件中的
ran
硬件和软件解耦接,该部件包括非
rt
无线电智能控制器
(ric)、
近实时
ric、
集中式单元
(cu)
控制平面和用户平面
(cu-cp

cu-up)、
分布式单元
(du)
和无线电单元
(ru)。
软件部件部署在商品服务器架构上,必要时补充可编程加速器

本文所述的
sdn
架构可以支持
o-ran
规范

[0142]
边缘计算可能主要针对两种不同的使用情况

第一种将作为对容器化
telco
基础设施
(
例如,
5g ran、upf、
安全功能
)
的支持,第二种将用于来自
telco
以及来自诸如厂商或企业客户的第三方的容器化服务工作量

在这两种情况下,边缘计算实际上是
gilan
的特殊情况,其中流量被中断以在高度分布的位置处进行特殊处理

在许多情况下,这些位置将具有有限的资源
(
功率

冷却

空间
)。
[0143]
本文所述的
sdn
架构可以非常适合于支持非常轻量的覆盖区的要求,可以支持远离相关联的控制功能的站中的计算和存储资源,并且可以以部署工作负载和存储的方式知道位置

一些站可以具有少至一个或两个计算节点,其向高度本地化的用户或其他服务集合递送非常特定的服务集合

可能存在站的分级结构,其中中心站密集地与许多路径连接,区域站与二到四个上行链路路径多重连接,并且远程边缘站可以具有到仅一个或两个上游站的连接

[0144]
这要求
sdn
架构可以被部署的方式以及覆盖中的隧道化业务被终止并绑定到核心传输网络
(srv6、mpls

)
中的方式
(
和位置
)
的极大灵活性

同样地,在托管
telco
云基础设
施工作负载的站中,本文所述的
sdn
架构可以支持高性能工作负载所需的专用硬件
(gpu、smartnic

)。
还可能存在需要
sr-iov
的工作负载

这样,
sdn
架构还可以支持在
tor
处创建
vtep
并且将其链接回覆盖作为
vxlan。
[0145]
预期将存在全分布式
kubernetes
微集群的混合,其中每个站运行其自己的主设备,并且
sdn
架构可以支持类似远程计算的场景

[0146]
对于涉及企业
kubernetes
平台的用例,高性能云原生应用为金融服务平台

在线游戏服务和托管的应用服务提供商提供动力

递送这些应用的云平台必须提供高性能

对故障的弹性

以及高安全性和可见性

在这些平台上托管的应用往往是内部开发的

应用开发者和平台所有者与基础设施团队合作以部署和操作组织的应用的实例

这些应用往往需要高吞吐量
(

20gbps
每服务器
)
和低时延

一些应用还可以使用多播用于信令或有效载荷业务

可以利用附加的硬件和网络基础设施来确保可用性

应用和微服务将利用集群内的命名空间来进行分区

命名空间之间的隔离在高安全性环境中是关键的

尽管默认拒绝策略是零信任应用部署环境中的标准态势,但是使用虚拟路由和转发实例
(vrf)
的附加网络分段添加了附加的安全层并且允许使用重叠的网络范围

重叠的网络范围是被管理的应用托管环境的关键要求,其倾向于在所有被管理的客户的一组可达端点上标准化

[0147]
复杂的基于微服务的应用倾向于利用复杂的网络过滤

本文所述的
sdn
架构可以递送按比例过滤的高性能防火墙

这样的过滤可以表现出一致的转发性能,具有较小的延迟降级,而不管规则集长度或顺序

一些客户可能还具有一些与
telcos
相同的关于应用分离的管理压力,不仅在网络层,而且在内核中

金融以及其他方面都要求数据平面加密,特别是当在公共云上运行时

在一些示例中,本文所述的
sdn
架构可以包括用于满足这些要求的特征

[0148]
在一些示例中,当
sdn
架构通过应用
dev/test/stage/prod
连续集成
/
连续开发
(ci/cd)
流水线被自动化时,
sdn
架构可以提供
gitops
友好的
ux
用于每天若干次

甚至每天数百次的生产中进行改变的严格改变管理控制

审计和可靠性

[0149]
图2是图示了根据本公开的技术的用于云原生联网的云原生
sdn
架构的示例的框图
。sdn
架构
200
以抽象各种部件之间的底层连通性的方式示出

在该示例中,
sdn
架构
200
的网络控制器
24
包括配置节点
230a

230n(“配置节点”或“config nodes”,统称为“配置节点
230”)
和控制节点
232a

232k(
统称为“控制节点
232”)。
配置节点
230
和控制节点
232
可以分别表示图1的配置节点
30
和控制节点
32
的示例性实施方式

配置节点
230
和控制节点
232
虽然被图示为与服务器
12
分离,但是可以作为服务器
12
上的一个或多个工作负载来执行

[0150]
配置节点
230
提供北向

表述性状态转移
(rest)
接口,以支持
sdn
架构
200
的意图驱动配置

可用于将意图推送到配置节点
230
的示例平台和应用包括虚拟机编排器
240(
例如,
openstack)、
容器编排器
242(
例如,
kubernetes)、
用户界面
242
或其他一个或多个应用
246。
在一些示例中,
sdn
架构
200
具有
kubernetes
作为其基础平台

[0151]
sdn
架构
200
被划分为配置平面

控制平面和数据平面,以及可选的遥测
(
或分析
)
平面

配置平面用水平可伸缩配置节点
230
实现,控制平面用水平可伸缩控制节点
232
实现,并且数据平面用计算节点实现

[0152]
在高等级,配置节点
230
使用配置存储
224
来管理
sdn
架构
200
的配置资源的状态

通常,配置资源
(
或更简单地“资源”)
是命名对象模式,其包括描述定制资源的数据和
/
或方
法,并且定义应用编程接口
(api)
以通过
api
服务器创建和操纵数据

一种是对象模式的命名

配置资源可以包括
kubernetes
原生资源,诸如
pod、
入口
(ingress)、
配置图
(configmap)、
服务
(service)、
角色
(role)、
命名空间
(namespace)、
节点
(node)、
网络策略
(networkpolicy)
或负载均衡器
(loadbalancer)。
[0153]
配置资源还可以包括定制资源,其用于通过定义在
kubernetes
平台的默认安装中可能不可用的应用程序接口
(api)
来扩展
kubernetes
平台


sdn
架构
200
的示例中,定制资源可描述
sdn
架构
200
的物理基础设施

虚拟基础设施
(
例如,
vn 50

/

vnr 52)、
配置和
/
或其他资源

作为配置和操作
sdn
架构
200
的一部分,可以例示各种定制资源
(
例如,
vrouter 21
内的
vnr 52)。
例示的资源
(
无论是原生的还是定制的
)
可以被称为对象或资源的实例,它们是
sdn
架构
200
中的持久实体,表示
sdn
架构
200
的意图
(
期望状态
)
和状况
(
实际状态
)。
[0154]
配置节点
230
提供用于对配置存储
224
中的
sdn
架构
200
的配置资源执行操作
(
即,创建

读取

更新和删除
)
的聚合的
api。
负载均衡器
226
表示在配置节点
230
之间负载均衡配置请求的一个或多个负载均衡器对象

配置存储
224
可以表示一个或多个
etcd
数据库

可以使用
nginx
来实现配置节点
230。
[0155]
sdn
架构
200
可以为
openstack

kubernetes
提供联网
。openstack
使用插件架构来支持联网

利用作为
openstack
的虚拟机编排器
240

openstack
联网插件驱动器将
openstack
配置对象转换为
sdn
架构
200
配置对象
(
资源
)。
计算节点运行
openstack nova
以产生虚拟机

[0156]
对于作为
kubernetes
的容器编排器
242

sdn
架构
200
用作
kubernetes cni。
如上所述,可以支持
kubernetes
原生资源
(pod、
服务

入口

外部负载均衡器等
)
,并且
sdn
架构
200
可以支持
kubernetes
的定制资源以用于
sdn
架构
200
的高级联网和安全性

[0157]
配置节点
230
向控制节点
232
提供
rest
监视以监视配置资源改变,该控制节点
232
在计算基础设施内起作用

控制节点
232
通过监视资源从配置节点
230
接收配置资源数据,并构建完整的配置图

控制节点
232
中的给定控制节点消耗与控制节点相关的配置资源数据,并经由到虚拟路由器
21
的控制平面方面
(
即,虚拟路由器代理-图1中未示出
)
的控制接口
254
将所需的配置分发到计算节点
(
服务器
12)。
任何计算节点
232
可以仅接收作为处理所需的部分图

控制接口
254
可以是
xmpp。
部署的配置节点
230
和控制节点
232
的数量可以是支持的集群数量的函数

为了支持高可用性,配置平面可以包括
2n 1
个配置节点
230

2n
个控制节点
232。
[0158]
控制节点
232
在计算节点之间分配路由

控制节点
232
使用
ibgp
在控制节点
232
之间交换路由,并且控制节点
232
可以与任何外部
bgp
支持的网关或其他路由器对等

控制节点
232
可以使用路由反射器

[0159]
pod 250
和虚拟机
252
是可由虚拟机编排器
240
或容器编排器
242
部署到计算节点并由
sdn
架构
200
使用一个或多个虚拟网络互连的工作负载的示例

[0160]
用户界面
244
可表示
ui 60
的示例

如下面更详细描述的,用户界面
244
可以呈现网络拓扑的图形表示

网络可以包括两个或更多个
vn
,诸如
vn 50a

vn 50n。
用户界面
244
可表示呈现各种界面元件的图形用户界面
(
并且因此可被称为图形用户界面-gui-244)
的示例,该各种界面元件诸如按钮

滑块

选择器

可拖动界面元件
(
诸如图形图标
)
等,通过该各种界面元件定义
vnr
,诸如
vnr 52a
,通过该
vnr
互连两个或更多个
vn。
[0161]
图3是根据本公开的技术,更详细地图示了
sdn
架构
200
的部件的另一视图的框图

配置节点
230、
控制节点
232
和用户界面
244
被图示为具有它们各自的部件微服务,用于将网络控制器
24

sdn
架构
200
实现为云原生
sdn
架构

可以向计算节点部署部件微服务中的每一个

[0162]
图3图示了被分成网络控制器
24、
用户界面
244、
计算
(
服务器
12)
和遥测
260
特征的单个集群

如上所述,用户界面
244
可以表示
ui 60
的示例

配置节点
230
和控制节点
230
一起形成网络控制器
24。
[0163]
配置节点
230
可以包括部件微服务
api
服务器
300(
或“kubernetes api
服务器
300
”‑
对应的控制器
406
未在图3中示出
)、
定制
api
服务器
301、
定制资源控制器
302、
以及
sdn
控制器管理器
303(
有时被称为“kube-管理器”或“sdn kube-管理器”,其中用于网络控制器
24
的编排平台是
kubernetes)。contrail-kube-管理器是
sdn
控制器管理器
303
的一个示例

配置节点
230
扩展
api
服务器
300
与定制
api
服务器
301
接口,以形成支持
sdn
架构
200
的数据模型的聚合层
。sdn
架构
200
配置意图可以是定制资源,如上所述

[0164]
控制节点
232
可以包括部件微服务控制
320
和核心
dns 322。
控制
320
执行配置分发和路由学习和分发,如以上参考图2所述

[0165]
计算节点由服务器
12
表示

每个计算节点包括虚拟路由器代理
316
和虚拟路由器转发部件
(vrouter
,v路由器
)318。
虚拟路由器代理
316

vrouter 318
中的一个或两个可以是部件微服务

通常,虚拟路由器代理
316
执行控制相关功能

虚拟路由器代理
316
从控制节点
232
接收配置数据,并将该配置数据转换为
vrouter 318
的转发信息

虚拟路由器代理
316
还可以执行防火墙规则处理

设置
vrouter 318
的流

以及与编排插件
(
用于
kubernetes

cni
和用于
openstack

nova
插件
)
接口

虚拟路由器代理
316
在工作负载
(pod

vm)
被带到计算节点上时生成路由,并且虚拟路由器
316
与控制节点
232
交换这样的路由以用于分发到其他计算节点
(
控制节点
232
使用
bgp
在控制节点
232
之间分发路由
)。
虚拟路由器代理
316
还在工作负载终止时撤销路由
。vrouter 318
可以支持一个或多个转发模式,诸如内核模式
、dpdk、smartnic
卸载等等

在容器架构或虚拟机工作负载的一些示例中,计算节点可以是
kubernetes
工作器
/
工作节点或
openstack nova-计算节点,这取决于使用的特定编排器

[0166]
一个或多个可选的遥测节点
260
提供度量

警报

日志和流分析
。sdn
架构
200
遥测利用云原生监视服务,诸如
promethyus、elastic、fluentd、kinaba

(efk)

influx tsdb。
配置节点
230、
控制节点
232、
计算节点

用户界面
244
和分析节点
(
未示出
)

sdn
架构部件微服务可以产生遥测数据

该遥测数据可由遥测节点
260
的服务消耗

遥测节点
260
可以为用户展露
rest
端点,并且可以支持洞察和事件相关性

[0167]
可选的用户界面
244
包括
web
用户界面
(ui)306

ui
后端
308
服务

通常,用户界面
244

sdn
架构部件提供配置

监视

可视化

安全性和故障排除

此外,用户界面
244(
如上所述,其也可称为
gui 244)
可呈现网络拓扑的图形表示

网络可以包括两个或更多个
vn
,诸如
vn 50a

vn 50n。gui 244
可呈现各种界面元件,例如按钮

滑块

选择器

可拖动界面元件
(
诸如图形图标
)
等,通过这些界面元件定义
vnr
,诸如
vnr 52a
,通过
vnr
互连两个或更多个
vn。
[0168]
gui 244
可以接收来自用户的输入,并将输入传递到网络控制器
24
,其可以处理更新
gui 244
的请求

例如,如以下更详细地描述的,
gui 244
可更新
gui 244
以包括弹出框


窗口

附加的框

输入

对话框和其他界面元件,通过它们来提示用户关于
vnr 52a
的附加配置详细信息

在一些实例中,用户可与网络的拓扑的图形表示对接,以响应于由对
gui 244
的更新呈现的提示来选择
vn 50a

50n。
在任何情况下,
gui 244
可使相对没有经验的用户能够以图形和直观的方式配置
vnr 52a
,而不必指定符合正式配置语言和
/
或需要路由协议以及其他低级网络概念的广泛知识的复杂配置语句

[0169]
遥测
260、
用户界面
244、
配置节点
230、
控制节点
232
和服务器
12/
计算节点中的每一个可以被认为是
sdn
架构
200
节点,因为这些节点中的每一个是实现配置

控制或数据平面的功能性的实体,或者
ui
和遥测节点的功能性的实体

节点缩放在“建立”期间被配置,并且
sdn
架构
200
支持使用编排系统运营商
(
诸如
kubernetes
运营商
)

sdn
架构
200
节点的自动缩放

[0170]
如上所述,
sdn
架构
200
配置意图可以是定制资源

一个这样的定制资源可包括
vnr 52(
图1的示例中所示
)
,通过其以上述方式在两个或更多个
vn 50
之间建立通信

如上所述,
vnr 52
可以表示用于配置
vnr 50
之间的路由信息的引入和引出的策略的逻辑抽象,由此
vnr 52
可以使用为
vnr 52
中的每一个建立的公共路由目标来促进路由信息的交换
(
指的是非对称或对称的引入和引出
)。
公共路由目标可被定义并与用于实现
vn 50
的路由实例相关联

[0171]
管理员
(
诸如
kubernetes
管理员
)
可与用户界面
244(
例如,
web ui 306)
对接,以可能经由具有表示
pod、vn 50
等的图形元件的图形用户界面来定义
vnr 52。
为了定义
vnr 52
,管理员可将
vnr 52
与分配给
vn 50
的一个或多个标签相关联

使用这些标签,
vnr 52
可以建立去往和来自在例示
vnr 52
时创建的公共路由目标的引入和引出策略
。web ui 306
可以与配置控制器
230
对接以创建公共路由目标,经由控制节点
232
将公共路由目标安装到一个或多个虚拟路由器
318

。web ui 306
还可经由配置控制器
230
和控制节点
232
定义用于公共路由目标的路由实例
(
以将公共路由目标与其他公共路由目标区分
)
,利用该路由域来促进
vn 50
之间的互连,如将在下面关于多个不同的联网方案更详细地描述的

[0172]
图4是图示了根据本公开的技术的
sdn
架构的示例性部件的框图

在该示例中,
sdn
架构
400
扩展并使用
kubernetes api
服务器用于实现用户对于网络配置的意图的网络配置对象


kubernetes
术语中,这样的配置对象被称为定制资源,并且当在
sdn
架构中持久保存时被简单地称为对象

配置对象主要是用户意图
(
例如,虚拟网络-诸如
vn 50、vnr 52、bgpaas、
网络策略

服务链等
)。
[0173]
sdn
架构
400
配置节点
230
可以使用
kubernetes api
服务器用于配置对象


kubernetes
术语中,这些被称为定制资源

[0174]
kubernetes
提供了向集群添加定制资源的两种方式:
[0175]
·
定制资源定义
(crd)
是简单的并且可以在没有任何编程的情况下创建

[0176]
·
api
聚合要求编程但允许对
api
行为的更多控制,诸如如何存储数据和在
api
版本之间转换

[0177]
聚合的
api
是位于充当代理的主
api
服务器后面的从属
api
服务器

这种布置被称为
api
聚合
(api aggregation

aa)。
对于用户,简单地显示
kubernetes api
被扩展
。crd
允许用户在不添加另一
api
服务器的情况下创建新类型的资源

不管它们如何安装,新资源被称为定制资源
(cr)
以将它们与原生
kubernetes
资源
(
例如,
pod)
区分开
。crd
用于初始
config
原型

该架构可使用
api
服务器构建器
alpha
库来实现聚合的
api。api
服务器构建器是用于构建原生
kubernetes
聚合扩展的库和工具的集合

[0178]
通常,
kubernetes api
中的每个资源需要处理
rest
请求并管理对象的持久存储的代码


kubernetes api
服务器
300(

api
服务器微服务
300a

300j
实现
)
处理原生资源,并且还可以通过
crd
一般地处理定制资源

聚合的
api 402
表示扩展
kubernetes api
服务器
300
以允许通过编写和部署定制
api
服务器
301(
使用定制
api
服务器微服务
301a

301m)
来为定制资源提供专门实施方式的聚合层


api
服务器
300
将对定制资源的请求委托给定制
api
服务器
301
,从而使这些资源对其所有客户端都可用

[0179]
这样,
api
服务器
300(
例如,
kube-apiserver)
接收
kubernetes
配置对象

原生对象
(pod、
服务
)
和定制资源
。sdn
架构
400
的定制资源可以包括配置对象,当
sdn
架构
400
中的配置对象的预期状态被实现时,该配置对象实现
sdn
架构
400
的预期网络配置,包括将每个
vnr 52
实现为一个或多个引入策略和
/
或一个或多个引出策略以及公共路由目标
(
和路由实例
)。
如上所述,在
sdn
架构
400
内的
vnr 52
可导致如下文更详细描述的互连两个或更多个
vn 50
的引入和
/
或引出策略

[0180]
在这方面,定制资源可以对应于传统上为网络配置定义的配置模式,但是根据本公开的技术,定制资源被扩展为可通过聚合的
api 402
来操作

这种定制资源在本文中可替代地称为“用于
sdn
架构配置的定制资源”。
这些可以包括
vn、vnr、bgp-as-a-service(bgpaas)、
子网

虚拟路由器

服务实例

项目

物理接口

逻辑接口

节点

网络
ipam、
浮动
ip、
警报

别名
ip、
访问控制列表

防火墙策略

防火墙规则

网络策略

路由目标

路由实例

用于
sdn
架构配置的定制资源可以对应于通常由
sdn
控制器展露的配置对象,但是根据本文所述的技术,配置对象被展露出为定制资源,并且与
kubernetes
原生
/
内置资源一起合并以支持由聚合的
api 402
展露的统一意图模型,该模型由
kubernetes
控制器
406a

406n
和由定制资源控制器
302(
在图4中用部件微服务
302a

302l
示出
)
实现,该定制资源控制器用于协调包括网络元件的计算基础设施的实际状态与意图状态

[0181]
给定在展露与
kubernetes
原生
/
内置资源一起合并的定制资源方面的统一性质,
kubernetes
管理员
(
或其他
kubernetes
用户
)
可使用公共
kubernetes
语义定义
vnr
,诸如
vnr 52
,其然后可被转换成详述路由信息的引入和引出的复杂策略,以促进
vn 50
的互连,而不需要对
bgp
和互连
vn 50
通常所需的其他路由协议的任何理解

因此,本技术的各个方面可以提升更统一的用户体验,这潜在地使得更少的错误配置和试错,这可以改进
sdn
架构
400
自身的执行
(
在利用更少的处理周期

存储器

带宽等以及相关联的功率方面
)。
[0182]
api
服务器
300
聚合层将
api
定制资源发送到它们相应的注册的定制
api
服务器
300。
可以有多个定制
api
服务器
/
定制资源控制器来支持不同类型的定制资源

定制
api
服务器
300
处理
sdn
架构配置的定制资源并写入到可以是
etcd
的配置存储
304。
定制
api
服务器
300
可以是主机并展露定制资源控制器
302
可能需要的
sdn
控制器标识符分配服务

[0183]
定制资源控制器
302
开始应用商业逻辑以达到具有用户意图配置的用户意图

业务逻辑被实现为协调环

图8是图示了根据本公开的技术的用于
sdn
架构配置的定制资源的定制控制器的实例的框图

定制控制器
814
可以表示定制资源控制器
301
的示例性实例

在图8所示的示例中,定制控制器
814
可以与定制资源
818
相关联

定制资源
818
可以是针对
sdn
架构配置的任何定制资源

定制控制器
814
可以包括协调器
816
,该协调器
816
包括用于执行
协调循环的逻辑,其中定制控制器
814
观察
834(
例如,监视
)
定制资源
818
的当前状态
832。
响应于确定期望状态
836
与当前状态
832
不匹配,协调器
816
可执行动作以调整
838
定制资源的状态,使得当前状态
832
与期望状态
836
匹配
。api
服务器
300
可以接收请求,并且将该请求中继到定制
api
服务器
301
,以将定制资源
818
的当前状态
832
改变为期望状态
836。
[0184]

api
请求
301
是针对定制资源的创建请求的情况下,协调器
816
可作用于定制资源的实例数据的创建事件

协调器
816
可以为请求的定制资源依赖的定制资源创建实例数据

作为示例,边缘节点定制资源可以依赖于虚拟网络定制资源

虚拟接口定制资源和
ip
地址定制资源

在该示例中,当协调器
816
接收到边缘节点定制资源的创建事件时,协调器
816
还可以创建边缘节点定制资源依赖的定制资源,例如虚拟网络定制资源

虚拟接口定制资源和
ip
地址定制资源

[0185]
默认地,定制资源控制器
302
运行主动-被动模式,并且使用主选来实现一致性

当控制器
pod
开始时,它试图使用指定的关键在
kubernetes
中创建
configmap
资源

如果创建成功,则
pod
成为主并开始处理协调请求;否则,它会阻止试图在无限循环中创建
configmap。
[0186]
定制资源控制器
302
可以跟踪它创建的定制资源的状态

例如,虚拟网络
(virtual network

vn)
创建路由实例
(routing instance

ri)
,该路由实例创建路由目标
(route target

rt)。
如果路由目标的创建失败,则路由实例状态被降级,并且因此虚拟网络状态也被降级

定制资源控制器
302
因此可以输出指示这些定制资源的状态的定制消息,用于故障排除

同样,
vnr
创建
ri
,该
ri
以与以上关于
vn
所讨论的方式类似的方式创建
rt。
图9图示了在对不同的定制资源类型具有依赖性的定制资源类型中的创建

监视和协调的示例性流程

[0187]
由配置节点
230
实现的配置平面具有高可用性

配置节点
230
可以基于
kubernetes
,包括
kube-apiserver
服务
(
例如,
api
服务器
300)
和存储后端
etcd

(
例如,配置存储
304)。
有效地,由配置节点
230
实现的聚合的
api 402
作为由控制节点
232
实现的控制平面的前端运行
。api
服务器
300
的主要实施方式是
kube-apiserver
,其被设计成通过部署更多实例来水平缩放

如所示,
api
服务器
300
的若干实例可运行以使
api
请求和处理负载均衡

[0188]
配置存储
304
可以实现为
etcd。etcd
是用作集群数据的
kubernetes
后备存储的一致且高度可用的键值存储

[0189]
在图4的示例中,
sdn
架构
400
的服务器
12
各自包括编排代理
420
和容器化
(
或“云原生”)
路由协议守护进程
324。
以下进一步详细描述
sdn
架构
400
的这些部件

[0190]
sdn
控制器管理器
303
可以作为
kubernetes
核心资源
(
服务

命名空间
、pod、
网络策略

网络附件定义
)
和扩展的
sdn
架构资源
(virtualnetwork、routinginstance

)
之间的接口来操作
。sdn
控制器管理器
303
监视
kubernetes api
以寻找
kubernetes
核心和用于
sdn
架构配置的定制资源两者上的改变,并且因此可以对相关资源执行
crud
操作

[0191]
在一些示例中,
sdn
控制器管理器
303
是一个或多个
kubernetes
定制控制器的集合

在一些示例中,在单或多集群部署中,
sdn
控制器管理器
303
可以在其管理的
kubernetes
集群上运行

[0192]
sdn
控制器管理器
303
针对以下
kubernetes
对象监听创建

删除和更新事件:
[0193]
·
pod
[0194]
·
服务
[0195]
·
节点多口
[0196]
·
入口
[0197]
·
端点
[0198]
·
命名空间
[0199]
·
部署
[0200]
·
网络策略
[0201]
当生成这些事件时,
sdn
控制器管理器
303
创建适当的
sdn
架构对象,其进而被定义为用于
sdn
架构配置的定制资源

响应于检测到定制资源的实例上的事件,不管是由
sdn
控制器管理器
303
例示还是通过定制
api
服务器
301
例示,控制节点
232
获得用于定制资源的实例的配置数据,并配置
sdn
架构
400
中的配置对象的对应实例

[0202]
例如,
sdn
控制器管理器
303
监视
pod
创建事件,并且作为响应,可以创建以下
sdn
架构对象:
virtualmachine(
工作负载
/pod)、virtualmachineinterface(
虚拟网络接口
)

instanceip(ip
地址
)。
然后,在这种情况下,控制节点
232
可以在选择的计算节点中例示
sdn
架构对象

[0203]
作为示例,基于监视,控制节点
232a
可检测由客户
api
服务器
301a
展露的第一定制资源的实例上的事件,其中第一定制资源用于配置
sdn
架构系统
400
的某个方面并且对应于
sdn
架构系统
400
的配置对象的类型

例如,配置对象的类型可以是与第一定制资源对应的防火墙规则

响应于该事件,控制节点
232a
可以获得防火墙规则实例的配置数据
(
例如,防火墙规则规范
)
并且在用于服务器
12a
的虚拟路由器中提供防火墙规则

配置节点
230
和控制节点
232
可以利用
sdn
架构的相应类型的配置对象,诸如虚拟网络

虚拟网络路由器
、bgp-as-a-service(bgpaas)、
子网

虚拟路由器

服务实例

项目

物理接口

逻辑接口

节点

网络
ipam、
浮动
ip、
警告

别名
ip、
访问控制列表

防火墙策略

防火墙规则

网络策略

路由目标

路由实例等,对其他定制资源执行类似的操作

[0204]
图5是根据本公开所述的技术的示例性计算设备的框图

图2的计算设备
500
可以表示真实或虚拟服务器,并且可以表示任何服务器
12
的示例性实例,并且可以被称为计算节点


/
工作节点或主机

在该示例中,计算设备
500
包括耦接计算设备
500
硬件环境的硬件部件的总线
542。
总线
542
将网络接口卡
(nic)530、
存储盘
546
和一个或多个微处理器
210(
在下文中,“微处理器
510”)
耦接
。nic 530
可以具有
sr-iov
能力

在一些情况下,前端总线可以耦接微处理器
510
和存储器设备
524。
在一些示例中,总线
542
可以耦接存储器设备
524、
微处理器
510

nic 530。
总线
542
可以表示外围部件接口
(pci)express(pcie)
总线

在一些示例中,直接内存访问
(dma)
控制器可以控制耦接到总线
542
的部件之间的
dma
传输

在一些示例中,耦接到总线
542
的部件控制耦接到总线
542
的部件之间的
dma
传输

[0205]
微处理器
510
可包括一个或多个处理器,每个处理器包括独立的执行单元以执行符合指令集架构的指令,指令被存储到存储介质

执行单元可以被实现为单独的集成电路
(ic)
,或者可以被组合在一个或多个多核处理器
(
或“众核”处理器
)
内,其中每个多核处理器使用单个
ic(
即,芯片多处理器
)
来实现

[0206]

546
表示计算机可读存储介质,其包括以用于存储诸如处理器可读指令

数据结


程序模块或其他数据的信息的任何方法或技术实现的易失性和
/
或非易失性

可移动和
/
或不可移动介质

计算机可读存储介质包括但不限于随机存取存储器
(ram)、
只读存储器
(rom)、eeprom、
闪存
、cd-rom、
数字多功能盘
(dvd)
或其他光学存储装置

磁带盒

磁带

磁盘存储装置或其他磁性存储设备

或者可用于存储期望信息并且可由微处理器
510
访问的任何其他介质

[0207]
主存储器
524
包括一个或多个计算机可读存储介质,其可以包括随机存取存储器
(ram)
,诸如各种形式的动态
ram(dram)
,诸如
ddr2/ddr3 sdram
,或者静态
ram(sram)、
闪存,或者可以用于携带或存储指令或数据结构形式的期望的程序代码和程序数据并且可以由计算机访问的任何其他形式的固定或可移动存储介质

主存储器
524
提供由可寻址存储器位置组成的物理地址空间

[0208]
网络接口卡
(nic)530
包括被配置为使用底层物理网络的链路来交换数据包的一个或多个接口
532。
接口
532
可以包括具有一个或多个网络端口的端口接口卡
。nic 530
还可包括卡上存储器,以例如存储数据包数据
。nic 530
和耦接到总线
542
的其他设备之间的直接存储访问传输可以从
nic
存储器读取
/

nic
存储器写入

[0209]
存储器
524、nic 530、
存储盘
546
和微处理器
510
可以为软件栈提供操作环境,该软件栈包括在内核空间中执行的操作系统内核
580。
内核
580
可以表示例如
linux、berkeley
软件分布
(bsd)、
另一
unix
变体内核或可从微软公司获得的
windows
服务器操作系统内核

在一些实例中,操作系统可以执行管理程序和由管理程序管理的一个或多个虚拟机

示例管理程序包括用于
linux
内核的基于内核的虚拟机
(kvm)、xen、
可从
vmware
获得的
esxi、
可从
microsoft
获得的
windows hyper-v
和其他开放源和专有管理程序

术语管理程序可以包括虚拟机管理器
(vmm)。
包括内核
580
的操作系统为用户空间
545
中的一个或多个进程提供执行环境

[0210]
内核
580
包括物理驱动器
525
以使用网络接口卡
530。
网络接口卡
530
还可实现
sr-iov
以实现在诸如容器
529a
或一个或多个虚拟机
(
图5中未示出
)
等一个或多个虚拟执行元件之间共享物理网络功能
(i/o)。
诸如虚拟功能等共享虚拟设备可提供专用资源,以使得每个虚拟执行元件可访问
nic 530
的专用资源,因此其对于每个虚拟执行元件表现为专用
nic。
虚拟功能可以表示与物理驱动器
525
所使用的物理功能以及与其他虚拟功能共享物理资源的轻量
pcie
功能

对于支持
sr-iov

nic 530

nic 530
可以具有根据
sr-iov
标准的数千个可用的虚拟功能,但是对于
i/o
密集型应用,所配置的虚拟功能的数量通常小得多

[0211]
计算设备
500
可以耦接到物理网络交换结构,该物理网络交换结构包括将交换结构从物理交换机扩展到耦接到交换结构的物理服务器的软件或“虚拟”路由器的覆盖网络,包括虚拟路由器
506。
虚拟路由器可以是由物理服务器
(
例如,图1的服务器
12)
执行的进程或线程或其部件,其动态地创建和管理可用于虚拟网络端点之间的通信的一个或多个虚拟网络

在一个示例中,虚拟路由器使用覆盖网络来实现每个虚拟网络,其提供将端点的虚拟地址从该端点正在其上执行的服务器的物理地址
(
例如,
ip
地址
)
解耦的能力

[0212]
每个虚拟网络可以使用其自己的寻址和安全方案,并且可以被视为与物理网络及其寻址方案正交

可以使用各种技术来通过物理网络在虚拟网络内和跨虚拟网络传输数据包

本文使用的术语“虚拟路由器”可以包括
openvswitch(ovs)、ovs
网桥
、linux
网桥
、docker
网桥或位于主机设备上并且在一个或多个虚拟网络的虚拟网络端点之间执行交换

桥接或路由数据包的其他设备和
/
或软件,其中虚拟网络端点由一个或多个服务器
12
托管

在图5的示例性计算设备
500
中,虚拟路由器
506
在用户空间内作为基于
dpdk
的虚拟路由器执行,但是在各种实现中,虚拟路由器
506
可以在管理程序

主机操作系统

主机应用或虚拟机内执行

[0213]
虚拟路由器
506
可以替换和包含通常用于
pod 502

kubernetes
部署的
linux
网桥
/ovs
模块的虚拟路由
/
桥接功能

虚拟路由器
506
可以为虚拟网络执行桥接
(
例如,
e-vpn)
和路由
(
例如,
l3vpn、ip-vpn)。
虚拟路由器
506
可以执行联网服务,诸如应用安全策略
、nat、
多播

镜像和负载均衡

[0214]
虚拟路由器
506
可以作为内核模块或作为用户空间
dpdk
进程来执行
(
本文在用户空间
545
中示出了虚拟路由器
506)。
虚拟路由器代理
514
也可在用户空间中执行

在示例性计算设备
500
中,虚拟路由器
506
在用户空间内作为基于
dpdk
的虚拟路由器执行,但是在各种实现中,虚拟路由器
506
可以在管理程序

主机操作系统

主机应用或虚拟机内执行

虚拟路由器代理
514
具有使用信道到网络控制器
24
的连接,其用于下载配置和转发信息

虚拟路由器代理
514
将该转发状态编程到由虚拟路由器
506
表示的虚拟路由器数据
(
或“转发”)
平面

虚拟路由器
506
和虚拟路由器代理
514
可以是进程

虚拟路由器
506
和虚拟路由器代理
514
是容器化的
/
云原生的

[0215]
虚拟路由器
506
可以替换和包含通常用于
pod 502

kubernetes
部署的
linux
网桥
/ovs
模块的虚拟路由
/
桥接功能

虚拟路由器
506
可以为虚拟网络执行桥接
(
例如,
e-vpn)
和路由
(
例如,
l3vpn、ip-vpn)。
虚拟路由器
506
可以执行联网服务,诸如应用安全策略
、nat、
多播

镜像和负载均衡

[0216]
虚拟路由器
506
可以是多线程的,并在一个或多个处理器核上执行

虚拟路由器
506
可以包括多个队列

虚拟路由器
506
可以实现数据包处理流水线

虚拟路由器代理
514
可以根据要应用于数据包的操作,以从最简单到最复杂的方式来拼接流水线

虚拟路由器
506
可以维护多个转发基础实例

虚拟路由器
506
可以使用读取复制更新
(read copy update

rcu)
锁来访问和更新表

[0217]
为了向其他计算节点或交换机发送数据包,虚拟路由器
506
使用一个或多个物理接口
532。
通常,虚拟路由器
506
与诸如
vm

pod 502
之类的工作负载交换覆盖数据包

虚拟路由器
506
具有多个虚拟网络接口
(
例如,
vif)。
这些接口可以包括用于与主机操作系统交换数据包的内核接口
vhost0
;与虚拟路由器代理
514
的接口,
pkt0
,用于从网络控制器获得转发状态并发送上去异常数据包

可以存在与一个或多个物理网络接口
532
相对应的一个或多个虚拟网络接口

虚拟路由器
506
的其他虚拟网络接口用于与工作负载交换数据包

[0218]
在虚拟路由器
506(
未示出
)
的基于内核的部署中,虚拟路由器
506
被安装为操作系统内部的内核模块

虚拟路由器
506

tcp/ip
栈注册其自身,以从其想要的任何期望的操作系统接口接收数据包

接口可以是捆绑

物理
、tap(
用于
vm)、veth(
用于容器
)


在该模式中,虚拟路由器
506
依赖于操作系统来发送和接收来自不同接口的数据包

例如,操作系统可以展露由
vhost-net
驱动器支持的
tap
接口以与
vm
通信

一旦虚拟路由器
506
注册了来自该
tap
接口的数据包,
tcp/ip
栈就向其发送所有数据包

虚拟路由器
506
经由操作系统接口发送数据包

此外,
nic
队列
(
物理的或虚拟的
)
由操作系统处理

数据包处理可以在中断模式下操作,这生成中断并且可能使得频繁的上下文切换

当存在高数据包速率时,伴随频繁
中断和上下文切换的开销可能淹没操作系统并导致差的性能

[0219]
在虚拟路由器
506
的基于
dpdk
的部署中
(
图5中示出
)
,虚拟路由器
506
被安装为链接到
dpdk
库的用户空间
545
应用

这可以导致比基于内核的部署更快的性能,特别是在存在高数据包速率的情况下

物理接口
532

dpdk
的轮询模式驱动器
(pmd)
而不是内核的基于中断的驱动器使用

物理接口
532
的寄存器可被展露到用户空间
545
,以便
pmd
可访问;以此类方式绑定的物理接口
532
不再由主机操作系统管理或对主机操作系统可见,并且基于
dpdk
的虚拟路由器
506
管理物理接口
532。
这包括数据包轮询

数据包处理和数据包转发

换句话说,用户数据包处理步骤由虚拟路由器
506dpdk
数据平面执行

当数据包速率高时,这种“轮询模式”的本质使得虚拟路由器
506dpdk
数据平面数据包处理
/
转发与中断模式相比更高效

与内核模式的虚拟路由器
506
相比,在数据包
i/o
期间存在相对较少的中断和上下文切换,并且在某些情况下可以完全避免在数据包
i/o
期间的中断和上下文切换

[0220]
通常,每个
pod 502a

502b
可以被分配一个或多个虚拟网络地址以在相应的虚拟网络内使用,其中每个虚拟网络可以与由虚拟路由器
506
提供的一不同虚拟子网相关联
。pod 502b
可以被分配其自己的虚拟层三
(l3)ip
地址,例如用于发送和接收通信,但是可能不知道
pod 502b
在其上执行的计算设备
500

ip
地址

虚拟网络地址因此可以不同于底层物理计算机系统
(
例如,计算设备
500)
的逻辑地址

[0221]
计算设备
500
包括虚拟路由器代理
514
,其控制计算设备
500
的虚拟网络的覆盖,并且协调计算设备
500
内的数据数据包的路由

通常,虚拟路由器代理
514
与虚拟化基础设施的网络控制器
24
通信,其生成命令以创建虚拟网络并配置网络虚拟化端点,诸如计算设备
500
,并且更具体地,虚拟路由器
506
,以及虚拟网络接口
212。
通过基于从网络控制器
24
接收到的信息来配置虚拟路由器
506
,虚拟路由器代理
514
可以支持配置网络隔离

基于策略的安全

网关

源网络地址转换
(snat)、
负载均衡器以及用于编排的服务链能力

[0222]
在一个示例中,由虚拟网络域内的容器
529a

529b
生成或消费的网络数据包,诸如层三
(l3)ip
数据包或层二
(l2)
以太网数据包,可以被封装在由物理网络传送的另一个数据包
(
例如,另一个
ip
或以太网数据包
)


在虚拟网络中传输的数据包在本文可以被称为“内数据包”,而物理网络数据包在本文可以被称为“外数据包”或“隧道数据包”。
虚拟网络数据包在物理网络数据包内的封装和
/
或解封装可以由虚拟路由器
506
执行

该功能在本文被称为隧道技术传送,并且可以用于创建一个或多个覆盖网络

除了
ipinip
,可以使用的其他示例隧道技术协议包括通用路由封装
(gre)
上的
ip、vxlan、gre
上的多协议标签交换
(mpls)、
用户数据报上的
mpls
协议
(udp)


虚拟路由器
506
对源于
/
去往
pod 502
的任何容器的数据包执行隧道封装
/
解封装,并且虚拟路由器
506
经由总线
542

/

nic 530
的网桥与
pod 502
交换数据包

[0223]
如上所述,网络控制器
24
可以提供逻辑集中控制器,以便于一个或多个虚拟网络的操作

网络控制器
24
可以例如维护路由信息库,诸如存储物理网络以及一个或多个覆盖网络的路由信息的一个或多个路由表

虚拟路由器
506
实现诸如
vrf 222a
的一个或多个虚拟路由和转发实例
(vrf)
,用于虚拟路由器
506
作为相应隧道端点操作的相应虚拟网络

通常,每个
vrf
存储用于相应虚拟网络的转发信息,并且识别数据包将被转发到何处以及数据包是否将被封装在隧道技术协议中,诸如利用可以包括用于虚拟网络协议栈的不同层的一个或多个报头的隧道技术报头

每个
vrf
可以包括存储虚拟网络的路由和转发信息的网络
转发表

[0224]
nic 530
可接收隧道数据包

虚拟路由器
506
处理隧道数据包,以根据隧道封装报头确定内数据包的源和目的地端点的虚拟网络

虚拟路由器
506
可以剥离层2报头和隧道封装报头,以在内部仅转发内数据包

隧道封装报头可以包括虚拟网络标识符,诸如
vxlan
标记或
mpls
标签,其指示虚拟网络,例如与
vrf 222a
相对应的虚拟网络
。vrf 222a
可包括用于内数据包的转发信息

例如,
vrf 222a
可将内数据包的目的地层3地址映射到虚拟网络接口
212。
作为响应,
vrf 222a
经由虚拟网络接口
212
将内数据包转发到
pod 502a。
[0225]
容器
529a
还可以将内数据包作为源虚拟网络端点

容器
529a
例如可生成以由另一计算设备
(
即,非计算设备
500)
执行的目的地虚拟网络端点或容器中的另一个为目的地的层3内数据包

容器
529a
可以经由附接到
vrf 222a
的虚拟网络接口将层3内数据包发送到虚拟路由器
506。
[0226]
虚拟路由器
506
接收内数据包和层2报头,并为内数据包确定虚拟网络

虚拟路由器
506
可以使用上述虚拟网络接口实现技术
(
例如,
macvlan、veth

)
中的任何一个来确定虚拟网络

虚拟路由器
506
使用与用于内数据包的虚拟网络相对应的
vrf 222a
来生成用于内数据包的外报头,该外报头包括用于覆盖隧道的外
ip
报头和标识虚拟网络的隧道封装报头

虚拟路由器
506
封装具有外报头的内数据包

虚拟路由器
506
可以封装具有新的层2报头的隧道数据包,该报头具有与计算设备
500
外部的设备
(
例如,
tor
交换机
16
或服务器
12
中的一个
)
相关联的目的层2地址

如果在计算设备
500
外部,则虚拟路由器
506
使用物理功能
221
将具有新的层2报头的隧道数据包输出到
nic 530。nic 530
在出站接口上输出数据包

如果目的地是在计算设备
500
上执行的另一虚拟网络端点,则虚拟路由器
506
将数据包路由到虚拟网络接口
212、213
中的适当的一个

[0227]
在一些示例中,计算设备
500
的控制器
(
例如,图1的网络控制器
24)
配置每个
pod 502
中的默认路由,以使虚拟机
224
使用虚拟路由器
506
作为出站数据包的初始下一跳

在一些示例中,
nic 530
配置有一个或多个转发规则以使得从虚拟机
224
接收的所有数据包被交换到虚拟路由器
506。
[0228]
pod 502a
包括一个或多个应用容器
529a。pod 502b
包括容器化路由协议守护进程
(containerized routing protocol daemon

crpd)560
的实例

容器平台
588
包括容器运行时间
590、
编排代理
592、
服务代理
593

cni 570。
[0229]
容器引擎
590
包括可由微处理器
510
执行的代码

容器运行时间
590
可以是一个或多个计算机进程

容器引擎
590
运行容器
529a

529b
形式的容器化的应用

容器引擎
590
可以表示
dockert、rkt
或用于管理容器的其他容器引擎

通常,容器引擎
590
接收请求并管理诸如图像

容器

网络和卷之类的对象

图像是具有用于创建容器的指令的模板

容器是图像的可执行实例

基于来自控制器代理
592
的指示,容器引擎
590
可获得图像并将它们例示为
pod 502a

502b
中的可执行容器

[0230]
服务代理
593
包括可由微处理器
510
执行的代码

服务代理
593
可以是一个或多个计算机进程

服务代理
593
监视服务和端点对象的添加和移除,并且它维护计算设备
500
的网络配置以确保
pod
和容器之间的通信,诸如使用服务

服务代理
593
还可以管理
ip
表以捕获到服务的虚拟
ip
地址和端口的流量,并且将流量重定向到代理备份
pod
的代理端口

服务代理
593
可以表示
kubernetes
集群的工作节点的
kube-代理

在一些示例中,容器平台
588

包括服务代理
593
,或者服务代理
593
被禁用以有利于
cni 570
对虚拟路由器
506

pod 502
的配置

[0231]
编排代理
592
包括可由微处理器
510
执行的代码

编排代理
592
可以是一个或多个计算机进程

编排代理
592
可以表示
kubernetes
集群的工作节点的
kubelet。
编排代理
592
是编排器
(
例如,图1的编排器
23)
的代理,其接收容器的容器规范数据并确保计算设备
500
执行容器

容器规范数据可以是从编排器
23
发送到编排代理
592
,或者是经由命令行界面
、http
端点或
http
服务器间接接收的清单文件的形式

容器规范数据可以是容器的
pod 502
中的一个的容器规范
(
例如,
podspec-描述
pod
的又一标记语言
(yet another markup language

yaml)

json
对象
)。
基于容器规范数据,编排代理
592
指导容器引擎
590
获得并例示容器
529
的容器图像,以便由计算设备
500
执行容器
529。
[0232]
编排代理
592
例示或以其他方式调用
cni 570
以为每个
pod 502
配置一个或多个虚拟网络接口

例如,编排代理
592
接收用于
pod 502a
的容器规范数据,并且指导容器引擎
590
基于用于
pod 502a
的容器规范数据创建具有容器
529a

pod 502a。
编排代理
592
还调用
cni 570
来为
pod 502a
配置对应于
vrf 222a
的虚拟网络的虚拟网络接口

在该示例中,
pod 502a
是对应于
vrf 222a
的虚拟网络的虚拟网络端点

[0233]
cni 570
可以获得用于配置
pod 502
的虚拟网络接口的接口配置数据

虚拟路由器代理
514
作为虚拟网络控制平面模块运行,用于使网络控制器
24
能够配置虚拟路由器
506。
与管理虚拟执行元件的提供

调度和管理的编排控制平面
(
包括用于工作节点的容器平台
588
和主节点,诸如编排器
23)
不同,虚拟网络控制平面
(
包括用于工作节点的网络控制器
24
和虚拟路由器代理
514)
管理部分地由工作节点的虚拟路由器
506
在数据平面中实现的虚拟网络的配置

虚拟路由器代理
514

cni 570
通信用于虚拟网络接口的接口配置数据,以使得编排控制平面元件
(
即,
cni 570)
能够根据网络控制器
24
确定的配置状态来配置虚拟网络接口,从而桥接编排控制平面与虚拟网络控制平面之间的间隙

另外,这可以使得
cni 570
能够获得
pod
的多个虚拟网络接口的接口配置数据,并且配置多个虚拟网络接口,这可以减少调用单独的
cni 570
来配置每个虚拟网络接口所固有的通信和资源开销

[0234]

2022
年2月1日提交的美国申请第
17/649,632
号中描述了容器化路由协议守护进程,其通过引用整体并入本文

[0235]
此外,
cni 570(
可能结合虚拟路由器代理
514)
可以配置虚拟路由器
506
以实现
vnr 52。vnr 52
可导致经由用于与
vnr 52
的公共路由目标交换路由信息的一个或多个引入策略和
/
或一个或多个引出策略来配置路由平面

这些策略导致为
vn 50
维护的路由信息与
vnr 52
公共路由目标交换
(
或者换句话说,在其间泄漏
)
,其进而被解析为转发信息
。cni 570
可以从网络控制器
24
获得用于安装该转发信息的配置数据,其与虚拟路由器代理
514
接口以安装用于转发来自
vn 50
的数据包的转发信息

[0236]
换言之,创建该公共路由目标可以使得能够将路由信息从
vn 50
中的一个
(
例如,
vn 50a)
引入和引出到通过
vnr 52
中的一个或多个提供的公共路由目标,以及从公共路由目标引入和引出到
vn 50
中的另一个
(
例如,
vn 50n)。
网络控制器
24
可以将该路由信息解析为上述转发信息,并将其安装在虚拟路由器
506
内,以实现
vn 50a

vn 50n
之间的数据包转发
(
在一些配置中,诸如上述网格配置
)。
以这种方式,虚拟路由器
506
可以建立用于在
vn 50
之间引入和引出路由信息的方式,然后
vn 50
可以使用其来在
vn 50
中的每一个其他
vn
之间
传送数据包

[0237]
图6是根据本公开的技术的操作为
sdn
架构系统的一个或多个集群的计算节点的示例性计算设备的框图

计算设备
1300
可以表示一个或多个真实或虚拟服务器

在一些示例中,计算设备
1300
可以实现用于相应集群或用于多个集群的一个或多个主节点

[0238]
调度器
1322、api
服务器
300a、
控制器
406a、
定制
api
服务器
301a、
定制资源控制器
302a、
控制器管理器
1326、sdn
控制器管理器
1325、
控制节点
232a
和配置存储
1328
虽然被图示和描述为由单个计算设备
1300
执行,但是可以被分布在构成计算系统或硬件
/
服务器集群的多个计算设备之间

换句话说,多个计算设备中的每一个可以为调度器
1322、api
服务器
300a、
控制器
406a、
定制
api
服务器
301a、
定制资源控制器
302a、
网络控制器管理器
1326、
网络控制器
1324、sdn
控制器管理器
1325、
控制节点
232a
或配置存储
1328
中的任何一个或多个的一个或多个实例提供硬件操作环境

[0239]
在该示例中,计算设备
1300
包括耦接计算设备
1300
硬件环境的硬件部件的总线
1342。
总线
1342
将网络接口卡
(nic)1330、
存储盘
1346
和一个或多个微处理器
1310(
在下文中,“微处理器
1310”)
耦接

在一些情况下,前端总线可以耦接微处理器
1310
和存储器设备
1344。
在一些示例中,总线
1342
可以耦接存储器设备
1344、
微处理器
1310

nic 1330。
总线
1342
可以表示外围部件接口
(pci)express(pcie)
总线

在一些示例中,直接内存访问
(dma)
控制器可以控制耦接到总线
242
的部件之间的
dma
传输

在一些示例中,耦接到总线
1342
的部件控制耦接到总线
1342
的部件之间的
dma
传输

[0240]
微处理器
1310
可包括一个或多个处理器,每个处理器包括独立的执行单元以执行符合指令集架构的指令,指令被存储到存储介质

执行单元可以被实现为单独的集成电路
(ic)
,或者可以被组合在一个或多个多核处理器
(
或“众核”处理器
)
内,其中每个多核处理器使用单个
ic(
即,芯片多处理器
)
来实现

[0241]

1346
表示计算机可读存储介质,其包括以用于存储诸如处理器可读指令

数据结构

程序模块或其他数据的信息的任何方法或技术实现的易失性和
/
或非易失性

可移动和
/
或不可移动介质

计算机可读存储介质包括但不限于随机存取存储器
(ram)、
只读存储器
(rom)、eeprom、
闪存
、cd-rom、
数字多功能盘
(dvd)
或其他光学存储装置

磁带盒

磁带

磁盘存储装置或其他磁性存储设备

或者可用于存储期望信息并且可由微处理器
1310
访问的任何其他介质

[0242]
主存储器
1344
包括一个或多个计算机可读存储介质,其可以包括随机存取存储器
(ram)
,诸如各种形式的动态
ram(dram)
,诸如
ddr2/ddr3 sdram
,或者静态
ram(sram)、
闪存,或者可以用于携带或存储指令或数据结构形式的期望的程序代码和程序数据并且可以由计算机访问的任何其他形式的固定或可移动存储介质

主存储器
1344
提供由可寻址存储器位置组成的物理地址空间

[0243]
网络接口卡
(nic)1330
包括被配置为使用底层物理网络的链路来交换数据包的一个或多个接口
3132。
接口
3132
可以包括具有一个或多个网络端口的端口接口卡
。nic 1330
还可包括卡上存储器,以例如存储数据包数据
。nic 1330
和耦接到总线
1342
的其他设备之间的直接内存访问传输可以从
nic
存储器读取
/

nic
存储器写入

[0244]
存储器
1344、nic 1330、
存储盘
1346
和微处理器
1310
可以为软件栈提供操作环境,该软件栈包括在内核空间中执行的操作系统内核
1314。
内核
1314
可以表示例如
linux、
berkeley
软件分布
(bsd)、
另一
unix
变体内核或可从微软公司获得的
windows
服务器操作系统内核

在一些实例中,操作系统可以执行管理程序和由管理程序管理的一个或多个虚拟机

示例管理程序包括用于
linux
内核的基于内核的虚拟机
(kvm)、xen、
可从
vmware
获得的
esxi、
可从
microsoft
获得的
windows hyper-v
和其他开放源和专有管理程序

术语管理程序可以包括虚拟机管理器
(vmm)。
包括内核
1314
的操作系统为用户空间
1345
中的一个或多个进程提供执行环境

内核
1314
包括物理驱动器
1327
以使用网络接口卡
230。
[0245]
计算设备
1300
可以耦接到物理网络交换结构,该物理网络交换结构包括将交换结构从物理交换机扩展到耦接到交换结构的物理服务器的软件或虚拟路由器
(
诸如虚拟路由器
21)
的覆盖网络

计算设备
1300
可以使用一个或多个专用虚拟网络来配置集群的工作节点

[0246]
api
服务器
300a、
调度器
1322、
控制器
406a、
定制
api
服务器
301a、
定制资源控制器
302a、
控制器管理器
1326
和配置存储
1328
可以实现集群的主节点,并且可以可替代地被称为“主部件”。
该集群可以是
kubernetes
集群,并且主节点可以是
kubernetes
主节点,在该情况下,主部件是
kubernetes
主部件

[0247]
api
服务器
300a、
控制器
406a、
定制
api
服务器
301a
和定制资源控制器
302a
中的每一个都包括可由微处理器
1310
执行的代码

定制
api
服务器
301a
验证并配置用于
sdn
架构配置
(
诸如
vn 50

vnr 52)
的定制资源的数据

服务可以是定义
pod
的逻辑集合和用于访问
pod
的策略的抽象

基于服务定义来选择实现服务的
pod
集合

服务可以部分地实现为负载均衡器,或者以其他方式包括负载均衡器
。api
服务器
300a
和定制
api
服务器
301a
可以实现代表性状态传输
(representational state transfer

rest)
接口以处理
rest
操作,并且作为
sdn
架构的配置平面的一部分,将前端提供给存储到配置存储
1328
的对应集群的共享状态
。api
服务器
300a
可以表示
kubernetes api
服务器

[0248]
配置存储
1328
是所有集群数据的后备存储

集群数据可以包括集群状态和配置数据

配置数据还可以提供用于服务发现的后端和
/
或提供锁定服务

配置存储
1328
可以实现为键值存储

配置存储
1328
可以是中央数据库或者分布式数据库

配置存储
1328
可以代表
etcd
存储

配置存储
1328
可以表示
kubernetes
配置存储

[0249]
调度器
1322
包括可由微处理器
1310
执行的代码

调度器
1322
可以是一个或多个计算机进程

调度器
1322
监视新创建或请求的虚拟执行元件
(
例如,容器的
pod)
并且选择虚拟执行元件将在其上运行的工作节点

调度器
1322
可以基于资源要求

硬件约束

软件约束

策略约束

位置等来选择工作节点

调度器
1322
可以表示
kubernetes
调度器

[0250]
通常,
api
服务器
1320
可以调用调度器
1322
来调度
pod。
调度器
1322
可以选择工作节点,并将选择的工作节点的标识符返回给
api
服务器
1320
,该
api
服务器可以将该标识符与
pod
相关联地写入配置存储
1328。api
服务器
1320
可调用所选择的工作节点的编排代理
310
,这可使选择的工作节点的容器引擎
208
从存储服务器获得
pod
并在工作节点上创建虚拟执行单元

用于选择的工作节点的编排代理
310
可将
pod
的状态更新到
api
服务器
1320
,该
api
服务器将此新状态持久存储到配置存储
1328。
这样,计算设备
1300
例示了计算基础结构8中的新
pod。
[0251]
控制器管理器
1326
包括可由微处理器
1310
执行的代码

控制器管理器
1326
可以是一个或多个计算机进程

控制器管理器
1326
可以嵌入核心控制回路,通过从
api
服务器
1320
获得通知来监视集群的共享状态

控制器管理器
1326
可以尝试将集群的状态移向期望状态

示例性控制器
406a
和定制资源控制器
302a
可由控制器管理器
1326
管理

其他控制器可以包括复制控制器

端点控制器

命名空间控制器和服务帐户控制器

控制器管理器
1326
可以执行生命周期功能,诸如命名空间创建和生命周期

事件垃圾收集

终止的
pod
垃圾收集

级联删除垃圾收集

节点垃圾收集等

控制器管理器
1326
可以表示用于
kubernetes
集群的
kubernetes
控制器管理器

[0252]
本文所述的
sdn
架构的网络控制器可以为在网络基础设施上运行的计算架构提供云联网

云联网可以包括用于企业或服务提供商的私有云

基础设施即服务
(iaas)
和用于云服务提供商
(csp)
的虚拟私有云
(vpc)。
私有云
、vpc

iaas
用例可以涉及多租户虚拟化数据中心,诸如关于图1所描述的

在此类情况下,数据中心中的多个租户共享相同的物理资源
(
物理服务器

物理存储

物理网络
)。
每个租户被分配其自己的逻辑资源
(
虚拟机

容器或其他形式的虚拟执行元件;虚拟存储;虚拟网络
)。
除非安全策略特别允许,否则这些逻辑资源彼此隔离

数据中心中的虚拟网络也可以互连到物理
ip vpn

l2 vpn。
[0253]
网络控制器
(
或“网络控制器”)
可以向诸如商业边缘网络

宽带订户管理边缘网络和移动边缘网络的网络提供网络功能虚拟化
(nfv)。nfv
涉及在虚拟机

容器或其他虚拟执行元件中而不是在物理硬件设备上编排和管理联网功能,诸如防火墙

入侵检测或预防系统
(ids/ips)、
深度数据包检查
(dpi)、
高速缓存

广域网
(wan)
优化等

[0254]
sdn
控制器管理器
1325
包括可由微处理器
1310
执行的代码
。sdn
控制器管理器
1325
可以是一个或多个计算机进程
。sdn
控制器管理器
1325
用作面向编排的元件
(
例如,调度器
1322、api
服务器
300a
和定制
api
服务器
301a、
控制器管理器
1326
和配置存储
1328)
之间的接口

通常,
sdn
控制器管理器
1325
针对新的
kubernetes
原生对象
(
例如,
pod
和服务
)
监视集群
。sdn
控制器管理器
1325
可以隔离虚拟网络中的
pod
,并且将
pod
与服务连接以及使用所谓的虚拟网络路由器
(
其不应与虚拟路由器混淆,该虚拟路由器以对上述公共路由目标的各种引入和引出策略的形式实现虚拟网络路由器以促进虚拟网络之间的互连
)
来互连虚拟网络

[0255]
sdn
控制器管理器
1325
可以作为集群的主节点的容器来执行

在一些情况下,使用
sdn
控制器管理器
1325
使得能够禁用工作节点的服务代理
(
例如,
kubernetes kube
代理
)
,使得使用虚拟路由器来实现所有
pod
连通性,如本文所述

[0256]
网络控制器
24
的部件可以作为
kubernetes

cni
操作,并且可以支持多种部署模式
。cni 17、cni750
是用于管理
kubernetes
的联网的该整体
cni
架构的计算节点接口

部署模式可分为两类:
(1)
作为集成到工作负载
kubernetes
集群中的
cni

sdn
架构集群,以及
(2)
作为与工作负载
kubernetes
集群分离的
cni

sdn
架构集群

[0257]
与工作负载
kubernetes
集群集成
[0258]
网络控制器
24
的部件
(
例如,定制
api
服务器
301、
定制资源控制器
302、sdn
控制器管理器
1325
和控制节点
232)
在靠近
kubernetes
控制器部件的主节点上的受管理的
kubernetes
集群中运行

在这种模式下,网络控制器
24
的部件实际上是与工作负载相同的
kubernetes
集群的一部分

[0259]
与工作负载
kubernetes
集群分开
[0260]
网络控制器
24
的部件将由与工作负载
kubernetes
集群分开的
kubernetes
集群执


[0261]
sdn
控制器管理器
1325
可以使用用于编排平台的控制器框架来监听
(
或以其他方式监视
)

kubernetes
原生
api
中定义的对象中的改变,并且向这些对象中的一些添加注释

注释可以是指定对象的属性的标签或其他标识符
(
例如,“虚拟网络绿色”)。sdn
控制器管理器
1325

sdn
架构的部件,其监听
kubernetes
核心资源
(
诸如
pod、networkpolicy、service

)
事件,并根据需要将这些事件转换为用于
sdn
架构配置的定制资源
。cni
插件
(
例如,
cni 17、570)
是支持
kubernetes
联网插件标准的
sdn
架构部件:容器网络接口

[0262]
sdn
控制器管理器
1325
可以使用由聚合的
api 402
展露的
rest
接口来创建用于应用的网络尊龙凯时官方app下载的解决方案,以定义诸如虚拟网络

虚拟网络接口和访问控制策略之类的网络对象

网络控制器
24
部件可以通过例如配置虚拟路由器中的一个或多个虚拟网络和虚拟网络接口来实现计算基础设施中的网络尊龙凯时官方app下载的解决方案
。(
这仅仅是
sdn
配置的一个示例
。)
[0263]
用于该应用的以下示例部署配置包括
pod
和用于该
pod
的虚拟网络信息:
[0264][0265]
该元数据信息可以被复制到由控制器管理器
1326
创建的每个
pod
副本


sdn
控制器管理器
1325
被通知这些
pod
时,
sdn
控制器管理器
1325
可以创建如注释中列出的虚拟网络
(
以上示例中的“red-network”、“blue-network”和“default/extns-network”)
,并且针对
每个虚拟网络创建具有来自虚拟网络的集群范围地址块
(
例如,
10.0/16)
的唯一私有虚拟网络地址的每
pod
副本
(
例如,
pod 202a)
虚拟网络接口

[0266]
contrail
是示例性网络控制器架构
。contrail cni
可以是为
contrail
开发的
cni。
云原生
contrail
控制器可以是本公开所述的网络控制器
(
诸如网络控制器
24)
的示例

[0267]

7a
是图示了根据本公开的技术的用于使用
sdn
架构的底层网络和覆盖网络配置的控制
/
路由平面的框图


7b
是图示了根据本公开的技术的使用底层网络中配置的隧道来连接
pod
的经配置的虚拟网络的框图

[0268]
用于
sdn
架构的网络控制器
24
可以使用分布式或集中式路由平面架构
。sdn
架构可以使用容器化路由协议守护进程
(
进程
)。
[0269]
从网络信令的角度来看,路由平面可以根据分布式模型工作,其中
crpd
在集群中的每个计算节点上运行

这本质上意味着智能被构建到计算节点中并且涉及每个节点处的复杂配置

该模型中的路由反射器
(rr)
可以不进行智能路由决策,而是用作中继来反映节点之间的路由

分布式容器路由协议守护进程
(crpd)
是可以使用的路由协议进程,其中每个计算节点运行其自己的路由守护进程实例

同时,集中式
crpd
主实例可以充当
rr
以在计算节点之间中继路由信息

路由和配置智能分布在中心位置具有
rr
的节点上

[0270]
可替代地,路由平面可以根据更集中的模型工作,其中网络控制器的部件集中运行并吸收处理配置信息

构造网络拓扑以及将转发平面编程到虚拟路由器中所需的智能

虚拟路由器代理是处理由网络控制器编程的信息的本地代理

这种设计有助于在计算节点处所需的更有限的智能,并且倾向于使得更简单的配置状态

[0271]
集中控制平面提供以下内容:
[0272]
·
允许代理路由框架更简单和更轻
。bgp
的复杂性和限制对于代理是隐藏的

代理不需要理解例如路由-区分器

路由-目标等概念

代理只交换前缀并相应地建立其转发信息

[0273]
·
控制节点可以做的不仅仅是路由

它们建立在虚拟网络概念上,并且可以使用路由复制和重新源起
(
例如,以支持例如服务链和
vn
间路由的特征,以及其他使用情况
)
来生成新的路由

[0274]
·
建立用于最佳广播和多播转发的
bum


[0275]
注意,控制平面对于某些方面具有分布式特性

作为支持分布式功能的控制平面,它允许每个本地虚拟路由器代理发布其本地路由,并基于需要知道的基础来预订配置

[0276]
于是,从工具
pov
考虑控制平面设计并且在它们最适合的地方适当地使用手头的工具是有意义的

考虑
contrail-bgp

crpd
的利弊集合

[0277]
以下功能可以由
crpd
或网络控制器
24
的控制节点提供

[0278]
路由守护进程
/
处理
[0279]
控制节点和
crpd
都可以充当实现不同协议并具有在转发平面中编程路由信息的能力的路由守护进程

[0280]
crpd
实现具有丰富路由栈的路由协议,该丰富路由栈包括内部网关协议
(igp)(
例如,中间系统到中间系统
(is-is))、bgp-lu、bgp-ct、sr-mpls/srv6、
双向转发检测
(bfd)、
路径计算元件协议
(pcep)


它也可以被部署来提供仅控制平面的服务,诸如路由反射器,并且由于这些能力而在因特网路由用例中是流行的

[0281]
控制节点
232
也实现路由协议,但主要基于
bgp。
控制节点
232
理解覆盖联网

控制节点
232
在覆盖虚拟化中提供丰富的特征集合,并且满足
sdn
用例

诸如虚拟化
(
使用虚拟网络的抽象
)
和服务链的覆盖特征在
telco
和云提供商中非常流行
。crpd
在某些情况下可以不包括对这种覆盖功能的支持

然而,
crpd
的丰富特征集为底层网络提供了强有力的支持

[0282]
网络编排
/
自动化
[0283]
路由功能只是控制节点
232
的一部分

覆盖联网的整体部分是编排

除了提供覆盖路由之外,控制节点
232
还有助于对编排功能进行建模并提供网络自动化

控制节点
232
的编排能力的中心是使用基于虚拟网络
(
和相关对象
)
的抽象
(
包括上述
vnr)
来对网络虚拟化进行建模的能力

控制节点
232
与配置节点
230
接口,以将配置信息中继到控制平面和数据平面

控制节点
232
还帮助建立多播层2和层3的覆盖树

例如,控制节点可以建立它用来实现这一点的集群的虚拟拓扑
。crpd
通常不包括这种编排能力

[0284]
高可用性和水平可缩放性
[0285]
控制节点设计更集中,而
crpd
更分散

存在运行在每个计算节点上的
crpd
工作器节点

另一方面,控制节点
232
不运行在计算上,并且甚至可以运行在远程集群
(
即,与工作负载集群分离并且在一些情况下地理上远离工作负载集群
)


控制节点
232
还为
ha
提供水平可伸缩性并在活动-活动模式下运行

计算负载在控制节点
232
之间共享

另一方面,
crpd
通常不提供水平可伸缩性

控制节点
232

crpd
都可以向
ha
提供平滑重启,并且可以允许无头模式下的数据平面操作-其中,即使控制平面重启,虚拟路由器也可以运行

[0286]
控制平面应该不仅仅是路由守护进程

它应当支持覆盖路由和网络编排
/
自动化,而
crpd
作为管理底层路由的路由协议表现良好

然而,
crpd
通常缺乏网络编排能力,并且不能为覆盖路由提供强有力的支持

[0287]
因此,在一些示例中,
sdn
架构可以在计算节点上具有
crpd
,如图
7a

7b
所示


7a
图示了
sdn
架构
700
,其可以表示示例性实施方式
sdn
架构
200

400。

sdn
架构
700
中,
crpd 324
在计算节点上运行,并且在运行提供编排和覆盖服务的控制节点
232
的集中
(
并且水平可扩展
)
集合的同时向转发平面提供底层路由

在一些示例中,可以使用默认网关,而不是在计算节点上运行
crpd 324。
[0288]
计算节点上的
crpd 324
通过使用接口
540(
其可以是
grpc
接口
)
与虚拟路由器代理
514
交互来提供到转发平面的丰富底层路由

虚拟路由器代理接口可以允许对路由进行编程

配置用于覆盖的虚拟网络接口

以及以其他方式配置虚拟路由器
506。
这在美国申请第
17/649,632
号中有更详细的描述

同时,一个或多个控制节点
232
作为提供覆盖服务的单独的
pod
运行
。sdn
架构
700
因此可以获得由控制节点
232
提供的丰富的覆盖和编排以及由
crpd 324
在计算节点上进行的现代底层路由以补充控制节点
232。
单独的
crpd
控制器
720
可用于配置
crpd 324。crpd
控制器
720
可以是设备
/
元件管理系统

网络管理系统

编排器

用户界面
/cli
或其他控制器
。crpd 324
运行路由协议并与包括其他
crpd 324
的路由器交换路由协议消息

每个
crpd 324
可以是容器化的路由协议过程,并且有效地作为路由器控制平面的仅软件版本来操作

[0289]

crpd 324
提供的增强的底层路由可替换转发平面处的默认网关,并为可支持的用例提供丰富的路由栈

在不使用
crpd 324
的一些示例中,虚拟路由器
506
将依赖于用于底层路由的默认网关

在一些示例中,作为底层路由过程的
crpd 324
将被限制为仅对具有控
制平面路由信息的默认
inet(6).0
结构进行编程

在这样的示例中,非默认覆盖
vrf
可以由控制节点
232
来编程

[0290]
在这种情况下,控制节点
232
可获得定义
vnr 52
的定制资源,并例示单独的路由实例
(
具有相应的公共路由目标
)。
控制节点
232
可为公共路由目标创建引入和
/
或引出策略,其使得从各种虚拟网络
(
例如,
vn 50a

50n)
到公共路由目标的路由的引入和引出

控制节点
232
可以解析公共路由目标以获得转发信息,该转发信息然后可以经由虚拟路由代理
514
被下推到虚拟路由器
506。
使用该转发信息,虚拟路由器
506
可在
vn 50a

50n
之间转发数据包
(
在一些互连性方案中,诸如上面提到的网格互连性方案
)。
[0291]

7a

7b
图示了上述的双路由
/
控制平面尊龙凯时官方app下载的解决方案

在图
7a
中,
crpd 324
向虚拟路由器代理
514
提供底层路由
/
转发信息,在某些方面类似于路由器控制平面如何对路由器转发
/
数据平面进行编程

[0292]
如图
7b
所示,
crpd 324
交换可用于为
vrf
创建通过底层网络
702
的隧道的路由信息

隧道
710
是示例并且连接服务器
12a
的虚拟路由器
506
和服务器
12x
的虚拟路由器
506。
隧道
710
可以表示分段路由
(sr)

srv6
隧道

通用路由封装
(generic route encapsulation

gre)
隧道
、ip-in-ip
隧道
、lsp
或其他隧道

控制节点
232
利用隧道
710
来创建连接服务器
12a

pod 22
和服务器
12x

pod 22
的虚拟网络
712
,其中服务器
12a
和服务器
12x
附接到虚拟网络的
vrf。
[0293]
如上所述,
crpd 324
和虚拟路由器代理
514
可以使用
grpc
接口交换路由信息,并且虚拟路由器代理
5145
可以使用
grpc
接口用配置对虚拟路由器
506
进行编程

还注意到,控制节点
232
可用于覆盖和编排,而
crpd 324
可用于管理底层路由协议

虚拟路由器代理
514
可以使用与
crpd 324

grpc
接口,同时使用
xmpp
来与控制节点和域名服务
(dns)
通信

[0294]
grpc
模型对于
crpd 324
工作良好,因为可能存在在每个计算节点上运行的工作器,并且虚拟路由器代理
314
充当
grpc
服务器,其向客户端
(crpd 324)
展露服务以用于对路由和配置信息
(
针对底层
)
进行编程

因此,当与
xmpp
相比时,
grpc
作为尊龙凯时官方app下载的解决方案是有吸引力的

特别地,它将数据作为二进制流传送,并且在要通过它发送的编码
/
解码数据中没有添加的开销

[0295]
在一些示例中,控制节点
232
可以使用
xmpp
与虚拟路由器代理
514
接口连接

在虚拟路由器代理
514
充当
grpc
服务器的情况下,
crpd 324
充当
grpc
客户端

这意味着客户端
(crpd)
需要发起到服务器
(vrouter
代理
)
的连接


sdn
架构
700
中,虚拟路由器代理
514
选择订阅的控制节点
232
的集合
(
因为存在多个控制节点
)。
在该方面,控制节点
232
充当服务器,并且虚拟路由器代理
514
作为客户端连接并订阅更新

[0296]
关于
grpc
,控制节点
232
将需要挑选其需要连接的虚拟路由器代理
514
,然后作为客户端订阅

由于控制节点
232
不在每个计算节点上运行,因此这将需要实现算法来选择它可以预订的虚拟路由器代理
514。
此外,控制节点
232
需要彼此同步该信息

这也使重启发生时的情况复杂化,并且需要控制节点
232
之间的同步来挑选它们所服务的代理

诸如平滑重启动
(graceful restart

gr)
和快速收敛
(fast convergence)
的特征已经在
xmpp
之上实现
。xmpp
已经是轻质和有效的

因此,对于控制节点
232
到虚拟路由器代理
514
的通信,
xmpp
可能优于
grpc。
[0297]
对控制节点
232
的附加增强及其使用如下
。ha
和具有三个控制节点的水平可缩放


与任何路由平台类似,仅具有两个控制节点
232
就足以满足
ha
需求

在许多情况下,这是有利的
。(
然而,可以使用一个或多个控制节点
232。)
例如,它提供了更确定的基础设施并且与标准路由最佳实践一致

每个虚拟路由器代理
514
附接到唯一的一对控制节点
232
以避免随机性

利用两个控制节点
232
,调试可以更简单

此外,用于构造多播
/
广播树的边缘复制可以仅用两个控制批注
232
来简化

当前,由于
vrouter
代理
314
只连接到三个控制节点中的两个,所以所有控制节点在一段时间内可能没有完整的树的图片,并且依赖
bgp
来同步它们之间的状态

由于虚拟路由器代理
314
可以随机选择两个,所以这在三个控制节点
232
的情况下更加严重

如果只有两个控制节点
232
,则每个虚拟路由器代理
314
将连接到相同的控制节点

这又意味着控制节点
232
不需要依赖
bgp
来同步状态,并且将具有多播树的相同图片

[0298]
sdn
架构
200
可以提供入口复制作为边缘复制的替代,并向用户提供选项

入口复制可以被视为一般覆盖多播树的特殊退化情况

然而,实际上,入口复制树的信令比一般的覆盖多播树的信令简单得多

通过入口复制,每个虚拟路由器
21
以树结束,该树以其自身作为根并且以每个其他
vrouter
作为叶

虚拟路由器
21
下降理论上不应导致重建树

注意,入口复制的性能随着更大的集群而恶化

然而,它对于较小的集群工作良好

此外,多播对于许多客户来说不是普遍的和流行的要求

它主要限于传输广播
bum
流量,这仅在最初发生

[0299]
配置处理模块增强
[0300]
在常规
sdn
架构中,网络控制器处理所有使用情况的编排

配置节点基于数据模型将意图转换成配置对象,并将它们写入数据库
(
例如,
cassandra)。
在一些情况下,同时,例如经由
rabbitmq
向等待该配置的所有客户端发送通知

[0301]
控制节点不仅充当
bgp
讲者,而且具有配置处理模块,该配置处理模块以下面的方式从数据库读取配置对象

首先,当控制节点出现
(
或重新启动
)
时,它连接到数据库并直接从数据库读取所有配置

第二,控制节点也可以是消息客户端

当存在对配置对象的更新时,控制节点接收列出已被更新的对象的消息通知

这又使配置处理模块从数据库读取对象

[0302]
配置处理模块读取控制平面
(bgp
相关配置
)

vrouter
转发平面的配置对象

该配置可以存储为具有对象作为节点和关系作为链接的图

然后可以将该图下载到客户端
(bgp/crpd

/

vrouter
代理
)。
[0303]
在一些实例中,常规配置
api
服务器和消息传递服务在一些实例中由
kubernetes
中的
etcd

kube api
服务器
(api
服务器
300
和定制
api
服务器
301)
和先前的
cassandra
数据库代替

通过这种改变,对配置对象感兴趣的客户端可以直接观察
etcd
数据库以获得更新,而不是依赖于
rabbitmq
通知

[0304]
用于
crpd
的控制器编排
[0305]
bgp
配置可以被提供给
crpd 324。
在一些示例中,
crpd
控制器
720
可以是
kubernetes
控制器,该
kubernetes
控制器适于开发其自己的控制器,该控制器适于
kubernetes
空间并实现编排和供应
crpd 324
所需的
crd。
[0306]
分布式配置处理
[0307]
如本节前面所述,配置处理模块可以是控制节点
232
的一部分

它直接从数据库读取配置

将数据转换成
json
格式,并将其作为对象作为节点,对象之间的关系作为链接的图
形存储在其本地
ifmap
数据库中

然后,该图经由
xmpp
被下载到计算节点上的感兴趣的虚拟路由器代理
514。
虚拟路由器代理
514
本地地构建基于
ifmap
的依赖图,以及存储这些对象

[0308]
作为中间模块的
ifmap
和存储依赖图的需要可以通过使虚拟路由器代理
514
直接监视
api
服务器
300
中的
etcd
服务器来避免

在计算节点上运行的
crpd 324
可以使用相同的模型

这将避免对
ifmap-xmpp config
信道的需要
。kubernetes
配置客户端
(
用于控制节点
232)
可用作该配置的一部分

该客户端也可以由虚拟路由器代理使用

[0309]
然而,这可增加从
etcd
服务器读取配置的客户端的数量,尤其是在具有数百个计算节点的集群中

添加更多的观察器最终使得写入速率下降并且事件速率达不到理想状态
。etcd

grpc
代理从一个服务器观察器向多个客户端观察器重播
。grpc
代理将同一键或范围上的多个客户端观察器
(c-观察器
)
合并到连接到
etcd
服务器的单个观察器
(s-观察器
)


代理将所有事件从
s-观察器广播到其
c-观察器

假设n个客户端观看相同的键,一个
grpc
代理可以将
etcd
服务器上的观看负载从n减少到
1。
用户可以部署多个
grpc
代理以进一步分配服务器负载

这些客户端共享一个服务器观察器;代理有效地从核心群集卸载资源压力

通过增加代理,
etcd
每秒可以服务一百万个事件

[0310]
sdn
架构中的
dns/
命名
[0311]
在先前的架构中,
dns
服务由共同工作以向网络中的
vm
提供
dns
服务的
contrail-dns

contrail-named
的进程提供

其命名作为提供
bind
协议的实现的
dns
服务器
。contrail-dns

vrouter-代理接收更新并将这些记录推送至命名

[0312]
系统中支持四种
dns
模式,
ipam
配置可以选择所需的
dns
模式

[0313]
1.
没有-无对
vm

dns
支持

[0314]
2.
默认
dns
服务器-vm

dns
解析基于服务器基础结构中的命名服务器配置来完成


vm
得到
dhcp
响应时,子网默认网关被配置为
vm

dns
服务器
。vm
发送到该默认网关的
dns
请求经由配置在相应计算节点上的
(
结构
)
命名服务器来解析,并且响应被发送回
vm。
[0315]
3.
租户
dns
服务器-租户可以使用该模式使用其自己的
dns
服务器

可以在
ipam
中配置服务器列表,然后在对于作为
dns
服务器的
vm

dhcp
响应中发送
。vm
发送的
dns
请求基于可用路由信息被路由为任何其他数据数据包

[0316]
4.
虚拟
dns
服务器-在该模式中,系统支持虚拟
dns
服务器,提供解析来自
vm

dns
请求的
dns
服务器

我们可以在系统中的每个域下定义多个虚拟域名服务器

每个虚拟域名服务器是用于所配置的
dns
域的授权服务器

[0317]
本文所述的
sdn
架构在其提供的
dns
服务方面是高效的

云原生世界中的客户将受益于各种
dns
服务

然而,随着向下一代基于
kubernetes
的架构的移动,
sdn
架构可以替代地使用
coredns
用于任何
dns
服务

[0318]
数据平面
[0319]
数据平面由两个部分组成:
sdn
架构尊龙凯时官方app下载的解决方案中的虚拟路由器代理
514(aka
代理
)
和虚拟路由器转发平面
506(
也称为
dpdk vrouter/kernel vrouter)
负责管理数据平面部件

代理
514
与两个控制节点
232
建立
xmpp
邻居关系,然后与它们交换路由信息
。vrouter
代理
514
还动态地生成流条目并将它们注入到虚拟路由器
506


这向虚拟路由器
506
给出关于如何转发数据包的指令

[0320]
代理
514
的职责包括:与控制节点
232
接口以获得配置

将接收到的配置转换成数
据路径能够理解的形式
(
例如,将数据模型从
ifmap
转换成数据路径所使用的数据模型
)。
与控制节点
232
接口连接以管理路由

并从数据路径收集和引出统计数据至监测尊龙凯时官方app下载的解决方案

[0321]
虚拟路由器
506
实现可允许虚拟网络接口与
vrf
相关联的数据平面功能

每个
vrf
具有其自己的转发和流表,而
mpls

vxlan
表在虚拟路由器
506
内是全局的

转发表可以包含目的地的
ip

mac
地址的路由,并且
ip-to-mac
关联被用于提供代理
arp
能力


vm/
容器接口出现并且仅对虚拟路由器
506
本地重要时,虚拟路由器选择
mpls
表中的标签的值
。vxlan
网络标识符在域内的不同虚拟路由器
506
中的相同虚拟网络的所有
vrf
上是全局的

[0322]
在一些示例中,每个虚拟网络具有分配给它的默认网关地址,并且每个
vm
或容器接口在初始化时接收的
dhcp
响应中接收该地址

当工作负载向其子网外部的地址发送数据包时,它将针对与网关的
ip
地址相对应的
mac
进行
arp
,并且虚拟路由器
506
以其自己的
mac
地址进行响应

因此,虚拟路由器
506
可以支持用于所有虚拟网络的完全分布式默认网关功能

[0323]
以下是由虚拟路由器
506
实现的数据包流转发的示例

[0324]
数据包在同一子网中的
vm/
容器接口之间流动

[0325]
工作器节点可以是
vm
或容器接口

在一些示例中,数据包处理进行如下:
[0326]
·
vm1/
容器接口需要向
vm2
发送数据包,因此虚拟路由器
506
首先针对
ip
地址查找其自己的
dns
高速缓存,但是由于这是第一数据包,因此不存在条目

[0327]
·
vm1
向在其接口出现时在
dhcp
响应中提供的
dns
服务器地址发送
dns
请求

[0328]
·
虚拟路由器
506
捕获
dns
请求并将其转发到在
sdn
架构控制器中运行的
dns
服务器

[0329]
·
控制器中的
dns
服务器以
vm2

ip
地址作出响应
[0330]
·
虚拟路由器
506

dns
响应发送到
vm1
[0331]
·
vm1
需要形成以太网帧,因此需要用于
vm2

mac
地址

它检查它自己的
arp
高速缓存,但是没有条目,因为这是第一个数据包

[0332]
·
vm1
发出
arp
请求

[0333]
·
虚拟路由器
506
捕捉
arp
请求并在其自己的转发表中查找
ip-vm2

mac
地址,并找到控制器将其发送给
vm2

l2/l3
路由中的关联

[0334]
·
虚拟路由器
506

vm1
发送具有
vm2

mac
地址的
arp
应答

[0335]
·

vm1
的网络栈中发生
tcp
超时
[0336]
·
vm1
的网络栈重试发送数据包,这次在
arp
缓存中找到
vm2

mac
地址,并且可以形成以太网帧并将其发送出去

[0337]
·
虚拟路由器
506
查找
vm2

mac
地址并找到封装路由

虚拟路由器
506
建立外报头并将结果数据包发送到服务器
s2。
[0338]
·
服务器
s2
上的虚拟路由器
506
解封装该数据包并查找
mpls
标签以标识发送原始以太网帧至其的虚拟接口

以太网帧被发送到该接口并由
vm2
接收

[0339]
不同子网中
vm
之间的数据包流
[0340]
在一些示例中,向不同子网中的目的地发送数据包时的顺序是类似的,除了虚拟路由器
506
作为默认网关响应
。vm1
将在具有默认网关的
mac
地址的以太网帧中发送该数据包,该默认网关的
ip
地址是在
vm1
引导时虚拟路由器
506
提供的
dhcp
响应中提供的


vm1

网关
ip
地址进行
arp
请求时,虚拟路由器
506
用它自己的
mac
地址进行响应


vm1
使用该网关
mac
地址发送以太网帧时,虚拟路由器
506
使用帧内的数据包的目的地
ip
地址来查找
vrf
中的转发表以找到路由,其将经由封装隧道到达目的地正在其上运行的主机

[0341]

10a

10m
是图示了提供网络的拓扑的图形表示的图形用户界面的示例的示图,其中虚拟网络路由器可被图形地定义以允许不同网络元件之间的连通性

在图
10a
的示例中,
gui 2000a
可以表示
gui 60/244
的一个示例,其呈现网络拓扑的图形表示
2002a。
图形表示
2002a
可将网络拓扑呈现为包括表示网络元件
(
例如,
vn、vnr、
服务器集群等
)
的图形节点和表示图形节点之间的连通性的图形边的图形数据结构

[0342]
每个图形节点可以使用文本和图形图标来指定节点的类型

例如,图形节点
2004a
包括表示虚拟网络
(
具有显示标志的云
)
的图形图标和将图形节点
2004a
标识为“vn1”的文本

图形表示
2002a
可包括类似的图形图标
2004b

2004n
,其中图形图标表示虚拟网络,以及文本将图形节点
2004b

2004n
识别为相应的“vn2”、“vn3”、“vn4”、
…“
vn15”。
作为另一示例,图形节点
2006a
包括表示集群的图形图标连同将图形节点
2006a
标识为”集群
2“(
其指的是服务器集群
)
的文本

[0343]
图形节点
2008a

2008c
的每一个包括表示被配置为提供网格连通性的
vnr
的图形图标,以及将图形节点
2008a

2008c
的每一个标识为
vnr
的文本,
vnr
连同表示连通性的类型
(
例如,“网格”)
的文本

图形节点
2010a
包括表示
vnr
的图形图标,
vnr
被配置为提供中心连通性,以及将图形节点
2010a
标识为
vnr
的文本,还具有表示连通性的类型的文本
(
例如,支持中心辐条式连通性的“中心”)。
图形节点
2012a
包括表示
vnr
的图形图标,
vnr
被配置为提供辐条式连通性,以及将图形节点
2012a
标识为
vnr
的文本,连同表示连通性类型的文本
(
例如,支持中心辐条式连通性的“辐条”)。
假设中心辐条式连通性提供单向连通性,其中辐条可以仅向中心转发数据
(
而不直接向其他辐条转发数据
)
,则图形边
2014a
包括指示中心辐条式连通性的单向性质的箭头

[0344]
gui 2000a
包括图标
2020a(
在该示例中具有表示“拓扑”的
web
的图形图标
)
,该图标在被选择时使得
gui 2000a
呈现拓扑
2002a
的图形表示
。gui 2000a
还包括对应于“收藏夹”(
图标
2020b)、“性能”(
图标
2020c)、“状态”(
图标
2020d)、“配置”(
图标
2020e)、“分析”(
图标
2020f)
和“设置”(
图标
2020g)
的不同界面的图标
2020b

2020g。
图标
2020a

2020g(“图标
2020”)
中的每一个可以使
gui 2000a
适于示出拓扑的不同方面
(
或控制如何查看拓扑的不同方面
)。
[0345]
gui 2000a
还包括视图控件
2030a

2030e。
视图控件
2030a
可以展露标识用于描绘不同类型的图形节点

图形边等的各种图标的图例
(
如以下关于图
10b
的示例更详细描述的
)。
视图控件
2030b
在被选择时可以使
gui 2000a
重置拓扑的图形表示
2002a
的视图
(
例如,当
gui 2000a
响应于选择拓扑图标
2020a
而被首次呈现时,重置为原始视图
)。
视图控件
2030c

2030e
在被选择时可以使
gui 2000a
放大和
/
或缩小拓扑的图形表示
2002a
的视图

[0346]
此外,
gui 2000a
包括各种模式控件
2040a

2040d。
模式控件
2040a
在被选择时可使
gui 2000a
能够添加图形元件
(
例如,表示
vnr、vn
等的图形节点和图形边
)
,其使得对由图形表示
2002a
表示的底层拓扑的配置的添加和
/
或改变

模式控件
2040b
在被选择时可以使得
gui 2000a
能够编辑现有的图形元件,这可以使得对由图形表示
2002a
表示的底层拓扑的配置的改变

模式控件
2040c
在被选择时可使
gui 2000a
启用搜索功能

模式控件
2040d
在被
选择时可以使
gui 2000a
启用过滤功能,该过滤功能使用户能够输入过滤标准,通过该过滤标准来限制由图形表示
2002a
表示的拓扑的视图

[0347]
gui 2000a
还包括拓扑
/
列表切换控件
2050a

2050b。
拓扑切换控件
2050a
在被选择时可以使
gui 2000a
转换到网络拓扑的图形表示
2002a
,而列表切换控件
2050b
在被选择时可以使
gui 2000a
从网络拓扑的图形表示
2002a
转换到网络拓扑的列表视图

[0348]
在图
10a
的示例中,
gui 2000a
被配置为呈现“拓扑”视图,并且已经启用了展露过滤控件
2060a
的过滤功能

过滤控件
2060a
包括文本框,在该文本框中输入过滤标准
(
例如,“命名空间=
ns1”)
或移除过滤标准
(
例如,通过选择输入的过滤标准旁边的“x”)。
过滤控件
2060a
还包括确认输入的过滤标准的确认复选标记控件

移除过滤标准的删除
(“x”)
控件

以及保存确认的过滤标准的保存过滤控件

给定“命名空间=
ns1”的过滤标准,
gui 2000a
已经过滤了网络的拓扑以经由图形表示
2002a
仅示出与命名空间命名“ns1”相关联的图形节点

过滤可以使用户能够仅关注与实现给定目标和
/
或功能相关的网络拓扑的特定部分

[0349]
尽管本文所述为使得
gui 2000a
响应于选择各种图标

控件等来执行各种功能,但是应当理解,
gui 2000a
可以与网络控制器
24
对接以响应于选择各种图标

控件等来提供各种输入,于是网络控制器
24
可以更新
gui 2000a
以展露和
/
或执行归于
gui 2000a(
以及本文所述的其他示例
gui)
的各种功能

[0350]
接下来参考图
10b
的示例,
gui 2000b
示出了选择视图控件
2030a
以示出图例框
2070
的结果

图例框
2070
提供了将图标与不同类型的网络元件相关联的图例,诸如“虚拟网络路由器-网格”、“虚拟网络路由器-中心”、“虚拟网络路由器-辐条”、“虚拟网络”和“集群”。
图例框
2070
还识别不同的拓扑状态,诸如“选择的”、“错误”、“单向的”、“连接的”、“连接选择的”、“连接错误”和“连接未决”,将这些不同的拓扑状态链接到每个拓扑状态的图形表示

[0351]
接下来参考图
10c
的示例,
gui 2000c
示出了选择过滤控件
2060a
中的“ ”以展露过滤标准提示框
2080
的结果

过滤标准提示框
2080
可经由下拉框

文本框

单选按钮

复选框等提示用户指定可应用于当前图形表示
2002a
的过滤标准,以进一步从网络拓扑的图形表示
2002a
中滤出图形元件
(
例如,图形节点
2004
,诸如图形边
2014a
等的图形边
)。
[0352]
在图
10d
的示例中,
gui 2000d
示出了接收对编辑模式控件
2040b(
在图
10a

10c
的示例中示出
)
的选择的结果,该选择使得
gui 2000d
展露包括各种图标的编辑模式控件面板
2090
,这些图标指示
(
从左到右,以复选标记图标开始并以过滤图标结束
)“接受”、“编辑”、“查看配置”、“取消”、“删除”、“搜索”和“过滤”。
接收对编辑模式控件
2040b
的选择还使得
gui 2000d
展露具有图标
2094a

2094e(
其中图标可以表示具有附加图形图像和
/
或文本的按钮形式
)
的添加模式控件面板
2092。
[0353]
图标
2094a
在被选择时
(
通过用户与
gui 2000d
通过接口连接
)
可使
gui 2000d
启动一系列提示,通过该提示添加具有网格连通性的
vnr。
图标
2094b
在被选择时可使
gui 2000d
开始一系列提示,通过这些提示添加具有辐条式连通性的
vnr。
图标
2094c
在被选择时可使
gui 2000d
发起一系列提示,通过这些提示添加具有中心连通性的
vnr。
图标
2094d
在被选择时可以使
gui 2000d
发起一系列提示,通过该提示添加
vn
,而图标
2094e
在被选择时可以使
gui 2000d
发起一系列提示,通过提示添加图形元件
(
例如,
vn

/

vnr)
之间的连接
(
或换句话说,图形边
)。
[0354]
接下来参考图
10e
的示例,
gui 2000e
示出了选择图标
2094b
的结果,通过该图标
2094b
添加具有辐条式连通性的
vnr
,其展露了提示
2100
,通过该提示
2100
定义配置数据以添加具有辐条式连通性的新
vnr。
提示
2100
被示出为具有多个不同图形输入元件
(
诸如按钮

下拉框

文本框

预览

自适应文本框
(
例如,具有基于定义网络拓扑的底层配置数据的文本完成,以及便于用户交互的其他自适应

预填充和
/
或其他动态元件
)
等的弹出对话框

虽然被描述为弹出框,但是
gui 2000e
可以以任何方式呈现提示
2100
,诸如通过弹出窗口

单独的
gui、
附加标签

扩展框等

[0355]
在任何情况下,图
10e
的示例中所示的提示
100
包括模式切换
2102a

2102b、
命名空间下拉框
2104、vnr
命名文本框
2106、
描述文本框
2108、vnr
类型切换
2110a

2110c、
可扩展提示部分
2112a

2112c、
预览部分
2114。
当切换
2102a
被选择时
(
再次由用户选择
)
,可使
gui 2000e
呈现如图
10e
的示例中所示的提示
2100
,切换
2102b
当被选择时,可使
gui 2000e
呈现
yaml
文本编辑器,用户可通过该
yaml
文本编辑器使用
yaml(
或换言之,符合
yaml
的代码
)
定义新
vnr
的配置数据

[0356]
命名空间下拉框
2104
可以允许用户选择先前定义的命名空间,在该命名空间中添加具有辐条式连通性的新
vnr。vnr
命名文本框
2106
可以使用户能够针对具有辐条式连通性的新
vnr
输入
vnr
命名

描述文本框
2108
可使用户能够输入具有辐条式连通性的新
vnr
的描述
。vnr
类型切换
2110a

2100c
可以使用户能够改变新
vnr
的连通性
(
这也可以使得提示
2100
的各种元件的更新,诸如可扩展的提示部分
2112a

2112c)
,其中
vnr
类型切换
2110a
可以将连通性切换到网格连通性,
vnr
类型切换
2110b
可以将连通性切换到辐条式连通性
(
这是基于选择通过图标
2094a

2094c
添加哪种类型的
vnr
的默认情况
)

vnr
类型切换
2110c
可以将连通性切换到中心连通性

[0357]
可扩展提示部分
2112a

2112c
可基于选择了哪个
vnr
类型切换而被动态填充

在图
10e
的示例中,
vnr
类型切换
2110b
已被选择,这导致可扩展的提示部分
2112a

2112c。
然而,根据哪个
vnr
类型切换
2110a

2110c
已被选择,提示
2100
可以包括不同的

更多的

或更少的可扩展的特定于经由
vnr
类型切换
2110a

2110c
选择的特定
vnr
类型的提示部分

[0358]
可扩展提示部分
2112a
包括各种图形元件,通过这些图形元件,根据
vnr
键和
vnr
标签指定
vnr
标签

可扩展提示部分
2112b
包括各种图形元件,通过这些图形元件指定用于新
vnr

vn。
可扩展提示部分
2112c
包括各种图形元件,通过这些图形元件指定新的辐条
vnr
应该被配置为与之连接以启用中心辐条式连通性的中心
vnr(
在潜在的
vnr
标签和
/
或命名空间的上下文中
)。
[0359]
预览部分
2114
可以表示通过其预览除
vnr
连通性类型之外的新
vnr
的配置的部分

假设用户没有完成提示
2100
的任何部分,预览部分
2114
提供具有相应
vnr
连通性类型
(
即,图
10e
的示例中的辐条式连通性
)
的新
vnr(
其可以被称为占位符辐条
vnr 2116)
的占位符图形表示
2116。
在该示例中,预览部分
2114
还包括启用预览切换以启用或禁用预览部分
2114。
[0360]

10f
是图示图
10e
的示例中所示的更新提示
2100
以定义具有命名“vnr11”的新辐条
vnr
的结果的示图

命名空间下拉框
2104
已经填充了定义新辐条
vnr
所属的命名空间为“命名空间
1(namespace 1)”的输入
。vnr
命名文本框
2106
已填充指定上述命名“vnr11”的输入

描述文本框
2108
已填充指定“默认网络的
vnr”描述的输入

[0361]
可扩展提示部分
2112a
已经填充了将键定义为“站”该站中的标签为“sjc”的输入

可扩展提示部分
2112b
已经动态填充
(
例如,通过
gui 2000f)
了受经由过滤控制面板
2150
输入的过滤标准限制的各种
vn(
通过命名和命名空间
)(
其中,这样的过滤标准
‑“
站=
svl
”‑
指示将返回
svl
站处的所有
vn)。
[0362]
gui 2000f
可以动态更新提示
2100
的预览部分
2114
,以反映上述每个输入和
/
或动态填充事件的条目
(
通过
gui 2000f)。
在图
10f
的示例中,
gui 2000f
可以更新提示
2100
的预览部分
2114
,以将占位符辐条
vnr 2116
替换为具有辐条图标以及反映新
vnr
的命名
(“vnr11”)
和新辐条
vnr
的连通性类型
(“辐条”)
的文本的辐条
vnr 2118。gui 2000f
还可更新提示
2100
的预览部分
2114
,以表示与各种匹配
vn
的潜在连通性
(
如由虚线边定义的
)
,将匹配
vn
表示出为具有
vn
图标

标有“25vn
匹配”的文本和进一步识别匹配
vn
的数量
(“25”)
的标记的图形节点
2120。
[0363]
接下来参考图
10g
的示例,
gui 2000g
示出了根据将先前输入的过滤标准
(“site

svl”)
与新输入的过滤标准
(“redis in 19,50”)
结合,将进一步的过滤标准添加到过滤控制面板
2150
连同动态过滤辅助提示
2152
的结果

动态过滤辅助提示
2152
可以建议布尔运算符,诸如图
10g
中所示的“and”和“or”的示例

虽然建议了示例性布尔运算符,但是动态过滤辅助提示
2152
可以指定任何类型的过滤标准运算符,诸如数学运算符

关键字

值等

[0364]
在图
10h
的示例中,
gui 2000h
示出扩展可扩展提示部分
2112c
的结果,通过其,用户可以选择新的辐条
vnr
要连接到的中心
vnr
以配置中心辐条式连通性

可扩展提示部分
2112c
通知用户新的辐条
vnr
将连接到与下面选择的
vnr
标记和命名空间组合匹配的所有中心
vnr
,然后列出各种中心,允许用户选择
(
经由复选框
)
新辐条
vnr
应连接到与
vnr
标签和命名空间组合匹配的现有中心
vnr
中的哪一个

用户还可以与可扩展提示部分
2112c
接口以添加不同的中心
vnr(
经由“ ”图标
)
,编辑列出的中心
vnr(
经由铅笔图标
)
,以及删除各种中心
vnr(
经由垃圾桶图标
)。
[0365]
在图
10i
的示例中示出的
gui 2000i
的结果,示出在可扩展提示部分
2112c
中取消选择中心
vnr
,这使得
gui 2000i
更新提示
2100
的预览部分
2114。
预览部分
2114
更新潜在拓扑的预览,以将潜在连通性添加到三
(3)
个匹配中心
vnr
,这由从图形节点
2120
到代表三个潜在匹配中心
vnr
的新图形节点
2122
的虚线边表示

图形节点
2122
包括与中心
vnr
相关联的图标

标注“3
个中心匹配”的文本,以及强调匹配中心数量
(“3”)
的标记

[0366]
在这方面,
gui 2000f

2000i
由网络控制器
24
配置以动态地生成图形元件,该图形元件包括与虚拟网络路由器的连通性类型相关联的图形图标

在动态地生成图形元件
(
例如,该示例中的图形节点
)
时,网络控制器
24
可接收来自用户的指示
vnr
的连通性类型
(
例如,辐条式连通性
)
的输入,并选择与虚拟网络路由器的连通性类型相关联的图形图标

网络控制器
24
然后可以配置
gui 2000f

2000i
中的一个或多个来呈现包括与虚拟网络路由器的连通性类型相关联的图形图标的图形元件

[0367]

10j
是示出交互的动态流的图,通过该交互,用户可以与
gui 2000j
接口以图形地将代表
vn
的图形节点
2004g(
其可以被称为“vn8 2004g”)
连接到代表网格
vnr
的图形节点
2008c(
其可以被称为“网格
vnr52008c”)。
交互的动态流由以数字一
(1)
开始并以数字五
(5)
结束的编号虚线圆圈表示

[0368]
在动态流步骤1,用户最初可以选择
(
例如,经由鼠标左击
)
来展露
gui 2000j
可以用
vn8 2004g(

/
或可能图形节点
2004g
的特定类型
vn)
专用的选项来填充的选项提示
1500b
,并且来自
vn 1500b
的所有路由被引出到
vn 1500a
,经由
vnr 1506
,来自
vn 1500b
的所有路由将被引入到
vn 1500a
,并且来自
vn 1500a
的所有路由将被引入
vn 1500b。
这种引入
/
引出策略通常被称为对称的,因为每个
vn
的所有路由在每个其他
vn
之间交换,从而创建网格

[0377]
vnr 1506
可通过在公共路由实例
(ri
,示出为“vnr-rt”)
的上下文内创建公共路由目标
(
示出为“vnr-rt”,其中
rt
表示路由目标
)“安装”,在公共路由实例中,引入
/
引出策略被定义为从每个
vn 1500
引入和引出到
vnrrt
的所有路由

一旦这些策略被定义并安装在与
vn 1500
相关联的
sdn
架构
700

(
例如,在路由平面中
)
,则路由将被引入并引出到
vnr-rt
中的每一个的
vrf
中,并被解析以生成转发信息
。vnr-ri

vnr-rt
的实例可以是用于
sdn
架构配置的定制资源的实例

[0378]
控制节点
232
可以生成配置数据形式的转发信息并与虚拟路由器代理
514
接口以将配置数据提供给虚拟路由器代理
514
,虚拟路由器代理
514
可以将转发信息安装到虚拟路由器
506
以实现
vn 1500
的相应
vrf(
例如,图5的示例中所示的
vrf 222a)。
一旦安装,转发信息使得虚拟路由器
506
和具有用于
vn 1500

pod
的其他计算节点中的其他虚拟路由器正确地用于
vn
间流量

这些虚拟路由器可以使用泄漏的路由信息在
pod1502
之间正确地转发
ping
,如图
10
的示例所示,通过指示
ping

pod-2(

pod 1502a)“通过”以及
ping

pod-1(

pod 1502b)“通过”。
[0379]

12
是图示了根据本公开所述的技术的各方面的其中虚拟网络路由器可被配置为实现虚拟网络之间的网格互连性的第二实例的示图


12
中所示的示例由图
11
中所示的示例构建,其中
vnr 1506
提供
vn 1500
之间的网格互连性,这允许相同命名空间
1504
中的
pod 1502
彼此对称地通信

[0380]
在图
12
的示例中,
vn 1500c

vn 1500d(
也分别示出为“vn3”和“vn4”)
被定义在相同的命名空间
1504
内,并且为相应的
pod 1502c

pod 1502d(
也示出为“pod-3”和“pod-4”)
提供联网连通性

为了将
vn 1500c

vn 1500d
添加到由
vnr 1506
提供的网格,管理员可将“vn

web”标记添加到
vn 1500c

vn 1500d。
[0381]
在添加对应于网格
vnr 1506
的标签之后,网络控制器
24
可通过生成引入和引出策略以经由
vnr
公共路由目标
(“vnr-rt”)
引出和引入
vn 1500c

vn 1500a、vn 1500b

vn 1500d
之间的所有路由,并且再次经由
vnr
公共路由目标
(“vnr-rt”)
引出和引入
vn 1500d

vn 1500a

1500c
之间的所有路由,将
vn 1500c

vn 1500d
添加到网格
vnr 1506。
即,控制节点
232
可能仅需要生成将路由从
vnr-rt
引入
vn 1500c

vn 1500d
以及将路由从
vn 1500c

vn 1500d
引出到
vnr-rt
的策略

通过使用
vnr 1506
的公共路由目标,在一些情况下,路由可以在所有
vn 1500a

1500d
之间自动地被引出,而不必更新任何现有策略
(
诸如现有
vn 1500a

vn 1500b
的引入
/
引出策略
)。
[0382]
在任何情况下,控制节点
232
可以将路由解析为转发信息,并与虚拟路由器代理
514
通过接口连接,以便以与上面参照图
10
所述的方式类似的方式安装转发信息

在安装转发信息之后,每个
pod 1502a

1502d
可以具有与每个其他
pod 1502a

1502d
的网格网络连通性,如通过相对于每个其他
pod 1502a

1502d
的“通过”ping
状态所示
(
例如,
pod 1502a
,表示为“pod-1”,对于每个
pod 1502b

1502d
,具有“通过”ping
状态,对于每个其他的
pod 1502b

1502d
之一,表示为“pod-2、pod-3、pod-4”等
)。

12
以这种方式图示了向使用
vnr

连的
vn
的网格添加附加
vn
可以通过简单地向
vn
实例添加适当的标签来实现,这里,“vn

web”。
[0383]

13a

13b
是图示了根据本公开所述的技术的各个方面的第三实例的图,在该第三实例中,虚拟网络路由器可以被配置为实现虚拟网络之间的网格互连性

在该示例中,与图
12
的示例不同,
vn 1500c

vn 1500d
被耦接到图
13a
的示例中的
vnr 1506b
,以提供
vn 1500c

vn 1500d(
右侧
)
之间的网格网络连通性,其中,图
12
的示例中的
vnr 1506
被图
13a
的示例中的类似
vnr 1506a
代替,以提供
vn 1500a

vn 1500b(
左侧
)
之间的网格网络连通性

[0384]
vnr 1506a
在命名空间
1504
的上下文中具有与
vnr 1506b
的路由实例
(
示出为“vnr-2-ri”)
不同的唯一路由实例
(“vnr-ri”)。vnr 1506a
提供
vnr-rt
,而
vnr 1506b
提供
vnr-2-rt(
尽管给定不同
/
唯一路由实例,但
rt
可以是相同的
)。
此外,
vnr 1506a
具有标签选择“vn

web”,其选择
vn 1500a

vn 1500b
,而
vnr 1506b
具有标签选择“vn

db”,其为指派给
vn 1500c

vn 1500d
的标签

这样,
pod 1502a

1502db
不具有与
pod 1502c

pod 1502d
的网络连通性
(
由“失败”ping
状态表示
)
,而
pod 1502c

pod 1502d
不具有与
pod 1502a

pod 1502b
的网络连通性
(
由“失败”ping
状态表示
)。
[0385]
为了使
pod 1502a

1502d
具有网格网络连通性
(
因为
vnr 1506a

1506b
都是“网格”类型
)
,管理员可以添加标签选择语句来选择其他
vnr 1506a

1506b
的标签

接下来参考图
13b
的示例,
vnr 1506a
现在包括标签选择语句“vnr

db”,网络控制器
24
将其转换成用于
vnr-db-rt
的引入和引出策略,从而从
/

vnr 1506b

vnr-db-rt
引入和引出路由

类似地,
vnr 1506b
现在包括标签选择语句“vnr

web”,网络控制器
24
可将其转换成从
/

vnr 1506a

vnr-web-rt
的引入和引出路由

连接到
vnr 1506a(“vnr-web”)

vnr 1506b(“vnr-db”)

vn
的所有
pod
可以通过使得
vnr 1506a、vnr 1506b
引入
/
引出彼此的路由,以此方式使得能够使用
vnr
和标签彼此通信

[0386]
再次,网络控制器
24(
例如,定制资源控制器
302)
可以在路由平面内部署这些策略,该路由平面然后可以执行路由信息交换

控制节点
232
可以将交换的路由信息解析成转发信息,并与虚拟路由器代理
512
通过接口连接,以便以类似于以上参照图
11
所述的方式安装转发信息虚拟路由器
506。
因此,
pod 1502a

1502d
之间的网格连通性被建立,如通过
pod1502a

1502d
中的彼此的成功“通过”ping
状态所证明的

[0387]

14a

14b
是图示了根据本公开所述的技术的各方面的其中虚拟网络路由器可被配置为实现虚拟网络之间的网格互连性的第四实例的示图

在图
14a
的示例中,除了
vn 1500a

vn 1500b

pod 1502a

pod1502b
以及
vnr 1506a
在第一命名空间
1504a(
示出为“命名空间-1”)
中,而
vn 1500c

vn 1500d

pod 1502c

pod 1502d
以及
vnr 1506b
在不同的第二命名空间
1504b(
示出为“命名空间-2”)
中之外,一般网络结构与图
13a
的示例中所示的相似

[0388]
假定命名空间
1504a

1504b

vn 1500a/1500b、pod 1502a/1502b

vnr 1506a

vn 1500c/1500d、pod 1502c/1502d

vnr 1506b
隔离,则必须有跨命名空间
1504a

1504b
引入路由信息的授权,因为每个命名空间
1504a

1504b
可由单独的组管理,而没有跨命名空间
1504a

1504b
的共享管理权限

这样,可以向两个命名空间
1504a

1504b
的管理员发送请求,以确认允许在
vnr 1506a

1506b
之间引入和引出路由信息

1502b
可以与中心
pod 1502c
通信,但是不能在彼此之间通信,因为辐条
pod1502a

pod 1502b
不能在每个中心辐条式网络连通性下彼此通信

[0397]

16
是图示了第六实例的示图,在该第六实例中,虚拟网络路由器可以被配置为根据本公开所述的技术的各方面来实现虚拟网络之间的中心辐条式互连性


16
所示的示例类似于图
15
所示的示例,除了在该示例中,中心
vnr 1516a、vn 1500c

pod 1502c
在一不同的命名空间
1504b(
示出为“命名空间-2”)
中,而辐条
vnr 1516b、vn 1500a

vn 1500b
以及
pod 1502a

pod 1502b
在第一命名空间
1504a(
示出为“命名空间-1”)


[0398]
在这种情况下,
vn 1500a

1500c
仅可以与相同命名空间中的
vnr 1516a

1516b
互连,并且出于上述原因,仅辐条
vnr 1516b
和中心
vnr 1516a
可以跨命名空间
1504a

1504b
通信

假设授权由两个命名空间
1504a

1504b
的管理员给出,在图
16
的底部示出的中心辐条式连通性可以以类似于
(
如果不是基本上类似于
)
以上关于图
15
的示例描述的方式来启用

[0399]

17
是图示了第七实例的示图,在该第七实例中,虚拟网络路由器可以被配置为根据本公开所述的技术的各方面来实现虚拟网络之间的中心辐条式互连性


17
中所示的示例类似于图
15
中所示的示例,除了提供了允许
vn 1500a

1500d
之间的修改的中心辐条式互连性的附加网格
vnr 1506。
[0400]
在图
17
的实例中,
vn1500a

1500d
最初不能彼此通信
(
每“失败”ping
状态
)
,直到中心
vnr 1516a
和辐条
vnr 1516b
被例示,被部署为策略,路由信息被交换,然后被解析,并且转发信息被安装在虚拟路由器
506
中,如上更详细地描述的

这使得
vn 1500c

vn 1500d
能够向公共中心-rt(“vnr-中心-rt”)
引出路由信息,而
vn 1500a

vn 1500b
向公共辐条-rt(“vnr-辐条-rt”)
引出路由信息

辐条
vnr 1516b
可以向
vnr-中心-rt
输出所有路由信息,这使中心
pod 1502c

1502d
能够与辐条
pod 1502a

1502b
中的每个其他进行通信

辐条
pod 1502a

1502b
可以与每个其他的中心
pod 1502c

1502d
通信,但不与辐条
pod 1502a

pod 1502b
中的另一个通信

[0401]
为了使中心
pod 1502c

1502d
能够彼此直接通信,管理员可以例示网格
vnr 1506
,其使得能够将路由信息引出到与以上关于图
10
的示例所描述的类似的单独的网格-vnr。
以这种方式,中心
pod 1502c

1502d
可以直接彼此通信,因为所有路由信息都经由网格-rt

vn 1500c

vn 1500d
之间交换

[0402]

18a

18d
是图示了根据本公开所述的技术的各方面在
sdn
架构内建立一个或多个虚拟网络路由器时所执行的操作的流程图

首先参考图
18a
的示例,网络控制器
24

vnr
控制器
(
例如,定制资源控制器
302
中的一个,诸如图6的示例中所示的定制资源控制器
302a)
可初始识别
(
或换句话说,观看
ectd
数据库以识别
)
具有名称
vn-1

vn

web
的标签的
vn 50a
连同具有名称
vn-2

vn

web
的标签的
vn 50n
被创建为与网络控制器
24
相关联的
etcd
数据库中的定制资源
(
例如,图6的示例中所示的配置存储
1328)
,其中网络控制器
24
的控制器管理器
(
例如,控制器管理器
1326)
调用网络控制器
24
的调度器
(
例如,调度器
1322)
以创建
vn 50a

50n(
例如,
1702、1704、1700)。
[0403]
经由网络控制器
24

kube-api(
其再次可指图6的示例中所示的
api
服务器
300a

/
或定制
api
服务器
301a)
,管理员可例示
vnr 52a
以互连
vn50a

50n
,将类型指定为网格以及标签“vn:web”。kube-api
更新
etcd
数据库以存储创建
vnr 52a
的新定制资源,并声明
vnr 52a
的创建在
etcd
数据库内未决
(1706、1708、1710)。
[0404]
网络控制器
24
的调度器接下来可以从
etcd
数据库接收已经定义了新的定制资源的通知,其然后与控制器管理器接口以通知控制器管理器
vnr
创建请求
(1712、1714、1716)。
控制器管理器可与
vnr
控制器接口,以请求
vnr
协调,其为
vnr 52a
创建
ri
,将新的
ri
提供给
kube-api(1718)
,以便
kube-api
可更新
etcd
,以反映新的
ri

vnr 52a
的分配
(1720)。
[0405]
然后
etcd
数据库可以与调度器接口以指示存在
vnr-ri
创建事件
(1722)
,其进而与控制器管理器接口以向控制器管理器通知
vnr-ri
创建
(1724)。
控制器管理器然后与网络控制器
24

ri
控制器通过接口连接,以请求
vnr-ri
协调
(1726)。
[0406]
接下来参考图
18b
的示例,网络控制器
24

ri
控制器可执行
vnr-ri
的协调,以便为
vnr-1-ri
创建
rt
,将
vnr-1-ri
报告回
kube-api(1728)。kube-api
可更新
ectd
,以注意
vnr-1-rt
已创建,这可向
kube-api
报告
vnr-1-rt
未决,然后被成功创建
(1730

1732)。kube-api
然后可以与
vnr
控制器接口以指示
vnr-1-ri
被创建,这又可以从
ri
获得
vnr-1-rt(1734

1736)。
[0407]
vnr
控制器接下来可以与
kube-api
通过接口连接以识别具有标签
vn

web

vn 50
的列表
(1740)
,其中
kube-api
可以返回
vn 50a

50n
命名
vn-1

vn-2(1742)。vnr
控制器可以再次与
kube-api
通过接口连接以获得
vn-1

vn-2

ri(1744)
,其继续与
kube-api
通过接口连接以在
vn-1-ri、vn-2-ri
状态下补丁
vnr-1-rt(1746)。kube-api
然后更新
vn-ri
补丁事件的
ectd(1748)。ectd
然后通知调度器补丁事件
(1750)
,其通知控制器管理器补丁事件
(1752)。
[0408]
参考图
18c
的示例,响应于补丁事件,控制器管理器请求
ri
控制器执行
vn-ri
协调
(1754)
,其在请求处于
vn-1-ri、vn-2-ri
状态的
kube-api
补丁
vnr-1-rt
之前对
vn-ri
执行协调
(1756)。
响应于补丁请求,
kube-api
更新
ectd
中的
vn-1-ri
以包括用于引入和引出到
vnr-1-rt(vnr
公共路由目标
)
的策略,并更新
vn-2-ri
以包括用于引入和引出到
vnr-1-rt(vnr
公共路由目标
)
的策略
(1758)。ectd
将补丁的状态报告回
kube-api(1760)。
响应
vn-1-ri

vn-2-ri
的补丁的状态,
kube-api

ri
控制器通过接口连接以在
vnr-ri
补丁
vnr-1-rt(1762)
,其中
ri
控制器将补丁状态报告回
kube-api(1764)。
[0409]
接下来参考图
18d
的示例,
kube-api

etcd
通过接口连接以更新补丁事件上的
etcd
,其与调度器接口以向调度器通知补丁事件
(1766

1768)。
调度器然后与控制器管理器通过接口连接以将
vnr-ri
补丁通知给控制器管理器,其又从
vnr
控制器请求
vnr-ri
协调
(1770

1772)。ri
控制器在
vnr-ri
处补丁
vnr-1-rt
,并通知
kube-api
补丁
(1774

1776)。kube-api
更新补丁上的
etcd(1778)
并与
ri
控制器接口以设置
vnr-1
状态以指示“成功”)
,随后
kube-api

vnr-1
状态成功时更新
ectd(1780)。
[0410]
以下提供了
vnr api
模式的详细设计
(
作为
yaml
文件
)

[0411]
[0412]
[0413]
[0414][0415]

19
是图示了图1的示例中所示的计算机架构在执行本文所述的技术的各个方面时的操作的另一流程图

如上关于图1的示例所述,网络控制器
24
可以呈现
gui 60。
在一些示例中,
gui 60
可以表示基于
web

gui
,网络控制器
24
可以经由客户端设备
(
诸如远程计算机或其他终端
)
远程托管该基于
web

gui
以用于显示
。gui 60
可以被配置为图形地表示由软件定义网络
(sdn)
架构系统8支持的网络的拓扑

出于说明的目的,假设网络包括
vn 50a

vn 50n。
然而,网络可以包括任何数量的
vn 50
或其他网络元件

[0416]
网络控制器
24
可以维护定义网络的拓扑的配置数据
(
在图1的示例中未示出
)
,该网络控制器
24
可以将其变换成网络的拓扑的图形表示

网络拓扑的图形表示可以便于查看网络的一部分或全部,其中
gui 60
可以提供过滤和其他操作,以使得用户能够以各种粒度级别查看网络拓扑的图形表示,如下面更详细描述的

[0417]
gui 60
还可以被配置为动态地生成表示
vnr 52a
的图形元件,通过该图形元件互连
vn 50a

vn 50n。gui 60
可以接收来自用户的标识
vnr 52a

vn 50a

50n
的输入,诸如指示代表
vnr
的图形元件
(
例如,图形图标
)
已被拖到可能接近

邻近和
/
或在
vn 50a

50n
中的一个或多个之上的网络拓扑上的输入
。gui 60
可以将这些输入提供回网络控制器
24
,该网络控制器
24
可以响应于这些输入,更新
gui 60
以包括关于
vnr 52a

vn 50a

50n
的信息的附加提示

[0418]
gui 60(
经由网络控制器
24)
可以以这种方式迭代,直到
vnr 52a
已经以实现
vn 50a

50n
之间的连通性的方式被成功定义

在这方面,网络控制器
24
可以呈现
ui 60
,该
ui 60
被配置为图形地表示网络的拓扑,并且动态地生成表示虚拟网络路由器的图形元件,通过虚拟网络路由器来互连包括在网络中的
vn 50a/50n(1800)。
[0419]
网络控制器
24
可以执行配置节点
30
以在调用控制节点
32
来配置
vn 50a

50n
之前
验证
vnr 52a。
一旦被成功验证,控制节点
32
就根据一个或多个策略来配置
vn 50a

50n
,以允许经由
vnr 52a

vn 50a

vn 50n
之间引入和引出路由信息中的一个或多个

换言之,网络控制器
24
可以执行控制节点,该控制节点被配置为根据由
vnr 52a
表示的一个或多个策略来配置
vn 50a/50n
,其使能
vn 50a/50n
之间的路由信息的引入和引出中的一个或多个
(1802)。
[0420]
以此方式,该技术的各个方面可实现以下示例

[0421]
示例
1.
一种用于软件定义网络
(sdn)
架构系统的网络控制器,该网络控制器包括:被配置为存储用户界面的存储器;处理电路,被配置为呈现该用户界面并执行控制节点,其中该用户界面被配置为:图形地表示该软件定义网络
(sdn)
架构系统支持的网络的拓扑,该网络包括第一虚拟网络和第二虚拟网络;以及动态地生成表示虚拟网络路由器的图形元件,该虚拟网络路由器用于互连该第一虚拟网络和该第二虚拟网络,该虚拟网络路由器表示使得该第一虚拟网络和该第二虚拟网络之间的路由信息的引入和引出中的一个或多个的一个或多个策略的逻辑抽象,其中,该控制节点根据该一个或多个策略配置该第一虚拟网络和该第二虚拟网络,以实现经由该虚拟网络路由器在该第一虚拟网络和该第二虚拟网络之间引入和引出路由信息中的一个或多个

[0422]
2.
根据示例1的网络控制器,其中,该用户界面被配置为在图形地表示该网络的拓扑时呈现表示该第一虚拟网络的第一图形元件和表示该第二虚拟网络的第二图形元件

[0423]
示例
3.
根据示例1和示例2的任何组合的网络控制器,其中该用户界面被配置为当图形地表示该网络的拓扑时:从用户接收指示该虚拟网络路由器的连通性类型的输入;选择与该虚拟网络路由器的连通性类型相关联的图形图标;以及动态地生成包括与虚拟网络路由器的连通性类型相关联的图形图标的图形元件

[0424]
示例
4.
根据示例3的网络控制器,其中,该连通性类型包括网格连通性和中心辐条式连通性中的一个

[0425]
示例
5.
根据示例3的网络控制器,其中,该连通性类型包括网格连通性,并且其中由该网格虚拟网络路由器表示的该一个或多个策略包括使得该第一虚拟网络与该第二虚拟网络之间的该路由信息的该引入和该引出两者的对称的引入和引出策略

[0426]
示例
6.
根据示例3的网络控制器,其中该连通性类型包括中心辐条式连通性;并且其中由该中心虚拟网络路由器表示的该一个或多个策略包括非对称的引入和引出策略,该非对称的引入和引出策略使得将该路由信息从该第一辐条式虚拟网络和该第二辐条式虚拟网络两者引出到该虚拟网络路由器,而不在该第一辐条式虚拟网络和该第二辐条式虚拟网络之间引入该路由信息

[0427]
示例
7.
根据示例
1-6
的任意组合的网络控制器,其中,该用户界面被配置为:当图形地表示该网络的拓扑时,从用户接收定义与该第一虚拟网络相关联的第一标签和与该第二虚拟网络相关联的第二标签的输入,并且其中,该处理电路执行配置节点,该配置节点基于该第一标签和该第二标签来识别:该第一虚拟网络和该第二虚拟网络用于根据该一个或多个策略来配置对应于该虚拟网络路由器的路由实例,以使得在该第一虚拟网络和该第二虚拟网络之间引入和引出该路由信息

[0428]
示例
8.
根据示例
1-7
的任意组合的网络控制器,其中,该第一虚拟网络与第一命名空间相关联,其中,该第二虚拟网络与第二命名空间相关联,其中,该虚拟网络路由器是第
一虚拟网络路由器,其中,该一个或多个策略包括第一策略和第二策略,其中,该第一虚拟网络路由器表示用于该第一虚拟网络和第二虚拟网络路由器之间的路由信息的引入和引出的第一策略,并且其中该第二虚拟网络路由器表示用于该第二虚拟网络和该第一虚拟网络路由器之间的路由信息的引入和引出的第二策略

[0429]
示例
9.
根据示例8的网络控制器,其中该第一虚拟网络路由器在部署该第一策略之前必须获得授权以将该第一虚拟网络路由器互连到该第二虚拟网络路由器

[0430]
示例
10.
根据示例
1-9
的任意组合的网络控制器,其中,该网络控制器支持容器编排系统

[0431]
示例
11.
根据示例
1-10
的任意组合的网络控制器,其中,该虚拟网络路由器是用于
sdn
架构的定制资源的实例,该定制资源用于
sdn
架构配置,并且其中,该处理电路执行定制资源控制器,以协调该
sdn
架构的状态与该虚拟网络路由器的预期状态,并且其中,该控制节点被配置为部署该虚拟网络路由器,以实现该虚拟网络路由器的该预期状态

[0432]
示例
12.
根据示例
1-11
的任何组合的网络控制器,其中,该虚拟网络路由器是使用公共路由实例和公共路由目标来实现的,其中,该第一虚拟网络使用第一路由实例和第一路由目标来实现,其中,该第二虚拟网络是使用第二路由实例和第二路由目标来实现的,并且其中,该控制节点被配置为将该第一路由实例

该第二路由实例和该公共路由实例的该引入和该引出与该第一路由目标

该第二路由目标和该公共路由目标进行配置,以便实现网格连通性

[0433]
示例
13.
根据示例
1-12
的任意组合的网络控制器,其中,使用第一多个计算节点的一个或多个第一虚拟路由器来实现该第一虚拟网络,并且其中,使用第二多个计算节点的一个或多个第二虚拟路由器来实现该第二虚拟网络

[0434]
示例
14.
根据示例
13
的网络控制器,其中该第一多个计算节点是第一
kubernetes
集群,并且其中该第二多个计算节点是第二
kubernetes
集群

[0435]
示例
15.
根据示例
1-14
的任意组合的网络控制器,其中,该控制节点将该路由信息解析为该第一虚拟网络和该第二虚拟网络中的一个或多个的转发信息,并将该转发信息安装在支持该第一虚拟网络和该第二虚拟网络之间的互连性的虚拟路由器中

[0436]
示例
16.
一种方法,包括:由用于软件定义网络
(sdn)
架构系统的网络控制器呈现用户界面,其中该用户界面被配置为:图形地表示该软件定义网络
(sdn)
架构系统支持的网络的拓扑,该网络包括第一虚拟网络和第二虚拟网络;以及动态地生成表示虚拟网络路由器的图形元件,该虚拟网络路由器用于互连该第一虚拟网络和该第二虚拟网络,该虚拟网络路由器表示使得该第一虚拟网络和该第二虚拟网络之间的路由信息的引入和引出中的一个或多个的一个或多个策略的逻辑抽象;以及由该网络控制器执行控制节点,该控制节点根据该一个或多个策略来配置该第一虚拟网络和该第二虚拟网络,以实现经由该虚拟网络路由器在该第一虚拟网络和该第二虚拟网络之间引入和引出路由信息中的一个或多个

[0437]
示例
17.
根据示例
16
的方法,其中图形地表示该网络的拓扑包括呈现表示该第一虚拟网络的第一图形元件和表示该第二虚拟网络的第二图形元件

[0438]
示例
18.
根据示例
16

17
的任何组合的方法,其中图形地表示该网络的拓扑包括:从用户接收指示该虚拟网络路由器的连通性类型的输入;选择与该虚拟网络路由器的连通性类型相关联的图形图标;以及动态地生成包括与虚拟网络路由器的连通性类型相关联的
图形图标的图形元件

[0439]
示例
19.
根据示例
18
的方法,其中,该连通性类型包括网格连通性和中心辐条式连通性中的一个

[0440]
示例
20.
一种非暂时性计算机可读介质,该非暂时性计算机可读介质包括用于使软件定义网络
(sdn)
架构系统的网络控制器的处理电路执行以下操作的指令:呈现用户界面,其中该用户界面被配置为:图形地表示由该软件定义网络
(sdn)
架构系统支持的网络的拓扑,该网络包括第一虚拟网络和第二虚拟网络;以及动态地生成表示虚拟网络路由器的图形元件,通过该虚拟网络路由器来互连该第一虚拟网络和该第二虚拟网络,该虚拟网络路由器表示一个或多个策略的逻辑抽象,该一个或多个策略使得在该第一虚拟网络和该第二虚拟网络之间的路由信息的引入和引出中的一个或多个;以及执行控制节点,该控制节点根据该一个或多个策略来配置该第一虚拟网络和该第二虚拟网络,以实现经由该虚拟网络路由器在该第一虚拟网络和该第二虚拟网络之间的路由信息的引入和引出中的一个或多个

[0441]
如果以硬件实现,则本公开可针对一种设备,诸如处理器或集成电路装置,诸如集成电路芯片或芯片组

可替代地或另外,如果以软件或固件实现,那么该技术可至少部分地由包括指令的计算机可读数据存储媒体实现,该指令在执行时致使处理器执行上文所描述的方法中的一个或多者

例如,计算机可读数据存储介质可以存储此类指令以供处理器执行

[0442]
计算机可读介质可以形成计算机程序产品的一部分,该计算机程序产品可以包括封装材料

计算机可读介质可以包括计算机数据存储介质,诸如随机存取存储器
(ram)、
只读存储器
(rom)、
非易失性随机存取存储器
(nvram)、
电可擦除可编程只读存储器
(eeprom)、
闪存

磁或光数据存储介质等

在一些示例中,制品可以包括一个或多个计算机可读存储介质

[0443]
在一些示例中,计算机可读存储介质可以包括非暂时性介质

术语“非暂时性”可以指示存储介质不被体现在载波或传播信号中

在某些示例中,非暂时性存储介质可以存储可以随时间变化的数据
(
例如,在
ram
或高速缓存中
)。
[0444]
代码或指令可以是由处理电路执行的软件和
/
或固件,该处理电路包括一个或多个处理器,诸如一个或多个数字信号处理器
(dsp)、
通用微处理器

专用集成电路
(asic)、
现场可编程门阵列
(fpga)
或其他等效的集成或离散逻辑电路

因此,如本文中所使用的术语“处理器”可指代前述结构中的任一个或适合于实现本文所述的技术的任何其他结构

另外,在一些方面中,本公开所述的功能性可提供于软件模块或硬件模块内

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
网站地图