CSR 1000v KVM SRIOV CentOS 7安装设置指南

作者简介:饶维波 思科中国运营商事业部 系统架构工程师

本文提供在 CentOS 7 版本上安装 KVM,并安装和设置 CSR 1000v/Catalyst 8000v 的指南,内容包括 SRIOV,KVM 调优以及 CSR1KV 初始化配置等内容。

作者:Rao Weibo

版本:1.0

更新日期:20210203

CentOS7 安装及设置

(1)BIOS 设置建议

Configuration Recommended Setting
Intel Hyper-Threading Technology Disabled
Number of Enable Cores ALL
Execute Disable Enabled
Intel VT Enabled
Intel VT-D Enabled
Intel VT-D coherency support Enabled
Intel VT-D ATS support Enabled
CPU Performance High throughput
Hardware Perfetcher Disabled
Adjacent Cache Line Prefetcher Disabled
DCU Streamer Prefetch Disable
Power Technology Custom
Enhanced Intel Speedstep Technology Disabled
Intel Turbo Boost Technology Enabled
Processor Power State C6 Disabled
Processor Power State C1 Enhanced Disabled
Frequency Poor Override Enabled
P-State Coordination HW_ALL
Energy Performance Performance

以上建议来自 CSR 1000v 的安装指南。

(2)CentOS 7 的安装

在安装的时候选择

  • Server with GUI
  • Virtualization Client
  • Virtualization Hypervisor
  • Virtualization Tools

启动完毕以后关闭 selinux,重启生效。

本文档采用 NetworkManager 配置,故在此并不停用 NetworkManager。

检查 KVM 组件版本:

(3)创建本地 Yum 源(可选)

运行 virt-manager 启动图形化界面。

如果对 virsh CLI 命令熟悉,可以使用 virsh 命令创建虚拟机。

(4)服务器网卡配置—NetworkManager 配置

在终端界面,可以通过 nmtui 打开图形化界面进行设置;以下使用 nmcli 进行设置。

上述命令完成后,在/etc/sysconfig/network-scripts 中会生成网卡的 ifcfg 配置文件。

此时,可以将 network.service 停止和关闭。

注意,如果 NetworkManager 未设置妥当,执行 systemctl stop network 后,会导致服务器无法管理。

准备开启 SRIOV 的网卡设置,以 eno2 为例:

注:上述 MTU 值设置为 9216 是借鉴自 Cisco NFVIS 平台,如下:

(5)配置 Linux 网桥 (可选)

网桥 br1 配置示例:

网桥 br1 的物理网卡配置

创建 net-br1 网络

[root@centos7 ~]# cat net-br1.xml

配置 SR-IOV

(1)检查网卡对 SR-IOV 的支持,并配置网卡

可使用 lshw 和 lspci 检查网卡对 SR-IOV 的支持

lshw -c network -businfo

lspci -vv -s 3b:00.1 | grep -A 5 -i SR-IOV

(2)设置启动参数

重启后验证

  • default_hugepagesz=1G hugepagesz=1G hugepages=32 参数设置主机在启动时分配 32 个 1GB 的内存大页,这些是静态内存大页。 CSR 1000v 虚拟机将试用这些静态大页以获得最优性能。
  • isolcpus=1-8,37-44参数设置的作用是隔离 1-8,37-44 的 CPU 核,使其独立于内核的平衡调度算法,也就是内核本身不会将进程分配到被隔离的 CPU。之后我们可将指定的进程 CSR 1000v 虚拟机绑定到被隔离的 CPU 上运行,让进程独占 CPU,使其实时性可得到一定程度的提高。

可参考 这个章节获取主机 CPU 核的相关信息。

查看隔离的 CPU 核以及所有的 CPU 核。

(3)通过 nmcli 持久化 VFs 配置

nmcli 可以设置网卡的 sriov 参数,如下:

还可以设置每一个 VF 设备的 MAC 地址,便于管理:

执行上述命令后:

cat /etc/sysconfig/network-scripts/ifcfg-eno2

重启后,检查 dmesg:

