Для поліпшення функціональних можливостей UBR в нього було введено ряд механізмів керування трафіком, в тому числі EPD (раннє відкидання пакетів) та PPD (відкидання залишків пакетів). Даний тип сервісу отримав назву UBR+. Крім того існує ще так званий алгоритм RED. Спочатку він був запропонований для пакетних мереж: він добре себе зарекомендував при роботі с протоколом TCP.
RED в мережахTCP/IP
TCP – протокол, що орієнтований на з’єднання, в зв’язку з чим він має ряд особливостей. TCP починає свою роботу з процедури встановлення з’єднання і узгодження (синхронізації) основних параметрів, таких як розмір вікна підтвердження та максимальний розмір пакету. Після синхронізації TCP відразу посилає стільки пакетів, скільки допускає розмір вікна підтвердження.
Подібний вибух навантаження не є небезпечним для швидкісних мереж. Проте в комплексних мережах, де можуть існувати низькошвидкісні ділянки і перевантажені комутатори, непередбачена поява великої кількості пакетів може призвести до істотного зниження пропускної здатності (що зумовлено втратами трафіка і наступною його ретрансляцією). В сучасних реалізаціях протоколу TCP уникнути цих неприємностей дозволяє механізм Slow Start.
У випадку використання Slow Start протокол TCP, після синхронізації пакетів, спочатку відсилає один пакет, потім (коли отримано підтвердження на його доставку) – два, чотири, і так до тих пір, поки кількість пакетів, що передаються одночасно, не буде відповідати розмірам вікна підтвердження. При втраті хоча б одного з пакетів джерело починає процедуру Slow Start знову. В різних реалізаціях TCP (TCP Tahoe, TCP Reno) кількість пакетів, з якої починається передача, і коефіцієнт збільшення кількості пакетів можуть динамічно залежати від часу поширення пакетів (Round-trip time – RTT). Це дає можливість адекватно реагувати на стан мережі.
Алгоритм RED дозволяє контролювати навантаження мережі за допомогою вибіркового випадкового знищення деяких пакетів, що спонукає протоколи, схожі на TCP, зменшувати швидкість передачі. При втраті хоча б одного пакету протокол TCP починає процедуру Slow Start спочатку: це знижує об’єм трафіку, що надходить в мережу. Найдоцільніше не чекати повного перевантаження мережі (тоді буде видалений весь трафік), а вже на підступах до небезпечної ділянки вибірково знищувати окремі пакети, інформуючи тим самим джерела навантаження про поточну пропускну здатність мережі.
Крім того, алгоритм RED в мережах TCP/IP допомагає позбавитись від проблеми, відомої під назвою “тотальна синхронізація”. Вона виникає, коли декілька джерел, що працюють через один і той же перевантажений сегмент мережі, дізнаються про втрати пакетів. Як наслідок, ці джерела одночасно зменшують швидкість, а потім одночасно її нарощують, що призводить до нового перевантаження і втрачання пакетів. Таким чином, стан мережі періодично змінюється від простою до перевантаження.
RED дозволяє запобігти тотальній синхронізації, вибірково знищуючи пакети певних джерел. А оскільки за чисто ймовірнисних причин великі пакети знищуються частіше ніж малі, то можна сподіватися на справедливий розподіл смуги пропуску. Звичайно, селективне знищення пакетів приводить до подібного результату, тільки коли джерело має який-небудь інтелектуальний механізм контролю за швидкістю передачі.
RED в мережах ATM.
Все вищезазначене відноситься і к роботі протоколу TCP через ATM. Тому алгоритм RED можна ефективно використовувати для керування передачею трафіка TCP/IP в мережах ATM. Крім того, в мережах ATM він використовується в якості механізму керування трафіком, що доповнює вже існуючі методи.
Керування трафіком є ключовим компонентом стабільної роботи ATM-мереж. В загальному випадку є два типи керування: превентивний та адаптивний.
Превентивний контроль базується на дотриманні трафік-контракту. Джерело трафіка повинно відповідати заздалегідь визначеним рамкам якості обслуговування за допомогою, наприклад, широковідомих механізмів контролю Leaky Bucket та Virtual Scheduling. Превентивний контроль застосовується в основному для CBR (сервіс класу A) та VBR (сервіс класу B), в яких характеристики трафіку відомі або піддаються прогнозуванню.
Адаптивний контроль заснований на використанні вільної смуги пропуску. Звичайно він реалізується для ABR (сервіс класу C) та UBR (сервіс класу D), які не мають жорстких вимог до якості обслуговування. Адаптивний контроль здійснюється за допомогою зворотнього зв’язку між джерелом та комутатором ATM, який може бути явним (для передачі інформації про перевантаження використовуються спеціальні чарунки, як в ABR) або прихованим (поведінка джерела трафіка змінюється у відповідності до змін поведінки мережі).
Алгоритм RED в мережах ATM використовує прихований зворотній зв’язок для повідомлення про перевантаження шляхом вибіркового знищення чарунок користувача. Замість того, щоб чекати перевантаження і переповнення буферу, наслідком чого стане знищення всіх даних, що надходять, RED знищує частину чарунок. Їх кількість і частота знищення визначаються параметром, що має назву ймовірність знищення. Цей параметр розраховується кожен раз у відповідності до поточного стану ресурсів ATM-комутатора, тобто фактично визначається довжиною черги на обслуговування трафіка в ATM-мережі.
Середня довжина черги (QueueLength) визначається так:
QueueLength=(1-1/2n)*PreviousQueueLength+CurrentQueueLength*1/2n.
Тут PreviousQueueLength – довжина черги на попередньому підрахунку; CurrentQueueLength – поточна довжина черги; n – ваговий коефіцієнт (n>=1), який визначає адміністратор мережі з наступних міркувань.
Якщо n має мале значення, середня довжина черги QueueLength фактично визначається поточною довжиною черги CurrentQueueLength. Тоді алгоритм RED чітко і швидко реагує на будь-які зміни поточної довжини черги, що дозволяє ATM-комутатору практично миттєво позбавитись від зайвих чарунок при найменшій загрозі перевантаження. Проте при дуже малих значеннях n RED почне необгрунтовано скидувати чарунки навіть при невеликих часових збільшеннях черг, які не є небезпечними і можуть бути оброблені без втрат.
Якщо коефіцієнт n має велике значення, середня довжина черги QueueLength стає функцією від попередньої довжини чеги PreviousQueueLength. Алгоритм RED досить повільно реагує на зміни довжини черги, що дозволяє ATM-комутаторам неначе згладжувати “піки” та ”провалля” трафіка без знищення чарунок. Але при дуже великих значеннях n RED може стати настільки повільним, що буде продовжувати знищення чарунок, навіть коли довжина черги стане менше за мінімальний поріг спрацювання цього алгоритму.
Роботу алгоритму RED можна описати так:
Якщо середня довжина черги QueueLength менше або дорівнює мінімально допустимому значенню порога спрацювання MinThreshold алгоритму RED (QueueLength<MinThreshold), то чарунка, що надходить, буде обслуговуватися ATM-комутатором. Якщо середня довжина черги QueueLength знаходиться в межах деякого діапазону (MinThreshold<QueueLength<MaxThreshold), то RED почне знищувати деяку частину чарунок. Доля чарунок, що будуть знищуватись, визначається значенням ймовірності знищення, яке розраховується у відповідності з станом ресурсів комутатора. Перерахування ймовірності знищення та сам процес знищення чарунок буде відбуватися до тих пір, поки значення середньої довжини черги QueueLength не буде нищим за мінімальний поріг MinThreshold.