लिनक्स नेटवर्क इंटरफेस पर बैंडविड्थ को कैसे नियंत्रित करें?


56

क्या लिनक्स में एनआईसी पर बैंडविड्थ को बाधित करने का एक तरीका है? मैं मनमाने ढंग से धीमे कनेक्शन का अनुकरण करने में सक्षम होना चाहता हूं।


जवाबों:


32

Netem कर्नेल मॉड्यूल, iproute द्वारा नियंत्रित।

आपको नेटेम को कर्नेल के साथ संकलित करने की आवश्यकता है:

Networking -->
   Networking Options -->
     QoS and/or fair queuing -->
        Network emulator

एक बार नेटम मॉड्यूल लोड होने के बाद, iproute का tc आपको चीजों की अनुमति देता है:

tc qdisc add dev  tap0 root netem delay 50ms loss 50% 

(50% पैकेट का नुकसान, 50 एमएस की अतिरिक्त देरी)


हां, यह इन चीजों के लिए एक बहुत अच्छा मॉड्यूल है। मुझे विश्वास नहीं हो रहा है कि अब तक किसी ने भी इसका जवाब नहीं दिया है ...

मैं इसे स्थानीय रूप से (लोकलहोस्ट पर) सर्वरों के परीक्षण के लिए उपयोग करता हूं क्योंकि यह वर्षों से सभी डिस्ट्रो पर मानक है। 20ms देरी "टीसी qdisc जोड़ने देव लो जड़ हैंडल 1: 0 netem देरी 20msec" जोड़ने के लिए, और यह "टीसी qdisc डेल देव लो रूट" दूर करने के लिए
pixelbeat

1
त्वरित टिप्पणी: कर्नेल मॉड्यूल है sch_netem। आम तौर पर इसे मैन्युअल रूप से लोड करने की आवश्यकता नहीं होती है, इसे आवश्यकतानुसार लोड किया जाएगा।
साल्स्के


Netem की मेरी संस्करण (उबंटू 13.10) भी बैंडविड्थ का उपयोग को सीमित करने का विकल्प है rateविकल्प: tc qdisc add dev lo root handle 1:0 netem delay 10ms rate 1mbit limit 1000। ध्यान दें कि कुछ उपकरणों के लिए जैसे कि lo(लोकलहोस्ट एक्सेस करने के लिए), आपको कतार की लंबाई भी निर्धारित करनी होगी ifconfig lo txqueuelen 1000:। देखें serverfault.com/a/394949/76090
z0r

27

ग्राहक पक्ष, सही?

ट्रिकल को वह करना चाहिए जो आप चाहते हैं। यदि आप उबंटू (या डेबियन, मुझे लगता है) चला रहे हैं, तो आप इसे स्थापित कर सकते हैं sudo apt-get install trickle, और फिर इसे चला सकते हैं। trickle -s -d 10 -u 10 firefox(या तो, मैं इसे थोड़ी देर में इस्तेमाल नहीं किया है) फ़ायरफ़ॉक्स चलाएगा, इसके डाउनलोड और 10 किलोबाइट को सेकंड में अपलोड करने की गति को सीमित करेगा।


इस टिप के लिए धन्यवाद। किसी कारण से मेरे लिए फ़ायरफ़ॉक्स के साथ काम नहीं किया जाएगा, लेकिन इसने गूगल-क्रोम के साथ ठीक काम किया। (उबंटू 9.10 64 बिट)
टॉम

6
टीसीपी ट्रांसफर के लिए मानक लाइब्रेरी फ़ंक्शंस में लिंक करने के लिए कॉल को इंटरसेप्ट करके ट्रिकल काम करता है - यदि किसी ऐप में ये फ़ंक्शन स्टैटिकली समय पर संकलित हैं तो यह काम नहीं कर सकता है।
डेविड स्पिललेट

16

मुझे अपने बॉक्स को ubuntu में 'wondershaper' नामक उपकरण का उपयोग करके नेटवर्क पर उपलब्ध सभी बैंडविड्थ खाने से बचने का एक तरीका मिला। मुझे उम्मीद है कि यह अन्य लिनक्स डिस्ट्रोस में भी मौजूद है। मैं बैंडविड्थ को सीमित कर सकता हूं जो मेरा लिनक्स होम पीसी निम्नलिखित कमांड का उपयोग करके उपभोग कर सकता है।

sudo wondershaper eth0 1000 200

यह डाउनलोड सीमा को 1000 किलोबाइट और 200 किलोबाइट तक बढ़ा देता है। अधिक जानकारी / विकल्पों के लिए wondershaper के मैन पेज देखें।


1
यह काफी नहीं है कि ओपी की तलाश क्या है (यह बैंडविथ के संरक्षण के बारे में है, न कि उद्देश्यपूर्ण रूप से कनेक्शन को नीचा दिखाने के बारे में), लेकिन फिर भी यह जानना अच्छा है।
sleske

1
BTW: यह wondershaperडेबियन में पैकेज है।
sleske

इस रॉकड बी / सी में हमें बैंडविड्थ संतृप्ति के साथ कार्यालय में समस्या हो रही थी, एक समर्थन चल रहा था जिसे मैं बाधित नहीं कर सकता था, और मैं इसे दो सरल लाइनों में ठीक करने में सक्षम था: # apt-get install wondershaper तो # wondershaper eth0 9999999 500 फिर से धन्यवाद!
नारंगी May०

