开发者生态
morning
Show HN:我们在 Linux、Libc 和 BGP 中实现了 IPv8 Internet 草案
2026-08-15
1 阅读
约8分钟阅读
turborigby
字号:
Show HN:我们在 Linux 内核、Musl Libc 和 BGP 中实现了 IPv8 互联网草案 The Hook:为什么我们构建这个 几周前,一份名为“互联网协议版本 8 (IPv8)”的互联网草案 — 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)都捆绑到单个“区域服务器”中。大多数网络工程师都会将此视为企业架构师针对流行词超速编写的愚人节 RFC。但 goonhost.rocks 的团队并没有仅仅在邮件列表上争论,而是决定从头开始实际构建整个规范,并测试在分布式多 AS 网络上部署它时会发生什么。我们构建的内容(开源存储库) 我们实现了从 Ring-0 内核代码到用户空间应用程序的完整 IPv8 堆栈:Linux Kernel 6.6 (GitLab Repo):实现了本机 AF_INET8(地址族 46),支持 SOCK_STREAM (TCP8)、SOCK_DGRAM (UDP8) 和 SOCK_RAW (RAW8)。 28 字节 IPv8 标头解析、64 位路由表查找和 sysctl 边界丢弃规则(filter_internal_zones、filter_rine、filter_interior_links)。 Musl Libc (GitLab Repo):为 64496.10.0.0.1 格式地址添加了 sockaddr_in8 、 inet_pton8 、 inet_ntop8 、 getaddrinfo() 和 getnameinfo() 。 iproute2 (GitLab Repo):本机 ip -8 路由和 ip -8 addr 管理命令。 FRRouting (FRR) (GitLab Repo):具有多协议扩展 (AFI/SAFI) 的 BGP8 守护进程,用于对等和交换 IPv8 路由。 Go 中的 IPv8 区域服务器平台 (GitLab Repo):实现了所有 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 Repo | cURL Repo ) :通过 64 位 IPv8 端点 ( http://64497.20.0.0.254:80/ ) 提供 HTTP 服务和请求。 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/ 从跨 AS WAN 网格的 Nginx 返回 HTTP/1.1 200 OK。 dhcp8c 在未配置的接口上启动,接收双网关租用(0.254 Even / 0.253 Odd),并在 2.27 ms 内通过 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 Fragmentation Needed 消息,因此 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 慢速路径固定功能现代数据中心中的交换机芯片(Broadcom Tomahawk/Trident、Cisco Silicon One)具有针对 32 位 IPv4 ( 0x0800 ) 和 128 位 IPv6 ( 0x86DD ) 硬连线的 TCAM 微代码。他们不知道 EtherType 0x88B8 是什么。数据包无法在硬件中进行线速(400Gbps/800Gbps)交换。交换机将 IPv8 帧发送到控制平面 CPU 异常队列,导致大量数据包丢失,吞吐量从 400Gbps 下降到 <10Gbps。 4. 单一区域服务器 DDoS 目标 将 DHCP、DNS、NTP、Syslog、OAuth2 身份验证和 NAT 放入一个“区域服务器”网关会造成最终的单点故障。针对端口 8080 或端口 53 的简单 UDP 反射攻击会同时破坏整个公司的时间同步、动态寻址、令牌验证和互联网出口。灾难性的:RIR 和一级 Upstrre 的经济崩溃
这篇文章对您有帮助吗?
订阅66必读
每日精选科技资讯,直达你的邮箱