আমি আমাদের ইন্টারনেট লাইনে এক ধরণের ট্র্যাফিক ম্যানেজমেন্ট যুক্ত করতে চাই। প্রচুর ডকুমেন্টেশন পড়ার পরে, আমার মনে হয় এইচএফএসসি আমার জন্য খুব জটিল (আমি সমস্ত বক্ররেখার জিনিস বুঝতে পারি না, আমি ভয় করি যে আমি কখনই এটি ঠিক করব না), সিবিকিউ প্রস্তাবিত নয়, এবং মূলত এইচটিবি হ'ল উপায় বেশিরভাগ মানুষের জন্য যান।
আমাদের অভ্যন্তরীণ নেটওয়ার্কটির তিনটি "বিভাগ" রয়েছে এবং আমি ব্যান্ডউইথকে কমপক্ষে সমানভাবে ভাগ করতে চাই (অন্তত শুরুতে)। আরও আমাকে কমপক্ষে তিন ধরণের ট্র্যাফিক (রিয়েলটাইম ট্র্যাফিক, স্ট্যান্ডার্ড ট্র্যাফিক এবং বাল্ক ট্র্যাফিক) অনুযায়ী ট্র্যাফিকের অগ্রাধিকার দিতে হবে। ব্যান্ডউইথ ভাগ করে নেওয়ার বিষয়টি ততটা গুরুত্বপূর্ণ নয় যে রিয়েলটাইম ট্র্যাফিক সবসময় প্রিমিয়াম ট্র্যাফিক হিসাবে বিবেচনা করা উচিত, যখনই সম্ভব হয় তবে অন্য কোনও ট্রাফিক শ্রেণি না খেয়ে থাকতে পারে।
প্রশ্নটি হ'ল কী আরও বোধগম্য করে এবং আরও ভাল রিয়েলটাইম থ্রুপুট গ্যারান্টি দেয়:
প্রতিটি বিভাগে একটি শ্রেণি তৈরি করা, প্রত্যেকের সমান হার থাকা (এইচটিবি বিকাশকারী অনুসারে কোনও শ্রেণীর জন্য অগ্রাধিকারের বিষয়টি বিবেচনা করে না) এবং এই শ্রেণীর প্রত্যেকের 3 টি অগ্রাধিকার স্তরের (বিভিন্ন অগ্রাধিকার সহ) তিনটি উপ-শ্রেণি (পাতাগুলি) থাকে এবং বিভিন্ন হার)।
শীর্ষে অগ্রাধিকার স্তরের প্রতি এক শ্রেণি থাকা, প্রত্যেকের আলাদা আলাদা হার (আবার অগ্রাধিকারের বিষয়টি বিবেচিত হবে না) এবং প্রত্যেকের 3 টি উপ-শ্রেণি রয়েছে, প্রতিটি বিভাগে একটি করে, যেখানে রিয়েলটাইম ক্লাসের সমস্ত 3 টিই উচ্চতম প্রিও, বাল্কের মধ্যে সর্বনিম্ন প্রিও রয়েছে ক্লাস, এবং তাই।
আমি নিম্নলিখিত ASCII আর্ট ইমেজের সাহায্যে এটি আরও পরিষ্কার করার চেষ্টা করব:
Case 1:
root --+--> Segment A
| +--> High Prio
| +--> Normal Prio
| +--> Low Prio
|
+--> Segment B
| +--> High Prio
| +--> Normal Prio
| +--> Low Prio
|
+--> Segment C
+--> High Prio
+--> Normal Prio
+--> Low Prio
Case 2:
root --+--> High Prio
| +--> Segment A
| +--> Segment B
| +--> Segment C
|
+--> Normal Prio
| +--> Segment A
| +--> Segment B
| +--> Segment C
|
+--> Low Prio
+--> Segment A
+--> Segment B
+--> Segment C
কেস 1 দেখে মনে হচ্ছে বেশিরভাগ লোকেরা এটিই করবে, তবে আমি যদি এইচটিবি বাস্তবায়নের বিশদটি সঠিকভাবে না পড়ি তবে কেস 2 আরও ভাল অগ্রাধিকার দিতে পারে।
এইচটিবি ম্যানুয়ালটিতে বলা হয়েছে যে, কোনও শ্রেণি যদি তার হারকে আঘাত করে, তবে এটি তার পিতামাতার কাছ থেকে ধার নিতে পারে এবং bণ নেওয়ার সময়, উচ্চতর অগ্রাধিকার প্রাপ্ত ক্লাসগুলি সর্বদা প্রথমে ব্যান্ডউইথের অফার পায়। তবে এটি আরও বলেছে যে নিম্ন গাছের স্তরে ব্যান্ডউইথ পাওয়া ক্লাসগুলিকে অগ্রাধিকার বিবেচনা না করে সর্বদা উচ্চ গাছের স্তরের ক্ষেত্রে অগ্রাধিকার দেওয়া হয় ।
আসুন নিম্নলিখিত পরিস্থিতিটি ধরে নিই: সেগমেন্ট সি কোনও ট্র্যাফিক প্রেরণ করছে না। সেগমেন্ট এ কেবলমাত্র রিয়েলটাইম ট্র্যাফিক প্রেরণ করছে, এটি যত দ্রুত পারে (একা লিঙ্কটি পরিপূর্ণ করার পক্ষে যথেষ্ট) এবং সেগমেন্ট বি কেবল যতটা সম্ভব তড়িৎ ট্র্যাফিক প্রেরণ করছে (আবার পুরো একা পুরো লিঙ্কটি পরিপূর্ণ করার পক্ষে যথেষ্ট)। কি হবে?
মামলা 1:
সেগমেন্ট এ-> হাই প্রিও এবং সেগমেন্ট বি-> লো প্রিও উভয়েরই পাঠানোর প্যাকেট রয়েছে, যেহেতু এ-> হাই প্রিওর বেশি অগ্রাধিকার রয়েছে, এটি তার হারটিকে হিট না করা পর্যন্ত এটি সর্বদা আগে নির্ধারিত হবে। এখন এটি সেগমেন্ট এ থেকে toণ নেওয়ার চেষ্টা করে, তবে যেহেতু বিভাগটি এ উচ্চতর স্তরের এবং সেগমেন্ট বি-> লো প্রিও এখনও তার হারটি পায় নি, এখন পর্যন্ত এই শ্রেণিটি প্রথমে পরিবেশন করা হবে, যতক্ষণ না এটি হারও হিট করে এবং fromণ নিতে চায় না সেগমেন্ট বি। একবার উভয়ই তাদের হারগুলি হিট করে ফেলেছে, উভয়ই আবার একই স্তরে রয়েছে এবং এখন সেগমেন্ট এ-> হাই প্রিও আবার জিততে চলেছে, যতক্ষণ না সেগমেন্ট এ এর হারকে আঘাত করে এখন এটি মূল থেকে orrowণ নেওয়ার চেষ্টা করে (যা আছে) প্রচুর ট্র্যাফিক অতিরিক্ত, সেগমেন্ট সি তার গ্যারান্টিযুক্ত ট্র্যাফিকের কোনও ব্যবহার করে না) তবে আবারও, সেগমেন্ট বি-> লো প্রিমোরও মূল স্তরে পৌঁছানোর জন্য অপেক্ষা করতে হবে। এটি একবার হয়ে যায়,
কেস 2:
হাই প্রিও-> সেগমেন্ট এ এবং লো প্রিও-> সেগমেন্ট বি উভয়ের কাছে প্যাকেট প্রেরণ রয়েছে, আবার হাই প্রিমো-> সেগমেন্ট এ এর উচ্চ অগ্রাধিকার হওয়ায় এটি জিততে চলেছে। এটি একবার তার হারকে হিট করার পরে, এটি হাই প্রিওর কাছ থেকে orrowণ নেওয়ার চেষ্টা করে, যার ব্যান্ডউইথ স্পিয়ার রয়েছে, তবে উচ্চতর স্তরে থাকায়, এটি আবারও নিম্ন প্রিমো-> সেগমেন্ট বি'র জন্য অপেক্ষা করতে হবে তার হারটিও হিট করতে। দু'জনেই তাদের হার হিট হয়ে গেলে এবং উভয়কে orrowণ নিতে হয়, হাই প্রিও-> সেগমেন্ট এ আবার জিতবে যতক্ষণ না এটি হাই প্রিও শ্রেণীর হারকে হিট করে। এটি হয়ে গেলে, এটি মূল থেকে ধার নেওয়ার চেষ্টা করে, যার আবার প্রচুর পরিমাণে ব্যান্ডউইথ বাকি রয়েছে (নরমাল প্রির সমস্ত ব্যান্ডউইথ এই মুহুর্তে অব্যবহৃত আছে), তবে লো প্রিও-> বিভাগ বি এর হারের সীমাটি হিট না হওয়া পর্যন্ত এটি আবার অপেক্ষা করতে হবে লো প্রাইও ক্লাস এবং মূল থেকে orrowণ নেওয়ার চেষ্টা করে। সবশেষে উভয় শ্রেণি মূল থেকে orrowণ নেওয়ার চেষ্টা করে, অগ্রাধিকারটি বিবেচনায় নেওয়া হয় এবং হাই প্রিও->
উভয় ক্ষেত্রেই উপ-অনুকূল বলে মনে হয়, যেহেতু উভয় উপায়ে রিয়েলটাইম ট্র্যাফিকের জন্য প্রচুর পরিমাণে ব্যান্ডউইথ থাকায় এটি couldণ নিতে পারে, যদিও প্রচুর ট্র্যাফিকের জন্য অপেক্ষা করতে হয়। যাইহোক, 2 ক্ষেত্রে এটি রিয়েলটাইম ট্র্যাফিকের ক্ষেত্রে 1 এর চেয়ে কম অপেক্ষা করতে হবে, যেহেতু এটি কেবলমাত্র বাল্ক ট্র্যাফিকের হারের দিকে অপেক্ষা করা উচিত, যা সম্ভবত পুরো বিভাগের হারের চেয়ে কম (এবং ক্ষেত্রে সম্ভবত) 1 এটি যে হারের জন্য অপেক্ষা করতে হবে)। নাকি আমি এখানে পুরোপুরি ভুল?
আমি এমনকি একটি অগ্রাধিকার qdisc ব্যবহার করে এমনকি আরও সহজ সেটআপগুলি সম্পর্কে ভেবেছিলাম। তবে অগ্রাধিকারের কাতারে বড় সমস্যা রয়েছে যে তারা যদি কোনওভাবে সীমাবদ্ধ না হয় তবে তারা অনাহার সৃষ্টি করে। অনাহার গ্রহণযোগ্য নয়। রেট সীমাবদ্ধ করার জন্য এবং অনাহার এড়াতে অবশ্যই প্রত্যেকটি অগ্রাধিকার শ্রেণিতে একটি টিবিএফ (টোকেন বালতি ফিল্টার) লাগাতে পারে, তবে এটি করার সময়, একক অগ্রাধিকার শ্রেণি নিজে থেকে এই লিঙ্কটি আর পূর্ণ করতে পারে না, এমনকি অন্য সমস্ত অগ্রাধিকার শ্রেণি এমনকি যদি খালি রয়েছে, টিবিএফ এটি হতে বাধা দেবে। এবং এটি উপ-সর্বোত্তমও, যেহেতু এই মুহুর্তে অন্য কোনও শ্রেণির কোনওটির প্রয়োজন না হলে কেন কোনও শ্রেণি লাইনের ব্যান্ডউইথের 100% পাবে না?
এই সেটআপ সম্পর্কে কোনও মন্তব্য বা ধারণা? প্রমিত tc qdiscs ব্যবহার করা এত কঠিন বলে মনে হচ্ছে। প্রোগ্রামার হিসাবে এটি এত সহজ কাজ ছিল যদি আমি কেবল নিজের শিডিয়ুলারটি লিখতে পারি (যা আমাকে করার অনুমতি নেই)।