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_device、netdev_ops、napi_poll 与 net/ 协作。
2. 顶层 Makefile 逻辑
1 | obj-y := devres.o socket.o core/ |
常驻 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/dwmac、r8169 等在 drivers/net/ethernet/ |
| 其余 net/ | 上游通用 |
6. 文档体系说明
本仓库 linuxDoc/net/ 含两套互补文档:
- 编号 01–08(本系列):按 原理 + 实现 纵向剖面(core → L3 → filter → tc/BPF → L2/无线 → 驱动边界 → RK)。
- *rk3588-kernel-6.1-net-分析_zh.md:按 子目录横向 逐模块说明(70+ 篇)。
建议先读本文与 源码目录与模块索引.md,再按需打开子目录专文。
正在加载留言…