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

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

1. NAPI


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

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


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

數據包接收系列 — NAPI的原理和實現
NAPI 技術在 Linux 網絡驅動上的應用和完善

2. RPS

Linux內核軟RPS實現網絡接收軟中斷的負載均衡分發

Linux系統中RPS/RFS介紹

Linux網卡調優:RPS (Receive Packet Steering)

Linux內核 RPS/RFS功能詳細測試分析


3. GSO/TSO


Linux GSO邏輯分析

linux tcp GSO和TSO實現


4. slab

Linux slab 分配器剖析


5. RCU

linux內核 RCU機制詳解


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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章