2026-04-20 | linux · networking | #softirq #ksoftirqd #net_rx_action #net_tx_action #threaded-napi #preempt-rt #bpftrace #linux-kernel #network-stack
网络包到达网卡后,真正消耗 CPU 的处理全部发生在软中断上下文。本文从 Linux 6.6 内核源码出发,拆解 softirq 10 向量优先级体系、__do_softirq() 主循环与 MAX_SOFTIRQ_RESTART 放弃策略、ksoftirqd 调度时机、Threaded NAPI 替代方案,以及 CONFIG_PREEMPT_RT 下的行为变化。最后用 bpftrace/perf 实测软中断延迟和 time_squeeze 饥饿。
2026-04-20 | linux · networking | #rx-path #linux-kernel #napi #gro #netif_receive_skb #ip_rcv #tcp_v4_rcv #softirq #bpftrace #network-stack
一个网络包从网卡 DMA 到用户态 recvmsg(),要走过硬中断、NAPI 轮询、GRO 聚合、协议分发、IP 路由、Netfilter 钩子、TCP/UDP 处理、socket 队列八个阶段。本文从 Linux 6.6 内核源码出发,逐函数拆解完整的 RX 收包路径,量化每一跳的 CPU 开销,并用 bpftrace 实测各阶段延迟分布。
2026-04-20 | linux · networking | #net_device #linux-kernel #napi #nic-driver #ring-buffer #dma #multi-queue #network-stack
net_device 是 Linux 内核中一切网络设备的抽象——物理网卡、虚拟 veth、隧道设备都实现同一套接口。本文从 Linux 6.6 源码出发,拆解 net_device 的结构体布局、net_device_ops 驱动操作表、NAPI 轮询模型、多队列架构、DMA ring buffer 与中断机制。
2026-04-20 | linux · networking | #sk_buff #linux-kernel #network-stack #skb_shared_info #page-pool #bpftrace #zero-copy #NAPI
sk_buff 是 Linux 内核网络栈的通用货币——每一个收到或发出的网络包,都必须装在这个容器里走完全程。本文从 Linux 6.6 内核源码出发,拆解 sk_buff 的内存布局、四大指针操作、clone 与 copy 的代价差异、skb_shared_info 的 fragment 机制,并用 bpftrace 实测 sk_buff 分配热点和生命周期。
2026-04-20 | linux · networking | #linux-kernel #network-stack #sk_buff #netfilter #tcp #routing #ebpf #xdp
从 sk_buff 到 XDP,从收包路径到 TC 框架——系统拆解 Linux 内核网络子系统的每一个核心模块。基于 Linux 6.6 LTS 源码,配合 bpftrace/perf 实测追踪。
2026-04-03 | linux · networking | #linux-kernel #network-stack #sk_buff #NAPI #netfilter #bpftrace #softirq #RPS #XPS #irqbalance #perf
从 NIC 驱动到用户态 read(),一个网络包在 Linux 内核中到底经历了什么?本文拆解 sk_buff、NAPI、softirq、netfilter 的完整收包路径,并用 bpftrace 实测追踪每一跳的延迟。