سیستم عامل لینوکس ابزارهای قدرتمندی در زمینه مدیریت انتقال Packet ها ارائه می دهد که از جمله آن می توان به, packet mangling packet filteringو… اشاره کرد که مستقیما توسط Kernel و بدون نرم افزار جانبی انجام می شود. از دیگر ابزارهای این دسته که در این بحث به آن اشاره می کنیم کنترل ترافیک (Traffic Control) یا کنترل پهنای باند است.
در این مبحث در ارتباط با هر Interface مفهومی با عنوان Queue Discipline مطرح می شود، الگوریتمهایی که نحوه رفتار با بسته های (Packet) صف شده را معرفی می کند. که حالت ساده و البته پیش فرض Queue Discipline در لینوکس برای کلیه Interface ها مدل (FIFO (First in-First out است. بدین معنی که در حالت پیش فرض یک روتر لینوکس هیچگونه کنترل و تاخیر در پهنای باند و دریافت و ارسال بسته ها اعمال نمی کند.
Kernel لینوکس از روش بسیار دقیق برای کنترل پهنای باند استفاده می کند و علت آن استفاده از الگوریتم Token – Bucket است که بر جریان عبور بسته ها بصورت بایت به بایت نظارت می کند. در این الگوریتم در کنار صف Packet ها از صف دیگری بنام Bucket استفاده می شود که به ازاء ورود هر Token به این صف اجازه خروج داده های ارسالی از صف Packet داده می شود.
فرمان لینوکس برای اعمال محدودیت پهنای باند بر روی یک Interface شبکه “tc” می باشد.
فرمان لینوکس برای مشاهده وضعیت جاری پهنای باند Interface ها:
فرمان لینوکس برای اضافه نمودن محدودیت پهنای باند بر روی یک Interface خاص که در این آموزش از مدل tbf استفاده می کنیم:
فرمان حذف نمودن محدودیت پهنای باند:
#tc qdisc del dev eth0 root
توضیح اضافه نمودن محدودیت پهنای باند با ذکر مثال:
dev تعیین Interface مورد نظر جهت اعمال محدودیت پهنای باند
root در حالت های خاص یک Interface می تواند شامل چندین Class باشد که هر Class شامل Flow یا جریان های وابسته به آن Class است. به عنوان مثال تعریف یک Class با Flow عبور بسته های ssh. ولی در حالت معمول در صورت عدم تعریف Class باید از حالت root استفاده کرد که نشان دهنده تمامی بسته های دریافتی است.
tbf یکی از انواع مدل های که از الگوریتم Token – Bucket استفاده می کند.
rate نرخ ارسال Token به داخل Bucket
burst اندازه صف Bucket بر حسب بایت برای نگهدای Token. اندازه Rate بالاتر نیاز به بافر بزرگتری برای Token ها دارد.
limit اندازه صف Packet ها بر حسب بایت.
peakrate در صورت عدم استفاده صحیح از این پارامتر مدل tbf از دقت لازم برخوردار نخواهد بود.دلیل: در حالت پیش فرض زمانی که Token اضافه در Bucket موجود باشد یا بعبارتی زمانی که نسبت نرخ ارسال Token به نرخ ارسال Packet بالاتر میرود Packet های موجود با حداکثر سرعت از بافر Interface خارج می شوند و بنابراین در این گونه زمان ها پهنای باند برابر با مقدار تعیین شده در پارامتر rate نخواهد بود. استفاده از پارامتر peakrate مشکل فوق را حل می کند.
در بخش پیشرفته تر کنترل ترافیک امکان پیاده سازی مکانیزم QoS مطرح می شود که مبنای آن اعمال محدودیت پهنای باند بر روی Flow های است که از یک Interface خاص میگذرند. این Flow ها میتوانند شامل مجموعه Packet ها با IP خاص یا شماره پورت خاص باشند. جهت ایجاد Flow های گفته شده در لینوکس ابزاری بنام iptables وجود دارد با قابلیت اعمال QoS که اصطلاحا با عنوان mangling شناخته میشود.
در مباحث آینده به توضیح در خصوص iptables و ارتباط آن با tc خواهیم پرداخت.