Статьи

Основи шейпінгу в MikroTik RouterOS

  1. HTB Шейпер
  2. Пікова швидкість Burst
  3. алгоритми Schedulers
  4. PFIFO / BFIFO
  5. SFQ
  6. PCQ
  7. RED
  8. типи черг
  9. Queue Trees
  10. приклад
  11. Simple Queues
  12. приклад

зміст:

  1. HTB шейпер
  2. Пікова швидкість Burst
  3. алгоритми Schedulers
  4. типи черг

Шейпінг - це технологія, що дозволяє обмежувати швидкість і якість доступу в інтернет.

Шейпер - це програма, що здійснює обмеження швидкості. Шейпер працює за алгоритмом, який управляє черговістю пакетів даних і обмежує швидкість шляхом відкидання пакетів, які задовольняють певним умовам.

HTB Шейпер

У різних операційних системах шейпери реалізовані по різному.

У Windows шейпери являють собою програмні пакети, в основному платні і практично не настроюються.

У Linux набагато більше простору для створення шейпер, оскільки операції з мережевими пакетами вбудовані безпосередньо в ядро ​​операційної системи. За рахунок цього досягається кращу швидкодію і надійність.

У Linux шейпер створюється шляхом додавання необхідної черзі безпосередньо до мережевого інтерфейсу. Цей елемент називається qdisc (Queueing Discipline - Дисципліна організації черги).

Дисципліна організації черги (qdisc) - це алгоритм, який захоплює пакети і визначає, в якому порядку і яким чином вони будуть рухатися. Ставлячи різні qdisc на інтерфейсі, можна застосовувати різні алгоритми управління трафіком.

Дисципліни організації черги діляться на два види:

  1. Безкласовості дисципліни організації черг (Classless qdisc).
    До них відносяться: PFIFO / BFIFO, Token Bucket Filter (TBF), Stochastic Fairness Queueing (SFQ), Random Early Detection (RED) і тд. По суті, вони є саме чергами, в яких рухаються пакети. Тому для простоти будемо називати такі qdisc просто «чергу».
  2. Полноклассовие дисципліни організації черг (Classful qdisc).
    До них відносяться PRIO, Class Based Queueing (CBQ), Hierarchical Token Bucket (HTB) і т.д. Надалі такі qdisc будемо називати просто «дисципліна». Вони є кістяком для організації ієрархії з черг.

Управління пропускною здатністю в Mikrotik RouterOS засноване на дисципліні HTB (Hierarchical Token Bucket). Вона одна з найбільш зручних, простих і надійних дисциплін для організації Шейпера.

У Mikrotik RouterOS є такі основні можливості по управлінню трафіком:

  • обмеження швидкості по IP-адресами, подсетям, протоколам, портам, часу доби і іншим параметрам;
  • обмеження P2P трафіку торрентів і пріоритезація одних потоків пакетів над іншими;
  • використання пікових швидкостей для швидкого WEB-серфінгу;
  • поділ каналу між користувачами порівну або в інших пропорціях;
  • можливість завдання гарантованої швидкості.

HTB дозволяє організувати деревоподібну ієрархію з черг і направляти в них трафік за допомогою системи фільтрів. Для розуміння принципу роботи HTB розглянемо наступну аналогію:

Є дорога, по якій ходять трамвай, тролейбус і таксі. Згідно ПДР швидкості кожного з транспортних засобів строго визначені - у трамвая це 40 км / год, у тролейбуса - 70 км / год і у таксі - 100 км / ч. У кожного з транспортів на дорозі своя смуга. У трамвая - рейки, у тролейбуса - дорога під проводами. Ну а у таксі вся інша дорога. Пасажири вибирають транспорт в відповідності зі своїм статком або бажанням. Ті, хто багатший - їдуть на таксі, найбідніші - на трамваї, ну а середній клас - на тролейбусі.

