دليل قوائم الانتظار البسيط في Mikrotik

هناك الكثير من المقالات على الإنترنت مخصصة للحد من السرعة ومشاركة حركة المرور على أجهزة MikroTik ، ولكن جميعها تقريبًا تفكر فقط في شجرة قائمة الانتظار ، والتي تتطلب فهمًا عميقًا وتكرارًا في العديد من المهام ويمكن استبدالها بقوائم انتظار بسيطة.


قوائم انتظار مبسطة - آلية لتقسيم سعة القناة وإعطاء الأولوية لحركة المرور المرتبطة بهدف معين. يتم حساب حركة المرور الواردة والصادرة بالنسبة للهدف.


هناك ثلاثة خيارات للأهداف: ip ، الشبكة الفرعية ، الواجهة. يمكنك إضافة أهداف متعددة لقاعدة واحدة.


الجزء النظري


المشكلون والمخططون وقوائم الانتظار


يتم قياس معدل البيانات فيما يتعلق بالمعلومات المرسلة بالبت في الثانية من الوقت - bit / sec. وحدة البت صغيرة ، لذا يستخدمون البادئات كيلو (kbit / sec) ، ميجا (Mbit / sec) ، أزعج (Gbit / sec).


دائمًا ما تكون سرعة إرسال الحزمة عبر شبكات الاتصال مساوية لسرعة إرسال الوسيط (على سبيل المثال ، 100 ميجابت / ثانية للإيثرنت 100BASE-TX). إذا كان من الضروري تقليل هذه السرعة ، فإن جهازًا متوسطًا ، مثل جهاز التوجيه ، يستقبل الحزم من واجهة واحدة بأقصى سرعة يرسلها من واجهة أخرى بتأخير معين ، إذا تجاوزت الحزم حد السرعة المحدد ، يتم تخزينها في قائمة الانتظار وإرسالها وفقًا لـ First In ، First Out ( FIFO) ، إذا كانت قائمة الانتظار ممتلئة (مفقودة أو بحجم صفري) ، يتجاهل جهاز التوجيه الحزم.


الحد - حد السرعة الإدارية لحركة المرور القادمة من الواجهة.
Shaper (Shaper) - خوارزمية برمجية تؤخر الحزم الزائدة وتتجاهلها.
المجدول (Sheduler) - خوارزمية تقرر كيفية تخزين وإرسال الحزم التي تتجاوز الحد المسموح به.
قوائم الانتظار - خوارزميات التخزين وتحديد الأولويات لتمرير حركة المرور.


أمثلة بيانية لعمل المشكل والجدولة.


استخدام المشكل خارج الخط



استخدام المشكل مع المجدول



قوائم انتظار بسيطة على تدفق الحزم


تأتي قوائم الانتظار البسيطة بعد شجرة قوائم الانتظار ، وفي بعض الأحيان يتم استخدام قوائم الانتظار البسيطة لتقييد حركة المرور بسرعة لمستخدم واحد (أو عدة مستخدمين) ، دون التدخل في شجرة قوائم الانتظار.


تدفق حزم مبسط للمهتمين


ميكانيكا الصف: لا يوجد ، pfifo ، pcq


لا شيء - لا توجد قائمة انتظار ؛ إذا تم تجاوز الحد ، يتم تجاهل جميع الحزم الجديدة.


pfifo هي خوارزمية FIFA موجهة للحزم. يخزن عدد الحزم المحددة في الإعدادات. تستخدم بشكل افتراضي في قوائم انتظار بسيطة.



pcq (لكل اتصال في قائمة الانتظار) - يتم تقسيم كل حركة المرور إلى قوائم انتظار فرعية اعتمادًا على مجموعة من الشروط. من كل قائمة انتظار فرعية ، يتم إرسال جزء من حركة المرور بالتناوب. المساحة المشغولة مشغولة بحركة المرور الوافدة حديثًا. إذا نفد المكان في قائمة الانتظار الفرعية ، فسيتم تجاهل الحزم الموجهة إليه.



