在 NFX350 设备上配置 VNF
借助 NFX350 设备,您可以从 Junos 控制平面 (JCP) 实例化和管理虚拟化网络功能 (VNF)。JCP 支持创建和管理第三方 VNF。
加载 VNF 映像
要配置 VNF,您必须登录到 JCP:
user@host:~ # cliuser@host>
要从远程位置在设备上加载 VNF 映像,可以使用 file-copy 命令或使用 usb-pass-through 命令从 USB 复制映像。
如果您最多使用两个 VNF,则可以将 VNF 映像保存在 /var/public 目录中。如果您使用两个以上的 VNF,请将文件保存在外部 SSD 上。如果您将外部 SSD 用于 VNF,请确保初始化 SSD 并将其添加到设备。有关详细信息,请参阅 在 NFX350 设备上配置固态磁盘。
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 配置
您可以通过附加 CD-ROM、USB 存储设备或包含 bootstrap-config ISO 文件的配置驱动器来引导 VNF。
有关创建 ISO 文件的示例,请参阅 创建 vSRX 自举 ISO 映像中的过程。根据用于创建 ISO 文件的作系统(例如,Linux、Ubuntu),该过程可能会有所不同。
自举配置文件必须包含允许从外部控制器访问 VNF 的初始配置,并接受来自外部控制器的 SSH、HTTP 或 HTTPS 连接以进行进一步的运行时配置。
系统将 bootstrap-config ISO 文件保存在 /var/public 文件夹中。仅当文件夹中的可用空间是文件中内容总大小的两倍以上时,才会保存文件。如果文件夹中的可用空间不足,则在提交配置时会显示错误消息。
重新启动系统时,系统将生成新的 bootstrap-config ISO 文件,并将现有 ISO 文件替换为 VNF 上的新 ISO 文件。
为 VNF 分配 CPU
表 1 列出了 NFX350 型号可用于 VNF 的 CPU。
| 型 |
可用于 VNF 的 CPU |
||||
|---|---|---|---|---|---|
| 吞吐量模式 |
混合模式 |
计算模式 |
自定义模式 |
||
| Flex 模式 |
性能模式 |
||||
| NFX350-S1 |
0 |
8 |
10 |
11 | 6 |
| NFX350-S2 |
0 |
10 |
14 |
19 | 10 |
| NFX350-S3 |
0 |
14 |
20 |
27 | 12 |
自定义模式和自定义模式的资源分配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
user@host> show vmhost mode Starting network management services: snmpd libvirtMib_subagent. Synchronizing UEFI key-store: Failed to get revocation list: 2 Juniper Dev keys are not revoked. Doing nothing cp: cannot stat '/var/platform/lte_vm_xml_params': No such file or directory rm: cannot remove '/lib/udev/rules.d/lte_usb.rules': No such file or directory Mode: -------- Current Mode: compute CPU Allocations: Name Configured Used ---------------------------------------------------------------------------------------------------------------------- Junos Control Plane 8 3,8 Juniper Device Manager 8 8 LTE 8 - NFV Backplane Control Path 8 8 NFV Backplane Data Path 1 1 Layer 2 Control Path - - Layer 2 Data Path - - Layer 3 Control Path 0 0 Layer 3 Data Path 2 2 CPUs available for VNFs 3,4,5,6,7,11,12,13,14,15 - CPUs turned off 9,10 - Memory Allocations: Name Configured Used ---------------------------------------------------------------------------------------------------------------------- Junos Control Plane (mB) 2048 2011 NFV Backplane 1G hugepages 4 8 NFV Backplane 2M hugepages - 0 Layer 2 1G hugepages - - Layer 2 2M hugepages - - Layer 3 1G hugepages 4 4 Layer 3 2M hugepages 5633 5377
CPUs available for VNFs输出消息中的部分显示了可用于载入 VNF 的 CPU。
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 列出了 NFX350 型号使用 VNF 的可能内存可用性。
| 型 |
可用内存总数 |
在计算、混合和吞吐量模式下使用 VNF 的可用性巨大 |
Hugepages 在自定义模式下使用 VNF 的可用性 |
|
|---|---|---|---|---|
| Flex 模式 |
性能模式 |
|||
| NFX350-S1 |
32 千兆字节 |
7 个 1G 巨页 |
24 个 1G 巨页 |
22 个 1G 巨页 |
| NFX350-S2 |
64 千兆字节 |
23 个 1G 巨型页面 |
50 个 1G 巨页 |
49 个 1G 巨页 |
| NFX350-S3 |
128 千兆字节 |
62 个 1G 巨页 |
110 个 1G 巨页 |
108 个 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 可以使用的最大主内存:
user@host# set virtual-network-functions vnf-name memory size size
您无法在 VNF 运行时更改其内存配置。您必须重新启动 VNF 才能使更改生效。
为 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 接口将进入混合模式。
禁用欺骗检查
user@host# set virtual-network-functions vnf-name interfaces interface-name mapping interface virtual-function disable-spoof-check
要将 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
从 Junos OS 24.2R1 版开始,您可以通过在[edit vmhost]层次结构中配置 virtualization-options interfaces L3-interface-name mapping peer-interfaces physical-interface at 来设置第 2 层接口(xe-0/0/x 或 ge-0/0/x 端口)与第 3 层接口(ge-1/0/0 到 ge-1/0/9)之间的映射或对等互连。
如果将第 3 层接口路由到多个物理接口,则可以配置 fail-on-any-peer option 选项。如果任何映射的对等物理接口发生故障,您可以使用 fail-on-any-peer option 选项关闭第 3 层接口。
要配置 VPP,请执行以下作:
root@host# set vmhost virtualization-options interfaces L3-interface-name mapping peer-interfaces ge-0/0/5
root@host# set vmhost virtualization-options interfaces L3-interface-name mapping fail-on-any-peer
例如:
root@host# set vmhost virtualization-options interfaces ge-1/0/3 mapping peer-interfaces physical-interface
root@host# set vmhost virtualization-options interfaces ge-1/0/3 mapping fail-on-any-peer
从 Junos OS 24.2R1 版开始,您可以使用 VPP 功能在 VNF 接口上配置静态 MAC 地址。
要在使用 VPP 的 VNF 接口上配置静态 MAC 地址:
root@host# set virtual-network-functions vnf-name interfaces interface-name mac-address mac-address
每当在 VNF 接口上添加或删除 MAC 地址时,都必须重新启动 VNF 才能使更改生效。
要指定 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 配置存储设备
NFX350 设备支持以下 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。
验证 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 管理。