千兆網絡卡驅動的設計

2021-10-23 09:01:57 字數 1456 閱讀 8387

資料傳輸方式。驅動與網絡卡進行資料傳輸有輪詢方式、中斷方式和dma方式。不同的傳輸方式會影響資料傳輸的效率。

中斷開銷。中斷處理中要保護程式的上下文,這些處理會消耗cpu資源。如果中斷非常頻繁的話,會影響整個系統的效率。

記憶體拷貝開銷。大批量的記憶體拷貝會消耗大量的cpu資源。如果發生缺頁異常的話,需要從外部裝置中將資料調入記憶體中,這樣會增大時延。

減少中斷開銷。接收到中斷請求後關閉中斷,將資料處理完成後再開啟中斷。具體採用napi技術,結合關中斷和合中斷技術。網絡卡硬體在接受多個資料報後,觸發接受中斷,網絡卡驅動在中斷處理程式中排程接收執行緒,並關閉裝置中斷,然後從硬中斷中返回。返回後並不開啟中斷,所以系統不會被後來的接受或傳送中斷打擾,直到接收執行緒處理了所有待處理的資料報後啟用裝置的接收中斷。

減少記憶體拷貝。基本思想是實現記憶體共享,在不同物件對資料處理時要注意同步和互斥。借鑑zero-copy技術,使用者空間和網絡卡驅動共享緩衝區結構。zero-copy技術在對資料報處理的過程中越過了對核心協議棧的處理,所以常用於在有對資料報程序協議處理的驅動。

在微核心中,協議棧是在網路伺服器中程序處理的。應該可以直接使用該技術。

dma技術不通過cpu進行記憶體之間的拷貝,減少cpu的負載,實現zero-copy。借助dma技術應該可以使驅動和網絡卡之間的記憶體拷貝更快。在後續實現時可以考慮使用dma技術進行記憶體拷貝。

選用高速中線。網絡卡驅動中要對匯流排及其裝置進行初始化,並封裝對資料的收發操作。

3.1 功能需求分析

初始化網絡卡硬體。核心啟動或載入網絡卡驅動模組的時候,完成對硬體的初始化。建立註冊網絡卡在記憶體中對應的結構體、緩衝區、裝置的mac位址和相應的中斷處理函式。

提供網絡卡的配置與管理介面。提供給使用者程式需要的網路位址、硬體位址,配置mac資料路由等。

完成資料報的收發。完成使用者程式與網絡卡之間的資料傳輸功能。

3.2 網絡卡驅動工作原理

由核心中的相關子例程和資料組成的i/o裝置軟體介面。子例程包括開啟/關閉/配置裝置介面、傳送/接收資料介面。這些介面為使用者程式提供了網絡卡和對網絡卡操作的抽象(將網絡卡裝置抽象成裝置檔案,將對網絡卡的操作抽象為對檔案的操作)。使用者程式使用這些介面,可以像操作檔案一樣操作網絡卡裝置。

3.3 網絡卡驅動的體系結構

從上到下分為四層,分別為網路協議介面層、網路裝置介面層、提供實際功能的裝置驅動功能層和網路媒介層。網路裝置介面是網絡卡在記憶體中的映像,反應網絡卡的狀態和能夠對網絡卡進行什麼操作。裝置驅動功能層是各個功能的封裝實現。網路媒介層為網絡卡與網路環境的概述。網絡卡驅動的體系結構如下圖所示,下圖中的函式名為linux中的函式。

3.4 網絡卡驅動的關鍵資料結構

net_device結構。宣告定義網絡卡裝置和管理網絡卡裝置的方法。網絡卡的抽象。

sk_buff(套接字緩衝區)結構。宣告定義套接字緩衝區和管理緩衝區的方法。網絡卡埠的抽象。

Intel千兆網絡卡驅動Linux系統下安裝方法

適用機型 所有xseries 205 所有xseries 206 所有xseries 225 所有xseries 226 所有xseries 235 所有xseries 236 所有xseries 255 所有xseries 305 所有xseries 306 所有xseries 330 所有xse...

如何選擇千兆網絡卡?

千兆網絡卡是一種用於伺服器上的網路介面卡 nic 其傳輸速率可達1000mbps,能為伺服器與交換機提供高速的連線,提高網路主幹系統的響應速度。按照埠來分有單口 雙口 四口網絡卡,千兆網絡卡主流晶元有intel i210晶元 intel i350晶元,前者是用於台式電腦網絡卡,後者是用於伺服器上的網...

千兆網絡卡頻寬測試

iperf 是乙個基於c s模型的純頻寬測試軟體,可以測試網絡卡的吞吐量。iperf的好處是純粹發包和接收,防止硬碟拖後腿,影響測試結果。本文以千兆網絡卡bcom 5720 進行測試,環境centos 6.4 x64 在兩台機器上分別安裝iperf yum install iperf enabler...