Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 

JDM 架构概述

了解分解Junos OS

许多网络设备供应商历来将其软件与特有硬件绑定,并出售给客户捆绑和打包的软件-硬件组合。但是,借助分解Junos OS架构瞻博网络网络设备现已与面向云、开放且依赖于更灵活的实施场景的网络保持一致。

分解型 Junos OS 架构的基本原理就是将紧密绑定的 Junos OS软件和专有硬件分解(分解)到虚拟化组件中,这些组件不仅可在 瞻博网络 硬件上运行,还可以在白盒或裸机服务器上运行。在此新架构中,瞻博网络设备管理器 (JDM) 是一种用于管理软件组件的虚拟化根容器。

JDM 是分解型 Junos OS 架构中唯一的根容器(其他行业模型允许多个根容器,但分解式 Junos OS 架构不是其中一个)。分解Junos OS是 单根 模型。JDM 的一个主要功能是防止平台上的修改和活动影响底层主机操作系统(通常为 Linux)。作为根实体,JDM 非常适合此任务。JDM 的另一个主要功能是使设备硬件看起来就像传统的基于 Junos OS 的物理系统一样。这还需要某种形式的根功能。

图 1 说明了 JDM 在整体架构中占用的重要位置。

图 1:设备管理器瞻博网络位置 Position of the Juniper Device Manager

VNF 是一种整合的产品,包含支持完全虚拟化网络环境所需的所有组件。VNF 以网络优化为关注重点。

JDM 支持:

  • 在访客虚拟化网络功能 (VNF) 生命周期中管理。

  • 安装第三方模块。

  • VNF 服务链形成。

  • 来宾 VNF 映像(其二进制文件)的管理。

  • 控制系统库存和资源使用。

请注意,基本架构的一些实施包括数据包转发引擎常规 Linux 平台硬件端口。这允许将瞻博网络平面与通用平台的裸机硬件更好地集成。

分解式Junos OS架构使 JDM 能够处理虚拟化网络功能,例如防火墙或网络地址转换 (NAT) 功能。与 JDM 集成的其他 VNF 和容器可瞻博网络第三方产品作为本机 Linux 应用程序。分解式网络的基本Junos OS如上图 2 所示

图 2:基本分解Junos OS架构 Basic Disaggregated Junos OS Architecture
注意:

多种方法可在各种平台上实施Junos OS分解架构。详情会有很大差异。本主题介绍整体架构。

在固定硬件上运行的简单软件进程的虚拟化在进程间通信领域面临多项挑战。例如,具有一个功能NAT VNF 如何与作为容器在同一设备上运行的防火墙一起工作?毕竟,整个设备上可能只有一个或两个外部以太网端口,并且进程仍然位于设备内部。优势之一是这些虚拟化流程之间的接口本身通常都是虚拟化的,可能是 作为 SXE 端口;这意味着,您可以在进程之间直接配置一种 MAC 层桥接,也可在进程与主机操作系统之间配置,然后在主机操作系统与另一个进程之间配置。当信息流进出设备时,这支持服务链。

JDM 为用户提供了熟悉的Junos OS CLI,并处理与底层 Linux 内核的所有交互,以保持设备"瞻博网络"。

分解的一些优势Junos OS有:

  • 整个系统都可以像管理服务器平台一样进行管理。

  • 客户可以在虚拟机 (VM) 或容器中安装第三方应用程序、工具和服务,如 Chef、Wiireshark 或 Quagga。

  • 这些应用程序和工具可通过使用典型的 Linux 库进行升级,并且独立于Junos OS版本。

  • 模块化提高了可靠性,因为模块中包含故障。

  • 可通过 API 直接对控制平面和数据平面进行编程。

了解物理和虚拟组件

在分解的Junos OS功能虚拟化 (NFV) 环境中,设备组件可能是物理的,或者是虚拟的。相同的物理虚拟差异可以应用于接口(端口)、数据包或帧通过设备的路径,以及 CPU 核心或磁盘空间等其他方面。

