আমি ব্যবহার করছি এমন একটি এইচটিবি কাঠামো সম্পর্কে আমার কিছু সন্দেহ রয়েছে।
আমার লক্ষ্য স্থানীয় নেটওয়ার্কে ব্যবহারকারীদের ডাউনলোড এবং আপলোডের গতি সীমাবদ্ধ করা। নেটওয়ার্কের প্রতিটি ব্যবহারকারীর ডোমেনের জন্য ডাউন এবং আপ স্পিড সহ ডোমেনগুলির ব্যক্তিগত তালিকা রয়েছে যা তিনি অতিক্রম করতে পারবেন না।
এর অর্থ ব্যবহারকারী ব্যবহারকারী স্ল্যাশডট.আর.জে তার অ্যাকসেস ডাউনলোডের জন্য 8 কেবি এবং আপলোডের জন্য 3 কেবিতে সীমাবদ্ধ রাখতে পারে এবং ব্যবহারকারী 2 স্ল্যাশডট.আরোগুলিতে 4KB ডাউন এবং 1KB আপের সীমাবদ্ধ অ্যাক্সেস রাখতে পারে।
আপাতত আমি একটি iptables / tc দম্পতি সেটআপ করি যা দুর্দান্ত কাজ করে তবে খুব সামান্য স্কেলে একই সময়ে 2 বা 3 ভার্চুয়াল হোস্ট ব্যবহার করে (দুর্ভাগ্যক্রমে, আমি আসল আকারের পরীক্ষা করতে পারি না)।
এখানে আমার বর্তমান কাঠামোটি রয়েছে (আমি কেবল ল্যানটির ঠিকানায় এটি দেখাব, আপলোডের জন্য এটি কেবল এটির একটি "অনুলিপি")
ইন্টারফেসের সাথে সংযুক্ত একটি এইচটিবি কিউডিস্ক (হ্যান্ডেল 2 :), ডিফল্ট ট্র্যাফিক ক্লাসটি ক্লাস এফএফএফএফ হয়।
মূল শ্রেণি 2: 1 সরাসরি এইচটিবি কিউডিস্কের অধীনে রেট এবং সজ্জিত DOWNLINK সক্ষমতা নিয়ে থাকে।
ডিফল্ট ক্লাস 2: 2k 1 এর শিশু হিসাবে এফএফএফএফ, 1 কেজিপিএস হার এবং ডাউন সক্ষমতাটির সিল সহ।
তারপরে, নির্দিষ্ট ডোমেন থেকে কোনও ব্যবহারকারীর জন্য নতুন বিধিনিষেধ তৈরি করার সময় অন্যান্য ক্লাস গতিশীলভাবে যুক্ত হয়, এর ডোমেন থেকে ডাউনলোডের গতি নিয়ন্ত্রণ করতে একটি নতুন টিসি ক্লাস যুক্ত করা হয়।
আপাতত, আমি যা করেছি তা এখানে:
একটি অনন্য আইডি দিয়ে একটি নতুন টিসি ক্লাস তৈরি করুন (এখানে কোনও বিন্দু নয় একটি ডেটাবেস থেকে নেওয়া হয়েছে), পিতা-মাতা হিসাবে শ্রেণি 2: 1, হারের মান 1 পিবিএস, সিলের মান সীমিত ডাউনলোডের গতিতে সেট করা হয়েছে।
এখানে টিসি কমান্ড রয়েছে:
-------------- BEGIN SCRIPT --------------
DOWNLINK=800
## Setting up the static tc qdisc and class
$tc qdisc add dev $LAN_IFACE root handle 2: htb default 0xFFFF
# Main class so the default class can borrow bandwith from the others
$tc class replace dev $LAN_IFACE parent 0x2: classid 0x2:0x1 htb rate $DOWNLINK ceil $DOWNLINKkbps
# add the default class of class id 2:a under the main class of classid 2:1
$tc class replace dev $LAN_IFACE parent 0x2:0x1 classid 0x2:0xFFFF htb rate 1kbps ceil $DOWNLINKkbps prio 0
# add to the leaf class 2:10 for default traffic a sfq qdisc
$tc qdisc add dev $LAN_IFACE parent 0x2:0xFFFF handle 0xFFFF: sfq perturb 10
## The dynamic part called each time a new restriction for a couple domain/user is added
$tc class replace dev $LAN_IFACE parent 0x2:0x1 classid 0x2:0x$idHex htb rate 1bps ceil $speedDownkbps prio 1
# Add the sfq at the leaf class 2:1$id
$tc qdisc add dev $LAN_IFACE parent 0x2:0x$idHex handle 0x$idHex: sfq perturb 10
# $id is the mark added by iptables for this couple domain/user
$tc filter replace dev $LAN_IFACE parent 0x2:0 protocol ip prio 3 handle 0x$id fw flowid 0x2:0x$idHex
-------------- END SCRIPT --------------
সমস্ত সাধারণ ট্র্যাফিক (গতির সীমাবদ্ধতা ছাড়াই) ডিফল্ট শ্রেণিতে যেতে হবে এবং সীমাবদ্ধটিকে তার সংশ্লিষ্ট টিসি শ্রেণিতে প্রেরণ করা উচিত।
আমি যে বিষয়টি গুরুত্ব সহকারে সন্দেহ করি তা হ'ল ডিফল্ট শ্রেণি এবং সীমাবদ্ধ শ্রেণির জন্য সর্বনিম্ন 1 জিপিএস গতির হারের ব্যবহার। যে সীমাবদ্ধ শ্রেণিগুলি তৈরি করা হবে তার সংখ্যাটি আমি নিয়ন্ত্রণ করতে পারি না এবং আমি সীমাবদ্ধ শ্রেণির মোট হারকে মূল শ্রেণীর একটির চেয়ে বেশি করতে চাই না।
আরেকটি বিষয়, আমি ডিফল্ট প্রিও 0 এবং সংঘবদ্ধ শ্রেণি প্রিও 1 যোগ করেছি, সুতরাং যদি ডিফল্ট শ্রেণীর ধার নেওয়া উচিত (প্রায় সবসময় তার খুব ধীর গতির হার অনুসারে), এই শ্রেণিটি অন্যান্য সীমাবদ্ধ ডোমেনের আগে পরিবেশন করা হবে। তবে আমি যদি ডিফল্ট শ্রেণির সিলটি মূল শ্রেণীর এক হিসাবে রাখি তবে কী সেই ডোমেনগুলি ক্ষুধার্ত হবে না?
বেশ কয়েকটি দম্পতি ডোমেন / ব্যবহারকারীর গতি সীমাবদ্ধ রেখে আমি কীভাবে ব্যবহারকারীদের একটি সীমাবদ্ধ ব্যবহারের জন্য শালীন ইন্টারেক্টিভিটি এবং ব্যান্ডউইথ রাখতে দিতে সক্ষম হতে পারি?
আমি আরও ভাবছি যে ডিফল্ট ক্লাসটি এখানে কার্যকর কিনা, আমি যদি এইচটিবি কিডিস্কের জন্য একটি ডিফল্ট শ্রেণি নির্দিষ্ট না করি তবে ফিল্টারগুলির সাথে মেলে না এমন প্যাকেটগুলি হার্ডওয়্যার গতিতে চিহ্নিত করা হবে। (তবে এখানে আবার সীমাবদ্ধ শ্রেণির অনাহার তৈরি করে দিয়েছি?)
আমি টিসি এবং নেটওয়ার্ক কিউএস-তে সত্যিই নতুন, সুতরাং যে কোনও পরামর্শ, সমালোচক (গঠনমূলক);) স্বাগত জানানো হবে।
ভিনসেন্ট।