Product SiteDocumentation Site

10.3. کیفیت سرویس

10.3.1. اصول و مکانیزم

عبارت QoS یا Quality of Service به برخی تکنیک‌ها اشاره می‌کند که کیفیت استفاده از یک سرویس را تضمین می‌کنند. محبوب‌ترین این تکنیک‌ها شامل طبقه‌بندی ترافیک شبکه به دسته‌های مختلف و تفاوت قائل‌شدن بین مدیریت هر دسته است. کارکرد اصلی مفهوم تفاوت‌ قائل‌شدن بین سرویس‌ها در traffic shaping است، که نرخ تبادل داده را برای برخی سرویس‌ها یا میزبان‌ها به منظور اشباع‌نشدن پهنای باند محدود می‌سازد. شکل‌دهی به ترافیک یک روش موثر در ترافیک TCP است، چرا که این پروتکل به صورت خودکار با پهنای باند موجود سازگار خواهد شد.
همچنین امکان تغییر اولویت در ترافیک نیز وجود دارد، که به اولویت‌بندی بسته‌های مرتبط با سرویس‌های تعاملی (مانند ssh یا telnet) یا سرویس‌هایی که با تنها با حجم کوچکی از داده سر و کار دارند، می‌پردازد.
کرنل‌های دبیان شامل قابلیت‌های مورد نیاز QoS با همراه ماژول‌های آن هستند. تعداد این ماژول‌ها زیاد است و هر یک سرویس مختلفی را ارائه می‌دهد، به خصوص به شیوه زمان‌بندی برای صف بسته‌های IP؛ بازه گسترده زمان‌بندی موجود از تمام بازه ممکن نیازمندی‌ها فراتر می‌رود.

10.3.2. پیکربندی و پیاده‌سازی

پارامترهای QoS از طریق دستور tc تنظیم می‌شوند (که توسط بسته iproute فراهم شده است). از آنجا که شامل رابط به نسبت پیچیده‌ای است، استفاده از یک ابزار سطح-بالاتر توصیه می‌شود.

10.3.2.1. کاهش‌ تاخیر: wondershaper

هدف اصلی از wondershaper (در بسته‌ای مشابه همین نام) به حداقل رساندن تاخیر مستقل از بار موجود در شبکه است. اینکار با محدودکردن ترافیک کل به مقداری که کمی از مقدار اشباع شبکه کمتر باشد صورت می‌گیرد.
زمانی که رابط شبکه پیکربندی شده باشد، تنظیم این محدودیت ترافیک با اجرای دستور wondershaper interface download_rate upload_rate صورت می‌گیرد. برای نمونه، رابط می‌تواند eth0 یا ppp0 باشد و هر دو نرخ تبادل داده به صورت کلیوبیت بر ثانیه بیان می‌شوند. دستور wondershaper remove interface محدودیت ترافیک روی رابط شبکه مشخص شده را حذف می‌کند.
برای یک ارتباط Ethernet، بهتر است این اسکریپت پس از پیکربندی آن فراخوانی شود. اینکار با استفاده از عبارت‌های up و down در فایل /etc/network/interfaces که امکان فراخوانی دستورات دیگر پس از بالا آمدن رابط و قبل از قطع شدن آن است را، فراهم می‌آورد. برای نمونه:

مثال 10.9. تغییرات در فایل /etc/network/interfaces

iface eth0 inet dhcp
    up /sbin/wondershaper eth0 500 100
    down /sbin/wondershaper remove eth0
در مورد PPP، ایجاد اسکریپتی که wondershaper را در فایل /etc/ppp/ip-up.d/ فراخوانی کند، منجر به فعال‌سازی محدودیت ترافیک پس از برقراری ارتباط می‌گردد.

10.3.2.2. پیکربندی استاندارد

بجز پیکربندی‌های خاص QoS، کرنل لینوکس از یک زمان‌بند صف pfifo_fast استفاده می‌کند که شامل ویژگی‌های جالبی است. اولویت هر بسته IP پردازش شده بر اساس فیلد ToS یا Type of Service آن بسته مشخص می‌شود؛ تغییر این فیلد باعث می‌شود که از قابلیت‌های این زمان‌بند بتوانید به خوبی استفاده کنید. پنج مقدار ممکن برای آن وجود دارند؛
  • سرویس-عادی (۰)؛
  • کاهش-هزینه (۲)؛
  • افزایش-قابلیت اعتماد (۴)؛
  • افزایش-قدرت خروجی (۸)؛
  • کاهش-تاخیر (۱۶).
فیلد ToS می‌تواند توسط برنامه‌هایی که بسته‌های IP را تولید می‌کنند ایجاد گردد یا به صورت درجا توسط netfilter تغییر یابد. قواعد پیش رو برای افزایش توان پاسخگویی سرویس SSH در یکی سرور کافی هستند:
iptables -t mangle -A PREROUTING -p tcp --sport ssh -j TOS --set-tos Minimize-Delay
iptables -t mangle -A PREROUTING -p tcp --dport ssh -j TOS --set-tos Minimize-Delay