Linux網路管理(一) 網絡卡驅動與Linux核心

2022-08-22 08:15:13 字數 849 閱讀 5956

下圖簡單描述了網絡卡驅動與linux核心之間的聯絡:

關於上圖的一些說明: 

系統初始化:

1. 協議模組呼叫 dev_add_pack() 來註冊協議處理函式到鍊錶 &ptype_base;

2. __init br_init() 用於初始化橋接相關的操作;

3. __init net_dev_init() 初始化了兩個軟中斷;

網絡卡驅動初始化:

1. 網絡卡驅動在其 probe() 函式裡面初始化 net_device 結構體,用來描述網絡卡,以及提供操作網絡卡的介面;

配置網絡卡:

1. 當我們通過ifconfig來配置網絡卡時,會呼叫到net_device->open(),該函式最主要的是註冊了乙個中斷(當網絡卡接收到資料或資料傳送完成會觸發中斷);

資料的傳送與接收:

1. 當我們需要傳送資料時,最終呼叫的是網絡卡驅動提供的函式:net_device->hard_start_xmit();

2. 當我們接收到資料時,會觸發中斷,中斷處理函式呼叫會呼叫核心函式來接收資料,最終由驅動程式呼叫核心函式netif_receive_skb()

3. 網絡卡的中斷處理函式在呼叫核心函式接收資料時又分為非napi/napi兩種方式;

4. napi方式涉及到中斷的下半部處理的概念以及軟中斷。

5. 報文通過netif_receive_skb()送入協議棧之後,首先判斷需不需要進行橋接處理;

6. 如果報文沒有被橋接**處理,再呼叫協議處理函式來處理;

LINUX一網絡卡多IP設定

方法1 少量ip手動繫結 這裡以繫結ip到eth0為例,其它網絡卡的話修改相應的檔名即可 1.複製ifcfg eth0的網絡卡配置檔案並改名為ifcfg eth0 0 root akinlau cp etc sysconfig network scripts ifcfg eth0 etc sysco...

DPDK 收發包處理流程(一)(網絡卡驅動註冊)

本文基於dpdk 1.8.0分析。網絡卡驅動模型一般包含三層,即,pci匯流排裝置 網絡卡裝置以及網絡卡裝置的私有資料結構,即將裝置的共性一層層的抽象,pci匯流排裝置包含網絡卡裝置,網絡卡裝置又包含其私有資料結構。在dpdk中,首先會註冊裝置驅動,然後查詢當前系統有哪些pci裝置,並通過pci i...

linux網路 (一) 網路配置

1.liunx網路 1.1介面和命名規則 eth 0 9 乙太網介面 wlan 0 9 無線網絡卡介面 lo 本地回環介面 1.2linux常規網路配置檔案 1.etc hosts 主機檔案 2.etc resolv.conf dns檔案 3.etc sysconfig network script...