dmesg | grep -i vf | grep -i eno2

(4)检查 VF

可通过 lspci 和 ip link 检查 VF,如下:

寻找 Physical Function 和 Virtual Function 之间的对应关系:

VF 被创建后,NetworkManager 自动给新的设备创建 Connection,可以修改名称,如下:

nmcli connection

修改名称:

修改 MTU 值,并禁用 IPv4 和 IPv6,网卡启动更快

上述命令生成的 ifcfg 配置文件如下:

[root@centos7 ~]# cat /etc/sysconfig/network-scripts/ifcfg-enp59s16f1

这样,即便系统重启,上述配置依然能生效。

使用 KVM 的虚拟网络适配器池

主机上创建一个 VF 网络设备的资源池,资源池内的设备可以自动地分配给虚拟机使用。

(1)创建一个 xml 文件。

[root@centos7 ~]# cat eno2_sriov_pool.xml

(2)根据 xml 定义一个网络,并设置为自动重启

[root@centos7 ~]# virsh net-dumpxml eno2_sriov_pool

(3)从网络适配器池中分配网卡给虚拟机

用这种方法添加 SRIOV 网卡比较简单:

按照如上方法添加网卡,等同于以下 xml 配置:

开机后 dumpxml 如下:

使用 Virt-manager 安装 CSR1000v

在 CentOS 图形界面中,打开 Terminal,运行 virt-manager,按照以下步骤创建 CSR1000v;添加网卡,并选择 en2_sriov_pool。





注:csr1kv-1 的第一个网口选择macvtap Bridge模式,这样就无需创建一个 Linux 网桥。但是,csr1kv-1 启动以后不能通过该接口与 Linux 主机进行通信,仅能通过该接口访问 Linux 主机外的网络。


添加完网卡后,点击开始安装,然后就可以关闭虚拟机了。上述操作完成后,virt-manager 会在/etc/libvirtd/qemu/目录下创建csr1kv-1.xml

KVM 调优配置

KVM 的调优比较复杂,主要是 NUMA、内存大页、vCPU PIN 等,参考资料为 Redhat Linux 7 PERFORMANCE TUNING GUIDE。

(1)检查平台的能力

可检查平台的 CPU 核数、分布,内存的 NUMA 分布等。

(2)NUMA 调优

两颗 CPU,每颗 CPU 各有 128GB 内存,分别是 node 0 和 node 1。

(3)内存大页 HugePage 以及透明大页

cat /proc/meminfo | grep HugePages 查看当前系统有多少个大页:

在系统运行时修改大页数量:

检查透明大页参数,在 CentOS7 上缺省开启;开启了透明大页,不影响静态大页的使用。

(4)vCPU 钉选

设置 CPU Affinity 的好处是提高 CPU 缓存效率,避免进程在多个 CPU 核之间跳跃,切换 CPU 核均会导致缓存中的数据无效,缓存命中率大幅降低,导致数据获取的开销居高不下,损失性能。

virsh vcpuinfo csr1kv-1 可以查看 vCPU 的分配。

(5)编辑 CSR 1000v 的 XML 调优参数

virsh edit csr1kv-1 可以编辑 XML 的参数,如下:

注: 参数,仅当 Hyper-Threating 开启时使用;有一些平台并未关闭超线程,例如 Cisco 专门的 NFV 平台 CSP。通过 virsh chapabilities 查看 siblings=’1,37’,当 core 1 设置为 vcpupin 时,core 37 应设置到 emulatorpin cpuset 中。

以下关于 CPU 和内存的参数设定建议来自于https://libvirt.org/formatdomain.htmlhttps://libvirt.org/kbase/kvm-realtime.html

上述参数整理自《Cisco CSR 1000v and Cisco ISRv Software Configuration Guide》

完成上述 XML 文件的编辑后,执行

(6)在 KVM 主机上访问 CSR1000v 的 Console

在 virt-manager 创建 CSR1000v 虚拟机的时候,缺省会添加一个 Serial Device。

CSR 1000v 暂时不能通过 Console 配置,需要通过 virt-manager 的图形化界面进行初始化配置。

