PRIO(8)

الاسم
PRIO - مُجدول الأولويات

موجز
tc qdisc ... dev dev ( parent classid | root) [ handle major: ] prio [ bands bands ] [ priomap band band band... ] [ estimator interval timeconstant ]

الوصف
مُجدول PRIO هو نظام طابور بسيط قائم على الفئات يحتوي على عدد عشوائي من الفئات ذات أولويات مختلفة. يتم إخراج الفئات من الطابور بترتيب تنازلي عددي للأولوية. PRIO هو مُجدول ولا يؤخر الحزم أبدًا - فهو مُجدول يحافظ على العمل، على الرغم من أن المُجدولات الموجودة في الفئات قد لا تكون كذلك. مفيد جدًا لتقليل زمن الوصول عندما لا تكون هناك حاجة لإبطاء حركة المرور.

خوارزمية
عند الإنشاء باستخدام 'tc qdisc add'، يتم إنشاء عدد ثابت من النطاقات. كل نطاق هو فئة، على الرغم من أنه لا يمكن إضافة فئات باستخدام 'tc qdisc add'، إلا أنه يجب تحديد عدد النطاقات المراد إنشاؤها في سطر الأوامر عند ربط PRIO بجذره. عند إخراج الحزم من الطابور، يتم تجربة النطاق 0 أولاً، وفقط إذا لم يسلم حزمة، يحاول PRIO النطاق 1، وهكذا. لذلك، يجب أن تذهب حزم الموثوقية القصوى إلى النطاق 0، وأقل تأخير إلى النطاق 1، والباقي إلى النطاق 2. نظرًا لأن مُجدول PRIO نفسه سيكون له رقم ثانوي 0، فإن النطاق 0 هو في الواقع رئيسي:1، والنطاق 1 هو رئيسي:2، وهكذا. بالنسبة للرئيسي، استبدل الرقم الرئيسي المُسند إلى المُجدول في 'tc qdisc add' باستخدام المعامل handle.

تصنيف
ثلاث طرق متاحة لـ PRIO لتحديد النطاق الذي سيتم وضع الحزمة فيه في الطابور.

من مساحة المستخدم
    يمكن لعملية ذات صلاحيات كافية ترميز الفئة الوجهة مباشرة باستخدام SO_PRIORITY، انظر socket(7).

باستخدام مرشح tc
    يمكن لمرشح tc مُرفق بمُجدول الجذر توجيه حركة المرور مباشرة إلى فئة

باستخدام خريطة الأولويات
    بناءً على أولوية الحزمة، والتي تُشتق بدورها من نوع الخدمة المُسند إلى الحزمة.

فقط خريطة الأولويات خاصة بهذا المُجدول.

مُعاملات المُجدول

bands
    عدد النطاقات. إذا تم تغييره عن القيمة المبدئية 3، يجب تحديث priomap أيضًا.

