मैं परीक्षण उद्देश्यों के लिए खराब इंटरनेट कनेक्शन का अनुकरण कैसे कर सकता हूं?


105

मैं एक ऑनलाइन मल्टीप्लेयर गेम विकसित कर रहा हूं। जब मैं स्थानीय क्षेत्र नेटवर्क पर इसका परीक्षण करता हूं तो यह अच्छी तरह से काम करता है, लेकिन इसे जारी करने से पहले मैं यह परीक्षण करना चाहूंगा कि उपयोगकर्ता-अनुभव किसी ऐसे व्यक्ति के लिए कैसे काम करता है, जिसका सर्वर से इतना अच्छा संबंध नहीं है। स्थानीय वातावरण में उच्च विलंबता, कम बैंडविड्थ, घबराहट और कभी-कभी पैकेट हानि के साथ मैं खराब इंटरनेट कनेक्शन का अनुकरण कैसे कर सकता हूं?


69
इसे मेरे पास परीक्षण के लिए भेजें! मेरे देश में कनेक्शन डिफ़ॉल्ट रूप से भयानक हैं।
Stephan

7
एक सराहनीय लक्ष्य। मेरी इच्छा है कि प्रकाशित स्टूडियो भी ऐसा ही करेंगे। महाकाव्य खेल, मैं तुम्हें देख रहा हूँ।
Gusdor

7
पास में एक दोस्त खोजें जो Comcast का उपयोग करता है ...
WernerCD

12
खराब इंटरनेट कनेक्शन के अनुकरण में वर्तमान उत्तर और अधिक होते हैं।
MichaelHouse

2
मैंने तुरंत इस अन्य हालिया एसई प्रश्न के बारे में सोचा: superuser.com/questions/637594/…
पैट्रिक एम

जवाबों:


63

मुझे लगता है कि डुमनीनेट वह है जिसे आप ढूंढ रहे हैं। ड्यूमनीनेट एक नेटवर्क एमुलेशन टूल है जो बैंडविड्थ सीमाओं, देरी, पैकेट नुकसान और कई और चीजों का अनुकरण कर सकता है। आप आसानी से चुन सकते हैं कि आप कौन सा ट्रैफ़िक रोकना चाहते हैं और सीमाओं को कॉन्फ़िगर करना चाहते हैं, उदाहरण के लिए सभी आने वाली टीसीपी ट्रैफ़िक को 2Mbit / s तक सीमित करें

ipfw add pipe 2 in proto tcp
ipfw pipe 2 config bw 2Mbit/s

आप देखते हैं कि ट्रैफ़िक चयन ज्ञात ipfw फ़ायरवॉल द्वारा किया जाता है और पाइप सीमा सुविधाएँ प्रदान करते हैं।

यह FreeBSD, Linux और Windows के लिए उपलब्ध है।


क्या यह विंडोज लूपबैक एडॉप्टर के साथ काम करता है?
एंड्री टाइक्लेको

मेरे स्वयं के प्रश्न का उत्तर देने के लिए, नहीं, यह मेरे लिए विंडोज 8.1 पर काम नहीं करता है, इसके बाद भी जब मैंने हस्ताक्षरित ड्राइवर सुदृढीकरण को निष्क्रिय कर दिया
Andriy Tylychko

@AndyT क्या आपको कुछ ऐसा मिला जो लूपबैक के साथ काम करता है? कुछ ऐसा है जो पास्कल करता है और लूपबैक के साथ काम करना मुश्किल लगता है।
एरोनल्स

@AaronLS: कृपया यहां एक और उत्तर देखें: gamedev.stackexchange.com/a/100779/4731
एंड्री टाइलेचको

33

नेटवर्क लिंक कंडीशनर

यदि आप मैक पर हैं, तो आप नेटवर्क लिंक कंडीशनर का उपयोग कर सकते हैं।

नेटवर्क लिंक कंडीशनर वरीयता फलक

आप खराब इंटरनेट कनेक्शन के विभिन्न मामलों का अनुकरण कर सकते हैं, जिसमें एज और 3 जी शामिल हैं।

इसके अलावा, आप अपनी सेटिंग्स के साथ अपनी खुद की प्रोफाइल बना सकते हैं:

