3.2. NFV 배포에 지원되는 구성

RHOSP(Red Hat OpenStack Platform)는 director를 사용하여 다음과 같은 NFV 배포를 지원합니다.

  • SR-IOV(단일 루트 I/O 가상화)
  • 데이터 플레인 개발 키트(OVS-DPDK)를 사용하여 Open vSwitch

또한 다음 기능을 사용하여 RHOSP를 배포할 수 있습니다.

기본 SDN(소프트웨어 정의 네트워킹) 솔루션으로 OVN(Open Virtual Network)을 사용한 RHOSP NFV 배포는 지원되지 않습니다. RHOSP 16.1.4에서는 일반적으로 다음과 같은 RHOSP NFV OVN 구성을 사용할 수 있습니다.

  • SR-IOV와 함께 배치된 OVS-DPDK가 있는 OVN
  • OVS TC Flower 오프로드가 포함된 OVN

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. OVS-DPDK 및 SR-IOV를 사용하여 OVN 배포

참고

이 RHOSP NFV OVN 구성은 일반적으로 RHOSP 16.1.4에서 사용할 수 있습니다.

OVN과 동일한 노드에 DPDK 및 SRIOV VM을 배포합니다.

절차

  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 섹션에서 tunnel type 매개 변수 값을 cal ve로 편집합니다.

    NeutronTunnelTypes: 'geneve'
    NeutronNetworkType: ['geneve', 'vlan']
  5. 선택 사항: 중앙 집중식 라우팅 모델을 사용하는 경우 VR(Distributed Virtual Routing)을 비활성화합니다.

    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
참고

OVN(Open Virtual Networking)은 Red Hat OpenStack Platform 16.1의 기본 네트워킹 메커니즘 드라이버입니다. DVR(분산 가상 라우팅)로 OVN을 사용하려면 openstack overcloud deploy 명령에 environments/services/neutron-ovn-dvr-ha.yaml 파일을 포함해야 합니다. DVR 없이 OVN을 사용하려면 openstack overcloud deploy 명령에 environments/services/neutron-ovn-ha.yaml 파일을 포함하고 NeutronEnableDVR 매개변수를 false 로 설정해야 합니다. SR-IOV와 함께 OVN을 사용하려면 openstack overcloud deploy 명령에서 마지막 OVN 환경 파일에 environments/services/neutron-ovn-sriov.yaml 파일을 포함해야 합니다.

3.2.3. OVS TC Flower 오프로드를 사용하여 OVN 배포

OVN과 동일한 노드에 OVS TC Flower 오프로드를 배포합니다.

참고

이 RHOSP NFV OVN 구성은 일반적으로 RHOSP 16.1.4에서 사용할 수 있습니다.

참고

Red Hat Enterprise Linux Traffic Control( 8.5) 하위 시스템은 연결 추적(conntrack) 도우미 또는 애플리케이션 계층 게이트웨이(ALG)를 지원하지 않습니다. 따라서 ALG를 사용하는 경우 TC Flower 오프로드를 비활성화해야 합니다.

절차

  1. ComputeOvsDpdkSriov 역할을 생성합니다.

    openstack overcloud roles generate -o roles_data.yaml ControllerSriov ComputeSriov
  2. 배포와 관련된 physical_network 매개 변수 설정을 구성합니다.

    • VLAN의 경우 배포 후 neutron에서 생성한 네트워크의 이름으로 physical_network 매개 변수를 설정합니다. NeutronBridgeMappings 매개변수에도 이 값을 사용합니다.
    • ComputeSriovOffloadParameters와 같은 역할별 매개 변수에서 Ovs HwOffload 매개 변수의 값이 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