আমি ব্যান্ডউইথকে সীমাবদ্ধ করার চেষ্টা করছি 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
ব্যান্ডউইথকে 1 এমবিট / সেকেন্ডে সীমাবদ্ধ করতে একটি ডিফল্ট ক্লাস সহ একটি সেট আপ করেছি :
# 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
আমি যদি হার দ্বিগুণ করি তবে পরিমাপ করা ব্যান্ডউইথ পরিবর্তন হয় না। আমি কী মিস করছি? কেন পরিমাপ করা ব্যান্ডউইদথটি 1 মিম্বরের সাথে মিল করে নাrate
প্যারামিটার ? ব্যান্ডউইথকে একটি নির্দিষ্ট প্রদত্ত হারের মধ্যে সীমাবদ্ধ করতে আমার কী পরামিতিগুলি সেট করতে হবে?
তবে 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 কিবিট / সেকেন্ডের একটি পরিমাপযোগ্য ব্যান্ডউইথ পেয়েছে। এই পরামিতিগুলির সাথে ঘুরে বেড়ানো যতক্ষণ না আমি লক্ষ্য করেছি যে mtu
পরিবর্তিত জিনিসের জন্য একটি মান যুক্ত করে দেওয়া হয়েছে ততটা পরিবর্তন হয়নি :
# tc qdisc add dev bond0 root tbf rate 1mbit limit 10k burst 10k mtu 5000
1.00 এমবিটস / সেকেন্ডের একটি পরিমাপ ব্যান্ডউইথের ফলে
ব্যান্ডউইথকে একটি নির্দিষ্ট প্রদত্ত হারের মধ্যে সীমাবদ্ধ করতে আমার কী পরামিতিগুলি সেট করতে হবে?
আমি কি এর জন্য 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
বন্ডিং সহ ভার্চুয়াল মেশিনে (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
বন্ডিং সহ ভার্চুয়াল মেশিনে (বন্ধনীতে টিসি কনফিগার করা আছে)
/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
আপনার প্যাকেটগুলি ক্লাসে লাগাতে হবে। আপনার এইচটিবি প্যারামিটারগুলিরও কিছু পরিবর্তন করতে হবে (এটি টিবিএফের মতো টিউন করুন)। আমি সন্ধানের পরামর্শ দিচ্ছি tcng
, এটি টিসি-র একটি প্রান্ত-প্রান্ত। (এগুলি দ্রুত পয়েন্টার ...)