Iroh 1.0 版本發布:以金鑰撥號的網路函式庫正式穩定

Iroh 1.0 版本發布:以金鑰撥號的網路函式庫正式穩定

Iroh 1.0 是以金鑰撥號的網路函式庫的第一個穩定版本,提供基於 QUIC 的多路徑、NAT 穿透堆疊,可從 Rust、Python、Node.js、Swift 與 Kotlin 使用,同時保證在次要版本間的線路協定相容性。


為何以金鑰撥號優於 IP 位址

  • 金鑰由使用者控制。 金鑰由裝置產生,當裝置在不同網路間移動時不會改變,與可能在未警告下消失的 IP 位址不同。
  • 金鑰同時充當安全識別子。 用於保護連線的同一加密金鑰可用於身份、權限與歸屬,使互聯網變成「安全的本機端」。
  • 直接連線佔主導流量。 在典型的 Iroh 會話中,約 95 % 的資料直接在對等端之間傳輸,降低雲端出口成本與整體路由跳數。

1.0 版的核心技術特性

功能 功能說明 重要性說明
QUIC multipath 實作 IETF 草案 draft‑ietf‑quic‑multipath,在單一連線內管理多條路徑,並在條件變化時即時切換路徑。 透過使用最佳可用路徑而無需重新連線,提升韌性與延遲表現。
QUIC NAT traversal 遵循 draft‑seemann‑quic‑nat‑traversal,在 NAT 之間建立加密的直接連線。 免除手動埠轉發或外部 VPN 的需求。
Local‑first mode 偵測並連接同一 LAN 內的裝置,無需經過網際網路。 支援離線點對點通訊,降低對中繼的依賴。
WASM support 編譯為 WebAssembly,於瀏覽器中執行。 為無需原生二進位檔的網頁 P2P 應用開啟大門。
Custom transport plug‑ins 允許第三方 crate 提供替代傳輸方式(例如 BLE、LoRa、Tor)。 將 Iroh 擴展至超越 IPv4/IPv6 與中繼傳輸,保持核心程式碼庫的簡潔。
Language bindings 提供官方的 Python、Node.js、Swift 與 Kotlin FFI,除原生 Rust crate 外。 讓開發者在行動、桌面與伺服器應用中嵌入 Iroh,無需撰寫 Rust。

穩定性保證

  • 線路協定穩定性: 任意 iroh v1 端點皆可與其他 iroh v1 端點通訊,無論次要版本或語言綁定為何。
  • 版本政策: 未來的語言 API 變更可能獨立發布,但任何破壞線路協定的變更都會伴隨主要版本號的提升。
  • 公共中繼生命週期: v1.0 的中繼將持續運作至生命終止;較舊的中繼 (v0.35x) 支援至 2026 年 12 月 31 日,而 canary 版 (0.9x) 已被棄用。

採用數據

  • 在過去 30 天內,公共中繼上已建立超過 2 億端點
  • Iroh 已被用於影片串流、大型語言模型訓練、安全聊天、遊戲、檔案傳輸以及許多其他工作負載。
  • 此函式庫在 數十萬台裝置 上於生產環境中運行。

社群洞見與常見問答

"Iroh 是一個即插即用的以任何裝置撥號的網路函式庫。從現成協議的生態系統中組合…" – 官方部落格

自訂傳輸與可擴充性

"Iroh 預設僅支援 IPv4、IPv6 與中繼傳輸,但我們加入了實作自訂傳輸的能力。現有的實驗性傳輸包括 Tor、Nym 與 BLE。" – [rklaehn, iroh developer]

自訂傳輸位於獨立的 crate 中,避免了錯綜複雜的功能旗標迷宮。開發者可在不修改核心函式庫的情況下插入 BLE、LoRa、Wi‑Fi Aware 或 Tor。

與現有 Mesh/VPN 解決方案的比較

  • 類 Tailscale 的穿孔技術: 使用者回報 Iroh 感覺像是「以 Rust crate 形式的 Tailscale‑style hole punching」(colinmarc)。與 Tailscale 不同,金鑰式位址嵌入於應用程式中,省去獨立帳號服務的需求。
  • WireGuard 與 Iroh 的比較: 雖然 WireGuard 提供低層 VPN,Iroh 則在應用層運作,內建多路復用、NAT 穿透與自訂傳輸掛鉤。
  • Yggdrasil、Netbird、Zerotier: 多位評論者要求「對照」頁面;共識是 Iroh 的獨特賣點在於 以金鑰撥號的抽象 結合 可插拔的傳輸堆疊

使用者強調的案例

  • 生產環境的機器學習訓練: 有使用者回報在分散式大型語言模型訓練系統中使用 Iroh,且較 libp2p 更受青睞。
  • 遊戲開發: TypeScript SDK 範例展示了快速原型化家庭多人遊戲的方式。
  • 安全聊天與訊息傳遞: 社群成員構想以 Iroh 加密金鑰連線為基礎的類 Signal 應用。

社群的未解問題

問題 答案/討論摘要
Iroh 會取代 IP 位址嗎? Iroh 預期作為 補充層,可與 IP 並存,而非全面取代 (MostlyStable)。
金鑰輪換如何運作? 部落格未提及;鼓勵開發者將金鑰視為憑證,並透過函式庫的身份 API 進行輪換。
是否有 DHT 或人類可讀的命名? 目前尚未內建 DHT;計畫透過更高層協議(例如 DNS 風格的查詢)提供發現機制。
我能在不公開 IP 的情況下自行運行中繼嗎? 中繼類似 STUN/TURN 伺服器;自行託管需要公開可達的位址,但中繼流量已加密且受速率限制。
效能與 WireGuard 比較? 尚未公布直接基準測試;使用者回報 95 % 流量為直接,暗示延遲與調校良好的 VPN 相當。

快速入門

  1. 閱讀快速入門指南 – docs.iroh.computer/quickstart
  2. 選擇語言綁定 – Rust crate、Python (pip install iroh)、Node.js (npm i iroh)、Swift(透過 Swift Package Manager)或 Kotlin(透過 Maven Central)。
  3. 產生金鑰,並將其作為任意裝置的撥號位址。
  4. 執行公共中繼,或使用託管的 n0 預設以即時取得連線。
  5. 使用自訂傳輸擴充,若需要 BLE、LoRa 或 Tor(請參考 custom‑transport 部落格文章了解實作細節)。

前景展望

  • 未來版本 可能獨立提升語言 API,仍保持線路協定在主要版本變更前的穩定性。
  • 商業支援 透過託管中繼與企業 SLA 提供;公共中繼仍為開源且受速率限制。
  • 社群成長 透過 Discord、Reddit 與 GitHub 上的開源倉庫鼓勵。

Iroh 1.0 標誌著金鑰中心、多路徑、跨語言網路函式庫的一個里程碑,承諾讓點對點連線如同標準函式庫呼叫般簡易嵌入。

Sources