SR-IOV 및 PCI
이 섹션에는 KVM에 구축된 vSRX 가상 방화벽 인스턴스의 SR-IOV에 대한 다음 주제가 포함되어 있습니다.
SR-IOV 개요
KVM 기반 vSRX 가상 방화벽은 단일 루트 I/O 가상화(SR-IOV) 인터페이스 유형을 지원합니다. SR-IOV는 단일 물리적 NIC가 VM( 가상 머신 )이 연결할 수 있는 여러 vNIC 또는 VF(가상 기능)로 표시될 수 있도록 하는 표준입니다. SR-IOV는 Intel VT-d와 같은 다른 가상화 기술과 결합하여 VM의 I/O 성능을 향상시킵니다. SR-IOV를 사용하면 각 VM이 VM에 연결된 VF에 대해 대기 중인 패킷에 직접 액세스할 수 있습니다. 물리적 베어메탈 인터페이스에 근접한 I/O 성능이 필요할 때 SR-IOV를 사용합니다.
SR-IOV 인터페이스를 사용하는 구축에서 MAC 주소가 vSRX 가상 방화벽 Junos OS 인터페이스에 할당되면 패킷이 손실됩니다. 이 문제는 SR-IOV가 PF 또는 VF에서 MAC 주소 변경을 허용하지 않기 때문에 발생합니다.
KVM의 SR-IOV는 인터페이스 번호를 다시 매핑하지 않습니다. vSRX 가상 방화벽 VM XML 파일의 인터페이스 시퀀스는 vSRX 가상 방화벽 인스턴스의 Junos OS CLI에 표시된 인터페이스 시퀀스와 일치합니다.
SR-IOV는 두 가지 PCI 기능을 사용합니다.
물리적 기능(PF)—SR-IOV 기능을 포함하는 전체 PCIe 장치. 물리적 기능은 일반 PCI 디바이스로 검색, 관리 및 구성됩니다. 물리적 기능은 가상 기능을 할당하여 SR-IOV 기능을 구성하고 관리합니다. SR-IOV를 사용하지 않도록 설정하면 호스트는 하나의 물리적 NIC에 단일 PF를 만듭니다.
가상 기능(VF) - I/O만 처리하는 간단한 PCIe 기능입니다. 각 가상 함수는 물리적 함수에서 파생됩니다. 디바이스가 가질 수 있는 가상 기능의 수는 디바이스 하드웨어에 의해 제한됩니다. 단일 이더넷 포트인 물리적 디바이스는 게스트와 공유할 수 있는 많은 가상 기능에 매핑될 수 있습니다. SR-IOV를 사용하도록 설정하면 호스트는 하나의 물리적 NIC에 단일 PF와 여러 VF를 만듭니다. VF 수는 구성 및 드라이버 지원에 따라 다릅니다.
트러스트 모드가 비활성화된 상태에서 SR-IOV HA 지원(KVM만 해당)
트러스트 모드가 비활성화된 상태에서 SR-IOV HA 지원 이해(KVM만 해당)
RETH(Redundant Ethernet Interface)는 SRX 클러스터의 각 참여 노드에서 동일한 수의 멤버 인터페이스로 구성된 가상 인터페이스입니다. IP 주소, QoS, 영역 및 VPN과 같은 모든 논리적 구성은 이 인터페이스에 바인딩됩니다. 물리적 속성은 멤버 또는 자식 인터페이스에 적용됩니다. RETH 인터페이스에는 클러스터 ID를 사용하여 계산되는 가상 MAC 주소가 있습니다. RETH는 Junos OS에서 통합 인터페이스/LAG로 구현되었습니다. LAG의 경우 상위(논리적) IFD MAC 주소가 각 하위 인터페이스에 복사됩니다. RETH 인터페이스 아래에 하위 인터페이스를 구성하면 하위 물리적 인터페이스의 필드에서 current MAC address RETH 인터페이스의 가상 MAC를 덮어씁니다. 또한 해당 NIC에서 가상 MAC 주소를 프로그래밍해야 합니다.
Junos OS는 vSRX 가상 방화벽에서 VM으로 실행됩니다. Junos OS는 NIC에 직접 액세스할 수 없으며 하이퍼바이저에서 제공하는 가상 NIC 액세스만 가지며, 이는 동일한 호스트 시스템에서 실행되는 다른 VM과 공유될 수 있습니다. 이 가상 액세스에는 NIC에서 가상 MAC 주소를 프로그래밍하는 데 필요한 트러스트 모드라는 특수 모드와 같은 특정 제한 사항이 있습니다. 배포 중에는 보안 문제가 발생할 수 있으므로 신뢰 모드 액세스를 제공하지 못할 수 있습니다. 이러한 환경에서 RETH 모델이 작동할 수 있도록 MAC 재작성 동작이 수정됩니다. 상위 가상 MAC 주소를 하위 항목으로 복사하는 대신 하위 항목의 물리적 MAC 주소를 그대로 유지하고 클러스터의 활성 노드에 속한 하위 항목의 물리적 MAC 주소를 reth 인터페이스의 현재 MAC 에 복사합니다. 이렇게 하면 신뢰 모드가 비활성화된 경우 MAC 재작성 액세스가 필요하지 않습니다.
vSRX 가상 방화벽의 경우 DPDK는 하이퍼바이저에서 제공하는 물리적 MAC 주소를 읽고 Junos OS 컨트롤 플레인과 공유합니다. 독립형 모드에서 이 물리적 MAC 주소는 물리적 IFD에 프로그래밍됩니다. 그러나 클러스터 모드에서는 동일한 기능을 지원할 수 없으며, 이로 인해 물리적 인터페이스의 MAC 주소를 주니퍼가 예약한 MAC 풀에서 가져옵니다. 트러스트 모드를 사용할 수 없는 환경에서는 하이퍼바이저가 물리적 MAC 주소를 제공할 수 없습니다.
이 문제를 극복하기 위해 예약된 MAC 풀에서 할당하는 대신 하이퍼바이저에서 제공하는 물리적 MAC 주소를 사용하도록 지원을 추가했습니다. 신뢰 모드가 비활성화된 상태에서 SR-IOV 지원 구성(KVM만 해당)을 참조하십시오.
트러스트 모드가 비활성화된 상태에서 SR-IOV 지원 구성(KVM만 해당)