HTB складається з наступних елементів:

  1. Клас (class). З точки зору нашої аналогії це рядок в ПДР, що визначає, з якою швидкістю повинен їхати певний транспорт.
  2. Черга (qdisc). В нашій аналогії це сам транспортний засіб, разом з його смугою на дорозі.
  3. Фільтр (filter). В нашій аналогії це критерій, який визначає, в який транспортний засіб сяде пасажир. Пасажир представляє пакет даних. Для нашого прикладу критеріїв тільки два: дохід або бажання.

Таким чином, трафік спочатку фільтрується в відповідну чергу, а потім рухається по ній (точніше видається з неї) зі швидкістю, визначеною в класі. На практиці це працює саме в такому порядку. Хоча в першу чергу пакет проходить фільтр.

З класів будується ієрархія HTB. Ієрархія потрібна для складного розподілу швидкості пакетів в класах. Нижчі класи отримують дозволену швидкість від вищестоящих.

Приклад ієрархії класів HTB можна побачити на малюнку нижче. Ієрархія представлена ​​у вигляді якогось гібридного дерева розділеного рівнями Level0, Level1, кінцевими вершинами якого є клієнти або листя Leaf1, Leaf2. Класи, які не мають дочірніх, будемо називати клієнтами або листям. Зазвичай вони знаходяться на нульовому рівні ієрархії і першими захоплюють відноситься до них трафік, передаючи його батькам. Два або більше класу, що мають одного прямого батька знаходяться на одному рівні і приєднані до однієї локальної вихідний черги.

Схематичне зображення структури HTB.

У ієрархію класів з брандмауера (Filter) надходять пакети з даними. Залежно від пріоритету, параметрів класів і завантаження каналу вони потрапляють або в локальні черги (Self Feed), або передаються в черзі батьківських класів (Inner Feed).

Будь-клас HTB володіє наступними параметрами:

  • limit-at - гарантована швидкість;
  • max-limit - обмеження швидкості;
  • priority - пріоритет класу.

Клас може перебувати в одному з трьох станів:

  • Зелений - пропускна здатність класу не перевищує параметр limit-at. В цьому випадку пакети не рухаються вгору по ієрархії, а переміщаються відразу в вихідний потік свого рівня відповідно до пріоритетів.
  • Жовтий - пропускна здатність класу більше limit-at, але менше max-limit. В цьому випадку клас відключається від вихідного потоку свого рівня і підключається до батьківського класу.
  • Червоний - пропускна здатність класу більше max-limit. У цьому стані клас відключається від батьківського і підключається до локальної черзі.

Розглянемо кілька прикладів роботи HTB.

Виконайте в консолі New Terminal наступні команди:

# Створюємо основний клас ClassA з обмеженням швидкості 2 Мбіт / с.
queue tree add name = ClassA parent = Local max-limit = 2048000
# Створюємо клас ClassB з обмеженням швидкості 1 Мбіт / с. Для ClassB клас ClassA буде батьківським.
queue tree add name = ClassB parent = ClassA max-limit = 1024000
# Додаємо лист Leaf1 з батьківським класом ClassA, обмеженням швидкості 2 Мбіт / с, гарантованою швидкістю 1 Мбіт / с і пріоритетом 8.
queue tree add name = Leaf1 parent = ClassA max-limit = 2048000 limit-at = 1024000 packet-mark = packet_mark1 priority = 8
# Додаємо лист Leaf2 з батьківським класом ClassB, обмеженням швидкості 1 Мбіт / с, гарантованою швидкістю 256 Кбіт / с і пріоритетом 7. Дані пакети будуть промарковані як packet_mark2.
queue tree add name = Leaf2 parent = ClassB max-limit = 1024000 limit-at = 256000 priority = 7 packet-mark = packet_mark2
# Додаємо лист Leaf3 з батьківським класом ClassB, обмеженням швидкості 1 Мбіт / с, гарантованою швидкістю 768 Кбіт / с і пріоритетом 8. Дані пакети будуть промарковані як packet_mark3.
queue tree add name = Leaf3 parent = ClassB max-limit = 1024000 limit-at = 768000 priority = 8 packet-mark = packet_mark3