vCloud 的 Console 访问正常。

(7)检验 CSR1000v 的调优配置

以上显示 CSR1000v 虚拟机的 CPU 亲和性在 1-8 核上。

以上显示,内存主要使用 Node 0。

(8)在 CSR1KV 上检查虚拟网卡

上述驱动名显示为 net_ixgbe_vf 表明该虚拟网卡是一个 SR-IOV 池中分配的 VF 设备。

Linux 上抓取虚拟网卡的报文(参考)

查找虚拟机的网卡列表

抓取 vnet5 的报文

注:VF 如果被分配给虚拟机,那么在 Linux 主机里,通过 ip link 则查看不到该设备,无法通过上述办法抓包。

CSR 1000v 的初始化配置及 Smart License 注册

(1)CSR 1000v 初始化配置示例

部分节略,其他为缺省配置。

(2)常用命令

  • show sdwan control local-properties
  • show sdwan control connections
  • show sdwan control connection-history
  • show sdwan running-config
  • show sdwan bfd sessions
  • show sdwan omp peers
  • show sdwan omp routes

(3)CSR 1000v Smart License 注册

CSR 1000v 默认限速为 250Mbps,需要注册 Smart License 才可解开限速。

注册 Smart License 需要满足以下条件:

1、 CSR 1000v 已经注册到 vManage,控制面连接正常;

2、 配置 ip http client source-interface GigabitEthernet2

3、 sdwan interface GigabitEthernet2 tunnel-interface allow-service all —-针对 16.12.x 版本;在新版本中仅需要 allow https

4、 CSR 1000v 可以访问 URL:https://tools.cisco.com/its/service/oddce/services/DDCEService

允许访问 114.114.114.114,CSR 1000v 可解析域名 tools.cisco.com

替代办法,增加一条命令 ip host tools.cisco.com 72.163.4.38

执行 license smart register idtoken xxxxxx 进行注册

show license status 查看注册结果

注册完成后,系统解开限速:

性能和相关限制

(1)SRIOV 的性能

在上述 CSR1KV-1 安装好后,使用测试仪进行性能测试,测试条件中,设置丢包率为 0%,其性能如下:

Packet Site SDWAN Performance (Mbps) CEF Performance (Mbps)
128Byte 800 2843.75
256Byte 1431.26 6500.00
512Byte 2581.26 10578.13
1024Byte 3731.26 15500.00
1400Byte 4306.26 18171.88

注:上述测试结果非官方结果,不同服务器和网卡可能测试结果有区别,上述性能数据仅供参考。

(2)SRIOV 的限制

SRIOV 的主要限制是每一个 VF 设备支持的 VLAN 数,ixgbevf 所支持的最大 VLAN 数为 64;因此,在 CSR1KV 中对应的虚拟接口配置的活跃子接口数最大为 64。

配置指南中有关于 SRIOV 子接口限制的说明:

Cisco CSR 1000v and Cisco ISRv Software Configuration Guide:

SR-IOV (ixgbevf)

Maximum VLANs: The maximum number of VLANs supported on PF is 64. Together, all VFs can have a total of 64 VLANs. (Intel limitation.)

SR-IOV (i40evf)

Maximum VLANs: The maximum number of VLANs supported on PF is 512. Together, all VFs can have a total of 512 VLANs. (Intel limitation.) Per-VF resources are managed by the PF (host) device driver.

附录

(1)Virt-manager 设置虚机的 CPU 模式说明

Libvirt 主要支持三种 CPU mode:

  • host-passthrough: libvirt 令 KVM 把宿主机的 CPU 指令集全部透传给虚拟机。因此虚拟机能够最大限度的使用宿主机 CPU 指令集,故性能是最好的。但是在热迁移时,它要求目的节点的 CPU 和源节点的一致。
  • host-model: libvirt 根据当前宿主机 CPU 指令集从配置文件 /usr/share/libvirt/cpu_map.xml 选择一种最相配的 CPU 型号。在这种 mode 下,虚拟机的指令集往往比宿主机少,性能相对 host-passthrough 要差一点,但是热迁移时,它允许目的节点 CPU 和源节点的存在一定的差异。
  • custom: 这种模式下虚拟机 CPU 指令集数最少,故性能相对最差,但是它在热迁移时跨不同型号 CPU 的能力最强。此外,custom 模式下支持用户添加额外的指令集。

