Rappresentazione switch DPDK comandi di flusso testpmd non funzionanti

Aug 21 2020

La mia domanda è correlata a una domanda che ho posto in precedenza. Inoltra i pacchetti tra i NIC SR-IOV Virtual Function (VF) Fondamentalmente quello che voglio fare è utilizzare 4 funzioni SR-IOV di Intel 82599ES e il traffico diretto tra i VF di cui ho bisogno. La configurazione è qualcosa del genere (non importa l'X710, ora uso 82599ES)

Per semplicità durante i test, sto usando solo una VM che esegue warp17 per generare traffico, inviarlo tramite VF1 e riceverlo da VF3. Poiché le nuove versioni di dpdk hanno una funzione di commutazione come descritto inhttps://doc.dpdk.org/guides-18.11/prog_guide/switch_representation.html?highlight=switch, Sto cercando di utilizzare "testpmd" per configurare la commutazione. Ma sembra che il test pmd non funzioni con i comandi di flusso che inserisco. Tutto quello che ottengo è "Cattiva discussione". Ad esempio non funziona con questo comando,

flow create 1 ingress pattern / end actions port_id id 3 / end

La mia procedura è così,

  1. Collega il mio PF (82599ES) con il driver igb_uio

  2. Crea 4 VF usando il seguente comando,

    echo "4" | sudo tee /sys/bus/pci/devices/0000:65:00.0/max_vfs

  3. Associa 2 VF al driver vfio_pci usando,

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

  1. Utilizzare il passaggio PCI per associare i VF alla VM e avviare la 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.2

  2. Eseguire testpmd con PF e 2 rappresentatori di porta di VF

sudo ./testpmd --lcores 1,2 -n 4 -w 65: 00.0, rappresentante = 0-1 --socket-mem 1024 --socket-mem 1024 - proc-type auto --file-prefix testpmd-pf - -i --port-topology = concatenato

Sto facendo qualcosa di sbagliato o è questa la natura di testpmd? La mia versione di dpdk è 18.11.9

Risposte

1 VipinVarghese Aug 25 2020 at 11:11

si prega di notare che 82599ES utilizza ixgbee X710 utilizza i40ePMD. Entrambi sono diversi e hanno proprietà diverse. Come da documentazione che confronta ixgbe PMD (http://doc.dpdk.org/guides/nics/ixgbe.html) e i40e PMD (http://doc.dpdk.org/guides/nics/i40e.html) la funzionalità di Flow director che è per i pacchetti in ingresso (pacchetti ricevuti dalla porta esterna in ASIC). La funzione Floating VEBè la caratteristica che devi usare. Ma questo è presente solo dentro X710e non dentro 82599ES.

Per abilitare VEB è necessario utilizzarlo -w 84:00.0,enable_floating_veb=1in X710. Ma questo limita le tue funzionalità che non sarai in grado di ricevere e inviare sulla porta fisica.

l'opzione migliore è usare 2 * 10Gbps, dove viene usato dpdk-0 wrap7/pktgen/trexe dpdk-1 è usato da vm-1/vm-2/vm-3. il parametro più semplice è controllare la corrispondenza dell'indirizzo MAC DST a VF.

impostare:

  1. creare il vf necessario per port-0 e port-1
  2. condividere la VF con la VM pertinente.
  3. associa le porte dpdk vf a igb_uio.
  4. dal generatore di traffico port-0 nell'indirizzo MAC pertinente di VF.

[PS] questa è l'informazione che abbiamo discusso su skype.