SSH 接続を失わずに DPDK をセットアップするにはどうすればよいですか?

SSH 接続を失わずに DPDK をセットアップするにはどうすればよいですか?

このサイト[1]で以前にも同様の質問がありましたが、私の問題に対する実用的な回答は何もないようでした。そのため、自分の環境について同じ質問をすることにしました。

私は単一の NIC を備えた Linode Ubuntu Server を使用しており、昨日 DPDK を初期化しようとしましたが、カーネル ドライバーがインストールされ、NIC が結合され、SSH から切断されました。それ以降、再接続できなくなり、サーバーを再起動したら、再びサーバーに接続できました。

DPDKステータス出力からわかる私のネットワークデバイスは、

 dpdk-devbind -s

Network devices using kernel driver
===================================
0000:00:04.0 'Virtio network device 1000' if=eth0 drv=virtio-pci unused=vfio-pci *Active*

[1]接続を失うことなく DPDK を NIC にバインドする

答え1

はデフォルトかつ唯一のインターフェースであるためeth0、現在の ssh はカーネル経由で同じインターフェース上で実行されています。したがって、カーネルからインターフェースを削除して DPDk にバインドすると、接続が失われます。

回答で指摘されているように、https://superuser.com/questions/1204835/binding-dpdk-to-a-nic-without-loosing-connection/1546752#1546752利用可能なオプションがあります

  1. VM内に仮想TAPインターフェースを作成する
  2. 必要なパケットをXDP-REDIRECT経由でTAPインターフェースにリダイレクトするeBPF-XDPコードを作成し、残りのパケットカーネルはXDP-PASS
  3. PCAP-PMDとeal-argの使用--vdev=net_pcap0,iface=[virtual tap interface]

他の選択肢は

  1. DPDKアプリケーションを起動します--vdev=net_tap0,iface=[DPDK tap interface name]
  2. 次に、目的のパケットを DPDK-TAP インターフェイスにリダイレクトする eBPF-XDP をロードします。

したがって、接続を失うことなく、virtio からのトラフィックを利用することができます。

注意: カーネルはビルドされ、virtio の eBPF-XDP をサポートする必要があります。

[編集-1]

  1. 参照コード:https://github.com/vipinpv85/DPDK-DDoS/blob/master/test/ebpf/l2_port_fwd.c必要に応じて変更します。
  2. ビルド方法: `https://github.com/vipinpv85/DPDK-DDoS/blob/master/README.md``

関連情報