Linux 网络子系统深度拆解

目录

这个系列的目标是把 Linux 内核网络子系统拆开来讲清楚。不画概念图糊弄,而是深入到具体的内核函数、数据结构字段、调度时机。每篇文章都基于 Linux 6.6 LTS 源码,配合 bpftrace/perf 实测追踪。

读者定位:有 C 语言基础的高级网络工程师、内核开发者、SRE。 内核版本:Linux 6.6 LTS(如有 6.8 差异则标注)。


第一部分:基础设施

  1. sk_buff 全解:内核网络包的终极容器
  2. net_device 与网卡驱动模型:从硬件到内核的接口契约
  3. 收包路径全解:从 NIC 中断到 socket 接收队列
  4. 发包路径全解:从 send() 到网线
  5. 软中断与 ksoftirqd:网络包处理的调度引擎

第二部分:协议栈内核实现

  1. IP 层内核实现:路由查找、分片与转发
  2. TCP 内核实现(上):连接管理与状态机
  3. TCP 内核实现(下):数据传输与拥塞控制
  4. UDP 内核实现与 socket lookup 优化
  5. Socket 层内核实现:从 VFS 到协议栈的桥梁
  6. 邻居子系统与 ARP:L2 地址解析的内核实现

第三部分:核心子系统

  1. 路由子系统深度拆解:FIB、策略路由与路由缓存
  2. Netfilter 内核实现:钩子、conntrack 与 NAT
  3. Traffic Control 深度拆解:qdisc、class 与 filter
  4. 网络命名空间:内核级网络隔离的实现
  5. 虚拟网络设备内核实现:veth、bridge 与 macvlan
  6. 隧道协议内核实现:VXLAN、IPIP、GRE 与 WireGuard

第四部分:性能与扩展

  1. 多队列与流量分发:RSS/RPS/RFS/XPS
  2. 分段卸载:GRO/GSO/TSO 的内核实现与陷阱
  3. 网络子系统内存管理:sk_buff 分配、page pool 与 NUMA
  4. XDP 内核实现:在驱动层重编程网络栈
  5. eBPF 网络钩子全景:TC/XDP/socket/cgroup

第五部分:诊断与调优

  1. 内核网络追踪工具箱:bpftrace/perf/ftrace 实战
  2. 网络丢包定位:从 drop_monitor 到 kfree_skb 追踪
  3. 内核网络调优方法论:从基准测试到生产验证

文章导航

分类入口
linuxnetworking
标签入口
#linux-kernel#network-stack#sk_buff#netfilter#tcp#routing#ebpf#xdp

读完这篇,下一步读什么

优先读同系列或同问题的下一篇,把单篇消费变成主题集群。

2026-04-20 · linux / networking

【Linux 网络子系统深度拆解】sk_buff 全解:内核网络包的终极容器

sk_buff 是 Linux 内核网络栈的通用货币——每一个收到或发出的网络包,都必须装在这个容器里走完全程。本文从 Linux 6.6 内核源码出发,拆解 sk_buff 的内存布局、四大指针操作、clone 与 copy 的代价差异、skb_shared_info 的 fragment 机制,并用 bpftra…

2026-04-25 · linux / networking

【eBPF 系列】XDP:在网卡驱动层就把包丢掉

当 DDoS 洪水来袭,iptables 在协议栈里挣扎,而 XDP 在网卡驱动层就把垃圾包丢了。不进协议栈、不分配 skb、不走 netfilter——这才是丢包该有的样子。


By .