1. Розглянемо перший випадок, коли листя Leaf1 і Leaf2 передають дані зі швидкістю менше, ніж зазначено в параметрі limit-at, а Leaf3 не працює.

Розглянемо перший випадок, коли листя Leaf1 і Leaf2 передають дані зі швидкістю менше, ніж зазначено в параметрі limit-at, а Leaf3 не працює

Як бачимо, пакети з даними від leaf1 і leaf2 (клієнти) не передаються в батьківські класи, а шикуються в локальну чергу відповідно до своїх пріоритетів.

2. Тепер подивимося що буде, в разі якщо клієнт leaf2 буде передавати дані зі швидкістю більше limit-at, але менше max-limit зазначених в його параметрах і менше limit-at в параметрах ClassB, до якого він прикріплений. Одночасно з ним leaf1 буде передавати дані зі швидкістю не перевищує limit-at.

Одночасно з ним leaf1 буде передавати дані зі швидкістю не перевищує limit-at

В даному випадку виходить цікава ситуація: клієнт leaf1 матиме більший пріоритет, ніж leaf2, хоча в параметрах останнього вказано більший пріоритет. Це пов'язано з тим, що передаючи дані зі швидкістю більше limit-at leaf2 підключився до батьківського класу, що має пріоритет 8. При цьому існує правило, що на нижніх рівнях пріоритет пакетів при однакових умовах більше, ніж на верхніх.

3. Розглянемо наступний приклад: швидкості передачі даних для leaf1 перевищила допустимий max-limit, клієнт leaf2 передає дані на швидкості більше limit-at і менше max-limit, клієнт leaf3 працює на швидкості менше limit-at.

Розглянемо наступний приклад: швидкості передачі даних для leaf1 перевищила допустимий max-limit, клієнт leaf2 передає дані на швидкості більше limit-at і менше max-limit, клієнт leaf3 працює на швидкості менше limit-at

Це дуже цікавий випадок. У даній ситуації видно, що ClassA перевантажений даними з Leaf1, тому ClassB не отримає дозволу на передачу. В результаті працездатним виявиться тільки клієнт leaf3, підключений до локальної чергу на нульовому рівні.

4. Тепер розглянемо приклад, коли дані будуть одночасно передавати leaf1, leaf2, leaf3, ClassB буде жовтим, а ClassA зеленим.

Тепер розглянемо приклад, коли дані будуть одночасно передавати leaf1, leaf2, leaf3, ClassB буде жовтим, а ClassA зеленим

В результаті цього на другому рівні leaf2 потрапить в чергу першим (так як має більший пріоритет), а leaf1 і leaf3 піддадуться випадковим вибором для визначення порядку проходження.

Алгоритм роботи HTB вельми логічна. Він був прийнятий багатьма виробниками програмного і апаратного забезпечення за свою гнучкість, надійність і відсутність властивих його попередникам недоліків. Завдяки величезній універсальності за допомогою нього можна будувати практично будь-які можливі ієрархії правил, в точності розмежовуючи і даючи можливість управляти потоками даних на досить низькому рівні.

Пікова швидкість Burst

Пікова швидкість Burst застосовується для того, щоб видати клієнту максимальну швидкість на певний проміжок часу.

Наприклад, вам потрібно прискорити завантаження сторінок, і при цьому обмежити швидкість на закачку файлів. Або потрібно зрідка передавати і приймати дані, але робити це з максимальною швидкістю.

Якщо клієнту спочатку дати велику швидкість, то він може поставити файли на закачку і залишити інших користувачів без інтернету. У цьому випадку нам допоможуть інструменти управління піковою швидкістю Burst.

Пікова швидкість володіє наступними параметрами:

  • burst-limit - швидкість, яка буде доступна відразу при підключенні;
  • burst-threshold - середня швидкість за останні burst-time секунд;
  • burst-time - час для підрахунку burst-threshold.