नेटवर्क लिंक कंडीशनर कस्टम प्रोफाइल

यह Xcode में एक मुफ्त डाउनलोड है (Xcode → ओपन डेवलपर टूल → मोर डेवलपर टूल ... पर जाएं और Ccode के लिए हार्डवेयर IO टूल डाउनलोड करें )।


मुझे यह उपकरण पसंद हैं, लेकिन मुझे कुछ ऐसा चाहिए जो मैं स्वचालित परीक्षण के लिए उपयोग कर सकूं। क्या कोई जानता है कि क्या इसके लिए कमांड लाइन इंटरफ़ेस है?
एरिक बी

15

यदि आप लिनक्स पर हैं, तो आप उच्च विलंबता, कम बैंडविड्थ, पैकेट नुकसान और कई अन्य जैसे नेटवर्क के साथ सभी संभावित समस्याओं का अनुकरण करने के लिए netem का उपयोग कर सकते हैं।

वहाँ NetLimiter नामक खिड़कियों के लिए एक विकल्प है, लेकिन मैंने इसका इस्तेमाल नहीं किया है इसलिए इसके लिए वाउच नहीं कर सकता।

बस स्लोली एप नाम का एक मैक ऐप मिला ।


1
-1 अन्य उत्तरों के साथ। यह सिर्फ लिंक है। कृपया आवेदन के विवरण को शामिल करने के लिए उत्तर को अपडेट करें और वे इसे कैसे करते हैं।
MichaelHouse

8
@ बाइट 56: ये ऐप क्या धीमा और / या अविश्वसनीय नेटवर्क कनेक्शन का अनुकरण करता है, जैसे सवाल पूछता है। मुझे पूरा यकीन है कि वे ऐसा कैसे करते हैं जो इस साइट के दायरे से बाहर है। मैं कहूंगा कि यह पूछे गए सवाल का एक अच्छा जवाब है; यदि कोई समस्या है, तो यह सवालों के जवाब में नहीं है।
इल्मरी करोनन

1
तकनीकी रूप से, सवाल "मैं खराब इंटरनेट कनेक्शन का अनुकरण कैसे कर सकता हूं" पूछता है। यह करने के लिए आवेदन नहीं मांगता है। लेकिन हां, मुझे लगता है कि यह सवाल इस साइट के दायरे से बाहर है।
MichaelHouse

9

विंडोज विस्टा और 7 के लिए अनाड़ी

अनाड़ी


विंडोज के लिए ठीक काम करता है 8.1 लूपबैक पर
एंड्री टाइक्लेको

व्यवस्थापक के रूप में चलाना न भूलें। या यह चुपचाप कुछ भी नहीं करता है। अन्यथा महान उपकरण।
नियोलिस्क

7

स्थानीय वातावरण में उच्च विलंबता, कम बैंडविड्थ, घबराहट और कभी-कभी पैकेट हानि के साथ मैं खराब इंटरनेट कनेक्शन का अनुकरण कैसे कर सकता हूं?

यदि आप Windows पर हैं, तो आप SoftPerfect Connection Emulator की कोशिश कर सकते हैं । यह मूल रूप से एक ड्राइवर है जो चयनित एनआईसी के लिए आपके एप्लिकेशन और नेटवर्क लेयर (Wireshark / WinPCAP के समान) के बीच खुद को इंजेक्ट करता है और सीमित बैंडविड्थ, विलंबता, पैकेट हानि, और अन्य चीजों का अनुकरण कर सकता है। UI सरल और सीधा है।

यह एक वाणिज्यिक उत्पाद है, लेकिन परीक्षण आपको "हस्तक्षेप" के 30-सेकंड के फटने की अनुमति देता है जो आपके लिए यह निर्धारित करने के लिए पर्याप्त होना चाहिए कि क्या यह उपकरण वह करता है जो आप चाहते हैं।

एक अन्य क्रॉस-प्लेटफ़ॉर्म विकल्प डमीनेट है , जो समान तरीके से (आईपीएफडब्ल्यू के माध्यम से) व्यवहार करता है लेकिन थोड़ा आसान उपयोग है।

