आने वाली और बाहर जाने वाली बैंडविड्थ और लिनक्स में विलंबता को सीमित करें


15

मुझे लगता है कि इसी तरह के कई सवाल पहले ही पूछे जा चुके हैं, लेकिन अभी तक मुझे अपनी समस्या का हल ढूंढना है।

मेरे पास एक वर्चुअल लिनक्स सर्वर (डेबियन स्क्वीज चल रहा है) है जो मैं वेबसाइट की गति के परीक्षण के लिए उपयोग करता हूं ताकि उक्त वेबसाइटों के लोड समय में वृद्धि और कमी को मापा जा सके। मैं इस सर्वर की बैंडविड्थ और विलंबता को सीमित करने का प्रयास कर रहा हूं ताकि वेबसाइटों पर वास्तविक विश्व लोड समय के करीब पहुंच सकें, लेकिन अभी तक विफल रहे हैं।

मैं विशेष रूप से निम्नलिखित चाहता हूं:

  • 50 ms की आवक और जावक विलंबता सेट करने के लिए।
  • आने वाली बैंडविड्थ सीमा 512 kbps निर्धारित करने के लिए।
  • 4096 kbps की एक आउटगोइंग बैंडविड्थ सीमा निर्धारित करने के लिए।

मैं netem पर पढ़ रहा हूं और tcकमांड का उपयोग कर रहा हूं , लेकिन यह अभी भी मेरे सिर पर थोड़ा सा है। मैं इस कमांड को एक साथ रखने में कामयाब रहा हूं जो विलंबता को नियंत्रित करने के लिए काम करता है, लेकिन मुझे यकीन नहीं है कि अगर केवल आउटगोइंग विलंबता या दोनों को संभालता है:

tc qdisc add dev eth0 root netem delay 50ms

कोई भी नेटवर्क गुरु जो मुझे मदद कर सकता है?

संपादित करें:

आगे के शोध के बाद, मैंने अपने लक्ष्य के लिए आधा रास्ता तय कर लिया है, इस आदेश का उपयोग करते हुए सभी आउटगोइंग ट्रैफ़िक व्यवहार करता है जैसा कि मैं चाहता हूं:

tc qdisc add dev eth0 root tbf rate 4.0mbit latency 50ms burst 50kb mtu 10000

हालाँकि, मैं अभी भी आने वाले ट्रैफ़िक को ठीक से गला नहीं पा रहा हूँ। मुझे पता चला है कि मैं एक "इनग्रेड पोलिसर फिल्टर" का उपयोग करने वाला हूं, मैं नीचे दिए गए कमांड के साथ, विभिन्न मूल्यों के साथ खेल रहा हूं, लेकिन कोई भाग्य नहीं है।

tc qdisc add dev eth0 ingress
tc filter add dev eth0 parent ffff: protocol ip u32 match ip src 0.0.0.0/0 flowid :1 police rate 1.0mbit mtu 10000 burst 10k drop

बैंडविड्थ कमांड से प्रभावित होता है, हालांकि ऊपर दिए गए मान 2MB / s पर गति शुरू करते हैं और, जैसे-जैसे एक ट्रांसफर आगे बढ़ता है, धीरे-धीरे लगभग 80-90kB / s तक गिरता है, जो हस्तांतरण के लगभग 30 सेकंड के बाद पहुंचता है।

क्या मैं गलत कर रहा हूँ पर कोई विचार?


netem delay 50msविलंबता को सीमित नहीं करता है। यह इसकी तुलना में विलंबता को बढ़ाता है, 50msअन्यथा यह अन्यथा होता।
कसपर

वास्तव में आप सही हैं। शब्द सीमा को हटा दिया क्योंकि यह 50ms की वृद्धि थी जिसे मैं वास्तव में ढूंढ रहा था (क्योंकि यह उसी कंप्यूटर पर एक आभासी मशीन थी जो मूल विलंबता लगभग 0 के करीब थी)
yzfr1

जवाबों:


12

मैं अंत में सर्वर पर केवल आउटगोइंग बैंडविड्थ / विलंबता स्थापित करने के लिए बस गया, और फिर क्लाइंट पर एक ही कर, प्रभावी रूप से उसी परिणाम तक पहुंच गया।

ये वो कमांड हैं जिन्हें मैंने अपने लक्ष्यों तक पहुँचने के लिए क्रमशः सर्वर और क्लाइंट पर चलाया:

सर्वर: 4 Mbit 50 मि

tc qdisc add dev eth0 handle 1: root htb default 11
tc class add dev eth0 parent 1: classid 1:1 htb rate 1000Mbps
tc class add dev eth0 parent 1:1 classid 1:11 htb rate 4Mbit
tc qdisc add dev eth0 parent 1:11 handle 10: netem delay 50ms

ग्राहक: 512 kbit 50 एमएस

tc qdisc add dev vmnet1 handle 1: root htb default 11
tc class add dev vmnet1 parent 1: classid 1:1 htb rate 1000Mbps
tc class add dev vmnet1 parent 1:1 classid 1:11 htb rate 512kbit
tc qdisc add dev vmnet1 parent 1:11 handle 10: netem delay 50ms

मैं महीनों से इसकी तलाश कर रहा हूं। धन्यवाद। एक सवाल? आप नियम को कैसे हटाते हैं? tc class del dev eth0 रूट दिखाता है RTNETLINK उत्तर: ऐसी कोई फ़ाइल या निर्देशिका नहीं है
Nur

यह कुछ महीने पहले था, लेकिन मुझे लगता है कि यह याद रखना काफी है कि इसे हटाने के लिए qdisc: tc qdisc del dev eth0 root
yzfr1

2

कुछ 80-90 kByte / s के बारे में क्या से उम्मीद है

    tc filter add ... police rate 1.0mbit ...

आप आने वाले डेटा को 1 mBit / s पर आने पर फेंकने के लिए कहते हैं, यह लगभग 125 kByte / s है। रिमोट सर्वर तब की तुलना में काफी कम हो जाएगा (शायद आधा, निश्चित नहीं)। उसके बाद, सभी पैकेट आते हैं, इसलिए दूरस्थ छोर धीरे-धीरे गति पकड़ता है जब तक कि 125 kByte / s फिर से नहीं पहुंच जाते। आपको 125 kByte / s के नीचे औसत थ्रूपुट मिलता है , जो आकार देने में निपुण होता है।

मुझे थोड़ा आश्चर्य है कि गति 2 एमबीटी / एस तक पहुंचनी चाहिए, जो पहले से ही मौजूद इंसर्ग्रेस पॉलिसी फिल्टर के साथ है। आपने कहां से उपाय किया - डाउनस्ट्रीम क्लाइंट (प्रोग्राम) या कुछ अपस्ट्रीम राउटर में? या हो सकता है कि आपने पहली बार कनेक्शन शुरू किया हो और उसके बाद ही आपने इनग्रेस पॉलिसी फ़िल्टर को लागू किया हो?

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.