4
wondershaper कुछ गणित की समस्या है, हालांकि प्रतीत होता है। 1Mb / s अप / डाउन पथ प्राप्त करने के लिए, हमने 1024 के बजाय 28096 का उपयोग करके समाप्त कर दिया। हालांकि यह क्यों हुआ, इसका कोई पता नहीं है।
नाविक

रीसेट करने के लिए, उपयोग करें:sudo wondershaper clear eth0
Léo Lam

8

NIST एक नेटवर्क सिम्युलेटर बनाता है जिसे NistNet कहा जाता है।

http://snad.ncsl.nist.gov/nistnet/ (लिंक मृत प्रतीत होता है)

http://cs.ecs.baylor.edu/~donahoo/tools/nistnet/

NistNet आपको एक राउटर बनाने की सुविधा देता है जो आपके चयन के एक कॉम्स लिंक का अनुकरण करता है।

सरलतम ऑपरेशन के लिए आपके पास एक बॉक्स पर दो एनआईसी के बीच दो नेटवर्क हैं।

उदाहरण के लिए, मेरे पास एक एप्लिकेशन था जिसे सैटेलाइट लिंक पर काम करना था।

डेटा BIG विलंबता के साथ 2Mbps लिंक पर जा सकता है। नियंत्रण को उसी विलंबता के साथ 128kbps लिंक पर जाना था।

NistNet ने इसे 128kbps पर काम करने में मदद की।

NistNet का उपयोग करके मैं न केवल बैंडविड्थ, बल्कि विलंबता का भी अनुकरण कर सकता हूं, और यह आपके लिए पैकेट भी छोड़ देगा, एक व्यस्त या अविश्वसनीय लिंक का अनुकरण करेगा।

यदि आप एक घृणित कनेक्शन का अनुकरण करना चाहते हैं, तो केवल बैंडविड्थ को बाधित न करें, विलंबता को भी हवा दें।

या तो टुकड़े टुकड़े करने के लिए मत भूलना। आप phony लिंक पर अच्छा छोटा MTU सेट कर सकते हैं।

IIRC पैकेट पैकेट जोड़ने से आपको पता चल जाएगा कि क्या आप ऑर्डर पैकेट से सामना कर सकते हैं।


NistNet लंबे समय से अपडेट नहीं है, क्या यह है? IMO, अब तक का सबसे अच्छा तरीका है नेटम मॉड्यूल, जो हाल ही में सभी गुठली में मौजूद है।

आप एक वीएम का उपयोग करके 2 एनआईसी के साथ एक मशीन का अनुकरण करने में सक्षम हो सकते हैं।
स्कॉट

लिंक काम नहीं करता
hasen

लिंक मेरे लिए काम करता है।
त्रिकाल

4

मैंने व्यक्तिगत रूप से इसके लिए अतीत में wondershaper का उपयोग किया है , हालांकि यह एक विपरीत उपयोग के मामले के लिए लिखा गया था - आपके एडीएसएल कनेक्शन का सबसे अधिक उपयोग कर रहा है।

हालांकि मुझे यहाँ उल्लिखित अन्य लोगों की कोशिश करनी होगी।


3

आप धीमी लिंक पर एक वेब पेज का परीक्षण करने के लिए बैंडविड्थ को सीमित करने के लिए स्थानीय रूप से स्थापित स्क्वीड प्रॉक्सी का उपयोग कर सकते हैं :

  1. अपने वितरण से स्क्वीड प्रॉक्सी स्थापित करें - मेरे फेडोरा पर यह उतना आसान था जितना कि yum install squid

  2. निम्नलिखित को इसमें जोड़ें /etc/squid/squid.conf:

    delay_pools 1
    delay_class 1 1
    delay_access 1 allow all
    delay_parameters 1 16000/16000

    यह बैंडविड्थ को लगभग 128 kbps (16000 Bps) तक सीमित कर देगा।

  3. स्क्वीड शुरू करें :/etc/init.d/squid start

  4. प्रॉक्सी सर्वर localhostपोर्ट का उपयोग करने के लिए अपने ब्राउज़र को कॉन्फ़िगर करें 3128



3

किसी ने अभी तक ip_relay का उल्लेख नहीं किया है , जिसका नाम डेबियन रिपॉजिटरी में "iprelay" है। यह टीसीपी प्रॉक्सी के रूप में काम करता है, बल्कि कॉल करने का तरीका ट्रिकल को इंटरसेप्ट करता है, और किसी भी एप्लिकेशन के साथ काम करेगा जो प्रॉक्सी का उपयोग कर सकता है (उदाहरण के लिए वेब ब्राउज़र) या उपयोगकर्ता द्वारा परिभाषित डेस्टिनेशन पोर्ट (टेलनेट, ssh, ftp, कर्ल) को स्वीकार कर सकता है। वगैरह )।

इसे स्थापित करना थोड़ा मुश्किल है, लेकिन अक्सर उन परिस्थितियों में काम करता है जहां मुश्किल नहीं होगी।


1
यह वही है जो मैं देख रहा हूँ! बहुत धन्यवाद। मुझे खुशी है कि मैंने नीचे स्क्रॉल किया और पढ़ता रहा।
जे आर। विरेन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.