首页
›
Linux内核与驱动
›
157-Linux网络协议栈
›
《网卡驱动发包流程与Linux协议栈sk_buff队列调度》
VIP10
本课程属于:157-Linux网络协议栈
Linux内核与驱动 · 共 10 门相关课程,组合学习更完整。
查看所属VIP全部课程 →
← 返回所属目录
咨询 / 购买
网卡驱动发包流程与Linux协议栈sk_buff队列调度
共计 30 章节
点击此处阅读海量试读课程:100+行业、1000+细分领域
01
课程导论
网卡驱动与协议栈的关系 · 数据包从应用到网线的完整旅程 · 课程目标与前置知识
课程导论
网卡驱动
02
Linux网络协议栈分层模型
OSI七层模型与TCP/IP四层模型 · Linux内核网络子系统的分层架构 · 各层核心数据结构概览
Linux
网络协议栈分层模…
03
sk_buff结构体详解(上)
sk_buff的基本定义 · 线性数据区与分页数据区 · head/data/tail/end…
sk
buff
04
sk_buff结构体详解(下)
sk_buff的链表管理(next/… · sk_buff_head结构 · 引用计数与克隆(clone/copy…
sk
buff
05
sk_buff的分配与释放
alloc_skb()与dev_al… · kfree_skb()与dev_kf… · 内存缓存区(skbuff_fclon…
sk
buff
06
sk_buff数据操作API
skb_push/skb_pull/… · 数据指针移动与空间预留 · 数据拷贝与线性化(skb_linea…
sk
buff
07
网络设备驱动核心结构
net_device结构体 · net_device_ops操作函数… · NAPI结构与轮询机制
网络设备驱动核心…
net
08
网卡驱动初始化流程
pci_driver注册与probe… · 硬件资源映射(MMIO/IO Por… · DMA缓冲区分配与描述符环初始化
网卡驱动初始化流…
pci
09
发送描述符环(TX Ring)设计
描述符结构(DMA地址 · 长度 · 标志位)
TX
Ring
10
协议栈发包入口
__dev_queue_xmit()… · qdisc(排队规则)的入口 · dev_hard_start_xmi…
协议栈发包入口
dev
11
Qdisc排队规则基础
无类别Qdisc(pfifo_fas… · sfq) · 分类Qdisc(HTB
Qdisc
排队规则基础
12
pfifo_fast Qdisc详解
三个优先级Band · 内部队列结构(skb_array) · dequeue与enqueue逻辑
pfifo
fast
13
HTB(Hierarchical Token Bucket)Qdisc
类层次结构 · 令牌桶算法 · 带宽保证与上限控制
HTB
Hierarchical
14
套接字缓冲区与发送队列
sock结构中的sk_write_q… · TCP发送缓存与拥塞控制 · UDP的无连接发送
套接字缓冲区
发送队列
15
IP层发包流程
ip_queue_xmit()与ip… · 路由查找(fib_lookup) · 分片(ip_fragment)与DF…
IP
层发包流程
16
邻居子系统与ARP
neigh结构体与邻居表 · arp_solicit()发送ARP… · 邻居可达性确认(NUD状态机)
ARP
邻居子系统
17
设备层发包
dev_queue_xmit_nit… · netdev_start_xmit(… · 硬件发送完成中断
设备层发包
dev
18
NAPI与中断节流
传统中断风暴问题 · NAPI的poll机制 · napi_schedule()与__…
NAPI
断节流
19
发送完成(TX Completion)处理
硬件写回描述符 · 驱动清理已发送sk_buff · 释放DMA映射与sk_buff
TX
Completion
20
TSO/GSO(TCP分段卸载)
GSO原理 · skb_gso_segment()分… · 硬件TSO卸载与skb_shinfo…
TSO/GSO
TCP
21
UFO/GRO(通用接收卸载)
GRO与GSO的对称性 · GRO的合并逻辑 · 驱动中GRO的启用与配置
UFO/GRO
通用接收卸载
22
XDP(eXpress Data Path)基础
XDP程序挂载点 · XDP动作(XDP_PASS/XDP… · XDP与sk_buff的关系
XDP
eXpress
23
XDP_TX与回环发包
XDP_TX动作的驱动实现 · 直接重用DMA页面 · 绕过协议栈的快速发包路径
XDP
TX
24
多队列网卡与RSS
RSS(接收侧缩放)原理 · 多TX队列的哈希分发 · 每个队列独立的Qdisc与NAPI实…
RSS
多队列网卡
25
流量控制与tc工具
tc命令配置Qdisc/Class/… · u32匹配器与fw标记 · skb->mark字段在调度中的应用
tc
流量控制
26
网络命名空间与虚拟设备
netns隔离 · veth pair的sk_buff转… · bridge与OVS的sk_buff…
网络命名空间
虚拟设备
27
性能调优与监控
perf与ftrace跟踪发包路径 · ethtool统计与ring参数调整 · RPS/RFS/XPS多队列优化
性能调优
监控
28
常见问题与调试
TX超时(NETDEV_TX_BUS… · 环形缓冲区溢出 · DMA映射错误
常见问题
调试
29
实战
编写一个简单的虚拟网卡驱动 · 实现ndo_start_xmit · TX Ring模拟
编写一个简单的虚…
ndo
30
课程总结与进阶方向
内核网络子系统全景回顾 · DPDK与用户态驱动对比 · eBPF在网络监控中的新趋势
课程总结
进阶方向
所属VIP或分类
同VIP:Linux-NIC驱动开发与网络收发链路调试
同VIP:Linux网络中断处理开发与软中断收包调优
同VIP:Linux网络协议栈TCP-IP卸载与硬件加速配置