فكر في جزء صغير من الإعدادات:
المعدل : حد السرعة لكل من الطوابير الفرعية.
الحد : حجم قائمة الانتظار الفرعية بالكيلوبايت.
الحد الإجمالي : الحجم الإجمالي لجميع قوائم الانتظار الفرعية بالكيلوبايت.
يتم تحديد حد النسبة / الحد الإجمالي بناءً على الموقف. بشكل افتراضي ، 40 طابور (2000/50) ، تخضع للحد الأقصى لحركة المرور.
انفجار : عنه سيكون أقل.
المصنف : بناءً على ما يتم تقسيم حركة المرور إلى طوابير.
يتحول المصنف إلى اتصالات مختلفة ، إذا ذهبت [IP] -> [جدار حماية] -> [اتصالات] ، فيمكن ملاحظة أن معظم الاتصالات تحتوي على عنوان ومنفذ المرسل (src. Address، src. Port) وجهاز الاستقبال ( عنوان التوقيت ، منفذ التوقيت).


نناقش قوائم الانتظار البسيطة ، لذلك من أجل البساطة ، سنضع في الاعتبار أننا نقوم فقط بتصفية حركة المرور القادمة من واجهة wan ، في هذه الحالة ، بالنسبة إلى الهدف ، سيتم تصنيف حركة المرور الصادرة (تحميل) حسب src. العنوان ، والواردة (تنزيل) بواسطة dst. العنوان.


سيساعد التصنيف حسب المنفذ على تجنب حالة انسداد قائمة الانتظار بحركة المرور من تطبيق واحد ، إذا كان أحد التطبيقات ينتج العديد من الاتصالات الصادرة (على سبيل المثال ، سيل أو الويب. متصفح به مجموعة من علامات التبويب) ، فستختلف src الخاصة بهم. سيتم تقسيم الميناء وحركة المرور أيضًا إلى طوابير.


تشكيل ديناميكي باستخدام PCQ


إذا تم تعيين المعدل بشكل صارم ، فسيكون لكل تيار فرعي سرعة معينة ولن يكون قادرًا على تجاوزه حتى تتجاوز السرعة الإجمالية لجميع التدفقات الفرعية الحد الأعلى (في قوائم الانتظار البسيطة هي الحد الإجمالي) ، في هذه الحالة ستنخفض سرعة جميع التدفقات الفرعية بشكل متناسب.



إذا تم تعيين المعدل على 0 ، فسيتم مشاركة التقييد الأعلى بين جميع التدفقات الفرعية. في الواقع ، هذا هو الشكل الديناميكي.



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



الأنواع المتبقية من قوائم الانتظار (SFQ ، RED) لها خصائصها وتطبيقاتها الخاصة ويمكن استخدامها في قوائم الانتظار البسيطة أيضًا ، ولكنها الآن لا تهمنا.


وسم الحزمة


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


يتم وضع علامات المرور في [IP] -> [جدار الحماية] -> [Mangle] ، في المجموع هناك ثلاثة أنواع من التسميات: اتصال ، حزمة ، مسار. يمكن أن تحتوي كل حزمة على تسمية واحدة من كل نوع. مرة واحدة في mangle ، تمرر الحزمة واحدًا تلو الآخر وفقًا لجميع القواعد ، إذا كان هناك تصنيفان منصهران ، فإن القاعدة السفلية ستستبدل التسمية من التسمية العلوية. لمنع الكتابة الفوقية ، يمكنك تعطيل مرور حزمة أسفل السلسلة في القاعدة الأولى ( passtrought=no ).


