Iroh:用公钥代替 IP 地址的端到端 P2P 连接库
阅读时间: 大约 8 分钟
Iroh:用公钥代替 IP 地址的端到端 P2P 连接库

“Iroh gives you an API for dialing by public key.”——这是 n0 computer 开源项目 Iroh 对自己最精炼的概括。传统互联网用 IP 地址寻址,而 IP 会变动、会被 NAT 藏在后面、需要中心化服务器中转。Iroh 的主张是:别再拨号 IP,直接拨号公钥。你说”连接那台手机”,Iroh 自己负责找到并维持最快路径。本文基于 Iroh 官网与 GitHub README,解析它的连接机制、成本模型与真实边界。
一、背景:为什么需要”拨号公钥”
移动设备、物联网终端、跨云 GPU 节点的共同痛点是:它们没有稳定公网 IP,藏在 NAT 之后,传统做法是架一台中转服务器(或 VPN),所有流量先上云再下来。这不仅贵,还把本可直连的端到端数据绕了一圈。WebRTC 解决了浏览器内的音视频直连,但它是为浏览器场景设计的、偏应用层;Iroh 想做的是一个更底层、跨语言、能下沉到 MCU 级设备的通用 P2P 连接层。
二、它是什么:建立在 QUIC 上的连接栈
按 README,Iroh 的核心能力分三层:
- 公钥寻址(Dial by public key):端点的身份就是一个公钥,连接时不再依赖可变的 IP/端口。
- 打洞直连(Hole-punching):最快路径是直连,Iroh 会尝试 NAT 打洞;打洞失败时,回退到开放生态里的无状态公共中继服务器(relay)。README 强调中继是”无状态”的——它只转发端到端加密后的密文,不持有数据。
- QUIC 传输(Built on QUIC):Iroh 用自研的
noq在端点间建立 QUIC 连接,开箱即得认证加密、带优先级的并发流、数据报传输,并消除队头阻塞。
官网进一步宣传其 QUIC 多路径(multipath) 实现:能在 Wi-Fi、蜂窝、以太网、LAN、LoRa、HaLow、Tor、蓝牙之间自动切换,或自带传输。语言绑定覆盖 Rust、JavaScript、Python、Go、C、Kotlin、Swift,硬件上可跑在 ESP32、树莓派、Linux、Windows、Apple、Android。
三、组合协议:在 Iroh 之上搭应用
Iroh 本体是连接库,官方还提供三个可组合的上层协议:
| 协议 | 作用 | 关键特性 |
|---|---|---|
iroh-blobs | 内容寻址的数据传输 | 基于 BLAKE3,可校验、可续传,规模从 KB 到 TB |
iroh-gossip | 发布/订阅 overlay | 按话题广播,资源占用低到一部普通手机即可 |
iroh-docs | 最终一致的 KV 存储 | 多写者实时同步,底层建立在 iroh-blobs 之上 |
典型用法是 cargo add iroh,在连接侧 Endpoint::bind() 后用 endpoint.connect(addr, ALPN) 打开一条双向 QUIC 流——README 给的最小示例就是一个 echo 回显。
四、成本模型:少绕云一圈
Iroh 商业版(Iroh Pro)的卖点是”数据留在端点,云只在兜底时转发密文”。官网给了一个算例(见上图):
- 工作负载:2000 台设备 × 10 GB/月 = 20 TB/月;
- 集中式服务器走 AWS:20 TB 全部穿过云基础设施,约 $1,742/月(另加计算);
- Iroh Pro 按 95% 直连:只有 1 TB 经过中继,约 $100/月(Pro 费用加出口);
- 官方估算月省 $1,642。
官方引用的背书包括 Datum(“几分钟内拉起数百万私有骨干网”)、Nous Research(“用 iroh 把算力预算砍半”)、Block(“把多云和机房里的 GPU 池成一张 mesh,无中心服务器、无 NAT 配置”)。
五、口径与局限:别把营销数字当承诺
读官方材料时需要打几个折扣:
- “95% 直连”是示例性假设,不是实测均值。官网自己注明:“Illustrative estimate based on 95% direct traffic. Actual direct rates and costs vary by network conditions, usage, and region.”——实际直连率取决于网络环境、运营商和地区,对称型 NAT、严格企业防火墙下打洞成功率会明显下降。
- 成本对比只算了出口流量,集中式方案的”加计算”被一笔带过,且未给出 Iroh Pro 席位费的明细;$100/月是否含中继带宽超额需自查。
- “无云存储”有前提:中继本身仍由官方或社区基础设施提供,自托管中继虽可行,但运维 P2P 打洞、中继、节点发现仍需团队理解 NAT 穿透的复杂性。
- 背书均为官方引用,“halved compute budget”等说法来自个别工程师口述,缺少可复现的基准。
六、客观分析:优势与局限
优势:公钥寻址把”设备在哪”从应用层彻底屏蔽;QUIC 原生多路复用与多路径切换天然适配移动/弱网;BLAKE3 内容寻址 + 可续传在 KB→TB 区间都能复用;双协议栈许可(MIT / Apache-2.0)可商用。
局限:P2P 本身的复杂性(打洞成功率、中继兜底、节点发现、NAT 类型差异)全部下沉给了使用者;除 Rust 外语言绑定成熟度不一;对”必须过合规审计、数据不能直连”的企业场景,relay 兜底路径仍需额外评估;官网缺少公开的时延/吞吐基准数字。
七、适合谁
- 需要跨云/跨机房组网、想把出口流量打下来的分布式训练团队;
- 端到端加密、弱网/移动环境下的设备同步、备份、视频流应用;
- 物联网/POS 等需要自动发现、无 broker、无网关的场景;
- 有能力运维 P2P 连接层、不愿被中心化 VPN/中转锁定的团队。