НОУ ІНТУІТ, Лекція, Обмеження смуги пропускання трафіку

Розглянути можливі способи обмеження смуги пропускання для вхідного та вихідного трафіку.

  1. Обмежити смугу пропускання для вхідного трафіку до 2 Мбіт/с незалежно від типу трафіку.
  2. Обмежити смугу пропускання обох напрямках до 2 Мбіт/с незалежно від типу трафіку.

Опис практичної роботи

Обмеження смуги пропускання для вхідного трафіку

Необхідно створити канал, який обмежує весь трафік, що проходить через нього, до 2 Мбіт/с, незалежно від типу трафіку.

Traffic Management -> Traffic Shaping -> Pipes -> Add -> Pipe

лекція

лекція

add Pipe total_in LimitKbpsTotal=2000

Правила каналів (Pipe Rules)

Який трафік повинен проходити через канал, вказується в Правилі каналу.

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

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

Traffic Management -> Traffic Shaping -> Pipe Rules -> Add -> Pipe Rule

обмеження

смуги

add PipeRule SourceInterface=lan SourceNetwork=lan/lan_net DestinationInterface=wan1 DestinationNetwork=all-nets Service=all_services ReturnChain=total_in Name=Inbound

Обмеження смуги пропускання в обох напрямках

Використання одного і тогож каналу для обох напрямків не вирішує проблему.

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

У попередньому прикладі смуга пропускання обмежена тільки для вхідного напрямку. У більшості випадків необхідно обмежувати саме трафік, що входить. Але що робити, якщо необхідно обмежити вихідний трафік так само?

Приміщення std-in у прямий ланцюжок (forward chain) не принесе результату, якщо потрібно отримати обмеження до 2 Мбіт/с для вихідного трафіку окремо від обмеження до 2 Мбіт/с для вхідного. Якщо крім вихідного трафіку (2 Мбіт/с) через канал проходить вхідний трафік (2 Мбіт/с), загальний потік трафіку складе 4 Мбіт/с. Оскільки обмеження каналу становить 2 Мбіт/с фактична величина потоку буде близька до значення 1 Мбіт/с у кожному напрямку.

Збільшення загального обмеження до 4 Мбіт/с не вирішить проблему, оскільки для одного каналу це не означає обмеження 2 Мбіт/с для вхідного та 2 Мбіт/с для вихідного трафіку. В результаті може бути 3 Мбіт/с вихідного та 1 Мбіт/с вхідного трафіку, оскільки це також становить 4 Мбіт/с.

Для керування смугою пропускання в обох напрямках рекомендується використовувати два окремі канали: один для вхідного, а інший для вихідного трафіку. В даному сценарії для досягнення оптимального результату для кожного каналу встановлено обмеження 2 Мбіт/с.

Необхідно створити два канали, кожен з яких обмежують весь трафік, що проходить через нього, до 2 Мбіт/с, незалежно від типу трафіку. Додатково до каналуствореному раніше, додаємо канал для вихідного трафіку.

Traffic Management -> Traffic Shaping -> Pipes -> Add -> Pipe

лекція

інтуіт

add Pipe total_out LimitKbpsTotal=2000

Правила каналів (Pipe Rules)

Traffic Management -> Traffic Shaping -> Pipe Rules -> Add -> Pipe Rule

інтуіт

смуги

add PipeRule SourceInterface=lan SourceNetwork=lan/lan_net DestinationInterface=wan1 DestinationNetwork=all-nets Service=all_services ReturnChain=total_in ForwardChain=total_out Name=in_out

Обмеження смуги пропускання залежно від типу трафіку

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

У попередніх прикладах здійснювалося обмеження трафіку всім вихідних сполук. Що робити, якщо потрібно обмежити навігацію по веб-сторінках більше, ніж решта трафіку? Припустимо, що ширина загальної смуги пропускання – 250 кбіт/с, з яких 125 кбіт/с мають бути виділені для веб-трафіку.

Якщо створити два канали, один http -in для обмеження вхідного веб-трафіку з обмеженням в 125 кбіт/с, а інший канал all-in для решти трафіку з обмеженням в 250 кбіт/с, то бажаний результат досягнутий не буде, оскільки результуючий обсяг трафіку дорівнюватиме сумі обмежень у кожному каналі, тобто. 375 кбіт/с.

Для вирішення подібного завдання слід створити ланцюжок, що складається з каналу all-in і http-in для веб-трафіку. Вхідний веб-трафік спочатку проходить через http-in, максимальне обмеження в якому 125 кбіт/с. Далі трафік проходить через канал all-in разом з рештою вхідного трафіка. Для другого каналувстановлено обмеження 250 кбіт/с.

Якщо веб-трафік повністю споживає 125 кбіт/с, ці 125 кбіт/с займуть половину каналу http-in, 125 кбіт/с, що залишилися, буде використовуватися для решти трафіку. Якщо веб-трафік відсутній, всі 250 кбіт/с, відведені для http -in, можуть використовуватися для іншого трафіку.

Це не забезпечує смугу пропускання, що гарантується для веб-трафіку, але встановлює обмеження для нього до 125 кбіт/с і гарантує смугу пропускання 125 кбіт/с для решти трафіку. Для веб-трафіку в каналі http-in застосовуються стандартні правила: трафік проходитиме на загальних підставах нарівні з іншим трафіком. Це означає обмеження 125 кбіт/с, при цьому можлива нижча швидкість, якщо канал завантажений.

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

Traffic Management -> Traffic Shaping -> Pipes -> Add -> Pipe

лекція

add Pipe http_in LimitKbpsTotal=125

add Pipe all_in LimitKbpsTotal=250

Правила каналів (Pipe Rules)

Traffic Management -> Traffic Shaping -> Pipe Rules -> Add -> Pipe Rule

смуги

смуги

смуги

смуги

лекція

add PipeRule SourceInterface=lan SourceNetwork=lan/lan_net DestinationInterface=wan1 DestinationNetwork=all-nets Service=http-all ReturnChain=http_in,all_in Name=http_shaping

add PipeRule SourceInterface=lan SourceNetwork=lan/lan_net DestinationInterface=wan1 DestinationNetwork=all-nets Service=all_services ReturnChain=all_in Name=all_shaping

Додамо до попереднього прикладу вимогу, що трафік SSH повинен мати вищийпріоритет у порівнянні з рештою трафіку. Для цього додамо Правило каналу спеціально для SSH і встановимо у правилі більший пріоритет – наприклад, 2. У цьому новому правилі ми вказуємо канали, які використовуються для решти трафіку.

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

Вказівка ​​обмеження пріоритету гарантує мінімальну кількість смуги пропускання для цього пріоритету. Трафік, що проходить через канал, отримає гарантовану смугу пропускання, вказану для пріоритету за рахунок урізання трафіку з нижчим пріоритетом.

Якщо вихідний трафік із пріоритетом 2 перевищує 100 кбіт/с, то пріоритет тієї частини трафіку, яка перевищує дане обмеження, знижується до пріоритету негарантованої доставки (best effort). Весь трафік із пріоритетом негарантованої доставки (best effort) буде відправлено в порядку надходження.

Traffic Management -> Traffic Shaping -> Pipes -> Add -> Pipe