在 NFX250 下一代设备上配置 VNF
借助 NFX250 NextGen 设备,您可以从 Junos 控制平面 (JCP) 实例化和管理虚拟化网络功能 (VNF)。JCP 支持创建和管理第三方 VNF。
加载 VNF 映像
要配置 VNF,您必须登录到 JCP:
user@host:~ # cliuser@host>
要从远程位置在设备上加载 VNF 映像,可以使用 file-copy 命令或使用 usb-pass-through 命令从 USB 复制映像。
您必须将 VNF 映像保存在 /var/public 目录中。
user@host> file copy source-address /var/public
例如:
user@host> file copy scp://192.0.2.0//tftpboot/centos.img /var/public
或者,您可以使用 NETCONF 命令加载 VNF 映像。 file-put
要从 USB 复制 VNF 映像,请参阅 支持在 NFX 系列设备上从 USB 传输文件。
准备 Bootstrap 配置
您可以使用附加的配置驱动器(其中包含 bootstrap-config ISO 文件)引导 VNF。有关创建 ISO 文件的示例,请参阅 创建 vSRX 自举 ISO 映像中的过程。根据用于创建 ISO 文件的作系统(例如,Linux、Ubuntu),该过程可能会有所不同。
配置驱动器是一个虚拟驱动器,它可以是 CD-ROM、USB 驱动器或磁盘驱动器,这些驱动器与带有配置数据的 VNF 相关联。配置数据可以是捆绑在构成虚拟 CD-ROM、USB 驱动器或磁盘驱动器的 ISO 文件中的文件或文件夹。
自举配置文件必须包含允许从外部控制器访问 VNF 的初始配置,并接受来自外部控制器的 SSH、HTTP 或 HTTPS 连接以进行进一步的运行时配置。
通过附加配置驱动器,您可以通过 CLI 将 IP 地址、子网掩码和网关等网络配置传递给 VNF。接收到配置输入后,设备会生成一个自举配置 ISO 文件,并将该文件作为 CD-ROM、USB 驱动器或磁盘驱动器附加到 VNF。
有关配置和连接配置驱动器的更多信息,请参阅 (可选)将配置驱动器附加到 VNF。
-
系统将 bootstrap-config ISO 文件保存在 /var/public 文件夹中。仅当文件夹中的可用空间是文件中内容总大小的两倍以上时,才会保存文件。如果文件夹中的可用空间不足,则在提交配置时会显示错误消息。
-
重新启动系统时,系统将生成新的 bootstrap-config ISO 文件,并将现有 ISO 文件替换为 VNF 上的新 ISO 文件。
-
配置驱动器是只读驱动器。根据 VNF,您可以将配置驱动器指定为只读 CD-ROM 驱动器、USB 驱动器或磁盘驱动器。
配置驱动器支持 VNF 的以下数据:
-
以文件形式呈现的静态内容 — 设备通过 CLI 接受一个或多个文件路径,将这些文件转换为 ISO 映像,并将其附加到 VNF。配置驱动器支持 VNF 配置中的多个静态文件。
-
Jinja2 模板和参数 - Jinja2 参数由键值对组成。键在模板中指定,呈现模板时,该值将替换键。系统会将渲染的输出文件添加到 ISO 映像,并将其附加到 VNF。模板的最大参数数为 256 个键值对。配置驱动器支持 VNF 配置中的多个模板及其参数。
注意:配置驱动器仅支持 Jinja2 模板。
-
目录 — 设备接受特定目录内容,将给定文件夹中的文件夹结构转换为 ISO 映像,并将其附加到 VNF。配置驱动器只接受一个文件夹。该文件夹将成为 ISO 映像中的根目录,所有后续文件夹和文件都将添加到 ISO 映像中。
-
您可以在一个 VNF 配置中添加多个源模板和源文件。
-
要在 VNF 配置中添加多个源模板和一个源文件夹,目标模板文件必须位于源文件夹内。
-
您只能在 VNF 配置中添加一个源文件夹。
-
如果两个 VNF 共享同一文件集,则会为每个 VNF 生成单独的 bootstrap-config ISO 文件。删除一个 VNF 不会影响另一个 VNF。
为 VNF 分配 CPU
表 1 列出了 NFX250 型号可用于 VNF 的 CPU。
| 型 |
可用于 VNF 的 CPU |
||||
|---|---|---|---|---|---|
| 吞吐量模式 |
混合模式 |
计算模式 |
自定义模式 |
||
| Flex 模式 |
性能模式 |
||||
| NFX250-S1 |
0 |
4 |
8 |
8 |
8 |
| NFX250-S1E |
0 |
4 |
8 |
8 |
8 |
| NFX250-S2 |
0 |
4 |
8 |
8 |
8 |
自定义模式和自定义模式的资源分配flexperf基于默认 Junos 配置中提供的模板。
更改设备的性能模式时,建议检查 VNF 的 CPU 可用性。
要检查 CPU 可用性及其状态,请执行以下作:
user@host> show system visibility cpu CPU Statistics (Time in sec) ------------------------------------------------------------------------------- CPU Id User Time System Time Idle Time Nice Time IOWait Time Intr. Service Time ------ --------- ----------- --------- --------- ----------- ------------------ 0 7762 1475 60539 0 84 0 1 191 511 70218 0 10 0 2 102 32 70841 0 12 0 3 0 0 70999 0 0 0 4 0 0 70999 0 0 0 5 0 0 70999 0 0 0 6 70949 0 50 0 0 0 7 9005 532 59602 0 0 0 8 23 7 70966 0 0 0 9 21 7 70969 0 0 0 10 20 6 70969 0 0 0 11 18 6 70970 0 0 0 CPU Usages ---------------- CPU Id CPU Usage ------ --------- 0 17.899999999999999 1 0.0 2 0.0 3 0.0 4 0.0 5 0.0 6 100.0 7 15.199999999999999 8 0.0 9 0.0 10 0.0 11 0.0 CPU Pinning Information ------------------------------------ Virtual Machine vCPU CPU --------------------------- ---- --- vjunos0 0 0 System Component CPUs ------------------------------- -------- ovs-vswitchd 0, 6
vjunos0 是系统 VNF,您无法修改 vjunos0 的 CPU 分配。
要指定 VNF 所需的虚拟 CPU 数量:
物理 CPU 编号可以是数字,也可以是数字范围。默认情况下,VNF 会分配一个未连接到任何物理 CPU 的虚拟 CPU。
在 VNF 运行时,您无法更改 VNF 的 CPU 配置。您必须重新启动 VNF 才能使更改生效。
从 Junos OS 22.1 R1 版开始,您可以使用以下命令将仿真器固定到特定的物理 CPU:
user@host# set virtual-network-functions vnf-name emulator physical-cpu cpu-range
不能使用 CPU 0 或脱机 CPU 进行模拟器固定。如果未将仿真器固定到特定的物理 CPU,QEMU 会自动将其固定到虚拟 CPU。对仿真器固定的更改会在正在运行的 VNF 上立即生效。
要为 VNF CPU 启用硬件虚拟化或硬件加速,请执行以下作:
user@host# set virtual-network-functions vnf-name virtual-cpu features hardware-virtualization
为 VNF 分配内存
默认情况下,系统会为 VNF 分配一定数量的内存。 表 2 列出了 NFX250 型号使用 VNF 的可能内存可用性。
| 型 |
可用内存总数 |
在计算、混合和吞吐量模式下使用 VNF 的可用性巨大 |
Hugepages 在自定义模式下使用 VNF 的可用性 |
|
|---|---|---|---|---|
| Flex 模式 |
性能模式 |
|||
| NFX250-LS1 |
16 千兆字节 |
6 个 1G 巨页 |
9 个 1G 巨页 |
9 个 1G 巨页 |
| NFX250-S1 和 NFX250-S1E |
16 千兆字节 |
6 个 1G 巨页 |
9 个 1G 巨页 |
9 个 1G 巨页 |
| NFX250-S2 |
32 千兆字节 |
22 个 1G 巨页 |
24 个 1G 巨页 |
24 个 1G 巨页 |
自定义模式和自定义模式的资源分配flexperf基于默认 Junos 配置中提供的模板。
要检查可用内存:
user@host> show system visibility memory
Memory Information
------------------
Virtual Memory:
---------------
Total (KiB): 15914364
Used (KiB): 13179424
Available (KiB): 3087076
Free (KiB): 2734940
Percent Used : 80.6
Huge Pages:
------------
Total 1GiB Huge Pages: 7
Free 1GiB Huge Pages: 5
Configured 1GiB Huge Pages: 5
Total 2MiB Huge Pages: 1376
Free 2MiB Huge Pages: 1
Configured 2MiB Huge Pages: 0
Hugepages Usage:
----------------------------------------------------------------------------------------------------------
Name Type Used 1G Hugepages Used 2M Hugepages
--------------------------------- ---------------------------------- ------------------ ------------------
srxpfe other process 1 1375
ovs-vswitchd other process 2 0
vjunos0 是系统 VNF,您无法修改 vjunos0 的内存分配。
要根据 VNF 的内存要求配置 hugepages,请执行以下作:
user@host# set system memory hugepages page-size 1024 page-count memory
您必须在配置 hugepages 后重新启动系统才能在启动期间预分配 hugepages。
要指定 VNF 可以使用的最大主内存:
user@host# set virtual-network-functions vnf-name memory size size
您无法在 VNF 运行时更改其内存配置。您必须重新启动 VNF 才能使更改生效。
(选答)将配置驱动器附加到 VNF
要将配置驱动器附加到 VNF,请执行以下作:
要验证配置驱动器是否已连接到 VNF,请参阅 VNF Disk Information show system visibility vnf 命令输出消息中的部分。
例如:
user@host> show system visibility vnf vsrx2 VNF Memory Usage -------------------------------------------------------------------------------------------------------------------- Name Maximum Memory (KiB) Used Memory (KiB) Used 1G Hugepages Used 2M Hugepages -------------------------------------- --------------------- ------------------ ------------------ ----------------- vsrx2 4194304 4194304 4 0 VNF CPU Statistics (Time in ms) ----------------------------------------------------------------------------- Name CPU Time System Time User Time -------------------------------------- ------------ ------------ ------------ vsrx2 3288 1510 770 VNF MAC Addresses ----------------------------------------------------------- VNF MAC ----------------------------------------- ----------------- vsrx2_ethdef0 9C:CC:83:BD:8C:42 vsrx2_ethdef1 9C:CC:83:BD:8C:43 VNF Internal IP Addresses --------------------------------------------------------- VNF IP ----------------------------------------- --------------- vsrx2 192.0.2.100 VNF Interfaces -------------------------------------------------------------------------------------------------------- VNF Interface Type Source Model MAC IPv4-address -------------------- --------- --------- ------------ ---------- ----------------- --------------------- vsrx2 vnet4 network default virtio 9c:cc:83:bd:8c:42 -- vsrx2 vnet5 bridge eth0br virtio 9c:cc:83:bd:8c:43 -- VNF Disk Information --------------------------------------------------------------------------------------------------------- VNF Disk File ----------------------------- ----------- --------------------------------------------------------------- vsrx2 vda /var/public/media-vsrx-vmdisk-15.1X49-D78.4.qcow2.1 vsrx2 hda /var/public/vnf_config_data_vsrx2 VNF Disk Usage ------------------------------------------------------------------------------ VNF Disk Read Req Read Bytes Write Req Write Bytes -------------------- --------- ---------- ------------ ---------- ------------ vsrx2 vda 14125 109740032 0 0 vsrx2 hda 0 0 0 0 VNF Port Statistics ---------------------------------------------------------------------------------------------------------------------------- VNF Port Rcvd Bytes Rcvd Packets Rcvd Error Rcvd Drop Trxd Bytes Trxd Packets Trxd Error Trxd Drop -------------------- --------- ------------ ------------ ---------- --------- ------------ ------------ ---------- --------- vsrx2 vnet4 52 1 0 0 0 0 0 0 vsrx2 vnet5 60 1 0 0 0 0 0 0 VNF Media Information ---------------------------------------------------------------------------------------------------------------- VNF Media Disk File ----------------------------- ----- ------------ --------------------------------------------------------------- vsrx2 CDROM hda /var/public/vnf_config_data_vsrx2
为 VNF 配置接口和 VLAN
您可以配置 VNF 接口,将 VNF 接口映射到虚拟功能,将接口连接到物理 NIC 端口、管理接口或 VLAN,为其分配 VLAN ID,并在其上启用信任模式。
在 Junos OS 21.3R1、21.2R2、21.2R1、21.1R2 和 20.4R3 版之前,配置 SR-IOV VNF 接口并分配 VLAN ID 的步骤如下:
user@host# set virtual-network-functions vnf-name interfaces vnf-interface-name mapping interface physical-interface-name virtual-function vlan-id vlan-id
从 Junos OS 21.3R1、21.2R2、21.2R1、21.1R2 和 20.4R3 版开始,配置 SR-IOV VNF 接口、分配 VLAN ID 和启用信任模式的步骤如下:
要将 VNF 接口映射到虚拟函数,请执行以下作:
user@host# set virtual-network-functions vnf-name interfaces vnf-interface-name mapping interface physical-interface-name
要使用 SR-IOV 虚拟功能将 VNF 接口连接到物理 NIC 端口并分配 VLAN ID,请执行以下作:
user@host# set virtual-network-functions vnf-name interfaces vnf-interface-name mapping interface virtual-function vlan-id vlan-id
vlan-id 是端口的 VLAN ID,是一个可选值。
要启用信任模式,请执行以下作:
user@host# set virtual-network-functions vnf-name interfaces vnf-interface-name mapping interface virtual-function trust
-
Junos OS 21.3R1、21.2R2、21.2R1、21.1R2 和 20.4R3 版的 NFX 系列设备支持信任模式。
-
如果在 VNF SR-IOV 接口上启用信任模式,则 VNF 接口将进入混合模式。
要将 VNF 接口连接到 VLAN,请执行以下作:
-
创建 VLAN:
user@host# set vmhost vlan vlan-name
-
将 VNF 接口连接到 VLAN:
user@host# set virtual-network-functions vnf-name interfaces interface-name mapping vlan members list-of-vlans [mode trunk|access]
VNF 接口可以映射到一个或多个物理接口。您可以通过配置虚拟端口对等方 (VPP) 功能来启用此功能。您可以配置 VNF 的 OVS 接口到一个或多个前面板接口之间的映射。如果所有映射的物理接口都处于非活动状态,则 VNF 接口将变为非活动状态。即使至少有一个映射的物理接口处于活动状态,VNF 接口也会变为活动状态。
-
如果 VNF 接口处于非活动状态,则映射的物理接口不会变为非活动状态。
-
在不支持信任模式的软件映像升级为支持信任模式的映像之前,建议从配置中删除所有 VNF 接口到虚拟功能的映射。
-
在将支持信任模式的软件映像降级为不支持信任模式的映像之前,需要从配置中删除所有 VNF 接口到虚拟功能的映射。否则,设备在降级后进入 健忘状态 。
VNF 的接口是一个 OVS 端口,此映射在配置中定义。如果映射规则可以在触发作之前查看多个物理端口,则配置 VPP 功能允许您管理多个冗余物理链路。
您可以配置 VNF 虚拟接口与 JCP 物理接口(ge-0/0/x 和 xe-0/0/)x之间的映射。一个虚拟接口可以映射到一个或多个物理接口。VNF 虚拟接口可映射到的物理接口数量没有限制。您可以将一个 VNF 虚拟接口映射到所有物理接口,也可以将多个 VNF 接口映射到单个物理接口。
要配置 VPP,请执行以下作:
root@host# set virtual-network-functions vnf-name interfaces interface-name mapping peer-interfaces physical-interface-name
例如:
root@host# set virtual-network-functions centos1 interfaces eth2 mapping peer-interfaces ge-0/0/6
要查看对等接口的映射,请运行命令 show system visibility vnf vnf-name 。
-
连接到 VNF 的接口在 VNF 重新启动后保持不变。
-
如果 VNF 支持热插拔,则可以在 VNF 运行时连接接口。否则,您必须添加接口,然后重新启动 VNF。
-
在 VNF 运行时,您无法更改 VNF 接口的映射。
您可以使用 deny-forwarding CLI 选项阻止 VNF 接口发送或接收流量。
如果在属于交叉连接的接口上启用了该 deny-forwarding 选项,则交叉连接状态将下降并丢弃所有流量。
set virtual-network-options vnf-name interface interface-name forwarding-options deny-forwarding
要指定 VNF 接口的目标 PCI 地址:
user@host# set virtual-network-functions vnf-name interfaces interface-name pci-address target-pci-address
您可以使用目标 PCI 地址重命名或重新组织 VNF 中的接口。
例如,基于 Linux 的 VNF 可以使用 VNF 中的 udev 规则根据 PCI 地址命名接口。
-
目标 PCI 地址字符串应采用以下格式:
0000:00:<slot:>:0,它们是 domain:bus:slot:function 的值。每个 VNF 接口的插槽值应不同。domain、bus 和 function 的值应为零。 -
在 VNF 运行时,您无法更改 VNF 接口的目标 PCI 地址。
要删除 VNF 接口,请执行以下作:
user@host# delete virtual-network-functions vnf-name interfaces interface-name user@host# commit
-
要删除 VNF 接口,您必须停止 VNF,删除接口,然后重新启动 VNF。
-
附加或分离虚拟功能后,必须重新启动 VNF 才能使更改生效。
-
eth0 和 eth1 是为连接到内部网络和带外管理网络的默认 VNF 接口保留的。因此,可配置的 VNF 接口名称从 eth2 开始。
-
在 VNF 中,接口名称可以有所不同,具体取决于来宾作系统命名约定。在 JCP 中配置的 VNF 接口在 VNF 中的显示顺序可能不同。
-
您必须使用目标 PCI 地址映射到 JCP 中配置的 VNF 接口,并且必须对其进行相应命名。
为 VNF 配置存储设备
NFX250 (NG) 设备支持以下 VNF 存储选项:
-
光盘
-
磁盘
-
USB
要添加虚拟 CD 或更新虚拟 CD 的源文件:
user@host# set virtual-network-functions vnf-name storage device-name type cdrom source file file-name
您可以指定格式为 hdx、sdx 或 vdx 的有效设备名称,例如 hdb、sdc、vdb 等。
要添加虚拟 USB 存储设备,请执行以下作:
user@host# set virtual-network-functions vnf-name storage device-name type usb source file file-name
要附加一个硬盘:
user@host# set virtual-network-functions vnf-name storage device-name type disk [bus-type virtio | ide] [file-type raw | qcow2] source file file-name
要从 VNF 中删除虚拟 CD、USB 存储设备或硬盘:
user@host# delete virtual-network-functions vnf-name storage device-name
-
从 VNF 附加或分离 CD 后,必须重新启动设备才能使更改生效。如果设备在 VNF 中使用,则 CD 分离作将失败。
-
VNF 支持一张虚拟 CD、一台虚拟 USB 存储设备和多个虚拟硬盘。
-
您可以在 VNF 运行时更新 CD 或 USB 存储设备中的源文件。
-
您必须将源文件保存在 /var/public 目录中,并且该文件必须具有所有用户的读写权限。
实例化 VNF
您可以通过配置 VNF 名称和指定映像的路径来实例化 VNF。
使用映像实例化 VNF 时,默认情况下会添加两个 VNF 接口。这些接口是管理和内部网络所必需的。
仅支持 QCOW2、IMG 和 RAW 图像类型。
要使用映像实例化 VNF,请执行以下作:
user@host# set virtual-network-functions vnf-name image file-path user@host# set virtual-network-functions vnf-name image image-type image-type user@host# commit
配置 VNF 时,请勿使用 vnfn 格式的 VNF 名称,例如 vnf1、vnf2 等。包含此类名称的配置将无法提交。
(选答)要为 VNF 指定 UUID,请执行以下作:
user@host# set virtual-network-functions vnf-name [uuid vnf-uuid]
uuid 是可选参数。建议允许系统为 VNF 分配 UUID。
保存并提交配置后,无法更改 VNF 的映像配置。要更改 VNF 的映像,您必须删除 VNF,然后重新创建 VNF。
快速 CLI 配置
user@host# set virtual-network-functions vnf-name virtual-cpu count number
user@host# set virtual-network-functions vnf-name virtual-cpu vcpu-number physical-cpu pcpu-number
user@host# set virtual-network-functions vnf-name virtual-cpu features hardware-virtualization
user@host# set virtual-network-functions vnf-name memory size size
user@host# set virtual-network-functions vnf-name interfaces vnf-interface-name mapping interface physical-interface-name
user@host# set virtual-network-functions vnf-name interfaces vnf-interface-name mapping interface virtual-function vlan-id vlan-id
user@host# set virtual-network-functions vnf-name interfaces vnf-interface-name mapping interface virtual-function trust
user@host# set vmhost vlan vlan-name
user@host# set virtual-network-functions vnf-name interfaces interface-name mapping vlan members list-of-vlans [mode trunk|access]
root@host# set virtual-network-functions vnf-name interfaces interface-name mapping peer-interfaces physical-interface-name
user@host# set virtual-network-functions vnf-name storage device-name type cdrom source file file-name
user@host# set virtual-network-functions vnf-name storage device-name type usb source file file-name
user@host# set virtual-network-functions vnf-name storage device-name type disk [bus-type virtio | ide] [file-type raw | qcow2] source file file-name
user@host# set virtual-network-functions vnf-name image file-path user@host# set virtual-network-functions vnf-name image image-type image-type user@host# commit
验证 VNF 实例化
要验证 VNF 是否已成功实例化,请执行以下作:
user@host> show virtual-network-functions ID Name State Liveliness -------------------------------------------------------------------------------- 1 vjunos0 Running alive 2 centos1 Running alive 3 centos2 Running alive
VNF 的 活跃度 字段中的输出指示 VNF 的 IP 地址是否可通过内部管理网络访问。活跃网桥的默认 IP 地址为 192.0.2.1/24。请注意,此 IP 地址为设备内部地址,用于 VNF 管理。
NFX250 上的虚拟路由反射器 NextGen 概述
虚拟路由反射器 (VRR) 功能允许您在虚拟化环境中实施路由反射器功能。从 Junos OS 21.4R2 版开始,您可以在 NFX250 NextGen 设备上实施 VRR 功能。您可以在计算或混合模式下配置 VRR VNF。但是,我们建议您在 flex 模式下配置 vrr VNF,因为您可以在 flex 模式下为 VNF 分配最大资源。本主题介绍如何在 flex 模式下配置 VRR VNF。
有关 VRR 的更多信息,请参阅 虚拟路由反射器 (VRR) 文档。
如何在 NFX250 NextGen 设备上配置 VRR VNF
从 Junos OS 21.4R2 版开始,您可以在 NFX250 NextGen 设备上将 VRR 配置为 VNF。在配置 VRR VNF 之前:
-
删除设备上部署的所有第三方 VNF。
-
验证设备上是否未配置任何 hugepages。如果配置了 hugepages,请将其删除。
-
为第 2 层数据平面和 OVS 分配最少的资源。这可确保为 VRR VNF 分配最大资源。
user@host# set vmhost mode custom flex layer-3-infrastructure cpu count MIN user@host# set vmhost mode custom flex layer-3-infrastructure memory size MIN user@host# set vmhost mode custom flex nfv-back-plane cpu count MIN user@host# set vmhost mode custom flex nfv-back-plane memory size MIN user@host# commit
要配置 VRR VNF,请执行以下作: