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 をデプロイします。
手順
containers-prepare-parameter.yaml
ファイルを修正し、neutron_driver
パラメーターをovs
に設定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow parameter_defaults: ContainerImagePrepare: - push_destination: true set: neutron_driver: ovs ...
parameter_defaults: ContainerImagePrepare: - push_destination: true set: neutron_driver: ovs ...
/usr/share/openstack-tripleo-heat-templates/environments/services
ディレクトリーのneutron-ovs.yaml
環境ファイルを、デプロイメント用スクリプトに追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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
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
ロールを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow openstack overcloud roles generate -o roles_data.yaml Controller ComputeOvsDpdkSriov
openstack overcloud roles generate -o roles_data.yaml Controller ComputeOvsDpdkSriov
-
OS::TripleO::Services::OVNMetadataAgent
を Controller ロールに追加します。 resource_registry
パラメーターを使用して、OVS-DPDK 用のカスタムリソースを追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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.yaml
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.yaml
parameter_defaults セクションで、トンネル種別パラメーターの値を編集して
geneve
に設定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow NeutronTunnelTypes: 'geneve' NeutronNetworkType: ['geneve', 'vlan']
NeutronTunnelTypes: 'geneve' NeutronNetworkType: ['geneve', 'vlan']
オプション: 集中ルーティングモデルを使用する場合は、分散仮想ルーター (DVR) を無効にします。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow NeutronEnableDVR: false
NeutronEnableDVR: false
parameters_defaults
セクションで、ブリッジマッピングを設定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow The OVS logical-to-physical bridge mappings to use.
# The OVS logical-to-physical bridge mappings to use. NeutronBridgeMappings: "datacentre:br-ex,data1:br-link0,data2:br-link1"
computeovsdpdksriov.yaml
ファイルでネットワークインターフェイスを設定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 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
- 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
ロールを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow openstack overcloud roles generate -o roles_data.yaml ControllerSriov ComputeSriov
openstack overcloud roles generate -o roles_data.yaml ControllerSriov ComputeSriov
実際のデプロイメントに応じて
physical_network
パラメーターを設定します。-
VLAN の場合には、
physical_network
パラメーターをデプロイメント後に neutron で作成するネットワークの名前に設定します。NeutronBridgeMappings
パラメーターにもこの値を使用します。 ロール固有のパラメーター (
ComputeSriovOffloadParameters
) の下で、OvsHwOffload
パラメーターの値がtrue
であることを確認します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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']
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
ファイルでネットワークインターフェイスを設定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 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
- 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
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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
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