عند إعداد قوائم الانتظار ، يمكنك استخدام تصنيفات الحزم فقط ( action=mark-packet ). ولكن لتحسين الأداء (يتم فحص تسميات الاتصال بشكل أسرع من فحص الشروط في كل حزمة) ، يوصى بوضع علامة على الاتصالات ( action=mark-connection ) أولاً ، ثم الحزم في هذا الاتصال ( action=mark-package ). القاعدة التي تحتوي على اتصالات مسبقة التحديد ليست صحيحة دائمًا ، ولكن إذا توصلت إلى هذا الفهم عند إنشاء قوائم الانتظار ، فعليك استخدام شجرة قائمة الانتظار.


يمكنك وضع علامة على حركة المرور العابر في أي من سلاسل Packet Flow ، ولكن في معظم الحالات أفضل استخدام الأمام ، لأنه في هذه المرحلة ، تكون عناوين المستلم مع المرسل وأسماء الواجهات الواردة والصادرة معروفة.


مثال لوسم حركة المرور


 /ip firewall mangle add action=mark-connection chain=forward connection-state=new dst-port=5060,10000-20000 new-connection-mark=output-sip-and-rtp passthrough=yes protocol=udp src-address=192.168.100.0/24 add action=mark-packet chain=forward connection-mark=output-sip-and-rtp new-packet-mark=output-packet-sip-and-rtp passthrough=no 

ما انفجر


عادة ، يُفهم حد السرعة على أنه قيمة ثابتة معينة للحد الأقصى في الثانية عند الوصول إلى الحزم التي يتم تجاهلها أو وضعها في قائمة الانتظار. تعمل Burst بمتوسط ​​قيمة لكل وحدة زمنية ، وهذا يجعل من الممكن استخدام سرعات أعلى (ذروة) في فترات زمنية قصيرة ويحد من السرعة بحمل ثابت على القناة.


الحد الأقصى هو القيد الرئيسي.
حد الاندفاع - السرعة القصوى ، لها الأولوية على الحد الأقصى عند مراعاة متوسط ​​السرعة المحدد.
عتبة الاندفاع - سرعة الحد.
انفجار الوقت - الوقت.


يحصل الهدف على السرعة من حدود الاندفاع ، ولكن في كل ثانية سيتم حساب متوسط ​​السرعة لوقت الاندفاع. إذا تجاوز متوسط ​​السرعة لفترة معينة حد الاندفاع ، فسيقتصر المستخدم على الحد الأقصى ، إذا عاد متوسط ​​السرعة إلى طبيعته ، فسيحصل الهدف مرة أخرى على حد الاندفاع.


دراسة حالة الاندفاع

قاعدة الاندفاع:



مخطط انسيابي يوضح تغير سرعة الهدف:



وكيف يبدو تغيير سرعة الهدف:



إذا كنت مهتمًا بموضوع Burst ، فإنني أوصيك بقراءة المعلومات الموجودة على الويكي ، فهناك رسوم بيانية وجداول بناءً على ذلك سيكون من الأفضل فهم كيفية تأثير قيم العتبة والوقت على حد السرعة.


حد الفرق عند الحد الأقصى والحد الأقصى



الحد عند - سرعة مضمونة للقاعدة. من المستحسن ألا يتجاوز مجموع كل الحدود في النطاق الترددي للقناة. دائما أقل من الحد الأقصى.
الحد الأقصى - السرعة القصوى للقاعدة. إذا سمحت "ميزانية" قائمة الانتظار ، فسيتم تخصيص الحد الأقصى لعرض النطاق الترددي.


عادة ما يشار فقط إلى الحد الأقصى في قوائم الانتظار المبسطة وهذا يعمل بشكل جيد ، ولكن في تكوين قائمة الانتظار المتتالية ، يجب تحديد كلا الحدين.


جزء عملي


يتم تكوين قوائم الانتظار البسيطة في [قوائم الانتظار] -> [قوائم الانتظار البسيطة].
تتم معالجة القواعد بالتناوب من الأعلى إلى الأسفل ، ويتم تطبيق أول قاعدة مناسبة على حزمة التمرير. في الواقع ، يمكن إجراء استثناء من أي قاعدة عن طريق وضع قاعدة أكثر تحديدًا أعلاه.


