본 제품에 대한 문서 세트는 편견 없는 언어를 사용하기 위해 노력합니다. 본 설명서 세트의 목적상, 편견 없는 언어는 나이, 장애, 성별, 인종 정체성, 민족 정체성, 성적 지향성, 사회 경제적 지위 및 교차성에 기초한 차별을 의미하지 않는 언어로 정의됩니다. 제품 소프트웨어의 사용자 인터페이스에서 하드코딩된 언어, RFP 설명서에 기초한 언어 또는 참조된 서드파티 제품에서 사용하는 언어로 인해 설명서에 예외가 있을 수 있습니다. 시스코에서 어떤 방식으로 포용적인 언어를 사용하고 있는지 자세히 알아보세요.
Cisco는 전 세계 사용자에게 다양한 언어로 지원 콘텐츠를 제공하기 위해 기계 번역 기술과 수작업 번역을 병행하여 이 문서를 번역했습니다. 아무리 품질이 높은 기계 번역이라도 전문 번역가의 번역 결과물만큼 정확하지는 않습니다. Cisco Systems, Inc.는 이 같은 번역에 대해 어떠한 책임도 지지 않으며 항상 원본 영문 문서(링크 제공됨)를 참조할 것을 권장합니다.
이 문서에서는 SR-IOV 및 Active-Backup 결합을 사용하여 OpenStack CVIM(Cisco Virtualized Infrastructure Manager)에서 CPNR을 단계적으로 구축하는 방법을 설명합니다.
다음 주제에 대한 지식을 보유하고 있으면 유용합니다.
이 문서는 특정 소프트웨어 및 하드웨어 버전으로 한정되지 않습니다.
이 문서의 정보는 특정 랩 환경의 디바이스를 토대로 작성되었습니다. 이 문서에 사용된 모든 디바이스는 초기화된(기본) 컨피그레이션으로 시작되었습니다. 현재 네트워크가 작동 중인 경우 모든 명령의 잠재적인 영향을 미리 숙지하시기 바랍니다
현재 네트워킹 환경에서 VNF(Virtual Network Function)는 민첩하고 확장 가능하며 효율적인 네트워크 서비스를 활성화하는 데 중요한 역할을 합니다. 고성능 네트워크 연결이 필요한 VNF의 경우 SR-IOV가 일반적으로 사용되는 기술입니다. SR-IOV를 통해 VNF는 하이퍼바이저 가상 스위치를 우회하고 물리적 NIC(Network Interface Controller) 리소스에 직접 액세스할 수 있으므로 레이턴시를 줄이고 처리량을 높일 수 있습니다.
구축을 계속하기 전에 이러한 전제 조건을 충족하는지 확인하십시오.
Intel XL710 및 E810CQDA2 NIC 카드는 일반적으로 고성능 SR-IOV 네트워킹에 사용됩니다. 호스트에서 NIC 카드 모델을 확인하려면 다음 단계를 참조하십시오.
네트워크 컨트롤러와 관련된 PCI(Peripheral Component Interconnect) 디바이스를 나열하려면 이 명령을 실행합니다.
lspci | grep -i ethernet
출력 예:
81:00.0 Ethernet controller: Intel Corporation Ethernet Controller XL710 for 40GbE QSFP+ (rev 02)
82:00.0 Ethernet controller: Intel Corporation Ethernet Controller E810-C for QSFP (rev 03)
NIC가 Intel XL710인 경우, 출력에서 이더넷 컨트롤러 XL710을 볼 수 있습니다.
NIC가 Intel E810CQDA2인 경우 이더넷 컨트롤러 E810-Cin이 출력에 표시됩니다.
사용 중인 NIC 드라이버를 확인하려면 다음을 실행합니다.
ethtool -i
XL710의 출력 예:
driver: i40e
version: 2.13.10
E810CQDA2의 출력 예:
driver: ice
version: 1.7.12
드라이버 버전이 OpenStack 및 Linux 배포판의 호환성 매트릭스와 일치하는지 확인합니다.
서버 BIOS/UEFI에서 SR-IOV가 활성화되어 있는지 확인합니다.
Intel VT-d 또는 AMD-Vi는 PCI 패스스루 및 SR-IOV 기능을 활성화해야 합니다.
Nova, Neutron, Glance, Keystone 등의 OpenStack 서비스가 설치 및 구성되어 있는지 확인합니다.
Neutron은 오케스트레이션/관리 네트워크용 OVS(Openvswitch)와 애플리케이션/서비스 네트워크용 SR-IOV를 모두 지원해야 합니다.
컴퓨팅 노드는 NIC에서 생성된 VF(Virtual Function)와 함께 SR-IOV를 지원하도록 구성해야 합니다.
CPNR VNF 이미지는 SR-IOV 인터페이스를 지원하고 필요한 드라이버를 포함해야 합니다.
CPNR VNF 이미지를 OpenStack Glance에서 사용할 수 있는지 확인합니다.
OpenStack CLI에 액세스하여 네트워크 생성, 기능, VNF 시작을 보장합니다.
Linux 호스트 및 VNF 내에서 네트워킹을 구성하기 위한 루트 또는 관리 액세스
SRIOV
다음은 test-tenant라는 테넌트와 sriov-vm-1이라는 VM에 대해 SR-IOV 네트워킹(type>direct</type>)을 사용하는 VM 구축을 보여 주는 샘플 Cisco ESC(Elastic Services Controller) XML입니다. 여기에는 SR-IOV(direct) 인터페이스를 비롯한 여러 인터페이스가 포함됩니다.
test-tenant
true
false
sriov-vm-deployment
sriov-vm-1-group
vim1
default
sriov-image
custom-flavor
300
30
REBOOT_ONLY
0
mgmt-net
192.168.10.101
1
direct
sriov-net-1
0
sriov-subnet-1
10.10.10.10
2
direct
sriov-net-2
0
sriov-subnet-2
10.10.20.10
1
1
false
--user-data
file://tmp/init/sriov-vm-1.cfg
<interface>의 type>direct</type>는 해당 NIC에 대한 SR-IOV(PCI passthrough)를 활성화합니다.
각 SR-IOV 인터페이스에는 자체 네트워크 및 서브넷이 있습니다.
필요에 따라 <addresses>에서 IPv4/IPv6를 연결할 수 있습니다.
Cisco ESC XML을 전달할 샘플 Day0 파일:
Content-Type: multipart/mixed; boundary="===============2678395050260980330=="
MIME-Version: 1.0`
--===============2678395050260980330==
MIME-Version: 1.0
Content-Type: text/cloud-boothook; charset="us-ascii"
#cloud-boothook
#!/bin/bash
if [ ! -f /etc/cloud/cloud.cfg.orig ]; then
cp /etc/cloud/cloud.cfg /etc/cloud/cloud.cfg.orig
cp /etc/cloud/cloud.cfg.norootpasswd /etc/cloud/cloud.cfg
fi
--===============2678395050260980330==
MIME-Version: 1.0
Content-Type: text/cloud-config; charset="us-ascii"
#cloud-config
hostname: cpnr
ssh_authorized_keys:
- ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC7pf8gvOWH/Zv8iAlTv6LWEiPGA3B6t96G6LwTHF6iXOqQxyIUkg8IkqZ6wNwxsDV8DYESOzFGp//aXO6wZDtoawMExe9sNEx0qVOt/ueP3IYQ8731fNJwFtWQsCQTM7VQjpcg5/d6eMxQ8zvmiIYo2huwfclE+zLdihjL/Y6v4HK760u/DQ+OaEIgqTgrwePJK5Db/gMDf+oXI9KvNxDb2vtxzroX0APEnZ9JX+Ic0JGWTkD4smMkTdWsjaqDYXqW6SUsyCc4Bf9tHL5Irr1AgUR4hEbLnbk6NlIqWrgVeI5CQVMMFpWqV0o2hyDz2rMA7tbBeYzD/ynslQAerU7DmBRb1FDVh79+JeaCNIM8EpwbCUKHT6CQAjPK8cYBieO1yEHKjHyFTsZgpvdi4rVMP+Qsvab+J5RPPcJeKj7o8KIrtyyESXbLNcZv1uGwZ8nLZKfZQSJP04HUkRKoQJ/JoMvMurEKG/cJ1VtocV4AJiRHj+367D3uzrKd6eHYlM9oD+zpPeJ1P1J2TDPUp2K7GcKCrItn9blSGo/n/+gYBO793QjSdkmc/Ag4TEVhUfG17l0WlSvAw4L0csMlYBAGGqKAUEEx3BJGYNJ851bj23m6JBe83OVWGRWrDIIE+G14/tx8qYXDaFxFUFPb2zj+gmDXq80hYpv++/yFtTocbw== cpnr@INVITN14SLM1BULD01CO
- ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDAmkQGCZUrYqkZ0C0J9t7mF9La9zYOqfzzFkk1wWtPga+aANOaFgjqbjj+VlBdd3zJy1p6BMWZhaZIcOh0+knCisJArcHM3HlurQZXO45zHtBcm7tB1FQ0W1HI9GbvJ+IPIe7kpPme/socd5ytTx0ZkYtlcRDDZuxTwYY4P4/vpnzXuwPS2dfcfQscubj6MkSlx4JHhc/hkDsmtJUipkWEungE/UsldjQzkj8oJorymYHQXE/czNxwzCGizK1YinhebeHFcmHd6Jcqd5oZZWnmkGKGeW6o0ddSFI5NmwzHd5RzwjztU2nqmiyOA8mu7YkCm6X82uhACwQlfY0pGRpTVkIhlf+tKDwKQRuwpcbR1ZUHmli0zi5QZtbzc31aLNlUPpR21BptS4GSfbKJaMOaDUClfe8rGk+9GCgm6wnZiT+SMa4/wEA9NILlwobrwHxVsb/kFlFKXg0aPkdvmqWPNcd09vF50enrs0aXFsqCyl6CPMJpZtGAgckvX8iU2bCJkxzD9F4rAu2D/FNb8KG5cbw7uptiwB4yoek6Q36NyxHYYJyOGiV4oQJ02T9MRPkvjLf7ASx9HA25nG+J4CZXWkuV7XYX1N5DFvOg/kwA7xMPyNgTEkblTRpIcfXU2PCWYSZcn1vYmsazf2uVCY+mjfLcvi85c/1mLnUGikiovQ== admin@invitn14slm1escx01co
runcmd:
- /usr/sbin/useradd FMLVL1 -d /home/FMLVL1 -s /bin/bash -g users; (/bin/echo changeme; /bin/echo changeme) | /usr/bin/passwd FMLVL1
- nmcli con add type ethernet con-name eth0 ifname eth0 ip4 10.xx.xx.xx/24
- nmcli con add type ethernet con-name eth1 ifname eth1 ip4 172.xx.xx.xx/23
- nmcli connection add type bond con-name bond0 ifname bond0 bond.options "mode=active-backup,miimon=1000,fail_over_mac=1" ipv4.addresses 'xx.xx.xx.xx/29' ipv4.gateway 'xx.xx.xx.xx' ipv4.method manual ipv6.addresses '2402:xxxx:xx:0025::5/64' ipv6.gateway '2402:xxxx:xx:0025::1' ipv6.method manual
- nmcli connection add type ethernet ifname ens6 master bond0
- nmcli connection add type ethernet ifname ens7 master bond0
- nmcli con up eth0
- nmcli con up eth1
- nmcli con up bond-slave-ens6
- nmcli con up bond-slave-ens7
- nmcli con down bond0
- nmcli con up bond0
- nmcli connection reload
- hostnamectl set-hostname CPNRDNS01CO
--===============2678395050260980330==
CPNR은 기업 및 서비스 공급자 네트워크를 위해 IPAM(IP 주소 관리), DHCP 및 DNS(Domain Name Server) 서비스를 제공하는 중요한 VNF(Virtual Network Function)입니다. OpenStack에서 CTNR을 VNF로 구축하려면 특히 이중화와 성능을 위해 SR-IOV 포트, 교차 NUMA 컨피그레이션 및 Active-Backup 본드 인터페이스를 활용할 때 신중한 계획이 필요합니다.
이 문서에서는 OpenStack에 CPNR VNF를 구축하기 위한 단계별 프로세스에 대해 설명합니다. 여기에는 다음이 포함됩니다.
NUMA 간 인식:
액티브-백업 연결:
OpenStack 네트워킹:
NUMA는 각 CPU(및 로컬 메모리 및 디바이스)가 NUMA 노드로 그룹화되는 메모리 아키텍처입니다. OpenStack에서 NUMA 인식 배치는 VNF가 동일한 NUMA 노드의 리소스에 최적으로 할당되도록 하여 레이턴시를 최소화하고 성능을 극대화합니다.
SR-IOV NIC는 NUMA-Local입니다.
단일 NUMA 모드 제한:
CPNR VNF에서는 다음 항목에 액세스해야 합니다.
이 구축에서 CPNR VNF는 이중화 및 고가용성을 제공하기 위해 NUMA 0(sriov0) 및 NUMA 1(sriov1) 둘 다에서 SR-IOV NIC에 액세스해야 합니다. 이를 위해 다음을 수행합니다.
Conntrack은 네트워크 연결, 특히 NAT(Network Address Translation) 및 방화벽 규칙을 추적하는 데 사용되는 Linux 커널 기능입니다. OpenStack의 OVS 기반 포트의 경우 conntrack을 사용하여 연결 상태를 관리하고 보안 그룹 규칙을 적용합니다.
Conntrack 테이블:
기본 제한:
OVS 포트에 미치는 영향:
Conntrack 테이블 크기 증가:
sysctl net.netfilter.nf_conntrack_max
sysctl -w net.netfilter.nf_conntrack_max=262144
echo "net.netfilter.nf_conntrack_max=262144" >> /etc/sysctl.conf
Conntrack 사용 모니터링:
contrack 통계를 확인합니다.cat /proc/sys/net/netfilter/nf_conntrack_count
보안 그룹 규칙 최적화:
OVS 포트에 적용되는 규칙의 수를 줄여 contrack 오버헤드를 최소화합니다.SR-IOV 포트는 contrack과 같은 OVS 데이터 경로 및 Linux 커널 기능을 우회합니다. 그러면 연결 추적 오버헤드가 완전히 제거됩니다.
conntrack 테이블 크기(nf_conntrack_max)에 의해 제한되는 OVS 포트와 달리 SR-IOV 포트는 사실상 무제한의 연결을 처리할 수 있습니다.
SR-IOV 포트는 패킷 처리를 NIC 하드웨어로 오프로드함으로써 소프트웨어 기반 Conntrack 처리로 인한 지연 시간을 제거합니다.
Active-Backup 연결 모드는 단순성, 내결함성, SR-IOV 인터페이스와의 호환성 때문에 이 구축에 특히 적합합니다. 그 이유는 다음과 같습니다.
액티브-백업 모드는 기본 물리적 스위치 또는 하드웨어와 독립적으로 작동합니다. 장애 조치 로직은 전적으로 Linux 커널에 상주하므로 휴대성과 활용성이 우수합니다.
SR-IOV VF는 특정 물리적 NIC 및 NUMA 노드에 연결됩니다. Active-Backup 모드를 사용하면 서로 다른 NUMA 노드의 VF를 단일 논리 본드 인터페이스(bond0)로 결합할 수 있습니다. 이를 통해 고가용성을 보장하는 동시에 NUMA 리소스를 효율적으로 사용할 수 있습니다.
Active-Backup 모드는 Linux 연결에서 가장 간단하고 널리 사용되는 모드 중 하나입니다. 연결된 인터페이스 중 하나에 장애가 발생하더라도 트래픽이 계속 원활하게 흐르도록 하여 높은 가용성을 제공하도록 설계되었습니다. 이는 액티브-백업 모드가 작동하는 방식, 주요 특성 및 이점에 대한 심층적인 설명입니다.
Linux의 본드 인터페이스는 둘 이상의 네트워크 인터페이스를 하나의 논리적 인터페이스로 결합합니다. 이 논리적 인터페이스는 bond(예: bond0)라고 하며 다음을 제공합니다.
Active-Backup 모드에서는 트래픽을 전송 및 수신하기 위해 지정된 시간에 하나의 인터페이스(액티브 인터페이스라고 함)만 사용됩니다. 다른 인터페이스는 대기 모드로 유지됩니다. 액티브 인터페이스에 오류가 발생하면 스탠바이 인터페이스 중 하나가 액티브 상태로 올려지고, 트래픽이 자동으로 새 액티브 인터페이스로 다시 라우팅됩니다.
단일 활성 인터페이스:
자동 장애 조치:
페일백 지원:
장애가 발생한 인터페이스가 복원되면 연결 컨피그레이션에 따라 자동으로 다시 액티브 상태가 되거나(활성화되도록 구성된 경우) 스탠바이 모드가 유지됩니다.스위치측 요구 사항 없음:
모니터링:
매개변수를
사용하여 모든 멤버 인터페이스의 상태를 지속적으로 모니터링합니다.액티브 인터페이스:
모니터링:
활성 인터페이스의 링크 실패:
액티브 인터페이스(eth2)에 장애가 발생하면(예: 케이블 언플러그, NIC 하드웨어 장애 또는 링크 다운) 본드는 ARP 모니터링을 사용하여 장애를 즉시 감지합니다.자동 장애 조치:
페일오버 적시성:
장애 조치 프로세스는 거의 즉각적입니다(일반적으로 몇 밀리초 이내, 시간 간격에 따라).실패한 인터페이스 복원:
트래픽 연속성:
페일백이 원활하여 지속적인 트래픽 플로우에 지장을 주지 않습니다.Active-Backup 모드는 다음과 같은 이유로 SR-IOV 인터페이스에 특히 적합합니다.
예를 들면 다음과 같습니다.
CPNR VNF에는 다음과 같은 4개의 네트워크가 필요합니다.
단계별 구축:
오케스트레이션 네트워크:
openstack network create --provider-network-type vxlan orchestration-network
관리 네트워크:
openstack network create --provider-network-type vxlan management-network
오케스트레이션 서브넷:
openstack subnet create --network orchestration-network \
--subnet-range 192.168.100.0/24 orchestration-subnet
관리 서브넷:
openstack subnet create --network management-network \
--subnet-range 10.10.10.0/24 management-subnet
SR-IOV 네트워크 1:
openstack network create --provider-network-type vlan \
--provider-physical-network sriov0 --provider-segment 101 sriov-network-1
SR-IOV 네트워크 2:
openstack network create --provider-network-type vlan \
--provider-physical-network sriov1 --provider-segment 102 sriov-network-2
VNF가 두 NUMA 노드 모두에서 SR-IOV NIC에 액세스할 수 있도록 하려면 교차 NUMA 지원을 통해 기능을 생성합니다.
openstack flavor create --ram 8192 --vcpus 4 --disk 40 cross-numa-flavor
NUMA 관련 속성을 설정합니다.
openstack flavor set cross-numa-flavor \
--property hw:numa_nodes=2 \
--property hw:cpu_policy=dedicated \
--property hw:mem_page_size=large
VNF를 시작한 후 VNF의 SR-IOV 포트(eth2 및 eth3)에 대한 본드 인터페이스를 구성합니다.
Active-Backup 모드에서 본드 인터페이스(bond0)를 생성합니다.
vi /etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
BOOTPROTO=static
ONBOOT=yes
BONDING_OPTS="mode=active-backup miimon=100"
IPADDR=172.16.1.10
NETMASK=255.255.255.0
GATEWAY=172.16.1.1
eth2:
vi /etc/sysconfig/network-scripts/ifcfg-eth2
DEVICE=eth2
ONBOOT=yes
MASTER=bond0
SLAVE=yes
eth3:
vi /etc/sysconfig/network-scripts/ifcfg-eth3
DEVICE=eth3
ONBOOT=yes
MASTER=bond0
SLAVE=yes
컨피그레이션을 적용하려면 네트워크 서비스를 다시 시작하십시오.
systemctl restart network
VNF를 구축한 후 다음 단계를 사용하여 기능을 확인합니다.
VNF 인스턴스가 활성 상태인지 확인합니다.
openstack server show cpnr-instance
상태가 ACTIVE인지 확인합니다.
Ping 테스트: VNF가 모든 네트워크를 통해 통신할 수 있는지 확인합니다.
ping
ping
결합 인터페이스:
bond0이 활성 상태인지 확인합니다.
cat /proc/net/bonding/bond0
검색 대상:
VNF가 두 NUMA 노드의 리소스를 모두 사용하고 있는지 확인합니다.
nova show --human | grep numa
모니터링 및 문제 해결: SR-IOV 인터페이스를 모니터링하려면 다음과 같은 도구를 사용합니다.
Security: 물리적 네트워크에 대한 액세스를 신중하게 관리하고 테넌트 간에 엄격한 격리를 적용합니다.
확장: 사용 가능한 VF의 수가 NIC 하드웨어에 의해 제한되므로 SR-IOV 구축을 확장할 때 물리적 NIC 용량을 계획합니다.
구축이 예상대로 작동하지 않을 경우 다음 트러블슈팅 단계를 참조하십시오.
dmesg | grep -i "SR-IOV"
lspci | grep Ethernet
VNF에서 두 NIC에 모두 액세스할 수 없는 경우 cross-NUMA 모드가 활성화되었는지 확인합니다.
openstack flavor show cross-numa-flavor
cat /proc/net/bonding/bond0
systemctl restart network
openstack port list --server cpnr-instance
ip addr show
SR-IOV 포트를 사용하여 OpenStack에 CPNR VNF를 구축하려면 VNF가 두 NUMA 노드의 NIC에 연결할 수 있도록 교차 NUMA 모드가 필요합니다. 이는 OpenStack이 단일 NUMA 모드의 VNF를 VNF가 실행되는 NUMA 노드 내의 리소스(NIC, CPU, 메모리)에만 액세스하도록 제한하기 때문에 필수적입니다. Cross-NUMA 모드와 Active-Backup 결합을 결합하면 고가용성, 내결함성 및 효율적인 리소스 활용이 보장되므로 복원력과 성능이 뛰어납니다.
개정 | 게시 날짜 | 의견 |
---|---|---|
1.0 |
10-Jul-2025 |
최초 릴리스 |