네트워크 기능 가상화 계획 및 구성 가이드
NFV(Network Functions Virtualization) OpenStack 배포 계획 및 구성
초록
Red Hat 문서에 관한 피드백 제공 링크 복사링크가 클립보드에 복사되었습니다!
문서 개선을 위한 의견을 보내 주십시오. Red Hat이 어떻게 더 나은지 알려주십시오.
Jira에서 문서 피드백 제공
문제 생성 양식을 사용하여 문서에 대한 피드백을 제공합니다. Jira 문제는 Red Hat OpenStack Platform Jira 프로젝트에서 생성되어 피드백의 진행 상황을 추적할 수 있습니다.
- Jira에 로그인했는지 확인합니다. Jira 계정이 없는 경우 피드백을 제출할 계정을 생성합니다.
 - 다음 링크를 클릭하여 문제 생성 페이지를 엽니다. 문제 생성
 - 요약 및 설명 필드를 작성합니다. 설명 필드에 문서 URL, 장 또는 섹션 번호, 문제에 대한 자세한 설명을 포함합니다. 양식의 다른 필드를 수정하지 마십시오.
 - 생성을 클릭합니다.
 
1장. Red Hat Network Functions Virtualization(NFV) 이해 링크 복사링크가 클립보드에 복사되었습니다!
NFV(Network Functions Virtualization) 는 통신 서비스 공급자(CSP)가 기존의 독점 하드웨어 이상으로 전환하여 운영 비용을 줄이면서 효율성과 민첩성을 높이는 데 도움이 되는 소프트웨어 기반 솔루션입니다.
NFV 환경은 스위치, 라우터 및 스토리지와 같은 표준 하드웨어 장치에서 실행되는 표준 가상화 기술을 사용하여 네트워크 기능 가상화(VNF)를 사용하여 가상화 인프라를 제공하여 IT 및 네트워크 통합을 허용합니다. 관리 및 오케스트레이션 논리는 이러한 서비스를 배포하고 유지합니다. NFV에는 Systems Administration, Automation 및 Life-Cycle Management도 포함되어 있으므로 필요한 수동 작업을 줄일 수 있습니다.
1.1. NFV의 이점 링크 복사링크가 클립보드에 복사되었습니다!
NFV(네트워크 기능 가상화) 구현의 주요 이점은 다음과 같습니다.
- 변화하는 요구에 대응하기 위해 새로운 네트워킹 서비스를 신속하게 배포하고 확장할 수 있으므로 시장 출시 시간을 단축합니다.
 - 서비스 개발자가 프로덕션에서 사용할 플랫폼과 동일한 플랫폼을 사용하여 자체 리소스 및 프로토타입을 관리할 수 있도록 하여 혁신을 지원합니다.
 - 보안이나 성능을 저하시키지 않고 고객의 요구 사항을 몇 주 또는 며칠이 아니라 몇 시간 또는 몇 분 내에 해결하십시오.
 - 비용이 많이 드는 맞춤형 장비 대신 기성품 하드웨어를 사용하기 때문에 대문자를 줄입니다.
 - 일상적인 작업을 최적화하여 직원의 생산성을 개선하고 운영 비용을 줄이는 간소화된 운영 및 자동화를 사용합니다.
 
1.2. NFV 배포에 지원되는 구성 링크 복사링크가 클립보드에 복사되었습니다!
Red Hat OpenStack Platform director 툴킷을 사용하여 외부, 프로젝트, 내부 API 등과 같은 특정 네트워크 유형을 분리할 수 있습니다. 단일 네트워크 인터페이스에 네트워크를 배포하거나 다중 호스트 네트워크 인터페이스를 통해 배포할 수 있습니다. Open vSwitch를 사용하면 단일 브리지에 여러 인터페이스를 할당하여 본딩을 만들 수 있습니다. 템플릿 파일을 사용하여 Red Hat OpenStack Platform 설치에서 네트워크 격리를 구성합니다. 템플릿 파일을 제공하지 않으면 서비스 네트워크가 provisioning 네트워크에 배포됩니다.
템플릿 구성 파일의 유형은 다음과 같습니다.
network-environment.yaml이 파일에는 오버클라우드 노드에 대한 서브넷 및 IP 주소 범위와 같은 네트워크 세부 정보가 포함되어 있습니다. 이 파일에는 다양한 시나리오의 기본 매개 변수 값을 재정의하는 다양한 설정도 포함되어 있습니다.
호스트 네트워크 템플릿(예: compute.yaml 및 controller.yaml)
이러한 템플릿은 오버클라우드 노드의 네트워크 인터페이스 구성을 정의합니다. 네트워크 세부 정보 값은
network-environment.yaml파일에서 제공합니다.
				이러한 heat 템플릿 파일은 언더클라우드 노드의 /usr/share/openstack-tripleo-heat-templates/ 에 있습니다. NFV용 이러한 heat 템플릿 파일의 샘플은 샘플 DPDK SR-IOV YAML 파일을 참조하십시오.
			
하드웨어 요구 사항 및 소프트웨어 요구 사항 섹션에서는 Red Hat OpenStack Platform director를 사용하여 NFV용 Heat 템플릿 파일을 계획하고 구성하는 방법에 대해 자세히 설명합니다.
YAML 파일을 편집하여 NFV를 구성할 수 있습니다. YAML 파일 형식에 대한 소개는 Nutshell에서 YAML을 참조하십시오.
- DPDK(Data Plane Development Kit) 및 SR-IOV(Single Root I/O Virtualization)
 RHOSP(Red Hat OpenStack Platform)는 자동화된 OVS-DPDK 및 SR-IOV 구성이 포함된 NFV 배포를 지원합니다.
중요Red Hat은 비NFV 워크로드에 OVS-DPDK 사용을 지원하지 않습니다. 비NFV 워크로드에 대한 OVS-DPDK 기능이 필요한 경우 TAM(기술 계정 관리자)에 문의하거나 고객 서비스 요청 케이스를 열어 Support exceptions 및 기타 옵션에 대해 논의하십시오. 고객 서비스 요청 케이스를 열려면 케이스 생성으로 이동하여 계정 > 고객 서비스 요청을 선택합니다.
- HCI(하이퍼 컨버지드 인프라)
 - Compute 하위 시스템을 Red Hat Ceph Storage 노드와 함께 배치할 수 있습니다. 이 하이퍼 컨버지드 모델은 더 낮은 입력 비용, 초기 배포 공간, 최대 용량 활용 및 NFV 사용 사례에서 보다 효율적인 관리를 제공합니다. HCI에 대한 자세한 내용은 하이퍼컨버지드 인프라 가이드를 참조하십시오.
 - 구성 가능 역할
 - 구성 가능 역할을 사용하여 사용자 지정 배포를 생성할 수 있습니다. 구성 가능 역할을 사용하면 각 역할에서 서비스를 추가하거나 제거할 수 있습니다. Composable 역할에 대한 자세한 내용은 Composable 서비스 및 사용자 지정 역할을 참조하십시오.
 - LACP를 사용한 OVS(Open vSwitch)
 - OVS 2.9부터 OVS를 사용한 LACP가 완전히 지원됩니다. OVS 또는 Openstack Networking이 중단되면 관리를 방해할 수 있으므로 Openstack 컨트롤 플레인 트래픽에는 권장되지 않습니다. 자세한 내용은 OVS(Open vSwitch) 본딩 옵션을 참조하십시오.
 - OVS 하드웨어 오프로드
 - Red Hat OpenStack Platform은 제한 사항과 함께 OVS 하드웨어 오프로드의 배포를 지원합니다. 하드웨어 오프로드를 사용하여 OVS를 배포하는 방법에 대한 자세한 내용은 OVS 하드웨어 오프로드 구성을 참조하십시오.
 - OVN(Open Virtual Network)
 RHOSP 16.1.4에서 다음 NFV OVN 구성을 사용할 수 있습니다.
1.3. NFV 데이터 플레인 연결 링크 복사링크가 클립보드에 복사되었습니다!
NFV가 도입됨에 따라 더 많은 네트워킹 벤더가 VNF로 기존 장치를 구현하기 시작했습니다. 대부분의 네트워킹 벤더는 가상 머신을 고려하고 있지만 일부는 설계 선택으로 컨테이너 기반 접근 방식을 조사하고 있습니다. OpenStack 기반 솔루션은 다음과 같은 두 가지 주요 이유로 인해 풍부하고 유연해야 합니다.
- 애플리케이션 준비 - 네트워크 벤더가 현재 장치를 VNF로 변환하는 중입니다. 시장 내 VNF는 서로 다른 수준의 완성도를 가지고 있습니다. 이러한 준비에 대한 일반적인 장애로는 API에서 RESTful 인터페이스 활성화, 데이터 모델을 상태 비저장으로 발전시키고, 자동화된 관리 작업을 제공하는 것이 포함됩니다. OpenStack은 모두를 위한 공통 플랫폼을 제공해야 합니다.
 광범위한 사용 사례 - NFV에는 다양한 사용 사례를 제공하는 다양한 애플리케이션이 포함되어 있습니다. 예를 들어, vCPE(Virtual Customer Premise Equipment)는 고객 환경에서 라우팅, 방화벽, VPN(Virtual Private Network) 및 NAT(Network Address Translation)와 같은 여러 네트워크 기능을 제공하는 것을 목표로 합니다. vEPC(Virtual Evolved Packet Core)는 LTE(Long-Term Evolution) 네트워크의 핵심 구성 요소에 비용 효율적인 플랫폼을 제공하는 클라우드 아키텍처로, 게이트웨이 및 모바일 끝점의 동적 프로비저닝을 통해 스마트 카드 및 기타 장치에서 데이터 트래픽의 양을 늘릴 수 있습니다.
이러한 사용 사례는 서로 다른 네트워크 애플리케이션 및 프로토콜을 사용하여 구현되며 인프라의 서로 다른 연결, 격리 및 성능 특성이 필요합니다. 컨트롤 플레인 인터페이스와 프로토콜과 실제 전달 플레인을 구분하는 것도 일반적입니다. OpenStack은 다양한 데이터 경로 연결 옵션을 제공할 수 있을 만큼 유연해야 합니다.
기본적으로 가상 머신에 데이터 플레인 연결을 제공하는 두 가지 일반적인 방법이 있습니다.
- 직접 하드웨어 액세스 는 linux 커널을 우회하고 가상 기능(VF) 및 PF(물리 기능) 패스스루 모두에 대해 PCI Passthrough 또는 SR-IOV(Single Root I/O Virtualization)와 같은 기술을 사용하여 물리적 NIC에 대한 안전한 직접 메모리 액세스(DMA)를 제공합니다.
 - 하이퍼바이저의 소프트웨어 서비스로 구현된 가상 스위치(vswitch) 사용. 가상 머신은 가상 인터페이스(vNIC)를 사용하여 vSwitch에 연결되며 vSwitch는 가상 머신과 물리적 네트워크 간에 트래픽을 전달할 수 있습니다.
 
빠른 데이터 경로 옵션 중 일부는 다음과 같습니다.
- SR-IOV(Single Root I/O Virtualization) 는 단일 PCI 하드웨어 장치를 여러 가상 PCI 장치로 표시하는 표준입니다. 물리적 하드웨어 포트를 나타내는 완전한 기능을 갖춘 PCIe 함수인 물리적 기능(PF)과 가상 머신에 할당된 경량 함수인 VF(가상 기능)를 도입하여 작동합니다. VM에 대해 VF는 하드웨어와 직접 통신하는 일반 NIC와 유사합니다. NIC는 여러 VF를 지원합니다.
 - OVS(Open vSwitch) 는 가상화된 서버 환경 내에서 가상 스위치로 사용하도록 설계된 오픈 소스 소프트웨어 스위치입니다. OVS는 일반 L2-L3 스위치의 기능을 지원하며, OpenFlow와 같은 SDN 프로토콜을 지원하여 사용자 정의 오버레이 네트워크(예: VXLAN)를 만듭니다. OVS는 Linux 커널 네트워킹을 사용하여 가상 머신과 물리적 NIC를 사용하는 호스트 간에 패킷을 전환합니다. OVS는 iptables/ebtables를 사용하는 Linux 브리지의 오버헤드를 피하기 위해 내장 방화벽 기능이 내장된 연결 추적(Conntrack)을 지원합니다. Red Hat OpenStack Platform 환경의 Open vSwitch는 OVS와의 기본 OpenStack Networking(neutron) 통합을 제공합니다.
 - DPDK(Data Plane Development Kit) 는 라이브러리 세트와 빠른 패킷 처리를 위한 PMD( 폴링 모드 드라이버)로 구성됩니다. 대부분의 사용자 공간을 실행하도록 설계되었으므로 애플리케이션이 또는 NIC에서 직접 자체 패킷 처리를 수행할 수 있습니다. DPDK는 대기 시간을 줄이고 더 많은 패킷을 처리할 수 있습니다. DPDK PMD(Pll Mode Drivers)는 사용 중인 루프로 실행되어 패킷 도착을 위해 게스트의 호스트 및 vNIC 포트에서 NIC 포트를 지속적으로 스캔합니다.
 - DPDK 가속화 Open vSwitch(OVS-DPDK) 는 Linux 커널 바이패스 및 DMA(직접 메모리 액세스)를 물리적 NIC로 사용하는 고성능 사용자 공간 솔루션을 위해 DPDK와 함께 제공되는 Open vSwitch입니다. 표준 OVS 커널 데이터 경로를 DPDK 기반 데이터 경로로 교체하여 패킷 전달을 위해 DPDK를 내부적으로 사용하는 호스트에서 사용자 공간 vSwitch를 생성하는 것입니다. 이 아키텍처의 장점은 사용자에게 가장 투명하다는 것입니다. OpenFlow, OVSDB와 같이 표시되는 인터페이스는 대부분 동일하게 유지됩니다.
 
1.4. CryostatI NFV 아키텍처 링크 복사링크가 클립보드에 복사되었습니다!
European Tlecommunications Standards Institute (ETSI)는 유럽의 정보 및 통신 기술 (ICT)에 대한 표준을 개발하는 독립적 표준화 그룹입니다.
NFV(네트워크 기능 가상화)는 독점 하드웨어 장치 사용과 관련된 문제를 해결하는 데 중점을 둡니다. NFV를 사용하면 사용 사례 요구 사항 및 경제적 이점에 따라 네트워크 관련 장비 설치 필요성이 줄어듭니다. CryostatI Industry Specification Group for Network Functions Virtualization(ETSI ISG NFV)은 가상화 기능을 지원하는 데 필요한 요구 사항, 참조 아키텍처 및 인프라 사양을 설정합니다.
Red Hat은 통신 서비스 공급자(CSP)가 IT 및 네트워크 통합을 달성하는 데 도움이 되는 오픈 소스 기반 클라우드 최적화 솔루션을 제공하고 있습니다. Red Hat은 단일 루트 I/O 가상화(SR-IOV) 및 OVS-DPDK(Data Plane Development Kit)가 포함된 Open vSwitch와 같은 NFV 기능을 Red Hat OpenStack에 추가합니다.
1.5. NFV CryostatI 아키텍처 및 구성 요소 링크 복사링크가 클립보드에 복사되었습니다!
일반적으로 NFV(네트워크 기능 가상화) 플랫폼에는 다음과 같은 구성 요소가 있습니다.
그림 1.1. NFV CryostatI 아키텍처 및 구성 요소
- VNF(Virtual Network Functions) - 라우터, 방화벽, 로드 밸런서, 초고리 게이트웨이, 모바일 패킷 프로세서, 서비스 노드, 신호링, 위치 서비스 및 기타 네트워크 기능의 소프트웨어 구현입니다.
 - NFV Infrastructure(NFVi) - 인프라를 구성하는 물리적 리소스(컴퓨팅, 스토리지, 네트워크) 및 가상화 계층입니다. 네트워크에는 가상 시스템과 호스트 간에 패킷을 전달하는 데이터 경로가 포함됩니다. 이를 통해 기본 하드웨어의 세부 정보에 대해 우려하지 않고 VNF를 설치할 수 있습니다. NFVi는 NFV 스택의 기반을 형성합니다. NFVi는 멀티 테넌시를 지원하며 VIM(Virtual Infrastructure Manager)에서 관리합니다. 향상된 플랫폼 인식(EPA)은 낮은 수준의 CPU 및 NIC 가속 구성 요소를 VNF에 노출하여 가상 머신 패킷 전달 성능(처리량, 대기 시간, 지터)을 향상시킵니다.
 - NFV 관리 및 오케스트레이션(MANO) - 관리 및 오케스트레이션 계층은 VNF의 라이프 사이클 전반에 걸쳐 필요한 모든 서비스 관리 작업에 중점을 둡니다. MANO의 주요 목표는 운영자가 제공하는 네트워크 기능의 서비스 정의, 자동화, 오류 분류, 모니터링 및 라이프 사이클 관리를 물리적 인프라와 분리하여 허용하는 것입니다. 이러한 분리에는 VNFM(Virtual Network Function Manager)에서 제공하는 추가 관리 계층이 필요합니다. VNFM은 가상 머신과 직접 상호 작용하거나 VNF 벤더가 제공하는 Element Management System(element Management System)을 통해 가상 머신 및 VNF의 라이프 사이클을 관리합니다. MANO가 정의하는 다른 중요한 구성 요소는 NFVO라고도 하는 Orchestrator입니다. NFVO는 상단과 VNFM의 운영/비즈니스 지원 시스템(OSS/BSS)을 포함한 다양한 데이터베이스 및 시스템과 상호 작용합니다. NFVO가 고객을 위한 새 서비스를 생성하려는 경우 VNFM에 VNF를 트리거하도록 요청하면 여러 가상 시스템이 발생할 수 있습니다.
 - 운영 및 비즈니스 지원 시스템(OSS/BSS) 은 필수 비즈니스 기능 애플리케이션(예: 운영 지원 및 청구)을 제공합니다. OSS/BSS는 기존 시스템 및 새로운 MANO 구성 요소와 통합되어 NFV에 맞게 조정해야 합니다. BSS 시스템은 서비스 서브스크립션을 기반으로 정책을 설정하고 보고 및 청구를 관리합니다.
 - 시스템 관리, 자동화 및 라이프 사이클 관리 - 시스템 관리, 인프라 구성 요소의 자동화 및 NFVi 플랫폼의 라이프 사이클을 관리합니다.
 
1.6. Red Hat NFV 구성 요소 링크 복사링크가 클립보드에 복사되었습니다!
NFV를 위한 Red Hat 솔루션에는 CryostatI 모델에서 NFV 프레임워크의 다양한 구성 요소 역할을 할 수 있는 다양한 제품이 포함되어 있습니다. Red Hat 포트폴리오의 다음 제품은 NFV 솔루션에 통합됩니다.
- Red Hat OpenStack Platform - IT 및 NFV 워크로드를 지원합니다. 향상된 플랫폼 인식(EPA) 기능은 SR-IOV 및 OVS-DPDK를 지원하는 CPU 고정, Huge 페이지, NUMA(Non-Uniform Memory Access) 선호도 및 NIC(네트워크 어댑터)를 통해 명확한 성능 향상을 제공합니다.
 - Red Hat Enterprise Linux 및 Red Hat Enterprise Linux Atomic Host - 가상 머신 및 컨테이너를 VNF로 만듭니다.
 - Red Hat Ceph Storage - 서비스 공급자 워크로드의 모든 요구 사항에 맞게 탄력적이고 고성능 스토리지 계층을 제공합니다.
 - Red Hat JBoss Middleware 및 OpenShift Enterprise - 필요한 경우 OSS/BSS 구성 요소를 현대화할 수 있는 기능을 제공합니다.
 - Red Hat CloudForms - VNF 관리자를 제공하고 통합 디스플레이에서 VIM 및 NFVi와 같은 여러 소스의 데이터를 제공합니다.
 - Red Hat Satellite 및 Ansible - 필요한 경우 향상된 시스템 관리, 자동화 및 라이프 사이클 관리를 제공합니다.
 
1.7. NFV 설치 요약 링크 복사링크가 클립보드에 복사되었습니다!
Red Hat OpenStack Platform director는 완전한 OpenStack 환경을 설치하고 관리합니다. director는 "OpenStack-On-OpenStack"의 약어인 업스트림 OpenStack TripleO 프로젝트를 기반으로 합니다. 이 프로젝트에는 OpenStack 구성 요소를 활용하여 완전히 작동하는 OpenStack 환경을 설치합니다. 여기에는 언더클라우드라는 최소한의 OpenStack 노드가 포함됩니다. 언더클라우드는 오버클라우드를 프로비저닝하고 제어합니다(프로덕션 OpenStack 노드로 사용되는 일련의 베어 메탈 시스템). director는 간결하고 강력한 전체 Red Hat OpenStack Platform 환경을 간단하게 설치할 수 있는 방법을 제공합니다.
언더클라우드 및 오버클라우드 설치에 대한 자세한 내용은 Director 설치 및 사용 가이드를 참조하십시오.
NFV 기능을 설치하려면 다음 추가 단계를 완료합니다.
- 
						
network-environment.yaml파일에 SR-IOV 및 PCI Passthrough 매개변수를 포함하고, CPU 튜닝을 위한설치 후.yaml파일을 업데이트하고,compute.yaml파일을 수정하고,overcloud_deploy.sh스크립트를 실행하여 오버클라우드를 배포합니다. - 
						NIC에서 직접 데이터를 폴링하여 빠른 패킷 처리를 위한 DPDK 라이브러리 및 드라이버를 설치합니다. 
network-environment.yaml파일에 DPDK 매개변수를 포함하고, CPU 튜닝을 위해post-install.yaml파일을 업데이트하고, DPDK 포트로 브릿지를 설정하도록compute.yaml파일을 업데이트하고,controller.yaml파일을 업데이트하여 VLAN이 구성된 브리지 및 인터페이스를 업데이트하고overcloud_deploy.sh스크립트를 실행하여 오버클라우드를 배포합니다. 
2장. NFV 성능 고려 사항 링크 복사링크가 클립보드에 복사되었습니다!
NFV(네트워크 기능 가상화) 솔루션을 사용하려면 가상화된 기능이 물리적 구현의 성능을 충족하거나 초과해야 합니다. Red Hat의 가상화 기술은 OpenStack 및 클라우드 배포에서 공통된 고성능 KVM(커널 기반 가상 시스템) 하이퍼바이저를 기반으로 합니다.
Red Hat OpenStack Platform director는 리소스 파티셔닝을 적용하고, 게스트 가상 네트워크 기능(VNF)에 대한 라인 속도 성능을 달성하기 위해 컴퓨팅 노드를 구성합니다. NFV 사용 사례의 주요 성능 요인은 처리량, 대기 시간 및 지터입니다.
DPDK(데이터 플레인 개발 키트) 가속화 가상 머신을 사용하여 물리적 NIC와 가상 머신 간에 고성능 패킷 스위칭을 활성화할 수 있습니다. OVS 2.10에는 DPDK 17에 대한 지원이 포함되어 있으며 vhost-user multiqueue 지원이 포함되어 확장 가능한 성능을 제공합니다. OVS-DPDK는 게스트 VNF에 대한 라인 속도로 성능을 제공합니다.
SR-IOV(Single Root I/O Virtualization) 네트워킹은 특정 네트워크 및 가상 머신의 처리량 향상을 비롯하여 향상된 성능을 제공합니다.
성능 튜닝을 위한 기타 중요한 기능으로는 대규모 페이지, NUMA 정렬, 호스트 격리, CPU 고정 등이 있습니다. VNF 플레이버는 성능 향상을 위해 대규모 페이지와 에뮬레이터 스레드 격리가 필요합니다. 호스트 격리 및 CPU 고정은 NFV 성능을 개선하고 가상 패킷 손실을 방지합니다.
2.1. CPU 및 NUMA 노드 링크 복사링크가 클립보드에 복사되었습니다!
이전에는 x86 시스템의 모든 메모리가 시스템의 모든 CPU에 동일하게 액세스할 수 있었습니다. 이로 인해 시스템의 CPU가 작업을 수행하고 UMA(Uniform Memory Access)라고 하는 CPU와 관계없이 메모리 액세스 시간이 동일했습니다.
NUMA(Non-Uniform Memory Access)에서 시스템 메모리는 특정 CPU 또는 소켓에 할당된 노드라는 영역으로 나뉩니다. CPU에 로컬인 메모리에 대한 액세스는 해당 시스템의 원격 CPU에 연결된 메모리보다 빠릅니다. 일반적으로 NUMA 시스템의 각 소켓에는 로컬 노드의 메모리보다 콘텐츠를 다른 CPU 또는 모든 CPU에서 공유하는 버스의 메모리보다 더 빠르게 액세스할 수 있는 로컬 메모리 노드가 있습니다.
마찬가지로 물리적 NIC는 컴퓨팅 노드 하드웨어의 PCI 슬롯에 배치됩니다. 이러한 슬롯은 특정 NUMA 노드에 연결된 특정 CPU 소켓에 연결됩니다. 최대한 성능을 얻으려면 datapath NIC를 CPU 구성의 동일한 NUMA 노드(SR-IOV 또는 OVS-DPDK)에 연결합니다.
NUMA 누락의 성능 영향은 중요하며 일반적으로 10% 이상의 성능 적중을 시작합니다. 각 CPU 소켓에는 가상화를 위해 개별 CPU로 취급되는 여러 CPU 코어가 있을 수 있습니다.
NUMA에 대한 자세한 내용은 NUMA란 무엇이며 Linux에서 어떻게 작동합니까?
2.1.1. NUMA 노드 예 링크 복사링크가 클립보드에 복사되었습니다!
다음 다이어그램에서는 2-노드 NUMA 시스템의 예와 CPU 코어 및 메모리 페이지를 사용할 수 있는 방법을 보여줍니다.
그림 2.1. 예: 2-노드 NUMA 시스템
Interconnect를 통해 사용할 수 있는 원격 메모리는 NUMA 노드 0의 VM1에 NUMA 노드 1의 CPU 코어가 있는 경우에만 액세스할 수 있습니다. 이 경우 NUMA 노드 1의 메모리는 VM1의 세 번째 CPU 코어에 대해 로컬 역할을 하지만(예: 위의 다이어그램에서 VM1이 CPU 4에 할당된 경우) 동일한 VM의 다른 CPU 코어에 대한 원격 메모리 역할을 합니다.
2.1.2. NUMA 인식 인스턴스 링크 복사링크가 클립보드에 복사되었습니다!
NUMA 아키텍처가 있는 시스템에서 NUMA 토폴로지 인식을 사용하도록 OpenStack 환경을 구성할 수 있습니다. VM(가상 머신)에서 게스트 운영 체제를 실행하는 경우 다음과 같은 두 가지 NUMA 토폴로지가 포함됩니다.
- 호스트의 물리적 하드웨어의 NUMA 토폴로지
 - 게스트 운영 체제에 노출되는 가상 하드웨어의 NUMA 토폴로지
 