Junos OS 릴리스 19.4R1부터 SR-IOV HA는 트러스트 모드가 비활성화된 상태에서 지원됩니다. 계층 수준에서 및 use-actual-mac-on-physical-interfaces
구성 문을 구성 use-active-child-mac-on-reth
하여 [edit chassis cluster]
이 모드를 활성화할 수 있습니다. 클러스터에서 명령을 구성하는 경우 하이퍼바이저는 하위 물리적 인터페이스의 MAC 주소를 할당하고 상위 RETH 인터페이스의 MAC 주소를 활성 하위 물리적 인터페이스의 MAC 주소로 덮어씁니다
수익 인터페이스가 SR-IOV인 경우에만 신뢰 모드가 비활성화된 상태에서 SR-IOV를 구성할 수 있습니다. 패브릭 인터페이스 또는 링크는 실제 MAC 물리적 인터페이스가 구성되면 신뢰 모드가 비활성화된 SR-IOV를 사용할 수 없습니다.
수익 인터페이스만 SR-IOV인 경우 신뢰 모드가 비활성화된 상태에서 SRIOV를 사용할 수 있습니다.
이 모드를 활성화하려면 vSRX 가상 방화벽 인스턴스를 재부팅해야 합니다. 명령을 적용하려면 클러스터의 두 노드를 모두 재부팅해야 합니다.
이 기능을 활성화하려면 명령을 use-active-child-mac-on-reth
함께 use-actual-mac-on-physical-interfaces
구성해야 합니다.
또한보십시오
제한
KVM에서 신뢰 모드가 비활성화된 SR-IOV HA 지원에는 다음과 같은 제한 사항이 있습니다.
신뢰 모드가 비활성화된 SR-IOV HA 지원은 KVM 기반 시스템에서만 지원됩니다.
reth 인터페이스는 각 vSRX 가상 방화벽 클러스터 노드에서 최대 하나의 포트를 멤버로 가질 수 있습니다.
NAT 풀의 IP 주소에 대한 페일오버 시 G-ARP가 전송되지 않으므로 NAT 풀에 기능을 사용할
security nat proxy-arp
수 없습니다. 대신 업스트림 라우터의 NAT 풀 범위에 대한 경로를 설정하여 vSRX 가상 방화벽 reth 인터페이스의 IP 주소를 다음 홉으로 가리킬 수 있습니다. 또는 직접 연결된 호스트가 NAT 풀 주소에 액세스해야 하는 경우 reth 인터페이스에서 프록시 ARP에 대해 이러한 NAT 풀 주소를 구성할 수 있습니다.reth 인터페이스가 많은 VLAN으로 구성된 경우 페일오버에서 모든 G-ARP를 전송하는 데 다소 시간이 걸릴 수 있습니다. 이로 인해 트래픽이 눈에 띄게 중단될 수 있습니다.
데이터부 페일오버로 인해 reth 인터페이스의 MAC 주소가 변경됩니다. 따라서 페일오버는 직접 연결된 인접 레이어 3 디바이스(라우터 또는 서버)에 투명하지 않습니다. vSRX 가상 방화벽 주소 IP 주소는 인접 디바이스의 ARP 테이블에 있는 새 MAC 주소에 매핑되어야 합니다. vSRX 가상 방화벽은 이러한 디바이스에 도움이 되는 G-ARP를 전송합니다. 이러한 인접 디바이스가 vSRX 가상 방화벽에서 수신한 G-ARP에서 작동하지 않거나 느린 응답을 보이는 경우, 해당 디바이스가 ARP 테이블을 올바르게 업데이트할 때까지 트래픽이 중단될 수 있습니다.
-
다음 vSRX 가상 방화벽 기능은 SR-IOV 인터페이스를 사용하는 구축에서 지원되지 않습니다.
이러한 제한 사항은 PF 드라이버를 업데이트하거나 제어할 수 없는 배포에 적용됩니다. 지원되는 주니퍼 네트웍스 디바이스에 vSRX 가상 방화벽을 구축할 때는 제한이 적용되지 않습니다.
-
고가용성(HA)
-
IRB 인터페이스
-
IPv6 주소 지정
-
점보 프레임
-
레이어 2 지원
-
OSPF 및 IPv6과 같은 다른 기능이 있는 멀티캐스트
-
패킷 모드
-
KVM에서 SR-IOV 인터페이스 구성
SR-IOV를 지원하는 물리적 NIC가 있는 경우 SR-IOV 지원 vNIC 또는 VF(가상 기능)를 vSRX 가상 방화벽 인스턴스에 연결하여 성능을 향상시킬 수 있습니다. SR-IOV를 사용하는 경우 모든 수익 포트를 SR-IOV로 구성하는 것이 좋습니다.
KVM의 vSRX 가상 방화벽에 대한 SR-IOV 지원에 대한 다음 사항에 유의하십시오.
Junos OS 릴리스 15.1X49-D90 및 Junos OS 릴리스 17.3R1부터 KVM에 구축된 vSRX 가상 방화벽 인스턴스는 Intel 82599 또는 X520/540 외에도 Intel X710/XL710 NIC에서 SR-IOV를 지원합니다.
Junos OS 릴리스 18.1R1부터 KVM에 구축된 vSRX 가상 방화벽 인스턴스는 Mellanox ConnectX-3 및 ConnectX-4 제품군 어댑터에서 SR-IOV를 지원합니다.
vNIC와 vSRX 가상 방화벽 VM에 적용된 vCPU 및 vRAM 수를 기반으로 KVM에 구축되었을 때 vSRX 가상 방화벽 스케일 업 성능에 대해서는 vSRX with KVM 이해에서 vSRX 가상 방화벽 성능 스케일 업 논의를 참조하십시오.
SR-IOV 지원 VF를 vSRX 가상 방화벽 인스턴스에 연결하려면 먼저 다음 작업을 완료해야 합니다.
호스트 서버에 SR-IOV 지원 실제 네트워크 어댑터를 삽입합니다.
호스트 서버의 BIOS에서 Intel VT-d CPU 가상화 확장을 활성화합니다. 인텔 VT-d 확장은 물리적 장치를 게스트에 직접 할당하기 위한 하드웨어 지원을 제공합니다. 시스템마다 VT-d를 활성화하는 방법이 다르기 때문에 공급업체에 프로세스를 확인합니다.
SR-IOV 설정을 확인하기 위해 호스트 서버 부팅 시퀀스 중에 BIOS 설정으로 이동하여 시스템/서버 BIOS 수준에서 SR-IOV가 활성화되어 있는지 확인합니다. 서버 제조업체마다 BIOS 수준에서 SR-IOV를 사용하도록 설정하는 데 사용되는 BIOS 매개 변수에 대한 명명 규칙이 다릅니다. 예를 들어, Dell 서버의 경우 SR-IOV Global Enable(SR-IOV 전역 활성화 ) 옵션이 Enabled(활성화됨)로 설정되어 있는지 확인합니다.
를 사용하여 SR-IOV 인터페이스를 구성하는 것이 좋습니다 virt-manager
. virsh attach-device
CLI 명령을 사용하여 virsh
VM에 PCI 호스트 디바이스를 추가하는 방법을 알아보려면 명령 설명서를 참조하세요.
또한 1G, 10G, 40G, 100G 순으로 인터페이스를 구성해야 합니다. 이 순서를 따르지 않으면 네트워크 어댑터를 재설정해야 합니다.
그래픽 인터페이스를 사용하여 SR-IOV VF를 vSRX 가상 방화벽 VM에 추가하려면 virt-manager
:
CLI 명령을 사용하여 virsh
SR-IOV VF를 vSRX 가상 방화벽 VM에 추가하려면 다음과 같이 하십시오.
eno2 인터페이스에 대한 4 개의 가상 기능을 정의하고 sriov_numvfs 파일을 숫자 4로 업데이트하십시오.
root@LabHost:~# echo 4 > /sys/class/net/eno2/device/sriov_numvfs root@LabHost:~# more /sys/class/net/eno2/device/sriov_numvfs
디바이스를 식별합니다.
가상 머신에 디바이스를 할당하도록 지정된 PCI 디바이스를 식별합니다.
lspci
명령을 사용하여 사용 가능한 PCI 장치를 나열합니다. 를 사용하여 의lspci
출력을 구체화할 수 있습니다grep
.명령을
lspci
사용하여 VF ID에 따라 VF 번호를 확인합니다.root@ kvmsrv:~# lspci | grep Ether
…… 83:00.0 Ethernet controller: Intel Corporation Ethernet Controller XL710 for 40GbE QSFP+ (rev 02) - Physical Function 83:00.1 Ethernet controller: Intel Corporation Ethernet Controller XL710 for 40GbE QSFP+ (rev 02) - Physical Function 83:02.0 Ethernet controller: Intel Corporation Ethernet Virtual Function 700 Series (rev 02) 83:02.1 Ethernet controller: Intel Corporation Ethernet Virtual Function 700 Series (rev 02) 83:02.2 Ethernet controller: Intel Corporation Ethernet Virtual Function 700 Series (rev 02) 83:02.3 Ethernet controller: Intel Corporation Ethernet Virtual Function 700 Series (rev 02) 83:02.4 Ethernet controller: Intel Corporation Ethernet Virtual Function 700 Series (rev 02) 83:02.5 Ethernet controller: Intel Corporation Ethernet Virtual Function 700 Series (rev 02) 83:02.6 Ethernet controller: Intel Corporation Ethernet Virtual Function 700 Series (rev 02) 83:02.7 Ethernet controller: Intel Corporation Ethernet Virtual Function 700 Series (rev 02) 83:0a.0 Ethernet controller: Intel Corporation Ethernet Virtual Function 700 Series (rev 02) 83:0a.1 Ethernet controller: Intel Corporation Ethernet Virtual Function 700 Series (rev 02) 83:0a.2 Ethernet controller: Intel Corporation Ethernet Virtual Function 700 Series (rev 02) 83:0a.3 Ethernet controller: Intel Corporation Ethernet Virtual Function 700 Series (rev 02) 83:0a.4 Ethernet controller: Intel Corporation Ethernet Virtual Function 700 Series (rev 02) 83:0a.5 Ethernet controller: Intel Corporation Ethernet Virtual Function 700 Series (rev 02) 83:0a.6 Ethernet controller: Intel Corporation Ethernet Virtual Function 700 Series (rev 02) 83:0a.7 Ethernet controller: Intel Corporation Ethernet Virtual Function 700 Series (rev 02) ………
KVM의 vSRX 가상 방화벽 XML 프로필에서 SR-IOV 디바이스 할당을 추가하고 디바이스 정보를 검토합니다.
드라이버는 vfio 또는 kvm을 사용할 수 있으며 KVM 서버 OS/커널 버전 및 가상화 지원을 위한 드라이버에 따라 다릅니다. 주소 유형은 각 SR-IOV VF(가상 기능)에 대한 고유한 PCI 슬롯 번호를 참조합니다.
도메인, 버스 및 기능에 대한 정보는 명령의
virsh nodedev-dumpxml
출력에서 사용할 수 있습니다.<interface type="hostdev" managed="yes"> <driver name="vfio"/> <source> <address type="pci" domain="0x0000" bus="0x83" slot="0x02" function="0x3"/> </source> <address type="pci" domain="0x0000" bus="0x00" slot="0x05" function="0x0"/> </interface>
편집 설정에서 PCI 장치를 추가하고 VF 번호에 따라 VF를 선택합니다.
참고:이 작업은 VM의 전원이 꺼져 있을 때 수행해야 합니다. 또한 VF 또는 MAC 충돌을 일으킬 수 있는 PCI 디바이스가 있는 VM을 복제하지 마십시오.
명령을 사용하여 VM을
# virsh start name of virtual machine
시작합니다.
변경 내역 테이블
기능 지원은 사용 중인 플랫폼 및 릴리스에 따라 결정됩니다. 기능 탐색기 를 사용하여 플랫폼에서 기능이 지원되는지 확인합니다.