Момент, коли клієнту або класу потрібно видати максимальну швидкість, визначається наступним чином. Раз в 1/16 часу burst-time обчислюється завантаження каналу на вказане число секунд. Якщо середнє завантаження не дотягувала до burst-threshold, то клієнтові або класу виділяється зазначена в burst-limit швидкість до тих пір, поки вона не перевищить burst-threshold. Після цього діє обмеження max-limit до тих пір, поки знову не станеться зниження швидкості менш burst-threshold.

Встановимо наступні параметри limit-at = 128000/128000, max-limit = 256000/256000, burst-limit = 512000/512000, burst-treshold = 192000/192000, burst-time = 8 і поспостерігаємо, що трапиться з графіком завантаження каналу від одного клієнта:

Встановимо наступні параметри limit-at = 128000/128000, max-limit = 256000/256000, burst-limit = 512000/512000, burst-treshold = 192000/192000, burst-time = 8 і поспостерігаємо, що трапиться з графіком завантаження каналу від одного клієнта:

Даний графік характерний для випадку із закачуванням великого файлу по протоколу http. Після першої секунди середнє завантаження каналу буде дорівнює (0 + 0 + 0 + 0 + 0 + 0 + 0 + 512) / 8 = 64 kbps, що менше встановленого нами параметра burst-threshold. Після другої секунди середня швидкість буде дорівнює (0 + 0 + 0 + 0 + 0 + 0 + 512 + 512) / 8 = 128kbps. Після третьої секунди середня швидкість перевищить показник burst-threshold. У цей момент швидкість різко впаде до значення параметра max-limit і буде триматися на цьому рівні до тих пір, поки середнє завантаження каналу не стане менше burst-threshold і знову не відбудеться видача burst швидкості.

алгоритми Schedulers

Алгоритми Schedulers призначені для формування черг даних по якихось параметрах і подальшої передачі їх Шейпера. Наприклад, можна сформувати черги даних по пріоритетам пакетів, адресою джерела або одержувача. Деякі алгоритми мають функції обмеження швидкості.

PFIFO / BFIFO

Packet / Bytes (FIFO) алгоритм заснований на принципі перший прийшов-перший пішов. Той, хто прийшов першим, той і обслуговується першим. Прийшовши в такий чекає, поки обслуговування першим не буде закінчено, і так далі.

Для настройки алгоритму використовується єдиний параметр pfifo-limit (bfifo-limit). Він вказує на кількість байт, які можуть зберігатися у вихідному буфері. Хто не потрапив до буфер пакети будуть руйнуватися. Алгоритм застосовується для ethernet інтерфейсів.

SFQ

SFQ (Stochastic Fairness Queuing) - цей алгоритм можна назвати "випадково-чесним". Він застосовується тоді, коли потрібно надати всім TCP / UDP-підключень однакову можливість по передачі даних.

Для конфігурації SFQ використовується два параметри:

  • sfq-perturb - вказує через який час потрібно міняти хешірующій алгоритм, який визначає як будуть формуватися під-чергу запитів;
  • pcq-allot - визначає кількість байт в під-черзі.

SFQ працює за наступним принципом: алгоритм вилучення пакетів з підчерги одночасно випускає в вихідний інтерфейс pcq-allot кількість байт, а хешірующій алгоритм додає до кожного під-черзі pcq-allot байт, зберігаючи при цьому рівновагу і однакову довжину всіх підчерги. Схему роботи SFQ можна порівняти з м'ясорубкою, в якій через вихідну решітку одночасно з усіх дірок в однаковій кількості виходить фарш.

Алгоритм SFQ рекомендується використовувати у випадках, коли канал сильно завантажений і необхідно надати додаткам однакову можливість по передачі даних. Єдиним його недоліком є ​​те, що один додаток (наприклад торрент клієнт), відкривши багато потоків, може заглушити інші підключення.

PCQ