三种 mode 的性能排序是:host-passthrough > host-model > custom

实际性能差异不大:100%> 95.84%>94.73%

引自:http://wsfdl.com/openstack/2018/01/02/libvirt_cpu_mode.html

(2)有关网卡模式的说明

使用 virt-manager 创建虚拟机,在添加网卡时,有 3 中选择,分别是 e1000, rtl8139, virtio。

“rtl8139”这个网卡模式是 qemu-kvm 默认的模拟网卡类型,RTL8139 是 Realtek 半导体公司的一个 10/100M 网卡系列,是曾经非常流行(当然现在看来有点古老)且兼容性好的网卡,几乎所有的现代操作系统都对 RTL8139 网卡驱动的提供支持。

“e1000”系列提供 Intel e1000 系列的网卡模拟,纯的 QEMU(非 qemu-kvm)默认就是提供 Intel e1000 系列的虚拟网卡。

“virtio” 类型是 qemu-kvm 对半虚拟化 IO(virtio)驱动的支持。

这三个网卡的最大区别(此处指最需要关注的地方)是速度:

  • rtl8139 10/100Mb/s
  • e1000 1Gb/s
  • virtio 10Gb/s

注意 virtio 是唯一可以达到 10Gb/s 的。

virtio 是一种 I/O 半虚拟化解决方案,是一套通用 I/O 设备虚拟化的程序,是对半虚拟化 Hypervisor 中的一组通用 I/O 设备的抽象。提供了一套上层应用与各 Hypervisor 虚拟化设备(KVM,Xen,VMware 等)之间的通信框架和编程接口,减少跨平台所带来的兼容性问题,大大提高驱动程序开发效率。

(3)有关 MACVTAP

以下内容来自:https://www.ibm.com/developerworks/cn/linux/1312_xiawc_linuxvirtnet/index.html

MACVTAP 的实现基于传统的 MACVLAN。和 TAP 设备一样,每一个 MACVTAP 设备拥有一个对应的 Linux 字符设备,并拥有和 TAP 设备一样的 IOCTL 接口,因此能直接被 KVM/Qemu 使用,方便地完成网络数据交换工作。引入 MACVTAP 设备的目标是:简化虚拟化环境中的交换网络,代替传统的 Linux TAP 设备加 Bridge 设备组合,同时支持新的虚拟化网络技术,如 802.1 Qbg。

MACVTAP 设备和 VLAN 设备类似,是以一对多的母子关系出现的。在一个母设备上可以创建多个 MACVTAP 子设备,一个 MACVTAP 设备只有一个母设备,MACVTAP 子设备可以做为母设备,再一次嵌套的创建 MACVTAP 子设备。母子设备之间被隐含的桥接起来,母设备相当于现实世界中的交换机 TRUNK 口。实际上当 MACVTAP 设备被创建并且模式不为 Passthrough 时,内核隐含的创建了 MACVLAN 网络,完成转发功能。MACVTAP 设备有四种工作模式:Bridge、VEPA、Private,Passthrough。

Bridge 模式下,它完成与 Bridge 设备类似功能,数据可以在属于同一个母设备的子设备间交换转发,虚拟机相当于简单接入了一个交换机。当前的 Linux 实现有一个缺陷,此模式下 MACVTAP 子设备无法和 Linux Host 通讯,即虚拟机无法和 Host 通讯。——经验证,属实。

Passthrough 模式下,内核的 MACVLAN 数据处理逻辑被跳过,硬件决定数据如何处理,从而释放了 Host CPU 资源。

MACVTAP Passthrough 概念与 PCI Passthrough 概念不同,上图详细解释了两种情况的区别。