가상 하드웨어를 물리적 하드웨어 NUMA 토폴로지와 조정하여 게스트 운영 체제의 성능을 최적화할 수 있습니다.
2.2. CPU 고정 링크 복사링크가 클립보드에 복사되었습니다!
CPU 고정은 지정된 호스트의 특정 물리적 CPU에서 특정 가상 시스템의 가상 CPU를 실행하는 기능입니다. vCPU 고정은 베어 메탈 시스템에서 작업을 고정하는 것과 유사한 이점을 제공합니다. 가상 머신은 호스트 운영 체제에서 사용자 공간 작업으로 실행되므로 고정으로 캐시 효율성이 향상됩니다.
CPU 고정을 구성하는 방법에 대한 자세한 내용은 인스턴스 생성 가이드를 위해 컴퓨팅 서비스 구성 가이드의 컴퓨팅 노드에 CPU 고정 구성을 참조하십시오.
2.3. Huge Page 링크 복사링크가 클립보드에 복사되었습니다!
물리적 메모리는 페이지라는 연속 영역으로 분할됩니다. 효율성을 위해 시스템은 개별 메모리 대신 전체 페이지에 액세스하여 메모리를 검색합니다. 이 변환을 수행하기 위해 시스템은 가장 최근에 사용되거나 자주 사용되는 페이지의 물리적 주소 매핑이 포함된 TLB(Translation Lookaside Buffers)를 찾습니다. 시스템이 TLB에서 매핑을 찾을 수 없는 경우 프로세서는 모든 페이지 테이블을 반복하여 주소 매핑을 확인해야 합니다. 이러한 TLB 누락 중에 발생하는 성능 저하를 최소화하기 위해 TLB를 최적화합니다.
x86 시스템의 일반적인 페이지 크기는 4KB이며 다른 큰 페이지 크기를 사용할 수 있습니다. 페이지 크기가 클수록 전체 페이지가 줄어들고 따라서 가상을 물리적 주소 변환으로 저장할 수 있는 시스템 메모리 양이 늘어납니다. 결과적으로 TLB 누락이 줄어들어 성능이 향상됩니다. 페이지 크기가 클수록 프로세스에서 페이지를 할당해야 하므로 메모리가 활용도가 낮지만 일부 메모리가 필요하지는 않습니다. 결과적으로 페이지 크기를 선택하는 것은 더 큰 페이지로 더 빠른 액세스 시간을 제공하고 더 작은 페이지로 메모리 사용률을 극대화하는 것 사이의 저하입니다.
2.4. 포트 보안 링크 복사링크가 클립보드에 복사되었습니다!
포트 보안은 원래 네트워크 포트의 소스 IP 및 소스 MAC 주소와 일치하지 않는 송신 트래픽을 차단하는 방지 수단입니다. 보안 그룹 규칙을 사용하여 이 동작을 보거나 수정할 수 없습니다.
				기본적으로 port_security_enabled 매개 변수는 OpenStack에서 새로 생성된 Neutron 네트워크에서 활성화 되도록 설정됩니다. 새로 생성된 포트는 생성된 네트워크에서 port_security_enabled 매개변수 값을 복사합니다.
			