PCQ (Per Connection Queuing) є окремим випадком SFQ за тим винятком, що формування потоків в під-черзі буде відбуватися відповідно до якогось правилом. Це може бути адреса джерела / одержувача і порт джерела / одержувача. Таким чином можна рівномірно розподілити швидкість між учасниками незалежно від кількості відкритих підключень. Алгоритм надає наступні параметри для автоматичної інсталяції:

  • pcq-classifier - параметр для формування черг. pcq-classifier може набувати таких значень:
    • src-address - параметром для угруповання в субочереді служить адреса джерела;
    • src-port - параметром для угруповання в субочереді служить порт джерела;
    • dst-address - параметром для угруповання в субочереді є адреса призначення;
    • dst-port - параметром для угруповання в субочереді служить порт одержувача.
  • pcq-rate - число, яке вказує в якій пропорції розділяти трафік по чергах. За замовчуванням 0.
  • pcq-limit - довжина під-черзі;
  • pcq-total-limit - загальна кількість пакетів у всіх чергах.

pcq-limit - довжина під-черзі;   pcq-total-limit - загальна кількість пакетів у всіх чергах

Даний алгоритм є основним при необхідності розділити пропускну здатність порівну між класами або клієнтами. З його допомогою можна організувати динамічний шейпінг.

Класифікувавши під-черзі за адресою джерела ми отримаємо окрему чергу для кожного адреси, відповідно кількість потоків з одного адреси не буде грати ролі при доступі до вихідного інтерфейсу. Варто відзначити гнучкість такої класифікації. Застосувавши її по джерелу до зовнішнього інтерфейсу, в під-черзі будуть потрапляти зовнішні адреси, так як в цьому випадку параметр src-address буде все одно містити адресу, що є джерелом передачі даних. Застосувавши цю ж класифікацію до внутрішнього інтерфейсу, в черзі потраплять адреси клієнтів або класів.

Таким чином, задавши два правила, що відрізняються одним параметром, можна розділити порівну як вхідний, так і вихідний канали.

RED

RED (Random Early Detection) - алгоритм, покликаний вирівнювати пропускну здатність і згладжувати стрибки, контролюючи середній розмір черги. Коли її розмір досягає значення red-min-threshold алгоритм видаляє випадково обраний пакет. Число віддалених пакетів зростає зі збільшенням среднег розміру черги. Якщо розмір досягає значення red-max-threshold все пакети видаляються. Однак трапляються ситуації, коли реальний розмір черги (не середній) значно більше red-max-threshold. У такому випадку всі пакети, що виходять за рамки меж red-limit, видаляються.

Використання алгоритму вкрай не бажано при присутності UDP трафіку, так як в зв'язку з нерозбірливістю алгоритму при видаленні пакетів з черги і принципом роботи UDP-протоколу, дані можуть не дійти до одержувача.

На практиці алгоритми SFQ і RED використовується вкрай рідко.

типи черг

У Mikrotik передбачено два типи черг, рознесені на різні закладки в графічній утиліті Winbox:

  • Simple Queues;
  • Queue Trees.

Queue Trees

Queue Trees - особливий тип черг, який прямо відображає пристрій Шейпера HTB. Він дозволяє будувати дерева правил (класів) і на найнижчому рівні управляти пакетами.

Основні параметри Queue Trees:

  • burst-limit (ціле) - максимальна burst-швидкість;
  • burst-threshold (ціле) - середнє завантаження каналу, при якій дозволено видати burst-limit;
  • burst-time (час) - використовується для підрахунку середнього завантаження каналу;
  • flow (text) - потік, маркований в / ip firewall mangle;
  • limit-at (ціле) - гарантована швидкість;
  • max-limit (ціле) - максимальна швидкість;
  • name (text) - ім'я черги;
  • parent (text) - батько в ієрархії класів HTB;
  • priority (ціле: 1-8) - пріоритет черги;
  • queue (text) - тип черги. Здається в / queue type.

приклад

Створимо правило, яке дозволить отримати клієнтам локальної або віртуальної мережі максимальну швидкість і мінімальний час відгуку при зверненні до сайту www.drivermania.ru, проте розділить швидкість між усіма порівну.

