net 网络子系统机制与原理详解

net 网络子系统机制与原理详解

1. 在内核中的位置

rk3588/kernel-6.1/net/(约 1887 文件)实现 Linux 内核网络协议栈:从 socket(2) 系统调用到 链路层以太类型处理,涵盖 IPv4/IPv6、TCP/UDP、路由、邻居、Netfilter、tc、BPF、无线 cfg80211 等。

不包含 具体网卡/MAC/PHY 寄存器驱动——它们在 drivers/net/,通过 struct net_devicenetdev_opsnapi_pollnet/ 协作。

用户态 socket/ioctl/netlinknet/socket.cAF_INET / AF_PACKET / AF_UNIX ...net/core sock skb devipv4 / ipv6netfilter hooksdrivers/net ndo_start_xmitPHY / DMA

2. 顶层 Makefile 逻辑

1
2
3
4
5
6
obj-y := devres.o socket.o core/
obj-y += ethernet/ 802/ sched/ netlink/ bpf/ ethtool/
obj-$(CONFIG_INET) += ipv4/
obj-y += ipv6/
obj-$(CONFIG_NETFILTER) += netfilter/
obj-$(CONFIG_RFKILL) += rfkill/
常驻 obj-y 含义
socket.o 系统调用与 sock_create 派发
core/ sock、skb、dev、rtnl、neighbour、XDP、GRO
ethernet/ eth_type_trans、以太头
sched/ tc qdisc/cls/act
ipv6/ 树内默认编入(细项仍受 Kconfig 控制)

3. 核心对象(跨子系统)

结构 头文件 职责
struct sock net/sock.h 协议无关套接字状态、缓冲队列
struct sk_buff linux/skbuff.h 网络包描述符(数据面主干)
struct net_device linux/netdevice.h 网络接口、统计、NAPI
struct net net/net_namespace.h 网络命名空间
struct dst_entry net/dst.h 路由缓存
struct neighbour net/neighbour.h ARP/ND 邻居

4. 配置入口

net/Kconfig 在顶层 Networking support (CONFIG_NET) 下 source 各子目录 Kconfig;CONFIG_INET 打开 TCP/IP;CONFIG_IPV6 控制 IPv6 特性子集。

5. 与 RK3588 的关系(摘要)

区域 RK 关联
net/rfkill/ CONFIG_RFKILL_RK:WiFi/BT 电源、SDIO 卡检测、MAC 从 vendor storage
net/wireless/Kconfig ROCKCHIP_THUNDER_BOOT 影响默认
数据面 stmmac/dwmacr8169 等在 drivers/net/ethernet/
其余 net/ 上游通用

详见 08-RK3588平台关联与使用场景详解.md

6. 文档体系说明

本仓库 linuxDoc/net/ 含两套互补文档:

  1. 编号 01–08(本系列):按 原理 + 实现 纵向剖面(core → L3 → filter → tc/BPF → L2/无线 → 驱动边界 → RK)。
  2. *rk3588-kernel-6.1-net-分析_zh.md:按 子目录横向 逐模块说明(70+ 篇)。

建议先读本文与 源码目录与模块索引.md,再按需打开子目录专文。

文章互动

阅读 --

留言

0 条留言

正在加载留言…