【导语:P2P网络库iroh正式发布1.0版本,提出“Dial keys, not IPs”的理念,实现设备寻址范式转换。它在传输层架构、NAT穿透等方面表现出色,已应用于多个生产场景,虽有局限但极具潜力。】
由n0团队历时四年多、历经65个版本迭代的Rust项目iroh,提出“Dial keys, not IPs”的口号,将设备寻址基本单位从IP地址替换为用户自主控制的加密密钥对。IP地址存在临时租约、网络拓扑不稳定等问题,而iroh的密钥可让设备无论如何移动和接入网络,都能被其他设备通过公钥找到并建立加密连接,公钥还承担地址、身份、权限和归属四重职责。
iroh 1.0基于QUIC over UDP和TLS 1.3构建传输层,实现自定义多路径支持,可在单个连接内使用多条路由并热切换路径,不中断上层连接。其NAT穿透成功率约为95%,显著优于libp2p的约70%。穿透失败时通过DERP中继节点转发,流量端到端加密,中继节点无法解密内容。过去30天公共中继注册超2亿个端点,约95%数据直接在设备间传输,压缩了中继成本和云出口流量费用。
此外,iroh支持非IP传输层,蓝牙LE已可用,LoRa等也在开发或规划中,开发者看到的是统一的“拨号公钥”抽象接口,提供了现有网络栈难以实现的灵活性,还能编译为WebAssembly在浏览器中运行。
1.0版本发布了iroh - blobs、iroh - gossip、iroh - docs三个生产级协议,开发者还可通过路由API注册自定义ALPN协议处理器。语言绑定方面,除Rust原生crate外,Python、Node.js、Swift(iOS)和Kotlin(Android)的官方SDK也一同发布。
团队承诺wire协议稳定性,任何影响兼容性的变更将伴随主版本号升级,确保跨语言、跨平台部署的生产环境通信无障碍。
iroh已被用于跨地理分布的GPU集群进行大规模AI模型训练的流水线并行,以及在不同云平台和自有服务器之间同步梯度,这些场景需要在异构网络环境中维持低延迟、高可靠的点对点连接,正是IP寻址范式难以应对的。其GitHub仓库已获超8800颗星标。
与libp2p相比,iroh选择在Rust单一实现上追求协议简洁性和可组合性,在NAT穿透成功率和多路径支持方面有可量化的性能优势。不过,iroh也有局限性,直连模式下通信双方IP地址可见,对隐私敏感应用需额外引入VPN或Tor传输层,可观测性工具链也不够成熟。但它仍为互联网基础设施演进提供了新方向。
编辑观点:iroh 1.0的发布为P2P网络带来新变革,其密钥寻址理念和出色性能有望推动P2P网络走向更广泛应用,但也需解决隐私和可观测性等问题,未来发展值得关注。