حد سرعة المضيف / الشبكة الفرعية / الواجهة


يتم استخدامه عادة عندما يكون من الضروري قتل سرعة مستخدم معين.
الاسم: أي اسم
الهدف: العنوان أو الشبكة الفرعية أو الواجهة.
التحميل المستهدف: الحد الأقصى للسرعة الصادرة.
Targer تنزيل: حد السرعة الواردة.


الحد الأقصى للسرعة 1 ميجابت / ثانية:



 /queue simple add max-limit=1M/1M name=Limit-For-100.200 queue=default/default target=192.168.100.200/32 

في الإحصائيات ، يمكنك إلقاء نظرة على السرعة الحالية للهدف ، وعدد الحزم في قائمة الانتظار ، وعدد الحزم التي تم إسقاطها.


الحد الأقصى للسرعة لمورد بعيد


الخيار بدون حزم الملصقات.


في مجال التوقيت الصيفي ، يمكن تحديد الهدف بشكل مشابه: ip ، الشبكة الفرعية ، الواجهة. في ظروف الإنترنت الحديثة ، هذا لا يكفي ، ولكن يمكن أن يكون مفيدًا للشركات الصغيرة وحدود السرعة بين المكاتب.



 /queue simple add dst=192.168.200.10/32 max-limit=10M/10M name=Limit-For-Fileserver target=192.168.100.0/24 

تقسيم القناة على قدم المساواة بين المشاركين في الشبكة الفرعية (PCQ)


قاعدة واحدة ستنقذ الشبكة الفرعية لمنزلك أو مكتبك من التقاط قناة حصري (في المثال 50 ميجا بايت / ثانية ، اضبط على قناتك) بواسطة مستخدم واحد.



قوائم انتظار PCQ المحددة موجودة في التكوين الأساسي ، لكنني أرفق لقطات شاشة في حالة حدوث تغييرات.



 # /queue type add kind=pcq name=pcq-upload-default pcq-burst-rate=0 pcq-burst-threshold=0 pcq-burst-time=10s pcq-classifier=src-address pcq-dst-address-mask=32 pcq-dst-address6-mask=128 pcq-limit=50KiB pcq-rate=0 pcq-src-address-mask=32 pcq-src-address6-mask=128 pcq-total-limit=2000KiB add kind=pcq name=pcq-download-default pcq-burst-rate=0 pcq-burst-threshold=0 pcq-burst-time=10s pcq-classifier=dst-address pcq-dst-address-mask=32 pcq-dst-address6-mask=128 pcq-limit=50KiB pcq-rate=0 pcq-src-address-mask=32 pcq-src-address6-mask=128 pcq-total-limit=2000KiB # Simple queues /queue simple add max-limit=50M/50M name=Limit-Equivalent queue=pcq-upload-default/pcq-download-default target=192.168.100.0/24 

في علامة التبويب إحصائيات ، يمكنك رؤية عدد سلاسل رسائل pcq الموجودة حاليًا في قائمة الانتظار.



حركة المرور الموسومة