방화벽 또는 라우터 빌드와 같은 일부 NFV 사용 사례의 경우 포트 보안을 비활성화해야 합니다.
단일 포트에서 포트 보안을 비활성화하려면 다음 명령을 실행합니다.
openstack port set --disable-port-security <port-id>
openstack port set --disable-port-security <port-id>
네트워크의 새로 생성된 포트에서 포트 보안이 활성화되지 않도록 하려면 다음 명령을 실행합니다.
openstack network set --disable-port-security <network-id>
openstack network set --disable-port-security <network-id>
3장. NFV 하드웨어 요구 사항 링크 복사링크가 클립보드에 복사되었습니다!
이 섹션에서는 NFV의 하드웨어 요구 사항에 대해 설명합니다.
Red Hat OpenStack Platform 인증 하드웨어의 전체 목록은 Red Hat OpenStack Platform 인증 하드웨어를 참조하십시오.
3.1. NFV에 대해 테스트된 NIC 링크 복사링크가 클립보드에 복사되었습니다!
NFV에 대해 테스트된 NIC 목록은 Red Hat Knowledgebase 솔루션 Network Adapter Fast Datapath 기능 지원 매트릭스 를 참조하십시오.
NVIDIA (M#159nox) 네트워크 인터페이스에서 OVS-DPDK를 구성하지 않는 한 지원되는 NIC에 기본 드라이버를 사용합니다. NVIDIA 네트워크 인터페이스의 경우 j2 네트워크 구성 템플릿에 해당 커널 드라이버를 설정해야 합니다.
예제
					이 예에서 mlx5_core 드라이버는 Mellanox ConnectX-5 네트워크 인터페이스에 대해 설정됩니다.
				
3.2. 하드웨어 오프로드 문제 해결 링크 복사링크가 클립보드에 복사되었습니다!
				RHOSP(Red Hat OpenStack Platform) 16.2 배포에서 OVS 하드웨어 오프로드가 switchdev가능 포트 및 Mellanox ConnectX5 NIC를 사용하여 VM의 흐름을 오프로드하지 않을 수 있습니다. 이 시나리오의 오프로드 흐름 문제를 해결하고 구성하려면 ESWITCH_IPV4_TTL_MODIFY_ENABLE Mellanox 펌웨어 매개 변수를 비활성화합니다. RHOSP 16.2의 OVS 하드웨어 오프로드에 대한 자세한 문제 해결 정보는 OpenStack Platform 16.2의 Mellanox NIC를 사용한 Red Hat Knowledgebase 솔루션 OVS 하드웨어 오프로드를 참조하십시오.
			
절차
- RHOSP 배포의 Compute 노드에 구성하려는 Mellanox NIC가 있습니다.
 mstflint유틸리티를 사용하여ESWITCH_IPV4_TTL_MODIFY_ENABLEMellanox 펌웨어 매개 변수를 쿼리합니다.yum install -y mstflint mstconfig -d <PF PCI BDF> q ESWITCH_IPV4_TTL_MODIFY_ENABLE
[root@compute-1 ~]# yum install -y mstflint [root@compute-1 ~]# mstconfig -d <PF PCI BDF> q ESWITCH_IPV4_TTL_MODIFY_ENABLECopy to Clipboard Copied! Toggle word wrap Toggle overflow ESWITCH_IPV4_TTL_MODIFY_ENABLE매개 변수가 활성화되어1로 설정된 경우 값을0으로 설정하여 비활성화합니다.mstconfig -d <PF PCI BDF> s ESWITCH_IPV4_TTL_MODIFY_ENABLE=0`
[root@compute-1 ~]# mstconfig -d <PF PCI BDF> s ESWITCH_IPV4_TTL_MODIFY_ENABLE=0`Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 노드를 재부팅합니다.
 
3.3. NUMA 노드 토폴로지 검색 링크 복사링크가 클립보드에 복사되었습니다!
배포를 계획할 때 최적의 성능을 위해 Compute 노드의 NUMA 토폴로지를 이해하여 CPU 및 메모리 리소스를 분할해야 합니다. NUMA 정보를 확인하려면 다음 작업 중 하나를 수행합니다.
- 하드웨어 인트로스펙션을 활성화하여 베어 메탈 노드에서 이 정보를 검색합니다.
 - 각 베어 메탈 노드에 로그인하여 정보를 수동으로 수집합니다.
 
하드웨어 인트로스펙션을 통해 NUMA 정보를 검색하려면 먼저 언더클라우드를 설치하고 구성해야 합니다. 언더클라우드 구성에 대한 자세한 내용은 Director 설치 및 사용 가이드를 참조하십시오.
3.4. 하드웨어 인트로스펙션 세부 정보 검색 링크 복사링크가 클립보드에 복사되었습니다!
				기본적으로 Bare Metal 서비스 하드웨어 검사 추가 기능이 활성화되므로 이 기능을 사용하여 오버클라우드 구성의 하드웨어 세부 정보를 검색할 수 있습니다. undercloud.conf 파일의 inspection_extras 매개변수에 대한 자세한 내용은 director 구성을 참조하십시오.
			
				예를 들어 numa_topology 수집기는 하드웨어 검사 추가 기능에 포함되며 각 NUMA 노드에 대해 다음과 같은 정보가 포함되어 있습니다.
			
- RAM(KB)
 - 물리적 CPU 코어 및 시블링 스레드
 - NUMA 노드와 연결된 NIC
 
절차
위에 나열된 정보를 검색하려면 <UUID>를 베어 메탈 노드의 UUID로 바꿔 다음 명령을 완료하십시오.
openstack baremetal introspection data save \ <UUID> | jq .numa_topology
$ openstack baremetal introspection data save \ <UUID> | jq .numa_topologyCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 예제는 베어 메탈 노드에 대해 검색된 NUMA 정보를 보여줍니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 
3.5. NFV BIOS 설정 링크 복사링크가 클립보드에 복사되었습니다!
다음 표에서는 NFV에 필요한 BIOS 설정을 설명합니다.
BIOS에서 SR-IOV 글로벌 및 NIC 설정을 활성화해야 합니다. 그렇지 않으면 SR-IOV 컴퓨팅 노드를 사용한 RHOSP(Red Hat OpenStack Platform) 배포가 실패합니다.
| 매개변수 | 설정 | 
|---|---|
|   
								  |   비활성화됨.  | 
|   
								  |   비활성화됨.  | 
|   
								  |   활성화됨.  | 
|   
								  |   활성화됨.  | 
|   
								  |   활성화됨.  | 
|   
								  |   활성화됨.  | 
|   
								  |   성능.  | 
|   
								  |   활성화됨.  | 
|   
								  |   
								결정적 성능이 필요한 NFV 배포에서 비활성화되어 있습니다.  | 
|   
								  |   VFIO 기능이 필요한 경우 Intel 카드로 활성화됩니다.  | 
|   
								  |   비활성화됨.  | 
				intel_idle 드라이버를 사용하는 프로세서의 경우 Red Hat Enterprise Linux는 BIOS 설정을 무시하고 프로세서 C 상태를 다시 활성화할 수 있습니다.
			
				커널 부팅 명령줄에   을 지정하여 intel_idle_idle 드라이버를 대신 사용하지 않고 intel_idle.max_cstate=0acpi_idle 드라이버를 사용할 수 있습니다.
			
				current_driver 의 콘텐츠를 확인하여 프로세서에서 acpi_idle 드라이버를 사용하고 있는지 확인합니다.
			
cat /sys/devices/system/cpu/cpuidle/current_driver acpi_idle
# cat /sys/devices/system/cpu/cpuidle/current_driver
acpi_idle
Tuned 데몬을 시작하는 데 시간이 걸리기 때문에 드라이버를 변경한 후 약간의 대기 시간이 발생합니다. 그러나 Tuned 로드 후 프로세서는 더 깊은 C-state를 사용하지 않습니다.
4장. NFV 소프트웨어 요구 사항 링크 복사링크가 클립보드에 복사되었습니다!
이 섹션에서는 지원되는 구성 및 드라이버와 NFV에 필요한 서브스크립션 세부 정보에 대해 설명합니다.
4.1. 리포지토리 등록 및 활성화 링크 복사링크가 클립보드에 복사되었습니다!
Red Hat OpenStack Platform을 설치하려면 Red Hat 서브스크립션 관리자를 사용하여 Red Hat OpenStack Platform director를 등록하고 필요한 채널을 구독해야 합니다. 언더클라우드 등록 및 업데이트에 대한 자세한 내용은 언더클라우드 등록 및 Director 설치 및 사용 가이드에서 서브스크립션 연결을 참조하십시오.
절차
메시지가 표시되면 시스템을 Content Delivery Network에 등록하고 고객 포털 사용자 이름과 암호를 입력합니다.
sudo subscription-manager register
[stack@director ~]$ sudo subscription-manager registerCopy to Clipboard Copied! Toggle word wrap Toggle overflow Red Hat OpenStack Platform director의 인타이틀먼트 풀 ID를 확인합니다(예: 다음 명령 및 출력에서 {Pool ID}).
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Red Hat OpenStack Platform 16.2 인타이틀먼트를 연결하려면 다음 명령에
Pool ID값을 포함합니다.sudo subscription-manager attach --pool={Pool-ID}-123456[stack@director ~]$ sudo subscription-manager attach --pool={Pool-ID}-123456Copy to Clipboard Copied! Toggle word wrap Toggle overflow 기본 리포지토리를 비활성화합니다.
subscription-manager repos --disable=*
subscription-manager repos --disable=*Copy to Clipboard Copied! Toggle word wrap Toggle overflow NFV를 사용하여 Red Hat OpenStack Platform에 필요한 리포지토리를 활성화합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 시스템을 업데이트하여 기본 시스템 패키지를 최신 상태로 유지합니다.
sudo dnf update -y sudo reboot
[stack@director ~]$ sudo dnf update -y [stack@director ~]$ sudo rebootCopy to Clipboard Copied! Toggle word wrap Toggle overflow 
오버클라우드 노드를 등록하려면 Advanced Overcloud Customization 가이드의 Ansible 기반 오버클라우드 등록을 참조하십시오.
4.2. NFV 배포에 지원되는 구성 링크 복사링크가 클립보드에 복사되었습니다!
RHOSP(Red Hat OpenStack Platform)는 director를 사용하여 다음과 같은 NFV 배포를 지원합니다.
- SR-IOV(단일 루트 I/O 가상화)
 - 데이터 플레인 개발 키트(OVS-DPDK)를 사용하여 Open vSwitch
 
또한 다음 기능을 사용하여 RHOSP를 배포할 수 있습니다.
구성 가능 서비스 및 사용자 지정 역할 구현.
자세한 내용은 Advanced Overcloud Customization 가이드의 Composable 서비스 및 사용자 지정 역할을 참조하십시오.
동일한 호스트에서 Compute 및 Ceph Storage 서비스를 공동 배치합니다.
자세한 내용은 Hyperconverged Infrastructure Guide 를 참조하십시오.
실시간 컴퓨팅 노드 구성.
자세한 내용은 Configuring the real-time compute in the Configuring the Compute Service for Instance Creation 가이드를 참조하십시오.
하드웨어 오프로드 활성화.
자세한 내용은 OVS 하드웨어 오프로드 구성을 참조하십시오.
4.2.1. OVS 메커니즘 드라이버를 사용하여 RHOSP 배포 링크 복사링크가 클립보드에 복사되었습니다!
OVS 메커니즘 드라이버를 사용하여 RHOSP를 배포합니다.
절차
neutron_driver매개변수가ovs로 설정되도록containers-prepare-parameter.yaml파일을 수정합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 배포 스크립트를 사용하여
/usr/share/openstack-tripleo-heat-templates/environments/services 디렉터리에환경 파일을 추가합니다.neutron-ovs.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 
4.2.2. OVS-DPDK 및 SR-IOV를 사용하여 OVN 배포 링크 복사링크가 클립보드에 복사되었습니다!
OVN과 동일한 노드에 DPDK 및 SRIOV VM을 배포합니다.
절차
ComputeOvsDpdkSriov역할을 생성합니다.openstack overcloud roles generate -o roles_data.yaml Controller ComputeOvsDpdkSriov
openstack overcloud roles generate -o roles_data.yaml Controller ComputeOvsDpdkSriovCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 
							
OS::TripleO::Services::OVNMetadataAgent를 Controller 역할에 추가합니다. resource
_registry 매개변수를 사용하여 OVS-DPDK의 사용자 지정 리소스를추가합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow parameter_defaults 섹션에서 tunnel type 매개 변수 값을 cal
ve로 편집합니다.NeutronTunnelTypes: 'geneve' NeutronNetworkType: ['geneve', 'vlan']
NeutronTunnelTypes: 'geneve' NeutronNetworkType: ['geneve', 'vlan']Copy to Clipboard Copied! Toggle word wrap Toggle overflow 선택 사항: 중앙 집중식 라우팅 모델을 사용하는 경우 VR(Distributed Virtual Routing)을 비활성화합니다.
NeutronEnableDVR: false
NeutronEnableDVR: falseCopy to Clipboard Copied! Toggle word wrap Toggle overflow parameters_defaults에서 브리지 매핑을 설정합니다.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"Copy to Clipboard Copied! Toggle word wrap Toggle overflow computeovsdpdksriov.yaml 파일에서 네트워크 인터페이스를 구성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 배포 스크립트에 다음 yaml 파일을 포함합니다.
- neutron-ovn-dpdk.yaml
 - neutron-ovn-sriov.yaml
 
						OVN(Open Virtual Networking)은 Red Hat OpenStack Platform 16.2의 기본 네트워킹 메커니즘 드라이버입니다. 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 명령에 environments/services/neutron-ovn-sriov.yaml 파일을 마지막 OVN 환경 파일로 포함해야 합니다.
					
4.2.3. OVS TC Flower 오프로드를 사용하여 OVN 배포 링크 복사링크가 클립보드에 복사되었습니다!
OVN과 동일한 노드에 OVS TC Flower 오프로드를 배포합니다.
Red Hat Enterprise Linux Traffic Control( 8.5) 하위 시스템은 연결 추적(conntrack) 도우미 또는 애플리케이션 계층 게이트웨이(ALG)를 지원하지 않습니다. 따라서 ALG를 사용하는 경우 TC Flower 오프로드를 비활성화해야 합니다.
절차
ComputeOvsDpdkSriov역할을 생성합니다.openstack overcloud roles generate -o roles_data.yaml \ ControllerSriov ComputeSriov
openstack overcloud roles generate -o roles_data.yaml \ ControllerSriov ComputeSriovCopy to Clipboard Copied! Toggle word wrap Toggle overflow 배포와 관련된
physical_network매개 변수 설정을 구성합니다.- 
									VLAN의 경우 배포 후 neutron에서 생성한 네트워크의 이름으로 
physical_network매개 변수를 설정합니다.NeutronBridgeMappings매개변수에도 이 값을 사용합니다. ComputeSriovOffloadParameters와 같은 역할별 매개 변수에서매개 변수의 값이OvsHwOffloadtrue인지 확인합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 
- 
									VLAN의 경우 배포 후 neutron에서 생성한 네트워크의 이름으로 
 computeovsdpdksriov.yaml 파일에서 네트워크 인터페이스를 구성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 배포 스크립트에 다음 yaml 파일을 포함합니다.
- ovs-hw-offload.yaml
 neutron-ovn-sriov.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 
4.3. NFV에 지원되는 드라이버 링크 복사링크가 클립보드에 복사되었습니다!
지원되는 드라이버의 전체 목록은 Component, Plug-In 및 Driver Support in Red Hat OpenStack Platform 을 참조하십시오.
NFV를 사용한 Red Hat OpenStack Platform 배포용으로 테스트된 NIC 목록은 NFV 테스트 NIC를 참조하십시오.
4.4. 타사 소프트웨어와의 호환성 링크 복사링크가 클립보드에 복사되었습니다!
Red Hat OpenStack Platform에서 수행하도록 테스트, 지원 및 인증을 거친 제품 및 서비스의 전체 목록은 Red Hat OpenStack Platform 과 호환되는 타사 소프트웨어를 참조하십시오. 제품 버전 및 소프트웨어 카테고리별로 목록을 필터링할 수 있습니다.
Red Hat Enterprise Linux에서 수행하도록 테스트, 지원 및 인증을 거친 제품 및 서비스의 전체 목록은 Red Hat Enterprise Linux 와 호환되는 타사 소프트웨어를 참조하십시오. 제품 버전 및 소프트웨어 카테고리별로 목록을 필터링할 수 있습니다.
5장. NFV 네트워크 고려 사항 링크 복사링크가 클립보드에 복사되었습니다!
언더클라우드 호스트에는 최소한 다음 네트워크가 필요합니다.
- 프로비저닝 네트워크 - 오버클라우드에서 사용할 베어 메탈 시스템을 검색하는 데 도움이 되는 DHCP 및 PXE 부팅 기능을 제공합니다.
 - 외부 네트워크 - 모든 노드에 대한 원격 연결을 위한 별도의 네트워크입니다. 이 네트워크에 연결된 인터페이스에는 정적으로 정의되거나 외부 DHCP 서비스에서 동적으로 생성된 라우팅 가능한 IP 주소가 필요합니다.
 
최소 오버클라우드 네트워크 설정에는 다음과 같은 NIC 구성이 포함됩니다.
- 단일 NIC 구성 - 기본 VLAN과 다른 오버클라우드 네트워크 유형에 서브넷을 사용하는 태그된 VLAN에서 프로비저닝 네트워크용 NIC 1개
 - 듀얼 NIC 구성 - 프로비저닝 네트워크용 NIC 1개와 외부 네트워크용 다른 NIC 1개
 - 듀얼 NIC 구성 - 기본 VLAN에서 provisioning 네트워크용 NIC 1개, 다른 오버클라우드 네트워크 유형에 서브넷을 사용하는 태그가 지정된 VLAN의 NIC 1개입니다.
 - 다중 NIC 구성 - 각 NIC에서 다른 오버클라우드 네트워크 유형에 서브넷 사용
 
네트워킹 요구 사항에 대한 자세한 내용은 Director 설치 및 사용 가이드에서 언더클라우드 네트워킹 준비를 참조하십시오.
6장. SR-IOV 배포 계획 링크 복사링크가 클립보드에 복사되었습니다!
컴퓨팅 노드 하드웨어에 따라 개별 매개변수를 설정하여 NFV에 대한 단일 루트 I/O 가상화(SR-IOV) 배포를 최적화합니다.
SR-IOV 매개변수에 대한 하드웨어 영향을 평가 하려면 NUMA 노드 토폴로지 검색을 참조하십시오.
6.1. SR-IOV 배포를 위한 하드웨어 파티셔닝 링크 복사링크가 클립보드에 복사되었습니다!
SR-IOV를 사용하여 고성능을 달성하려면 호스트와 게스트 간에 리소스를 분할합니다.
그림 6.1. NUMA 노드 토폴로지
				일반적인 토폴로지에는 듀얼 소켓 컴퓨팅 노드의 NUMA 노드당 14개의 코어가 포함됩니다. HTC(하이퍼 스레딩) 및 비 HT 코어가 모두 지원됩니다. 각 코어에는 두 개의 시블링 스레드가 있습니다. 하나의 코어는 각 NUMA 노드의 호스트 전용입니다. VNF(가상 네트워크 기능)는 SR-IOV 인터페이스 본딩을 처리합니다. 모든 인터럽트 요청(IRQ)은 호스트 코어에서 라우팅됩니다. VNF 코어는 VNF 전용입니다. 다른 VNF와 격리하고 호스트에서 격리를 제공합니다. 각 VNF는 단일 NUMA 노드에서 리소스를 사용해야 합니다. VNF에서 사용하는 SR-IOV NIC도 동일한 NUMA 노드와 연결되어야 합니다. 이 토폴로지에는 가상화 오버헤드가 없습니다. 호스트, OpenStack Networking(neutron) 및 계산(nova) 구성 매개 변수가 단일 파일에 노출되어 쉽고 일관성이 유지되며 적절한 격리에 치명적이며 선점으로 인한 패킷 손실이 발생하지 않습니다. 호스트 및 가상 머신 격리는 분리된 CPU 목록에 따라 부팅 매개 변수 및 모든 Red Hat OpenStack Platform 수정을 정의하는 tuned 프로필에 따라 달라집니다.
			
6.2. NFV SR-IOV 배포 토폴로지 링크 복사링크가 클립보드에 복사되었습니다!
				다음 이미지에는 각각 mgt 로 표시된 관리 인터페이스와 데이터 플레인 인터페이스가 있는 두 개의 VNF가 있습니다. 관리 인터페이스는 ssh 액세스를 관리합니다. VNF는 DPDK 라이브러리를 사용하여 데이터 플레인 인터페이스를 결합하므로, 데이터 플레인 인터페이스는 VNF를 DPDK에 바인딩하여 고가용성을 보장합니다. 이미지에 중복성을 위한 두 개의 프로바이더 네트워크도 있습니다. 컴퓨팅 노드에는 VNF 관리와 Red Hat OpenStack Platform API 관리 간에 결합되고 공유되는 두 개의 일반 NIC가 있습니다.
			
그림 6.2. NFV SR-IOV 토폴로지
이 이미지는 애플리케이션 수준에서 DPDK를 사용하는 VNF를 나타내며 패브릭 구성에 따라 가용성 또는 성능을 향상시키기 위해 SR-IOV VF(가상 기능) 및 PF(물리 기능)에 액세스할 수 있습니다. DPDK는 성능을 개선하는 반면 VF/PF DPDK 본딩은 페일오버 및 고가용성을 지원합니다. VNF 벤더는 DPDK 폴링 모드 드라이버(PMD)가 VF/PF로 노출되는 SR-IOV 카드를 지원하는지 확인해야 합니다. 관리 네트워크는 OVS를 사용하므로 VNF는 표준 virtIO 드라이버를 사용하는 mgmt 네트워크 장치를 확인합니다. 해당 장치를 사용하여 처음에 VNF에 연결하고 DPDK 애플리케이션에서 두 개의 VF/PF를 결합하는지 확인할 수 있습니다.
6.3. HCI가 없는 NFV SR-IOV의 토폴로지 링크 복사링크가 클립보드에 복사되었습니다!
아래 이미지에서 NFV의 하이퍼컨버지드 인프라(HCI) 없이 SR-IOV의 토폴로지를 관찰합니다. 1Gbps NIC와 director 노드가 있는 compute 및 controller 노드로 구성됩니다.
그림 6.3. HCI 없는 NFV SR-IOV 토폴로지
7장. SR-IOV 기술 배포 링크 복사링크가 클립보드에 복사되었습니다!
Red Hat OpenStack Platform NFV 배포에서는 가상 리소스를 통해 인스턴스에서 직접 액세스할 수 있는 경우 SR-IOV(단일 루트 I/O 가상화)로 더 높은 성능을 얻을 수 있습니다.
7.1. SR-IOV 구성 링크 복사링크가 클립보드에 복사되었습니다!
단일 루트 I/O 가상화(SR-IOV)를 사용하여 RHOSP(Red Hat OpenStack Platform)를 배포하려면 인스턴스에 직접 액세스를 요청할 수 있는 SR-IOV 기능이 있는 공유 PCIe 리소스를 구성합니다.
다음 CPU 할당, 메모리 할당, NIC 구성은 예제이며 사용 사례와 다를 수 있습니다.
사전 요구 사항
오버클라우드 배포 전에 언더클라우드를 설치 및 구성하는 방법에 대한 자세한 내용은 Director 설치 및 사용 가이드를 참조하십시오.
참고director heat 템플릿이 수정하는
/etc/tuned/cpu-partitioning-variables.conf의 값을 수동으로 편집하지 마십시오.- 
						언더클라우드 호스트 및 
stack사용자의 인증 정보에 액세스합니다. 
절차
- 
						
stack사용자로 언더클라우드에 로그인합니다. stackrc파일을 소싱합니다.source ~/stackrc
[stack@director ~]$ source ~/stackrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow Controller및ComputeSriov역할을 포함하는roles_data_compute_sriov.yaml이라는 새 역할 데이터 파일을 생성합니다.openstack overcloud roles \ generate -o /home/stack/templates/roles_data_compute_sriov.yaml \ Controller ComputeSriov
(undercloud)$ openstack overcloud roles \ generate -o /home/stack/templates/roles_data_compute_sriov.yaml \ Controller ComputeSriovCopy to Clipboard Copied! Toggle word wrap Toggle overflow ComputeSriov는 기본 컴퓨팅 서비스 외에도NeutronSriovAgent및NeutronSriovHostConfig서비스를 포함하는 RHOSP 설치와 함께 제공되는 사용자 지정 역할입니다.SR-IOV 컨테이너를 준비하려면
overcloud_images.yaml파일을 생성할 때neutron-sriov.yaml및roles_data_compute_sriov.yaml파일을 포함합니다.sudo openstack tripleo container image prepare \ --roles-file ~/templates/roles_data_compute_sriov.yaml \ -e /usr/share/openstack-tripleo-heat-templates/environments/services/neutron-sriov.yaml \ -e ~/containers-prepare-parameter.yaml \ --output-env-file=/home/stack/templates/overcloud_images.yaml
$ sudo openstack tripleo container image prepare \ --roles-file ~/templates/roles_data_compute_sriov.yaml \ -e /usr/share/openstack-tripleo-heat-templates/environments/services/neutron-sriov.yaml \ -e ~/containers-prepare-parameter.yaml \ --output-env-file=/home/stack/templates/overcloud_images.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 컨테이너 이미지 준비에 대한 자세한 내용은 Director 설치 및 사용 가이드에서 컨테이너 이미지 준비를 참조하십시오.
환경 파일 디렉터리에
/usr/share/openstack-tripleo-heat-templates/environments/network-environment.yaml파일의 사본을 생성합니다.cp /usr/share/openstack-tripleo-heat-templates/environments/network-environment.yaml /home/stack/templates/network-environment-sriov.yaml
$ cp /usr/share/openstack-tripleo-heat-templates/environments/network-environment.yaml /home/stack/templates/network-environment-sriov.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow network-environment-sriov.yaml파일에서parameter_defaults아래에 다음 매개변수를 추가하여 클러스터 및 하드웨어 구성에 대한 SR-IOV 노드를 구성합니다.NeutronNetworkType: 'vlan' NeutronNetworkVLANRanges: - tenant:22:22 - tenant:25:25 NeutronTunnelTypes: ''NeutronNetworkType: 'vlan' NeutronNetworkVLANRanges: - tenant:22:22 - tenant:25:25 NeutronTunnelTypes: ''Copy to Clipboard Copied! Toggle word wrap Toggle overflow 각 PCI 장치 유형의
vendor_id및product_id를 확인하려면 PCI 카드가 있는 물리적 서버에서 다음 명령 중 하나를 사용합니다.배포된 오버클라우드에서
vendor_id및product_id를 반환하려면 다음 명령을 사용합니다.lspci -nn -s <pci_device_address>
# lspci -nn -s <pci_device_address> 3b:00.0 Ethernet controller [0200]: Intel Corporation Ethernet Controller X710 for 10GbE SFP+ [<vendor_id>: <product_id>] (rev 02)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 오버클라우드를 아직 배포하지 않은 경우 PF(물리 기능)의
vendor_id및product_id를 반환하려면 다음 명령을 사용합니다.openstack baremetal introspection data save <baremetal_node_name> | jq '.inventory.interfaces[] | .name, .vendor, .product'
(undercloud) [stack@undercloud-0 ~]$ openstack baremetal introspection data save <baremetal_node_name> | jq '.inventory.interfaces[] | .name, .vendor, .product'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 
network-environment-sriov.yaml파일에서 SR-IOV 컴퓨팅 노드에 대한 역할별 매개변수를 구성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고NovaVcpuPinSet매개변수는 더 이상 사용되지 않으며 전용 고정된 워크로드에서NovaComputeCpuDedicatedSet으로 교체됩니다.network-environment-sriov.yaml파일에서 SR-IOV 컴퓨팅 노드의 PCI 패스스루 장치를 구성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 
								
<vendor_id>를 PCI 장치의 공급업체 ID로 바꿉니다. - 
								
<product_id>를 PCI 장치의 제품 ID로 바꿉니다. - 
								
<NIC_address>를 PCI 장치의 주소로 바꿉니다.address매개변수를 구성하는 방법에 대한 자세한 내용은 Compute Service for Instance Creation 가이드의 NovaPCIPassthrough 구성 지침을 참조하십시오. <physical_network>를 PCI 장치가 있는 물리적 네트워크의 이름으로 바꿉니다.참고NIC의 장치 이름이 변경될 수 있으므로 PCI 패스스루를 구성할 때
devname매개변수를 사용하지 마십시오. PF에서 네트워킹 서비스(neutron) 포트를 생성하려면NovaPCIPassthrough에서vendor_id 및 PCI 장치 주소를 지정하고_id, product--vnic-type direct-physical옵션을 사용하여 포트를 만듭니다. 가상 기능(VF)에서 네트워킹 서비스 포트를 생성하려면NovaPCIPassthrough에서vendor_id및product_id를 지정하고--vnic-type direct옵션을 사용하여 포트를 생성합니다.vendor_id및product_id매개변수 값은 물리적 기능(PF)과 VF 컨텍스트마다 다를 수 있습니다.NovaPCIPassthrough를 구성하는 방법에 대한 자세한 내용은 Configuring the Compute Service for Instance Creation 가이드의 NovaPCIPassthrough 구성 지침을 참조하십시오.
- 
								
 compute.yaml네트워크 구성 템플릿에서 SR-IOV가 활성화된 인터페이스를 구성합니다. SR-IOV VF를 생성하려면 인터페이스를 독립 실행형 NIC로 구성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고numvfs매개변수는 네트워크 구성 템플릿의NeutronSriovNumVFs매개변수를 대체합니다. Red Hat은 배포 후NeutronSriovNumVFs매개변수 또는numvfs매개 변수의 수정을 지원하지 않습니다. 배포 후 매개변수를 수정하면 해당 PF에 SR-IOV 포트가 있는 실행 중인 인스턴스에 대한 중단이 발생할 수 있습니다. 이 경우 SR-IOV PCI 장치를 다시 사용하려면 이러한 인스턴스를 하드 재부팅해야 합니다.기본 필터 목록에
AggregateInstanceExtraSpecsFilter값이 포함되어 있는지 확인합니다.NovaSchedulerDefaultFilters: ['AvailabilityZoneFilter','ComputeFilter','ComputeCapabilitiesFilter','ImagePropertiesFilter','Serve rGroupAntiAffinityFilter','ServerGroupAffinityFilter','PciPassthroughFilter','AggregateInstanceExt raSpecsFilter']
NovaSchedulerDefaultFilters: ['AvailabilityZoneFilter','ComputeFilter','ComputeCapabilitiesFilter','ImagePropertiesFilter','Serve rGroupAntiAffinityFilter','ServerGroupAffinityFilter','PciPassthroughFilter','AggregateInstanceExt raSpecsFilter']Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 
						
overcloud_deploy.sh스크립트를 실행합니다. 
7.2. NIC 파티셔닝 구성 링크 복사링크가 클립보드에 복사되었습니다!
RHOSP(Red Hat OpenStack Platform) 관리 네트워크 및 공급자 네트워크에 대해 SR-IOV(Single Root I/O Virtualization) 가상 기능(VF)을 구성하여 각 호스트에 필요한 NIC 수를 줄일 수 있습니다. 단일 고속 NIC를 여러 VF로 분할하면 컨트롤 및 데이터 플레인 트래픽 모두에 NIC를 사용할 수 있습니다. 이 기능은 Intel Fortville NIC 및 Mellanox CX-5 NIC에서 검증되었습니다.
절차
- 선택한 역할에 대한 NIC 구성 파일을 엽니다.
 sriov_pf인터페이스 유형 항목을 추가하여 호스트에서 사용할 수 있는 물리적 기능을 구성합니다.- type: sriov_pf name: <interface_name> use_dhcp: false numvfs: <number_of_vfs> promisc: <true/false>- type: sriov_pf name: <interface_name> use_dhcp: false numvfs: <number_of_vfs> promisc: <true/false>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 
								& 
lt;interface_name>을 인터페이스 이름으로 바꿉니다. - 
								& 
lt;number_of_vfs>를 VF 수로 바꿉니다. - 
								선택 사항: 무차별 모드를 설정하려면 < 
>를 true로 교체하거나true/falsefalse를 사용하여 무차별 모드를 비활성화합니다. 기본값은true입니다. 
참고numvfs매개변수는 네트워크 구성 템플릿의NeutronSriovNumVFs매개변수를 대체합니다. Red Hat은 배포 후NeutronSriovNumVFs매개변수 또는numvfs매개 변수의 수정을 지원하지 않습니다. 배포 후 매개 변수를 수정하면 해당 PF(물리적 기능)에 SR-IOV 포트가 있는 실행 중인 인스턴스가 중단될 수 있습니다. 이 경우 SR-IOV PCI 장치를 다시 사용하려면 이러한 인스턴스를 하드 재부팅해야 합니다.- 
								& 
 sriov_vf인터페이스 유형 항목을 추가하여 호스트에서 사용할 수 있는 가상 기능을 구성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 
								
<bond_type>을 필수 본딩 유형(예:linux_bond)으로 바꿉니다.ovs_bond와 같은 다른 본딩의 본딩에 VLAN 태그를 적용할 수 있습니다. <bonding_option>을 지원되는 다음 본딩 모드 중 하나로 바꿉니다.- 
										
active-backup balance-slb참고LACP 본딩은 지원되지 않습니다.
- 
										
 members섹션에서 결합할 인터페이스 유형으로sriov_vf를 지정합니다.참고OVS 브릿지를 인터페이스 유형으로 사용하는 경우
sriov_pf장치의sriov_vf에서 하나의 OVS 브리지만 구성할 수 있습니다. 단일sriov_pf장치의 OVS 브리지가 두 개 이상 있으면 VF 간에 패킷 중복이 발생하고 성능이 저하될 수 있습니다.- 
								
<pf_device_name>을 PF 장치의 이름으로 바꿉니다. - 
								
linux_bond를 사용하는 경우 VLAN 태그를 할당해야 합니다. VLAN 태그를 설정하는 경우 단일sriov_pf장치와 연결된 각 VF에 대해 고유한 태그를 설정해야 합니다. 동일한 VLAN에 동일한 PF의 두 개의 VF가 있을 수 없습니다. - 
								
<vf_id>를 VF의 ID로 바꿉니다. 적용 가능한 VF ID 범위는 0에서 시작되고 최대 VF 수에서 1을 뺀 값으로 끝납니다. - 스푸핑 검사를 비활성화합니다.
 - 
								VF를 통해 
linux_bond의sriov_vf에 VLAN 태그를 적용합니다. 
- 
								
 인스턴스에 VF를 예약하려면 환경 파일에
NovaPCIPassthrough매개변수를 포함합니다. 예를 들면 다음과 같습니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow director는 호스트 VF를 식별하고 인스턴스에 사용할 수 있는 VF의 PCI 주소를 파생합니다.
NIC 파티셔닝이 필요한 모든 노드에서
IOMMU를 활성화합니다. 예를 들어 컴퓨팅 노드에 NIC 파티셔닝을 사용하려면 해당 역할에KernelArgs매개변수를 사용하여 IOMMU를 활성화합니다.parameter_defaults: ComputeParameters: KernelArgs: "intel_iommu=on iommu=pt"parameter_defaults: ComputeParameters: KernelArgs: "intel_iommu=on iommu=pt"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고KernelArgs매개변수를 역할 구성에 처음 추가하면 오버클라우드 노드가 자동으로 재부팅됩니다. 필요한 경우 노드 자동 재부팅을 비활성화하고 대신 각 오버클라우드 배포 후 노드를 수동으로 재부팅할 수 있습니다.자세한 내용은 Configuring the manual node reboot to define KernelArgs in the Configuring the Compute Service for Instance Creation 가이드를 참조하십시오.
다른 환경 파일과 함께 스택에 역할 파일 및 환경 파일을 추가하고 오버클라우드를 배포합니다.
openstack overcloud deploy --templates \ -r os-net-config.yaml
(undercloud)$ openstack overcloud deploy --templates \ -r os-net-config.yaml -e [your environment files] \ -e /home/stack/templates/<compute_environment_file>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 
검증
오버클라우드 컴퓨팅 노드에
heat-admin으로 로그인하고 VF 수를 확인합니다.[heat-admin@overcloud-compute-0 heat-admin]$ sudo cat /sys/class/net/p4p1/device/sriov_numvfs 10 [heat-admin@overcloud-compute-0 heat-admin]$ sudo cat /sys/class/net/p4p2/device/sriov_numvfs 10
[heat-admin@overcloud-compute-0 heat-admin]$ sudo cat /sys/class/net/p4p1/device/sriov_numvfs 10 [heat-admin@overcloud-compute-0 heat-admin]$ sudo cat /sys/class/net/p4p2/device/sriov_numvfs 10Copy to Clipboard Copied! Toggle word wrap Toggle overflow OVS 연결을 표시합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow OVS-DPDK SR-IOV 컴퓨팅 노드에
heat-admin으로 로그인하고 Linux 본딩을 확인합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow OVS 본딩을 나열합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 
				NovaPCIPassthrough 를 사용하여 인스턴스에 VF를 전달하는 경우 SR-IOV 용 인스턴스를 배포하여 테스트합니다.
			
7.3. NIC 파티션 구성 예 링크 복사링크가 클립보드에 복사되었습니다!
VF를 통한 Linux 본딩
					다음 예제에서는 VF를 통한 Linux 본딩을 구성하고 스푸핑 검사를 비활성화하고 VLAN 태그를 sriov_vf 에 적용합니다.
				
VF의 OVS 브리지
다음 예제는 VF에서 OVS 브리지를 구성합니다.
VF의 OVS 사용자 브릿지
					다음 예제는 VF에서 OVS 사용자 브릿지를 구성하고 VLAN 태그를 ovs_user_bridge 에 적용합니다.
				
7.4. OVS 하드웨어 오프로드 구성 링크 복사링크가 클립보드에 복사되었습니다!
OVS 하드웨어 오프로드 구성 절차는 SR-IOV를 구성하는 것과 동일한 여러 단계를 공유합니다.
					Red Hat OpenStack Platform 16.2.3 이후 OVS 하드웨어 오프로드 및 ML2/OVS를 사용하여 컴퓨팅 노드에서 트래픽을 오프로드하려면 openvswitch_agent.ini 구성 파일에서 disable_packet_marking 매개변수를 true 로 설정한 다음 neutron_ovs_agent 컨테이너를 다시 시작해야 합니다.
				
+
cat /var/lib/config-data/puppet-generated/neutron/\ etc/neutron/plugins/ml2/openvswitch_agent.ini [ovs] disable_packet_marking=True
cat /var/lib/config-data/puppet-generated/neutron/\
etc/neutron/plugins/ml2/openvswitch_agent.ini
  [ovs]
  disable_packet_marking=True
프로세스
Compute 역할을 기반으로 OVS 하드웨어 오프로드에 대한 오버클라우드 역할을 생성합니다.
openstack overcloud roles generate -o roles_data.yaml \ Controller Compute:ComputeOvsHwOffload
openstack overcloud roles generate -o roles_data.yaml \ Controller Compute:ComputeOvsHwOffloadCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 
						선택 사항: 
ComputeOvsHwOffload역할의HostnameFormatDefault: '%stackname%-compute-%index%'이름을 변경합니다. - 
						값이 
true인 역할별 매개변수 아래에OvsHwOffload매개변수를 추가합니다. - 
						iptables/hybrid 방화벽 드라이버 구현을 사용하도록 neutron을 구성하려면 다음 행을 포함합니다. 
NeutronOVSFirewallDriver: iptables_hybrid.NeutronOVSFirewallDriver에 대한 자세한 내용은 Advanced Overcloud Customization Guide에서 Open vSwitch Firewall 사용을 참조하십시오. 환경과 일치하도록
physical_network매개변수를 구성합니다.- 
								VLAN의 경우 배포 후 
physical_network매개변수를 neutron에서 생성한 네트워크의 이름으로 설정합니다. 이 값은NeutronBridgeMappings에도 있어야 합니다. VXLAN의 경우
physical_network매개 변수를null로 설정합니다.예제:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 
								& 
lt;vendor-id>를 물리적 NIC의 벤더 ID로 바꿉니다. - 
								& 
lt;product-id>를 NIC VF의 제품 ID로 바꿉니다. &
lt;address>를 물리적 NIC의 주소로 바꿉니다.NovaPCIPassthrough를 구성하는 방법에 대한 자세한 내용은 Configuring the Compute Service for Instance Creation 가이드의 NovaPCIPassthrough 구성 지침을 참조하십시오.
- 
								VLAN의 경우 배포 후 
 기본 필터 목록에
NUMATopologyFilter가 포함되어 있는지 확인합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고선택 사항: Mellanox ConnectX5 NIC를 사용하여 RHOSP 16.2에서 OVS Hardware Offload 문제를 해결하고 구성하는 방법에 대한 자세한 내용은 Hardware Offload 문제 해결을 참조하십시오.
compute-sriov.yaml구성 파일에서 하드웨어 오프로드를 위한 하나 이상의 네트워크 인터페이스를 구성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고- 
									Open vSwitch 하드웨어 오프로드를 구성할 때 
NeutronSriovNumVFs매개변수를 사용하지 마십시오. 가상 함수 수는os-net-config에서 사용하는 네트워크 구성 파일의numvfs매개 변수를 사용하여 지정됩니다. Red Hat은 업데이트 또는 재배포 중에numvfs설정을 수정하는 것을 지원하지 않습니다. - 
									VXLAN과 같은 터널 끝점이 드라이버 제한으로 인해 트래픽을 전달하지 않도록 하기 때문에 Mellanox 네트워크 인터페이스를 nic-config 인터페이스 유형 
ovs-vlan으로 구성하지 마십시오. 
- 
									Open vSwitch 하드웨어 오프로드를 구성할 때 
 overcloud deploy명령에ovs-hw-offload.yaml파일을 포함합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 
검증
PCI 장치가
switchdev모드에 있는지 확인합니다.devlink dev eswitch show pci/0000:03:00.0
# devlink dev eswitch show pci/0000:03:00.0 pci/0000:03:00.0: mode switchdev inline-mode none encap enableCopy to Clipboard Copied! Toggle word wrap Toggle overflow OVS에서 오프로드가 활성화되어 있는지 확인합니다.
ovs-vsctl get Open_vSwitch . other_config:hw-offload
# ovs-vsctl get Open_vSwitch . other_config:hw-offload “true”Copy to Clipboard Copied! Toggle word wrap Toggle overflow 
7.5. OVS 하드웨어 오프로드의 튜닝 예 링크 복사링크가 클립보드에 복사되었습니다!
최적의 성능을 위해서는 추가 구성 단계를 완료해야 합니다.
성능 향상을 위해 각 네트워크 인터페이스의 채널 수 조정
					채널에는 인터럽트 요청(IRQ) 및 IRQ를 트리거하는 대기열 세트가 포함됩니다. mlx5_core 드라이버를 dev 모드로 설정하면 mlx5_core 드라이버가 기본적으로 하나의 결합된 채널로 설정되어 최적의 성능을 제공하지 않을 수 있습니다.
				
절차
PF 대표자에서 다음 명령을 입력하여 호스트에 사용 가능한 CPU 수를 조정합니다. $(nproc)를 사용할 수 있는 CPU 수로 바꿉니다.
sudo ethtool -L enp3s0f0 combined $(nproc)
$ sudo ethtool -L enp3s0f0 combined $(nproc)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 
CPU 고정
NUMA 간 작업의 성능 저하를 방지하려면 동일한 NUMA 노드에서 NIC, 해당 애플리케이션, VF 게스트 및 OVS를 찾습니다. 자세한 내용은 Compute Service for Instance Creation 가이드의 컴퓨팅 노드에서 CPU 고정 구성 을 참조하십시오.
7.6. OVS 하드웨어 오프로드의 구성 요소 구성 링크 복사링크가 클립보드에 복사되었습니다!
Mellanox 스마트 NIC를 사용하여 OVS HW Offload의 구성 요소를 구성하고 해결하기 위한 참조입니다.
Nova
					NUMATopologyFilter 및 DerivePciWhitelistEnabled 매개변수와 함께 NovaPCIPassthrough 필터를 사용하도록 Nova 스케줄러를 구성합니다. OVS HW 오프로드를 활성화하면 Nova 스케줄러는 인스턴스 생성을 위해 SR-IOV 패스와 유사하게 작동합니다.
				
Neutron
					OVS HW 오프로드를 활성화하면 devlink cli 툴을 사용하여 NIC e-switch 모드를 dev로 설정합니다. Switchdev 모드는 VF에 매핑되는 NIC에 대표 포트를 설정합니다.
				
절차
switchdev-enabled NIC에서 포트를 할당하려면 admin 사용자로 로그인하고,binding-profile값을 사용하여 neutron 포트를 생성하고 포트 보안을 비활성화합니다.openstack port create --network private --vnic-type=direct --binding-profile '{"capabilities": ["switchdev"]}' direct_port1 --disable-port-security$ openstack port create --network private --vnic-type=direct --binding-profile '{"capabilities": ["switchdev"]}' direct_port1 --disable-port-securityCopy to Clipboard Copied! Toggle word wrap Toggle overflow 인스턴스를 생성할 때 이 포트 정보를 전달합니다.
대표 포트를 인스턴스 VF 인터페이스와 연결하고 일회성 OVS 데이터 경로 처리를 위해 대표 포트를 OVS 브리지
br-int에 연결합니다. VF 포트는 물리적 "패치 패널" 프런트 엔드의 소프트웨어 버전과 같이 작동합니다.새 인스턴스 생성에 대한 자세한 내용은 SR-IOV 용 인스턴스 배포를 참조하십시오.
OVS
하드웨어 오프로드가 구성된 환경에서 첫 번째 패킷은 OVS 커널 경로를 통과하고 이 패킷 이동은 인스턴스 트래픽에 대한 들어오고 나가는 트래픽에 대한 ml2 OVS 규칙을 설정합니다. 트래픽 스트림의 흐름이 설정되면 OVS는 트래픽 제어(TC) 흐름 유틸리티를 사용하여 NIC 하드웨어에서 이러한 흐름을 푸시합니다.
절차
director를 사용하여 OVS에 다음 설정을 적용합니다.
sudo ovs-vsctl set Open_vSwitch . other_config:hw-offload=true
$ sudo ovs-vsctl set Open_vSwitch . other_config:hw-offload=trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow - HW 오프로드를 활성화하려면 다시 시작합니다.
 
트래픽 제어(TC) 하위 시스템
					hw-offload 플래그를 활성화하면 OVS는 TC 데이터 경로를 사용합니다. TC Flower는 하드웨어에서 데이터 경로 흐름을 쓰는 iproute2 유틸리티입니다. 이렇게 하면 중복성을 위해 하드웨어 및 소프트웨어 데이터 경로에서 흐름이 프로그램화됩니다.
				
프로세스
다음 구성을 적용합니다.
tc-policy를 명시적으로 구성하지 않는 경우 기본 옵션입니다.sudo ovs-vsctl set Open_vSwitch . other_config:tc-policy=none
$ sudo ovs-vsctl set Open_vSwitch . other_config:tc-policy=noneCopy to Clipboard Copied! Toggle word wrap Toggle overflow - OVS를 다시 시작합니다.
 
NIC PF 및 VF 드라이버
Mlx5_core는 Mellanox ConnectX-5 NIC의 PF 및 VF 드라이버입니다. mlx5_core 드라이버는 다음 작업을 수행합니다.
- 하드웨어에서 라우팅 테이블을 생성합니다.
 - 네트워크 흐름 관리를 관리합니다.
 - 
						이더넷 스위치 장치 드라이버 모델인 
switchdev를 구성합니다. - 블록 장치를 생성합니다.
 
절차
다음
devlink명령을 사용하여 PCI 장치의 모드를 쿼리합니다.sudo devlink dev eswitch set pci/0000:03:00.0 mode switchdev sudo devlink dev eswitch show pci/0000:03:00.0
$ sudo devlink dev eswitch set pci/0000:03:00.0 mode switchdev $ sudo devlink dev eswitch show pci/0000:03:00.0 pci/0000:03:00.0: mode switchdev inline-mode none encap enableCopy to Clipboard Copied! Toggle word wrap Toggle overflow 
NIC 펌웨어
NIC 펌웨어는 다음 작업을 수행합니다.
- 라우팅 테이블 및 규칙을 유지합니다.
 - 테이블의 파이프라인을 수정합니다.
 - 하드웨어 리소스를 관리합니다.
 - VF를 생성합니다.
 
펌웨어는 최적의 성능을 위해 드라이버와 함께 작동합니다.
NIC 펌웨어는 비휘발성이며 재부팅 후 지속되지만 런타임 중에 구성을 수정할 수 있습니다.
절차
인터페이스 및 대표자에 다음 구성을 적용하여 TC Flower가 포트 수준에서 흐름 프로그래밍을 푸시하는지 확인합니다.
sudo ethtool -K enp3s0f0 hw-tc-offload on
$ sudo ethtool -K enp3s0f0 hw-tc-offload onCopy to Clipboard Copied! Toggle word wrap Toggle overflow 
					펌웨어를 계속 업데이트했는지 확인합니다.Yum 또는 dnf 업데이트가 펌웨어 업데이트를 완료하지 못할 수 있습니다. 자세한 내용은 공급 업체 설명서를 참조하십시오.
				
7.7. OVS 하드웨어 오프로드 문제 해결 링크 복사링크가 클립보드에 복사되었습니다!
사전 요구 사항
- Linux Kernel 4.13 이상
 - OVS 2.8 이상
 - RHOSP 12 이상
 - iproute 4.12 또는 최신 버전
 - Mellanox NIC 펌웨어(예: FW ConnectX-5 16.21.0338 이상)
 
지원되는 사전 요구 사항에 대한 자세한 내용은 Red Hat Knowledgebase 솔루션 Network Adapter Fast Datapath Feature Support Matrix 를 참조하십시오.
OVS HW 오프로드 배포에서 네트워크 구성
HW 오프로드 배포에서 요구 사항에 따라 네트워크 구성에 대해 다음 시나리오 중 하나를 선택할 수 있습니다.
- 본딩에 연결된 동일한 인터페이스 세트를 사용하거나 유형마다 다른 NIC 세트를 사용하여 VXLAN 및 VLAN의 기본 게스트 VM을 사용할 수 있습니다.
 - Linux 본딩을 사용하여 Mellanox NIC의 두 포트를 결합할 수 있습니다.
 - Mellanox Linux 본딩의 VLAN 인터페이스에서 테넌트 VXLAN 네트워크를 호스팅할 수 있습니다.
 
개별 NIC 및 본딩이 ovs-bridge의 멤버인지 확인합니다.
아래 네트워크 구성을 참조하십시오.
지원되는 본딩 구성은 다음과 같습니다.
- active-backup - mode=1
 - active-active 또는 balance-xor - mode=2
 - 802.3ad (LACP) - mode=4
 
다음 본딩 구성은 지원되지 않습니다.
- xmit_hash_policy=layer3+4
 
인터페이스 구성 확인
다음 절차에 따라 인터페이스 구성을 확인합니다.
절차
- 
						배포하는 동안 호스트 네트워크 구성 툴 
os-net-config를 사용하여hw-tc-offload를 활성화합니다. - 
						컴퓨팅 노드를 재부팅할 때마다 
sriov_config서비스에서hw-tc-offload를 활성화합니다. 본딩에 연결된 NIC의
hw-tc-offload매개변수를on으로 설정합니다.ethtool -k ens1f0 | grep tc-offload
[root@overcloud-computesriov-0 ~]# ethtool -k ens1f0 | grep tc-offload hw-tc-offload: onCopy to Clipboard Copied! Toggle word wrap Toggle overflow 
인터페이스 모드 확인
다음 절차에 따라 인터페이스 모드를 확인합니다.
절차
- 
						HW 오프로드에 사용하는 인터페이스에 대해 eswitch 모드를 
switchdev로 설정합니다. - 
						호스트 네트워크 구성 툴 
os-net-config를 사용하여 배포 중에eswitch를 활성화합니다. 컴퓨팅 노드를 재부팅할 때마다
sriov_config서비스에서eswitch를 활성화합니다.devlink dev eswitch show pci/$(ethtool -i ens1f0 | grep bus-info | cut -d ':' -f 2,3,4 | awk '{$1=$1};1')[root@overcloud-computesriov-0 ~]# devlink dev eswitch show pci/$(ethtool -i ens1f0 | grep bus-info | cut -d ':' -f 2,3,4 | awk '{$1=$1};1')Copy to Clipboard Copied! Toggle word wrap Toggle overflow 
					PF 인터페이스의 드라이버는 "mlx5e_rep" 로 설정되어 있으며, 이는 e-switch uplink 포트의 대표자임을 나타냅니다. 이는 기능에 영향을 미치지 않습니다.
				
OVS에서 오프로드 상태 확인
다음 절차를 사용하여 OVS의 오프로드 상태를 확인합니다.
컴퓨팅 노드에서 OVS에서 하드웨어 오프로드를 활성화합니다.
ovs-vsctl get Open_vSwitch . other_config:hw-offload
[root@overcloud-computesriov-0 ~]# ovs-vsctl get Open_vSwitch . other_config:hw-offload "true"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 
VF 대표 포트의 이름 확인
					VF 대표 포트의 일관된 이름을 유지하기 위해 os-net-config 는 udev 규칙을 사용하여 <PF-name>_<VF_id> 형식의 포트 이름을 변경합니다.
				
절차
배포 후 VF 대표 포트의 이름이 올바르게 지정되었는지 확인합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 
네트워크 트래픽 흐름 검사
HW 오프로드 네트워크 흐름은 애플리케이션별 ASIC(Integrated circuit) 칩을 사용하는 물리적 스위치 또는 라우터와 유사한 방식으로 작동합니다. 스위치 또는 라우터의 Cryostat 쉘에 액세스하여 라우팅 테이블 및 기타 디버깅을 검사할 수 있습니다. 다음 절차에서는 Cumulus Linux 스위치의 Broadcom 칩셋을 예로 사용합니다. 환경에 적합한 값을 바꿉니다.
절차
Broadcom 칩 테이블 콘텐츠를 가져오려면
bcmcmd명령을 사용합니다.root@dni-7448-26:~# cl-bcmcmd l2 show mac=00:02:00:00:00:08 vlan=2000 GPORT=0x2 modid=0 port=2/xe1 mac=00:02:00:00:00:09 vlan=2000 GPORT=0x2 modid=0 port=2/xe1 Hit
root@dni-7448-26:~# cl-bcmcmd l2 show mac=00:02:00:00:00:08 vlan=2000 GPORT=0x2 modid=0 port=2/xe1 mac=00:02:00:00:00:09 vlan=2000 GPORT=0x2 modid=0 port=2/xe1 HitCopy to Clipboard Copied! Toggle word wrap Toggle overflow TC(트래픽 제어) 계층을 검사합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 
						이 출력에서 
in_hw플래그 및 통계를 검사합니다.하드웨어라는 용어는 하드웨어가 네트워크 트래픽을 처리함을 나타냅니다.tc-policy=none을 사용하는 경우 이 출력 또는 tcpdump를 확인하여 하드웨어 또는 소프트웨어가 패킷을 처리할 때 조사할 수 있습니다. 드라이버가 패킷을 오프로드할 수 없는 경우dmesg또는ovs-vswitch.log에서 해당 로그 메시지를 볼 수 있습니다. 예: Mellanox의 경우 로그 항목은
dmesg의 syndrome 메시지와 유사합니다.[13232.860484] mlx5_core 0000:3b:00.0: mlx5_cmd_check:756:(pid 131368): SET_FLOW_TABLE_ENTRY(0x936) op_mod(0x0) failed, status bad parameter(0x3), syndrome (0x6b1266)
[13232.860484] mlx5_core 0000:3b:00.0: mlx5_cmd_check:756:(pid 131368): SET_FLOW_TABLE_ENTRY(0x936) op_mod(0x0) failed, status bad parameter(0x3), syndrome (0x6b1266)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 예에서 오류 코드 (0x6b1266)는 다음 동작을 나타냅니다.
0x6B1266 | set_flow_table_entry: pop vlan and forward to uplink is not allowed
0x6B1266 | set_flow_table_entry: pop vlan and forward to uplink is not allowedCopy to Clipboard Copied! Toggle word wrap Toggle overflow 
시스템 검증
다음 절차에 따라 시스템을 검증합니다.
절차
- 시스템에서 SR-IOV 및 VT-d가 활성화되어 있는지 확인합니다.
 - 
						GRUB을 사용하여 커널 매개 변수에 
intel_iommu=on을 추가하여 Linux에서 IOMMU를 활성화합니다. 
제한
흐름의 연결 추적 속성이 OVS 2.11의 오프로드 경로에서 지원되지 않으므로 HW 오프로드에는 OVS 방화벽 드라이버를 사용할 수 없습니다.
7.8. 하드웨어 오프로드 흐름 디버깅 링크 복사링크가 클립보드에 복사되었습니다!
				ovs-vswitch.log 파일에 다음 메시지가 표시되는 경우 다음 절차를 사용할 수 있습니다.
			
2020-01-31T06:22:11.257Z|00473|dpif_netlink(handler402)|ERR|failed to offload flow: Operation not supported: p6p1_5
2020-01-31T06:22:11.257Z|00473|dpif_netlink(handler402)|ERR|failed to offload flow: Operation not supported: p6p1_5
절차
오프로드 모듈에서 로깅하고 이 오류에 대한 추가 로그 정보를 얻으려면 컴퓨팅 노드에서 다음 명령을 사용하십시오.
ovs-appctl vlog/set dpif_netlink:file:dbg # Module name changed recently (check based on the version used ovs-appctl vlog/set netdev_tc_offloads:file:dbg [OR] ovs-appctl vlog/set netdev_offload_tc:file:dbg ovs-appctl vlog/set tc:file:dbg
ovs-appctl vlog/set dpif_netlink:file:dbg # Module name changed recently (check based on the version used ovs-appctl vlog/set netdev_tc_offloads:file:dbg [OR] ovs-appctl vlog/set netdev_offload_tc:file:dbg ovs-appctl vlog/set tc:file:dbgCopy to Clipboard Copied! Toggle word wrap Toggle overflow ovs-vswitchd로그를 다시 검사하여 문제에 대한 추가 세부 정보를 확인합니다.다음 예제 로그에서는 지원되지 않는 속성 표시로 인해 오프로드가 실패했습니다.
2020-01-31T06:22:11.218Z|00471|dpif_netlink(handler402)|DBG|system@ovs-system: put[create] ufid:61bd016e-eb89-44fc-a17e-958bc8e45fda recirc_id(0),dp_hash(0/0),skb_priority(0/0),in_port(7),skb_mark(0),ct_state(0/0),ct_zone(0/0),ct_mark(0/0),ct_label(0/0),eth(src=fa:16:3e:d2:f5:f3,dst=fa:16:3e:c4:a3:eb),eth_type(0x0800),ipv4(src=10.1.1.8/0.0.0.0,dst=10.1.1.31/0.0.0.0,proto=1/0,tos=0/0x3,ttl=64/0,frag=no),icmp(type=0/0,code=0/0), actions:set(tunnel(tun_id=0x3d,src=10.10.141.107,dst=10.10.141.124,ttl=64,tp_dst=4789,flags(df|key))),6 2020-01-31T06:22:11.253Z|00472|netdev_tc_offloads(handler402)|DBG|offloading attribute pkt_mark isn't supported 2020-01-31T06:22:11.257Z|00473|dpif_netlink(handler402)|ERR|failed to offload flow: Operation not supported: p6p1_5
2020-01-31T06:22:11.218Z|00471|dpif_netlink(handler402)|DBG|system@ovs-system: put[create] ufid:61bd016e-eb89-44fc-a17e-958bc8e45fda recirc_id(0),dp_hash(0/0),skb_priority(0/0),in_port(7),skb_mark(0),ct_state(0/0),ct_zone(0/0),ct_mark(0/0),ct_label(0/0),eth(src=fa:16:3e:d2:f5:f3,dst=fa:16:3e:c4:a3:eb),eth_type(0x0800),ipv4(src=10.1.1.8/0.0.0.0,dst=10.1.1.31/0.0.0.0,proto=1/0,tos=0/0x3,ttl=64/0,frag=no),icmp(type=0/0,code=0/0), actions:set(tunnel(tun_id=0x3d,src=10.10.141.107,dst=10.10.141.124,ttl=64,tp_dst=4789,flags(df|key))),6 2020-01-31T06:22:11.253Z|00472|netdev_tc_offloads(handler402)|DBG|offloading attribute pkt_mark isn't supported 2020-01-31T06:22:11.257Z|00473|dpif_netlink(handler402)|ERR|failed to offload flow: Operation not supported: p6p1_5Copy to Clipboard Copied! Toggle word wrap Toggle overflow 
Mellanox NIC 디버깅
Mellanox는 Red Hat SOS 보고서와 유사한 시스템 정보 스크립트를 제공했습니다.
https://github.com/Mellanox/linux-sysinfo-snapshot/blob/master/sysinfo-snapshot.py
이 명령을 실행하면 지원 사례에 유용한 관련 로그 정보의 zip 파일을 생성합니다.
절차
다음 명령을 사용하여 이 시스템 정보 스크립트를 실행할 수 있습니다.
./sysinfo-snapshot.py --asap --asap_tc --ibdiagnet --openstack
# ./sysinfo-snapshot.py --asap --asap_tc --ibdiagnet --openstackCopy to Clipboard Copied! Toggle word wrap Toggle overflow 
Mellanox 펌웨어 툴(MFT), mlxconfig, mlxlink 및 OpenFabrics Enterprise Distribution(OFED) 드라이버도 설치할 수 있습니다.
유용한 CLI 명령
					다음 옵션과 함께 ethtool 유틸리티를 사용하여 진단 정보를 수집합니다.
				
- ethtool -l <uplink representor> : 채널 수 보기
 - ethtool -I <uplink/VFs> : 통계 확인
 - ethtool -i <uplink rep> : 드라이버 정보 보기
 - ethtool -g <uplink rep> : 링 크기 확인
 - ethtool -k <uplink/VFs> : 활성화된 기능 보기
 
				대표자 및 PF 포트에서 tcpdump 유틸리티를 사용하여 트래픽 흐름을 유사하게 확인합니다.
			
- 대표 포트의 링크 상태에 대한 변경 사항도 VF 링크 상태에 영향을 미칩니다.
 - VF 통계가 있는 대표 포트 통계도 있습니다.
 
다음 명령을 사용하여 유용한 진단 정보를 가져옵니다.
7.9. SR-IOV 인스턴스 배포 링크 복사링크가 클립보드에 복사되었습니다!
호스트 집계를 사용하여 고성능 컴퓨팅 호스트를 분리합니다. 스케줄링을 위해 호스트 집계 및 관련 플레이버를 생성하는 방법에 대한 자세한 내용은 호스트 집계 생성 을 참조하십시오.
고정된 CPU 인스턴스는 고정되지 않은 인스턴스와 동일한 컴퓨팅 노드에 있을 수 있습니다. 자세한 내용은 Compute Service for Instance Creation 가이드의 컴퓨팅 노드에서 CPU 고정 구성 을 참조하십시오.
다음 단계를 수행하여 SR-IOV(Single Root I/O Virtualization)의 인스턴스를 배포합니다.
프로세스
플레이버를 만듭니다.
openstack flavor create <flavor> --ram <MB> --disk <GB> --vcpus <#>
$ openstack flavor create <flavor> --ram <MB> --disk <GB> --vcpus <#>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 작은 정보플레이버에 spec
hw:pci_numa_affinity_policy를 추가하여 PCI 패스스루 장치 및 SR-IOV 인터페이스에 대한 NUMA 선호도 정책을 지정할 수 있습니다. 자세한 내용은 Compute Service for Instance Creation 가이드의 플레이버 메타데이터 를 참조하십시오.네트워크를 만듭니다.
openstack network create net1 --provider-physical-network tenant --provider-network-type vlan --provider-segment <VLAN-ID> openstack subnet create subnet1 --network net1 --subnet-range 192.0.2.0/24 --dhcp
$ openstack network create net1 --provider-physical-network tenant --provider-network-type vlan --provider-segment <VLAN-ID> $ openstack subnet create subnet1 --network net1 --subnet-range 192.0.2.0/24 --dhcpCopy to Clipboard Copied! Toggle word wrap Toggle overflow 포트를 만듭니다.
vnic-type
direct를 사용하여 SR-IOV 가상 기능(VF) 포트를 생성합니다.openstack port create --network net1 --vnic-type direct sriov_port
$ openstack port create --network net1 --vnic-type direct sriov_portCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 사용하여 하드웨어 오프로드와 함께 가상 기능을 생성합니다.
--binding-profile을 설정하려면 관리자여야 합니다.openstack port create --network net1 --vnic-type direct --binding-profile '{"capabilities": ["switchdev"]} sriov_hwoffload_port$ openstack port create --network net1 --vnic-type direct --binding-profile '{"capabilities": ["switchdev"]} sriov_hwoffload_portCopy to Clipboard Copied! Toggle word wrap Toggle overflow vnic-type
direct-physical를 사용하여 단일 인스턴스 전용 SR-IOV 물리적 기능(PF) 포트를 생성합니다. 이 PF 포트는 Networking 서비스(neutron) 포트이지만 Networking 서비스에 의해 제어되지 않으며, 인스턴스에 전달되는 PCI 장치이므로 네트워크 어댑터로 표시되지 않습니다.openstack port create --network net1 --vnic-type direct-physical sriov_port
$ openstack port create --network net1 --vnic-type direct-physical sriov_portCopy to Clipboard Copied! Toggle word wrap Toggle overflow 
인스턴스를 배포합니다.
openstack server create --flavor <flavor> --image <image> --nic port-id=<id> <instance name>
$ openstack server create --flavor <flavor> --image <image> --nic port-id=<id> <instance name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 
7.10. 호스트 집계 생성 링크 복사링크가 클립보드에 복사되었습니다!
성능 향상을 위해 CPU 고정 및 대규모 페이지가 있는 게스트를 배포합니다. 집계 메타데이터와 플레이버 메타데이터를 일치시켜 호스트 하위 집합에서 고성능 인스턴스를 예약할 수 있습니다.
프로세스
배포 템플릿에서
parameter_defaults아래의 heat 매개변수NovaSchedulerEnabledFilters를 통해AggregateInstanceExtraSpecsFilter값과 기타 필요한 필터를 구성할 수 있습니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고이 매개변수를 기존 클러스터 구성에 추가하려면 heat 템플릿에 추가하고 원래 배포 스크립트를 다시 실행할 수 있습니다.
SR-IOV에 대한 집계 그룹을 생성하고 관련 호스트를 추가합니다. 정의된 플레이버 메타데이터와 일치하는 메타데이터(예:
sriov=true)를 정의합니다.openstack aggregate create sriov_group openstack aggregate add host sriov_group compute-sriov-0.localdomain openstack aggregate set --property sriov=true sriov_group
# openstack aggregate create sriov_group # openstack aggregate add host sriov_group compute-sriov-0.localdomain # openstack aggregate set --property sriov=true sriov_groupCopy to Clipboard Copied! Toggle word wrap Toggle overflow 플레이버를 만듭니다.
openstack flavor create <flavor> --ram <MB> --disk <GB> --vcpus <#>
# openstack flavor create <flavor> --ram <MB> --disk <GB> --vcpus <#>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 추가 플레이버 속성을 설정합니다. 정의된 메타데이터
sriov=true는 SR-IOV 집계의 정의된 메타데이터와 일치합니다.openstack flavor set --property sriov=true --property hw:cpu_policy=dedicated --property hw:mem_page_size=1GB <flavor>
# openstack flavor set --property sriov=true --property hw:cpu_policy=dedicated --property hw:mem_page_size=1GB <flavor>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 
8장. OVS-DPDK 배포 계획 링크 복사링크가 클립보드에 복사되었습니다!
NFV용 OVS-DPDK(Data Plane Development Kit) 배포를 사용하여 Open vSwitch를 최적화하려면 OVS-DPDK가 컴퓨팅 노드 하드웨어(CPU, NUMA 노드, 메모리, NIC)를 사용하는 방법과 컴퓨팅 노드를 기반으로 개별 OVS-DPDK 매개변수를 결정하는 고려 사항을 이해해야 합니다.
OVS-DPDK 및 OVS 기본 방화벽(conntrack을 기반으로 하는 상태 저장 방화벽)을 사용하는 경우 ICMPv4, ICMPv6, TCP 및 UDP 프로토콜을 사용하는 패킷만 추적할 수 있습니다. OVS는 다른 모든 유형의 네트워크 트래픽이 유효하지 않음으로 표시됩니다.
Red Hat은 비NFV 워크로드에 OVS-DPDK 사용을 지원하지 않습니다. 비NFV 워크로드에 OVS-DPDK 기능이 필요한 경우 TAM(Technical Account Manager)에 문의하거나 고객 서비스 요청 케이스를 열어 지원 예외 및 기타 옵션에 대해 논의합니다. 고객 서비스 요청 케이스를 열려면 케이스 생성으로 이동하여 계정 > 고객 서비스 요청을 선택합니다.
8.1. CPU 파티셔닝 및 NUMA 토폴로지가 포함된 OVS-DPDK 링크 복사링크가 클립보드에 복사되었습니다!
OVS-DPDK는 호스트, 게스트 및 자체에 대한 하드웨어 리소스를 분할합니다. OVS-DPDK Poll Mode Drivers(PMD)는 전용 CPU 코어가 필요한 DPDK 활성 루프를 실행합니다. 따라서 OVS-DPDK에 일부 CPU 및 대규모 페이지를 할당해야 합니다.
샘플 파티션에는 듀얼 소켓 컴퓨팅 노드의 NUMA 노드당 16개의 코어가 포함됩니다. 호스트와 OVS-DPDK 간에 NIC를 공유할 수 없기 때문에 트래픽에는 추가 NIC가 필요합니다.
그림 8.1. NUMA 토폴로지: CPU 파티셔닝이 포함된 OVS-DPDK
NUMA 노드에 연결된 DPDK NIC가 없는 경우에도 두 NUMA 노드에 DPDK PMD 스레드를 예약해야 합니다.
정상 OVS-DPDK 성능의 경우 NUMA 노드에 로컬 메모리 블록을 예약합니다. 메모리 및 CPU 고정에 사용하는 동일한 NUMA 노드와 연결된 NIC를 선택합니다. 결합된 두 인터페이스가 동일한 NUMA 노드의 NIC에 있는지 확인합니다.
8.2. 워크플로우 및 파생 매개변수 링크 복사링크가 클립보드에 복사되었습니다!
이 기능은 이번 릴리스에서 기술 프리뷰로 제공되므로 Red Hat에서 완전히 지원되지 않습니다. 테스트 용도로만 사용해야 하며 프로덕션 환경에 배포해서는 안 됩니다. 기술 프리뷰 기능에 대한 자세한 내용은 적용 범위 상세 정보를 참조하십시오.
				Red Hat OpenStack Platform Workflow(mistral) 서비스를 사용하여 사용 가능한 베어 메탈 노드의 기능에 따라 매개변수를 얻을 수 있습니다. 워크플로우는 YAML 파일을 사용하여 수행할 작업 및 작업 세트를 정의합니다. pre-defined Cryostat, derive_params.yaml 디렉터리에서 tripleo-common/workbooks/ 디렉터리에서 사용할 수 있습니다. 이 document는 베어 메탈 인트로스펙션의 결과에서 지원되는 각 매개변수를 파생하기 위한 워크플로를 제공합니다. derive_params.yaml 워크플로우는 tripleo-common/workbooks/derive_params_formulas.yaml 의 수식을 사용하여 파생 매개변수를 계산합니다.
			
					환경에 맞게 derive_params_formulas.yaml 을 수정할 수 있습니다.
				
				derive_params.yaml document는 특정 구성 가능 역할에 대한 모든 노드에 동일한 하드웨어 사양이 있다고 가정합니다. 워크플로는 flavor-profile 연결 및 nova 배치 스케줄러를 사용하여 역할과 연결된 노드와 일치하는 다음 역할과 일치하는 첫 번째 노드의 인트로스펙션 데이터를 사용합니다.
			
워크플로에 대한 자세한 내용은 워크플로 및 실행 문제 해결을 참조하십시오.
				-p 또는 --plan-environment-file 옵션을 사용하여 document 목록 및 모든 입력 값이 포함된 사용자 지정 plan_environment.yaml 파일을 openstack overcloud deploy 명령에 추가할 수 있습니다. 결과 워크플로는 파생된 매개변수를 오버클라우드 배포에 사용할 수 있는 사용자 지정 plan_environment.yaml 에 다시 병합합니다.
			
				배포에서 --plan-environment-file 옵션을 사용하는 방법에 대한 자세한 내용은 계획 환경 메타데이터 를 참조하십시오.
			
8.3. 파생 OVS-DPDK 매개변수 링크 복사링크가 클립보드에 복사되었습니다!
이 기능은 이번 릴리스에서 기술 프리뷰로 제공되므로 Red Hat에서 완전히 지원되지 않습니다. 테스트 용도로만 사용해야 하며 프로덕션 환경에 배포해서는 안 됩니다. 기술 프리뷰 기능에 대한 자세한 내용은 적용 범위 상세 정보를 참조하십시오.
				derive_params.yaml 의 워크플로우는 ComputeNeutronOvsDpdk 서비스를 사용하는 역할과 관련된 DPDK 매개변수를 파생합니다.
			
				워크플로우는 OVS-DPDK에 대해 다음 매개 변수를 자동으로 파생할 수 있습니다. 이제 NovaVcpuPinSet 매개변수가 더 이상 사용되지 않으며, 고정된 전용 워크플로우를 위해 NovaComputeCpuDedicatedSet 으로 교체됩니다.
			
- IsolCpusList
 - KernelArgs
 - NovaReservedHostMemory
 - NovaComputeCpuDedicatedSet
 - OvsDpdkSocketMemory
 - OvsPmdCoreList
 
오류를 방지하려면 역할별 매개변수에 대한 역할별 태그를 구성해야 합니다.
				OvsDpdkMemoryChannels 매개변수는 메모리 슬롯 이름의 형식이 다른 하드웨어 환경에서 일관성이 없기 때문에 인트로스펙션 메모리 뱅크 데이터에서 파생될 수 없습니다.
			
				대부분의 경우 기본 OvsDpdkMemoryChannels 는 4입니다. 하드웨어 설명서를 참조하여 소켓당 메모리 채널 수를 확인하고 이 값으로 기본 번호를 업데이트합니다.
			
워크플로우 매개변수에 대한 자세한 내용은 워크플로우 를 사용하여 DPDK 매개변수 비활성화를 참조하십시오.
8.4. ovs-DPDK 매개변수 링크 복사링크가 클립보드에 복사되었습니다!
				이 섹션에서는 OVS-DPDK가 director network_environment.yaml heat 템플릿 내에서 매개변수를 사용하여 최대 성능을 위해 CPU 및 메모리를 구성하는 방법을 설명합니다. 이 정보를 사용하여 컴퓨팅 노드의 하드웨어 지원과 OVS-DPDK 배포를 최적화하기 위해 하드웨어를 분할하는 방법을 평가합니다.
			
					대신 derived_parameters.yaml 워크플로우를 사용하여 이러한 값을 생성하는 방법에 대한 자세한 내용은 워크플로우 및 파생 매개변수를 참조하십시오.
				
CPU 코어를 할당할 때 항상 CPU 형제 스레드 또는 논리 CPU를 물리적 코어에 결합합니다.
컴퓨팅 노드에서 CPU 및 NUMA 노드를 결정하는 방법에 대한 자세한 내용은 NUMA 노드 토폴로지 검색을 참조하십시오. 이 정보를 사용하여 CPU 및 기타 매개변수를 매핑하여 호스트, 게스트 인스턴스 및 OVS-DPDK 프로세스 요구 사항을 지원합니다.
8.4.1. CPU 매개변수 링크 복사링크가 클립보드에 복사되었습니다!
OVS-DPDK는 CPU 파티셔닝에 다음 매개변수를 사용합니다.
- OvsPmdCoreList
 DPDK 폴링 모드 드라이버(PMD)에 사용되는 CPU 코어를 제공합니다. DPDK 인터페이스의 로컬 NUMA 노드와 연결된 CPU 코어를 선택합니다. OVS에서
pmd-cpu-mask값으로OvsPmdCoreList를 사용합니다.OvsPmdCoreList에 대해 다음 권장 사항을 사용하십시오.- 형제 스레드를 페어링합니다.
 - 성능은 PMD Core 목록에 할당된 물리적 코어 수에 따라 다릅니다. DPDK NIC와 연결된 NUMA 노드에서 필요한 코어를 할당합니다.
 - DPDK NIC가 있는 NUMA 노드의 경우 성능 요구 사항에 따라 필요한 물리적 코어 수를 확인하고 각 물리 코어의 모든 형제 스레드 또는 논리 CPU를 포함합니다.
 - DPDK NIC가 없는 NUMA 노드의 경우 NUMA 노드의 첫 번째 물리적 코어를 제외하고 모든 물리적 코어의 형제 스레드 또는 논리 CPU를 할당합니다.
 
NUMA 노드에 연결된 DPDK NIC가 없는 경우에도 두 NUMA 노드에 DPDK PMD 스레드를 예약해야 합니다.
- NovaComputeCpuDedicatedSet
 고정 인스턴스 CPU의 프로세스를 예약할 수 있는 쉼표로 구분된 물리적 호스트 CPU 수 목록 또는 범위입니다. 예를 들어
NovaComputeCpuDedicatedSet: [4-12,^8,15]는 8을 제외하고 4-12 및 15의 코어를 예약합니다.- 
										
OvsPmdCoreList에서 모든 코어를 제외합니다. - 나머지 코어를 모두 포함합니다.
 - 형제 스레드를 페어링합니다.
 
- 
										
 - NovaComputeCpuSharedSet
 - 인스턴스 에뮬레이터 스레드의 호스트 CPU를 결정하는 데 사용되는 쉼표로 구분된 물리적 호스트 CPU 수 목록 또는 범위입니다.
 - IsolCpusList
 호스트 프로세스와 분리된 CPU 코어 세트.
IsolCpusList는tuned-profiles-cpu-partitioning구성 요소의cpu-partitioning-variable.conf파일의isolated_cores값입니다.IsolCpusList에 대해 다음 권장 사항을 사용하십시오.- 
										
OvsPmdCoreList및NovaComputeCpuDedicatedSet의 코어 목록을 일치시킵니다. - 형제 스레드를 페어링합니다.
 
- 
										
 
- DerivePciWhitelistEnabled
 VM의 VF(가상 기능)를 예약하려면
NovaPCIPassthrough매개변수를 사용하여 Nova에 전달되는 VF 목록을 생성합니다. 목록에서 제외된 VFS는 호스트에서 계속 사용할 수 있습니다.목록의 각 VF에 대해 address 매개변수를 address 값으로 확인하는 정규식으로 채웁니다.
다음은 수동 목록 생성 프로세스의 예입니다.
eno2라는 장치에서 NIC 파티셔닝이 활성화된 경우 다음 명령을 사용하여 VF의 PCI 주소를 나열합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 경우 VF 0, 4, 6은 NIC 파티셔닝에
eno2에서 사용됩니다. 다음 예와 같이 VFs 1-3, 5 및 7을 포함하도록NovaPCIPassthrough를 수동으로 구성하고 결과적으로 VF 0,4 및 6을 제외합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 
8.4.2. 메모리 매개변수 링크 복사링크가 클립보드에 복사되었습니다!
OVS-DPDK는 다음 메모리 매개변수를 사용합니다.
- OvsDpdkMemoryChannels
 NUMA 노드당 CPU에 메모리 채널을 매핑합니다. OVS의
OvsDpdkMemoryChannels는 OVS의other_config:dpdk-extra="-n <value>"값입니다.OvsDpdkMemoryChannels에 대한 다음 권장 사항을 확인하십시오.- 
										
dmidecode -t 메모리또는 하드웨어 설명서를 사용하여 사용 가능한 메모리 채널 수를 확인합니다. - 
										
ls /sys/devices/system/node/node* -d를 사용하여 NUMA 노드 수를 확인합니다. - 사용 가능한 메모리 채널 수를 NUMA 노드 수로 나눕니다.
 
- 
										
 - NovaReservedHostMemory
 호스트의 작업에 대해 메모리(MB)를 예약합니다.
NovaReservedHostMemory는nova.conf의 컴퓨팅 노드의reserved_host_memory_mb값입니다.NovaReservedHostMemory에 대한 다음 권장 사항을 확인하십시오.- 정적 권장 값 4096MB를 사용합니다.
 
- OvsDpdkSocketMemory
 NUMA 노드별로 hugepage 풀에서 사전 할당하기 위한 메모리 양(MB)을 지정합니다.
OvsDpdkSocketMemory는 OVS의other_config:dpdk-socket-mem값입니다.OvsDpdkSocketMemory에 대한 다음 권장 사항을 확인하십시오.- 쉼표로 구분된 목록으로 제공합니다.
 - DPDK NIC가 없는 NUMA 노드의 경우 1024MB(1GB)의 정적 권장 사항을 사용합니다.
 - 
										NUMA 노드의 각 NIC의 MTU 값에서 
OvsDpdkSocketMemory값을 계산합니다. 다음 공식은
OvsDpdkSocketMemory의 값과 유사합니다.MEMORY_REQD_PER_MTU = (ROUNDUP_PER_MTU + 800) * (4096 * 64) Bytes
- 800은 오버헤드 값입니다.
 - 4096 * 64는 mempool의 패킷 수입니다.
 
- NUMA 노드에 설정된 각 MTU 값에 대해 MEMORY_REQD_PER_MTU를 추가하고 버퍼로 512MB를 추가합니다. 값을 1024의 배수로 반올림합니다.
 
샘플 계산 - MTU 2000 및 MTU 9000
DPDK NIC dpdk0 및 dpdk1은 각각 동일한 NUMA 노드 0에 있으며 MTU 9000 및 2000으로 구성됩니다. 필요한 메모리를 파생하기 위한 샘플 계산은 다음과 같습니다.
MTU 값을 1024바이트의 가장 가까운 배수로 반올림합니다.
The MTU value of 9000 becomes 9216 bytes. The MTU value of 2000 becomes 2048 bytes.
The MTU value of 9000 becomes 9216 bytes. The MTU value of 2000 becomes 2048 bytes.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이러한 반올림된 바이트 값을 기반으로 각 MTU 값에 필요한 메모리를 계산합니다.
Memory required for 9000 MTU = (9216 + 800) * (4096*64) = 2625634304 Memory required for 2000 MTU = (2048 + 800) * (4096*64) = 746586112
Memory required for 9000 MTU = (9216 + 800) * (4096*64) = 2625634304 Memory required for 2000 MTU = (2048 + 800) * (4096*64) = 746586112Copy to Clipboard Copied! Toggle word wrap Toggle overflow 필요한 총 메모리(바이트)를 계산합니다.
2625634304 + 746586112 + 536870912 = 3909091328 bytes.
2625634304 + 746586112 + 536870912 = 3909091328 bytes.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 계산은 ( 9000의 MTU에 필요한 메모리) + (2000의 MTU에 메모리 필요) + (512MB 버퍼)를 나타냅니다.
필요한 총 메모리를 MB로 변환합니다.
3909091328 / (1024*1024) = 3728 MB.
3909091328 / (1024*1024) = 3728 MB.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 값을 가장 가까운 1024까지 반올림합니다.
3724 MB rounds up to 4096 MB.
3724 MB rounds up to 4096 MB.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 값을 사용하여
OvsDpdkSocketMemory를 설정합니다.OvsDpdkSocketMemory: "4096,1024"
OvsDpdkSocketMemory: "4096,1024"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 
샘플 계산 - MTU 2000
DPDK NIC dpdk0 및 dpdk1은 동일한 NUMA 노드 0에 있으며 각각 2000의 MTU로 구성됩니다. 필요한 메모리를 파생하기 위한 샘플 계산은 다음과 같습니다.
MTU 값을 1024바이트의 가장 가까운 배수로 반올림합니다.
The MTU value of 2000 becomes 2048 bytes.
The MTU value of 2000 becomes 2048 bytes.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이러한 반올림된 바이트 값을 기반으로 각 MTU 값에 필요한 메모리를 계산합니다.
Memory required for 2000 MTU = (2048 + 800) * (4096*64) = 746586112
Memory required for 2000 MTU = (2048 + 800) * (4096*64) = 746586112Copy to Clipboard Copied! Toggle word wrap Toggle overflow 필요한 총 메모리(바이트)를 계산합니다.
746586112 + 536870912 = 1283457024 bytes.
746586112 + 536870912 = 1283457024 bytes.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 계산은 (2000의 MTU에 필요한 메모리) + (512MB 버퍼)를 나타냅니다.
필요한 총 메모리를 MB로 변환합니다.
1283457024 / (1024*1024) = 1224 MB.
1283457024 / (1024*1024) = 1224 MB.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 값을 1024의 가장 가까운 배수로 반올림합니다.
1224 MB rounds up to 2048 MB.
1224 MB rounds up to 2048 MB.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 값을 사용하여
OvsDpdkSocketMemory를 설정합니다.OvsDpdkSocketMemory: "2048,1024"
OvsDpdkSocketMemory: "2048,1024"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 
8.4.3. 네트워킹 매개변수 링크 복사링크가 클립보드에 복사되었습니다!
- OvsDpdkDriverType
 - 
								DPDK에서 사용하는 드라이버 유형을 설정합니다. 
vfio-pci의 기본값을 사용합니다. - NeutronDatapathType
 - 
								OVS 브리지의 datapath 유형입니다. DPDK는 
netdev의 기본값을 사용합니다. - NeutronVhostuserSocketDir
 - 
								OVS의 vhost-user 소켓 디렉터리를 설정합니다. vhost 클라이언트 모드에 
/var/lib/vhost_sockets를 사용합니다. 
8.4.4. 기타 매개변수 링크 복사링크가 클립보드에 복사되었습니다!
- NovaSchedulerEnabledFilters
 - 컴퓨팅 노드에서 요청된 게스트 인스턴스에 대해 일치하는 컴퓨팅 노드를 찾는 데 사용하는 정렬된 필터 목록을 제공합니다.
 - VhostuserSocketGroup
 vhost-user 소켓 디렉터리 그룹을 설정합니다. 기본값은
qemu입니다.ovs-vswitchd및qemu프로세스가 virtio-net 장치를 구성하는 공유 대규모 페이지 및 unix 소켓에 액세스할 수 있도록VhostuserSocketGroup을hugetlbfs로 설정합니다. 이 값은 역할별로 고유하며 OVS-DPDK를 활용하는 모든 역할에 적용해야 합니다.중요VhostuserSocketGroup매개변수를 사용하려면NeutronVhostuserSocketDir도 설정해야 합니다. 자세한 내용은 8.4.3절. “네트워킹 매개변수”의 내용을 참조하십시오.- KernelArgs
 부팅 시 컴퓨팅 노드의
/etc/default/grub에 여러 커널 인수를 제공합니다. 구성에 따라 다음 값을 추가합니다.hugepagesz: CPU에서 대규모 페이지 크기를 설정합니다. 이 값은 CPU 하드웨어에 따라 다를 수 있습니다. OVS-DPDK 배포용 1G(default_hugepagesz=1GB hugepagesz=1G)로 설정합니다. 이 명령을 사용하여 CPU가 1G를 지원하는지 확인하는pdpe1gbCPU 플래그를 확인합니다.lshw -class processor | grep pdpe1gb
lshw -class processor | grep pdpe1gbCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 
										
hugepages 수: 사용 가능한 호스트 메모리를 기반으로 사용 가능한 대규모 페이지 수를 설정합니다.NovaReservedHostMemory를 제외하고 사용 가능한 대부분의 메모리를 사용합니다. 컴퓨팅 노드의 플레이버 내에서 대규모 페이지 수 값을 구성해야 합니다. - 
										
iOMMU: Intel CPU의 경우"intel_iommu=on iommu=pt"를 추가합니다. - 
										
isolcpus: 튜닝을 위한 CPU 코어를 설정합니다. 이 값은IsolCpusList와 일치합니다. 
CPU 분리에 대한 자세한 내용은 RHEL 8 및 RHEL 9의 Red Hat Knowledgebase 솔루션 OpenStack CPU 격리 지침을 참조하십시오.
- DdpPackage
 배포의 장치에 프로필 패키지를 적용하여 장치의 패킷 처리 파이프라인을 변경하도록 DDP(Dynamic Device Personalization)를 구성합니다. DDP 패키지를 포함하도록 network_environment.yaml 템플릿에 다음 행을 추가합니다.
parameter_defaults: ComputeOvsDpdkSriovParameters: DdpPackage: "ddp-comms"parameter_defaults: ComputeOvsDpdkSriovParameters: DdpPackage: "ddp-comms"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 
8.4.5. VM 인스턴스 플레이버 사양 링크 복사링크가 클립보드에 복사되었습니다!
NFV 환경에 VM 인스턴스를 배포하기 전에 CPU 고정, 대규모 페이지 및 에뮬레이터 스레드 고정을 사용하는 플레이버를 생성합니다.
- hw:cpu_policy
 - 
								이 매개변수가 
dedicated로 설정된 경우 게스트는 고정된 CPU를 사용합니다. 이 매개변수 세트를 사용하여 플레이버에서 생성된 인스턴스의 오버 커밋 비율은 1:1입니다. 기본값은shared입니다. - hw:mem_page_size
 이 매개변수를 표준 접미사가 있는 특정 값의 유효한 문자열(예:
4KB,8MB또는1GB)으로 설정합니다.hugepagesz부팅 매개변수와 일치하도록 1GB를 사용합니다. 부팅 매개변수에서OvsDpdkSocketMemory를 제거하여 가상 머신에 사용할 수 있는 대규모 페이지 수를 계산합니다. 다음 값도 유효합니다.- small(기본값) - 가장 작은 페이지 크기가 사용됩니다.
 - large - 대용량 페이지 크기만 사용합니다. (2MB 또는 1GB x86 아키텍처의 경우)
 - 모든 - 컴퓨팅 드라이버는 대규모 페이지를 사용하려고 시도할 수 있지만 사용할 수 없는 경우 기본값은 small입니다.
 
- hw:emulator_threads_policy
 - 
								이 매개변수의 값을 
공유하여에뮬레이터 스레드가 heat 매개변수NovaComputeCpuSharedSet에서 식별한 CPU에 고정되도록 설정합니다. 에뮬레이터 스레드가 폴링 모드 드라이버(PMD) 또는 실시간 처리가 있는 vCPU에서 실행 중인 경우 패킷 손실과 같은 부정적인 영향을 미칠 수 있습니다. 
8.5. 두 개의 NUMA 노드 예 OVS-DPDK 배포 링크 복사링크가 클립보드에 복사되었습니다!
다음 예제의 컴퓨팅 노드에는 두 개의 NUMA 노드가 포함됩니다.
- NUMA 0에는 코어 0-7이 있습니다. 형제 스레드 쌍은 (0,1), (2,3), (4,5) 및 (6,7)입니다.
 - NUMA 1에는 코어 8-15가 있습니다. 형제 스레드 쌍은 (8,9)(10,11), (12,13) 및 (14,15)입니다.
 - 각 NUMA 노드는 물리적 NIC, 즉 NUMA 0의 NIC1, NUMA 1의 NIC2에 연결됩니다.
 
그림 8.2. ovs-DPDK: 두 개의 NUMA 노드 예
데이터 경로 DPDK 프로세스가 아닌 경우 각 NUMA 노드 (0,1 및 8,9)에서 첫 번째 물리적 코어 또는 두 스레드 쌍을 예약합니다.
				이 예제에서는 1500 MTU 구성도 가정하므로 OvsDpdkSocketMemory 는 모든 사용 사례에서 동일합니다.
			
OvsDpdkSocketMemory: "1024,1024"
OvsDpdkSocketMemory: "1024,1024"
DPDK용 NIC 1 - PMD에 하나의 물리적 코어
이 사용 사례에서는 PMD에 대해 NUMA 0에 하나의 물리적 코어를 할당합니다. 해당 NUMA 노드에 대한 NIC에서 DPDK가 활성화되지 않더라도 NUMA 1에서 하나의 물리적 코어도 할당해야 합니다. 나머지 코어는 게스트 인스턴스에 할당됩니다. 결과 매개변수 설정은 다음과 같습니다.
OvsPmdCoreList: "2,3,10,11" NovaComputeCpuDedicatedSet: "4,5,6,7,12,13,14,15"
OvsPmdCoreList: "2,3,10,11"
NovaComputeCpuDedicatedSet: "4,5,6,7,12,13,14,15"
DPDK용 NIC 1 - PMD에 두 개의 물리적 코어
이 사용 사례에서는 PMD에 대해 NUMA 0에 두 개의 물리적 코어를 할당합니다. 해당 NUMA 노드에 대한 NIC에서 DPDK가 활성화되지 않더라도 NUMA 1에서 하나의 물리적 코어도 할당해야 합니다. 나머지 코어는 게스트 인스턴스에 할당됩니다. 결과 매개변수 설정은 다음과 같습니다.
OvsPmdCoreList: "2,3,4,5,10,11" NovaComputeCpuDedicatedSet: "6,7,12,13,14,15"
OvsPmdCoreList: "2,3,4,5,10,11"
NovaComputeCpuDedicatedSet: "6,7,12,13,14,15"
DPDK용 NIC 2 (PMD 용 물리적 코어 1개)
이 사용 사례에서는 PMD에 대해 NUMA 1에 하나의 물리적 코어를 할당합니다. DPDK가 해당 NUMA 노드에 대해 NIC에서 활성화되지 않더라도 NUMA 0에서 하나의 물리적 코어도 할당해야 합니다. 나머지 코어는 게스트 인스턴스에 할당됩니다. 결과 매개변수 설정은 다음과 같습니다.
OvsPmdCoreList: "2,3,10,11" NovaComputeCpuDedicatedSet: "4,5,6,7,12,13,14,15"
OvsPmdCoreList: "2,3,10,11"
NovaComputeCpuDedicatedSet: "4,5,6,7,12,13,14,15"
DPDK의 경우 NIC 2 (PMD에 두 개의 물리적 코어 포함)
이 사용 사례에서는 PMD에 대해 NUMA 1에 두 개의 물리적 코어를 할당합니다. DPDK가 해당 NUMA 노드에 대해 NIC에서 활성화되지 않더라도 NUMA 0에서 하나의 물리적 코어도 할당해야 합니다. 나머지 코어는 게스트 인스턴스에 할당됩니다. 결과 매개변수 설정은 다음과 같습니다.
OvsPmdCoreList: "2,3,10,11,12,13" NovaComputeCpuDedicatedSet: "4,5,6,7,14,15"
OvsPmdCoreList: "2,3,10,11,12,13"
NovaComputeCpuDedicatedSet: "4,5,6,7,14,15"
PMD에 두 개의 물리적 코어가 있는 DPDK용 NIC 1 및 NIC2
이 사용 사례에서는 PMD에 대해 각 NUMA 노드에 두 개의 물리적 코어를 할당합니다. 나머지 코어는 게스트 인스턴스에 할당됩니다. 결과 매개변수 설정은 다음과 같습니다.
OvsPmdCoreList: "2,3,4,5,10,11,12,13" NovaComputeCpuDedicatedSet: "6,7,14,15"
OvsPmdCoreList: "2,3,4,5,10,11,12,13"
NovaComputeCpuDedicatedSet: "6,7,14,15"
8.6. NFV OVS-DPDK 배포의 토폴로지 링크 복사링크가 클립보드에 복사되었습니다!
이 예제 배포는 OVS-DPDK 구성을 보여주고 각각 두 개의 인터페이스가 있는 두 개의 가상 네트워크 기능(VNF)으로 구성됩니다.
- 
						
mgt로 표시되는 관리 인터페이스입니다. - 데이터 플레인 인터페이스입니다.
 
				OVS-DPDK 배포에서 VNF는 물리적 인터페이스를 지원하는 빌드된 DPDK와 함께 작동합니다. OVS-DPDK는 vSwitch 수준에서 본딩을 활성화합니다. OVS-DPDK 배포의 성능을 개선하려면 커널과 OVS-DPDK NIC를 분리하는 것이 좋습니다. 가상 머신의 기본 공급자 네트워크에 연결된 관리(mgt) 네트워크를 분리하려면 추가 NIC가 있는지 확인하십시오. 컴퓨팅 노드는 Ceph API에서 재사용할 수 있지만 OpenStack 프로젝트와 공유할 수 없는 Red Hat OpenStack Platform API 관리를 위한 두 개의 일반 NIC로 구성됩니다.
			
그림 8.3. 컴퓨팅 노드: NFV OVS-DPDK
NFV OVS-DPDK 토폴로지
다음 이미지는 NFV용 OVS-DPDK의 토폴로지를 보여줍니다. 1개 또는 10Gbps NIC가 있는 컴퓨팅 및 컨트롤러 노드와 director 노드로 구성됩니다.
그림 8.4. NFV 토폴로지: OVS-DPDK
9장. OVS-DPDK 배포 구성 링크 복사링크가 클립보드에 복사되었습니다!
이 섹션에서는 Red Hat OpenStack Platform 환경에 OVS-DPDK를 배포합니다. 오버클라우드는 일반적으로 컨트롤러 노드, 컴퓨팅 노드 및 다양한 스토리지 노드 유형과 같은 사전 정의된 역할의 노드로 구성됩니다. 이러한 각 기본 역할에는 director 노드의 코어 heat 템플릿에 정의된 일련의 서비스가 포함되어 있습니다.
다음 그림은 컨트롤 플레인 및 데이터 플레인에 두 개의 결합된 포트가 있는 OVS-DPDK 토폴로지를 보여줍니다.
그림 9.1. OVS-DPDK 토폴로지 샘플
이 가이드에서는 토폴로지 및 사용 사례에 따라 다를 수 있는 CPU 할당, 메모리 할당 및 NIC 구성에 대한 예를 제공합니다. 하드웨어 및 구성 옵션에 대한 자세한 내용은 NFV 하드웨어 요구 사항을 참조하십시오.
9.1. 워크플로우를 사용하여 DPDK 매개변수 파생 링크 복사링크가 클립보드에 복사되었습니다!
이 기능은 이번 릴리스에서 기술 프리뷰로 제공되므로 Red Hat에서 완전히 지원되지 않습니다. 테스트 용도로만 사용해야 하며 프로덕션 환경에 배포해서는 안 됩니다. 기술 프리뷰 기능에 대한 자세한 내용은 적용 범위 상세 정보를 참조하십시오.
DPDK에 대한 Mistral 워크플로 개요는 워크플로우 및 파생 매개변수를 참조하십시오.
사전 요구 사항
					이 워크플로우에서 검색한 데이터를 제공하려면 하드웨어 검사 추가(inspection_extras)를 사용하여 베어 메탈 인트로스펙션이 활성화되어 있어야 합니다. 하드웨어 검사 추가는 기본적으로 활성화되어 있습니다. 노드 하드웨어에 대한 자세한 내용은 베어 메탈 노드 하드웨어의 인벤토리 생성 을 참조하십시오.
				
DPDK의 워크플로우 및 입력 매개변수 정의
다음 목록에는 OVS-DPDK 워크플로우에 제공할 수 있는 입력 매개변수가 요약되어 있습니다.
- num_phy_cores_per_numa_node_for_pmd
 - 이 입력 매개변수는 DPDK NIC와 연결된 NUMA 노드에 필요한 최소 코어 수를 지정합니다. DPDK NIC와 연결되지 않은 다른 NUMA 노드에 대해 하나의 물리적 코어가 할당됩니다. 이 매개변수가 1로 설정되어 있는지 확인합니다.
 - huge_page_allocation_percentage
 - 
							이 input 매개변수는 
NovaReservedHostMemory를 제외하고 대규모 페이지로 구성할 수 있는 총 메모리의 필요한 백분율을 지정합니다.KernelArgs매개변수는 지정된huge_page_allocation_percentage를 기반으로 계산된 대규모 페이지를 사용하여 파생됩니다. 이 매개변수가 50으로 설정되어 있는지 확인합니다. 
워크플로우는 이러한 입력 매개변수와 베어 메탈 인트로스펙션 세부 정보에서 적절한 DPDK 매개변수 값을 계산합니다.
DPDK의 워크플로우 및 입력 매개변수를 정의하려면 다음을 수행합니다.
usr/share/openstack-tripleo-heat-templates/plan-samples/plan-environment-derived-params.yaml파일을 로컬 디렉터리로 복사하고 환경에 맞게 입력 매개변수를 설정합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow openstack overcloud deploy명령을 실행하고 다음 정보를 포함합니다.- 
								
update-plan-only옵션 - 사용자 환경과 관련된 역할 파일 및 모든 환경 파일
 --plan-environment-file선택적 인수가 있는plan-environment-derived-parms.yaml파일openstack overcloud deploy --templates --update-plan-only \ -r /home/stack/roles_data.yaml \ -e /home/stack/<environment-file> \ ... _#repeat as necessary_ ...
$ openstack overcloud deploy --templates --update-plan-only \ -r /home/stack/roles_data.yaml \ -e /home/stack/<environment-file> \ ... _#repeat as necessary_ ... **-p /home/stack/plan-environment-derived-params.yaml**Copy to Clipboard Copied! Toggle word wrap Toggle overflow 
- 
								
 
				이 명령의 출력은 파생된 결과를 표시하며, 이는 plan-environment.yaml 파일에 병합됩니다.
			
					OvsDpdkMemoryChannels 매개변수는 인트로스펙션 세부 정보에서 파생될 수 없습니다. 대부분의 경우 이 값은 4여야 합니다.
				
파생 매개 변수를 사용하여 오버클라우드 배포
다음과 같은 파생 매개 변수를 사용하여 오버클라우드를 배포하려면 다음을 수행합니다.
배포 명령 출력에서 파생된 매개 변수를
network-environment.yaml파일에 복사합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고이러한 매개변수는 특정 역할 ComputeOvsDpdk에 적용됩니다. 이러한 매개변수를 전역적으로 적용할 수 있지만 역할별 매개변수는 글로벌 매개변수를 덮어씁니다.
- 역할 파일 및 사용자 환경과 관련된 모든 환경 파일을 사용하여 오버클라우드를 배포합니다.
 
openstack overcloud deploy --templates \ -r /home/stack/roles_data.yaml \ -e /home/stack/<environment-file> \ ... #repeat as necessary ...
 openstack overcloud deploy --templates \
 -r /home/stack/roles_data.yaml \
 -e /home/stack/<environment-file> \
... #repeat as necessary ...
Compute, ComputeOvsDpdk 및 ComputeSriov가 있는 클러스터에서는 Compute 또는 ComputeSriovs가 아닌 ComputeOvsDpdk 역할에만 공식을 적용합니다.
9.2. 구성 가능 역할을 사용하여 OVS-DPDK 토폴로지 배포 링크 복사링크가 클립보드에 복사되었습니다!
Red Hat OpenStack Platform을 사용하면 사용자 정의 배포 역할을 생성하여 각 역할에서 서비스를 추가하거나 제거할 수 있습니다.
Red Hat OpenStack Platform은 OVS-DPDK 배포를 위해 OVS 클라이언트 모드에서 작동합니다.
사전 요구 사항
- OVS 2.10
 - DPDK 17
 지원되는 NIC입니다.
NFV에 대해 지원되는 NIC 목록을 보려면 NFV 테스트.
RHOSP 언더클라우드.
오버클라우드를 배포하려면 언더클라우드를 설치하고 구성해야 합니다. 자세한 내용은 Director 설치 및 사용 가이드를 참조하십시오.
참고director heat 템플릿이 수정하는
etc/tuned/cpu-partitioning-variables.conf의isolated_cores또는 기타 값을 수동으로 편집하거나 변경하지 마십시오.
프로세스
OVS-DPDK를 구성하려면 다음 작업을 수행합니다.
- 
						구성 가능 역할을 사용하는 경우 
roles_data.yaml파일을 복사하고 수정하여 OVS-DPDK의 사용자 지정 역할을 추가합니다. - 
						커널 인수 및 DPDK 인수에 대한 매개변수를 포함하도록 적절한 
network-environment.yaml파일을 업데이트합니다. - 
						DPDK 인터페이스 매개변수에 대한 브릿지를 포함하도록 
compute.yaml파일을 업데이트합니다. - 
						DPDK 인터페이스 매개변수에 대한 동일한 브릿지 세부 정보를 포함하도록 
controller.yaml파일을 업데이트합니다. - 
						
overcloud_deploy.sh스크립트를 실행하여 DPDK 매개변수로 오버클라우드를 배포합니다. 
9.3. OVS-DPDK 인터페이스의 MTU 값 설정 링크 복사링크가 클립보드에 복사되었습니다!
Red Hat OpenStack Platform은 OVS-DPDK의 점보 프레임을 지원합니다. 점보 프레임의 최대 전송 단위(MTU) 값을 설정하려면 다음을 수행해야 합니다.
- 
						
network-environment.yaml파일에서 네트워킹의 글로벌 MTU 값을 설정합니다. - 
						
compute.yaml파일에서 물리적 DPDK 포트 MTU 값을 설정합니다. 이 값은 vhost 사용자 인터페이스에서도 사용됩니다. - 컴퓨팅 노드의 모든 게스트 인스턴스 내에 MTU 값을 설정하여 구성의 마지막에 유사한 MTU 값이 있는지 확인합니다.
 
VXLAN 패킷에는 헤더에 추가 50바이트가 포함됩니다. 이러한 추가 헤더 바이트를 기반으로 MTU 요구 사항을 계산합니다. 예를 들어 MTU 값 9000은 VXLAN 터널 MTU 값이 이러한 추가 바이트를 고려하여 8950임을 의미합니다.
					NIC가 DPDK PMD에 의해 제어되고 compute.yaml 파일에서 동일한 MTU 값을 설정하므로 물리적 NIC에 대한 특별한 구성이 필요하지 않습니다. 물리적 NIC에서 지원하는 최대 값보다 큰 MTU 값을 설정할 수 없습니다.
				
OVS-DPDK 인터페이스의 MTU 값을 설정하려면 다음을 수행합니다.
network-environment.yaml파일에서NeutronGlobalPhysnetMtu매개변수를 설정합니다.parameter_defaults: # MTU global configuration NeutronGlobalPhysnetMtu: 9000
parameter_defaults: # MTU global configuration NeutronGlobalPhysnetMtu: 9000Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고network-environment.yaml파일의 OvsDpdkSocketMemory 값이 점보 프레임을 지원할 수 있을 만큼 충분히 큰지 확인합니다. 자세한 내용은 메모리 매개변수를 참조하십시오.브리지의 MTU 값을
controller.yaml파일의 컴퓨팅 노드로 설정합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow compute.yaml파일에서 OVS-DPDK 본딩의 MTU 값을 설정합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 
9.4. 보안 그룹에 대한 방화벽 구성 링크 복사링크가 클립보드에 복사되었습니다!
dataPlane 인터페이스에는 상태 저장 방화벽의 고성능이 필요합니다. 이러한 인터페이스를 보호하려면 telco-grade 방화벽을 VNF(가상 네트워크 기능)로 배포하는 것이 좋습니다.
				ML2/OVS 배포에서 컨트롤 플레인 인터페이스를 구성하려면 NeutronOVSFirewallDriver 매개변수를 openvswitch 로 설정합니다. 흐름 기반 OVS 방화벽 드라이버를 사용하려면 parameter_defaults 에서 network-environment.yaml 파일을 수정합니다. OVN 배포에서 ACL(액세스 제어 목록)을 사용하여 보안 그룹을 구현할 수 있습니다.
			
흐름의 연결 추적 속성이 오프로드 경로에서 지원되지 않으므로 HW 오프로드에는 OVS 방화벽 드라이버를 사용할 수 없습니다.
예제:
parameter_defaults: NeutronOVSFirewallDriver: openvswitch
parameter_defaults:
  NeutronOVSFirewallDriver: openvswitch
				openstack port set 명령을 사용하여 데이터 플레인 인터페이스의 OVS 방화벽 드라이버를 비활성화합니다.
			
예제:
openstack port set --no-security-group  --disable-port-security ${PORT}
openstack port set --no-security-group  --disable-port-security ${PORT}
9.5. OVS-DPDK 인터페이스에 대한 멀티 큐 설정 링크 복사링크가 클립보드에 복사되었습니다!
멀티 큐는 실험적이며 수동 대기열 고정에서만 지원됩니다.
절차
컴퓨팅 노드의 OVS-DPDK에서 인터페이스에 대해 동일한 수의 큐를 설정하려면
compute.yaml파일을 수정합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 
9.6. OVS PMD 자동 로드 밸런싱 구성 링크 복사링크가 클립보드에 복사되었습니다!
이 기능은 이번 릴리스에서 기술 프리뷰로 제공되므로 Red Hat에서 완전히 지원되지 않습니다. 테스트 용도로만 사용해야 하며 프로덕션 환경에 배포해서는 안 됩니다. 기술 프리뷰 기능에 대한 자세한 내용은 적용 범위 상세 정보를 참조하십시오.
OVS(Open vSwitch) PMD(Pll Mode Driver) 스레드를 사용하여 사용자 공간 컨텍스트 전환에 다음 작업을 수행할 수 있습니다.
- 패킷의 입력 포트를 지속적으로 폴링합니다.
 - 수신된 패킷을 분류합니다.
 - 분류 후 패킷에서 작업을 실행합니다.
 
baremetal 노드 사전 프로비저닝 및 오버클라우드 배포에 대한 매개변수를 편집하여 OVS PMD 스레드를 자동으로 로드 밸런싱하도록 RHOSP 배포를 구성합니다. 노드 사전 프로비저닝 및 오버클라우드 배포 중에 기능을 구성해야 합니다.
프로세스
baremetal_deployment.yaml파일 또는 사용자 정의 파일에서 다음 baremetal 노드 사전 프로비저닝 매개변수를 설정합니다.pmd_auto_lb- 
									PMD 자동 로드 밸런싱을 활성화하려면 
true로 설정합니다. pmd_load_threshold- PMD 스레드 중 하나가 PMD 로드 밸런싱을 트리거하기 전에 일관되게 사용해야 하는 처리 사이클의 백분율입니다. 정수, 범위 0-100.
 pmd_improvement_thresholdPMD 자동 로드 밸런싱을 트리거하는 격리되지 않은 PMD 스레드에서 평가된 개선의 최소 백분율입니다. 정수, 범위 0-100.
예상 개선을 계산하기 위해 재할당의 예행 실행이 수행되고 예상 부하 분산이 현재 분산과 비교됩니다. 기본값은 25%입니다.
pmd_rebal_interval연속된 2개의 PMD 자동 로드 밸런싱 작업 사이의 최소 시간(분)입니다. 범위 0-20,000분.
트래픽 패턴이 변경될 수 있는 자주 재할당을 트리거하지 않도록 이 값을 구성합니다. 예를 들어 10분마다 또는 몇 시간마다 한 번씩 재할당을 트리거할 수 있습니다.
예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 
다음 예와 같이
openstack overcloud node provision명령에 baremetal 배포 파일을 포함합니다.예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow dpdk-config.yaml또는 사용자 정의 파일에서 다음 오버클라우드 배포 매개변수를 설정합니다.OvsPmdAutoLbHeat equivalent of
pmd_auto_lb.PMD 자동 로드 밸런싱을 활성화하려면
true로 설정합니다.OvsPmdLoadThresholdpmd_load_threshold와 동등한 heat입니다.PMD 스레드 중 하나가 PMD 로드 밸런싱을 트리거하기 전에 일관되게 사용해야 하는 처리 사이클의 백분율입니다. 정수, 범위 0-100.
OvsPmdImprovementThresholdpmd_improvement_threshold.PMD 자동 로드 밸런싱을 트리거하는 격리되지 않은 PMD 스레드에서 평가된 개선의 최소 백분율입니다. 정수, 범위 0-100.
예상 개선을 계산하기 위해 재할당의 예행 실행이 수행되고 예상 부하 분산이 현재 분산과 비교됩니다. 기본값은 25%입니다.
OvsPmdRebalIntervalHeat equivalent of
pmd_rebal_interval.연속된 2개의 PMD 자동 로드 밸런싱 작업 사이의 최소 시간(분)입니다. 범위 0-20,000분.
트래픽 패턴이 변경될 수 있는 자주 재할당을 트리거하지 않도록 이 값을 구성합니다. 예를 들어 10분마다 또는 몇 시간마다 한 번씩 재할당을 트리거할 수 있습니다.
예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 
dpdk-config.yaml또는 dpdk 구성 파일을 다른 환경 파일과 함께 스택에 추가하고 오버클라우드를 배포합니다.예
(undercloud)$ openstack overcloud deploy --templates \ -e <your_environment_files> \ -e /home/stack/templates/dpdk-config.yaml
(undercloud)$ openstack overcloud deploy --templates \ -e <your_environment_files> \ -e /home/stack/templates/dpdk-config.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 
9.7. OVS-DPDK에 대한 알려진 제한 사항 링크 복사링크가 클립보드에 복사되었습니다!
NFV용 Red Hat OpenStack Platform을 사용하여 OVS-DPDK를 구성할 때 다음 제한 사항을 확인합니다.
- 비DPDK 트래픽에는 Linux 본딩과 내부, 관리, 스토리지, 스토리지 관리, 테넌트와 같은 컨트롤 플레인 네트워크를 사용합니다. 본딩에 사용되는 PCI 장치가 동일한 NUMA 노드에 있는지 확인합니다. Neutron Linux 브리지 구성은 Red Hat에서 지원되지 않습니다.
 - OVS-DPDK가 있는 호스트에서 실행되는 모든 인스턴스에 대해 대규모 페이지가 필요합니다. 게스트에 대규모 페이지가 없으면 인터페이스가 표시되지만 작동하지 않습니다.
 - OVS-DPDK에서는 DVR(Distributed Virtual Routing)과 같은 탭 장치를 사용하는 서비스의 성능 저하가 있습니다. 결과 성능은 프로덕션 환경에 적합하지 않습니다.
 - 
						OVS-DPDK를 사용하는 경우 동일한 컴퓨팅 노드의 모든 브릿지는 
ovs_user_bridge여야 합니다. director는 설정을 수락할 수 있지만 Red Hat OpenStack Platform은 동일한 노드에서ovs_bridge및ovs_user_bridge혼합을 지원하지 않습니다. 
9.8. 플레이버 생성 및 OVS-DPDK의 인스턴스 배포 링크 복사링크가 클립보드에 복사되었습니다!
NFV를 사용하여 Red Hat OpenStack Platform 배포를 위해 OVS-DPDK를 구성한 후 플레이버를 생성하고 다음 단계를 사용하여 인스턴스를 배포할 수 있습니다.
집계 그룹을 생성하고 OVS-DPDK에 대한 관련 호스트를 추가합니다. 정의된 플레이버 메타데이터와 일치하는 메타데이터(예:
dpdk=true)를 정의합니다.openstack aggregate create dpdk_group
# openstack aggregate create dpdk_group # openstack aggregate add host dpdk_group [compute-host] # openstack aggregate set --property dpdk=true dpdk_groupCopy to Clipboard Copied! Toggle word wrap Toggle overflow 참고고정된 CPU 인스턴스는 고정되지 않은 인스턴스와 동일한 컴퓨팅 노드에 있을 수 있습니다. 자세한 내용은 Compute Service for Instance Creation 가이드의 컴퓨팅 노드에서 CPU 고정 구성 을 참조하십시오.
플레이버를 만듭니다.
openstack flavor create <flavor> --ram <MB> --disk <GB> --vcpus <#>
# openstack flavor create <flavor> --ram <MB> --disk <GB> --vcpus <#>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 플레이버 속성을 설정합니다. 정의된 메타데이터
dpdk=true는 DPDK 집계에서 정의된 메타데이터와 일치합니다.openstack flavor set <flavor> --property dpdk=true --property hw:cpu_policy=dedicated --property hw:mem_page_size=1GB --property hw:emulator_threads_policy=isolate
# openstack flavor set <flavor> --property dpdk=true --property hw:cpu_policy=dedicated --property hw:mem_page_size=1GB --property hw:emulator_threads_policy=isolateCopy to Clipboard Copied! Toggle word wrap Toggle overflow 성능 향상을 위한 에뮬레이터 스레드 정책에 대한 자세한 내용은 Configuring the Compute Service for Instance Creation 가이드의 에뮬레이터 스레드 구성을 참조하십시오.
네트워크를 만듭니다.
openstack network create net1 --provider-physical-network tenant --provider-network-type vlan --provider-segment <VLAN-ID> openstack subnet create subnet1 --network net1 --subnet-range 192.0.2.0/24 --dhcp
# openstack network create net1 --provider-physical-network tenant --provider-network-type vlan --provider-segment <VLAN-ID> # openstack subnet create subnet1 --network net1 --subnet-range 192.0.2.0/24 --dhcpCopy to Clipboard Copied! Toggle word wrap Toggle overflow 선택 사항: OVS-DPDK와 함께 다중 큐를 사용하는 경우 인스턴스를 생성하는 데 사용할 이미지에
hw_vif_multiqueue_enabled속성을 설정합니다.openstack image set --property hw_vif_multiqueue_enabled=true <image>
# openstack image set --property hw_vif_multiqueue_enabled=true <image>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 인스턴스를 배포합니다.
openstack server create --flavor <flavor> --image <glance image> --nic net-id=<network ID> <server_name>
# openstack server create --flavor <flavor> --image <glance image> --nic net-id=<network ID> <server_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 
9.9. OVS-DPDK 구성 문제 해결 링크 복사링크가 클립보드에 복사되었습니다!
이 섹션에서는 OVS-DPDK 구성의 문제를 해결하는 단계를 설명합니다.
브리지 구성을 검토하고 브리지에
datapath_type=netdev가 있는지 확인합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 선택적으로 컨테이너가 시작되지 않는 경우와 같이 오류 로그를 볼 수 있습니다.
less /var/log/containers/neutron/openvswitch-agent.log
# less /var/log/containers/neutron/openvswitch-agent.logCopy to Clipboard Copied! Toggle word wrap Toggle overflow ovs-dpdk의 Poll Mode 드라이버 CPU 마스크가 CPU에 고정되어 있는지 확인합니다. 하이퍼 스레딩의 경우 형제 CPU를 사용합니다.예를 들어
CPU4의 형제를 확인하려면 다음 명령을 실행합니다.cat /sys/devices/system/cpu/cpu4/topology/thread_siblings_list 4,20
# cat /sys/devices/system/cpu/cpu4/topology/thread_siblings_list 4,20Copy to Clipboard Copied! Toggle word wrap Toggle overflow CPU4의 형제는CPU20이므로 다음 명령을 진행합니다.ovs-vsctl set Open_vSwitch . other_config:pmd-cpu-mask=0x100010
# ovs-vsctl set Open_vSwitch . other_config:pmd-cpu-mask=0x100010Copy to Clipboard Copied! Toggle word wrap Toggle overflow 상태를 표시합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 
10장. Red Hat OpenStack Platform 환경 튜닝 링크 복사링크가 클립보드에 복사되었습니다!
10.1. 에뮬레이터 스레드 고정 링크 복사링크가 클립보드에 복사되었습니다!
에뮬레이터 스레드는 가상 머신 하드웨어 에뮬레이션에 대한 인터럽트 요청 및 비차단 프로세스를 처리합니다. 이러한 스레드는 게스트가 처리하는 데 사용하는 CPU 전체에서 채워집니다. 이러한 게스트 CPU에서 폴링 모드 드라이버(PMD) 또는 실시간 처리에 사용되는 스레드가 패킷 손실 또는 누락된 데드라인이 발생할 수 있습니다.
결과적으로 자체 게스트 CPU에 스레드를 고정하여 에뮬레이터 스레드를 VM 처리 작업과 분리할 수 있습니다.
성능 향상을 위해 에뮬레이터 스레드를 호스팅하기 위해 호스트 CPU의 하위 집합을 예약합니다.
절차
지정된 역할에 대해
NovaComputeCpuSharedSet이 정의된 오버클라우드를 배포합니다.NovaComputeCpuSharedSet의 값은 해당 역할 내의 호스트에 대한nova.conf파일의cpu_shared_set매개변수에 적용됩니다.parameter_defaults: ComputeOvsDpdkParameters: NovaComputeCpuSharedSet: "0-1,16-17" NovaComputeCpuDedicatedSet: "2-15,18-31"parameter_defaults: ComputeOvsDpdkParameters: NovaComputeCpuSharedSet: "0-1,16-17" NovaComputeCpuDedicatedSet: "2-15,18-31"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 플레이버를 만들어 에뮬레이터 스레드가 공유 풀로 구분된 인스턴스를 빌드합니다.
openstack flavor create --ram <size_mb> --disk <size_gb> --vcpus <vcpus> <flavor>
openstack flavor create --ram <size_mb> --disk <size_gb> --vcpus <vcpus> <flavor>Copy to Clipboard Copied! Toggle word wrap Toggle overflow hw:emulator_threads_policy추가 사양을 추가하고,공유할값을 설정합니다. 이 플레이버로 생성된 인스턴스는 nova.conf 파일의cpu_share_set매개변수에 정의된 인스턴스 CPU를 사용합니다.openstack flavor set <flavor> --property hw:emulator_threads_policy=share
openstack flavor set <flavor> --property hw:emulator_threads_policy=shareCopy to Clipboard Copied! Toggle word wrap Toggle overflow 
					이 추가 사양에 대한 공유 정책을 활성화하려면 nova.conf 파일에 cpu_share_set 매개변수를 설정해야 합니다. nova.conf 를 수동으로 편집해도 재배포해도 유지되지 않을 수 있으므로 이 경우 heat를 사용해야 합니다.
				
검증
지정된 인스턴스의 호스트 및 이름을 식별합니다.
openstack server show <instance_id>
openstack server show <instance_id>Copy to Clipboard Copied! Toggle word wrap Toggle overflow SSH를 사용하여 식별된 호스트에 tripleo-admin으로 로그인합니다.
ssh tripleo-admin@compute-1 [compute-1]$ sudo virsh dumpxml instance-00001 | grep `'emulatorpin cpuset'`
ssh tripleo-admin@compute-1 [compute-1]$ sudo virsh dumpxml instance-00001 | grep `'emulatorpin cpuset'`Copy to Clipboard Copied! Toggle word wrap Toggle overflow 
10.2. 가상 기능과 물리적 기능 간의 신뢰 구성 링크 복사링크가 클립보드에 복사되었습니다!
VF가 무차별 모드 활성화 또는 하드웨어 주소 수정과 같은 권한 있는 작업을 수행할 수 있도록 물리적 기능(PF)과 VF(가상 기능) 간 신뢰를 구성할 수 있습니다.
사전 요구 사항
- director를 포함한 Red Hat OpenStack Platform의 작동 설치
 
절차
물리적 기능과 가상 기능 간에 신뢰할 수 있는 오버클라우드를 구성하고 배포하려면 다음 단계를 완료합니다.
parameter_defaults섹션에NeutronPhysicalDevMappings매개변수를 추가하여 논리 네트워크 이름과 물리적 인터페이스 간의 연결을 설정합니다.parameter_defaults: NeutronPhysicalDevMappings: - sriov2:p5p2parameter_defaults: NeutronPhysicalDevMappings: - sriov2:p5p2Copy to Clipboard Copied! Toggle word wrap Toggle overflow 신뢰할 수있는 새 속성을 SR-IOV 매개변수에 추가합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고"true" 값 주위에 큰따옴표를 포함해야 합니다.
10.3. 신뢰할 수 있는 VF 네트워크 사용 링크 복사링크가 클립보드에 복사되었습니다!
vlan유형의 네트워크를 만듭니다.openstack network create trusted_vf_network --provider-network-type vlan \ --provider-segment 111 --provider-physical-network sriov2 \ --external --disable-port-security
openstack network create trusted_vf_network --provider-network-type vlan \ --provider-segment 111 --provider-physical-network sriov2 \ --external --disable-port-securityCopy to Clipboard Copied! Toggle word wrap Toggle overflow 서브넷을 만듭니다.
openstack subnet create --network trusted_vf_network \ --ip-version 4 --subnet-range 192.168.111.0/24 --no-dhcp \ subnet-trusted_vf_network
openstack subnet create --network trusted_vf_network \ --ip-version 4 --subnet-range 192.168.111.0/24 --no-dhcp \ subnet-trusted_vf_networkCopy to Clipboard Copied! Toggle word wrap Toggle overflow 포트를 생성합니다.
vnic-type옵션을direct로 설정하고binding-profile옵션을true로 설정합니다.openstack port create --network sriov111 \ --vnic-type direct --binding-profile trusted=true \ sriov111_port_trusted
openstack port create --network sriov111 \ --vnic-type direct --binding-profile trusted=true \ sriov111_port_trustedCopy to Clipboard Copied! Toggle word wrap Toggle overflow 인스턴스를 생성하고 이전에 생성한 신뢰할 수 있는 포트에 바인딩합니다.
openstack server create --image rhel --flavor dpdk --network internal --port trusted_vf_network_port_trusted --config-drive True --wait rhel-dpdk-sriov_trusted
openstack server create --image rhel --flavor dpdk --network internal --port trusted_vf_network_port_trusted --config-drive True --wait rhel-dpdk-sriov_trustedCopy to Clipboard Copied! Toggle word wrap Toggle overflow 
검증
하이퍼바이저에서 신뢰할 수 있는 VF 구성을 확인합니다.
인스턴스를 생성한 컴퓨팅 노드에서 다음 명령을 입력합니다.
ip link
# ip link 7: p5p2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 qdisc mq state UP mode DEFAULT group default qlen 1000 link/ether b4:96:91:1c:40:fa brd ff:ff:ff:ff:ff:ff vf 6 MAC fa:16:3e:b8:91:c2, vlan 111, spoof checking off, link-state auto, trust on, query_rss off vf 7 MAC fa:16:3e:84:cf:c8, vlan 111, spoof checking off, link-state auto, trust off, query_rss offCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 
						VF의 신뢰 상태가 신뢰할 수 있는지 확인합니다. 
예제 출력에는 두 개의 포트가 포함된 환경에 대한 세부 정보가 포함되어 있습니다.vf 6에는에 대한 텍스트 신뢰가 포함되어 있습니다. - 
						Networking 서비스(neutron) 네트워크에서 
port_security_enabled: false를 설정하거나openstack port create명령을 실행할 때--disable-port-security인수를 포함하는 경우 스푸핑 검사를 비활성화할 수 있습니다. 
10.4. RX-TX 대기열 크기를 관리하여 패킷 손실 방지 링크 복사링크가 클립보드에 복사되었습니다!
다음과 같은 여러 가지 이유로 초당 3.5 만 개 이상의 패킷 손실 (mpps)에서 패킷 손실이 발생할 수 있습니다.
- 네트워크 인터럽트
 - a SMI
 - 가상 네트워크 기능의 패킷 처리 대기 시간
 
패킷 손실을 방지하려면 큐 크기를 기본값 512에서 최대 1024로 늘립니다.
사전 요구 사항
- 
						언더클라우드 호스트 및 
stack사용자의 인증 정보에 액세스합니다. 
프로세스
- 
						언더클라우드 호스트에 
stack사용자로 로그인합니다. stackrc언더클라우드 인증 정보 파일을 소싱합니다.source ~/stackrc
$ source ~/stackrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow 사용자 지정 환경 YAML 파일을 생성하고
parameter_defaults아래에 다음 정의를 추가하여 RX 및 TX 큐 크기를 늘립니다.parameter_defaults: NovaLibvirtRxQueueSize: 1024 NovaLibvirtTxQueueSize: 1024
parameter_defaults: NovaLibvirtRxQueueSize: 1024 NovaLibvirtTxQueueSize: 1024Copy to Clipboard Copied! Toggle word wrap Toggle overflow 배포 명령을 실행하고 코어 heat 템플릿, 기타 환경 파일, RX 및 TX 큐 크기 변경 사항이 포함된 환경 파일을 포함합니다.
예
openstack overcloud deploy --templates \ -e <other_environment_files> \ -e /home/stack/my_tx-rx_queue_sizes.yaml
$ openstack overcloud deploy --templates \ -e <other_environment_files> \ -e /home/stack/my_tx-rx_queue_sizes.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 
검증
nova.conf파일에서 RX 큐 크기 및 TX 대기열 크기의 값을 관찰합니다.egrep "^[rt]x_queue_size" /var/lib/config-data/puppet-generated/\ nova_libvirt/etc/nova/nova.conf
$ egrep "^[rt]x_queue_size" /var/lib/config-data/puppet-generated/\ nova_libvirt/etc/nova/nova.confCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음이 표시되어야 합니다.
rx_queue_size=1024 tx_queue_size=1024
rx_queue_size=1024 tx_queue_size=1024Copy to Clipboard Copied! Toggle word wrap Toggle overflow Compute 호스트의 libvirt에서 생성된 VM 인스턴스 XML 파일에서 RX 큐 크기 및 TX 큐 크기의 값을 확인합니다.
- 새 인스턴스를 만듭니다.
 컴퓨팅 호스트 및 인스턴스 이름을 가져옵니다.
openstack server show testvm-queue-sizes -c OS-EXT-SRV-ATTR:\ hypervisor_hostname -c OS-EXT-SRV-ATTR:instance_name
$ openstack server show testvm-queue-sizes -c OS-EXT-SRV-ATTR:\ hypervisor_hostname -c OS-EXT-SRV-ATTR:instance_nameCopy to Clipboard Copied! Toggle word wrap Toggle overflow 샘플 출력
출력은 다음과 유사합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Compute 호스트에 로그인하고 인스턴스 정의를 덤프합니다.
예
podman exec nova_libvirt virsh dumpxml instance-00000059
$ podman exec nova_libvirt virsh dumpxml instance-00000059Copy to Clipboard Copied! Toggle word wrap Toggle overflow 샘플 출력
출력은 다음과 유사합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 
10.5. NUMA 인식 vSwitch 구성 링크 복사링크가 클립보드에 복사되었습니다!
이 기능은 이번 릴리스에서 기술 프리뷰로 제공되므로 Red Hat에서 완전히 지원되지 않습니다. 테스트 용도로만 사용해야 하며 프로덕션 환경에 배포해서는 안 됩니다. 기술 프리뷰 기능에 대한 자세한 내용은 적용 범위 상세 정보를 참조하십시오.
NUMA 인식 vSwitch를 구현하기 전에 하드웨어 구성의 다음 구성 요소를 검사합니다.
- 물리적 네트워크 수입니다.
 - PCI 카드 배치
 - 서버의 물리적 아키텍처입니다.
 
PCIe NIC와 같은MMIO(메모리 매핑된 I/O) 장치는 특정 NUMA 노드와 연결됩니다. VM과 NIC가 다른 NUMA 노드에 있는 경우 성능이 크게 저하됩니다. 성능을 높이려면 동일한 NUMA 노드에서 PCIe NIC 배치 및 인스턴스 처리를 조정합니다.
이 기능을 사용하여 물리적 네트워크를 공유하는 인스턴스가 동일한 NUMA 노드에 있는지 확인합니다. 데이터 센터 하드웨어의 사용을 최적화하려면 여러 physnet을 사용해야 합니다.
최적의 서버 사용률을 위해 NUMA 인식 네트워크를 구성하려면 PCIe 슬롯과 NUMA 노드의 매핑을 이해해야 합니다. 특정 하드웨어에 대한 자세한 내용은 벤더 설명서를 참조하십시오. NUMA 인식 vSwitch를 올바르게 계획하거나 구현하지 못하면 서버에서 단일 NUMA 노드만 사용하도록 할 수 있습니다.
NUMA 간 구성을 방지하려면 NIC의 위치를 Nova에 제공하여 VM을 올바른 NUMA 노드에 배치합니다.
사전 요구 사항
- 
						filter 
NUMATopologyFilter를 활성화했습니다. 
프로세스
- 
						새 
NeutronPhysnetNUMANodesMapping매개변수를 설정하여 물리적 네트워크를 물리적 네트워크와 연결하는 NUMA 노드에 매핑합니다. VxLAN 또는 GRE와 같은 터널을 사용하는 경우
NeutronTunnelNUMANodes매개변수도 설정해야 합니다.parameter_defaults: NeutronPhysnetNUMANodesMapping: {<physnet_name>: [<NUMA_NODE>]} NeutronTunnelNUMANodes: <NUMA_NODE>,<NUMA_NODE>parameter_defaults: NeutronPhysnetNUMANodesMapping: {<physnet_name>: [<NUMA_NODE>]} NeutronTunnelNUMANodes: <NUMA_NODE>,<NUMA_NODE>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 예
다음은 NUMA 노드 0으로 터널링된 두 개의 물리적 네트워크가 있는 예입니다.
- NUMA 노드 0과 연결된 프로젝트 네트워크 1개
 유사성이 없는 하나의 관리 네트워크
parameter_defaults: NeutronBridgeMappings: - tenant:br-link0 NeutronPhysnetNUMANodesMapping: {tenant: [1], mgmt: [0,1]} NeutronTunnelNUMANodes: 0parameter_defaults: NeutronBridgeMappings: - tenant:br-link0 NeutronPhysnetNUMANodesMapping: {tenant: [1], mgmt: [0,1]} NeutronTunnelNUMANodes: 0Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 예에서는
eno2라는 장치의 physnet을 NUMA 번호 0에 할당합니다.ethtool -i eno2 cat /sys/devices/pci0000:16/0000:16:02.0/0000:18:00.1/numa_node
# ethtool -i eno2 bus-info: 0000:18:00.1 # cat /sys/devices/pci0000:16/0000:16:02.0/0000:18:00.1/numa_node 0Copy to Clipboard Copied! Toggle word wrap Toggle overflow 예제 heat 템플릿에서 physnet 설정을 확인합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 
검증
다음 단계에 따라 NUMA 인식 vSwitch를 테스트합니다.
/var/lib/config-data/puppet-generated/nova_libvirt/etc/nova/nova.conf파일의 구성을 확인합니다.[neutron_physnet_tenant] numa_nodes=1 [neutron_tunnel] numa_nodes=1
[neutron_physnet_tenant] numa_nodes=1 [neutron_tunnel] numa_nodes=1Copy to Clipboard Copied! Toggle word wrap Toggle overflow lscpu명령을 사용하여 새 구성을 확인합니다.lscpu
$ lscpuCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 적절한 네트워크에 연결된 NIC를 사용하여 VM을 시작합니다.
 
10.6. NUMA 인식 vSwitch에 대한 알려진 제한 사항 링크 복사링크가 클립보드에 복사되었습니다!
이 기능은 이번 릴리스에서 기술 프리뷰로 제공되므로 Red Hat에서 완전히 지원되지 않습니다. 테스트 용도로만 사용해야 하며 프로덕션 환경에 배포해서는 안 됩니다. 기술 프리뷰 기능에 대한 자세한 내용은 적용 범위 상세 정보를 참조하십시오.
이 섹션에는 RHOSP(Red Hat OpenStack Platform) 네트워크 기능 가상화 인프라(NFVi)에서 NUMA 인식 vSwitch를 구현하기 위한 제약 조건이 나열되어 있습니다.
- 두 개의 노드 게스트 NUMA 토폴로지를 지정하지 않은 경우 두 개의 NIC가 다른 NUMA 노드의 physnets에 연결된 VM을 시작할 수 없습니다.
 - 두 노드 게스트 NUMA 토폴로지를 지정하지 않은 경우 하나의 NIC가 physnet에 연결되어 있고 다른 NIC가 다른 NUMA 노드의 터널링 네트워크에 연결된 VM을 시작할 수 없습니다.
 - 두 개의 노드 게스트 NUMA 토폴로지를 지정하지 않은 경우 하나의 vhost 포트와 하나의 VF가 다른 NUMA 노드에 있는 VM을 시작할 수 없습니다.
 
- NUMA 인식 vSwitch 매개변수는 오버클라우드 역할에 따라 다릅니다. 예를 들어 컴퓨팅 노드 1 및 컴퓨팅 노드 2에는 NUMA 토폴로지가 다를 수 있습니다.
 - VM의 인터페이스에 NUMA 선호도가 있는 경우 유사성이 단일 NUMA 노드에만 적용되는지 확인합니다. NUMA 노드에서 NUMA 선호도 없이 인터페이스를 찾을 수 있습니다.
 - 네트워크 관리가 아닌 데이터 플레인 네트워크의 NUMA 선호도를 구성합니다.
 - 터널링된 네트워크의 NUMA 선호도는 모든 VM에 적용되는 글로벌 설정입니다.
 
10.7. NFVi 환경에서 QoS(Quality of Service) 링크 복사링크가 클립보드에 복사되었습니다!
QoS(Quality of Service) 정책을 사용하여 네트워크 기능 가상화 인프라(NFVi)의 RHOSP(Red Hat OpenStack Platform) 네트워크에서 속도 제한을 적용하여 VM 인스턴스에 다양한 서비스 수준을 제공할 수 있습니다.
NFVi 환경에서 QoS 지원은 다음과 같은 규칙 유형으로 제한됩니다.
- 
						벤더에서 지원하는 경우 SR-IOV의 
최소 대역폭입니다. - 
						SR-IOV 및 OVS-DPDK 송신 인터페이스에 대한 
대역폭 제한입니다. 
10.8. DPDK를 사용하는 HCI 오버클라우드 생성 링크 복사링크가 클립보드에 복사되었습니다!
최적화된 리소스 사용을 위해 Compute 및 Ceph Storage 서비스를 공동 배치하고 구성하여 하이퍼컨버지드 노드를 사용하여 NFV 인프라를 배포할 수 있습니다.
하이퍼 컨버지드 인프라(HCI)에 대한 자세한 내용은 Hyperconverged Infrastructure Guide 를 참조하십시오.
다음 섹션에서는 다양한 구성의 예를 제공합니다.
10.8.1. NUMA 노드 구성 예 링크 복사링크가 클립보드에 복사되었습니다!
성능 향상을 위해 NUMA-0 및 VNF와 같은 하나의 NUMA 노드에 테넌트 네트워크와 Ceph 개체 서비스 데몬(예: NUMA-1)을 다른 NUMA 노드에 배치하십시오.
CPU 할당:
| NUMA-0 | NUMA-1 | 
|---|---|
|   Ceph OSD 수 * 4 HT  |   VNF 및 비NFV VM용 게스트 vCPU  | 
|   DPDK lcore - 2 HT  |   DPDK lcore - 2 HT  | 
|   DPDK PMD - 2 HT  |   DPDK PMD - 2 HT  | 
CPU 할당의 예:
| NUMA-0 | NUMA-1 | |
|---|---|---|
|   Ceph OSD  |   32,34,36,38,40,42,76,78,80,82,84,86  | |
|   DPDK-lcore  |   0,44  |   1,45  | 
|   DPDK-pmd  |   2,46  |   3,47  | 
|   Nova  |   5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,49,51,53,55,57,59,61,63,65,67,69,71,73,75,77,79,81,83,85,87  | 
10.8.2. ceph 구성 파일의 예 링크 복사링크가 클립보드에 복사되었습니다!
다음 매개 변수를 사용하여 ceph OSD 프로세스에 CPU 리소스를 할당합니다. 이 하이퍼컨버지드 환경의 워크로드 및 하드웨어에 따라 값을 조정합니다.
- 1
 - ceph_osd_docker_cpuset_cpus: SSD 디스크의 경우 각 OSD에 4개의 CPU 스레드를 할당하거나 HDD 디스크에 대해 각 OSD에 대해 1개의 CPU를 할당합니다. ceph와 연결된 NUMA 노드의 코어 및 형제 스레드 목록과 다음 세 목록에 없는 CPU를 포함합니다.
NovaComputeCpuDedicatedSet및OvsPmdCoreList. - 2
 - ceph_osd_docker_cpu_limit: ceph OSD를
ceph_osd_docker_cpuset_cpus의 CPU 목록에 고정하려면 이 값을0으로 설정합니다. - 3
 - ceph_osd_numactl_opts: 이 값을 예방 조치로 NUMA 작업에 대해
선호하도록 설정합니다. 
10.8.3. DPDK 구성 파일의 예 링크 복사링크가 클립보드에 복사되었습니다!
- 1
 - KernelArgs:
hugepages를 계산하려면NovaReservedHostMemory매개변수 값을 총 메모리에서 뺀 값입니다. - 2
 - IsolCpusList: 이 매개변수를 사용하여 호스트 프로세스에서 격리할 CPU 코어 세트를 할당합니다.
OvsPmdCoreList매개변수의 값을NovaComputeCpuDedicatedSet매개변수의 값에 추가하여IsolCpusList매개변수 값을 계산합니다. - 3
 - OvsDpdkSocketMemory:
OvsDpdkSocketMemory매개변수를 사용하여 NUMA 노드당 hugepage 풀에서 사전 할당할 메모리 양을 MB로 지정합니다. OVS-DPDK 매개변수 계산에 대한 자세한 내용은 OVS-DPDK 매개변수를 참조하십시오. - 4
 - OvsPmdCoreList: 이 매개변수를 사용하여 DPDK 폴링 모드 드라이버(PMD)에 사용되는 CPU 코어를 지정합니다. DPDK 인터페이스의 로컬 NUMA 노드와 연결된 CPU 코어를 선택합니다. 각 NUMA 노드에 대해 2개의 HT 형제 스레드를 할당하여
OvsPmdCoreList매개변수 값을 계산합니다. 
10.8.4. nova 구성 파일의 예 링크 복사링크가 클립보드에 복사되었습니다!
- 1
 - NovaReservedHugePages:
NovaReservedHugePages매개변수를 사용하여 hugepage 풀에서 메모리를 MB로 미리 할당합니다. 이는OvsDpdkSocketMemory매개변수 값과 동일한 메모리 합계입니다. - 2
 - NovaReservedHostMemory:
NovaReservedHostMemory매개변수를 사용하여 호스트의 작업에 대해 메모리(MB)를 예약합니다. 다음 지침을 사용하여 예약해야 하는 메모리 양을 계산합니다.- 각 OSD에 대해 5GB입니다.
 - 각 VM에 대해 0.5GB 오버헤드입니다.
 - 일반 호스트 처리를 위한 4GB. NUMA 간 OSD 작업으로 인한 성능 저하를 방지하기 위해 충분한 메모리를 할당해야 합니다.
 
 - 3
 - NovaComputeCpuDedicatedSet:
NovaComputeCpuDedicatedSet매개변수를 사용하여OvsPmdCoreList또는Ceph_osd_docker_cpuset_cpus에 없는 CPU를 나열합니다. CPU는 DPDK NIC와 동일한 NUMA 노드에 있어야 합니다. 
10.8.5. HCI-DPDK 배포에 권장되는 구성 링크 복사링크가 클립보드에 복사되었습니다!
| 블록 장치 유형 | 장치당 OSD, 메모리, vCPU | 
|---|---|
|   NVMe  |   
									메모리: 장치당 OSD  | 
|   SSD  |   
									메모리: 장치당 OSD  | 
|   HDD  |   
									메모리: 장치당 OSD  | 
다음 기능에 동일한 NUMA 노드를 사용합니다.
- 디스크 컨트롤러
 - 스토리지 네트워크
 - 스토리지 CPU 및 메모리
 
DPDK 공급자 네트워크의 다음 기능에 대해 다른 NUMA 노드를 할당합니다.
- NIC
 - PMD CPU
 - 소켓 메모리
 
10.8.6. HCI-DPDK 오버클라우드 배포 링크 복사링크가 클립보드에 복사되었습니다!
DPDK를 사용하는 하이퍼컨버지드 오버클라우드를 배포하려면 다음 단계를 따르십시오.
사전 요구 사항
- RHOSP(Red Hat OpenStack Platform) 16.2.
 - Red Hat Ceph Storage 4의 최신 버전입니다.
 - 
							
rhceph-4-tools-for-rhel-8-x86_64-rpms리포지토리에서 제공하는ceph-ansible4의 최신 버전입니다. 
프로세스
언더클라우드에
ceph-ansible을 설치합니다.sudo yum install ceph-ansible -y
$ sudo yum install ceph-ansible -yCopy to Clipboard Copied! Toggle word wrap Toggle overflow Controller 및 ComputeHCIOvsDpdk 역할에 대한
roles_data.yaml파일을 생성합니다.openstack overcloud roles generate -o ~/<templates>/roles_data.yaml \ Controller ComputeHCIOvsDpdk
$ openstack overcloud roles generate -o ~/<templates>/roles_data.yaml \ Controller ComputeHCIOvsDpdkCopy to Clipboard Copied! Toggle word wrap Toggle overflow openstack flavor create및openstack flavor set명령을 사용하여 새 플레이버를 생성하고 구성합니다.자세한 내용은 Advanced Overcloud Customization Guide 에서 새 역할 생성 을 참조하십시오.
생성한 사용자 지정
roles_data.yaml파일을 사용하여 오버클라우드를 배포합니다.예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 중요이 예에서는 Ceph RGW(오브젝트 스토리지) 없이 Ceph RBD(블록 스토리지)를 배포합니다. 배포에 RGW를 포함하려면
cephadm-rbd-only.yaml대신cephadm.yaml을 사용합니다.
10.9. 컴퓨팅 노드를 Timemaster와 동기화 링크 복사링크가 클립보드에 복사되었습니다!
이 기능은 이번 릴리스에서 기술 프리뷰로 제공되므로 Red Hat에서 완전히 지원되지 않습니다. 테스트 용도로만 사용해야 하며 프로덕션 환경에 배포해서는 안 됩니다. 기술 프리뷰 기능에 대한 자세한 내용은 적용 범위 상세 정보를 참조하십시오.
시간 프로토콜을 사용하여 시스템 간 일관된 타임스탬프를 유지 관리합니다.
RHOSP(Red Hat OpenStack Platform)에는 PTP(Precision Time Protocol) 및 NTP(Network Time Protocol)가 지원됩니다.
NTP를 사용하여 밀리 초 범위에서 네트워크의 클럭을 동기화할 수 있으며 PTP를 사용하여 더 높은 마이크로초 단위의 정확도에 클럭을 동기화할 수 있습니다. PTP의 사용 사례는 가상 무선 액세스 네트워크(vRAN)로, 처리량이 증가하여 더 많은 간섭의 위험을 나타내는 여러 개의 radio access network(vRAN)가 포함되어 있습니다.
				Timemaster는 chronyd 또는 ntpd 와 함께 ptp4l 및 phc2sys 를 사용하여 시스템 클럭을 NTP 및 PTP 시간 소스에 동기화하는 프로그램입니다. phc2sys 및 ptp4l 프로그램은 SHM(Share Shared Memory Driver) 참조 클럭을 사용하여 PTP 시간을 chronyd 또는 ntpd 에 전송하여 시스템 시계를 동기화하는 시간 소스를 비교합니다.
			
				RHEL(Red Hat Enterprise Linux) 커널에서 PTPv2 프로토콜의 구현은 linuxptp 입니다.
			
				linuxptp 패키지에는 PTP 경계 클럭 및 일반 클럭 동기화를 위한 ptp4l 프로그램과 하드웨어 타임스탬프를 위한 phc2sys 프로그램이 포함되어 있습니다. PTP에 대한 자세한 내용은 Red Hat Enterprise Linux 시스템 관리자 가이드의 PTP 소개 를 참조하십시오.
			
				chrony는 NTP 프로토콜의 구현입니다. Chrony의 두 가지 주요 구성 요소는 Chrony 데몬인 chronyd 와 Chrony 명령줄 인터페이스인 chronyc 입니다.
			
Chrony에 대한 자세한 내용은 기본 시스템 설정 구성 가이드에서 Chrony 모음을 사용하여 NTP 구성을 참조하십시오.
다음 이미지는 PTP 구성에서 패킷 이동에 대한 개요입니다.
그림 10.1. PTP 패킷 이동 개요
다음 이미지는 PTP 구성의 컴퓨팅 노드에서 패킷 이동에 대한 개요입니다.
그림 10.2. PTP 패킷 이동 세부 정보
10.9.1. Timemaster 하드웨어 요구 사항 링크 복사링크가 클립보드에 복사되었습니다!
다음과 같은 하드웨어 기능이 있는지 확인합니다.
- 하드웨어 타임스탬프 기능을 사용하여 NIC를 구성했습니다.
 - 멀티 캐스트 패킷을 허용하도록 스위치를 구성했습니다.
 - 스위치가 경계 또는 투명한 클록으로 작동하도록 구성되었습니다.
 
					ethtool -T <device> 명령을 사용하여 하드웨어 타임스탬프를 확인할 수 있습니다.
				
					투명성 또는 경계 클럭 스위치를 사용하여 정확도와 대기 시간을 줄일 수 있습니다. 경계 클록에 uplink 스위치를 사용할 수 있습니다. 경계 클럭 스위치는 PTPv2 헤더에서 8비트 correctionField 를 사용하여 지연 변형을 수정하고 최종 클록에서 정확성을 높입니다. 투명한 클럭 스위치에서 최종 클록은 correctionField 가 아닌 지연 변형을 계산합니다.
				
10.9.2. Timemaster 구성 링크 복사링크가 클립보드에 복사되었습니다!
					오버클라우드 노드에서 시간 동기화를 위한 기본 RHOSP(Red Hat OpenStack Platform) 서비스는 OS::TripleO::Services::Timesync 입니다.
				
알려진 제한 사항
- 가상화된 컨트롤러의 NTP를 활성화하고 베어 메탈 노드에 PTP를 활성화합니다.
 - 
							
ptp4l에 호환되는 PTP 장치가 필요하기 때문에 virtio 인터페이스는 호환되지 않습니다. - 
							SR-IOV가 있는 VM에 물리적 기능(PF)을 사용합니다. VF(가상 기능)는 PTP에 필요한 레지스터를 노출하지 않으며 VM은 
kvm_ptp를 사용하여 시간을 계산합니다. - 여러 소스 및 여러 네트워크 경로가 있는 HA(고가용성) 인터페이스가 호환되지 않습니다.
 
절차
선택한 역할에 속하는 노드에서 Timemaster 서비스를 활성화하려면 해당 역할의
roles_data.yaml파일 섹션에서OS::TripleO::Services::Timesync가 포함된 행을OS::TripleO::Services::TimeMaster라인으로 교체합니다.#- OS::TripleO::Services::Timesync - OS::TripleO::Services::TimeMaster
#- OS::TripleO::Services::Timesync - OS::TripleO::Services::TimeMasterCopy to Clipboard Copied! Toggle word wrap Toggle overflow 사용하는 compute 역할의 heat 매개변수를 구성합니다.
#Example ComputeSriovParameters: PTPInterfaces: ‘0:eno1,1:eno2’ PTPMessageTransport: ‘UDPv4’
#Example ComputeSriovParameters: PTPInterfaces: ‘0:eno1,1:eno2’ PTPMessageTransport: ‘UDPv4’Copy to Clipboard Copied! Toggle word wrap Toggle overflow 사용자 환경과 관련된 다른 환경 파일과 함께
openstack overcloud deploy명령에 새 환경 파일을 추가합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 을 기존 배포의 일부인 환경 파일 목록으로 바꿉니다 <existing_overcloud_environment_files>.
 - <new_environment_file>을 오버클라우드 배포 프로세스에 포함할 새 환경 파일 또는 파일로 바꿉니다.
 
검증
ptp4linux와 함께 설치된phc_ctl명령을 사용하여 NIC 하드웨어 클록을 쿼리합니다.phc_ctl <clock_name> get phc_ctl <clock_name> cmp
# phc_ctl <clock_name> get # phc_ctl <clock_name> cmpCopy to Clipboard Copied! Toggle word wrap Toggle overflow 
10.9.3. timemaster 설정 예 링크 복사링크가 클립보드에 복사되었습니다!
10.9.4. timemaster 작업 예 링크 복사링크가 클립보드에 복사되었습니다!
11장. NFV 워크로드용 RT-KVM 활성화 링크 복사링크가 클립보드에 복사되었습니다!
Red Hat Enterprise Linux Real Time KVM(RT-KVM)을 쉽게 설치하고 구성하기 위해 Red Hat OpenStack Platform은 다음과 같은 기능을 제공합니다.
- Red Hat Enterprise Linux를 실시간으로 프로비저닝하는 실시간 컴퓨팅 노드 역할.
 - 추가 RT-KVM 커널 모듈.
 - 컴퓨팅 노드의 자동 구성입니다.
 
11.1. RT-KVM 컴퓨팅 노드 계획 링크 복사링크가 클립보드에 복사되었습니다!
RT-KVM 컴퓨팅 노드를 계획할 때 다음 작업이 완료되었는지 확인합니다.
RT-KVM 컴퓨팅 노드에 Red Hat 인증 서버를 사용해야 합니다.
자세한 내용은 Red Hat Enterprise Linux for Real Time 인증 서버를 참조하십시오.
언더클라우드를 등록하고 유효한 Red Hat OpenStack Platform 서브스크립션을 연결합니다.
자세한 내용은 Director 설치 및 사용 가이드의 언더클라우드 등록 및 서브스크립션 연결을 참조하십시오.
RT-KVM의
rhel-9-server-nfv-rpms리포지토리와 같이 언더클라우드에 필요한 리포지토리를 활성화하고 시스템 패키지를 최신 버전으로 업데이트합니다.참고이 리포지토리에 액세스하려면 별도의
Red Hat OpenStack Platform for Real TimeSKU 서브스크립션이 필요합니다.자세한 내용은 Director 설치 및 사용 가이드 의 언더클라우드용 리포지토리 활성화를 참조하십시오.
실시간 이미지 빌드
언더클라우드에 libguestfs-tools 패키지를 설치하여 virt-customize 툴을 가져옵니다.
sudo dnf install libguestfs-tools
(undercloud) [stack@undercloud-0 ~]$ sudo dnf install libguestfs-toolsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 중요언더클라우드에
libguestfs-tools패키지를 설치하는 경우 언더클라우드에서tripleo_iscsid서비스와 포트 충돌을 방지하기 위해iscsid.socket을 비활성화합니다.sudo systemctl disable --now iscsid.socket
$ sudo systemctl disable --now iscsid.socketCopy to Clipboard Copied! Toggle word wrap Toggle overflow 이미지를 추출합니다.
tar -xf /usr/share/rhosp-director-images/overcloud-full.tar tar -xf /usr/share/rhosp-director-images/ironic-python-agent.tar
(undercloud) [stack@undercloud-0 ~]$ tar -xf /usr/share/rhosp-director-images/overcloud-full.tar (undercloud) [stack@undercloud-0 ~]$ tar -xf /usr/share/rhosp-director-images/ironic-python-agent.tarCopy to Clipboard Copied! Toggle word wrap Toggle overflow 기본 이미지를 복사합니다.
cp overcloud-hardened-uefi-full.qcow2 overcloud-realtime-compute.qcow2
(undercloud) [stack@undercloud-0 ~]$ cp overcloud-hardened-uefi-full.qcow2 overcloud-realtime-compute.qcow2Copy to Clipboard Copied! Toggle word wrap Toggle overflow 사용자 지정과 관련된 Red Hat 리포지토리를 활성화하려면 이미지를 등록합니다. 다음 예제에서
[username]및[password]를 유효한 인증 정보로 교체합니다.virt-customize -a overcloud-realtime-compute.qcow2 --run-command \ 'subscription-manager register --username=[username] --password=[password]' \ subscription-manager release --set 8.4
virt-customize -a overcloud-realtime-compute.qcow2 --run-command \ 'subscription-manager register --username=[username] --password=[password]' \ subscription-manager release --set 8.4Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고보안을 위해 명령 프롬프트에서 사용 중인 경우 기록 파일에서 인증 정보를 제거할 수 있습니다.
history -d명령과 행 번호를 사용하여 기록에서 개별 행을 삭제할 수 있습니다.계정의 서브스크립션에서 풀 ID 목록을 찾아 적절한 풀 ID를 이미지에 연결합니다.
sudo subscription-manager list --all --available | less ... virt-customize -a overcloud-realtime-compute.qcow2 --run-command \ 'subscription-manager attach --pool [pool-ID]'
sudo subscription-manager list --all --available | less ... virt-customize -a overcloud-realtime-compute.qcow2 --run-command \ 'subscription-manager attach --pool [pool-ID]'Copy to Clipboard Copied! Toggle word wrap Toggle overflow NFV를 사용하여 Red Hat OpenStack Platform에 필요한 리포지토리를 추가합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이미지에서 실시간 기능을 구성하는 스크립트를 생성합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 스크립트를 실행하여 실시간 이미지를 구성합니다.
virt-customize -a overcloud-realtime-compute.qcow2 -v --run rt.sh 2>&1 | tee virt-customize.log
(undercloud) [stack@undercloud-0 ~]$ virt-customize -a overcloud-realtime-compute.qcow2 -v --run rt.sh 2>&1 | tee virt-customize.logCopy to Clipboard Copied! Toggle word wrap Toggle overflow 참고rt.sh스크립트 출력에 다음 행이 표시되면"grubby fatal error: unable to find a suitable template". . 에서는 이 오류를 무시할 수 있습니다.이전 명령에서 생성된
virt-customize.log파일을 검사하여rt.sh스크립트를 사용하여 패키지가 올바르게 설치되었는지 확인합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow SELinux의 레이블을 다시 지정합니다.
virt-customize -a overcloud-realtime-compute.qcow2 --selinux-relabel
(undercloud) [stack@undercloud-0 ~]$ virt-customize -a overcloud-realtime-compute.qcow2 --selinux-relabelCopy to Clipboard Copied! Toggle word wrap Toggle overflow vmlinuz 및 initrd를 추출합니다.
mkdir image guestmount -a overcloud-realtime-compute.qcow2 -i --ro image cp image/boot/vmlinuz-3.10.0-862.rt56.804.el7.x86_64 ./overcloud-realtime-compute.vmlinuz cp image/boot/initramfs-3.10.0-862.rt56.804.el7.x86_64.img ./overcloud-realtime-compute.initrd guestunmount image
(undercloud) [stack@undercloud-0 ~]$ mkdir image (undercloud) [stack@undercloud-0 ~]$ guestmount -a overcloud-realtime-compute.qcow2 -i --ro image (undercloud) [stack@undercloud-0 ~]$ cp image/boot/vmlinuz-3.10.0-862.rt56.804.el7.x86_64 ./overcloud-realtime-compute.vmlinuz (undercloud) [stack@undercloud-0 ~]$ cp image/boot/initramfs-3.10.0-862.rt56.804.el7.x86_64.img ./overcloud-realtime-compute.initrd (undercloud) [stack@undercloud-0 ~]$ guestunmount imageCopy to Clipboard Copied! Toggle word wrap Toggle overflow 참고vmlinuz및initramfs파일 이름의 소프트웨어 버전은 커널 버전에 따라 다릅니다.이미지를 업로드합니다.
openstack overcloud image upload --update-existing --os-image-name overcloud-realtime-compute.qcow2
(undercloud) [stack@undercloud-0 ~]$ openstack overcloud image upload --update-existing --os-image-name overcloud-realtime-compute.qcow2Copy to Clipboard Copied! Toggle word wrap Toggle overflow 
				선택한 컴퓨팅 노드에서 ComputeOvsDpdkRT 구성 가능 역할과 함께 사용할 수 있는 실시간 이미지가 있습니다.
			
RT-KVM 컴퓨팅 노드의 BIOS 설정 수정
RT-KVM 컴퓨팅 노드의 대기 시간을 줄이려면 컴퓨팅 노드 BIOS 설정에서 다음 매개변수에 대한 모든 옵션을 비활성화합니다.
- 전원 관리
 - Hyper-Threading
 - CPU 절전 상태
 - 논리 프로세서
 
11.2. RT-KVM을 사용하여 OVS-DPDK 구성 링크 복사링크가 클립보드에 복사되었습니다!
OVS-DPDK에 대해 OpenStack 네트워크를 최적화하려면 network-environment.yaml 파일에서 설정한 OVS-DPDK 매개변수에 대한 최상의 값을 결정해야 합니다. 자세한 내용은 워크플로우를 사용하여 DPDK 매개변수 비활성화를 참조하십시오.
11.2.1. ComputeOvsDpdk 구성 가능 역할 생성 링크 복사링크가 클립보드에 복사되었습니다!
					ComputeOvsDpdkRT 역할을 사용하여 실시간 컴퓨팅 이미지의 컴퓨팅 노드를 지정합니다.
				
					ComputeOvsDpdkRT 역할에 대한 roles_data.yaml 을 생성합니다.
				
(undercloud) [stack@undercloud-0 ~]$ openstack overcloud roles generate -o roles_data.yaml Controller ComputeOvsDpdkRT
# (undercloud) [stack@undercloud-0 ~]$ openstack overcloud roles generate -o roles_data.yaml Controller ComputeOvsDpdkRT
11.2.2. OVS-DPDK 매개변수 구성 링크 복사링크가 클립보드에 복사되었습니다!
						network-environment.yaml 파일에서 OVS-DPDK 매개변수에 가장 적합한 값을 확인하여 배포를 최적화합니다. 자세한 내용은 9.1절. “워크플로우를 사용하여 DPDK 매개변수 파생”의 내용을 참조하십시오.
					
resource_registry:에서 사용하는 OVS-DPDK 역할에 대한 NIC 구성을 추가합니다.resource_registry: # Specify the relative/absolute path to the config files you want to use for override the default. OS::TripleO::ComputeOvsDpdkRT::Net::SoftwareConfig: nic-configs/compute-ovs-dpdk.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::ComputeOvsDpdkRT::Net::SoftwareConfig: nic-configs/compute-ovs-dpdk.yaml OS::TripleO::Controller::Net::SoftwareConfig: nic-configs/controller.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow parameter_defaults에서 OVS-DPDK 및 RT-KVM 매개변수를 설정합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 
11.2.3. 오버클라우드 배포 링크 복사링크가 클립보드에 복사되었습니다!
ML2-OVS용 오버클라우드를 배포합니다.
11.3. RT-KVM 인스턴스 시작 링크 복사링크가 클립보드에 복사되었습니다!
실시간 활성화된 컴퓨팅 노드에서 RT-KVM 인스턴스를 시작하려면 다음 단계를 수행합니다.
오버클라우드에 RT-KVM 플레이버를 생성합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow RT-KVM 인스턴스를 시작합니다.
openstack server create --image <rhel> --flavor r1.small --nic net-id=<dpdk-net> test-rt
# openstack server create --image <rhel> --flavor r1.small --nic net-id=<dpdk-net> test-rtCopy to Clipboard Copied! Toggle word wrap Toggle overflow 인스턴스가 할당된 에뮬레이터 스레드를 사용하는지 확인하려면 다음 명령을 실행합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 
12장. 예제: VXLAN 터널링을 사용하여 OVS-DPDK 및 SR-IOV 구성 링크 복사링크가 클립보드에 복사되었습니다!
OVS-DPDK 및 SR-IOV 인터페이스를 모두 사용하여 컴퓨팅 노드를 배포할 수 있습니다. 클러스터에는 ML2/OVS 및 VXLAN 터널링이 포함됩니다.
				역할 구성 파일(예: roles_data.yaml )에서 오버클라우드 역할을 생성할 때 OS::TripleO::Services::Tuned 가 포함된 행을 주석 처리하거나 제거합니다.
			
ServicesDefault: # - OS::TripleO::Services::Tuned
ServicesDefault:
# - OS::TripleO::Services::Tuned
				OS::TripleO::Services::Tuned 를 주석 처리하거나 제거한 경우 요구 사항에 맞게 TunedProfileName 매개변수를 설정할 수 있습니다(예: "cpu-partitioning "). OS::TripleO::Services::Tuned 행을 주석 처리하거나 제거하지 않으면 TunedProfileName 매개변수는 사용자가 설정한 다른 값 대신 "throughput-performance" 의 기본값을 가져옵니다.
			
12.1. 역할 데이터 구성 링크 복사링크가 클립보드에 복사되었습니다!
				Red Hat OpenStack Platform은 roles_data.yaml 파일에서 기본 역할 세트를 제공합니다. 필요한 역할을 지원하기 위해 고유한 roles_data.yaml 파일을 생성할 수 있습니다.
			
				이 예제의 목적을 위해 ComputeOvsDpdkSriov 역할이 생성됩니다.
			
12.2. OVS-DPDK 매개변수 구성 링크 복사링크가 클립보드에 복사되었습니다!
OVS-DPDK에 대해 OpenStack 네트워크를 최적화하려면 network-environment.yaml 파일에서 설정한 OVS-DPDK 매개변수에 대한 최상의 값을 결정해야 합니다. 자세한 내용은 워크플로우를 사용하여 DPDK 매개변수 비활성화를 참조하십시오.
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.yamlresource_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.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow parameter_defaults에서 터널 유형을vxlan으로 설정하고 네트워크 유형을vxlan,vlan:로 설정합니다.NeutronTunnelTypes: 'vxlan' NeutronNetworkType: 'vxlan,vlan'
NeutronTunnelTypes: 'vxlan' NeutronNetworkType: 'vxlan,vlan'Copy to Clipboard Copied! Toggle word wrap Toggle overflow parameters_defaults에서 브리지 매핑을 설정합니다.# The OVS logical->physical bridge mappings to use. NeutronBridgeMappings: - dpdk-mgmt:br-link0
# The OVS logical->physical bridge mappings to use. NeutronBridgeMappings: - dpdk-mgmt:br-link0Copy to Clipboard Copied! Toggle word wrap Toggle overflow parameter_defaults에서ComputeOvsDpdkSriov역할의 역할별 매개변수를 설정합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고게스트 생성 중에 오류가 발생하지 않도록 하려면 각 NUMA 노드에 형제 스레드가 있는 하나 이상의 CPU를 할당합니다. 이 예에서
OvsPmdCoreList매개변수 값은 NUMA 0의 코어 2 및 22, NUMA 1의 코어 3 및 23을 나타냅니다.참고이러한 대규모 페이지는 가상 머신에서 사용하고 이 절차에 표시된 대로
OvsDpdkSocketMemory매개변수를 사용하는 OVS-DPDK에서도 사용됩니다. 가상 머신에 사용할 수 있는 대규모 페이지 수는부팅매개변수에서OvsDpdkSocketMemory를 뺀 값입니다.DPDK 인스턴스와 연결된 플레이버에도
hw:mem_page_size=1GB를 추가해야 합니다.참고OvsDpdkMemoryChannels는 이 프로세스에 필요한 설정입니다. optimal operation을 위해 적절한 매개변수 및 값을 사용하여 DPDK를 배포하십시오.SR-IOV의 역할별 매개변수를 구성합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 
12.3. 컨트롤러 노드 구성 링크 복사링크가 클립보드에 복사되었습니다!
격리된 네트워크에 대한 control-plane Linux 본딩을 생성합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 Linux 본딩에 VLAN을 할당합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow OVS 브리지를 만들어
neutron-dhcp-agent및neutron-metadata-agent서비스에 액세스합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 
12.4. DPDK 및 SR-IOV의 컴퓨팅 노드 구성 링크 복사링크가 클립보드에 복사되었습니다!
				기본 compute.yaml 파일에서 computeovsdpdksriov.yaml 파일을 생성하고 다음과 같이 변경합니다.
			
격리된 네트워크에 대한 control-plane Linux 본딩을 생성합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 Linux 본딩에 VLAN을 할당합니다.
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여야 합니다. Red Hat OpenStack Platform은 동일한 노드에 있는ovs_bridge및ovs_user_bridge를 모두 지원하지 않습니다.
12.5. 오버클라우드 배포 링크 복사링크가 클립보드에 복사되었습니다!
- 
						
overcloud_deploy.sh스크립트를 실행합니다. 
13장. NFV를 사용하여 Red Hat OpenStack 플랫폼 업그레이드 링크 복사링크가 클립보드에 복사되었습니다!
OVS-DPDK가 구성된 상태에서 RHOSP(Red Hat OpenStack Platform) 업그레이드에 대한 자세한 내용은 Upgrades (13 to 16.2) 가이드의 NFV(네트워크 기능 가상화 준비 ) 가이드를 참조하십시오.
14장. 샘플 DPDK SR-IOV YAML 파일 링크 복사링크가 클립보드에 복사되었습니다!
이 섹션에서는 동일한 컴퓨팅 노드에 SR-IOV(Single Root I/O Virtualization) 및 DPDK(Data Plane Development Kit) 인터페이스를 추가하기 위한 참조로 샘플 yaml 파일을 제공합니다.
이러한 템플릿은 완전히 구성된 환경에서 가져온 것이며 NFV와 관련이 없는 매개변수를 포함하며 배포에 적용되지 않을 수 있습니다. 구성 요소 지원 수준 목록은 Red Hat 지식 베이스 솔루션 구성 요소 지원 검토를 참조하십시오.
14.1. roles_data.yaml 링크 복사링크가 클립보드에 복사되었습니다!
openstack overcloud roles generate명령을 실행하여roles_data.yaml파일을 생성합니다.Controller,ComputeSriov, ComputeOvsDpdkRT,ComputeOvsDpdkRT또는 기타 역할과 같이 환경에 배포하려는 역할에 따라 명령에 역할 이름을 포함합니다.예
예를 들어
Controller및ComputeHCIOvsDpdkSriov역할이 포함된roles_data.yaml파일을 생성하려면 다음 명령을 실행합니다.openstack overcloud roles generate -o roles_data.yaml \ Controller ComputeHCIOvsDpdkSriov
$ openstack overcloud roles generate -o roles_data.yaml \ Controller ComputeHCIOvsDpdkSriovCopy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow