如何在不遺失 SSH 連線的情況下設定 DPDK?

如何在不遺失 SSH 連線的情況下設定 DPDK?

之前曾在此網站上提出過類似的問題 [1],但它似乎沒有回答任何對我的問題實用的問題。因此,我決定對我的環境提出同樣的問題。

我使用的是帶有單一網卡的 Linode Ubuntu 伺服器,昨天嘗試初始化 DPDK,它確實安裝了核心驅動程式並綁定了網卡,然後切斷了我與 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

由於eth0ssh 是預設且唯一的接口,因此目前的 ssh 透過核心在同一接口上運行。因此,從核心中刪除介面並綁定到 DPDk 將導致連接丟失。

正如答案所指出的,https://superuser.com/questions/1204835/binding-dpdk-to-a-nic-without-loosing-connection/1546752#1546752有一個選項可用

  1. 在VM內建立虛擬TAP介面
  2. 建立 eBPF-XDP 程式碼,透過 XDP-REDIRECT 將所需資料包重定向到 TAP 接口,而資料包內核的其餘部分則為 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. 然後載入 eBPF-XDP,它將所需的封包重定向到 DPDK-TAP 介面。

因此,在不遺失任何連線的情況下,人們可以利用來自 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``

相關內容