3.5. 使用 OVS-DPDK 支持安装 OpenDaylight
OpenDaylight 可能会通过 director 进行 Open vSwitch 数据平面开发套件 (DPDK)加速部署。当数据包在用户空间而不是内核中处理时,这种部署提供更高的数据平面性能。使用 OVS-DPDK 部署时,需要了解每个 Compute 节点的硬件物理布局,以利用潜在的性能提升。
您应该特别考虑:
- 主机上的网络接口支持 DPDK
- Compute 节点的 NUMA 节点拓扑(每个插槽、CPU 内核和内存的数量)
- 每个 NUMA 节点的 DPDK NIC PCI 总线代理
- Compute 节点上可用 RAM 量
- 咨询 网络功能虚拟化规划和配置指南.
3.5.1. 准备 OVS-DPDK 部署文件 复制链接链接已复制到粘贴板!
若要部署 OVS-DPDK,请使用不同的环境文件。该文件将覆盖 /usr/share/openstack-tripleo-heat-templates/environments/services-docker 目录中由 neutron-opendaylight.yaml 环境文件设置的一些参数。不要修改原始环境文件。反之,创建一个包含必要参数的新环境文件,如 neutron-opendaylight-dpdk.yaml。
如果要使用默认设置的 OVS-DPDK 部署 OpenDaylight,请使用 /usr/share/openstack-tripleo-heat-templates/environments/services-docker 目录里的默认 neutron-opendaylight-dpdk.yaml 环境文件。
默认文件包含以下值:
3.5.2. 配置 OVS-DPDK 部署 复制链接链接已复制到粘贴板!
您可以通过更改 neutron-opendaylight-dpdk.yaml 中的值来配置 OVS-DPDK 服务。
|
|
启用 IRQ 的固定,以便将它们与 OVS-DPDK 搭配使用的 CPU 核心进行隔离。默认配置集: |
|
|
指定 CPU 内核列表,以防止内核调度程序使用这些内核,而是可以分配并专用于 OVS-DPDK。格式采用以逗号分隔的独立列表或一系列内核,例如 |
|
|
列出在引导时要传递给内核的参数。对于 OVS-DPDK,需要启用
---- 请注意,指定的 RAM 量对于大页是 60 GB。在设置此值时,务必要考虑 Compute 节点上的可用 RAM 量。 |
|
| 指定要分配给每个 NUMA 节点的巨页内存量(以 MB 为单位)。要获得最佳性能,请将内存分配给最接近 DPDK NIC 的套接字。列出每个套接字的内存格式: ---- "<socket 0 mem MB>,<socket 1 mem MB>" ---- 例如:"1024,0" |
|
|
指定要用于 PMD 线程的 UIO 驱动程序类型。DPDK NIC 必须支持指定的驱动程序。Red Hat OpenStack Platform 部署支持驱动程序类型 |
|
|
列出要固定到的 PMD 线程的单个内核数或范围。此处指定的内核应位于使用 |
|
| 指定每个套接字的内存频道数。 |
|
| 使用 libvirtd 将 nova 实例固定到。为了获得最佳性能,在已固定 OVS PMD 核心相同的插槽上的内核。 |
3.5.3. 使用 OVS-DPDK 安装 OpenDaylight 复制链接链接已复制到粘贴板!
开始前
- 安装 undercloud。如需更多信息 ,请参阅安装 undercloud。
- 创建环境文件,并链接到 overcloud 容器镜像。如需更多信息,请参阅使用 OpenDaylight 准备 overcloud 安装。
- 准备角色文件,以在具有 SR-IOV 支持的自定义角色中配置 OpenDaylight。如需更多信息,请参阅准备 OVS-DPDK 部署文件。
流程
- 使用必要的环境文件运行部署命令,以启用 OpenDaylight 的 DPDK 功能。
部署命令中存在的环境文件会覆盖您在 命令中之前包含的环境文件。您必须注意您包括的环境文件顺序以避免意外覆盖参数。
您可以通过创建一个最小的环境文件来覆盖一些参数,该文件只设置您要更改的参数并将其与默认环境文件合并。
3.5.4. 示例:使用 ODL 和 VXLAN 隧道处理配置 OVS-DPDK 复制链接链接已复制到粘贴板!
本节介绍带有 ODL 和 VXLAN 隧道的 OVS-DPDK 配置示例。
您必须确定 network-environment.yaml 文件中设置的 OVS-DPDK 参数的最佳值,以优化 OVS-DPDK 的 OpenStack 网络。详情请参阅使用 工作流 Deriving DPDK 参数。
3.5.4.1. 生成 ComputeOvsDpdk 可组合角色 复制链接链接已复制到粘贴板!
为 ComputeOvsDpdk 角色生成 roles_data.yaml。
openstack overcloud roles generate --roles-path templates/openstack-tripleo-heat-templates/roles -o roles_data.yaml Controller ComputeOvsDpdk
# openstack overcloud roles generate --roles-path templates/openstack-tripleo-heat-templates/roles -o roles_data.yaml Controller ComputeOvsDpdk
3.5.4.2. 配置 OVS-DPDK 参数 复制链接链接已复制到粘贴板!
您必须确定 network-environment.yaml 文件中设置的 OVS-DPDK 参数的最佳值,以优化 OVS-DPDK 的 OpenStack 网络。详情请查看 https://access.redhat.com/documentation/zh-cn/red_hat_openstack_platform/13/html/network_functions_virtualization_planning_and_configuration_guide/part-dpdk-configure#proc_derive-dpdk。
将 OVS-DPDK 的自定义资源添加到
resource_registry下:resource_registry: # Specify the relative/absolute path to the config files you want to use for override the default. OS::TripleO::ComputeOvsDpdk::Net::SoftwareConfig: nic-configs/computeovsdpdk.yaml OS::TripleO::Controller::Net::SoftwareConfig: nic-configs/controller.yamlresource_registry: # Specify the relative/absolute path to the config files you want to use for override the default. OS::TripleO::ComputeOvsDpdk::Net::SoftwareConfig: nic-configs/computeovsdpdk.yaml OS::TripleO::Controller::Net::SoftwareConfig: nic-configs/controller.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在
parameter_defaults下,将隧道类型和租户类型设置为vxlan:NeutronTunnelTypes: 'vxlan' NeutronNetworkType: 'vxlan'
NeutronTunnelTypes: 'vxlan' NeutronNetworkType: 'vxlan'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在
parameters_defaults下,设置网桥映射:# The OVS logical->physical bridge mappings to use. NeutronBridgeMappings: 'tenant:br-link0' OpenDaylightProviderMappings: 'tenant:br-link0'
# The OVS logical->physical bridge mappings to use. NeutronBridgeMappings: 'tenant:br-link0' OpenDaylightProviderMappings: 'tenant:br-link0'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在
parameter_defaults下,为ComputeOvsDpdk角色设置特定于角色的参数:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意您必须在具有或没有 DPDK PMD 的 DPDK NIC 的每个 NUMA 节点上分配至少一个 CPU (具有同级线程),以避免创建客户机实例中失败。
注意这些大页面由虚拟机消耗,以及使用
OvsDpdkSocketMemory参数的 OVS-DPDK,如此流程所示。虚拟机的巨页数量是引导参数减去OvsDpdkSocketMemory。您还必须将
hw:mem_page_size=1GB添加到与 DPDK 实例关联的类别中。注意OvsDPDKCoreList和OvsDpdkMemoryChannels是此流程所需的设置。在没有适当值的情况下尝试部署 DPDK 会导致部署失败,或导致部署不稳定。
3.5.4.3. 配置 Controller 节点 复制链接链接已复制到粘贴板!
为隔离的网络创建 control plane Linux 绑定。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 VLAN 分配给此 Linux 绑定。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建 OVS 网桥,以访问浮动 IP 到云网络中。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.5.4.4. 为 DPDK 接口配置 Compute 节点 复制链接链接已复制到粘贴板!
从默认的 compute.yaml 文件创建 compute-ovs-dpdk.yaml 文件,并进行以下更改:
为隔离的网络创建 control plane Linux 绑定。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 VLAN 分配给此 Linux 绑定。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用 DPDK 端口设置网桥以链接到控制器。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意要包含多个 DPDK 设备,请为您要添加的每个 DPDK 设备重复
类型代码部分。注意在使用 OVS-DPDK 时,同一计算节点上的 所有 网桥都应是
ovs_user_bridge类型。director 可以接受配置,但 Red Hat OpenStack Platform 不支持同一节点上的ovs_bridge和ovs_user_bridge。
3.5.4.5. 部署 overcloud 复制链接链接已复制到粘贴板!
运行 overcloud_deploy.sh 脚本来部署 overcloud。