1. 程式人生 > >學習Linux-4.12核心網路協議棧(2.1)——介面層加快傳輸速率的特性

學習Linux-4.12核心網路協議棧(2.1)——介面層加快傳輸速率的特性

前面花了好多篇幅,終於將網路協議棧的初始化相關的內容介紹完了,也就是說完成前面的那些步驟以後,網路協議棧具備了資料包的收發功能。在網路介面層,它只負責資料包的接收與傳送,而不關注資料包在網路層的型別是什麼,所以傳輸速率的快慢往往與介面層的處理有著密切的關係,下面我們來了解一下在提供傳輸速率上面,現在的核心都引進了哪些新的特性。
資料包的接收: NAPI, RPS,RFS
資料包的傳送: TSO, GRO
資料包的處理: slab, RCU

1. NAPI


從上圖我們可以看到,NAPI和非NAPI的最大區別是skb到達網路層的方式,前者通過輪詢直接將包傳遞到網路層,後者則需要等待中斷一個一個將資料包傳遞到網路層。
下面是NAPI的處理過程:

下面是每個CPU都獨有的一個結構體,主要管理在該CPU上資料的收發:


下面是介紹NAPI的兩篇文章,詳細可以參考:

2. RPS

3. GSO/TSO


4. slab

5. RCU


上面這些內容可以先了解以後,起碼知道每個特性的幹什麼的,後面在分析程式碼的時候會詳細分析怎麼實現的,下面講進入網路介面層資料包的接收和傳送過程。