Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

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

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

JCNR 组件

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

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

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

JCNR 控制器

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

例如,控制器支持防火墙过滤器 (ACL) 以使用拒绝规则配置 L2 访问列表。控制器通过路由器代理将配置信息发送到 JCNR 虚拟路由器。

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

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

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

  • 支持在由支持 DPDK 的虚拟路由器管理的物理功能 (PF)、虚拟功能 (VF)、virtio、接入和中继接口上配置 VLAN 标记的子接口。

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

  • 使用主要包含 BGP、IS-IS 和 OSPF 的路由协议,将 DPDK 应用程序的可访问性播发至核心网络。

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

  • 维护 L2 防火墙的配置。

  • 通过虚拟路由器代理将配置信息传递到虚拟路由器。

  • 存储许可证密钥信息。

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

配置选项

在部署期间,您可以 自定义 JCNR 配置

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

JCNR 虚拟路由器

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

JCNR 虚拟路由器功能:

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

  • 执行 L2 转发。

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

虚拟路由器的优势:
  • 将 DPDK 集成到 JCNR-vRouter 中。

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

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

  • 支持以下网卡:

    • 英特尔 E810(哥伦比亚维尔)家族

    • 英特尔 XL710(福特维尔)家族

JCNR-CNI

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

JCNR-CNI 功能:

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

    • 分配 IP 地址。

    • 分配 MAC 地址。

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

    • 创建 VLAN 子接口。

    • 创建 L3 接口。

  • 作用于容器事件,例如添加和删除。

  • 生成 cRPD 配置。

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

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

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

  • 创建允许 Pod 使用 Linux 内核网络堆栈进行通信的虚拟对接口。

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

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

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

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

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

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

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

JCNR-CNI的优势:

  • 改进的容器接口管理

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

  • 通过与控制器和 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 生成配置并将其推送到控制器中。

Syslog-NG

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