priomap
    تقوم خريطة الأولويات بتعيين أولوية الحزمة إلى فئة. يمكن تعيين الأولوية إما مباشرة من مساحة المستخدم، أو اشتقاقها من نوع الخدمة للحزمة. تحدد كيفية تعيين أولويات الحزم، كما تُسند بواسطة النواة، إلى النطاقات. يحدث التعيين بناءً على ثماني TOS للحزمة، والذي يبدو كالتالي:
    0   1   2   3   4   5   6   7
    +---+---+---+---+---+---+---+---+
    |           |               |   |
    |PRECEDENCE |      TOS      |MBZ|
    |           |               |   |
    +---+---+---+---+---+---+---+---+
    يتم تعريف بتات TOS الأربعة ('حقل TOS') على النحو التالي:
    ثنائي  عشري  المعنى
    -----------------------------------------
    1000   8         تقليل التأخير (md)
    0100   4         زيادة السعة (mt)
    0010   2         زيادة الموثوقية (mr)
    0001   1         تقليل التكلفة المالية (mmc)
    0000   0         الخدمة العادية
    نظرًا لوجود بت واحد على يمين هذه البتات الأربعة، فإن القيمة الفعلية لحقل TOS هي ضعف قيمة بتات TOS. يُظهر Tcpdump -v -v قيمة حقل TOS بالكامل، وليس فقط البتات الأربع. إنها القيمة التي تراها في العمود الأول من هذا الجدول:
    TOS     Bits  Means                    Linux Priority    Band
    ------------------------------------------------------------
    0x0     0     Normal Service           0 Best Effort     1
    0x2     1     Minimize Monetary Cost   0 Best Effort     1
    0x4     2     Maximize Reliability     0 Best Effort     1
    0x6     3     mmc+mr                   0 Best Effort     1
    0x8     4     Maximize Throughput      2 Bulk            2
    0xa     5     mmc+mt                   2 Bulk            2
    0xc     6     mr+mt                    2 Bulk            2
    0xe     7     mmc+mr+mt                2 Bulk            2
    0x10    8     Minimize Delay           6 Interactive     0
    0x12    9     mmc+md                   6 Interactive     0
    0x14    10    mr+md                    6 Interactive     0
    0x16    11    mmc+mr+md                6 Interactive     0
    0x18    12    mt+md                    4 Int. Bulk       1
    0x1a    13    mmc+mt+md                4 Int. Bulk       1
    0x1c    14    mr+mt+md                 4 Int. Bulk       1
    0x1e    15    mmc+mr+mt+md             4 Int. Bulk       1
    يحتوي العمود الثاني على قيمة بتات TOS الأربع ذات الصلة، متبوعة بمعناها المترجم. على سبيل المثال، 15 يرمز لحزمة تريد أقل تكلفة نقدية، أقصى موثوقية، أقصى إنتاجية وأقل تأخير. يسرد العمود الرابع طريقة تفسير نواة لينكس لبتات TOS، بإظهار الأولوية التي تُربط إليها. يظهر العمود الأخير نتيجة خريطة الأولوية المبدئية. في سطر الأوامر، تبدو خريطة الأولوية المبدئية هكذا:
        1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1 هذا يعني أن الأولوية 4، على سبيل المثال، تُربط برقم النطاق 1. تسمح لك خريطة الأولوية أيضًا بإدراج أولويات أعلى (> 7) لا تتوافق مع تعيينات TOS، ولكنها تُضبط بوسائل أخرى. يشرح هذا الجدول من RFC 1349 (اقرأه لمزيد من التفاصيل) كيف يمكن للتطبيقات ضبط بتات TOS الخاصة بها:
    TELNET                   1000           (تقليل التأخير)
    FTP
            Control          1000           (تقليل التأخير)
            Data             0100           (زيادة السعة الاستيعابية)
    TFTP                     1000           (تقليل التأخير)
    SMTP
            Command phase    1000           (تقليل التأخير)
            DATA phase       0100           (زيادة السعة الاستيعابية)
    خدمة أسماء النطاقات
            استعلام UDP        1000           (تقليل التأخير)
            استعلام TCP        0000
            نقل المنطقة    0100           (زيادة السعة إلى أقصى حد)
    NNTP                     0001           (تقليل التكلفة المالية)
    ICMP
            الأخطاء           0000
            الطلبات         0000 (في الغالب)
            الاستجابات        <مطابقة للطلب> (في الغالب)

CLASSES
لا يمكن تهيئة فئات PRIO أكثر - فهي تُنشأ آليًا عند إرفاق مُجدول الحزم PRIO. ومع ذلك، يمكن لكل فئة أن تحتوي على مُجدول حزم إضافي.

العلل
يمكن أن تتسبب كميات كبيرة من المرور في النطاقات السفلية في تجويع النطاقات الأعلى. يمكن منع ذلك بإرفاق مُشكل (على سبيل المثال، tc-tbf(8)) بهذه النطاقات لضمان عدم سيطرتها على الرابط.

المؤلفون
Alexey N. Kuznetsov, <kuznet@ms2.inr.ac.ru>, J Hadi Salim <hadi@cyberus.ca>. صفحة الدليل هذه يُحافظ عليها bert hubert <ahu@ds9a.nl>

ترجمة
تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي <zayed.alsaidi@gmail.com>

هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 (https://www.gnu.org/licenses/gpl-3.0.html) أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.

إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.