本系列文章
系统理解一个领域的核心就是理解该领域的关键概念。以下术语构成了
Linux
网络内核的核心概念体系,理解它们有助于深入掌握网络实现原理,作为备忘整理与此。
硬件层面术语#
| 术语 | 英文全称 | 核心概念 | 在网络中的作用 | 关键特征 |
|---|
| PCI | Peripheral Component Interconnect | 外设总线标准 | 连接网卡与CPU/内存的高速通道 | 支持DMA、中断、热插拔 |
| PCIe | PCI Express | PCI的串行版本 | 提供更高带宽的网卡连接 | 点对点连接、多通道并行 |
| BAR | Base Address Register | PCI设备地址寄存器 | 映射网卡寄存器到内存空间 | 6个BAR,定义MMIO区域 |
| MMIO | Memory-Mapped I/O | 内存映射IO | CPU通过内存访问方式控制网卡 | 统一地址空间、高效访问 |
| DMA | Direct Memory Access | 直接内存访问 | 网卡直接读写内存,绕过CPU | 减少CPU负载、提高吞吐量 |
| IOMMU | Input-Output Memory Management Unit | IO内存管理单元 | 为设备提供虚拟地址转换 | 内存保护、虚拟化支持 |
处理术语
| 术语 | 英文全称 | 核心概念 | 在网络中的作用 | 关键特征 |
|---|
| 硬中断 | Hardware Interrupt / IRQ | 硬件向CPU发送的信号 | 网卡通知CPU有数据到达 | 立即响应、抢占式、短时间处理 |
| 软中断 | Software Interrupt / SoftIRQ | 内核延迟处理机制 | 处理网络数据包的主要方式 | 可调度、批量处理、NET_RX/NET_TX |
| MSI | Message Signaled Interrupts | 消息信令中断 | 替代传统引脚中断的现代方式 | 通过内存写操作触发中断 |
| MSI-X | MSI Extended | MSI的扩展版本 | 支持多队列网卡的多中断 | 每个队列独立中断、更好的CPU分布 |
| NAPI | New API | Linux网络轮询机制 | 高负载时用轮询替代中断 | 中断+轮询混合、避免中断风暴 |
管理术语
| 术语 | 英文全称 | 核心概念 | 在网络中的作用 | 关键特征 |
|---|
| Ring Buffer | Circular Buffer | 环形缓冲区 | 网卡与驱动间的数据交换结构 | 固定大小、无锁、生产者消费者模型 |
| skb | Socket Buffer | 网络数据包结构 | Linux内核网络数据的统一表示 | 分层结构、元数据+数据、可克隆 |
| skb_shared_info | - | skb共享信息 | 存储分片、GSO等扩展信息 | 支持零拷贝、分片重组 |
| DMA映射 | DMA Mapping | DMA地址转换 | 将虚拟地址转换为设备可访问地址 | 一致性内存、流式映射 |
| Page Pool | - | 页面池 | 预分配网络接收缓冲区 | 减少内存分配开销、提高性能 |
| SLUB | - | Linux内存分配器 | 为skb等小对象提供高效分配 | 对象复用、CPU本地缓存 |
网络驱动术语#
| 术语 | 英文全称 | 核心概念 | 在网络中的作用 | 关键特征 |
|---|
| 网络驱动 | Network Driver | 硬件抽象层 | 连接硬件网卡与内核网络栈 | 实现net_device_ops、管理硬件 |
| net_device | Network Device | 网络设备结构 | 内核中网络接口的抽象 | 包含操作函数、统计信息、配置参数 |
| netdev_ops | Network Device Operations | 网络设备操作集 | 定义网络接口的标准操作 | open/close、xmit、ioctl等 |
| ethtool | Ethernet Tool | 网络工具接口 | 用户空间配置和查询网络设备 | 统计信息、参数配置、诊断功能 |
| 多队列 | Multi-Queue | 多发送/接收队列 | 利用多CPU并行处理网络数据 | RSS、XPS、每CPU队列 |
| RSS | Receive Side Scaling | 接收端扩展 | 将接收流量分散到多个CPU | 基于哈希、负载均衡、提高并发 |
栈术语
| 术语 | 英文全称 | 核心概念 | 在网络中的作用 | 关键特征 |
|---|
| netfilter | - | 网络过滤框架 | 提供防火墙、NAT等功能的钩子 | 5个钩子点、可插拔模块 |
| iptables | - | 防火墙工具 | 基于netfilter的用户空间配置工具 | 表/链结构、规则匹配 |
| 路由 | Routing | 数据包转发决策 | 决定数据包的下一跳地址 | 路由表、策略路由、多路径 |
| 邻居子系统 | Neighbor Subsystem | ARP/NDP管理 | 维护IP地址到MAC地址的映射 | 邻居缓存、状态机、老化机制 |
| 协议栈 | Protocol Stack | 分层网络处理 | 实现TCP/IP等网络协议 | 分层设计、数据封装/解封装 |
| Socket | - | 网络编程接口 | 应用程序访问网络的标准API | 文件描述符、多种类型、缓冲区 |
性能优化#
术语
| 术语 | 英文全称 | 核心概念 | 在网络中的作用 | 关键特征 |
|---|
| TSO | TCP Segmentation Offload | TCP分段卸载 | 硬件替代软件进行TCP分段 | 减少CPU负载、大包处理 |
| GSO | Generic Segmentation Offload | 通用分段卸载 | 软件延迟分段到发送时 | 提高协议栈效率、支持多协议 |
| LRO | Large Receive Offload | 大包接收卸载 | 硬件将小包聚合成大包 | 减少中断次数、提高吞吐量 |
| GRO | Generic Receive Offload | 通用接收卸载 | 软件实现的LRO | 更通用、更可控 |
| Checksum Offload | - | 校验和卸载 | 硬件计算/验证校验和 | 减少CPU计算负担 |
| VLAN Offload | - | VLAN卸载 | 硬件处理VLAN标签 | 硬件插入/剥离VLAN头 |
虚拟化#
相关术语
| 术语 | 英文全称 | 核心概念 | 在网络中的作用 | 关键特征 |
|---|
| SR-IOV | Single Root I/O Virtualization | 单根IO虚拟化 | 一个物理网卡虚拟出多个VF | 硬件虚拟化、直通性能 |
| VF | Virtual Function | 虚拟功能 | SR-IOV创建的虚拟网卡 | 独立的PCI功能、直接分配给VM |
| PF | Physical Function | 物理功能 | SR-IOV的主功能 | 管理VF、提供配置接口 |
| Bridge | Network Bridge | 网络桥接 | 连接不同网络段 | 二层转发、MAC地址学习 |
| VETH | Virtual Ethernet | 虚拟以太网 | 虚拟的网络接口对 | 容器网络、命名空间通信 |
| TAP/TUN | - | 虚拟网络设备 | 用户空间程序访问网络栈 | TAP二层、TUN三层 |
调试与监控术语#
| 术语 | 英文全称 | 核心概念 | 在网络中的作用 | 关键特征 |
|---|
| proc文件系统 | - | 内核信息接口 | 通过文件系统暴露内核状态 | /proc/net/*、运行时查看 |
| sysfs | - | 系统文件系统 | 设备和驱动信息接口 | /sys/class/net/*、配置参数 |
| tracepoint | - | 内核跟踪点 | 内核函数执行的观察点 | 动态跟踪、性能分析 |
| perf | Performance | 性能分析工具 | 网络性能热点分析 | CPU采样、事件计数、调用图 |
| tcpdump | - | 数据包捕获工具 | 网络流量分析和调试 | libpcap、过滤表达式 |
| ss | Socket Statistics | Socket统计工具 | 查看网络连接状态 | 替代netstat、更高效 |
现代网络技术术语#
| 术语 | 英文全称 | 核心概念 | 在网络中的作用 | 关键特征 |
|---|
| XDP | eXpress Data Path | 快速数据路径 | 在驱动层进行高速包处理 | eBPF、零拷贝、可编程 |
| eBPF | extended Berkeley Packet Filter | 扩展包过滤器 | 内核态可编程执行环境 | 安全沙箱、即时编译、多用途 |
| DPDK | Data Plane Development Kit | 数据面开发套件 | 用户空间高性能网络处理 | 轮询模式、大页内存、CPU绑定 |
| AF_XDP | Address Family XDP | XDP地址族 | 用户空间零拷贝网络接口 | 与XDP配合、高吞吐量 |
| io_uring | - | 异步IO接口 | 高效的异步网络IO | 环形队列、批量提交 |
| BPF Maps | - | BPF数据结构 | eBPF程序的数据存储和通信 | 多种类型、用户内核空间共享 |