P2P 网络库 iroh 正式发布了 1.0 版本。这个由 n0 团队历时四年多、跨越 65 个版本迭代打磨的 Rust 项目,提出了一个简洁到近乎激进的口号:Dial keys, not IPs(拨号用密钥,而不是 IP 地址)。在互联网基础设施层面,这个口号指向的是一次根本性的范式转换——将设备寻址的基本单位从网络层分配的 IP 地址,替换为由用户自主控制的加密密钥对。

IP 地址的问题由来已久。它们是临时租约——DHCP 会过期,设备会在 Wi-Fi 和蜂窝网络之间切换,NAT 和防火墙会让一个网络中的设备对另一个网络中的设备完全不可见。在移动互联网和边缘计算时代,网络拓扑不仅从未稳定过,而且越来越碎片化。每次 IP 地址的变更都意味着连接中断、重连延迟和状态丢失。iroh 的核心洞察是:如果一个设备自己生成一对密钥,并用公钥作为永久标识符,那么无论设备在物理上如何移动、使用什么网络接入方式,其他设备都可以通过这个公钥找到它并建立加密连接。公钥同时承担了地址、身份、权限和归属的四重职责——当你拨号给一个公钥时,你知道你在和谁通信。
从技术实现层面看,iroh 1.0 的架构选择有几个值得关注的点。首先,它基于 QUIC over UDP 和 TLS 1.3 构建传输层,并在 QUIC 之上实现了自定义的多路径支持——可以在单个连接内使用多条路由,并根据网络状况热切换路径,而不中断上层连接。其次,其 NAT 穿透成功率约为 95%,显著优于 libp2p 同等条件下的约 70%。当穿透失败时,连接会通过 DERP 中继节点(Designated Relay for Encrypted Packets)转发,但流量始终保持端到端加密,中继节点只能看到通信双方的公钥标识,无法解密内容。团队披露,过去 30 天内公共中继注册了超过 2 亿个端点,约 95% 的数据直接在设备间传输,这意味着中继成本和云出口流量费用被压缩到了极低的水平。
iroh 对非 IP 传输层的支持是其另一个独特之处。蓝牙 LE 已在生产环境中可用,LoRa 长距离无线电传输正在开发中,WiFi Aware 和 Tor 路由也被纳入了可插拔传输层的路线图。在所有这些物理介质之上,开发者看到的始终是同一个"拨号公钥"的抽象接口——底层是什么网络无关紧要。对于需要在离线或近场环境中运行的本地优先应用而言,这种传输无关的设计提供了现有网络栈难以实现的灵活性。iroh 甚至可以编译为 WebAssembly 在浏览器中运行,打通了浏览器端 P2P 的通道。
1.0 版本同步发布了三个生产级协议:
- iroh-blobs(内容寻址的二进制传输,类似 Git 的对象存储但面向任意 P2P 数据传输)
- iroh-gossip(基于 HyParView 和 Plumtree 算法的发布-订阅覆盖网络,针对移动设备频繁网络切换做了优化)
- iroh-docs(最终一致的键值存储,内置同步协议)。
开发者还可以通过路由 API 注册自定义的 ALPN 协议处理器,构建完全私有的通信协议。语言绑定方面,除 Rust 原生 crate 外,Python、Node.js、Swift(iOS)和 Kotlin(Android)的官方 SDK 随 1.0 一同发布。
wire 协议的稳定性承诺是 1.0 版本的另一核心部分。团队声明,任何影响 wire 兼容性的变更都将伴随主版本号的升级——一个 Python v1.0 客户端必须能够与一个 Rust v1.x 服务端无障碍通信。这一承诺对于需要跨语言、跨平台部署的生产环境而言,意义不下于 API 稳定性。
在生产实践中,iroh 已经被 PrimeIntellect 用于跨地理分布的 GPU 集群进行大规模 AI 模型训练的流水线并行,也被 Nous Research 用于在 AWS、GCP、Azure 和自有服务器之间同步梯度。这些场景的共同特征是需要在异构网络环境中维持低延迟、高可靠的点对点连接——正是 IP 寻址范式最难应对的场景。GitHub 仓库已获得超过 8800 颗星标。
iroh 的出现并非孤例。在它之前,libp2p 已经在 IPFS 和以太坊生态中证明了模块化 P2P 网络栈的价值,但 libp2p 的协议栈复杂度和 Go/JavaScript 双实现的分裂状态也令不少开发者望而却步。iroh 选择在 Rust 单一实现上追求协议的简洁性和可组合性,且在 NAT 穿透成功率和多路径支持方面实现了可量化的性能优势。它的愿景不是成为另一个 libp2p,而是将 P2P 网络从区块链和文件共享的利基市场,推向所有需要设备间直接通信的通用场景。
当然,iroh 也有其局限性。在直连模式下,通信双方的 IP 地址对彼此可见,对隐私敏感的应用需要额外引入 VPN 或 Tor 传输层。可观测性工具链仍处于早期阶段,对于生产环境的运维监控尚不够成熟。但作为一个刚刚发布 1.0 的项目,这些不足并未削弱其核心主张的说服力:在一个设备数量远超服务器数量、网络边界日益模糊的世界里,用密钥而非 IP 寻址,或许正是互联网基础设施演进的下一步。
参考来源: