歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> 多隊列網卡簡介以及Linux通過網卡發送數據包源碼解讀

多隊列網卡簡介以及Linux通過網卡發送數據包源碼解讀

日期:2017/2/28 15:52:49   编辑:Linux教程

首先我們看一下一個主流多隊列網卡(E1000)跟多核CPU之間的關系圖:


非多隊列:

linux的網卡由結構體net_device表示,一個該結構體對應一個可以調度的數據包發送隊列。

數據包的實體在內核中以結構體sk_buff(skb),形如:


多隊列:

一個網卡可以擁有多個隊列


接下來,看看TX引擎是如何工作的(注:對於發送和接收數據包有兩個名詞,分別應對TX,RX)


解釋:

函數-dev_queue_xmit():入隊一個buffer以傳輸到網絡驅動設備。

配合該函數的源碼來解釋上圖的傳輸過程:

Copyright © Linux教程網 All Rights Reserved