Product SiteDocumentation Site

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

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

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

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

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

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

هدف اصلی از wondershaper (در بسته‌ای مشابه همین نام) به حداقل رساندن تاخیر مستقل از بار موجود در شبکه است. اینکار با محدودکردن ترافیک کل به مقداری که کمی از مقدار اشباع شبکه کمتر باشد صورت می‌گیرد.
Once a network interface is configured, setting up this traffic limitation is achieved by running wondershaper interface download_rate upload_rate. The interface can be enp1s0, eth0 or ppp0 for example, and both rates are expressed in kilobits per second. The wondershaper remove interface command disables traffic control on the specified interface.
For an Ethernet connection, historically this script would be called right after the interface is configured. This is done by adding up and down directives to the /etc/network/interfaces file allowing declared commands to be run, respectively, after the interface is configured and before it is deconfigured. Or in the PPP case, creating a script that calls wondershaper in /etc/ppp/ip-up.d/ will enable traffic control as soon as the connection is up. Below is an example using this first method:

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

iface eth0 inet dhcp
    up /sbin/wondershaper eth0 500 100
    down /sbin/wondershaper remove eth0

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

Barring a specific QoS configuration, the Linux kernel uses the pfifo_fast queue scheduler, which provides a few interesting features by itself. The priority of each processed IP packet is based on the DSCP field (Differentiated Services Code Point) of this packet; modifying this 6-bit field is enough to take advantage of the scheduling features. Refer to https://en.wikipedia.org/wiki/Differentiated_services#Class_Selector for more information.
The DSCP field can be set by applications that generate IP packets, or modified on the fly by netfilter. The following rules are sufficient to increase responsiveness for a server's SSH service, note that the DSCP field must be set in hexadecimal:
nft add table ip mangle
nft add rule ip mangle PREROUTING tcp sport 22 counter ip dscp set 0x04
nft add rule ip mangle PREROUTING tcp dport 22 counter ip dscp set 0x04