展示 HN:我们在 Linux、Libc 和 BGP 中实现了 IPv8 互联网提案
TurboRigby • 2026年8月14日 • 6分钟阅读 展示 HN:我们在 Linux 内核、Musl Libc 和 BGP 中实现了 IPv8 互联网提案 引入:为什么我们构建这个几周前,一个名为 IPv8(互联网协议第8版) — draft-thain-ipv8-02 的互联网提案引起了我们的注意。该提案提出了一些非凡的主张:零地址耗尽:每个 ASN 持有者自动获得 4,294,967,296 个主机地址($2^{32}$)。100% 向后兼容性:“IPv4 是 IPv8 的适当子集……没有强制迁移和标志日。”全面的网络管理:每个数据包都与 DNS8 和 WHOIS8 进行验证;所有元素都通过 OAuth2 JWT 令牌授权;所有核心服务(DHCP、DNS、NTP、Syslog、WHOIS、NAT、ACL)都捆绑在一个“区域服务器”中。大多数网络工程师会将其视为由狂热的企业架构师撰写的愚人节提案。但 goonhost.rocks 的团队决定不仅仅是在邮件列表中争论,而是实际从头构建整个规范,并测试在分布式多 AS 网络中部署后会发生什么。 我们构建了什么(开源仓库) 我们实现了从 ring-0 内核代码到用户空间应用程序的完整 IPv8 堆栈: Linux 内核 6.6(GitLab 仓库):实现了支持 SOCK_STREAM (TCP8)、SOCK_DGRAM (UDP8) 和 SOCK_RAW (RAW8) 的原生 AF_INET8(地址族 46)。28 字节 IPv8 首部解析、64 位路由表查找和 sysctl 边界丢弃规则(filter_internal_zones,filter_rine,filter_interior_links)。 Musl Libc(GitLab 仓库):为 64496.10.0.0.1 格式的地址添加了 sockaddr_in8、inet_pton8、inet_ntop8、getaddrinfo() 和 getnameinfo()。 iproute2(GitLab 仓库):原生的 ip -8 路由和 ip -8 addr 管理命令。 FRRouting (FRR)(GitLab 仓库):具有多协议扩展(AFI/SAFI)以对等和交换 IPv8 路由的 BGP8 守护进程。用 Go 实现的 IPv8 区域服务器平台(GitLab 仓库):实现了所有 10 个 RFC 子协议:DHCP8(选项 224-230)、DNS8(TYPE_A8 88)、SNTP Stratum-1、NetLog8(UDP 514 遥测)、OAuth8 JWT 服务器、WHOIS8 TCP 43/REST、ACL8 和 XLATE8 有状态 NAT。 Nginx 和 cURL (Nginx 仓库 | cURL 仓库):在 64 位 IPv8 端点上提供和请求 HTTP(http://64497.20.0.0.254:80/)。 10 节点 QEMU 多 AS 测试床:4 个自治系统(AS 64496,AS 64497,AS 64498,AS 64499)通过多播 WAN/LAN 段连接,加载了 112,000+ 活动 FIB 路由和持续生成的客户端流量(trafficgen8)。 结果:好的、坏的和灾难性的 好的(在实验室环境中) 在一个隔离的沙箱中,该协议运行得非常顺利:curl -i http://64497.20.0.0.254/ 从 Nginx 返回 HTTP/1.1 200 OK 通过一个跨自治系统的宽域网网状结构。dhcp8c 在未配置的接口上启动,收到一个双网关租约(.254 偶数 / .253 奇数),并在 2.27 毫秒内通过 NTP8 同步其时钟。Linux 内核 fib_trie 在持续流量下处理 112,117 个活动路由,查找延迟为亚毫秒。 坏的:为什么在现实世界中它会失败 1. 路径 MTU(PMTUD)& 静默 MSS 黑洞 IPv8 地址增加了源地址 4 字节和目标地址 4 字节,将 IP 报头从 20 字节扩展到 28 字节。在标准的 1500 字节 MTU 以太网链路上,标准的 IPv4 TCP 数据包(1460 字节有效负载 + 20 字节 TCP + 28 字节 IPv8 = 1508 字节)超过了 MTU。因为成千上万的遗留中间盒在不发送 ICMP 分段所需消息的情况下丢弃了过大的数据包,TLS 握手和大文件传输会无限期挂起。 修复:全球的每个路由器和主机必须强制执行 TCP MSS 限制为 1452 字节(或 8to4 隧道为 1432 字节)。 2. 多宿主与不对称 uRPF(BCP 38)丢包 在 IPv8 中,您的 IP 地址被硬编码到您的主要 ASN(64496.10.0.1)。如果您与两个上游中转提供商(提供商 A 和提供商 B)进行多宿主,且通过提供商 B 发送出站数据包:提供商 B 的入站过滤器(严格 uRPF / BCP 38)检查提供商 B 是否是到 AS 64496 的最短路径。由于提供商 A 是主要路由,提供商 B 会悄悄丢弃所有出站流量,认为是伪造数据包。 3. 遗留交换机 ASIC 切换到 CPU 慢路径 固定功能交换芯片(博通 Tomahawk/Trident、思科 Silicon One)在现代数据中心的 TCAM 微码硬编码为 32 位 IPv4(0x0800)和 128 位 IPv6(0x86DD)。它们不知道以太类型 0x88B8 是什么。数据包无法在硬件中以线路速率(400Gbps/800Gbps)切换。交换机将 IPv8 帧转发到控制平面 CPU 异常队列,导致大量数据包丢失,吞吐量从 400Gbps 降至 <10Gbps。 4. 单一区域服务器 DDoS 目标 将 DHCP、DNS、NTP、Syslog、OAuth2 认证和 NAT 集成到一个“区域服务器”网关中,形成了最终的单点故障。对端口 8080 或端口 53 进行简单的 UDP 反射攻击会同时使整个公司的时间同步、动态地址分配、令牌验证和互联网出口失效。 灾难性的:
本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。
☕请我喝杯咖啡