Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

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

瞻博网络云原生路由器解决方案由多个组件组成,包括云原生路由器控制器、云原生路由器 vRouter 和 JCNR-CNI。本主题简要概述瞻博网络云原生路由器的组件。

云原生路由器组件

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

图 1 显示了 Kubernetes 群集内瞻博网络云原生路由器的组件

图 1:瞻博网络云原生路由器 Components of Juniper Cloud-Native Router组件

云原生路由器控制器

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

例如,控制器上支持防火墙过滤器 (ACL),以配置带有拒绝规则的 L2 访问列表。控制器通过 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。

  • 存储许可证密钥信息。

  • 从版本 23.2 开始用作 BGP 发送方,与其他 BGP 发送方建立对等关系以交换路由信息。

配置选项

在部署期间,您可以 自定义 云原生路由器配置

部署后,建议您将 NETCONF 协议与 PyEZ 配合使用来配置控制器。您可以通过 SSH 或通过 NETCONF 连接。最后,您还可以通过使用 Kubernetes 命令 访问 JCNR 控制器 CLI 来配置云原生路由器。

云原生路由器 vRouter

云原生路由器 vRouter 是一个高性能数据路径组件。它是 Linux 内核中 Linux 桥接或 Open vSwitch (OVS) 模块的替代方案。它作为用户空间进程运行,并与数据平面开发工具包 (DPDK) 库集成。vRouter Pod 由三个容器组成:vrouter-agent、vrouter-agent-dpdk 和 vrouter-telemetry-exporter。

云原生路由器 vRouter 功能:

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

  • 执行 L2 转发。

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

vRouter 的优势:
  • 将 DPDK 集成到 JCNR-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 作为守护程序集运行。