Product SiteDocumentation Site

10.4. جودة الخدمة

10.4.1. المبدأ والآلية

يشير مصطلح جودة الخدمة Quality of Service (أو QoS اختصاراً) لمجموعة من التقنيات التي تضمن أو تحسن جودة الخدمة المقدمة للتطبيقات. من أشهر هذه التقنيات تصنيف بيانات الشبكة في فئات، وتمييز معالجة البيانات وفقًا للفئة التي تنتمي إليها. التطبيق الرئيسي لهذه الخدمة هو 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