मैं बैंडविड्थ को सीमित करने tc
और परिणामों की जांच करने की कोशिश कर रहा हूं iperf
। मैंने इस तरह शुरू किया:
# iperf -c 192.168.2.1
------------------------------------------------------------
Client connecting to 192.168.2.1, TCP port 5001
TCP window size: 23.5 KByte (default)
------------------------------------------------------------
[ 3] local 192.168.2.7 port 35213 connected with 192.168.2.1 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.0 sec 830 MBytes 696 Mbits/sec
दो उदाहरण सीधे ईथरनेट के माध्यम से जुड़े हुए हैं।
फिर मैंने htb
qdisc
बैंडविड्थ को 1mbit / sec तक सीमित करने के लिए एक डिफ़ॉल्ट वर्ग के साथ सेट किया :
# tc qdisc add dev bond0 root handle 1: htb default 12
# tc class add dev bond0 parent 1: classid 1:12 htb rate 1mbit
लेकिन मुझे वह नहीं मिलता जिसकी मुझे उम्मीद है:
# iperf -c 192.168.2.1
------------------------------------------------------------
Client connecting to 192.168.2.1, TCP port 5001
TCP window size: 23.5 KByte (default)
------------------------------------------------------------
[ 3] local 192.168.2.7 port 35217 connected with 192.168.2.1 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-12.8 sec 768 KBytes 491 Kbits/sec
यदि मैं दर को दोगुना करता हूं, तो मापा बैंडविड्थ नहीं बदलता है। मुझे किसकी याद आ रही है? मापित बैंडविड्थ rate
पैरामीटर से 1mbit के अनुरूप क्यों नहीं है ? बैंडविड्थ को एक सटीक दिए गए दर तक सीमित करने के लिए मुझे किन मापदंडों की आवश्यकता है?
हालाँकि, man
पृष्ठ कहता है कि इस कार्य के लिए विकल्प tbf
होना चाहिए qdisc
:
टोकन बाल्टी फ़िल्टर ठीक से कॉन्फ़िगर की गई दर तक ट्रैफ़िक को धीमा करने के लिए अनुकूल है। बड़े बैंडविथ के लिए अच्छी तरह से तराजू।
tbf
मापदंडों की आवश्यकता है rate
, burst
और ( limit
| latency
)। तो मैं कैसे समझ के बिना निम्नलिखित की कोशिश की burst
और ( limit
| latency
) उपलब्ध बैंडविड्थ प्रभावित करते हैं:
# tc qdisc add dev bond0 root tbf rate 1mbit limit 10k burst 10k
यह मुझे 113 Kbits / सेकंड की एक मापा बैंडविड्थ मिला। जब तक मैंने देखा कि उन मापदंडों के साथ खेलना तब तक नहीं बदला, जब तक कि मैंने यह नहीं देखा कि mtu
चीजों में बदलाव के लिए एक मूल्य जोड़ना :
# tc qdisc add dev bond0 root tbf rate 1mbit limit 10k burst 10k mtu 5000
1.00 Mbit / sec की मापा बैंडविड्थ के परिणामस्वरूप।
बैंडविड्थ को एक सटीक दी गई दर तक सीमित करने के लिए मुझे किन मापदंडों की आवश्यकता होगी?
क्या मुझे इसके लिए htb
या tbf
कतारबद्ध अनुशासन का उपयोग करना चाहिए ?
संपादित करें :
इन संसाधनों के आधार पर, मैंने कुछ परीक्षण किए हैं:
- https://help.ubuntu.com/community/UbuntuBonding
- https://help.ubuntu.com/community/LinkAggregation
- /usr/share/doc/ifenslave-2.6/README.Debian.gz http://lartc.org/
मैंने निम्नलिखित सेटअप की कोशिश की है।
एक भौतिक मशीन पर
/etc/network/interfaces
:
auto lo
iface lo inet loopback
auto br0
iface br0 inet dhcp
bridge_ports eth0
के साथ माप iperf
:
# tc qdisc add dev eth0 root handle 1: htb default 12
# tc class add dev eth0 parent 1: classid 1:12 htb rate 1mbit
# iperf -c 192.168.2.1
------------------------------------------------------------
Client connecting to 192.168.2.1, TCP port 5001
TCP window size: 23.5 KByte (default)
------------------------------------------------------------
[ 3] local 192.168.2.4 port 51804 connected with 192.168.2.1 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-11.9 sec 1.62 MBytes 1.14 Mbits/sec
जबकि iperf
सर्वर ने एक अलग बैंडविड्थ की गणना की:
[ 4] local 192.168.2.1 port 5001 connected with 192.168.2.4 port 51804
[ 4] 0.0-13.7 sec 1.62 MBytes 993 Kbits/sec
एक वर्चुअल मशीन पर बिना बॉन्डिंग के
/etc/network/interfaces
:
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
के साथ माप iperf
:
# tc qdisc add dev eth0 root handle 1: htb default 12
# tc class add dev eth0 parent 1: classid 1:12 htb rate 1mbit
# iperf -c 192.168.2.1
------------------------------------------------------------
Client connecting to 192.168.2.1, TCP port 5001
TCP window size: 23.5 KByte (default)
------------------------------------------------------------
[ 3] local 192.168.2.7 port 34347 connected with 192.168.2.1 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-11.3 sec 1.62 MBytes 1.21 Mbits/sec
जबकि iperf
सर्वर ने एक अलग बैंडविड्थ की गणना की:
[ 4] local 192.168.2.1 port 5001 connected with 192.168.2.7 port 34347
[ 4] 0.0-14.0 sec 1.62 MBytes 972 Kbits/sec
एक आभासी मशीन पर संबंध के साथ (tc eth0 पर कॉन्फ़िगर किया गया)
/etc/network/interfaces
:
auto lo
iface lo inet loopback
auto eth0
allow-bond0 eth0
iface eth0 inet manual
bond-master bond0
bond-primary eth0 eth1
auto eth1
allow-bond0 eth1
iface eth1 inet manual
bond-master bond0
bond-primary eth0 eth1
auto bond0
iface bond0 inet dhcp
bond-slaves none
bond-mode 1
# bond-arp-interval 250
# bond-arp-ip-target 192.168.2.1
# bond-arp-validate 3
के साथ माप iperf
:
# tc qdisc add dev eth0 root handle 1: htb default 12
# tc class add dev eth0 parent 1: classid 1:12 htb rate 1mbit
# iperf -c 192.168.2.1
------------------------------------------------------------
Client connecting to 192.168.2.1, TCP port 5001
TCP window size: 23.5 KByte (default)
------------------------------------------------------------
[ 3] local 192.168.2.9 port 49054 connected with 192.168.2.1 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-11.9 sec 1.62 MBytes 1.14 Mbits/sec
जबकि iperf
सर्वर ने एक अलग बैंडविड्थ की गणना की:
[ 4] local 192.168.2.1 port 5001 connected with 192.168.2.9 port 49054
[ 4] 0.0-14.0 sec 1.62 MBytes 972 Kbits/sec
एक वर्चुअल मशीन पर बॉन्डिंग के साथ (बंधन 0 पर कॉन्फ़िगर किया गया टीसी)
/etc/network/interfaces
:
auto lo
iface lo inet loopback
auto eth0
allow-bond0 eth0
iface eth0 inet manual
bond-master bond0
bond-primary eth0 eth1
auto eth1
allow-bond0 eth1
iface eth1 inet manual
bond-master bond0
bond-primary eth0 eth1
auto bond0
iface bond0 inet dhcp
bond-slaves none
bond-mode 1
# bond-arp-interval 250
# bond-arp-ip-target 192.168.2.1
# bond-arp-validate 3
के साथ माप iperf
:
# tc qdisc add dev bond0 root handle 1: htb default 12
# tc class add dev bond0 parent 1: classid 1:12 htb rate 1mbit
# iperf -c 192.168.2.1
------------------------------------------------------------
Client connecting to 192.168.2.1, TCP port 5001
TCP window size: 23.5 KByte (default)
------------------------------------------------------------
[ 3] local 192.168.2.9 port 49055 connected with 192.168.2.1 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-13.3 sec 768 KBytes 475 Kbits/sec
जबकि iperf
सर्वर ने एक अलग बैंडविड्थ की गणना की:
[ 4] local 192.168.2.1 port 5001 connected with 192.168.2.9 port 49055
[ 4] 0.0-14.1 sec 768 KBytes 446 Kbits/sec
यदि मैं eth1
बांड से निष्कासित (निष्क्रिय इंटरफ़ेस) करता हूं तो परिणाम नहीं बदलता है ।
निष्कर्ष
बॉन्ड इंटरफ़ेस पर ट्रैफ़िक नियंत्रण काम नहीं करता है, या कम से कम अपेक्षित नहीं है। मुझे और जांच करनी होगी।
एक वर्कअराउंड के रूप में, कोई भी संबंधित विषयों को सीधे बांड से संबंधित इंटरफेस में जोड़ सकता है ।
tc filter
पैकेट को कक्षाओं में रखने के लिए उपयोग करना होगा। आपको htb के कुछ मापदंडों को बदलना पड़ सकता है (इसे tbf की तरह ही ट्यून करें)। मैं सुझाव देता हूं कि tcng
जो आगे है, वह tc के सामने है। (ये त्वरित संकेत दिए गए हैं ...)