PCI Passthrough 针对的是任意 PCI 设备,不一定是网络设备,目的是让 Guest OS 直接使用 Host 上的 PCI 硬件以提高效率。以 X86 平台为例,数据将通过需要硬件支持的 VT-D 技术从 Guest OS 直接传递到 Host 硬件上。这样做固然效率很高,但因为模拟器失去了对虚拟硬件的控制,难以同步不同 Host 上的硬件状态,因此当前在使用 PCI Passthrough 的情况下难以做动态迁移。

MACVTAP Passthrough 仅仅针对 MACVTAP 网络设备,目的是绕过内核里 MACVTAP 的部分软件处理过程,转而交给硬件处理。在虚拟化条件下,数据还是会先到达模拟器 I/O 层,再转发到硬件上。这样做效率有损失,但模拟器仍然控制虚拟硬件的状态及数据的走向,可以做动态迁移。

(4)SR-IOV 介绍

如果网卡支持 SRIOV,请使用 SRIOV PCI Passthrough。

软件模拟是通过 Hypervisor 层模拟虚拟网卡,实现与物理设备完全一样的接口,虚拟机操作系统无须修改就能直接驱动虚拟网卡,其最大的缺点是性能相对较差;

网卡直通支持虚拟机绕过 Hypervisor 层,直接访问物理 I/O 设备,具有最高的性能,但是在同一时刻物理 I/O 设备只能被一个虚拟机独享;

SR-IOV 是 Intel 在 2007 年提出的解决虚拟化网络 I/O 的硬件技术方案,该技术不仅能够继承网卡直通的高性能优势,而且同时支持物理 I/O 设备的跨虚拟机共享,具有较好的应用前景。

原文链接:https://blog.csdn.net/lsz137105/article/details/100752930

SR-IOV(Single Root I/O Virtualization)是一个将 PCIe 设备(如网卡)共享给虚拟机的标准,通过为虚拟机提供独立的内存空间、中断、DMA 流,来绕过 VMM 实现数据访问。

SR-IOV 引入了两种 PCIe functions:

  • PF(Physical Function):包含完整的 PCIe 功能,包括 SR-IOV 的扩张能力,该功能用于 SR-IOV 的配置和管理。
  • VF(Virtual Function):包含轻量级的 PCIe 功能。每一个 VF 有它自己独享的 PCI 配置区域,并且可能与其他 VF 共享着同一个物理资源。

SR-IOV 网卡通过将 SR-IOV 功能集成到物理网卡上,将单一的物理网卡虚拟成多个 VF 接口,每个 VF 接口都有单独的虚拟 PCIe 通道,这些虚拟的 PCIe 通道共用物理网卡的 PCIe 通道。每个虚拟机可占用一个或多个 VF 接口,这样虚拟机就可以直接访问自己的 VF 接口,而不需要 Hypervisor 的协调干预,从而大幅提升网络吞吐性能。

(5)探索虚拟机进程

每一个客户机就是宿主机中的一个 QEMU 进程,而一个客户机的多个 vCPU 就是一个 QEMU 进程中的多个线程。

使用 virsh 命令或 virt-manager 开启虚拟机,是通过调用/usr/libexec/qemu-kvm 并附带虚拟配置的参数,来开启 qemu-kvm 的进程。可以看到上述的参数是非常复杂的,libvirt 提供 XML 参数进行简化。

ps -efL | grep qemu 可以列出所有的线程,但是输出篇幅很长,不在此列出;使用 pstree 可列出其父进程、线程关系,如下:

virt-top 可查看虚机运行状态和资源利用率:

[root@centos7 ~]# virt-top -1

参考资料连接


  • 本站原创文章仅代表作者观点,不代表SDNLAB立场。所有原创内容版权均属SDNLAB,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用,转载须注明来自 SDNLAB并附上本文链接。 本站中所有编译类文章仅用于学习和交流目的,编译工作遵照 CC 协议,如果有侵犯到您权益的地方,请及时联系我们。
  • 本文链接https://www.sdnlab.com/25122.html
分享到:
相关文章
条评论

登录后才可以评论

weiborao 发表于21-07-08
0