分解式Junos OS包括架构模型。房屋的架构模型可以有包括烹饪、家庭空间和餐厅等的方向,可以代表各种住宅;从海底木屋到帕萨提茅斯花园式设施。所有这些建筑看起来都截然不同,但仍遵循基本架构模型且具有许多特征。

同样,对于分解式 Junos OS 架构模型,这些型号涵盖了截然不同的平台类型,从简单的客户现场设备 (CPE) 到安装在大型数据中心的复杂交换设备,但具有平台分享的一些基本特征。

这些平台具有哪些共同特征?所有分解Junos OS平台都构建在三个层上。这些层和一些可能的内容如图 3 所示

图 3:分解后的物理层和虚拟Junos OS Physical and Virtual Layers in the Disaggregated Junos OS

最低层是硬件层。除了内存 (RAM) 和磁盘空间 (SSD),平台硬件还有一个多核 CPU 以及用于管理NIC外部 CPU。在某些情况下,将存在一个NIC端口,用于控制和数据平面,但是该端口还可用于与用于用户数据包转发引擎流进行通信。

平台软件层位于硬件层顶层。所有与平台相关的功能都在这里发生。这些功能可以包含各种虚拟组件的软件交换功能,以桥接它们之间的流量。基于 Linux 或内核的虚拟机 (KVM) 运行此平台,在某些型号中,手机回家代理会联系供应商或服务提供商设备来执行自动配置任务。手机主用代理是小型 CPE 平台的首选。

平台软件层之上是客户软件层,其包含各种与平台无关的功能。其中一些组件可能瞻博网络虚拟机,例如虚拟 SRX 设备 (vSRX) 或 Junos控制平面 (JCP)。该JCP与 JDM 一起工作,使设备类似于专用 瞻博网络平台,但具有更大的灵活性。这种灵活性很大一部分来自能够支持实施虚拟化网络功能 (VNF) 的一个或多个 VNF。这些 VNF 由多种任务类型组成,例如网络地址转换 (NAT)、专用域名系统 (DNS) 服务器查找等。

通常,CPU 核心数量固定,磁盘空间有限。但是,在虚拟环境中,资源分配和使用变得更加复杂。接口、磁盘空间、内存或核心等虚拟资源在当时运行的 VNF 中进行编程,由 VNF 映像确定。

