3.2. NFV デプロイメントでサポートされている設定
Red Hat OpenStack Platform (RHOSP) では、director を使用して以下の NFV デプロイメントがサポートされます。
- Single Root I/O Virtualization (SR-IOV)
- Data Plane Development Kit 対応 Open vSwitch (OVS-DPDK)
また、以下のどの機能と共に RHOSP をデプロイすることもできます。
デフォルトのソフトウェア定義ネットワーク (SDN) ソリューションとして Open Virtual Network (OVN) を使用する RHOSP NFV デプロイメントはサポートされません。以下に示す RHOSP NFV OVN の設定は、RHOSP 16.1.4 では一般提供として利用することができます。
- OVN と OVS-DPDK の組み合わせが SR-IOV と共存する設定
- OVN と OVS TC Flower オフロードを組み合わせた設定
3.2.1. OVS メカニズムドライバーを使用する RHOSP のデプロイ
OVS メカニズムドライバーと共に RHOSP をデプロイします。
手順
neutron_driverパラメーターがovsに設定されるように、containers-prepare-parameter.yamlファイルを変更します。parameter_defaults: ContainerImagePrepare: - push_destination: true set: neutron_driver: ovs .../usr/share/openstack-tripleo-heat-templates/environments/servicesディレクトリーのneutron-ovs.yaml環境ファイルを、デプロイメント用スクリプトに追加します。TEMPLATES=/usr/share/openstack-tripleo-heat-templates openstack overcloud deploy --templates \ -e ${TEMPLATES}/environments/network-environment.yaml \ -e ${TEMPLATES}/environments/network-isolation.yaml \ -e ${TEMPLATES}/environments/services/neutron-ovs.yaml \ -e ${TEMPLATES}/environments/services/neutron-ovs-dpdk.yaml \ -e ${TEMPLATES}/environments/services/neutron-sriov.yaml \ -e /home/stack/containers-prepare-parameter.yaml
3.2.2. OVN と OVS-DPDK の組み合わせが SR-IOV と共存する設定のデプロイ
この RHOSP NFV OVN の設定は、RHOSP 16.1.4 では一般提供として利用することができます。
DPDK および SRIOV 仮想マシンを OVN と同じノードにデプロイします。
手順
ComputeOvsDpdkSriovロールを作成します。openstack overcloud roles generate -o roles_data.yaml Controller ComputeOvsDpdkSriov
-
OS::TripleO::Services::OVNMetadataAgentを Controller ロールに追加します。 resource_registryパラメーターを使用して、OVS-DPDK 用のカスタムリソースを追加します。resource_registry: # Specify the relative/absolute path to the config files you want to use for override the default. OS::TripleO::ComputeOvsDpdkSriov::Net::SoftwareConfig: nic-configs/computeovsdpdksriov.yaml OS::TripleO::Controller::Net::SoftwareConfig: nic-configs/controller.yamlparameter_defaults セクションで、トンネル種別パラメーターの値を編集して
geneveに設定します。NeutronTunnelTypes: 'geneve' NeutronNetworkType: ['geneve', 'vlan']
オプション: 集中ルーティングモデルを使用する場合は、分散仮想ルーター (DVR) を無効にします。
NeutronEnableDVR: false
parameters_defaultsセクションで、ブリッジマッピングを設定します。# The OVS logical-to-physical bridge mappings to use. NeutronBridgeMappings: "datacentre:br-ex,data1:br-link0,data2:br-link1"
computeovsdpdksriov.yamlファイルでネットワークインターフェイスを設定します。- type: ovs_user_bridge name: br-link0 use_dhcp: false ovs_extra: - str_replace: template: set port br-link0 tag=_VLAN_TAG_ params: _VLAN_TAG_: get_param: TenantNetworkVlanID addresses: - ip_netmask: get_param: TenantIpSubnet members: - type: ovs_dpdk_port name: br-link0-dpdk-port0 rx_queue: 1 members: - type: interface name: eno3 - type: sriov_pf name: eno4 use_dhcp: false numvfs: 5 defroute: false nm_controlled: true hotplug: true promisc: falseデプロイメントスクリプトに以下の yaml ファイルを追加します。
- neutron-ovn-dpdk.yaml
- neutron-ovn-sriov.yaml
Open Virtual Networking (OVN) は、Red Hat OpenStack Platform 16.1 におけるデフォルトのネットワークメカニズムドライバーです。分散仮想ルーター (DVR) で OVN を使用する場合には、openstack overcloud deploy コマンドに environments/services/neutron-ovn-dvr-ha.yaml ファイルを追加する必要があります。DVR なしで OVN を使用する場合は、environments/services/neutron-ovn-ha.yamlファイルをopenstack overcloud deployコマンドに含め、NeutronEnableDVRパラメーターをfalseに設定する必要があります。SR-IOV と OVN を使用する場合は、openstack overcloud deployコマンドの最後の OVN 環境ファイルとしてenvironments/services/neutron-ovn-sriov.yamlファイルを含める必要があります。
3.2.3. OVN と OVS TC Flower オフロードを組み合わせた設定のデプロイ
OVS TC Flower オフロードを OVN と同じノードにデプロイします。
この RHOSP NFV OVN の設定は、RHOSP 16.1.4 では一般提供として利用することができます。
Red Hat Enterprise Linux Traffic Control (TC)サブシステムは、接続追跡(conntrack)ヘルパーまたはアプリケーションレイヤーゲートウェイ(ALG)をサポートしていません。したがって、ALG を使用している場合は、TC Flower オフロードを無効にする必要があります。
手順
ComputeOvsDpdkSriovロールを作成します。openstack overcloud roles generate -o roles_data.yaml ControllerSriov ComputeSriov
実際のデプロイメントに応じて
physical_networkパラメーターを設定します。-
VLAN の場合には、
physical_networkパラメーターをデプロイメント後に neutron で作成するネットワークの名前に設定します。NeutronBridgeMappingsパラメーターにもこの値を使用します。 ロール固有のパラメーター (
ComputeSriovOffloadParameters) の下で、OvsHwOffloadパラメーターの値がtrueであることを確認します。parameter_defaults: NeutronBridgeMappings: 'datacentre:br-ex,tenant:br-offload' NeutronNetworkVLANRanges: 'tenant:502:505' NeutronFlatNetworks: 'datacentre,tenant' NeutronPhysicalDevMappings: - tenant:ens1f0 - tenant:ens1f1 NovaPCIPassthrough: - address: "0000:17:00.1" physical_network: "tenant" - address: "0000:3b:00.1" physical_network: "tenant" NeutronTunnelTypes: '' NeutronNetworkType: 'vlan' ComputeSriovOffloadParameters: OvsHwOffload: True KernelArgs: "default_hugepagesz=1GB hugepagesz=1G hugepages=32 intel_iommu=on iommu=pt isolcpus=1-11,13-23" IsolCpusList: "1-11,13-23" NovaReservedHostMemory: 4096 NovaComputeCpuDedicatedSet: ['1-11','13-23'] NovaComputeCpuSharedSet: ['0','12']
-
VLAN の場合には、
computeovsdpdksriov.yamlファイルでネットワークインターフェイスを設定します。- type: ovs_bridge name: br-offload mtu: 9000 use_dhcp: false addresses: - ip_netmask: get_param: TenantIpSubnet members: - type: linux_bond name: bond-pf bonding_options: "mode=active-backup miimon=100" members: - type: sriov_pf name: ens1f0 numvfs: 3 primary: true promisc: true use_dhcp: false defroute: false link_mode: switchdev - type: sriov_pf name: ens1f1 numvfs: 3 promisc: true use_dhcp: false defroute: false link_mode: switchdevデプロイメントスクリプトに以下の yaml ファイルを追加します。
- ovs-hw-offload.yaml
neutron-ovn-sriov.yaml
TEMPLATES_HOME=”/usr/share/openstack-tripleo-heat-templates” CUSTOM_TEMPLATES=”/home/stack/templates” openstack overcloud deploy --templates \ -r ${CUSTOM_TEMPLATES}/roles_data.yaml \ -e ${TEMPLATES_HOME}/environments/services/neutron-ovn-sriov.yaml \ -e ${TEMPLATES_HOME}/environments/ovs-hw-offload.yaml \ -e ${CUSTOM_TEMPLATES}/network-environment.yaml