2015-02-09 406 views

回答

3

DPDK有一個「內核網絡接口」,它有點像tap/tun設備,但是是零拷貝。使用這些,您可以在用戶空間中完成您的RX/TX,然後將數據包傳遞到Linux網絡堆棧。我不知道這是否會給你帶來很多性能,除了可能會消除一些IRQ開銷。

其他一些選擇,如果你沒有和netfilter結婚,可以在DPDK之上使用一個用戶空間BSD網絡棧(例如libuinet)或者一個rump kernel

+0

Paul,用戶空間堆棧的好建議!萬分感謝! – Konstantin 2015-03-24 18:55:16

2

爲了繼續使用iptables,iproute2等,您需要從6WIND部署加速軟件堆棧。DPDK不提供網絡堆棧。

假設您正在使用Linux內核iptables,路由條目,IPsec條目等,使用iptables,setkey,iproute2等,而無需修改;那麼6WIND的軟件堆棧會將數據包處理卸載到其加速堆棧中。

所以你可以讓你的Linux管理工具(網頁界面,Openstack等),而6WIND軟件棧負責提供性能。它在DPDK和其他CPU上也很出色,比如Tilera,Cavium Octeon,Broadcom XLP,...

查看他們的網站了解更多信息。

+0

有沒有類似的開源實現? – Konstantin 2015-03-10 10:26:12

+1

這是一個廣告,而不是一個完整的答案。 – 2015-03-24 17:04:49

+0

@保羅,完全同意你的看法。我沒有看到這個問題太多的關注,並決定接受唯一的答案來結束它。 – Konstantin 2015-03-24 18:54:46

1

我曾試過DPDK KNI在Linux netfilter中使用iptables。 它工作,但整體性能比純內核iptalbes少一點。

根據我簡單的NAT實驗,iptables提供了290Mbps的超過1G鏈接的64字節數據包。而KNI的iptables顯示240Mbps。

儘管DPDK KNI以PMD模式運行並消除了中斷,但它並沒有增加帶寬,因爲Linux內核也採用了NAPI(新API),它改變了運行模式從中斷到輪詢和反之。

當我運行我的簡單DPDK應用程序進行NAT時,它顯示761Mbps,理論上幾乎是64字節數據包的最大帶寬。

我認爲Linux內核中的softirq會花費很多時間來處理數據包。