मैं यह परीक्षण करना चाहूंगा कि उपयोगकर्ता-अनुभव किसी ऐसे व्यक्ति के लिए कैसे काम करता है जिसका सर्वर से इतना अच्छा संबंध नहीं है।

मुझे लगता है कि प्रश्न के इस भाग को "मेरे आवेदन में नेटवर्क विलंबता से कैसे निपटें?" आमतौर पर इस्तेमाल होने वाली और प्रभावी तकनीक है डेड रेकनिंग । लिंक किए गए लेख इसे मेरी तुलना में बेहतर बताते हैं, लेकिन मूल विचार यह है कि आपके ग्राहक इस तरह का "अनुकरण" करते हैं कि प्रत्येक इकाई कहां होनी चाहिए और यह एक एल्गोरिथम द्वारा क्या होना चाहिए। जब भी कोई इकाई इस एल्गोरिथ्म (अर्थात खिलाड़ी इनपुट, सर्वर-साइड ईवेंट आदि) से विचलित होती है, तो यह प्रत्येक क्लाइंट को एक अपडेट भेजता है।


5

मैंने थोड़ी देर में इसका इस्तेमाल नहीं किया है, लेकिन मैंने चार्ल्स को इसका परीक्षण करने के लिए इस्तेमाल किया है । यह विभिन्न नेटवर्क डायग्नोस्टिक्स टूल के साथ एक एप्लिकेशन है, जिसमें आपके द्वारा बताई गई समस्याओं का अनुकरण करना शामिल है: "उच्च विलंबता, कम बैंडविड्थ, घबराना और कभी-कभी पैकेट हानि के साथ खराब इंटरनेट कनेक्शन"


1
पहली नज़र से ऐसा लगता है कि चार्ल्स एक तरह का HTTP प्रॉक्सी है, इसलिए यह सादे टीसीपी या यूडीपी ट्रैफ़िक को आकार नहीं दे सकता है। क्या मैं कुछ भूल रहा हूँ?
vbo

और यह भी +5, wft मिला?
मैरिएन पाडज़िओच

एर मुझे यकीन नहीं है कि "सादा टीसीपी या यूडीपी ट्रैफ़िक" का क्या अर्थ है, लेकिन मैंने इस उपकरण का उपयोग ठीक उसी तरीके से किया है जो ओपी ने खराब इंटरनेट कनेक्शन का अनुकरण करते हुए पूछा है।
झूमना

1
@ हॉकिंग उनका मतलब है कि यह केवल HTTP ट्रैफ़िक के लिए काम करता है। कई रीयलटाइम गेम टीसीपी या यूडीपी का उपयोग करते हैं।
एरोनल्स

0

यदि आप फ़िडलर के साथ समझदार हैं , और आप केवल HTTP / 1 में रुचि रखते हैं तो आप इसे स्क्रिप्ट कर सकते हैं।

Fiddler HTTP / 2 का समर्थन नहीं करता है, इसके साथ इंटरसेप्ट करने से HTTP / 1 पर सभी HTTP ट्रैफ़िक डाउनग्रेड हो जाएंगे।


दिलचस्प। क्या आप अधिक विवरण प्रदान कर सकते हैं? शायद कुछ उदाहरण स्क्रिप्ट?
फिलीपींस

@Philipp यह उत्तर ( stackoverflow.com/a/47401557/442351 ) एक उदाहरण देता है।
बांकीसैन

यह केवल http का समर्थन करता है? वेबसैट भी नहीं? तब मुझे नहीं लगता कि खेल के विकास में इसका बहुत उपयोग है। यदि आप विलंबता के बारे में चिंता करते हैं तो आप पहले स्थान पर http का उपयोग नहीं करेंगे। लेकिन वैसे भी इसका उल्लेख करने के लिए धन्यवाद।
फिलीपिंस

@Philipp यह WebSockets का समर्थन करता है, बस HTTP / 2 को गर्म करता है। हालाँकि, आपको HTTP / 2 को देखना चाहिए, यह HTTP / 1 की तरह कुछ भी नहीं है, कोई अधिक हेड-ऑफ-लाइन ब्लॉकिंग, कोई और अधिक हैंडशेक नहीं, अधिक डुप्लिकेट हेडर और / या कुकीज़ नहीं है।
बैंकिंसन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.