- एक इंटरैक्टिव पेज जो यूज़र के packet के इंटरनेट के ज़रिए वेबसाइट सर्वर तक पहुँचने के रास्ते को रीयल-टाइम में विज़ुअलाइज़ करता है
- खुद बनाया गया traceroute प्रोग्राम
ktr ICMP packet के TTL value का उपयोग करके हर network hop की जानकारी इकट्ठा करता है
- वेबसाइट JavaScript के बिना भी काम करती है, और सर्वर traceroute के नतीजों को streaming रूप में HTML में दिखाता है
- path analysis के लिए WHOIS·PeeringDB data का उपयोग कर हर IP का Autonomous System (AS) और कंपनी जानकारी दिखाई जाती है
- traceroute और BGP-आधारित internet structure को जोड़कर यह दिखाया गया है कि इंटरनेट कंपनियों के बीच peering संबंधों से बने networks का एक समूह है
आपके packet की यात्रा
- पेज के ऊपर दिखाया गया traceroute यूज़र के कंप्यूटर से सर्वर तक के packet path को दर्शाता है
- यह router, ISP, Amazon, NTT Global IP Network, Hetzner जैसे networks से क्रमशः होकर गुजरता है
- कुछ हिस्से “(no response)” के रूप में दिखते हैं, जिसका मतलब है कि संबंधित सर्वर ने जवाब नहीं दिया
- Hetzner network के अंदर यह कई routers से होकर अंतिम सर्वर तक पहुँचता है
- IP address
213.239.252.10 को reverse DNS lookup के ज़रिए core0.fra.hetzner.com के रूप में दिखाया गया है
Behind the Scenes
- वेबसाइट यूज़र का request मिलते ही सर्वर पर traceroute चलाती है और उसका परिणाम रीयल-टाइम में भेजती है
- traceroute ICMP protocol का उपयोग करता है और TTL (Time To Live) value को 1-1 बढ़ाते हुए हर hop का response इकट्ठा करता है
- TTL के 0 होने पर संबंधित router error message लौटाता है, जिससे packet के गुज़रे हुए path को trace किया जाता है
ktr traceroute result को stream करते हुए हर hop की IP·ASN·owner network जानकारी भी साथ में lookup करता है
Frontend Fun
- यह JavaScript के बिना भी काम करता है, और browser इसे बस धीरे लोड होने वाले पेज की तरह पहचानता है
- सर्वर HTTP connection को खुला रखकर traceroute result को क्रमशः HTML में डालता है
- हर update पर CSS block insert करके पुराने result को छिपाने के तरीके से रीयल-टाइम update effect बनाया गया है
Front to Back, Back to Front
- वास्तव में सर्वर से यूज़र के IP तक traceroute चलाया जाता है और result को उल्टे क्रम में दिखाया जाता है
- यह एक “reverse traceroute” है; दोनों दिशाओं का path पूरी तरह एक जैसा नहीं होता, लेकिन अधिकांशतः मिलता-जुलता path दिखाता है
नेटवर्क और Autonomous System (AS)
- इंटरनेट Autonomous System (AS) कहलाने वाले कंपनी-स्तर के networks के interconnected ढाँचे से बना है
- हर AS का अपना अलग ASN (Autonomous System Number) होता है और वे आपस में peering के ज़रिए traffic exchange करते हैं
- इंटरनेट किसी व्यक्ति का नहीं, बल्कि कंपनियों के स्वामित्व वाले networks का समूह है, और इनके connection आर्थिक अनुबंधों और प्रशासनिक प्रक्रियाओं से तय होते हैं
- ASN के लिए 5 regional internet registries (RIR) में से किसी एक के माध्यम से आवेदन किया जा सकता है
WHOIS और PeeringDB
- traceroute के हर IP का AS पता करने के लिए WHOIS protocol और PeeringDB database का उपयोग किया गया है
- WHOIS की संरचना सरल है: TCP connection खोलकर query भेजो, और सर्वर जानकारी लौटा देता है
- अलग-अलग सर्वरों में field name और format अलग होने के कारण parser को मानव-पठनीय शैली के करीब एक सरल simulator की तरह बनाया गया है
- PeeringDB कुल AS में से लगभग 1/3 के लिए कंपनी जानकारी उपलब्ध कराता है
BGP(Border Gateway Protocol)
- BGP इंटरनेट का आकार तय करने वाला मुख्य protocol है, जो AS के बीच path information exchange करता है
- border router BGP routing table बनाए रखता है और हर path की ASN list store करता है
- जब दो AS peering करते हैं, तो उनके routers BGP session बनाते हैं और route advertisement का आदान-प्रदान करते हैं
- router कई paths में से सबसे छोटा या सबसे अधिक preferred path चुनकर packet को आगे भेजता है
BGP का इतिहास
- 1969 के ARPANET से शुरू हुए network experiment ने 1989 में Cisco और IBM के RFC 1105 तक पहुँचकर BGP v1 को जन्म दिया
- इसके बाद BGP v2(1990) और v4(1994) जारी हुए, और v4 आज तक उपयोग में है
- BGP इंटरनेट पर सभी networks के बीच connectivity path तय करने वाला standard protocol बन गया
Traceroute और BGP का संबंध
- उदाहरण path: AS16509 → AS2914 → AS24940
- Amazon(AS16509) → NTT Global IP Network(AS2914) → Hetzner(AS24940) के क्रम में
- एक ही ASN के भीतर भी कई hops हो सकते हैं, जिन्हें internal routing protocol या fixed path से संभाला जाता है
- AS के बीच peering संबंध ही इंटरनेट पर वास्तविक reachability तय करते हैं
Recap सारांश
- वेबसाइट यूज़र के IP पर traceroute चलाती है और result को HTTP stream के रूप में भेजती है
- traceroute ICMP packet के TTL का उपयोग करके routers के बीच path को visualise करता है
- हर router किसी Autonomous System (AS) का हिस्सा होता है और BGP के ज़रिए आपस में जुड़ा रहता है
- peering संबंध ही इंटरनेट की reachability और संरचना तय करते हैं
Epilogue
- लेखक को इंटरनेट की संरचना की अपनी समझ अधूरी लगी, इसलिए उन्होंने protocol-केंद्रित शैक्षिक interactive लेख बनाया
- बड़े और अत्यधिक polished project के बजाय उन्होंने छोटे रूप में भी उसे public करने का फैसला किया
- यह Hack Club community के प्रोत्साहन से पूरा हुआ और इसमें open source traceroute program का उपयोग किया गया
- “छोटा हो, पर पूरा हो” इस संदेश के साथ लेखक चाहता है कि यह सस्टेनेबल web content के रूप में बना रहे
1 टिप्पणियां
Hacker News राय
मुझे लगता है यह reverse traceroute फीचर अब भी उपयोगी है
लेकिन व्यवहार में, AS path एक जैसा होने पर भी peering point लगभग हमेशा अलग होते हैं
ज़्यादातर AS hot-potato routing का उपयोग करते हैं, इसलिए वे ट्रैफ़िक के स्रोत के सबसे नज़दीकी peering point पर पैकेट सौंप देते हैं
cold-potato इस्तेमाल करने पर भी यह asymmetrical रहता है। और जब AS-path की लंबाई समान हो, तब भी hot-potato policy की वजह से अलग path चुना जा सकता है
(संपादन: hot/cold की गड़बड़ी ठीक की)
हालांकि कुछ मामलों में traceroute वाली तरफ़ ISP के अंदरूनी path ज़्यादा दिखे
कुल मिलाकर तुम्हारी बात सही है, और बाद में hot-potato vs cold-potato routing के अंतर पर और विस्तार से लिखना चाहूँगा
फिर भी, मुझे लगता है कि सिर्फ़ इस reverse traceroute के नतीजों से भी internet की संरचना समझाने के लिए काफ़ी जानकारी मिल जाती है
इसमें हर AS पैकेट को जितनी जल्दी हो सके आगे सौंप देता है
यह थोड़ा unfair लग सकता है, लेकिन destination AS के अंदर के बारीक path की जानकारी न होने पर यह एक तर्कसंगत विकल्प है
उदाहरण के लिए, अगर बर्लिन और हैम्बर्ग में तुम्हारा network है, और सामने वाले के भी दोनों शहरों में peering हैं, तो नज़दीकी जगह पर ट्रैफ़िक सौंपना बेकार के round trip से बचने का तरीका है
traceroute के नीचे से ऊपर की ओर एक-एक लाइन लोड होने की वजह समझाने वाला हिस्सा दिलचस्प लगा
JavaScript के बिना CSS block को समय-समय पर insert करके पिछली state को छिपाया गया है—काफ़ी hacky और creative तरीका है
उदाहरण और व्याख्या इस ब्लॉग पोस्ट में अच्छी तरह दी गई है
“This is not my beautiful website.” पंक्ति काफ़ी चतुर लगी
अगर अब तक नहीं आज़माया है, तो
और
चलाने की सिफारिश करूँगा
tracepath का नतीजा “bad.horse” से शुरू होकर “he.rides.across.the.nation” वगैरह तक जाता है, इसलिए यह वाकई मज़ेदार है
कहा गया कि यह प्रोजेक्ट फिर से Hacker News मुख्य पृष्ठ पर आ गया, इसलिए server थोड़ी देर के लिए लड़खड़ा गया
Lexi ने सूचना दी कि “कल फिर से देखकर आना”
शीर्षक देखकर लगा था कि Talking Heads का गाना आने वाला है
“Once in a Lifetime” लिंक जैसे दिमाग़ में छप गया
सिर्फ़ शीर्षक देखते ही वह bass line अपने-आप बजने लगती है
मैंने खुद चलाकर देखा, और पता चला कि मेरा मुख्य internet connection टूट गया था और backup line पर स्विच हो गया था
आज बिजली गई थी, और इस टूल की वजह से मुझे वह बात पता चली। काफ़ी उपयोगी लगा
कभी-कभी “You are here” के ऊपर की जानकारी इस तरह दिखती है
लेकिन दूसरी बार
इस तरह दिखती है। IP वही है, तो समझ नहीं आता कि ASN 50:50 अनुपात में क्यों बदल रहा है। यह जैसे random तरीके से बदलता दिख रहा है
पेज शुरू में JavaScript के बिना ठीक चल रहा था, लेकिन बाद में बदले गए HTML को text के रूप में encode कर दिया गया
इस तरह दिखने लगा और टूट गया
इसके लिए सुधार वाला PR GitHub पर डाला गया