इम्पेयरमेंट
बाधा स्क्रीन एक रिले चलाती है जो किसी क्लाइंट और उस लक्ष्य के बीच बैठता है जिससे वह बात करता है, और उसमें से दोनों दिशाओं में गुज़रने वाली चीज़ों को ख़राब करता है: ख़राब Wi-Fi, मोबाइल लिंक, उपग्रह की छलांग, गिरती-जुड़ती लिंक। इसका उपयोग यह देखने के लिए करें कि आपका क्लाइंट और आपका डिवाइस ऐसे नेटवर्क पर कैसा व्यवहार करते हैं जो आपके पास नहीं है।
आप क्लाइंट को असली लक्ष्य के बजाय रिले की ओर मोड़ते हैं; रिले सब कुछ लक्ष्य तक और जवाब क्लाइंट तक पहुँचा देता है, हर डेटाग्राम या स्ट्रीम पर वह करने के बाद जो उसकी प्रोफ़ाइल कहती है। आप प्रोफ़ाइल को चलते समय भी बदल सकते हैं, बिना पोर्ट गिराए।
रिले शुरू करना
- प्रोटोकॉल चुनें: डेटाग्राम के लिए UDP (OSC, अधिकांश शो-कंट्रोल और सेंसर ट्रैफ़िक), स्ट्रीम के लिए TCP (HTTP, MQTT, एक TCP डिवाइस)।
- सुनने का पता सेट करें: वह
IP:portजिस पर रिले सुनता है।0.0.0.0:9010नेटवर्क से ट्रैफ़िक लेता है;127.0.0.1:9010केवल इसी कंप्यूटर से। - लक्ष्य सेट करें: असली गंतव्य का
IP:port, या कोई होस्ट नाम और पोर्ट जैसेdevice.local:9000। - कोई प्रीसेट चुनें या प्रोफ़ाइल के मान सेट करें।
- रिले शुरू करें दबाएँ।
- अपने क्लाइंट को लक्ष्य के बजाय रिले के पोर्ट की ओर मोड़ें — उदाहरण के लिए
127.0.0.1:9000के बजाय127.0.0.1:9010।
रिले रोकें रिले बंद कर देता है; इसके बाद उसकी अब तक रोकी हुई कोई चीज़ बाहर नहीं जाती।
डिफ़ॉल्ट: UDP, सुनना 0.0.0.0:9010, लक्ष्य 127.0.0.1:9000, 40 ms विलंब, 15 ms जिटर और 2 % गिरावट।
सुनने का पता बाँधने का पता है, हमेशा IP:port। लक्ष्य का होस्ट नाम एक बार खोजा जाता है, जब आप रिले शुरू करें दबाते हैं, जैसे किसी OSC लक्ष्य का; जो नाम न मिले वह अस्वीकार कर दिया जाता है और कोई रिले शुरू नहीं होता। प्रोटोकॉल, सुनने का पता और लक्ष्य रिले के चलते हुए स्थिर रहते हैं; उन्हें बदलने के लिए उसे रोकें।
client ──► relay (0.0.0.0:9010) ──► target (127.0.0.1:9000)
client ◄── relay ◄───────────────── targetUDP
रिले हर डेटाग्राम को अपने एक पोर्ट से लक्ष्य तक भेजता है, और लक्ष्य जो जवाब देता है उसे क्लाइंट तक भेजता है। हर डेटाग्राम का अपना हश्र होता है, जो उसके आते समय तय होता है।
जवाब उसी क्लाइंट को जाते हैं जिसने सबसे हाल का डेटाग्राम भेजा: रिले एक बार में एक क्लाइंट की सेवा करता है।
TCP
क्लाइंट का रिले से बनाया हर कनेक्शन रिले के अपने एक नए कनेक्शन से लक्ष्य तक जोड़ा जाता है। हर कनेक्शन की दोनों स्ट्रीमें — क्लाइंट से लक्ष्य और लक्ष्य से क्लाइंट — चंक-दर-चंक ख़राब की जाती हैं, जैसे-जैसे रिले उन्हें पढ़ता है (एक बार में 16 KiB तक)। जिटर चाहे जो हो, एक स्ट्रीम हमेशा क्रम में पहुँचती है।
जब लक्ष्य कनेक्शन अस्वीकार करता है, तो क्लाइंट का कनेक्शन रीसेट कर दिया जाता है।
प्रोफ़ाइल
वे मान जो एक रिले लागू करता है, दोनों दिशाओं में। एक UDP रिले डेटाग्राम के मान पढ़ता है, एक TCP रिले स्ट्रीम के; बाकी छिपे रहते हैं।
UDP पर
| मान | क्या करता है | सीमा |
|---|---|---|
| ऑफ़लाइन — कुछ नहीं जाता | हर डेटाग्राम दोनों तरफ़ गिरा दिया जाता है, जब तक आप टिक नहीं हटाते। | चालू / बंद |
| लेटेंसी | हर डेटाग्राम में जोड़ा जाता है। | 0–1000 ms |
| जिटर | हर डेटाग्राम के लिए 0 से इस तक एक रैंडम अतिरिक्त विलंब — इसलिए डेटाग्राम क्रम से बाहर पहुँच सकते हैं। | 0–500 ms |
| पैकेट लॉस | उन डेटाग्राम का हिस्सा जो कभी नहीं पहुँचते, हर एक अपने आप। | 0–100 % |
| बर्स्ट लॉस | संभावना कि कोई डेटाग्राम गिरावटों की एक झड़ी शुरू करे: पल भर के लिए गिरती लिंक, बिखरी गिरावट के विपरीत। | 0–20 % |
| बर्स्ट की लंबाई, डेटाग्राम | एक झड़ी औसतन कितने डेटाग्राम गिराती है। तब दिखता है जब बर्स्ट लॉस 0 से ऊपर हो; पहली बार बढ़ाने पर 5। | 1–1000 |
| डुप्लिकेशन | दो बार पहुँचाए गए डेटाग्राम का हिस्सा। | 0–100 % |
| दूषण | उन डेटाग्राम का हिस्सा जिनके एक बाइट का एक बिट पलटा गया। | 0–100 % |
| क्रम बदलना | उन डेटाग्राम का हिस्सा जो रोके गए — विलंब से, और कम से कम 20 ms — ताकि उनके बाद वाले पहले पहुँचें। | 0–100 % |
| बैंडविड्थ, kbit/s | बैंडविड्थ सीमा, किलोबिट प्रति सेकंड में; 0 का अर्थ कोई नहीं। डेटाग्राम इस दर पर लिंक के लिए कतार में लगते हैं; जिसे एक सेकंड से ज़्यादा प्रतीक्षा करनी पड़े वह थ्रॉटल होकर गिरा दिया जाता है। | 0, या 8–10 000 000 |
एक झड़ी ऐसे काम करती है: जो डेटाग्राम किसी झड़ी में नहीं है वह बर्स्ट लॉस संभावना से एक शुरू करता है; झड़ी का हर डेटाग्राम गिर जाता है, और हर एक उसे बर्स्ट की लंबाई, डेटाग्राम में 1 की संभावना से समाप्त करता है, इसलिए एक झड़ी औसतन उतने ही डेटाग्राम चलती है।
डेटाग्राम इस क्रम में तय होता है: ऑफ़लाइन, झड़ी, गिरावट, बैंडविड्थ, फिर हर कॉपी के लिए दोहराव, ख़राबी, विलंब और क्रम-बदल।
TCP पर
| मान | क्या करता है | सीमा |
|---|---|---|
| ऑफ़लाइन — कुछ नहीं जाता | दोनों तरफ़ कुछ नहीं बहता, और नए कनेक्शन लक्ष्य की प्रतीक्षा करते हैं, जब तक आप टिक नहीं हटाते — फिर सब कुछ आगे बढ़ जाता है। | चालू / बंद |
| लेटेंसी | एक स्ट्रीम के हर चंक में, दोनों दिशाओं में, जोड़ा जाता है। | 0–1000 ms |
| जिटर | हर चंक के लिए 0 से इस तक एक रैंडम अतिरिक्त विलंब — उससे पहले के चंक से कभी आगे नहीं। | 0–500 ms |
| कनेक्शन रीसेट | उन चंक का हिस्सा जो गुज़रने के बजाय अपना कनेक्शन रीसेट कर देते हैं: क्लाइंट और लक्ष्य दोनों को रीसेट मिलता है। | 0–100 % |
| अर्ध-खुला | उन चंक का हिस्सा जो अपना कनेक्शन आधा-खुला छोड़ देते हैं: दोनों तरफ़ और कुछ नहीं गुज़रता, और किसी को बताया नहीं जाता। रिले दोनों सिरे खुले, अछूते, तब तक रखता है जब तक वह न रुके। | 0–100 % |
| बैंडविड्थ, kbit/s | हर कनेक्शन की हर स्ट्रीम के लिए एक बैंडविड्थ सीमा, किलोबिट प्रति सेकंड में; 0 का अर्थ कोई नहीं। एक सेकंड से ज़्यादा की कतार होने पर रिले पढ़ना बंद कर देता है, इसलिए भेजने वाला धीमा हो जाता है, जैसे किसी धीमी लिंक पर। कुछ भी नहीं गिराया जाता। | 0, या 8–10 000 000 |
गिरावट, झड़ियाँ, दोहराव, ख़राबी और क्रम-बदल TCP पर लागू नहीं होते: असली TCP स्ट्रीम जो खोती है उसे दोबारा भेजती है और ख़ुद को क्रम में ले आती है, इसलिए ख़राब लिंक पर क्लाइंट को जो मिलता है वह विलंब, एक धीमा भेजने वाला, रीसेट और ऐसे कनेक्शन हैं जो जवाब देना बंद कर देते हैं।
TIP
स्लाइडर 1000 ms विलंब और 500 ms जिटर पर रुक जाते हैं। रिले ख़ुद हर एक का 60 000 ms तक लेता है, उदाहरण के लिए किसी प्रयोग फ़ाइल से।
प्रीसेट
एक प्रीसेट एक क्लिक में हर मान सेट कर देता है। जब तक मान प्रीसेट के ही रहते हैं उसकी चिप जलती रहती है; कोई भी मान बदलते ही वह बुझ जाती है।
| प्रीसेट | UDP पर | TCP पर |
|---|---|---|
| LAN | 1 ms ±1 | 1 ms ±1 |
| व्यस्त Wi-Fi | 20 ms ±30, 1 % गिरावट, झड़ियाँ 1 % × 3, 0.5 % दोहराया गया, 2 % क्रम-बदल | 20 ms ±30 |
| 4G | 60 ms ±25, 0.5 % गिरावट, 0.5 % क्रम-बदल, 20 000 kbit/s | 60 ms ±25, 20 000 kbit/s |
| सैटेलाइट | 300 ms ±30, 1 % गिरावट, 2000 kbit/s | 300 ms ±30, 2000 kbit/s |
| रुक-रुक कर | 30 ms ±20, झड़ियाँ 3 % × 15 | 30 ms ±20, 0.2 % चंक आधे-खुले छोड़े गए |
| ऑफ़लाइन | कुछ नहीं गुज़रता | कुछ नहीं बहता |
चलते समय इसे बदलना
रिले के चलते हुए कोई भी मान बदलें, या कोई दूसरा प्रीसेट चुनें: यह आपके आख़िरी बदलाव के एक चौथाई सेकंड बाद लागू हो जाता है, बिना पोर्ट या कनेक्शन गिराए। कंसोल हर नई प्रोफ़ाइल दर्ज करता है, और लाइव के नीचे की पंक्ति बताती है कि रिले अब क्या करता है — प्रीसेट का नाम, या संक्षेप में मान, जैसे 60 ms ±25 · loss 2% · 20000 kbps।
कोई डेटाग्राम या चंक उस समय लागू प्रोफ़ाइल से तय होता है जब वह आता है; जो पहले से रास्ते में है वह अपना विलंब रखता है।
काउंटर
लाइव बताता है कि रिले ने शुरू होने के बाद से क्या किया, दोनों दिशाएँ मिलाकर, सेकंड में चार बार अद्यतन होकर।
UDP पर:
| काउंटर | क्या |
|---|---|
| प्राप्त | रिले तक पहुँचे डेटाग्राम। |
| आगे भेजे गए | आगे भेजे गए डेटाग्राम; दोहराया गया एक दो बार गिना जाता है। |
| ड्रॉप हुए | जानबूझकर खोए: ऑफ़लाइन, कोई झड़ी, या गिरावट। |
| थ्रॉटल | बैंडविड्थ सीमा से, या इसलिए गिराए गए कि 10 000 पहले से रास्ते में थे। |
| डुप्लिकेट हुए | दो बार भेजे गए डेटाग्राम। |
| दूषित | पलटे बिट वाली कॉपियाँ। |
| क्रम बदले गए | रोकी गई कॉपियाँ ताकि बाद वाली उनसे आगे निकल जाएँ। |
| मात्रा | आगे भेजे गए बाइट। |
TCP पर:
| काउंटर | क्या |
|---|---|
| कनेक्शन | क्लाइंटों ने रिले से बनाए कनेक्शन। |
| प्राप्त | रिले ने पढ़े चंक, दोनों तरफ़। |
| आगे भेजे गए | उसने आगे लिखे चंक। |
| रीसेट | रीसेट किए गए कनेक्शन। |
| अर्ध-खुले | आधे-खुले छोड़े गए कनेक्शन। |
| रोके गए | कितनी बार किसी स्ट्रीम को बैंडविड्थ सीमा का इंतज़ार करना पड़ा: भेजने वाला धीमा हुआ, कुछ नहीं गिराया गया। |
| मात्रा | आगे लिखे गए बाइट। |
कैप्चर चालू होने पर इंस्पेक्टर रिले किए गए डेटाग्राम और चंक दिखाता है — दोनों दिशाएँ मिलाकर हर 25 ms में अधिकतम एक — हर एक का हश्र के साथ: forwarded +43ms, · corrupted, · reordered, · copy 2/2, dropped (loss), dropped (burst), dropped (offline), throttled, और TCP पर reset तथा half-open। → क्लाइंट से लक्ष्य है, ← लक्ष्य से क्लाइंट।
रिले किया फ़्रेम असली सॉकेट बताता है: लोकल वह पता है जिस पर रिले सुनता है और पीयर वह है जहाँ वह डेटाग्राम या चंक जा रहा था — लक्ष्य, या वह क्लाइंट जिसे जवाब वापस गया। दिशा फ़ैसले को ख़त्म करती है: forwarded +43ms · client→target, dropped (loss) · target→client। इसलिए एक रिले किया डेटाग्राम सिग्नल के रूप में सहेजें से रखा जा सकता है और उस पते पर निशाना लेता है जहाँ वह जा रहा था; एक TCP चंक किसी स्ट्रीम का टुकड़ा है और नहीं रखा जा सकता (देखें इंस्पेक्टर)।
वही ट्रैफ़िक, वही हश्र
हर फ़ैसला — कौन-सा डेटाग्राम खोता है, कितना विलंब पाता है, कहाँ ख़राब होता है — रिले के सीड से निकाला जाता है, हर दिशा के लिए अलग-अलग और, TCP पर, हर कनेक्शन के लिए। वही सीड और वही ट्रैफ़िक होने पर रिले वही डेटाग्राम गिराता है और उन्हें वैसे ही विलंबित करता है।
बाधा स्क्रीन हर बार रिले शुरू करने पर एक नया सीड लेती है। किसी रन को ठीक-ठीक दोहराने के लिए किसी प्रयोग में नेटवर्क बाधा नोड का उपयोग करें: वह रन के सीड से निकालता है, जिसे आप पिन कर सकते हैं (देखें किसी ख़राब रन को दोहराना)।
प्रयोगों में
दो नोड उसी रिले को किसी प्रयोग में रखते हैं:
- नेटवर्क बाधा पहले चरण से पहले एक रिले खोलता है और रन समाप्त होने पर, चाहे जैसे भी समाप्त हो, उसे बंद कर देता है। उसके सुनने और लक्ष्य के पते केवल पैरामीटर लेते हैं; लक्ष्य एक होस्ट नाम हो सकता है, जो रन के शुरू होने पर खोजा जाता है। देखें नोड।
- बाधा बदलें रन के एक रिले को उस चरण से किसी दूसरी प्रोफ़ाइल पर ले जाता है — साफ़, गिरावट वाली, ऑफ़लाइन, फिर साफ़ — और रन की रिपोर्ट गिनती है कि हर चरण ने क्या किया। देखें नोड।
किसी OSC या UDP नोड पर, बाधा से होकर भेजें उसके आगे एक नेटवर्क बाधा रखता है और नोड को रिले की ओर मोड़ देता है। देखें फ़ॉल्ट।
संबंधित
- एमुलेटर — वह लक्ष्य जिसे रिले के पीछे रखें।
- इंस्पेक्टर — हर डेटाग्राम का हश्र।
- UDP और TCP