1. Помітимо всі пакети, що йдуть від користувачів на адресу 66.148.73.54 і назад. Для цього потрібно створити 4 правила, два з яких помітять підключення в прямому і обратом напрямку, а інші два позначать пакети в цих підключеннях. Необхідно звернути увагу, що черги працюють саме з пакетами, а не поміченими підключеннями. Найчастіше це створює у новачків питання плану: "Я пишу все правильно, а воно не працює. Може це глюки?" Для таких шаманів нижче наведений приклад, як потрібно робити, щоб воно працювало.

ip firewall mangle add chain = forward src-address = 192.168.11.0 / 24 dst-address = 66.148.73.54 / 32 action = mark-connection new-connection-mark = users-con-up
ip firewall mangle add connection-mark = users-con-up action = mark-packet new-packet-mark = users-up chain = forward
ip firewall mangle add chain = forward src-address = 66.148.73.54 / 32 action = mark-connection new-connection-mark = users-con-down
ip firewall mangle add connection-mark = users-con-down action = mark-packet new-packet-mark = users-down chain = forward


2. Створимо два типи PCQ черзі, підключення в одній з яких ми будемо класифікувати по вхідному, а інші по вихідний адресою.

queue type add name = pcq-download kind = pcq pcq-classifier = dst-address
queue type add name = pcq-upload kind = pcq pcq-classifier = src-address


3. Створимо черзі для вхідного і вихідного трафіку

queue tree add name = Download parent = Local max-limit = 10240000 burst-limit = 200000 burst-time = 10
queue tree add parent = Download queue = pcq-download packet-mark = users-down
queue tree add name = Upload parent = Public max-limit = 160000 burst-limit = 200000 burst-time = 10
queue tree add parent = Upload queue = pcq-upload packet-mark = users-up


Як бачимо, пара правил і таке складне завдання, як динамічний шейпінг на певні адреси з наданням пікової швидкості була реалізована. На практиці зазвичай доводиться застосовувати більш складні правила в поєднанні один з одним, однак для демонстрації можливостей цей дуже добре підійшов.

Практично в Queue Trees ми можемо оперувати лише обмеженням швидкості. Інші параметри, такі як адреса джерела, отримувача, час доби, протокол, порти і т.д. вказуються в розділі Mangle-брандмауера.

Подібним способом також можна зробити хороший пінг на певні адреси, навіть під час серйозної завантаження каналу. Наведемо приклад таких правил для сервера www.cybernet.by.

Для цього потрібно створити чотири правила в Firewall:

# Позначаємо все підключення, у яких адреса одержувача 195.222.70.250 ім'ям cybernet-connection-up
ip firewall mangle add chain = prerouting dst-address = 195.222.70.250 action = mark-connection new-connection-mark = cybernet-connection-up passthrough = yes
# Позначаємо пакети в підключеннях cybernet-connection-up ім'ям cybernet-packet-up
ip firewall mangle add chain = forward connection-mark = cybernet-connection-up action = mark-packet new-packet-mark = cybernet-packet-up passthrough = yes
# Позначаємо все підключення у яких адреса джерела 195.222.70.250 ім'ям cybernet-connection-from
ip firewall mangle add chain = prerouting src-address = 195.222.70.250 action = mark-connection new-connection-mark = cybernet-connection-from passthrough = yes
# Позначаємо пакети в підключеннях cybernet-connection-from ім'ям cybernet-packet-from
ip firewall mangle add chain = forward connection-mark = cybernet-connection-from action = mark-packet new-packet-mark = cybernet-packet-from passthrough = yes


Наступним кроком створимо два правила в Queue Trees: одне для вхідного потоку, інша - для вихідного.

queue tree add name = "queue1" parent = global-out packet-mark = cybernet-packet limit-at = 0 queue = default priority = 1 max-limit = 50000 burst-limit = 0 burst-threshold = 0 burst-time = 0s
queue tree add name = "queue2" parent = global-in packet-mark = cybernet-packet-from limit-at = 0 queue = default priority = 1 max-limit = 50000 burst-limit = 0 burst-threshold = 0 burst- time = 0s


