- noq yang dikembangkan tim n0 adalah implementasi QUIC serbaguna yang ditulis dalam Rust dan mendukung multipath serta NAT traversal
- Dikembangkan dengan beralih ke codebase independen untuk mengatasi keterbatasan struktur berbasis Quinn di iroh
- Mencakup beragam fitur seperti QUIC Multipath, NAT Traversal, Address Discovery, ekstensi QLog, dan WeakConnectionHandle
- Sudah digunakan di lingkungan produksi sejak iroh v0.96, dan pengujian interoperabilitas dengan picoquic juga telah selesai
- Ke depannya akan terus berkolaborasi dengan QUIC Working Group dan tim Quinn, serta dikembangkan sebagai teknologi fondasi bagi pengembang aplikasi jaringan berbasis Rust
Pengumuman noq
- noq adalah implementasi QUIC serbaguna yang dikembangkan tim n0, dengan dukungan multipath dan NAT traversal
- Digunakan sebagai lapisan transport sejak iroh v0.96, dan bisa dimanfaatkan untuk keperluan umum, tidak terbatas pada iroh
Peralihan dari Quinn ke noq
- iroh sebelumnya menggunakan QUIC berbasis Quinn, tetapi memiliki banyak fitur kompleks seperti NAT traversal dan pergantian jalur yang harus ditangani di luar QUIC
- Karena keterbatasan struktural ini menyulitkan modifikasi dari luar, diputuskan untuk membuat hard fork Quinn
- Sambil tetap mempertahankan kolaborasi dengan Quinn, pengembangan dialihkan ke codebase independen untuk memenuhi kebutuhan khusus iroh
Fitur utama noq
-
QUIC Multipath
- Mengimplementasikan spesifikasi QUIC Multipath secara penuh, mengintegrasikan relay dan jalur langsung iroh (IPV4, IPV6) sebagai konsep jalur kelas satu di QUIC
- Mempertahankan status kontrol kemacetan untuk tiap jalur sehingga dapat memilih jalur yang optimal
- Sebelumnya iroh memanipulasi jalur di bawah QUIC, tetapi kini QUIC sendiri mengenali dan mengelolanya
- Dirancang sebagai implementasi multipath serbaguna yang dapat digunakan juga di luar iroh
-
QUIC NAT Traversal
- Mengimplementasikan draft QUIC NAT traversal berdasarkan interpretasi sendiri, dan disebut sebagai kasus pertama dengan stabilitas tingkat produksi
- Telah diuji di lapangan pada ratusan ribu perangkat iroh
- Melakukan NAT hole punching langsung di lapisan QUIC sehingga pengendali kemacetan dan deteksi kehilangan dapat bekerja lebih akurat
-
QUIC Address Discovery
- Menggunakan QUIC Address Discovery (QAD) sejak iroh v0.32
- Mempelajari alamat IP publik klien melalui koneksi QUIC, alih-alih menggunakan STUN
- Pengiriman paket terenkripsi mencegah kekakuan protokol dan memperkuat perlindungan privasi
-
Ekstensi QLog
- Mencatat berbagai peristiwa koneksi QUIC berdasarkan draft standar QLog
- Mendukung jauh lebih banyak peristiwa dibanding sebelumnya, termasuk peristiwa terkait multipath
- Kompatibel dengan alat visualisasi seperti qvis, dan juga menyediakan prototipe penampil yang menampilkan aliran paket multi-jalur
-
WeakConnectionHandle
- Tipe yang memungkinkan koneksi tidak dipertahankan terus-menerus, tetapi dapat dipromosikan menjadi objek Connection saat diperlukan
- Mirip dengan
std::sync::Weak, tetapi tidak perlu menggunakan Arc
- Dapat dimanfaatkan secara berguna dalam komponen seperti manajer koneksi
Penerapan produksi dan interoperabilitas
- noq telah digunakan di lingkungan produksi sejak iroh v0.96
- Selain implementasi multipath-nya sendiri, pengujian interoperabilitas dengan picoquic juga telah selesai
Rencana ke depan
- noq akan dikembangkan sebagai teknologi fondasi jangka panjang
- Mendorong peningkatan NAT traversal dan optimalisasi performa berbasis multipath
- Melanjutkan kolaborasi dengan QUIC Working Group dan tim Quinn
- Memperluas kerja sama dengan pengembang implementasi QUIC, transport P2P, dan aplikasi yang berjalan di berbagai lingkungan jaringan
- Menyediakan dokumentasi dan kode contoh agar implementasi QUIC multipath berbasis Rust ini bisa langsung dicoba
Gambaran umum Iroh
- Iroh adalah pustaka jaringan “dial-any-device” yang mendukung konfigurasi jaringan fleksibel melalui kombinasi protokol
- Sudah beroperasi pada ratusan ribu perangkat dan tersedia sebagai open source
- Partisipasi dalam proyek dimungkinkan melalui dokumentasi, kode, dan kanal Discord
1 komentar
Komentar Hacker News
Menyenangkan melihat tim Iroh mendiskusikan proses memutuskan untuk melakukan fork dengan saling menghormati di thread ini
Ini juga menunjukkan betapa sulitnya mengirim kembali perubahan internal ke upstream. Mereka bilang tidak punya waktu untuk memecah perubahan mereka menjadi ratusan PR kecil untuk direview. Dari sudut pandang perusahaan, itu adalah investasi waktu yang terlalu besar
Meski begitu, mereka tetap berharap menjaga kedekatan dengan proyek asli dan detail implementasinya. Setelah cukup stabil, sepertinya penggabungan dalam potongan besar alih-alih unit kecil juga memungkinkan
iroh tampak seperti produk yang diposisikan dengan baik di era pembuatan aplikasi personal yang cepat
Saya ingin membuat “app relay” dengan ini. Saya sedang membayangkan solusi OSS zero-config yang memungkinkan pengguna mengakses aplikasi atau data di jaringan mereka sendiri dari jarak jauh tanpa pengaturan tambahan. Ini berbeda dari relay jaringan seperti Tailscale
Saya sangat menyukai tim n0. Saya sering memakai sendme CLI mereka untuk transfer file P2P
Saya penasaran bagaimana noq/iroh me-relay paket QUIC. QUIC sulit dilacak, jadi saya bertanya-tanya bagaimana relay tahu paket mana harus dikirim ke mana, atau apakah QUIC dibungkus ke dalam protokol lain
Dalam praktiknya, datagram QUIC dikirim dengan membungkusnya ke dalam WebSocket. Header-nya memuat EndpointId tujuan (kunci publik ed25519), dan melalui handshake, EndpointId pengirim juga diautentikasi
Jadi pada dasarnya ini adalah tunneling datagram QUIC lewat HTTPS over TCP. Memang terenkripsi dua kali, tetapi dirancang agar tetap berfungsi di lingkungan yang memblokir UDP dan tampak seperti trafik biasa
Tim iroh masih terus berkembang dengan cepat
Saya berencana meluangkan waktu akhir pekan untuk mencoba membuat jaringan overlay seperti Nebula dengan iroh
Pendekatan seperti QUIC masih merupakan struktur yang mengikat persistensi koneksi erat ke status transport
Saya sedang memikirkan apakah identitas sesi bisa dipisahkan sepenuhnya dari lapisan transport, sehingga kegagalan transport menjadi sekadar peristiwa yang bisa dipulihkan. Saya penasaran apakah ada yang pernah melihat sistem praktis yang melampaui QUIC dalam hal ini
Mengacu ke cuplikan kode noq
Kabar terbaru tentang fitur custom transport iroh yang baru diumumkan juga menarik
Bisa dilihat lebih detail di postingan blog iroh 0.97.0
Sudah cek nQUIC belum? Akan menarik jika Noise diintegrasikan ke Noq
noq (dan Quinn yang menjadi dasarnya) memungkinkan implementasi trait “Session” sendiri, jadi bisa memilih TLS atau nQUIC sesuai kebutuhan
Jangan sampai tertukar dengan Noq milik tsoding. Nama itu berasal dari “Not Coq”