Product SiteDocumentation Site

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

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

يشير مصطلح جودة الخدمة Quality of Service (أو QoS اختصاراً) لمجموعة من التقنيات التي تضمن أو تحسن جودة الخدمة المقدمة للتطبيقات. من أشهر هذه التقنيات تصنيف بيانات الشبكة في فئات، وتمييز معالجة البيانات وفقًا للفئة التي تنتمي إليها. التطبيق الرئيسي لهذه الخدمة هو 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 التحكم بحركة البيانات على الواجهة المحددة.
بالنسبة لاتصالات إيثرنت، أفضل حل هو استدعاء هذا السكربت تلقائياً بعد إعداد الواجهة الشبكية. يتم هذا بإضافة التعليمتين التوجيهيتين 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) الخاص بهذه الرزمة؛ ويكفي تعديل هذا الحقل للاستفادة من مزايا الجدولة. هناك خمس قيم ممكنة:
  • خدمة عادية (0) (Normal-Service)؛
  • تقليل الكلفة (2) (Minimize-Cost)؛
  • رفع الوثوقية (4) (Maximize-Reliability)؛
  • رفع مستوى النقل (8) (Maximize-Throughput)؛
  • تقليل التأخير (16) (Minimize-Delay).
يمكن للتطبيق الذي يولد رزم IP تحديد قيمة الحقل ToS، أو يمكن تعديلها آنياً باستخدام 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