मैं डाउनलोड / अपलोड बैंडविड्थ को कैसे सीमित कर सकता हूं?


77

मैं इसके लिए डाउनलोड / अपलोड बैंडविड्थ को कैसे सीमित कर सकता हूं:

  • संपूर्ण ओएस।
  • एक नेटवर्क इंटरफ़ेस।
  • एकल आवेदन।

मैंने wondershaperUbuntu 17.10 में समस्या के लिए एक बग दर्ज किया है , जो उबंटू 17.04 में @Zeromatiker के समान हो सकता है: Bugs.launchpad.net/ubuntu/+source/wondershaper/+bug-1745421
aguadopd

जवाबों:


42

एकल इंटरफ़ेस को सीमित करना आसान है, लेकिन वैश्विक दर सीमा को और अधिक जटिल नियमों की आवश्यकता है क्योंकि यह अनुप्रयोग आधारित नियम हैं। मैं यह नहीं कह रहा हूँ कि यह नहीं किया जा सकता है, लेकिन इसके लिए नेटवर्किंग के इंटर्नल में थोड़ी बहुत खुदाई की आवश्यकता है।

यहाँ एक त्वरित है कि प्रति इंटरफ़ेस सीमा कैसे निर्धारित की जाए

यदि आप वास्तव में एप्लिकेशन आधारित नियमों को स्थापित करना चाहते हैं, तो आपको कुछ फ़ायरवॉल फ्रेमवर्क में देखना चाहिए, जैसे कि shorewall , जिसमें आकार देने के लिए सहायक विशेषताएं हैं। इन उपकरणों के साथ भी, इसे स्थान पर लाने के लिए बहुत अधिक पूर्वाभास और परीक्षण की आवश्यकता होती है। इस तदर्थ की तरह कुछ करना अभी तक इतना आसान नहीं है।


wondershaper काम नहीं कर रहा है मैं नहीं जानता कि क्यों (यहां तक wondershaper eth0 1000 1000 कि कोई इंटरनेट बैंडविड्थ नहीं है। मुझे सभी eth0 बैंडविड्थ को केवल विशिष्ट अनुप्रयोगों तक सीमित करने की आवश्यकता है। वह कैसे कर सकता है?
अरे

67

हालाँकि यह एक पुराना प्रश्न है, लेकिन जब मैं उसी प्रश्न का उत्तर खोज रहा था, तो मुझे यह समझ में आया। ओएस और इंटरफ़ेस सीमाएं पहले से ही एक उत्तर में संबोधित की गई हैं, इसलिए यहां एप्लिकेशन विशिष्ट सीमाएं सेट करने का एक तरीका है। ट्रिकल नामक एप्लिकेशन का उपयोग करें। तो करते हैं sudo apt-get install trickle। आप चलाकर किसी विशिष्ट ऐप के लिए अपलोड / डाउनलोड को सीमित कर सकते हैं

trickle -u (upload limit in KB/s) -d (download limit in KB/s) application

यह निर्दिष्ट सीमाओं के साथ एप्लिकेशन लॉन्च करेगा। आप "स्मूथिंग" समय भी निर्दिष्ट कर सकते हैं, ताकि आपके आवेदन में बैंडविड्थ की खपत के फटने की स्थिति में वांछित समयावधि के दौरान ट्रिकल नमूने हों और आप चाहेंगे कि फटने की अनुमति दी जाए, जब तक कि औसत आपके विनिर्देशों के भीतर हो।


14
आपका बहुत बहुत धन्यवाद! यह समाधान प्रति-अनुप्रयोग आधार पर बैंडविड्थ को नियंत्रित करने के लिए एकदम सही है। कृपया उत्तर देने में कभी संकोच न करें, भले ही प्रश्न वर्षों पुराना हो। भविष्य के संदर्भ के लिए: आपको एक त्रुटि संदेश के साथ प्रस्तुत किया जा सकता है trickle: Could not reach trickled, working independently: No such file or directory। आप स्टैंडअलोन मोड में ट्रिकल को निष्पादित करके इस चेतावनी को हटा सकते हैं trickle -s
Glutanimate

मैं ट्रिकल द्वारा सीमित सीमा को कैसे हटाऊं?
अनाम माउस

2
ट्रिकल आपके लिए एप्लिकेशन चलाएगा जिसकी सीमाएं लागू की जा रही हैं। तो आपको बस इतना करना है कि ट्रिकल कमांड का उपयोग किए बिना एप्लिकेशन को पुनरारंभ करें।
शेजेनेरिक

1
इस जवाब के लिए बहुत बहुत धन्यवाद यह सटीक चीज थी जिसे मैं खोज रहा था
अली

1
एक धीमी नेटवर्क कनेक्शन का अनुकरण करने की कोशिश करते समय वास्तव में मुझे क्या चाहिए।
एथन कामिंसकी

5

यदि आप किसी विशिष्ट IP पते के लिए बैंडविड्थ को सीमित करना चाहते हैं, तो आप इसका उपयोग कर सकते हैं:

tc qdisc add dev eth1 root handle 1: htb default 12
tc class add dev eth1 parent 1: classid 1:10 htb rate 2500kbps
tc class add dev eth1 parent 1: classid 1:11 htb rate 2500kbps
tc class add dev eth1 parent 1: classid 1:12 htb rate 5000kbps

tc filter add dev eth1 protocol ip parent 1:0 prio 1 u32 match ip dst 192.168.2.105 flowid 1:10
tc filter add dev eth1 protocol ip parent 1:0 prio 1 u32 match ip dst 192.168.2.106 flowid 1:11

4
यह बहुत जटिल था। कुछ #comments एक लंबा रास्ता तय करेंगे। उदाहरण के लिए आप qdiscs, classids, htb, आदि के लिए लिंक या स्पष्टीकरण जोड़ सकते हैं
oligofren

तो, डिफ़ॉल्ट रूप से, उपरोक्त सब कुछ 5000 kbps तक सीमित करता है जब तक कि किसी अन्य कतार में फ़िल्टर नहीं किया जाता है? क्या होगा अगर हम सब कुछ सीमित नहीं करना चाहते हैं ?
केन शार्प
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.