DPDK 스위치 표시 testpmd 흐름 명령이 작동하지 않음
제 질문은 제가 이전에 물었던 질문과 관련이 있습니다. SR-IOV VF (Virtual Function) NIC간에 패킷 전달 기본적으로 인텔 82599ES의 4 개의 SR-IOV 기능을 사용하고 필요에 따라 VF간에 트래픽을 직접 전달합니다. 설정은 다음과 같습니다 (X710은 신경 쓰지 마십시오. 지금은 82599ES를 사용합니다)

테스트의 단순화를 위해 warp17을 실행하는 하나의 VM 만 사용하여 트래픽을 생성하고 VF1을 통해 보내고 VF3에서 다시 수신합니다. 새로운 dpdk 버전에는 다음에 설명 된 전환 기능이 있기 때문에https://doc.dpdk.org/guides-18.11/prog_guide/switch_representation.html?highlight=switch, 'testpmd'를 사용하여 전환을 구성하려고합니다. 그러나 테스트 pmd가 내가 입력하는 흐름 명령과 함께 작동하지 않는 것 같습니다. 내가 얻는 것은 "나쁜 논쟁"입니다. 예를 들어이 명령으로는 작동하지 않습니다.
flow create 1 ingress pattern / end actions port_id id 3 / end
내 절차는 이렇게
내 PF (82599ES)를 igb_uio 드라이버와 바인딩
다음 명령을 사용하여 4 개의 VF를 생성합니다.
에코 "4"| sudo 티 /sys/bus/pci/devices/0000:65:00.0/max_vfs
다음을 사용하여 2 개의 VF를 vfio_pci 드라이버에 바인딩합니다.
echo "8086 10ed"| sudo tee / sys / bus / pci / drivers / vfio-pci / new_id sudo ./usertools/dpdk-devbind.py -b vfio-pci 0000 : 65 : 10.0 0000 : 65 : 10.2
PCI 패스 스루를 사용하여 VF를 VM에 바인딩하고 VM을 시작합니다.
sudo qemu-system-x86_64 -enable-kvm -cpu host -smp 4 -hda WARP17-disk1.qcow2 -m 6144 \
-display vnc = : 0 -redir tcp : 2222 :: 22
-net nic, model = e1000 -net user, name = mynet0
-device pci-assign, romfile =, host = 0000 : 65 : 10.0
-device pci-assign, romfile =, host = 0000 : 65 : 10.2PF 및 VF의 포트 표현 자 2 개로 testpmd 실행
sudo ./testpmd --lcores 1,2 -n4 -w 65 : 00.0, representor = 0-1 --socket-mem 1024 --socket-mem 1024--proc-type auto --file-prefix testpmd-pf --i --port-topology = 체인
내가 뭔가 잘못하고 있습니까? 아니면 이것이 testpmd의 특성입니까? 내 dpdk 버전은 18.11.9입니다.
답변
82599ES ixgbe
는 i40e
PMD를 사용 하고 X710은 PMD를 사용합니다 . 둘 다 다르며 속성이 다릅니다. ixgbe PMD를 비교하는 문서에 따라 (http://doc.dpdk.org/guides/nics/ixgbe.html) 및 i40e PMD (http://doc.dpdk.org/guides/nics/i40e.html) 인 그레스 패킷 (외부 포트에서 ASIC으로 수신 된 패킷)을위한 Flow Director 기능. 이 기능 Floating VEB
은 사용해야하는 기능입니다. 그러나 이것은에만 있고에는 X710
없습니다 82599ES
.
VEB를 활성화하려면 -w 84:00.0,enable_floating_veb=1
X710 에서 사용해야 합니다. 그러나 이것은 물리적 포트에서 수신 및 송신 할 수없는 기능을 제한합니다.
가장 좋은 방법 2 * 10Gbps
은를 사용하는 것입니다 . 여기서 dpdk-0이 사용되고 wrap7/pktgen/trex
dpdk-1이 vm-1/vm-2/vm-3
. 가장 쉬운 매개 변수는 VF와 일치하는 DST MAC 주소를 제어하는 것입니다.
설정:
- port-0 및 port-1에 필요한 vf 생성
- VF를 관련 VM에 공유하십시오.
- dpdk vf 포트를 igb_uio에 바인딩합니다.
- VF의 관련 MAC 주소에있는 트래픽 생성기 포트 -0에서.
[PS] 이것은 우리가 스카이프를 통해 논의한 정보입니다.