Iroh 1.0 - IP नहीं, key से कनेक्ट करें - मनचाहे डिवाइस कनेक्शन के लिए networking लाइब्रेरी
(iroh.computer)- Iroh 1.0 पहली स्थिर रिलीज़ है, और wire protocol तथा language API स्थिरता की गारंटी देती है, जिससे iroh v1 endpoint आपस में minor version या language की परवाह किए बिना संचार कर सकते हैं
- Rust crate के अलावा Python, Node.js, Swift, Kotlin का आधिकारिक समर्थन है, और Swift iOS एप्लिकेशन तथा Kotlin Android ऐप्स में iroh को embed किया जा सकता है
- wire स्थिरता को प्रभावित करने वाले बदलाव हमेशा major release के साथ होंगे, और आगे चलकर language API version तथा wire compatibility को स्वतंत्र रूप से version किया जा सकता है
- 1.0 के बाद major और minor version को support schedule के अनुसार समर्थन मिलेगा, जबकि 0.35 minor version को अतिरिक्त रिलीज़ नहीं मिलेगी
- Public relay समर्थन v1.0 के लिए End of Life तक, v0.35x के लिए 31 दिसंबर 2026 तक, और v0.9x तथा v1.0.0-rcX के लिए 30 सितंबर 2026 तक संचालित होगा
- public relay आम तौर पर हर रिलीज़ के तुरंत बाद 24 घंटे के भीतर नवीनतम version पर अपडेट हो जाते हैं, और wire-breaking relay बदलावों में पुराने client चलते रहें इसके लिए नया URL इस्तेमाल किया जाता है
- कनेक्टिविटी फीचर्स में QUIC multipath, QUIC NAT traversal, local-first configuration, WASM और browser execution, connection control hook, तथा custom transport support शामिल हैं
- कनेक्शन में डेटा का 95% सीधे डिवाइसों के बीच ट्रांसफर होना सामान्य है, और विवरण के अनुसार direct connection cloud के जरिए होने वाले hop और egress लागत को कम करता है {p:95}
- public relay के relayed traffic पर rate limit लागू है, और यह सीमा किसी भी समय बदली जा सकती है
2 टिप्पणियां
Hacker News की राय
अगर आप पहली बार Iroh देख रहे हैं, तो मोटे तौर पर इसे network layer नहीं बल्कि application layer का Tailscale समझ सकते हैं
“बस Tailscale ही क्यों न इस्तेमाल करें?” ऐप डेवलपर के नज़रिए से बात अलग है। अगर app instances को आपस में आसानी से connect कराना हो, तो सैद्धांतिक रूप से Tailscale की functionality को ऐप में embed किया जा सकता है, लेकिन तब user को Tailscale account चाहिए होगा और ऐप भी Tailscale पर निर्भर हो जाएगा
Iroh आपको यह functionality सीधे embed करने देता है, और public fallback relay भी देता है। अगर ऐप इतना बड़ा हो जाए कि public relay संभालना मुश्किल हो, तो अपने relay पर switch करना लगभग एक switch flip करने जितना आसान है
खासकर तब, जब Iroh ने सही तरीके से काम करना इतना आसान और शानदार बना दिया हो
जहाँ users को local instances तक पहुँच चाहिए, वहाँ Iroh game changer हो सकता है। हमारे लिए इसका उपयोग फ़ोन या दूसरे devices से software को आसानी से control करने में है
पहले शायद यह देखना पड़ता कि वे एक ही LAN पर हैं या नहीं, लेकिन Iroh के साथ यह किसी भी environment में काम करता है
Iroh और OpenZiti दोनों को ऐप में embed किया जा सकता है, और service में embedding करना चाहने वाले app developers के लिए दोनों अच्छे use case हैं
OpenZiti उन services में इस्तेमाल होता है जहाँ scale और security महत्वपूर्ण हैं, जबकि Iroh ऐसे participants को भी साथ आने देता है जिनका पहले से कोई संबंध नहीं है, इसलिए यह बहुत सुविधाजनक हो सकता है
मैं Iroh के developers में से एक हूँ
बार-बार पूछा जाने वाला सवाल है कि Iroh WebRTC, BLE, LoRa वगैरह को कब support करेगा
अभी Iroh default रूप से सिर्फ IPv4, IPv6 और relay transport को support करता है। दिलचस्प transport तरीकों की संख्या इतनी ज़्यादा है कि अगर हम सबको support करने लगें, तो codebase feature flags की ऐसी भूलभुलैया बन जाएगा जिसे maintain करना असंभव होगा
इसके बजाय हमने custom transports implement करने की सुविधा दी है, और transport implementation को पूरी तरह अलग crate में रखा जा सकता है
मौजूदा experimental custom transports में Tor, Nym और BLE शामिल हैं। https://github.com/mcginty/iroh-ble-transport
यह अंदर से कैसे काम करता है, यहाँ देखा जा सकता है: https://www.iroh.computer/blog/iroh-0-97-0-custom-transports...
अगर इससे P2P client/server setup या दो peer machines बनाई जाएँ, तो मैं यह जानना चाहता हूँ कि दो applications के बीच connection के लिए अतिरिक्त रूप से क्या configure करना पड़ता है, और इसकी सीमाएँ क्या हैं
उदाहरण के लिए, अगर मैं एक ऐप फ़ोन पर और दूसरी ऐप laptop पर चलाऊँ, तो क्या मुझे वास्तव में दोनों के बीच direct और secure connection मिल सकता है, या यह किसी और समस्या का समाधान कर रहा है?
-[0]: p2p chat, in rust, from scratch: https://www.youtube.com/watch?v=ogN_mBkWu7o
पिछले साल दोनों में से एक चुनते समय मैंने वही चुना जिससे मैं ज़्यादा परिचित था, लेकिन अब लगता है कि Iroh के पक्ष में साफ़ momentum है
यहाँ Tor daemon का उपयोग किया जा रहा है। Tor की एक Rust implementation है, और Rust में इसका इस्तेमाल stream object जैसी किसी चीज़ के रूप में किया जा सकता है
उपयोग का उदाहरण https://gitlab.torproject.org/tpo/core/oniux में देखा जा सकता है
strategy pattern और centralized feature management अच्छे रहते हैं
मुझे नहीं पता कि वीडियो में “Dial keys” थे या नहीं, लेकिन मेरा मानना है कि पहले पैराग्राफ़ में साफ़ होना चाहिए कि ये किस तरह की keys हैं और इनकी ज़रूरत क्यों है
क्या ये cryptographic keys हैं, क्या ये asymmetric keys हैं, कम-से-कम बुनियादी स्तर पर भी ये कैसे काम करती हैं इसका कोई explanation नहीं है। यह तुरंत abstract superiority claims और usage statistics पर चला जाता है
लगता है relay इससे जुड़ा हुआ है, लेकिन लोगों को यह HN discussion में खोजने पर मजबूर करने के बजाय शुरू से ही बता देना बेहतर होगा
पहले https://docs.iroh.computer/what-is-iroh है, और उसके बाद how it works section है। अभी तक देखने पर docs सचमुच ठीक लगते हैं, और उठे हुए सवालों के जवाब काफ़ी जल्दी दे देते हैं
यह distributed हो सकता है, free हो सकता है, monolith न भी हो सकता है, लेकिन बड़े तौर पर यह उसी category में आता है
.ssh/configके named hosts जैसा कोई “name” होगा, जिसे key से access किया जाता हैलेकिन और सुनने पर यह QUIC के ऊपर networking करने के एक नए तरीके जैसा लगा
मैं expert नहीं हूँ और यह project आज ही पहली बार देखा है, इसे ध्यान में रखते हुए Lobste.rs summary यह है: यह client को persistent ID assign करने वाले, opinionated WebRTC setup के ज़्यादा क़रीब है। signaling server बनाने का काम इसमें पहले से handled है, और solution इतना generic और सस्ता है कि community-hosted servers भी इस्तेमाल किए जा सकते हैं। Steam की proprietary P2P gamenetworkingsocket infrastructure से जो मिलता है, उससे थोड़ा मिलता-जुलता है
https://lobste.rs/s/cslljn/iroh_1_0_dial_keys_not_ips#c_s3na...
मुझे शुरुआत से ही समझ नहीं आता कि यह कौन-सी problem solve करना चाहता है। IP और DNS तो ठीक से काम करते हैं
हमारे पास पहले से IPv6 और QUIC हैं, और इस क्षेत्र में meaningful traction पाने के लिए vendors और major software की ज़रूरत होगी
मान लीजिए एक device घर के WLAN के NAT के पीछे है, और दूसरा device 4G network या किसी कंपनी के दूसरे NAT के पीछे है
ज़्यादातर मामलों में hole punching के ज़रिए दोनों devices के बीच बहुत तेज़ी से direct connection बनाया जा सकता है, और इससे highest possible bandwidth और lowest latency मिलती है
यह समस्या अभी तक हल की हुई समस्या नहीं रही है
TCP/IP में असली session layer नहीं होने की वजह से vMotion आमतौर पर सिर्फ़ एक single broadcast domain के भीतर ही संभव होता है। इस स्थिति में addressing के लिए लगभग सिर्फ़ MAC address का इस्तेमाल होता है, और vMotion के बाद MAC address बदल जाए तब भी IP को stable identifier की तरह इस्तेमाल किया जा सकता है। mapping का काम switch की MAC address table संभालती है
networking का future decentralization है। मुझे Yggdrasil और I2P बहुत पसंद हैं
आपको एक mini PC खरीदकर उसे 24/7 चलाना चाहिए, उस पर ज़रूरी चीज़ें host करनी चाहिए, और दूसरे लोगों से आसानी से connect कर पाना चाहिए। बहुत-से तकनीकी लोग पहले से ही पुराने spare machines रखते हैं जिन पर धूल जम रही होती है, और उन्हें server बनाया जा सकता है
लंबे समय में यह domains और server hosting संभालने की तुलना में बहुत सस्ता होगा और maintenance भी आसान होगा। Iroh team के काम की मैं सच में सराहना करता हूँ
Iroh के साथ काम करना वाकई बहुत अच्छा था, और Discord channel के engineers भी बहुत मददगार थे
P2P को बस काम करने लायक बना देने वाला practical approach समझना आसान था, और YouTube channel का content भी शानदार है। v1 release पर बधाई
https://youtube.com/@n0computer
जो protocol IP address जैसी functionality देना चाहता है, उसके साथ price tag होना अजीब नहीं लगता? हो सकता है मैं कुछ ग़लत समझ रहा हूँ
लेकिन development cost निकालने के लिए, ख़ासकर बड़े या विशेष use cases में deployment और operation आसान बनाने वाली अतिरिक्त services दी जाती हैं
यानी “लोगों के लिए infrastructure बनना है, और experts के लिए business भी बनना है” वाली स्थिति
यह “इसे चलाने के लिए पैसा चाहिए” और “हम public-good infrastructure system बनना चाहते हैं” के बीच फँसा हुआ है, और for-profit company के नकारात्मक पहलुओं को “लेकिन यह open source है” कहकर साइड में कर दिया जाता है
जब तक “open source” का मतलब पूरी तरह custom और समझ से बाहर codebase न हो, मुझे लगता है ऐसा business concept कुछ हद तक ठीक है
यह तो तय है कि ISP या AS चलाने में काफ़ी पैसा लगता है
हमारी company production में Iroh इस्तेमाल कर रही है और हमें यह वाकई बहुत पसंद है
मैं इसे मुख्य रूप से Rust crate के रूप में दिया गया Tailscale-जैसा hole punching कहूँगा, लेकिन बेशक base QUIC connection के ऊपर बहुत-सी बढ़िया P2P functionality भी जोड़ी जा सकती है
हमारी company ने production distributed machine learning training system में Iroh इस्तेमाल किया था, और हम इससे बहुत संतुष्ट थे
enterprise support contract साइन करने से पहले ही team अविश्वसनीय रूप से तेज़ जवाब दे रही थी, उनका knowledge भी बहुत गहरा था, और library ख़ुद भी हैरान कर देने लायक अच्छी तरह काम कर रही थी। मैं libp2p की बजाय कभी भी फिर से यही library इस्तेमाल करूँगा
लॉन्च के लिए बधाई
tailscale/netbird/netmaker/zerotier/twingate/openziti के साथ तुलना करने वाला versus पेज तुरंत चाहिए
सिर्फ़ use case देखने पर अभी ऐसा कुछ नहीं दिखता जो Tailscale से नहीं किया जा सकता
Lobste.rs की राय
लगता है यहाँ और HN दोनों जगह लोग इस बात को लेकर भ्रमित हैं कि Iroh, VPN के ऊपर चलने वाले mesh network (Tailscale, ZeroTier, Netbird आदि) से कैसे अलग है। मेरी समझ में Iroh उन application developers के लिए है जो अपने app चलाने वाले devices के बीच P2P communication चाहते हैं, जबकि mesh network उन network admins के लिए हैं जो अपने स्वामित्व या प्रबंधन वाले उपकरणों को आपस में जोड़ना चाहते हैं
उदाहरण के लिए, मान लें आप एक P2P messaging app बना रहे हैं। एक तरफ का user ऐसा mobile device इस्तेमाल कर सकता है जो लगातार WiFi और mobile data के बीच बदलता रहता है, इसलिए उसका कोई स्थिर address नहीं है, और दूसरी तरफ का user NAT और CGNAT के पीछे बैठा laptop इस्तेमाल कर सकता है। अगर IP address बदलने पर भी इन दोनों को communicate कराना है, तो इसके लिए कोई mechanism चाहिए
पहले आमतौर पर app developer द्वारा चलाए जाने वाले intermediary server से दोनों endpoints को जोड़कर state share कराई जाती थी, लेकिन Iroh इसे standardize करके service के रूप में देने के ज्यादा करीब लगता है
यह कुछ हद तक Steam के proprietary P2P
gamenetworkingsocketinfrastructure से मिलने वाली चीज़ जैसा भी हैहो सकता है मैं कुछ मिस कर रहा हूँ, लेकिन सब कुछ एक ही key पर टिका देना बहुत जोखिम भरा लगता है। अगर वह key खो जाए या compromise हो जाए तो क्या होगा, यह जानना चाहता हूँ
Iroh docs में “key rotation” जल्दी से खोजा, लेकिन कुछ नहीं मिला
Iroh इस्तेमाल करने वाले कुछ applications keys को स्थायी रूप से store करते हैं, और कुछ हर session के लिए नई key बनाते हैं
अगर private key लीक हो जाए तो attacker connection शुरू करते समय या receive करते समय मेरी नकल कर सकता है। अगर key खो जाए तो मैं peers के सामने अपनी identity साबित नहीं कर पाऊँगा। मेरी समझ में यह वही तरह का जोखिम है जैसा सामान्य password या private key खोने या चोरी होने पर होता है
इसी तरह के alternatives क्या हो सकते हैं? Host Identity Protocol? https://mkomu.kapsi.fi/hipl/index.php?index=how
मैं project को समझने की कोशिश कर रहा हूँ, लेकिन key और IP का फ़र्क ठीक से समझ नहीं आ रहा। आख़िर किसी बिंदु पर IP routing इस्तेमाल करने के लिए key को IP address से map नहीं करना पड़ेगा?
क्या key, IP address के साथ लंबे समय तक रहने वाला identifier जोड़ने का तरीका है, यानी URL या DNS का विकल्प?
जब आप किसी node को उसकी key से किसी दूसरे node से जोड़ने की कोशिश करते हैं, तो यह relay servers में से किसी एक पर उस key को lookup करता है, फिर direct IP connection से लेकर hole punching और अंत में relay server के ज़रिए relay connection तक कई तरीके आज़माता है
इसके अलावा key का इस्तेमाल QUIC के जरिए end-to-end encryption में भी होता है
क्या किसी खास application के लिए अपना relay server host करने का कोई तरीका है? संभव तो लगता है। लेकिन dedicated relay pricing page होना थोड़ा अजीब लगता है
hosted relay का मकसद यह सुविधा बिना अपने server को manage करने की झंझट के देना है, और network पर ज्यादा visibility भी देना है
यह Yggdrasil या Netbird से ज़्यादा Reticulum के करीब लगता है
यह क्या है, समझना मुश्किल है। Yggdrasil याद आता है, लेकिन दोनों की तुलना कैसे होगी, यह साफ़ नहीं है