Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

瞻博网络云原生路由器组件

瞻博网络云原生路由器解决方案由多个组件组成,包括云原生路由器控制器、数据平面开发套件 (DPDK) 或扩展伯克利数据包过滤器 (eBPF)、基于 eXpress 数据路径 (XDP) 数据路径的云原生路由器 vRouter 和 JCNR-CNI。本主题简要概述瞻博网络云原生路由器的组件。

云原生路由器组件

瞻博网络云原生路由器主要包含三个组件:云原生路由器控制器控制平面、云原生路由器 vRouter 转发平面和用于 Kubernetes 集成的 JCNR-CNI。所有云原生路由器组件都部署为容器。

图 1 显示了使用基于 DPDK 的 vRouter 实施时 Kubernetes 群集中的瞻博网络云原生路由器的组件。

图 1:瞻博网络云原生路由器(DPDK 数据路径) Components of Juniper Cloud-Native Router (DPDK Datapath)的组件

图 2 显示了使用基于 eBPF XDP 的 vRouter 实施时,Kubernetes 群集中的瞻博网络云原生路由器的组件。

图 2:瞻博网络云原生路由器的组件(eBPF XDP 数据路径) Components of Juniper Cloud-Native Router (eBPF XDP Datapath)

云原生路由器控制器

云原生路由器控制器是运行 Junos 容器化路由协议守护程序 (cRPD) 的云原生路由器解决方案的控制平面。它是作为有状态集实现的。控制器与云原生路由器的其他元素进行通信。部署时在控制器上设置的配置、策略和规则将传达给云原生路由器、vRouter 和其他组件进行实施。

例如,在控制器上配置的防火墙过滤器 (ACL) 将发送到云原生路由器 vRouter(通过 vRouter 代理)。

瞻博网络云原生路由器控制器功能:

  • 公开与 Junos OS 兼容的 CLI 配置和作命令,这些命令可供使用 NETCONF 协议的外部自动化和编排系统访问。

  • 支持将 vRouter 作为高速转发平面。这使得使用 DPDK 框架构建的应用程序能够直接向应用程序和 vRouter 发送和接收数据包,而无需通过内核。

  • 支持在启用了 DPDK 的 vRouter 管理的物理功能 (PF)、虚拟功能 (VF)、virtio、接入和中继接口上配置带有 VLAN 标记的子接口。

  • 支持桥接域、VLAN 和虚拟交换机的配置。

  • 主要使用 BGP、IS-IS 和 OSPF 的路由协议,向核心网络通告 DPDK 应用可达性。

  • 在集群内外分发 Pod 的 L3 网络可访问性信息。

  • 维护 L2 防火墙的配置。

  • 通过 vRouter-Agent 将配置信息传递到 vRouter。

  • 存储许可证密钥信息。

  • 作为 BGP 发送方工作,与其他 BGP 发送方建立对等关系以交换路由信息。

  • 将控制平面遥测数据导出到 Prometheus 和 gNMI。

配置选项

使用 configlet 资源 来配置 cRPD pod。

云原生路由器 vRouter

云原生路由器 vRouter 是一个高性能数据路径组件。它是 Linux 内核中 Linux 桥接或 Open vSwitch (OVS) 模块的替代方案。它作为用户空间进程运行。vRouter 功能在两个 Pod 中实现,一个用于 vrouter-agent 和 vrouter-telemetry-exporter,另一个用于 vrouter-agent-dpdk。这种拆分使您可以根据需要灵活地为不同的 vRouter 组件定制 CPU 资源。

vRouter 支持数据平面开发套件 (DPDK) 和扩展的 Berkley 数据包过滤器 (eBPF) eXpress 数据路径 (XDP) 数据路径。

注意:

云原生路由器 eBPF XDP Datapath 是 瞻博网络的一项技术预览(技术预览) 功能。支持有限的功能。有关详细信息,请参阅 瞻博网络云原生路由器 vRouter Datapath

