DPDKスイッチ表現testpmdフローコマンドが機能しない

Aug 21 2020

私の質問は、以前に尋ねた質問に関連しています。SR-IOV仮想機能(VF)NIC間でパケットを転送する基本的に私がやりたいのは、Intel 82599ESの4つのSR-IOV機能を使用し、必要に応じてVF間でトラフィックを転送することです。セットアップは次のようなものです(X710を気にしないでください。現在82599ESを使用しています)

テストを簡単にするために、warp17を実行しているVMを1つだけ使用してトラフィックを生成し、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

私の手順はこんな感じです

  1. PF(82599ES)をigb_uioドライバーでバインドします

  2. 次のコマンドを使用して4つのVFを作成します。

    エコー「4」| sudo tee /sys/bus/pci/devices/0000:65:00.0 / max_vfs

  3. を使用して2つのVFをvfio_pciドライバーにバインドします。

エコー「808610ed」| 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. 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.2

  2. PFおよびVFの2つのポート表現子を使用してtestpmdを実行します

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

私は何か間違ったことをしていますか、それともこれはtestpmdの性質ですか?私のdpdkバージョンは18.11.9です

回答

1 VipinVarghese Aug 25 2020 at 11:11

82599ESはPMDを使用しixgbe、X710はi40ePMDを使用することに注意してください。どちらも異なり、プロパティも異なります。ixgbe PMDを比較するドキュメントによると(http://doc.dpdk.org/guides/nics/ixgbe.html)およびi40e PMD(http://doc.dpdk.org/guides/nics/i40e.html)入力パケット(外部ポートからASICに受信されたパケット)用のフローダイレクタ機能。この機能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に一致するDSTMACアドレスを制御することです。

セットアップ:

  1. ポート0とポート1に必要なvfを作成します
  2. VFを関連するVMと共有します。
  3. dpdkvfポートをigb_uioにバインドします。
  4. VFの関連するMACアドレスのトラフィックジェネレータポート0から。

[PS]これはSkypeで話し合った情報です。