VNF(无论是虚拟机 (VM) 还是容器,共享物理设备通常需要相互通信。数据包或帧通过物理接口(端口)进入设备,并分发到某些初始 VNF。对信息流进行一些处理后,VNF 将信息流传递至另一个 VNF(如果配置为如此,则传递至另一个 VNF)再传递至另一个 VNF,然后再从物理设备离开。这些 VNF 构成一个在设备内遍历的数据平面服务链。

隔离虚拟机或容器的 VNF 如何将流量从一个传递到另一个?服务链配置为将信息流从物理接口传递到一个或多个内部虚拟接口。因此,存在与每个虚拟机或容器相关联的虚拟 NIC,它们全部通过设备内的虚拟交换机或桥接功能连接。图 4中显示了这种可实现物理与虚拟接口之间通信的通用关系。

图 4:物理和虚拟组件通信 Physical and Virtual Component Communication

在此通用模型中(可在不同平台中具有变体)中,数据通过物理 NIC 上的端口输入,并基于目标 MAC 地址 通过虚拟交换机功能桥接至 Virtual Machine1 NIC 1。信息流也可通过另一个配置的虚拟接口桥接至虚拟机 2 个或多个 VNF,直到其被传回到物理端口并退出设备。

出于配置目的,这些接口可能具有类似指定,例如 ge-0/0/0 或 fxp0,或者新指定,例如 sxe0 或 hsxe0。有些可能 真实,但内部端口(如 sxe0),有些可能是使设备正常运行所需的完全虚拟结构(如 hsxe0)。

分解的Junos OS虚拟机

云计算支持应用程序在虚拟化环境中运行,两者均可用于连接大型数据中心甚至多个数据中心之间分散的端点所需的最终用户服务器功能和网络功能。应用程序和网络功能可通过虚拟网络功能 (VNF) 实施。这两种类型的软件包之间有什么差异,为什么有人使用一种类型或其他类型?

VNF 和容器都允许通过共享一台物理服务器的数十或数百个 VNF 对硬件进行多路复用。这不仅允许快速部署新服务,还允许在大量使用时(可使用扩展时)或物理维护(可使用迁移时)扩展和迁移工作负载。

在云计算环境中,通常采用 VNF 在现代网络中描述大数据的大规模服务器场上执行繁重工作。服务器虚拟化允许为不同开发环境、硬件平台或操作系统编写的应用程序在运行相应软件套件的通用硬件上运行。

VNF 依靠虚拟机管理程序来管理物理环境,在任何特定时间运行的 VNF 之间分配资源。广受欢迎的虚拟机管理程序包括 Xen、KVM 和 VMWare ESXi,但有许多其他管理程序。VNF 在虚拟机管理程序顶部在用户空间中运行,包括虚拟机应用程序操作系统的完整实施。例如,使用 C++ 语言编写的、在 Microsoft Windows 操作系统上编写和运行的应用程序可使用虚拟机管理程序在 Linux 操作系统上运行。在这种情况下,Windows 是访客操作系统。

该虚拟机管理程序为访客操作系统提供了 VNF 硬件的模拟视图。在内存磁盘空间等其他资源中,当不同 VM 的端点驻留在不同服务器或主机上时,虚拟机管理程序将提供网络接口卡 (NIC) 的虚拟化视图(常见情况)。虚拟机管理程序管理物理 NIC,并且仅向 VNF 公开虚拟化接口。

虚拟机管理程序还运行虚拟交换机环境,允许 VLAN 帧层的 VNF 在同一个框中或通过(虚拟)网络交换数据包。

VNF 的最大优势是大多数应用程序可以轻松移植到虚拟机管理程序环境,并且无需修改即可很好地运行。

最大的缺陷是,访客操作系统的资源密集开销通常必须包括操作系统的完整版本,即使整个 VNF 的功能是提供域名系统 (DNS) 等简单服务也一样。

容器与 VNF 不同,它专为在虚拟环境中作为独立任务运行而构建。容器不会像 VNF 一样捆绑整个操作系统。容器可以通过多种方式进行编码和捆绑,但是也可以构建易于维护和扩展的标准容器。标准容器比以随意方式创建的容器开放得多。

标准 Linux 容器定义了称为标准容器的软件交付单元。标准容器可以仅封装应用程序以及执行应用程序编程执行的任务所需的任何依赖项,而非封装整个来宾操作系统。这个单个运行时元素可以修改,但是随后必须重构容器,以包含扩展功能可能需要的任何附加依赖项。图 5中所示的容器的整体架构。

图 5:容器-整体架构 Containers–Overall Architecture

容器在主机 OS 内核运行,不在虚拟机管理程序上。容器架构使用容器引擎来管理底层平台。如果仍想运行 VNF,容器还可以将完整的虚拟机管理程序与访客操作系统环境打包在一起。

标准容器包括:

  • 配置文件。

  • 一组标准操作。

  • 执行环境。

名称 的集装箱借用用于全球运输商品的集装箱。装运容器是标准交付单元,可通过专为处理容器而构建的设备加载、标记、堆叠、提升和卸载。无论容器内部是什么,容器都可以以标准方式处理,并且每个容器都有自己的用户空间,其他容器无法使用。 尽管 Docker 是在物理服务器上运行容器的常用容器管理系统,但需要考虑诸如 Drawbridge 或 Rocket 等替代方案。

每个容器都分配有一个虚拟接口。容器管理系统(如 Docker)包括连接多个虚拟接口和物理接口的虚拟以太网NIC。容器中的配置和环境变量决定了哪些容器可以相互通信,哪些可以使用外部网络,等等。外部网络通常通过容器NAT尽管还有其他方法,因为容器通常使用相同的网络地址空间。

容器的最大优势在于,容器可以在设备上加载,执行速度要快于 VNF。容器也更加备用 — 您可在同一硬件上运行比 VNF 更多的容器。这是因为容器不需要完整的访客操作系统或启动时间。容器可以在几毫秒(而非数十秒)内加载并运行。但是,容器的最大缺陷是必须特别编写它们才能符合某些标准或通用实施,而 VNF 可以以自己的本机状态运行。

Virtio 和 SR-IOV 使用

通过使用 virtio 或使用适当的硬件和单根 I/O 虚拟化 (SR-IOV),您可以在基于 Linux 的虚拟化设备和网络功能虚拟化 (NFV) 模块之间启用通信。每种方法都有明显的特点。

了解 Virtio 用法

虚拟化物理设备时,物理NIC接口和外部物理交换机,以及虚拟 NIC 接口和内部虚拟交换机共存。因此,当设备中的隔离 VNF(每个 VNF 都有自己的内存、磁盘空间和 CPU 周期)尝试相互通信时,使用的多个端口、MAC 地址和 IP 地址会带来挑战。借助 virtio 库,隔离虚拟功能之间的流量将变得更简单,也更容易。

Virtio 是标准 Linux libvirt 库中有用虚拟化功能的一部分,通常包含在大多数 Linux 版本中。Virtio 是一种仅支持软件的方法,支持 VNF 间通信。Virtio 提供了一种连接单个虚拟进程的方式。virtio 的捆绑特性使得任何 Linux 运行的设备都可使用 virtio。

Virtio 支持 VNF 和容器使用简单的内部网桥发送和接收流量。仍可通过外部桥到达和离开的流量。外部网桥在桥接NIC一端使用虚拟化内部 NIC 接口,使用桥接另一端的物理外部 NIC 接口来发送和接收数据包和帧。一种多种类型的内部桥接通过主机操作系统中的虚拟化内部交换机功能NIC连接两个虚拟化内部交换接口。virtio 的整体架构如图 6 所示

图 6:VNF与 Virtio 的桥接 VNF Bridging with Virtio

图 6 显示了使用运行主机 OS 的单一物理 NIC 卡的服务器设备的内部结构(不会显示设备的外盖)。主机 OS 包含通过 virtio 实施的虚拟交换机或网桥。在操作系统之上,多个虚拟机采用通过 virtio 通信的虚拟 NIC。存在运行多个虚拟机,图中编号为 1 到 N。标准"点点"表示法表示可能的虚拟机和 NIC 未显示在图中。点线表示可能使用 virtio 的数据路径。请注意,进入或离开设备的信息流通过物理设备和端口NIC流量。

图 6 还显示通过内部网桥进入和离开设备的流量。Virtual Machine 1 将虚拟化内部NIC接口链接到物理外部NIC接口。Virtual Machine 2 和 Virtual Machine N 通过主机 OS 中的内部网桥链接内部虚拟 NIC。请注意,这些接口可能有与之关联的 VLAN 标签,或者内部接口名称。通过 VNF 之间此内部网桥发送的帧绝不会离开设备。注意桥接(和虚拟化交换机功能)在主机 OS 中的位置。请注意在设备中使用简单桥接。您可以用常规 Linux 命令配置这些网桥,或使用CLI语句。脚本可用于实现流程自动化。

Virtio 是磁盘和网络设备驱动程序的虚拟化标准。只有访客设备驱动程序(用于虚拟化功能的设备驱动程序)才 需要知道其 正在虚拟环境中运行。这些推动因素与虚拟机管理程序及虚拟功能相配合,能带来性能优势,而性能优势进一步增加。Virtio 的架构类似于 Xen 虚拟化设备驱动程序(向访客添加的驱动程序,使其在 Xen 上运行时速度更快)。VMWare 的访客工具也类似于 virtio。

请注意,大部分流量集中在主机操作系统 CPU 上,更明确地说,是在虚拟化内部网桥上。因此,主机 CPU 必须能够在设备扩展时足够执行。

了解 SR-IOV 用法

虚拟化物理设备时,物理网络接口卡 (NIC) 接口和外部物理交换机以及虚拟 NIC 接口和内部虚拟交换机共存。因此,当设备中的隔离虚拟机 (VM) 或容器(每个虚拟机都有自己的内存、磁盘空间和 CPU 周期)时,尝试相互通信时,使用的多个端口、MAC 地址和 IP 地址会带来挑战。

SR-IOV 将虚拟化功能的概念延伸到 物理NIC。 每个物理卡最多被划分为 16 个分区,每个NIC与较高层上运行的虚拟功能对应。这些虚拟功能之间的通信处理方式与使用单个虚拟设备的 NIC相同: 通过桥接。SR-IOV 包括一组标准方法,用于创建、删除、枚举和查询 SR-IOV NIC 交换机,以及可以设置的标准参数。

SR-IOV 的单根部分是指实际上只有一个控制所有操作的主要NIC部分。 支持 SR-IOV的NIC只是一个标准以太网端口,可提供与任何网卡相同的物理比特功能。

但是,SR-IOV 还提供多个虚拟功能,这些虚拟功能通过简单队列处理输入和输出任务完成。设备上运行的每个 VNF 都映射到其中一个NIC分区,使 VNF 本身能够直接访问NIC资源。该NIC还具有简单的第 2 层分类器功能,该功能将帧分类为信息流队列。数据包使用直接内存访问 (DMA) 直接移动到网络虚拟功能到虚拟机的内存,完全绕过虚拟机管理程序。图 7中NIC在 SR-IOV 操作中的角色。

图 7:使用 SR-IOV 的 VNF 通信 VNF Communication Using SR-IOV

虚拟机管理程序仍然参与将 VNF 分配至虚拟网络功能和管理物理卡,但不参与数据包内数据的传输。请注意,VNF 至 VNF 通信由虚拟服务器 NIC 1 、虚拟 NIC 2 和虚拟 NIC N 执行。还有一部分虚拟NIC(未显示),用于跟踪所有虚拟功能和分类器,以在 VNF 和外部设备端口之间运输流量。

请注意,支持 SR-IOV 的能力取决于平台硬件,特别是 NIC 硬件,以及采用 DMA 进行数据传输的 VNF 或容器的软件。可分区的 NIC 和所需的内部桥接往往更加昂贵,因此,它们的使用可能将较小型设备的成本增加相当高。重写 VNF 和容器也并非简单任务。

比较 Virtio 和 SR-IOV

Virtio 是标准 libvirt 有用的虚拟化功能库的一部分,通常包含在大多数 Linux 版本中。Virtio 采用仅软件的方法。SR-IOV 需要以某种方式编写的软件以及专用硬件,这意味着即使使用简单的设备,也意味着成本会提高。

通常,使用 virtio 快速且简单。Libvirt 是每个 Linux 分发的一部分,人们很了解建立网桥的命令。但是,virtio 将全部性能负担放在主机操作系统上,主机操作系统通常会将 VNF 之间的所有流量桥接到设备中和设备上。

通常,SR-IOV 可提供更低的延迟和 CPU 利用率 — 简言之,几乎为本机,非虚拟设备性能。但是,从一台设备到另一台设备的 VNF 迁移很复杂,因为 VNF 依赖于一台机器上的NIC资源。此外,VNF 的转发状态还驻留在 SR-IOV 交换机内置的第 2 层交换机NIC。因此,转发不再那么灵活,因为转发规则已编码到硬件中,不能经常更改。

尽管对 virtio 的支持几乎是通用的,但是对 SR-IOV 的支持因硬件NIC平台而异。该瞻博网络 NFX250 网络服务平台支持 SR-IOV 功能并支持每个物理或虚拟端口上的 16 NIC分区。

请注意,如果支持,给定 VNF 可以同时使用 virtio 或 SR-IOV,甚至两种方法。

注意:

Virtio 是建立虚拟化设备和 NFV 模块之间的连接的推荐方法。