
之前曾在此網站上提出過類似的問題 [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
由於eth0
ssh 是預設且唯一的接口,因此目前的 ssh 透過核心在同一接口上運行。因此,從核心中刪除介面並綁定到 DPDk 將導致連接丟失。
正如答案所指出的,https://superuser.com/questions/1204835/binding-dpdk-to-a-nic-without-loosing-connection/1546752#1546752
有一個選項可用
- 在VM內建立虛擬TAP介面
- 建立 eBPF-XDP 程式碼,透過 XDP-REDIRECT 將所需資料包重定向到 TAP 接口,而資料包內核的其餘部分則為 XDP-PASS
- 使用 PCAP-PMD 和 eal-arg
--vdev=net_pcap0,iface=[virtual tap interface]
另一個選擇是
- 啟動 DPDK 應用程式
--vdev=net_tap0,iface=[DPDK tap interface name]
- 然後載入 eBPF-XDP,它將所需的封包重定向到 DPDK-TAP 介面。
因此,在不遺失任何連線的情況下,人們可以利用來自 virtio 的流量。
注意:核心應該建置並支援 virtio 的 eBPF-XDP。
[編輯-1]
- 參考代碼:
https://github.com/vipinpv85/DPDK-DDoS/blob/master/test/ebpf/l2_port_fwd.c
根據需要修改。 - 如何建置:`https://github.com/vipinpv85/DPDK-DDoS/blob/master/README.md``