table of contents
| TC(8) | لينكس | TC(8) |
الاسم¶
sfq - الاصطفاف العادل العشوائي
موجز¶
tc qdisc ... [ divisor حجم_جدول_التجزئة ] [ limit حزم ] [ perturb ثوانٍ ] [ quantum بايت ] [ flows عدد ] [ depth عدد ] [ headdrop ] [ redflowlimit بايت ] [ min بايت ] [ max بايت ] [ avpkt بايت ] [ burst حزم ] [ probability P ] [ ecn ] [ harddrop ]
الوصف¶
الاصطفاف العادل العشوائي هو نظام اصطفاف غير طبقي متاح للتحكم في حركة المرور باستخدام الأمر tc(8).
لا يقوم SFQ بتشكيل حركة المرور بل يحدد مواعيد إرسال الحزم فقط، بناءً على 'التدفقات'. الهدف هو ضمان العدالة بحيث يتمكن كل تدفق من إرسال البيانات بدوره، مما يمنع أي تدفق واحد من طغيان البقية.
قد يكون لهذا في الواقع بعض التأثير في تخفيف محاولة رفض الخدمة.
SFQ يحافظ على العمل وبالتالي يسلم دائمًا حزمة إذا كانت متوفرة لديه.
خوارزمية¶
عند الإدراج في الطابور، تُخصص كل حزمة إلى دلو تجزئة، بناءً على قيمة تجزئة الحزمة. يتم الحصول على قيمة التجزئة هذه إما من مصنف تدفق خارجي (استخدم tc filter لتعيينها)، أو مصنف داخلي مبدئي إذا لم يتم تكوين مصنف خارجي.
عند استخدام المصنف الداخلي، يستخدم sfq
- (أ)
- عنوان المصدر
- (ب)
- عنوان الوجهة
- (iii)
- منفذ المصدر والوجهة
إذا كانت هذه متوفرة. SFQ يعرف ipv4 و ipv6 وأيضًا UDP و TCP و ESP. يتم تجزئة الحزم ذات البروتوكولات الأخرى بناءً على تمثيل 32 بت للوجهة والمصدر. يتوافق التدفق في الغالب مع اتصال TCP/IP.
يجب أن يمثل كل من هذه الدلاء تدفقًا فريدًا. نظرًا لأن تدفقات متعددة قد تُجزأ إلى نفس الدلو، فقد يتم إزعاج خوارزمية التجزئة الداخلية لـ sfq على فترات قابلة للتكوين بحيث يستمر الظلم لفترة قصيرة فقط. قد يتسبب الإزعاج مع ذلك في حدوث بعض إعادة ترتيب الحزم غير المقصودة. بعد لينكس-3.3، لا توجد مشكلة إعادة ترتيب الحزم، ولكن قد يتم إسقاط الحزم إذا وصلت إعادة التجزئة إلى حد واحد (عدد التدفقات أو الحزم لكل تدفق)
عند إزالة الحزم من الطابور، يتم الاستعلام عن كل دلو تجزئة يحتوي على بيانات بطريقة تناوبية.
قبل لينكس-3.3، كان الحد الأقصى لطول SFQ في وقت الترجمة هو 128 حزمة، والتي يمكن توزيعها على 128 دلوًا على الأكثر من أصل 1024 متاحة. في حالة الفائض، يتم إسقاط الذيل على الدلو الأكثر امتلاءً، وبالتالي الحفاظ على العدالة.
بعد لينكس-3.3، الحد الأقصى لطول SFQ هو 65535 حزمة، وحد المقسوم هو 65536. في حالة الفائض، يتم إسقاط الذيل على الدلو الأكثر امتلاءً، ما لم يتم طلب إسقاط الرأس.
المعاملات¶
- divisor
- يمكن استخدامه لتعيين حجم مختلف لجدول التجزئة، متاح من النواة 2.6.39 فصاعدًا. يجب أن يكون المقسوم المحدد قوة للعدد اثنين ولا يمكن أن يكون أكبر من 65536. القيمة المبدئية: 1024.
- limit
- الحد الأعلى لـ SFQ. يمكن استخدامه لتقليل الطول المبدئي البالغ 127 حزمة. بعد لينكس-3.3، يمكن رفعه.
- depth
- حد الحزم لكل تدفق (بعد لينكس-3.3). المبدئي هو 127 ويمكن خفضه.
- perturb
- الفاصل الزمني بالثواني لإزعاج خوارزمية الطابور. المبدئي هو 0، مما يعني عدم حدوث إزعاج. لا تضبطه منخفضًا جدًا لأن كل إزعاج قد يتسبب في بعض إعادة ترتيب الحزم أو فقدانها. القيمة الموصى بها: 60. هذه القيمة ليس لها تأثير عند استخدام تصنيف التدفق الخارجي. من الأفضل زيادة قيمة المقسوم لتقليل خطر تصادمات التجزئة.
- quantum
- عدد البايتات المسموح لتدفق بإخراجها من قائمة الانتظار خلال جولة من عملية الدوران المتناوب. المبدئي هو MTU للواجهة، وهو أيضًا القيمة الموصى بها والحد الأدنى.
- flows
- بعد لينكس-3.3، يمكن تغيير الحد المبدئي للتدفقات. القيمة المبدئية هي 127
- headdrop
- السلوك المبدئي لـ SFQ هو إجراء إسقاط ذيل الحزم من تدفق. يمكنك طلب إسقاط رأس بدلاً من ذلك، حيث يُعرف هذا بتوفير تغذية راجعة أفضل لتدفقات TCP.
- redflowlimit
- تكوين وحدة
RED
الاختيارية
فوق كل تدفق
SFQ. مبدأ
الكشف
العشوائي
المبكر هو
إجراء
علامات أو
إسقاطات
للحزم
بطريقة
احتمالية.
(راجع man tc-red
للتفاصيل
حول RED)
يُكوّن redflowlimit الحد الصارم على حجم قائمة الانتظار الحقيقي (وليس المتوسط) لكل تدفق SFQ بالبايت.
- min
- متوسط حجم الطابور الذي يصبح عنده التعليم ممكناً. القيمة المبدئية هي max /3
- max
- عند هذا الحجم المتوسط لقائمة الانتظار، يكون احتمال العلامة أقصى. المبدئي هو redflowlimit /4
- probability
- الاحتمال الأقصى للعلامة، محدد كرقم عائم من 0.0 إلى 1.0. القيمة المبدئية هي 0.02
- avpkt
- محدد بالبايت. يُستخدم مع الاندفاع لتحديد ثابت الزمن لحسابات حجم قائمة الانتظار المتوسط. القيمة المبدئية هي 1000
- burst
- يُستخدم
لتحديد مدى
سرعة تأثر
حجم قائمة
الانتظار
المتوسط
بحجم قائمة
الانتظار
الحقيقي.
القيمة المبدئية هي : (2 * min + max) / (3 * avpkt)
- ecn
- يمكن لـ RED إما 'وضع علامة' أو 'إسقاط'. إشعار الازدحام الصريح يسمح لـ RED بإخطار المضيفين البعيدين بأن معدلهم يتجاوز مقدار النطاق الترددي المتاح. لا يمكن إخطار المضيفين غير القادرين على ECN إلا بإسقاط حزمة. إذا تم تحديد هذه المعلمة، فسيتم فقط وضع علامة على الحزم التي تشير إلى أن مضيفيها يحترمون ECN ولن يتم إسقاطها، إلا إذا وصل حجم قائمة الانتظار إلى depth حزمة.
- harddrop
- إذا كان متوسط حجم طابور التدفق أعلى من max بايت، فإن هذا المعامل يفرض الإسقاط بدلاً من وسم ecn.
أمثلة واستخدامات¶
للإرفاق بالجهاز ppp0:
# tc qdisc add dev ppp0 root sfq
يرجى ملاحظة أن SFQ، مثل جميع وحدات qdisc غير المشكلة (الحافظة للعمل)، مفيدة فقط إذا كانت تمتلك قائمة الانتظار. هذا هو الحال عندما تساوي سرعة الارتباط النطاق الترددي المتاح فعليًا. ينطبق هذا على مودمات الهاتف العادية، واتصالات ISDN، ووصلات الإيثرنت المباشرة غير المحولة.
في أغلب الأحيان، لا تقع مودمات الكابل وأجهزة DSL ضمن هذه الفئة. وينطبق الشيء نفسه عند الاتصال بمبدل ومحاولة إرسال بيانات إلى قطاع مزدحم متصل أيضًا بالمبدل.
في هذه الحالة، لا توجد قائمة الانتظار الفعلية داخل لينكس وبالتالي فهي غير متاحة للجدولة.
قم بتضمين SFQ في qdisc طبقي للتأكد من أنها تمتلك قائمة الانتظار.
من الممكن استخدام مصنفات خارجية مع sfq، على سبيل المثال لتجزئة حركة المرور بناءً على عناوين IP المصدر/الوجهة فقط:
# tc filter add ... flow hash keys src,dst perturb 30 divisor 1024
لاحظ أن المقسوم المُعطى يجب أن يطابق المستخدم بواسطة sfq. إذا قمت بتغيير المبدئي لـ sfq وهو 1024، فاستخدم نفس القيمة لمرشح تجزئة التدفق أيضًا.
مثال على sfq مع وضع RED الاختياري :
# tc qdisc add dev eth0 parent 1:1 handle 10: sfq limit 3000 flows
512 divisor 16384
redflowlimit 100000 min 8000 max 60000 probability 0.20 ecn headdrop
المَصْدَر¶
- o
- Paul E. McKenney "Stochastic Fairness Queuing", وقائع IEEE INFOCOMM'90، سان فرانسيسكو، 1990.
- o
- Paul E. McKenney "Stochastic Fairness Queuing", "Interworking: Research and Experience", المجلد 2، 1991، الصفحات 113-131.
- o
- انظر أيضًا: M. Shreedhar و George Varghese "Efficient Fair Queuing using Deficit Round Robin", وقائع SIGCOMM 95.
انظر أيضًا¶
المؤلفون¶
Alexey N. Kuznetsov, <kuznet@ms2.inr.ac.ru>, Eric Dumazet <eric.dumazet@gmail.com>.
صان هذه الصفحة bert hubert <ahu@ds9a.nl>
ترجمة¶
تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي <zayed.alsaidi@gmail.com>
هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.
إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.
| 24 يناير 2012 | iproute2 |