关于使用 KVM 的 ASAv 部署
下图显示了使用 ASAv 和 KVM 的网络拓扑示例。本章所述的程序均基于此拓扑示例。ASAv 用作内部和外部网络之间的防火墙。另外,此示例中还配置了一个单独的管理网络。
此产品的文档集力求使用非歧视性语言。在本文档集中,非歧视性语言是指不隐含针对年龄、残障、性别、种族身份、族群身份、性取向、社会经济地位和交叉性的歧视的语言。由于产品软件的用户界面中使用的硬编码语言、基于 RFP 文档使用的语言或引用的第三方产品使用的语言,文档中可能无法确保完全使用非歧视性语言。 深入了解思科如何使用包容性语言。
思科可能会在某些地方提供本内容的当地语言翻译版本。请注意,翻译版本仅供参考,如有任何不一致之处,以本内容的英文版本为准。
您可以使用基于内核的虚拟机 (KVM) 部署 ASAv。
下图显示了使用 ASAv 和 KVM 的网络拓扑示例。本章所述的程序均基于此拓扑示例。ASAv 用作内部和外部网络之间的防火墙。另外,此示例中还配置了一个单独的管理网络。
从 Cisco.com 下载 ASAv qcow2 文件并将其放在 Linux 主机上:
http://www.cisco.com/go/asa-software
注 |
需要 Cisco.com 登录信息和思科服务合同。 |
为与本文档中的部署示例吻合,我们假定您使用 Ubuntu 14.04 LTS。将以下数据包安装在 Ubuntu 14.04 LTS 主机之上:
qemu-kvm
libvirt-bin
bridge-utils
virt-manager
virtinst
virsh tools
genisoimage
性能受主机及其配置的影响。通过调整主机,您可以最大化 KVM 上的 ASAv 吞吐量。有关通用主机调整的概念,请参阅《具备 Linux 和 Intel 架构的虚拟化平台的网络功能虚拟化数据包处理性能》。
Ubuntu 14.04 的有用优化包括以下内容:
macvtap - 高性能 Linux 网桥;您可以使用 macvtap,而不是 Linux 网桥。注意,您必须配置特定设置才能使用 macvtap,而不是 Linux 网桥。
透明大页面 - 用于增加内存页面大小,在 Ubuntu 14.04 中默认开启。
禁用超线程 - 用于将两个 vCPU 减少到一个单核。
txqueuelength - 用于将默认 txqueuelength 增加到 4000 个数据包并减少丢包率。
固定 - 用于将 qemu 和 vhost 进程固定到特定 CPU 内核;在某些情况下,固定可显著提高性能。
有关优化基于 RHEL 的分发的信息,请参阅《Red Hat Enterprise Linux6 虚拟化调整和优化指南》。
有关 KVM 的系统要求,请参阅思科 ASA 兼容性矩阵。
在部署 ASAv 之前,请查看以下准则和限制。
对于故障切换部署,请确保备用设备具有相同型号的许可证;例如,两台设备均应为 ASAv30。
重要 |
使用 ASAv 创建高可用性对时,需要按相同顺序将数据接口添加到每个 ASAv。如果将完全相同的接口添加到每个 ASAv,但顺序不同,ASAv 控制台上可能会显示错误。故障切换功能可能也会受到影响。 |
在启动 ASAv 之前,您可以准备 Day 0 配置文件。此文件是包含将在 ASAv 启动时应用的 ASAv 配置的文本文件。此初始配置将放入您选择的工作目录中名为“day0-config”的文本文件,并写入首次启动时安装和读取的 day0.iso 文件。Day 0 配置文件必须至少包含用于激活管理接口以及设置用于公钥身份验证的 SSH 服务器的命令,但它还可包含完整的 ASA 配置。
day0.iso 文件(自定义 day0.iso 或默认 day0.iso)必须在首次启动过程中可用:
要在初始部署过程中自动完成 ASAv 的许可过程,请将从思科智能软件管理器下载的智能许可身份 (ID) 令牌放入与 Day 0 配置文件处于同一目录且名为“idtoken”的文本文件。
如果需要从虚拟机监控程序的串行端口(而不是虚拟 VGA 控制台)访问和配置 ASAv,则 Day 0 配置文件中应包括 console serial 设置,才能在首次启动过程中使用串行端口。
如果要在透明模式下部署 ASAv,则必须在透明模式下将已知的运行 ASA 配置文件用作 Day 0 配置文件。这不适用于路由防火墙的 Day 0 配置文件。
注 |
我们在本示例中使用的是 Linux,但对于 Windows 也有类似的实用程序。 |
步骤 1 |
在名为“day0-config”的文本文件中输入 ASAv 的 CLI 配置。添加三个接口的接口配置和所需的任何其他配置。 第一行应以 ASA 版本开头。day0-config 应该是有效的 ASA 配置。生成 day0-config 的最佳方式是从现有的 ASA 或 ASAv 复制一个运行配置的相关部分。day0-config 中的行顺序很重要,应与现有的 show running-config 命令输出中看到的顺序相符。 示例:
|
步骤 2 |
(可选)将思科智能软件管理器发布的智能许可证身份令牌文件下载到您的计算机。 |
步骤 3 |
(可选)从下载文件复制 ID 令牌并将其放入仅包含 ID 令牌的名为“idtoken”的文本文件。 |
步骤 4 |
(可选)若要在初始 ASAv 部署过程中进行自动许可,请确保 day0-config 文件中包含以下信息:
|
步骤 5 |
通过将文本文件转换成 ISO 文件生成虚拟 CD-ROM: 示例:
身份令牌自动向智能许可服务器注册 ASAv。 |
步骤 6 |
重复步骤 1 到 5,使用相应的 IP 地址为要部署的每个 ASAv 创建单独的默认配置文件。 |
您需要设置将 ASAv 访客连接到 KVM 主机并将访客彼此连接的虚拟网络。
注 |
此程序不会建立与 KVM 主机之外的外部环境的连接。 |
在 KVM 主机上准备虚拟网桥 XML 文件。对于准备 Day 0 配置文件所述的虚拟网络拓扑示例,您需要以下三个虚拟网桥文件:virbr1.xml、virbr2.xml 和 virbr3.xml(您必须使用这三个文件名;例如,不允许使用 virbr0,因为它已经存在)。每个文件具有设置虚拟网桥所需的信息。您必须为虚拟网桥提供名称和唯一的 MAC 地址。提供 IP 地址是可选的。
步骤 1 |
创建三个虚拟网络网桥 XML 文件。例如,virbr1.xml、virbr2.xml 和 virbr3.xml: 示例:
示例:
示例:
|
||
步骤 2 |
创建包含以下内容的脚本(在本例中,我们将脚本命名为 virt_network_setup.sh):
|
||
步骤 3 |
运行此脚本以设置虚拟网络。此脚本将生成虚拟网络。只要 KVM 主机运行,网络就会保持运行。
|
||
步骤 4 |
验证虚拟网络是否已创建:
|
||
步骤 5 |
显示分配给 virbr1 网桥的 IP 地址。这是您在 XML 文件中分配的 IP 地址。
|
使用基于 virt-install 的部署脚本启动 ASAv。
步骤 1 |
创建名为“virt_install_asav.sh”的 virt-install 脚本。 ASAv 虚拟机的名称在此 KVM 主机上的所有其他 VM 中必须是唯一的。 ASAv 最多可以支持 10 个网络。此示例使用三个网络。网络网桥语句的顺序非常重要。第一个列出的始终是 ASAv 的管理接口 (Management 0/0),第二个列出的是 ASAv 的 GigabitEthernet 0/0,第三个列出的是 ASAv 的 GigabitEthernet 0/1,以此类推,直至 GigabitEthernet 0/8。虚拟 NIC 必须是 Virtio。 示例:
|
步骤 2 |
运行 virt_install 脚本: 示例:
|
您可以动态添加和删除接口,而无需停止并重新启动 ASAv。在将新的接口添加到 ASAv 虚拟机时,ASAv 应该能够检测到该接口,并且将其调配为常规接口。同样,当您通过热插拔调配的方式删除现有的接口时,ASAv 应删除该接口并释放与其相关联的任何资源。
当您添加一个热插拔接口时,其接口编号等于当前的最后一个接口的编号加上 1。
当您删除一个热插拔接口时,会产生一个接口编号缺口,除非您删除的接口是最后一个接口。
当存在一个接口编号缺口时,下一个热插拔调配的接口将填补该缺口。
在将热插拔接口用作故障切换链路时,必须在指定为故障切换 ASAv 对的两台设备上调配该链路。
首先将一个热插拔接口添加到虚拟机监控程序中的主用 ASAv,然后将一个热插拔接口添加到虚拟机监控程序中的备用 ASAv。
在主用 ASAv 中配置新添加的故障切换接口;该配置将同步到备用设备。
在主设备上启用故障切换。
删除故障切换链路时,首先删除主用 ASAv 上的故障切换配置。
从虚拟机监控程序中的主用 ASAv 删除故障切换接口。
接下来,立即从虚拟机监控程序中的备用 ASAv 删除相应的接口。
热插拔接口调配限于 Virtio 虚拟 NIC。
支持的最大接口数量是 10。如果您尝试添加超过 10 个接口,则会收到错误消息。
您无法打开接口卡 (media_ethernet/port/id/10)。
热插拔接口调配需要使用 ACPI。请不要在 virt-install 脚本中添加 --noacpi
标记。
您可以使用 virsh 命令行添加和删除 KVM 虚拟机监控程序中的接口。
步骤 1 |
打开 virsh 命令行会话: 示例:
|
||||
步骤 2 |
使用 attach-interface 命令添加一个接口。 --domain 可以指定为短整数、名称或完整的 UUID。--type 参数可以是 network(表示物理网络设备)或 bridge(表示连接到设备的网桥)。--source 参数表示连接类型。--model 参数表示虚拟 NIC 类型。--mac 参数指定网络接口的 MAC 地址。--live 参数表示该命令影响正在运行的域。
示例:
|
||||
步骤 3 |
使用 detach-interface 命令删除一个接口。
示例:
|
SR-IOV 允许多个 VM 共享主机内的单一 PCIe 网络适配器。SR-IOV 定义了下列功能:
物理功能 (PF) - PF 指所有 PCIe 功能,包括 SR-IOV 功能。这些功能在主机服务器上显示为常规静态 NIC。
虚拟功能 (VF) - VF 是有助于数据传输的轻型 PCIe 功能。VF 源自于 PF,并通过 PF 进行管理。
VF 在虚拟化操作系统框架下,最高可以 10 Gbps 的速度连接 ASAv 虚拟机。本节介绍如何在 KVM 环境下配置 VF。ASAv 和 SR-IOV 接口调配中介绍了 ASAv 上对 SR-IOV 的支持信息。
如果您有一个支持 SR-IOV 的物理 NIC,可以将支持 SR-IOV 的 VF 或虚拟 NIC (vNIC) 连接到 ASAv 实例。此外,SR-IOV 还需要支持 BIOS 以及硬件上运行的操作系统实例或虚拟机监控程序。下面列出了对 KVM 环境中运行的 ASAv 执行 SR-IOV 接口调配的一般准则:
在主机服务器中需要具有支持 SR-IOV 的物理 NIC;请参阅 SR-IOV 接口准则和限制。
您需要在主机服务器的 BIOS 中启用虚拟化。有关详细信息,请参阅供应商文档。
您需要在主机服务器的 BIOS 中启用 IOMMU 对 SR-IOV 的全局支持。有关详细信息,请参阅硬件供应商文档。
本节介绍在 KVM 系统上调配 SR-IOV 接口的各种安装和配置步骤。本节中的信息基于特定实验室环境中的设备创建,这些设备使用的是思科 UCS C 系列服务器上的 Ubuntu 14.04(配备有 Intel 以太网服务器适配器 X520 - DA2)。
请确保已安装兼容 SR-IOV 的网络接口卡 (NIC)。
确保已启用 Intel 虚拟化技术 (VT-x) 和 VT-d 功能。
注 |
有些系统制造商默认禁用这些扩展。我们建议您通过供应商文档验证该过程,因为不同的系统使用不同的方法来访问和更改 BIOS 设置。 |
确保在操作系统安装过程中已安装所有 Linux KVM 模块、库、用户工具和实用程序;请参阅 ASAv 和 KVM 的先决条件。
确保物理接口处于“开启”状态。使用 ifconfig <ethname> 进行确认。
步骤 1 |
使用“根”用户帐户和密码登录系统。 |
||
步骤 2 |
验证 Intel VT-d 是否已启用。 示例:
最后一行表示 VT-d 已启用。 |
||
步骤 3 |
通过将 intel_iommu=on 参数附加到 /etc/default/grub 配置文件的 GRUB_CMDLINE_LINUX 条目,在内核中激活 Intel VT-d。 示例:
|
||
步骤 4 |
重新启动服务器,以使 iommu 更改生效。 示例:
|
||
步骤 5 |
创建 VF,具体方法为:通过 sysfs 接口向 sriov_numvfs 参数写入适当的值,格式如下:
为了确保每次服务器通电时创建所需数量的 VF,请将上面的命令附加到 rc.local 文件中,该文件位于 /etc/rc.d/ 目录下。Linux 操作系统会在启动过程结束时执行 rc.local 脚本。 例如,下面显示了为每个端口创建一个 VF 的过程。适合您特定设置的接口不尽相同。 示例:
|
||
步骤 6 |
重新启动服务器。 示例:
|
||
步骤 7 |
使用 lspci 确认是否已创建 VF。 示例:
|
在创建 VF 后,您可以将它们添加到 ASAv 中,就像添加任何 PCI 设备一样。以下示例说明如何使用图形 virt-manager 工具将以太网 VF 控制器添加到 ASAv。
步骤 1 |
打开 ASAv,单击 Add Hardware 按钮以将新设备添加到虚拟机中。 |
步骤 2 |
单击左窗格 Hardware 列表中的 PCI Host Device。 PCI 设备列表(包括 VF)将出现在中心窗格中。 |
步骤 3 |
选择可用的虚拟功能之一,然后单击 Finish。 该 PCI 设备将出现在硬件列表中;请注意该设备被描述为以太网控制器虚拟功能。 |
使用 ASAv 命令行中的 show interface 命令验证新配置的接口。
使用 ASAv 上的接口配置模式配置并启用该接口,以便传输和接收流量;有关详细信息,请参阅《思科 ASA 系列常规操作 CLI 配置指南》的基本接口配置一章。
在 KVM 环境中,通过更改 KVM 主机上的设置,可以提高 ASAv 的性能。这些设置与主机服务器上的配置设置无关。此选项适用于 Red Hat Enterprise Linux 7.0 KVM。
通过启用 CPU 固定,可以提高 KVM 配置的性能。
若要在 KVM 环境中提高 ASAv 的性能,可以使用 KVM CPU 关联选项将虚拟机分配给特定处理器。要使用此选项,请在 KVM 主机上配置 CPU 固定功能。
步骤 1 |
在 KVM 主机环境中,验证主机拓扑以查明可用于固定的 vCPU 数量: 示例:
|
||
步骤 2 |
验证可用的 vCPU 数量: 示例:
|
||
步骤 3 |
将 vCPU 固定到处理器内核组: 示例:
对于 ASAv 上的每个 vCPU,都必须执行 virsh vcpupin 命令。以下示例显示当 ASAv 配置包含四个 vCPU 且主机有八个内核时所需的 KVM 命令:
主机内核编号可以是 0 到 7 之间的任意数字。有关详细信息,请参阅 KVM 文档。
|