Управління інтенсивністю вхідного і вихідного трафіка
Управління інтенсивністю вхідного і вихідного трафіка
1 Функції управління інтенсивністю
З метою забезпечення функцій якості обслуговування весь трафік, що надходить до мережі постачальника послуг, має проходити суворий контроль на межі мережі на предмет відповідності його інтенсивності параметрам, що обумовлені у трафік-контракті (SLA) та які підтримуються мережею (рис. 1). Цей набір параметрів іноді називається профілем потоку, а управління інтенсивністю, що приводить потік у відповідність до його профілю – профілюванням трафіка.
Рисунок 1 – Схема управління доступом
Відповідно до наведеної схеми організації управління доступом (рис. 1) потік даних, який виділено класифікатором із вхідного потоку трафіка на підставі певної ділянки заголовка пакета, направляється на вхід вимірювача. Вимірювач порівнює часові характеристики потоку з тими, що заявлено в трафік-контракті, використовуючи, наприклад, алгоритм «кошика маркерів». Надалі ця інформація подається на входи маркувальника і фільтра/формувача.
Маркувальник встановлює значення, наприклад, поля DSCP пакета, зараховуючи його до певного агрегатора поведінки (Behavior Aggregate, BA) – класу обслуговування. Значення DSCP залежить як від результатів класифікації, так і від стану вимірювача. Наприклад, пакети, параметри яких не відповідають профілеві потоку, маркуватимуться значенням DSCP, що дає менший пріоритет в обслуговуванні.
Надалі промарковані пакети надходять на вхід фільтра/формувача, який власне і реалізує функції управління інтенсивністю трафіка. Управління інтенсивністю трафіка можна досягнути за рахунок застосування двох функцій: функції обмеження трафіка (traffic policing) і функції вирівнювання трафіка (traffic shaping,TS). Незважаючи на однакове призначення, ці функції відрізняються способом обробки трафіка в момент порушення параметрів профілю (рис. 2). У табл. 1 наведена порівняльна характеристика функції обмеження і функції вирівнювання трафіка.
а) traffic shaping
б) traffic policing
Рисунок 2 – Приклад управління інтенсивністю трафіка
Профілювання трафіка на основі правил політики (policing) у випадку порушення параметрів профілю (наприклад, перевищення тривалості пульсації або середньої швидкості) відкидає пакет або маркує його зі зниженням пріоритету. Відкидання деяких пакетів знижує інтенсивність потоку і приводить його параметри у відповідність до тих, що зазначені у профілі. Маркування пакетів без відкидання потрібне для того, щоб пакети все-таки були обслуговані цим вузлом (або наступними за потоком), але зі зниженою якістю.
Функція вирівнювання трафіка (shaping) призначена для надання трафіку, який вже пройшов профілювання, потрібної «форми» у часі і реалізується шляхом буферизації пакетів. В основному за допомогою цієї функції прагнуть згладити пульсації трафіка, і тим самим, зменшити черги на вузлах мережі, які оброблятимуть трафік далі за потоком. Вирівнювання доцільне використовувати для відновлення часових співвідношень трафіка аплікацій, що працюють з рівномірними потоками, наприклад, мовних аплікацій.
трафік інтенсивність управління
Таблиця 1 – Порівняльна характеристика функції обмеження і функції вирівнювання трафіка
Функція обмеження трафіку |
Функція вирівнювання трафіка |
|
Характе-ристика |
Обмежник інтенсивності методом відкидання при перевищенні заданої швидкості |
Обмежник- вирівнювач інтенсивності методом затримки (буферизації пакетів) і подальшого пересилання з узгодженою інтенсивністю при перевищенні заданої швидкості |
Призначення |
Обмеження трафіка до швидкості контракту з метою захисту мережі від можливого перевантаження. Обмеження трафіка може допомогти й у випадку запобігання DOS атакам |
1. На границі двох мереж доцільно на виході першої реалізувати вирівнювання, щоб уникнути втрат на вході другої мережі під час виконання функції обмеження трафіка. 2. У випадку, якщо десь далі в мережі можливе переповнення вхідних черг, а QoS там неможлива. Обмеження швидкості доступу до контрактних значень |
Марку-вання пакетів |
Підтримується, може змінити маркування пакета |
Не підтримується |
Область застосування |
Зазвичай на вході першого мережного пристрою (маршрутизатора, комутатора). У загальному випадку може виконуватися як на вхідних, так і на вихідних портах. Найчастіше на вхідних, тому що в цьому випадку пакети, що відкидаються, не доходять до процесу маршрутизації, й у такий спосіб заощаджуються ресурси |
Завжди на вихідному інтерфейсі. Зазвичай реалізується на виході маршрутизатора, що граничить з іншою мережею |
Приклад |
механізм Committed Access Rate (CAR), Class-Based Policing |
GTS, Class-Based Shaping, DTS, FRTS |
2 Алгоритм «кошика маркерів»
Для перевірки відповідності вхідного трафіку заданому профілю і механізм обмеження трафіку, і механізм вирівнювання трафіку вимагають вимірювання параметрів потоку. При цьому основними параметрами, якими оперують у процесі вимірювання (дозування) трафіка, є такі:
Т – період усереднення швидкості;
CIR (Committed Information Rate) біт/с – середня або узгоджена швидкість, яку трафік не має перевищувати;
Bc, байт – обсяг пульсації, що відповідає середній швидкості CIR і періоду Т, (узгоджений або стандартний розмір сплеску);
Вe, байт – припустиме перевищення обсягу пульсації (розширений розмір сплеску).
Існує два основних алгоритми вимірювання трафіка – алгоритм «кошика маркерів» (token bucket) і алгоритм «дірявого відра» (leaky bucket). Перший переважно використовується для контролю параметрів трафіка в IP-мережах, а другий – у мережах ATM і Frame Relay. Розглянемо їх у загальному вигляді.
Алгоритм «кошика маркерів» дозволяє оцінити й обмежити середню швидкість і величину пульсації потоку пакетів. Цей алгоритм базується на порівнянні потоку пакетів з деяким еталонним потоком маркерів, що заповнюють умовний кошик – «кошик маркерів» (рис. 3).
Під маркером у цьому випадку розуміється якийсь абстрактний об'єкт, носій «порції» інформації. Генератор маркерів періодично з постійним інтервалом w направляє черговий маркер у «кошик» з обмеженим обсягом b байт. Усі маркери мають однаковий обсяг m байт, а генерація маркерів відбувається так, що «кошик» заповнюється зі швидкістю r біт/с, де r = 8m/w. Ця швидкість r і є максимальною середньою швидкістю для трафіка пакетів, а обсяг «кошика» відповідає максимальному розмірові пульсації потоку пакетів, тобто з використанням уведених вище термінів r=CIR, b=Bc. Якщо сумарний обсяг маркерів у «кошику» дорівнює b, то надходження маркерів тимчасово припиняється. Фактично «кошик маркерів» є лічильником, що збільшується на m кожні w секунд.
При застосуванні алгоритму «кошика маркерів» профіль трафіка визначається середньою швидкістю r і обсягом пульсації b. Порівняння еталонного і реального потоків виконує сервер – абстрактний пристрій, що має два входи. Вхід 1 пов'язаний з чергою пакетів, а вхід 2 – з «кошиком маркерів». Сервер також має вихід, на який він передає пакети з вхідної черги пакетів. Вхід 1 сервера моделює вхідний інтерфейс маршрутизатора, а вихід – вихідний інтерфейс. Під час передавання пакета з «кошика» вилучаються маркери загальним обсягом у М байт (з точністю до розміру одного маркера, тобто до m байт).
Рисунок 3 – Алгоритм «кошика маркерів»
Якщо ж «кошик» заповнений недостатньо, то пакет обробляється одним із двох описаних нижче нестандартних способів, вибір якого залежить від мети застосування алгоритму.
Перший варіант, алгоритм «кошика маркерів» застосовується для згладжування трафіка, у цьому випадку пакет просто затримується в черзі на деякий додатковий час, очікуючи надходження в «кошик» потрібної кількості маркерів. Отже, навіть якщо в результаті пульсації в систему приходить велика група пакетів, з черги пакети виходять більш рівномірно, у темпі, що задається генератором маркерів.
Другий варіант, алгоритм «кошика маркерів» використовується для обмеження трафіка, тоді пакет відкидається як такий, що не відповідає профілю. Більш м'яким рішенням може бути повторне маркування пакета зі зниженням його статусу при подальшому обслуговуванні. Наприклад, пакет можна позначити особливою позначкою (відкидати за необхідності), у результаті чого під час перевантажень маршрутизатори відкидатимуть цей пакет у першу чергу. При диференційованому обслуговуванні пакет можна перевести в інший клас, який обслуговується з нижчою якістю.
Сутність алгоритму «кошика маркерів» полягає в тому, що він дозволяє передачу даних пачками, але обмежує тривалість пачки. Нехай пропускна здатність вихідного інтерфейсу, що моделюється виходом сервера, дорівнює R. Це означає, що сервер не може передавати дані на вихід зі швидкістю, що перевищує R біт/с. Можна показати, що на будь-якому інтервалі часу t середня швидкість потоку, який виходить із сервера, дорівнює мінімальній серед двох величин: R і r+ b/t. При великих значеннях t швидкість вихідного потоку наближається до r – це і свідчить про те, що алгоритм забезпечує бажану середню швидкість. У той же час протягом невеликого часу t пакети можуть виходити із сервера зі швидкістю, яка перевищує r. Якщо r+ b/t < R, то вони виходять із сервера зі швидкістю r+ b/t, у протилежному випадку інтерфейс обмежує цю швидкість до величини R. Період часу t відповідає пульсації трафіка. Ця ситуація спостерігається тоді, коли протягом деякого часу пакети не надходили до сервера, так що «кошик» цілком заповнився маркерами (тобто часу, більшого ніж b/r). Якщо після цього до входу сервера надійде велика послідовність пакетів, які йдуть один за одним, то ці пакети передаватимуться на вихід зі швидкістю вихідного інтерфейса R також один за одним, без інтервалів. Максимальний час такої пульсації складає b/(R-r) секунд, після чого обов'язково наступить пауза, яка необхідна для наповнення спустілого «кошика». Обсяг пульсації складає Rb/(R-r) байт. З наведеного співвідношення видно, що алгоритм «кошика маркерів» починає погано працювати, якщо середня швидкість r обирається близькою до пропускної здатності вихідного інтерфейса. У цьому випадку пульсація може продовжуватися дуже довго, що знецінює алгоритм.
3 Алгоритм «дірявого відра»
Для контролю угоди про параметри якості обслуговування всі комутатори мережі Frame Relay підтримують алгоритм «драного відра» (leaky bucket). Цей алгоритм, як і алгоритм «кошика маркерів», дозволяє контролювати середню швидкість і пульсацію трафіка, однак робить це у інший спосіб.
Алгоритмом передбачається, що трафік контролюється кожні Т секунд. На кожному з цих інтервалів часу трафік повинний мати середню швидкість не більш обумовленої швидкості CIR. Швидкість контролюється, базуючись на підрахунку обсягу даних, що надійшли за період Т. Якщо цей обсяг менше або дорівнює Bc, то фактична швидкість трафіка була менше Вс/Т, тобто менше CIR. Перевищення обсягом пульсації обумовленого значення Вс на величину Be вважається «м'яким» порушенням – пакети-порушники мають бути позначені DE=1, але не відкинуті. При перевищенні обсягом пульсації величини Вc + Вe кадри відкидаються.
Алгоритм (рис. 4) використовує лічильник байт С, які надійшли від користувача. Кожні Т секунд цей лічильник зменшується на величину Вс (або ж скидається в 0, якщо значення лічильника менше, ніж Вс). Це найчастіше ілюструється «відром», з якого дискретно, кожні Т секунд, витікає обсяг, рівний мінімальному з чисел Вс або С (рис. 4). Усі кадри, дані яких не збільшили значення лічильника вище порогу Вс, пропускаються в мережу зі значенням позначки DE=0. Кадри, дані яких призвели до значення лічильника, більшого за Вс, але меншого за Bc+Be, також передаються в мережу, але з позначкою DE=1. І, нарешті, кадри, що призвели до значення лічильника, більшого за Bc+Be, відкидаються комутатором.
Рисунок 4 – Алгоритм «дірявого відра»
Користувач може домовитися про підтримку не всіх параметрів якості обслуговування для даного віртуального каналу, а тільки деяких. Наприклад, можна використовувати тільки параметри CIR і Bc. Цей варіант дає якісніше обслуговування, тому що кадри ніколи не відкидаються комутатором відразу. Комутатор тільки позначає кадри, що перевищують поріг Bc за час Т, позначкою DE=1. Якщо мережа не зазнає перевантажень, то кадри такого каналу завжди надходять до кінцевого вузла, навіть якщо користувач постійно порушує договір з мережею.
Популярним є ще один різновид замовлення на обслуговування, при якому обумовлюється тільки поріг Be, а швидкість CIR=0. Усі кадри такого каналу відразу ж позначаються позначкою DE=1, але відправляються в мережу, а при перевищенні порога Be відкидаються. Контрольний інтервал часу Т в цьому випадку обчислюється як Be /R, де R – швидкість доступу до каналу.
Алгоритм допускає різні модифікації, наприклад, використання більшої кількості порогів обсягу пульсації, використання замість обсягу пульсації значення максимальної швидкості і т.п.
Одна з модифікацій алгоритму «дірявого відра» за назвою Generic Cell Rate Algorithm (GCRA) застосовується в мережах ATM для контролю декількох параметрів: пікової швидкості, середньої швидкості, варіації інтервалу надходження чарунок і обсягу пульсації.
За своєю суттю алгоритм «дірявого відра» – це не що інше, як однолінійна система масового обслуговування з постійним часом обслуговування. Цей механізм перетворює нерівномірний потік пакетів від процесів користувача в рівномірний потік пакетів у мережі з постійною швидкістю, що не залежить від нерівномірності вхідного потоку.
Як видно з опису, алгоритм «дірявого відра» «суворіше» контролює пульсації трафіка, ніж алгоритм «кошика маркерів». Алгоритм «кошика маркерів» дозволяє трафіку в періоди зниженої активності накопичувати обсяг пульсації, а потім використовувати ці накопичення в періоди сплесків трафіка. В алгоритмі «дірявого відра» такої можливості немає, тому що лічильник С скидається в нуль примусово наприкінці кожного періоду Т незалежно від того, скільки байтів надійшло від користувача в мережу протягом цього періоду. Ще одне розходження двох алгоритмів полягає в тому, що при переповненні «маркерного кошика» алгоритм ігнорує маркери, але ніколи не відкидає пакети. Алгоритм «дірявого відра», навпаки, при переповненні викидає самі пакети.