在 KVM vMX交换机
阅读本主题可了解如何在 KVM 环境中安装虚拟 MX 路由器。
准备 Ubuntu 主机以安装vMX
要准备 Ubuntu 主机系统以安装 vMX(从 Junos OS 版本15.1F6):
-
满足最低硬件和软件要求中所述 的最低软件和操作系统要求。
-
请参阅 下面的 升级内核 和 升级到 libvirt 1.2.19 部分。
-
如果您使用 Intel XL710 PCI-Express 系列卡,请确保更新驱动程序。请参阅 更新 X710 设备驱动程序 NIC。
-
在 BIOS 中启用 Intel VT-d。(建议您与供应商验证流程,因为不同的系统有不同的方法可启用 VT-d。)
请参阅在 Intel 网站上启用 VT-d 的过程。
-
在
KSM_ENABLED=0
/etc/default/qemu-kvm中设置 禁用 KSM 。 -
编辑 /etc/modprobe.d/qemu-system-x86.conf 文件并添加到包含 的行中,禁用 APIC
enable_apicv=0
虚拟化options kvm_intel
。options kvm_intel nested=1 enable_apicv=0
-
重新启动主机以禁用 KSM 和 APIC 虚拟化。
-
如果您使用 SR-IOV,则必须执行此步骤。
注意:您必须在 /etc/network/interfaces 中卸下任何之前使用外部网桥的安装,然后恢复到原始管理接口。继续安装之前,请确保 命令不会显示
ifconfig -a
外部网桥。要确定是否显示外部网桥,请使用
ifconfig
命令查看管理接口。要确认此接口用于外部桥接组,请使用 命令查看管理接口brctl show
是否列为外部网桥。打开
intel_iommu=on
/etc/default/grub 目录中的 启用 SR-IOV 功能。GRUB_CMDLINE_LINUX_DEFAULT="intel_iommu=on"
将
intel_iommu=on
字符串附加到参数的任何现有GRUB_CMDLINE_LINUX_DEFAULT
文本。运行
update-grub
命令,然后运行reboot
命令。 -
为获得最佳性能,建议将主机上的"巨大页面"大小配置为 1G,并确保 VFP 的 NUMA 节点至少有 16 个 1G 巨大页面。要配置"巨大页面"的大小,请添加以下行(in /etc/default/grub):
GRUB_CMDLINE_LINUX="default_hugepagesz=1G hugepagesz=1G hugepages=number-of-huge-pages"
巨大的页面数量必须至少为 (16G * number-of-numa-sockets )。
-
在
modprobe kvm-intel
安装 之前运行 vMX。
从 Junos OS 18.2 及更高版本开始,支持 Ubuntu 16.04.5 LTS 和 Linux 4.4.0-62 通用版。
为了满足最低软件和操作系统要求,您可能需要执行以下任务:
升级内核
无需升级 Ubuntu 16.04 版本的 Linux 内核。
如果您使用 Ubuntu 14.04.1 LTS(附带 3.19.0-80 通用版本),可以跳过此步骤。Ubuntu 14.04 的内核版本(Linux 3.13.0-24 通用)比推荐版本 (Linux 3.19.0-80-generic) 更低。
要升级内核:
-
确定内核版本。
uname -a Linux rbu-node-33 3.19.0-80-generic #57-Ubuntu SMP Tue Jul 15 03:51:08 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
-
如果版本不同于步骤 1 中所示的版本,请运行以下命令:
apt-get install linux-firmware apt-get install linux-image-3.19.0-80-generic apt-get install linux-image-extra-3.19.0-80-generic apt-get install linux-headers-3.19.0-80-generic
-
重新启动系统。
升级到 libvirt 1.2.19
Ubuntu 16.04.5 支持 Libvirt 版本为 1.3.1。无需升级 Ubuntu 16.04 中的 libvirt。
Ubuntu 14.04 支持 libvirt 1.2.2(适用于 VFP lite 模式)。如果您使用 VFP 性能模式或使用 VFP lite 模式部署多个 vMX 实例,则必须升级到 libvirt 1.2.19。
要升级 libvirt:
-
请确保安装最低硬件和软件要求 中列出的 所有软件包。
-
使用 命令导航到 /tmp
cd /tmp
目录。 -
使用
libvirt-1.2.19
命令获取源代码wget http://libvirt.org/sources/libvirt-1.2.19.tar.gz
。 -
使用 命令解压缩和解压缩
tar xzvf libvirt-1.2.19.tar.gz
文件。 -
使用 命令 导航到 libvirt-1.2.19
cd libvirt-1.2.19
目录。 -
使用 命令阻止
service libvirt-bin stop
libvirtd。 -
运行
./configure --prefix=/usr --localstatedir=/ --with-numactl
命令。 -
运行
make
命令。 -
运行
make install
命令。 -
确保 libvirt 守护程序正在运行。(使用
service libvirt-bin start
命令再次启动。如果尚未启动,请使用/usr/sbin/libvirtd -d
命令。)root@vmx-server:~# ps aux | grep libvirtd root 1509 0.0 0.0 372564 16452 ? Sl 10:25 0:00 /usr/sbin/libvirtd -d
-
验证 libvirtd 和 virsh 的版本为 1.2.19。
root@vmx-server:~# /usr/sbin/libvirtd --version libvirtd (libvirt) 1.2.19 root@vmx-server:~# /usr/bin/virsh --version 1.2.19 root@vmx-server:~#
系统显示代码编译日志。
如果在升级 libvirt vMX无法部署该网桥,使用 命令关闭 virbr0 网桥,然后使用 ifconfig virbr0 down
brctl delbr virbr0
命令删除网桥。
更新 X710 设备NIC
如果您使用 Intel XL710 PCI-Express 系列 NIC,请确保在安装卡之前更新vMX。
要更新驱动程序:
安装其他必需软件包
apt-get install python-pip apt-get install python-netifaces pip install pyyaml
准备 Red Hat Enterprise Linux 主机以安装vMX
要准备运行 Red Hat Enterprise Linux 的主机系统vMX,请执行以下版本的任务:
准备 Red Hat Enterprise Linux 7.3 主机以安装 vMX
要准备运行 Red Hat Enterprise Linux 7.3 的主机系统以安装vMX:
您现在可安装 vMX。
使用 命令安装 vMX sh vmx.sh -lv --install
时,您可能会看到内核版本不匹配警告。您可以忽略此警告。
准备 Red Hat Enterprise Linux 7.2 主机以安装 vMX
要准备运行 Red Hat Enterprise Linux 7.2 的主机系统以安装vMX:
您现在可安装 vMX。
使用 命令安装 vMX sh vmx.sh -lv --install
时,您可能会看到内核版本不匹配警告。您可以忽略此警告。
准备 CentOS 主机以安装vMX
要准备运行 CentOS 的主机系统以安装vMX:
您现在可安装 vMX。
使用 命令安装 vMX sh vmx.sh -lv --install
时,您可能会看到内核版本不匹配警告。您可以忽略此警告。
为vMX安装软件
对于特定vMX,安装软件会有所不同。表列出了某些用例的样本vMX要求。
用例 |
最小 v CPU |
最低内存 |
NIC设备类型 |
---|---|---|---|
实验室模拟 高达 100 Mbps 的性能 |
4:VCP 3 为 1(VFP) |
5 GB:1 GB(VCP)4 GB(VFP) |
virtio |
低带宽应用程序 高达 3 Gbps 的性能 |
10:1(VCP 9)(VFP) |
20 GB:4 GB(VCP)16 GB(VFP) |
virtio |
高带宽应用或性能测试 提供 3 Gbps 及性能提升 |
10:1(VCP 9)(VFP) |
20 GB 4 GB(VCP)16 GB(VFP) |
SR-IOV |
双虚拟路由引擎
注意:
在单独的主机上部署时,必须在主机之间设置连接,供 VCP 相互通信。 |
部署两个 VCP 实例时,用于特定用例的 VCP 资源数量翻倍。 |
部署两个 VCP 实例时,用于特定用例的 VCP 资源数量翻倍。 |
virtio 或 SR-IOV |
用例 |
最小 v CPU |
最低内存 |
NIC设备类型 |
---|---|---|---|
实验室模拟 高达 100 Mbps 的性能 |
4:VCP 3 为 1(VFP) |
5 GB:1 GB(VCP)4 GB(VFP) |
virtio |
低带宽应用程序 高达 3 Gbps 的性能 |
8:VCP 7 为 1(VFP) |
16 GB:4 GB(VCP)12 GB(VFP) |
virtio |
高带宽应用或性能测试 提供 3 Gbps 及性能提升 |
8:VCP 7 为 1(VFP) |
16 GB 4 GB(VCP)12 GB(VFP) |
SR-IOV |
双虚拟路由引擎
注意:
在单独的主机上部署时,必须在主机之间设置连接,供 VCP 相互通信。 |
部署两个 VCP 实例时,用于特定用例的 VCP 资源数量翻倍。 |
部署两个 VCP 实例时,用于特定用例的 VCP 资源数量翻倍。 |
virtio 或 SR-IOV |
用例 |
最小 v CPU |
最低内存 |
NIC设备类型 |
---|---|---|---|
实验室模拟 高达 100 Mbps 的性能 |
4:VCP 3 为 1(VFP) |
5 GB:1 GB(VCP)4 GB(VFP) |
virtio |
低带宽应用程序 高达 3 Gbps 的性能 |
8:VCP 7 为 1(VFP) |
16 GB:4 GB(VCP)12 GB(VFP) |
virtio |
高带宽应用或性能测试 提供 3 Gbps 及性能提升 |
8:VCP 7 为 1(VFP) |
16 GB 4 GB(VCP)12 GB(VFP) |
SR-IOV |
用例 |
最小 v CPU |
最低内存 |
NIC设备类型 |
---|---|---|---|
实验室模拟 高达 100 Mbps 的性能 |
4:VCP 3 为 1(VFP) |
5 GB:1 GB(VCP)4 GB(VFP) |
virtio |
低带宽应用程序 高达 3 Gbps 的性能 |
8:VCP 7 为 1(VFP) |
16 GB:4 GB(VCP)12 GB(VFP) |
virtio |
高带宽应用或性能测试 提供 3 Gbps 及超过 3 Gbps 的性能 |
8:VCP 7 为 1(VFP) |
16 GB 4 GB(VCP)12 GB(VFP) |
SR-IOV |
用例 |
最小 v CPU |
最低内存 |
NIC设备类型 |
---|---|---|---|
实验室模拟 高达 100 Mbps 的性能 |
4:VCP 3 为 1(VFP) |
10 GB:2 GB(VCP)8 GB(VFP) |
virtio |
低带宽应用程序 高达 3 Gbps 的性能 |
4:VCP 3 为 1(VFP) |
10 GB:2 GB(VCP)8 GB(VFP) |
virtio 或 SR-IOV |
高带宽应用或性能测试 对于 3 Gbps 及性能(至少两个 10Gb 以太网端口) 高达 80 Gbps 的原始性能 |
8:VCP 7 为 1(VFP) |
16 GB 4 GB(VCP)12 GB(VFP) |
SR-IOV |
用例 |
最小 v CPU |
最低内存 |
NIC设备类型 |
---|---|---|---|
实验室模拟 高达 100 Mbps 的性能 |
4:VCP 3 为 1(VFP) |
8 GB:2 GB(VCP)6 GB(VFP) |
virtio |
低带宽应用程序 高达 3 Gbps 的性能 |
4:VCP 3 为 1(VFP) |
8 GB:2 GB(VCP)6 GB(VFP) |
virtio 或 SR-IOV |
高带宽应用或性能测试 对于 3 Gbps 及性能(至少两个 10Gb 以太网端口) 高达 80 Gbps 原始性能 |
5:1(VCP 4)(VFP) |
8 GB 2 GB(VCP)6 GB(VFP) |
SR-IOV |
从 Junos OS 18.4R1 版(Ubuntu 主机)和 Junos OS 版本 19.1R1(RedHat 主机)中,您可以将值设置为 vMX 配置文件中的 true,为网络接口卡使用最新未修改的驱动程序vMX use_native_drivers
安装
要针对vMX安装应用程序,请执行以下任务之一:
安装vMX用于实验室模拟
从 Junos OS 14.1 版开始,实验室模拟用例使用 virtio NIC。
要针对vMX模拟(低于 100 Mbps)应用用例安装测试接口:
以下是使用 virtio vMX类型进行实验室模拟的启动配置文件示例:
--- #Configuration on the host side - management interface, VM images etc. HOST: identifier : vmx1 # Maximum 4 characters host-management-interface : eth0 routing-engine-image : "/home/vmx/vmxlite/images/junos-vmx-x86-64.qcow2" routing-engine-hdd : "/home/vmx/vmxlite/images/vmxhdd.img" forwarding-engine-image : "/home/vmx/vmxlite/images/vFPC.img" --- #External bridge configuration BRIDGES: - type : external name : br-ext # Max 10 characters --- #vRE VM parameters CONTROL_PLANE: vcpus : 1 memory-mb : 1024 console_port: 8601 interfaces : - type : static ipaddr : 10.102.144.94 macaddr : "0A:00:DD:C0:DE:0E" --- #vPFE VM parameters FORWARDING_PLANE: memory-mb : 4096 vcpus : 3 console_port: 8602 device-type : virtio interfaces : - type : static ipaddr : 10.102.144.98 macaddr : "0A:00:DD:C0:DE:10" --- #Interfaces JUNOS_DEVICES: - interface : ge-0/0/0 mac-address : "02:06:0A:0E:FF:F0" description : "ge-0/0/0 interface" - interface : ge-0/0/1 mac-address : "02:06:0A:0E:FF:F1" description : "ge-0/0/1 interface"
为vMX应用程序安装新组件
从 Junos OS 14.1 版开始,低带宽应用程序的用例使用 virtio 或 SR-IOV NIC。
要针对vMX(高达 3 Gbps)应用用例安装应用程序代码:
以下是使用 virtio vMX应用程序的 virtio 设备类型启动配置文件的示例:
--- #Configuration on the host side - management interface, VM images etc. HOST: identifier : vmx1 # Maximum 4 characters host-management-interface : eth0 routing-engine-image : "/home/vmx/vmx/images/junos-vmx-x86-64.qcow2" routing-engine-hdd : "/home/vmx/vmx/images/vmxhdd.img" forwarding-engine-image : "/home/vmx/vmx/images/vFPC.img" --- #External bridge configuration BRIDGES: - type : external name : br-ext # Max 10 characters --- #vRE VM parameters CONTROL_PLANE: vcpus : 1 memory-mb : 4096 console_port: 8601 interfaces : - type : static ipaddr : 10.102.144.94 macaddr : "0A:00:DD:C0:DE:0E" --- #vPFE VM parameters FORWARDING_PLANE: memory-mb : 16384 vcpus : 9 console_port: 8602 device-type : virtio interfaces : - type : static ipaddr : 10.102.144.98 macaddr : "0A:00:DD:C0:DE:10" --- #Interfaces JUNOS_DEVICES: - interface : ge-0/0/0 mac-address : "02:06:0A:0E:FF:F0" description : "ge-0/0/0 interface" - interface : ge-0/0/1 mac-address : "02:06:0A:0E:FF:F1" description : "ge-0/0/1 interface"
为vMX应用程序安装新组件
从 Junos OS 14.1 版开始,高带宽应用程序的用例将使用 SR-IOV NIC。
要针对vMX(3 Gbps 以上)应用应用安装标准:
以下是使用 SR-IOV 设备vMX启动配置文件的示例:
--- #Configuration on the host side - management interface, VM images etc. HOST: identifier : vmx1 # Maximum 4 characters host-management-interface : eth0 routing-engine-image : "/home/vmx/images/junos-vmx-x86-64.qcow2" routing-engine-hdd : "/home/vmx/images/vmxhdd.img" forwarding-engine-image : "/home/vmx/images/vFPC.img" --- #External bridge configuration BRIDGES: - type : external name : br-ext # Max 10 characters --- #VCP VM parameters CONTROL_PLANE: vcpus : 1 memory-mb : 4096 console_port: 8601 interfaces : - type : static ipaddr : 10.102.144.94 macaddr : "0A:00:DD:C0:DE:0E" --- #VFP VM parameters FORWARDING_PLANE: memory-mb : 16384 vcpus : 9 console_port: 8602 device-type : sriov interfaces : - type : static ipaddr : 10.102.144.98 macaddr : "0A:00:DD:C0:DE:10" --- #Interfaces JUNOS_DEVICES: - interface : ge-0/0/0 port-speed-mbps : 10000 nic : eth1 mtu : 2000 virtual-function : 0 mac-address : "02:06:0A:0E:FF:F0" description : "ge-0/0/0 connects to eth1" - interface : ge-0/0/1 port-speed-mbps : 10000 nic : eth2 mtu : 2000 virtual-function : 0 mac-address : "02:06:0A:0E:FF:F1" description : "ge-0/0/1 connects to eth2"
有关详细信息,请参阅 示例:在 KVM 上的vMX实例上启用 SR-IOV。
安装带vMX引擎的路由引擎
您可以在 vMX 启动配置文件(默认文件为 config/vmx.conf)的 CONTROL_PLANE CONTROL_PLANE 部分创建主 路由引擎 (re0) 和备份 路由引擎 (re1) ,在 vMX 服务器上设置冗余路由引擎。
在单独主机上部署路由引擎时,必须在主机之间设置连接,供 VCP 相互通信。
从 18 Junos OS 18.1 版开始,vMX用于双路由引擎用例:
以下是用于vMX主机上第一个路由引擎实例的启动配置文件示例:
--- #Configuration on the host side - management interface, VM images etc. HOST: identifier : vmx1 # Maximum 4 characters host-management-interface : eth0 routing-engine-image : "/home/vmx/images/junos-vmx-x86-64.qcow2" routing-engine-hdd : "/home/vmx/images/vmxhdd.img" forwarding-engine-image : "/home/vmx/images/vFPC.img" --- #External bridge configuration BRIDGES: - type : external name : br-ext # Max 10 characters --- #VCP VM parameters CONTROL_PLANE: vcpus : 1 memory-mb : 4096 console_port : 8601 deploy : 0 interfaces : - type : static instance : 0 ipaddr : 10.102.144.94 macaddr : "0A:00:DD:C0:DE:0E" - type : static instance : 1 console_port : 8612 ipaddr : 10.102.144.95 macaddr : "0A:00:DD:C0:DE:0F" --- #VFP VM parameters FORWARDING_PLANE: memory-mb : 12288 vcpus : 10 console_port: 8602 device-type : sriov interfaces : - type : static ipaddr : 10.102.144.98 macaddr : "0A:00:DD:C0:DE:10" --- #Interfaces JUNOS_DEVICES: - interface : ge-0/0/0 port-speed-mbps : 10000 nic : eth1 mtu : 2000 virtual-function : 0 mac-address : "02:06:0A:0E:FF:F0" description : "ge-0/0/0 connects to eth1" - interface : ge-0/0/1 port-speed-mbps : 10000 nic : eth2 mtu : 2000 virtual-function : 0 mac-address : "02:06:0A:0E:FF:F1" description : "ge-0/0/1 connects to eth2"
使用vMX WAN 接口安装软件
从 Junos OS 17.2 版开始,混合 WAN 接口的用例会使用 virtio 和 SR-IOV 接口。样本配置要求与使用 SR-IOV 设备类型相同。
要安装vMX接口的接口:
以下是使用混合vMX启动配置文件的示例:
--- #Configuration on the host side - management interface, VM images etc. HOST: identifier : vmx1 # Maximum 4 characters host-management-interface : eth0 routing-engine-image : "/home/vmx/images/junos-vmx-x86-64.qcow2" routing-engine-hdd : "/home/vmx/images/vmxhdd.img" forwarding-engine-image : "/home/vmx/images/vFPC.img" --- #External bridge configuration BRIDGES: - type : external name : br-ext # Max 10 characters --- #VCP VM parameters CONTROL_PLANE: vcpus : 1 memory-mb : 4096 console_port: 8601 interfaces : - type : static ipaddr : 10.102.144.94 macaddr : "0A:00:DD:C0:DE:0E" --- #VFP VM parameters FORWARDING_PLANE: memory-mb : 12288 vcpus : 10 console_port: 8602 device-type : mixed interfaces : - type : static ipaddr : 10.102.144.98 macaddr : "0A:00:DD:C0:DE:10" --- #Interfaces JUNOS_DEVICES: - interface : ge-0/0/0 type : virtio mac-address : "02:06:0A:0E:FF:F0" description : "ge-0/0/0 interface" - interface : ge-0/0/1 type : sriov port-speed-mbps : 10000 nic : eth2 mtu : 2000 virtual-function : 0 mac-address : "02:06:0A:0E:FF:F1" description : "ge-0/0/1 connects to eth2"