Вищеописані дії дозволять пакетам, що приходять і йдуть з адреси 195.222.70.250, потрапляти в пріоритетні черги і завжди мати гарантовані 50 Kbit / s.

Користуючись вищеописаним прикладом можна виділити для всіх онлайн ігор фіксовану гарантовану швидкість і створити ієрархію класів (правил), розподіливши, таким чином, пропускну здатність між усіма порівну.

Simple Queues

Simple Queues - це простий тип черг. Для їх використання не потрібно застосовувати промарковані пакети з Firewall, однак при цьому втрачається деяка гнучкість. В Simple Queues в якості основних параметрів, до яких слід застосовувати правило, відносяться адреси джерела і одержувача. В утиліті Winbox на вкладці Advanced можна виявити і деякі інші параметри, проте вони не відносяться до списку обов'язкових до заповнення.

Можливості простих черг Simple Queues:

  • робота з P2P-трафіком;
  • застосування черг в певних інтервалах часу;
  • приоритезация потоків;
  • використання в якості параметрів кілька ланцюжків пакетів, маркованих в / ip firewall mangle;
  • шейпінг бідеракціонного трафіку (одне правило для вхідного і вихідного потоку).

Варто зазначити, що починаючи з версії Mikrotik 2.9 в Simple Queues стало можливим вказувати параметр Parent для простих черг. Таким чином можна будувати практично аналогічні дерева класів, як і для Queue Trees за тим винятком, що тут оперувати будемо НЕ пакетами і потоками, а адресами.

Варто також пам'ятати, що Simple Queues не що інше, як окремий випадок Queue Trees. Тому створюючи нові правила варто звертати увагу не існує вже щось подібне, що оперує з тими ж адресами, портами або іншими параметрами. У разі подібності, пріоритет виявиться на стороні Queue Trees і ваші прості черзі просто не будуть працювати.

Перед початком складання правил в Simple Queues необхідно зрозуміти що є вхідний і вихідний трафік для нашого провайдера, нашого роутера і наших клієнтів. На малюнку зображена стандартна схема напрямки потоків трафіку від провайдера до нашого роутера і від роутера до клієнта. Варто звернути увагу, що вихідний трафік клієнта для нашого роутера буде входять і навпаки. Те ж саме можна сказати про нашого провайдера-вихідний трафік для нього-це входить для нас.

Список параметрів для конфігурації простих черг виглядає наступним чином:

  • burst-limit (ціле) - максимальна burst-швидкість;
  • burst-threshold (ціле) - середнє завантаження каналу при якій дозволено видати burst-limit;
  • burst-time (час) - використовується для підрахунку середнього завантаження каналу;
  • dst-address (IP адреса / маска) - адреса призначення;
  • dst-netmask (netmask) - маска підмережі для dst-address;
  • interface (text) - інтерфейс, для якого призначається правило;
  • limit-at (ціле / ціле) - гарантований канал;
  • max-limit (ціле / ціле) - максимальна величина каналу;
  • name (text) - ім'я правила;
  • p2p (any | all-p2p | bit-torrent | blubster | direct-connect | edonkey | fasttrack | gnutella | soulseek | winmx) - тип P2P-трафіку;
  • packet-marks (name; за замовчуванням: "") - ланцюжок пакетів, промаркованих в / ip firewall mangle;
  • parent (name) - ім'я батьківської черзі;
  • priority (ціле: 1-8) - пріоритет. 1 це більший, 8 це найменший;
  • queue (name / name; default: default / default) - ім'я черги з / queue type;
  • target-addresses (IP address / netmask) - вихідний адресу;
  • time (time-time, sat | fri | thu | wed | tue | mon | sun {+}; за замовчуванням: "") - застосувати чергу до часового інтервалу;
  • total-burst-limit (ціле) - максимальна burst швидкість в черзі global-total;
  • total-burst-threshold (ціле) - середня швидкість в черзі global-total;
  • total-burst-time (time) - використовується для підрахунку середнього завантаження каналу в черзі global-total;
  • total-limit-at (ціле) - гарантована швидкість в черзі global-total (входить + вихідний канали);
  • total-max-limit (ціле) - максимальна швидкість передачі даних в черзі global-total.

