土法炼钢兴趣小组的算法知识备份

Linux 网络子系统深度拆解

文章导航

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

目录

这个系列的目标是把 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. 内核网络调优方法论:从基准测试到生产验证

同主题继续阅读

把当前热点继续串成多页阅读,而不是停在单篇消费。

2026-04-20 · linux / networking

【Linux 网络子系统深度拆解】IP 层内核实现:路由查找、分片与转发

IP 层是 Linux 网络栈的中枢——收包时决定本地投递还是转发,发包时查路由、过 Netfilter、做分片。本文从 Linux 6.6 内核源码出发,拆解 ip_rcv → 路由决策 → ip_local_deliver / ip_forward 的完整路径,深入 FIB 表的 LC-trie 实现、策略路由 ip rule 选表机制、IP 分片/重组状态机、PMTU 发现与 FNHE 缓存,以及 Netfilter 五个钩子点的实际调用时机。

2026-04-20 · linux / networking

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

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

2026-04-25 · linux / networking

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

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


By .