خيار التوقيت الصيفي محدود تمامًا وإذا كنت ترغب في استخدام أسماء النطاقات أو قوائم العناوين ، فسيتعين عليك اللجوء إلى علامات المرور. على سبيل المثال ، سنزيل القيود المفروضة على نطاق yandex.ru (نعم ، هناك مجموعة من cdn'ok متصلة هناك وأشياء أخرى ، وللتشغيل العادي ، ستحتاج إلى إضافتها).


في إصدار حديث ، أصبح من الممكن إضافة أسماء النطاقات إلى قوائم العناوين ، سيقوم mikrotik بحلها تلقائيًا وإضافة إدخالات ديناميكية.



تعليم حركة مرور http / https (الاتصال والحزم في الاتصال) للعناوين المحددة:





القاعدة في قائمة انتظار بسيطة:



 #   /ip firewall address-list add address=yandex.ru list=ForQueues add address=yastatic.net list=ForQueues #    /ip firewall mangle add action=mark-connection chain=forward connection-state=new dst-address-list=ForQueues dst-port=80,443 new-connection-mark=Mark-ForQueues passthrough=yes protocol=tcp src-address=192.168.100.0/24 add action=mark-packet chain=forward connection-mark=Mark-ForQueues new-packet-mark=Mark-Packet-ForQueues passthrough=no #  Simple Queue /queue simple add max-limit=1M/1M name=Limit-For-Yandex packet-marks=Mark-Packet-ForQueues target=192.168.100.0/24 

قوائم الانتظار المتتالية


كل ما قيل أعلاه يشير إلى تحديد وتقسيم السرعة بين المشاركين في الشبكة ، فقد حان الوقت للمس موضوع تحديد أولويات حركة المرور. عادة ما تكون مطلوبة لحركة المرور التفاعلية (voip ، vcs ، ssh ، rdp ، ...) في قناة محدودة ومشغولة.


بالنسبة لقوائم الانتظار المتتالية ، تكون المعلمة Parent مسؤولة ، والتي تشير إلى قائمة انتظار "الأصل". للعمل ، يجب أن يتم التقاط جميع حركة المرور من قوائم انتظار "تابعة" بواسطة الوالد.


المعلمة Priority هي المسؤولة عن حركة المرور التي ستتم إضافتها إلى قائمة الانتظار في وقت سابق ، وهي تعمل فقط في قوائم الانتظار الفرعية (أو في "الوالد" إذا لم يكن لديهم "child") ، ويمكن أن تأخذ القيم من 1 (أعلى أولوية) إلى 8 ولا تحتوي على شيء شائعة مع علامات جودة الخدمة (DSCP؛ TOS).


العلامات المسبقة لحركة المرور:



 /ip firewall mangle add action=mark-connection chain=forward connection-state=related,new dst-port=5060,10000-20000 in-interface=br-lan new-connection-mark=mark-conn-voip passthrough=yes protocol=udp add action=mark-packet chain=forward connection-mark=mark-conn-voip new-packet-mark=mark-pkg-voip passthrough=no add action=mark-connection chain=forward connection-state=new dst-port=80,443 in-interface=br-lan new-connection-mark=mark-conn-web passthrough=yes protocol=tcp 

قوائم الانتظار في SimpleQueue:







 /queue simple add limit-at=24M/24M max-limit=25M/25M name=main target=10.10.10.0/24 add limit-at=5M/5M max-limit=8M/8M name=voip packet-marks=mark-pkg-voip parent=main priority=1/1 queue=pcq-upload-default/pcq-download-default target="" add limit-at=10M/10M max-limit=20M/20M name=web packet-marks=mark-pkg-web parent=main priority=2/2 queue=pcq-upload-default/pcq-download-default target="" add limit-at=10M/10M max-limit=20M/20M name=other packet-marks=mark-pkg-other parent=main priority=3/3 queue=pcq-upload-default/pcq-download-default target="" 

الآن ، إذا كنت بحاجة إلى إجراء تقييد لعنوان IP واحد ، فما عليك سوى وضع القاعدة أمام سلسلة قوائم الانتظار.


خاتمة


Simple Queues هي أداة مثيرة للاهتمام وعملية إلى حد ما للتكوينات المنزلية و SOHO ، مع قاعدة واحدة (دون اللجوء إلى تصنيف حركة المرور) يمكنك حل مشكلة التقاط القناة بواسطة جهاز واحد. ولكن ، إذا كنت تستخدم FastTrack ، فعليك نسيان قوائم الانتظار - ستتجاوزها حركة المرور.


للحصول على تكوينات أكثر تعقيدًا ، توجد شجرة قوائم الانتظار (أشجار HTB).

Source: https://habr.com/ru/post/ar420117/


All Articles