Вельми цікавою є можливість управляти вхідний і вихідний трафік разом. Це дозволяє клієнтам максимально використовувати проплачений канал.

приклад

Семуліруем для нашого клієнта канал з 64/42 kbit / s з гарантованою швидкістю 32/32 kbit / s в будні дні і 256/128 kbit / s з гарантованою швидкістю 64/64 kbit / s у вихідні.

Результатом нашої роботи буде два правила:

queue simple add target-addresses = 192.168.11.1 / 32 limit-at = 32000/32000 max-limit = 64000/42000 time = 00: 00: 00-00: 00: 00, mon, tue, wed, thu, fri
queue simple add target-addresses = 192.168.11.1 / 32 limit-at = 64000/64000 max-limit = 256000/128000 time = 00: 00: 00-00: 00: 00, sat, sun


У нашому випадку перша цифра в парі 32000/32000 означає що входить канал для клієнта, а друга - вихідний. Скориставшись наведеною нижче схемою можна інвертувати параметри щодо нашого роутера .


Скориставшись наведеною нижче схемою можна інвертувати параметри щодо нашого   роутера


При бажанні можна подбати про швидке відкриття сторінок, додавши параметри burst-limit і burst-time.

Дане правило можна було б трохи змінити, розділивши вказану швидкість між всією мережею 192.168.11.0.24. В цьому випадку для параметра queue потрібно вказати тип черги pcq-download, наведений вище в прикладі з Queue Trees.

Прості черзі дозволяють досить просто реалізувати можливість надання на певні адреси необмеженої швидкості.

Додамо до вищенаведеними правилами ще одне, яке буде виглядати наступним чином:

queue simple add target-addresses == 192.168.11.1 / 32 dst-address = 84.201.225.124 limit-at = 1024000/1024000 max-limit = 2048000/2048000


В результаті чого клієнт з адресою 192.168.11.1 отримає доступ до адресою 84.201.225.124 зі швидкістю від 1 до 2 Мбіт / с.

При виділенні гарантованої пропускної здатності потрібно пам'ятати, що сума limit-at всіх клієнтів повинна бути менше або дорівнює загальній пропускної здатності каналу. Тільки в цьому випадку можна говорити про якусь гарантованої швидкості.

Якщо у вашого сервера неправильно встановлені годинник або, наприклад, села батарейка на материнській платі, то можна скористатися вбудованою в Mikrotik можливістю синхронізації часу із зовнішнім джерелом.

Ще одне зауваження пов'язано з тим, що безпосередньо вписати URI-адреса в полі введення IP-адреси не представляється можливим, але іноді необхідно, так як багато сайтів мають динамічні адреси. Дану проблему можна вирішити, прописавши потрібну адресу ресурсу в розділі / ip firewall address-list і давши йому ім'я, по якому надалі можна звернутися.

Дану проблему можна вирішити, прописавши потрібну адресу ресурсу в розділі / ip firewall address-list і давши йому ім'я, по якому надалі можна звернутися

Як бачите, MikroTik RouterOS надає величезні можливості по управлінню трафіком. Можна створювати різні ієрархії правил і управляти потоками даних на досить низькому рівні. Знання основ шейпінгу допоможе вам реалізувати складні завдання з управління трафіком при побудові мереж рівня підприємства або провайдера.

Може це глюки?

Новости


 PHILIP LAURENCE   Pioneer   Антистресс   Аромалампы   Бизнес   Игры   Косметика   Оружие   Панно   Романтика   Спорт   Фен-Шуй   Фен-Шуй Аромалампы   Часы   ЭКСТРИМ   ЭМОЦИИ   Экскурсии   визитницы   подарки для деловых людей   фотоальбомы  
— сайт сделан на студии « Kontora #2 »
E-mail: [email protected]



  • Карта сайта