03 IPv6 与邻居路由机制与实现详解
1. 目录特点
net/ipv6/(~107 文件)。顶层 net/Makefile 中 obj-y += ipv6/ 使 IPv6 底座常编入内核,具体特性仍由 CONFIG_IPV6 及各子选项控制。
2. 地址与接口配置
| 模块 | 作用 |
|---|---|
| addrconf.c | SLAAC、静态地址、ipv6_add_addr |
| addrlabel.c | 源地址选择标签 |
| anycast.c | 任播 |
与 RTNETLINK 的 RTM_NEWADDR(AF_INET6)对接 ip -6 addr。
3. 邻居发现 ND
ndisc.c 实现 RFC 4861:
- Router Solicitation/Advertisement;
- Neighbor Solicitation/Advertisement(替代 ARP);
- Redirect。
挂在 neighbour 子系统 上,协议号 NDISC。
4. 路由 fib6
| 文件 | 作用 |
|---|---|
| ip6_fib.c | FIB6 表 |
| route.c | ip6_route_output、fib6_lookup |
| ip6_flowlabel.c | 流标签 |
策略路由(ip -6 rule)与 ipv4 对称。
5. 扩展头与分片
- exthdrs.c — Hop-by-Hop、Routing、Destination;
- reassembly.c — 分片重组;
- seg6.c / rpl.c 等 — 可选 SRv6、RPL(配置依赖)。
6. 传输层
TCPv6、UDPv6、ICMPv6、RAWv6 与 ipv4 共享大量 tcp_ipv4.c/tcp_ipv6.c 划分(实际文件在 ipv6 与 net/ipv4 协同)。
inet6_connection_sock 处理双栈 socket。
7. Netfilter IPv6
net/ipv6/netfilter/ — ip6tables、nf_defrag_ipv6、NAT66 等。
8. RK3588
- 嵌入式产品 可关闭 IPv6 减体积;
- 双栈产品需 ND + dhcpv6 或 SLAAC;
- 与 Thunder Boot 无直接 net/ipv6 补丁(通用栈)。
专文:rk3588-kernel-6.1-net-ipv6分析_zh.md
9. 小结
IPv6 在 RK3588 上与 ipv4 共享 core/dev;差异在 ND 替代 ARP 与 128 位地址路由。
正在加载留言…