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 をデプロイします。

手順

  1. neutron_driver パラメーターが ovs に設定されるように、containers-prepare-parameter.yaml ファイルを変更します。

    parameter_defaults:
      ContainerImagePrepare:
      - push_destination: true
        set:
         neutron_driver: ovs
         ...
  2. /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 と同じノードにデプロイします。

手順

  1. ComputeOvsDpdkSriov ロールを作成します。

    openstack overcloud roles generate -o roles_data.yaml Controller ComputeOvsDpdkSriov
  2. OS::TripleO::Services::OVNMetadataAgent を Controller ロールに追加します。
  3. 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.yaml
  4. parameter_defaults セクションで、トンネル種別パラメーターの値を編集して geneve に設定します。

    NeutronTunnelTypes: 'geneve'
    NeutronNetworkType: ['geneve', 'vlan']
  5. オプション: 集中ルーティングモデルを使用する場合は、分散仮想ルーター (DVR) を無効にします。

    NeutronEnableDVR: false
  6. parameters_defaults セクションで、ブリッジマッピングを設定します。

     # The OVS logical-to-physical bridge mappings to use.
      NeutronBridgeMappings: "datacentre:br-ex,data1:br-link0,data2:br-link1"
  7. 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
  8. デプロイメントスクリプトに以下の 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 オフロードを無効にする必要があります。

手順

  1. ComputeOvsDpdkSriov ロールを作成します。

    openstack overcloud roles generate -o roles_data.yaml ControllerSriov ComputeSriov
  2. 実際のデプロイメントに応じて 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']
  3. 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
  4. デプロイメントスクリプトに以下の 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