Iroh 1.0 - Terhubung dengan kunci, bukan IP - pustaka jaringan untuk menghubungkan perangkat arbitrer
(iroh.computer)- Iroh 1.0 adalah rilis stabil pertamanya, dan menjamin stabilitas wire protocol serta API bahasa sehingga endpoint iroh v1 dapat saling berkomunikasi terlepas dari minor version atau bahasanya
- Selain Rust crate, kini ada dukungan resmi untuk Python, Node.js, Swift, Kotlin, sehingga iroh dapat di-embed ke aplikasi Swift iOS dan aplikasi Kotlin Android
- Perubahan yang memengaruhi stabilitas wire selalu hadir bersama major release, dan ke depannya versi API bahasa serta kompatibilitas wire dapat dikelola versinya secara terpisah
- Setelah 1.0, major dan minor version akan didukung sesuai jadwal dukungan, dan minor version 0.35 tidak akan menerima rilis tambahan
- Dukungan Public relay akan berlanjut hingga End of Life untuk v1.0, hingga 31 Desember 2026 untuk v0.35x, dan hingga 30 September 2026 untuk v0.9x serta v1.0.0-rcX
- Public relay biasanya diperbarui ke versi terbaru dalam waktu 24 jam setelah setiap rilis, dan perubahan relay yang memutus kompatibilitas wire akan menggunakan URL baru agar klien lama tetap dapat berjalan
- Fitur koneksi mencakup QUIC multipath, QUIC NAT traversal, konfigurasi local-first, eksekusi WASM dan browser, hook kontrol koneksi, serta dukungan custom transport
- Dalam koneksi, umumnya 95% data ditransfer langsung antarperangkat, dan dijelaskan bahwa koneksi langsung mengurangi hop melalui cloud serta biaya egress {p:95}
- Relayed traffic pada public relay memiliki rate limit, dan batas tersebut dapat berubah kapan saja
2 komentar
Komentar Hacker News
Jika baru pertama kali melihat Iroh, kira-kira anggap saja ini sebagai Tailscale di lapisan aplikasi, bukan lapisan jaringan
Pertanyaan “kenapa tidak pakai Tailscale saja?” berbeda jika dilihat dari sudut pandang pengembang aplikasi. Jika ingin instance aplikasi bisa saling terhubung dengan mudah, secara teori kita bisa menanamkan fungsi Tailscale ke dalam aplikasi, tetapi itu berarti pengguna memerlukan akun Tailscale dan aplikasinya juga jadi bergantung pada Tailscale
Iroh memungkinkan fungsi ini ditanamkan secara langsung, dan juga menyediakan relay publik cadangan. Jika aplikasi berkembang sampai relay publik tidak lagi sanggup menanganinya, beralih ke relay sendiri hampir seperti hanya menekan satu sakelar
Apalagi jika Iroh membuat cara yang benar menjadi semudah dan sebagus ini
Dalam lingkungan tempat pengguna perlu mengakses instance lokal, saya rasa Iroh bisa menjadi game changer. Bagi kami, ini dipakai agar perangkat lunak bisa dikendalikan dengan mudah dari ponsel atau perangkat lain
Dulu mungkin kami harus memastikan semua ada di LAN yang sama, tetapi dengan Iroh ini bisa berjalan di lingkungan apa pun
Iroh dan OpenZiti sama-sama bisa ditanamkan ke dalam aplikasi, dan keduanya cocok sebagai use case bagi pengembang aplikasi yang ingin menanamkannya ke dalam layanan
OpenZiti dipakai untuk layanan yang mengutamakan skala dan keamanan, sedangkan Iroh bisa sangat praktis karena memungkinkan peserta tanpa hubungan awal untuk ikut bergabung
Saya salah satu pengembang Iroh
Pertanyaan yang sering muncul adalah kapan Iroh akan mendukung WebRTC, BLE, LoRa, dan sebagainya
Saat ini Iroh secara default hanya mendukung IPv4, IPv6, dan transfer melalui relay. Ada terlalu banyak metode transport yang menarik; kalau mencoba mendukung semuanya, codebase akan berubah menjadi labirin feature flag yang mustahil dipelihara
Sebagai gantinya, kami membuatnya agar transport kustom bisa diimplementasikan, dan implementasi transport bisa ditempatkan di crate yang sepenuhnya terpisah
Transport kustom eksperimental yang sudah ada mencakup Tor, Nym, dan BLE. https://github.com/mcginty/iroh-ble-transport
Cara kerja internalnya bisa dilihat di sini: https://www.iroh.computer/blog/iroh-0-97-0-custom-transports...
Jika membuat konfigurasi klien/server P2P atau dua mesin peer dengan ini, saya penasaran batasannya seperti apa terkait hal lain yang masih perlu dikonfigurasi agar dua aplikasi itu bisa saling terhubung
Misalnya, jika saya membuat aplikasi yang berjalan di ponsel dan aplikasi yang berjalan di laptop, apakah saya benar-benar bisa mendapatkan koneksi langsung dan aman di antara keduanya, atau justru ini menyelesaikan masalah yang berbeda?
-[0]: p2p chat, in rust, from scratch: https://www.youtube.com/watch?v=ogN_mBkWu7o
Tahun lalu saya memilih salah satu dari keduanya dan akhirnya memilih yang lebih familiar, tetapi sekarang terasa ada momentum yang jelas di pihak Iroh
Di sini mereka menggunakan daemon Tor. Tor memiliki implementasi Rust, dan jika dipakai dari Rust bisa digunakan dalam bentuk seperti objek stream
Contoh penggunaannya bisa dilihat di https://gitlab.torproject.org/tpo/core/oniux
Pola strategi dan pengelolaan fitur yang terpusat itu bagus
Saya tidak tahu apakah “Dial keys” ada di video itu, tetapi menurut saya paragraf pertama seharusnya memperjelas jenis key apa ini dan mengapa diperlukan
Tidak ada penjelasan apakah ini kunci kriptografis, apakah kunci asimetris, atau setidaknya bagaimana cara kerjanya pada tingkat paling dasar. Langsung masuk ke klaim keunggulan yang abstrak dan statistik penggunaan
Sepertinya relay ada kaitannya, tetapi lebih baik dijelaskan dari awal daripada membuat orang harus menemukannya sendiri di diskusi HN
Pertama ada https://docs.iroh.computer/what-is-iroh, lalu ada bagian tentang cara kerjanya. Dari yang saya lihat sejauh ini, dokumentasinya sebenarnya cukup bagus, dan pertanyaan-pertanyaan yang muncul tampaknya dijawab dengan cukup cepat
Mungkin terdistribusi, mungkin gratis, mungkin bukan monolit, tetapi secara luas masih termasuk kategori yang sama
.ssh/configTetapi setelah mendengar lebih lanjut, ini terdengar seperti cara baru melakukan networking di atas QUIC
Ringkasan versi Lobste.rs dari saya, dengan catatan saya bukan ahli dan ini proyek yang baru pertama kali saya lihat hari ini, adalah: ini lebih mirip setup WebRTC yang opinionated, yang memberi klien ID persisten. Pekerjaan membuat server signaling sudah ditangani, dan solusinya cukup umum serta murah sehingga Anda bisa memakai server yang di-host komunitas. Agak mirip dengan yang didapat dari infrastruktur P2P gamenetworkingsocket milik Steam yang bersifat eksklusif
https://lobste.rs/s/cslljn/iroh_1_0_dial_keys_not_ips#c_s3na...
Dari awal saya tidak paham masalah apa yang sebenarnya ingin diselesaikan. IP dan DNS sudah bekerja dengan baik
Kita sudah punya IPv6 dan QUIC, dan untuk mendapatkan adopsi yang berarti di area ini dibutuhkan vendor serta software utama
Secara spesifik, bayangkan ada satu perangkat di balik NAT pada WLAN rumah, dan perangkat lain di jaringan 4G atau di balik NAT lain di kantor
Dalam banyak kasus, hole punching bisa membuat koneksi langsung di antara kedua perangkat dengan sangat cepat, sehingga mendapatkan bandwidth setinggi mungkin dan latensi serendah mungkin
Masalah ini sampai sekarang belum benar-benar terselesaikan
Karena TCP/IP tidak punya session layer yang sesungguhnya, vMotion biasanya hanya mungkin dalam satu broadcast domain. Dalam situasi itu, pengalamatan pada dasarnya hanya memakai alamat MAC, dan meskipun alamat MAC berubah setelah vMotion, IP masih bisa dipakai sebagai pengenal yang stabil. Pemetaan ini ditangani oleh tabel alamat MAC pada switch
Masa depan networking adalah desentralisasi. Saya sangat menyukai Yggdrasil dan I2P
Kita seharusnya bisa membeli mini PC yang berjalan 24 jam untuk meng-host hal yang dibutuhkan, lalu terhubung mulus dengan orang lain. Banyak orang teknis sudah punya mesin cadangan lama yang cuma berdebu, dan itu bisa dijadikan server
Dalam jangka panjang, ini jauh lebih murah dan lebih mudah dirawat daripada harus mengurus domain dan hosting server. Saya benar-benar menghargai pekerjaan tim Iroh
Iroh sangat menyenangkan untuk dipakai, dan para engineer di channel Discord juga sangat ramah
Pendekatan praktis untuk membuat P2P benar-benar bekerja mudah dipahami, dan konten di channel YouTube mereka juga luar biasa. Selamat atas rilis v1
https://youtube.com/@n0computer
Bukankah aneh kalau protokol yang mencoba berfungsi mirip alamat IP punya label harga? Mungkin saya salah paham sesuatu
Hanya saja, untuk menutup biaya pengembangan, mereka juga menawarkan layanan tambahan yang mempermudah deployment dan operasional, terutama untuk use case yang lebih besar atau lebih khusus
Keadaannya seperti “ingin menjadi infrastruktur bagi orang-orang, tetapi juga bisnis bagi para profesional”
Terjepit di antara “butuh uang untuk beroperasi” dan “ingin menjadi sistem infrastruktur barang publik”, sementara sisi negatif sebagai perusahaan profit dibersihkan dengan “ya, tapi ini open source”
Selama embel-embel “open source” itu tidak berarti codebase yang sepenuhnya kustom dan mustahil dipahami, saya rasa konsep bisnis seperti ini masih cukup masuk akal
Jelas menjalankan ISP atau AS memang memerlukan biaya yang besar
Perusahaan saya memakai Iroh di produksi dan kami sangat menyukainya
Saya terutama akan menjelaskannya sebagai hole punching ala Tailscale yang disediakan sebagai crate Rust, tetapi tentu saja di atas koneksi QUIC dasar Anda juga bisa menambahkan banyak fitur P2P yang keren
Perusahaan kami memakai Iroh untuk sistem pelatihan machine learning terdistribusi di produksi, dan kami sangat puas
Bahkan sebelum menandatangani kontrak dukungan enterprise, timnya merespons dengan sangat cepat, pengetahuannya sangat mendalam, dan library-nya sendiri bekerja dengan sangat baik. Saya akan memilih library ini lagi kapan saja dibanding libp2p
Selamat atas peluncurannya
Hal yang sangat mendesak adalah halaman versus yang membandingkannya dengan tailscale/netbird/netmaker/zerotier/twingate/openziti
Jika hanya melihat use case-nya, saat ini belum terlihat apa yang tidak bisa dilakukan oleh Tailscale
Komentar Lobste.rs
Sepertinya baik di sini maupun di HN, banyak yang bingung bagaimana Iroh berbeda dari jaringan mesh yang berjalan di atas VPN (Tailscale, ZeroTier, Netbird, dll.). Menurut pemahaman saya, Iroh ditujukan untuk pengembang aplikasi yang ingin perangkat yang menjalankan aplikasi mereka bisa berkomunikasi P2P, sedangkan jaringan mesh ditujukan untuk administrator jaringan yang ingin menghubungkan perangkat yang mereka miliki atau kelola satu sama lain
Misalnya Anda membuat aplikasi pesan P2P: satu pengguna mungkin memakai perangkat mobile yang terus berpindah antara WiFi dan data seluler sehingga tidak punya alamat yang stabil, sementara pihak lain mungkin memakai laptop di balik NAT dan CGNAT. Agar keduanya tetap bisa berkomunikasi meski alamat IP berubah, dibutuhkan mekanisme yang menangani hal itu
Dulu biasanya kedua endpoint terhubung ke server perantara yang dioperasikan pengembang aplikasi lalu berbagi status di sana, dan Iroh tampaknya lebih dekat ke upaya menstandarkan pola itu serta menyediakannya sebagai layanan
Agak mirip juga dengan apa yang didapat dari infrastruktur P2P
gamenetworkingsocketmilik Steam yang proprietariMungkin saya melewatkan sesuatu, tetapi menaruh semuanya pada satu kunci terdengar sangat berisiko. Saya penasaran apa yang terjadi jika kunci itu hilang atau dicuri
Saya sempat mencari cepat “key rotation” di dokumentasi Iroh, tetapi tidak menemukannya
Beberapa aplikasi yang memakai Iroh menyimpan kunci secara permanen, sementara yang lain membuatnya baru setiap sesi
Jika kunci privat bocor, penyerang bisa menyamar sebagai saya saat memulai atau menerima koneksi. Jika saya kehilangan kuncinya, saya tidak akan bisa membuktikan identitas saya ke peer. Menurut pemahaman saya, risikonya mirip dengan saat kata sandi biasa atau kunci privat hilang atau dicuri
Alternatif serupa apa saja yang ada? Host Identity Protocol? https://mkomu.kapsi.fi/hipl/index.php?index=how
Saya sedang mencoba memahami proyek ini, tetapi perbedaan antara kunci dan IP masih belum terasa jelas. Pada akhirnya bukankah pada suatu titik kunci itu dipetakan ke alamat IP agar bisa memakai routing IP?
Apakah kunci itu semacam pengenal yang bertahan lama yang dilekatkan pada alamat IP, sebagai pengganti URL atau DNS?
Saat Anda mencoba menghubungkan satu node ke node lain dengan kunci, sistem akan mencari kunci itu di salah satu server relay, lalu mencoba berbagai cara mulai dari koneksi IP langsung, hole punching, hingga pada akhirnya koneksi relay melalui server relay
Selain itu, kunci juga dipakai untuk enkripsi ujung-ke-ujung melalui QUIC
Apakah ada cara untuk meng-host server relay sendiri untuk aplikasi tertentu? Sepertinya ada. Hanya saja, agak terasa aneh karena ada halaman harga khusus relay dedicated
Relay ter-host disediakan untuk memberi hal yang sama tanpa repot mengelola server sendiri, sekaligus memberi visibilitas lebih besar ke jaringan
Rasanya ini lebih dekat ke Reticulum daripada ke Yggdrasil atau Netbird
Sulit memahami ini sebenarnya apa. Saya jadi teringat Yggdrasil, tetapi saya tidak begitu paham bagaimana keduanya dibandingkan