原创 報文的接收方式(linux網絡子系統學習 第二節 )

報文的接收是整個協議棧的入口,負責從網卡中把報文接收並送往內核協議棧相應協議處理模塊處理。報文的接收方法主要分爲兩種一種是網卡產生中斷,通知內核進行接收報文。一次中斷接收一個報文。在中斷處理程序中把報文從硬件緩存中拷貝到內存中,並把報文加入

原创 發送隊列的默認隊列策略 (linux網絡子系統學習 第十一節 )

如果網絡設備發送隊列沒有配置發送策略,內核就會使用默認的隊列策略來進行報文的發送。內核中定義實現了兩種默認的隊列策略,一種是給隊列長度爲零的隊列使用的。一種是給隊列長度不爲0,但沒配置隊列策略的隊列使用的。初始化時使用的默認隊列策略 noo

原创 二層轉發流程 (linux網絡子系統學習 第六節 )

做爲網絡設備,二層轉發是最基本的功能。要想繼續學習linux 內核協議棧,必須明白二層轉發的流程。這篇文章舉例講一講二層轉發的流程。二層轉發是根據報文的目的MAC直接進行轉發,轉發過程中不用對報文的頭部做任何的修改。三層轉發則是根據報文的i

原创 linux 內核學習 tasklet 詳解

軟中斷被執行的優先級要高於內核線程。硬中斷是可以搶佔內核線程的,硬中斷退出時會立即執行軟中斷。這時軟中斷執行程序是運行在中斷上下文的。如果軟中斷執行程序在指定時間內沒處理完,就會掛起來等下次下次被執行。下次被執行可以是另一個硬中斷退出時在中

原创 我的友情鏈接

51CTO博客開發孫繼濱的博客

原创 收包軟中斷和netif_rx (linux網絡子系統學習 第四節 )

初始化報文接收軟中斷static int __init net_dev_init(void) { ...... open_softirq(NET_RX_SOFTIRQ, net_rx_action); ......

原创 前言 (linux 網絡子系統學習)

一轉眼畢業三年了,做網絡也兩年多了。在第一家公司有幸加入了AC快轉組,參與開發了快轉項目。快轉項目是一個運行在cavium octeon 多核網絡處理器上的SE程序。這是自己網絡職業生涯的第一個項目,在開發項目中自己進步是飛快的,確實學到了

原创 發送報文過程的調度 (linux網絡子系統學習 第十二節 )

在linux協議棧中,發送隊列管理隊列策略,而直接管理髮送報文的是隊列策略。所有發包軟中斷中調度的是隊列策略,而不是發送隊列。一、softnet_date 結構體中爲報文的發送定義如下字段:struct softnet_data {

原创 鏈路層GRO的處理 (linux網絡子系統學習 第八節)

鏈路層的接收匹配函數__napi_gro_receive(napi, skb):該函數對報文進行匹配,並不合併報文。匹配規則(必須同時滿足以下兩個條件): 1、兩個報文的接收dev必須相同。 2、兩個報文的以太頭必須相同。static in

原创 發送隊列的默認隊列策略 (linux網絡子系統學習 第十一節 )

如果網絡設備發送隊列沒有配置發送策略,內核就會使用默認的隊列策略來進行報文的發送。內核中定義實現了兩種默認的隊列策略,一種是給隊列長度爲零的隊列使用的。一種是給隊列長度不爲0,但沒配置隊列策略的隊列使用的。初始化時使用的默認隊列策略 noo

原创 網絡設備發送隊列相關數據結構及其創建函數 (linux網絡子系統學習 第十節 )

網絡設備使用隊列來管理數據幀的輸出流量,每個隊列可以使用隊列策略算法來安排發送幀的優先級,使發送過程更高效。詳細的隊列策略處理屬於流量控制子系統的內容,本人還沒來的及研究,這裏先不涉及。本章討論沒配置隊列策略的情況下設備的發送隊列。數據關聯

原创 網絡層ipv4對GRO的處理 (linux網絡子系統學習 第九節)

本文介紹一下網絡層中IPv4協議對GRO的支持。從第五節中我們知道,每個支持GRO功能的協議都要實現自己的接收和完成函數。ipv4協議的定義如下:file:// net/ipv4/af_inet.c static struct packet

原创 報文的發送函數 (linux網絡子系統學習 第十三節)

linux協議棧中提供的報文發送函數有兩個,一個是鏈路層提供給網絡層的發包函數dev_queue_xmit()。另一個就是軟中斷髮包函數直接調用的函數sch_direct_xmit()。這兩個函數最終都會調用dev_hard_start_x

原创 二層轉發流程 (linux網絡子系統學習 第六節 )

做爲網絡設備,二層轉發是最基本的功能。要想繼續學習linux 內核協議棧,必須明白二層轉發的流程。這篇文章舉例講一講二層轉發的流程。二層轉發是根據報文的目的MAC直接進行轉發,轉發過程中不用對報文的頭部做任何的修改。三層轉發則是根據報文的i

原创 我的友情鏈接

51CTO博客開發孫繼濱的博客