2013-08-16 53 views
2

我有什麼替代方法可以在最快的時間內讀取數據包?最快的方式來讀取網絡數據?

在用戶空間中寫驅動程序?

我從來沒有寫過網卡的驅動程序(雖然如果不像編寫整個操作系統那麼困難,我會感興趣?)。我可以獲得已存在的驅動程序代碼,它必須存在於Linux的某個地方,並將其「移植」到用戶空間中嗎? Linux內核驅動程序和我的驅動程序都試圖競爭相同的數據包嗎?

不寫驅動程序,而是從C/C++應用程序堆棧之後立即訪問網絡數據?

我對這種方法不太瞭解 - 所以如果有人可以幫忙,我會很感興趣。

我有興趣實現我自己的零拷貝技術來儘可能快地獲取數據包數據。這臺計算機不需要使用普通的互聯網 - 它可能是兩臺計算機之間的專有網絡連接(對於TCP和UDP)。

編輯:

我的意思是延遲,不吞吐量

+2

你對「快」的目標是什麼?如果是用於吞吐量的話,那是優化的一個分支。如果是迴應時間,那是一個完全不同的學科。 – wallyk

+1

老實說,使用UDP--網絡的最佳效果總是會比協議選擇更大的瓶頸 – bobbybee

+0

除了wallyk說的,它必須是TCP還是UDP?它是否必須基於IP?它是否必須基於以太網? – Joni

回答

2

最低的延遲在Linux中接收數據包,正如你說的,繞過Linux內核,這需要特殊的驅動程序。來自Mellanox,Solarflare,Myricom,Chelsio等的高端網絡適配器提供內核旁路軟件。例如,Mellanox公司聲稱可以在接收數據包下2微秒與他們的ConnectX-3卡和VMA 6.0軟件

本週Mellanox公司宣佈其VMA 6.0 消息加速器,其中包括增強的TCP和最新版本通過ConnectX-3 VPI適配器卡支持UDP 加速。由於超低的 UDP延遲低於1.4微秒,TCP套接字延遲低於1.7 微秒,據報道這種消息傳遞技術比同類競爭產品快兩倍以上的 倍。

http://insidehpc.com/2012/01/10/interview-mellanox-vma-6-0-tackles-latency-for-high-frequency-trading/

+0

從寫驅動程序到下一級會怎樣?一旦他們完成了Linux內核驅動程序代碼的傳播,我可以攔截這些數據包嗎?如果我們仍然在驅動程序上 - 無法「竊取」當前在內核中的驅動程序代碼並將其放入我的應用程序中? – user997112

+0

您可以在內核和用戶空間之間共享緩衝區,請參閱 http://www.mjmwired.net/kernel/Documentation/networking/packet_mmap.txt – amdn

+1

另請參見英特爾Jesse Brandenburg的低延遲套接字演示文稿 http: //www.linuxplumbersconf.org/2012/wp-content/uploads/2012/09/2012-lpc-Low-Latency-Sockets-slides-brandeburg.pdf – amdn

1

我要說的是,使用PCAP應該足夠快。他們還修改了Linux版本,並改善了性能 - PF_RING/PF_RING DNA

+0

是的,PF_RING是一個現有的解決方案,女巫成熟了。它符合「寫驅動程序」的第一種方法。最重要的是,它是免費的(在DNA中,你應該支付許可證,女巫提供10G線速捕獲)。 –

相關問題