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 для контролю декількох параметрів: пікової швидкості, середньої швидкості, варіації інтервалу надходження чарунок і обсягу пульсації.
За своєю суттю алгоритм «дірявого відра» – це не що інше, як однолінійна система масового обслуговування з постійним часом обслуговування. Цей механізм перетворює нерівномірний потік пакетів від процесів користувача в рівномірний потік пакетів у мережі з постійною швидкістю, що не залежить від нерівномірності вхідного потоку.
Як видно з опису, алгоритм «дірявого відра» «суворіше» контролює пульсації трафіка, ніж алгоритм «кошика маркерів». Алгоритм «кошика маркерів» дозволяє трафіку в періоди зниженої активності накопичувати обсяг пульсації, а потім використовувати ці накопичення в періоди сплесків трафіка. В алгоритмі «дірявого відра» такої можливості немає, тому що лічильник С скидається в нуль примусово наприкінці кожного періоду Т незалежно від того, скільки байтів надійшло від користувача в мережу протягом цього періоду. Ще одне розходження двох алгоритмів полягає в тому, що при переповненні «маркерного кошика» алгоритм ігнорує маркери, але ніколи не відкидає пакети. Алгоритм «дірявого відра», навпаки, при переповненні викидає самі пакети.