數據包接收流程

1、數據包到達網卡設備
2、收到數據後網卡根據設置的hash規則(多隊列網卡),決定將數據放到哪個ring buffer,然後通過DMA將數據放到內存,也就是網卡的ring buffer中
3、設備產生硬件中斷,根據網卡設置的中斷綁核通知對應CPU處理數據報文
4、對應CPU執行網絡設備註冊的中斷處理函數,響應硬中斷,將該設備添加到CPU輪詢設備隊列中,關閉網絡設備中斷響應,並喚醒軟中斷處理
5、系統根據RPS和RFS的設置,確定軟中斷在哪個CPU執行,對應CPU的NAPI軟中斷處理例程從CPU的輪詢隊列中按額度從ring buffer中poll數據報文skb並遞交上層協議棧處理,收完報文後,恢復網卡設備中斷響應
6、協議棧處理報文
7、報文遞交至應用程序socket的receive buffers中

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