云原生路由器 vRouter 功能:

  • 使用第 3 层虚拟专用网络执行路由。

  • 执行 L2 转发。

  • 支持基于 DPDK 的高性能转发。

  • 支持基于高性能 eBPF XDP 数据通路的转发。

  • 将数据平面遥测数据导出到 Prometheus 和 gNMI。

vRouter 的优势:
  • 高性能数据包处理。

  • 转发平面提供比基于内核的转发更快的转发功能。

  • 转发平面比基于内核的转发更具可扩展性。

  • 支持以下 NIC:

    • Intel E810 (Columbiaville) 系列

    • 英特尔 XL710 (Fortville) 家族

JCNR-CNI

JCNR-CNI 是瞻博网络开发的新型容器网络接口 (CNI)。JCNR-CNI 是安装在每个节点上的 Kubernetes CNI 插件,用于为应用 Pod 配置网络接口。在创建 Pod 期间,Kubernetes 将 Pod 接口的创建和配置委托给 JCNR-CNI。JCNR-CNI 与云原生路由器控制器和 vRouter 交互以设置 DPDK 接口。移除 Pod 时,将调用 JCNR-CNI 来取消配置 Kubernetes 和云原生路由器组件中的 Pod 接口、配置和关联状态。JCNR-CNI 与 Multus CNI 一起作为辅助 CNI 添加和配置 pod 接口。

JCNR-CNI 功能:

  • 管理 Kubernetes Pod 中的网络任务,例如:

    • 分配 IP 地址。

    • 分配 MAC 地址。

    • 在 Kubernetes 群集中的 Pod 和 vRouter 之间设置无标记接口、访问接口和其他接口。

    • 创建 VLAN 子接口。

    • 创建 L3 接口。

  • 对 pod 事件(如添加和删除)执行作。

  • 生成 cRPD 配置。

JCNR-CNI 管理 Pod 使用的辅助接口。它会根据 YAML 格式的网络附件定义 (NAD) 文件中的配置创建所需的接口。JCNR-CNI 在将某些接口传递到其最终位置或连接点之前对其进行配置,并为其他接口配置选项提供 API,例如:

  • 实例化不同类型的 Pod 接口。

  • 为利用 DPDK 数据平面的 Pod 创建基于 virtio 的高性能接口。

  • 创建 veth 对接口,使 Pod 能够使用 Linux 内核网络堆栈进行通信。

  • 在接入或中继模式下创建 Pod 接口。

  • 将 Pod 接口连接到桥接域和虚拟路由器。

  • 支持用于动态 IP 地址分配的 IPAM 插件。

  • 为 virtio 接口分配唯一的套接字接口。

  • 管理 Pod 中的网络任务,例如分配 IP 地址以及设置 Kubernetes 群集中 Pod 与 vRouter 之间的接口。

  • 将 Pod 接口连接到网络,包括 Pod 到 Pod 和 Pod 到网络。

  • 与 vRouter 集成,以卸载数据包处理。

JCNR-CNI 的优势:

  • 改进的 Pod 界面管理

  • 可定制的管理和监控功能

  • 通过与控制器和 vRouter 组件紧密集成来提高性能

JCNR-CNI 在 Pod 创建中的作用:

创建用于云原生路由器的 Pod 时,名为 kubelet 的 Kubernetes 组件会调用 Multus CNI 来设置 Pod 网络和接口。Multus 读取 pod.yaml 文件的注释部分以查找 NAD。如果 NAD 指向 JCNR-CNI 作为 CNI 插件,Multus 将调用 JCNR-CNI 来设置 pod 接口。JCNR-CNI 按照 NAD 中指定的方式创建接口。然后,JCNR-CNI 会生成配置并将其推送到控制器中。

系统日志-NG

瞻博网络云原生路由器使用 syslog-ng Pod 从 cRPD 和 vRouter 收集事件日志,并将日志转换为基于 JSON 的通知。通知将记录到一个文件中。Syslog-ng 作为守护程序集运行。