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.
Ймовірність знищення пакетів підраховується так:
Pa=Pb/(1-Count*Pb)
Тут: Pa – ймовірність знищення, Pb =Pmax * (QueueLength - MinThreshold)/( MaxThreshold - MinThreshold) * PacketSize/MaxPacketSize, де
Pmax – максимальна ймовірність знищення чарунок; Count – кількість чарунок, що є в черзі на момент останнього знищення; PacketSize – довжина пакету протоколу, інкапсульованого в ATM; MaxPacketSize – максимальна довжина пакету, інкапсульованого в ATM.
Якщо середня довжина черги QueueLength більше або рівна максимальнодопустимому значенню MaxThreshold (QueueLength >=MaxThreshold), то чарунка, що надійшла на вхід комутатора обов’язково буде знищена.
Як видно з формул, ймовірність знищення чарунок залежить від довжини інкапсульованих пакетів. Відповідно, великі пакети (наприклад, при перекачуванні файлів по FTP) будуть знищуватись частіше, ніж маленькі (наприклад, ті, що передаються по Telnet).
В мережах ATM використовуються дві модифікації алгоритму RED: C-RED (Cell RED) працює з кожною чарункою, P-RED (Packet RED) – з групою чарунок, що утворюють AAL5 PDU.
Алгоритм C-RED враховує кожну окрему чарунку і, таким чином, має повну картину стану мережі в кожний поточний момент. Недолік даного алгоритму – складність його реалізації при роботі на великих швидкостях. У високошвидкосних мережах ATM процедура перерахування середньої довжини черги QueueLength при появі кожної нової чарунки може стати достатньо складною і дорогою, тому в них звичайно використовується P-RED.
Алгоритм P-RED працює з групою чарунок, які утворюють один пакет, інкапсульований в ATM (наприклад, IP-пакет). Перерахування середньої довжини черги здійснюється для всіх чарунок пакету лише один раз – в момент надходження першої чарунки. P-RED не є таким гнучким, як C-RED, проте він може бути реалізований на найшвидших каналах.
Серед недоліків алгоритму RED при роботі в мережі ATM слід відзначити такий. RED відкидає лише одну або декілька чарунок з тих, які утворюють вихідний пакет. Передача по мережі інших чарунок (неповного пакету) продовжується, вони будуть знищені лише в приймачі на рівні адаптації AAL5. Цю проблему дозволяє вирішити алгоритм Partial Packet Discard PPD, який забезпечує видалення неповних пакетів.
В алгоритмі RED ймовірність знищення пакету є функцією від його довжини. Розміри пакетів, що передаються, визначаються динамічно в процесі передачі через ATM-комутатор. В AAL5 границі пакетів визначаються полями PTI в заголовку чарунки, що відмічає останню чарунку пакету. Оскільки визначити розмір ще не прийнятого пакету неможна, то його вважають рівним розміру останнього пакету, що був прийнятий по даному віртуальному каналу. Таким чином, можна використовувати залежність знищення чарунки від кількості чарунок, що утворюють вихідний пакет AAL5 PDU, тобто від розміру пакету (що не має місце в алгоритмі EPD).
У випадку широкого діапазону коливання навантаження алгоритм RED може не відреагувати на переповнення буферу, тому він звичайно застосовується з алгоритмом EPD. Алгоритм EPD здійснює не вибіркове знищення однієї чарунки, а відкидає цілий пакет, що дозоляє різко знизити навантаження на ATM-комутатор.
При появі першої чарунки ATM-комутатор аналізує (використовуючи поле PTI заголовку), чи є вона першою чарункою пакету AAL5 PDU. Якщо чарунка є початком пакету, ATM-комутатор перераховує середню довжину черги QueueLength (перерахування здійсняється лише для першої чарунки пакету). Якщо довжина черги менше або дорівнює порогу спрацювання алгоритму RED (QueueLength=<MinThreshold), то ця і всі наступні чарунки, що належать цьому пакету, будуть по мірі надходження обслуговуватися ATM-комутатором. Якщо середня довжина черги QueueLength знаходиться в межах MinThreshold<QueueLength<MaxThreshold, то підраховується ймовірність знищення чарунок, система переходить до стану знищення чарунок з частотою, визначеною ймовірністю знищення.
Може виникнути слушне питання: навіщо використовувати алгоритм RED, який підраховує ймовірність знищення чарунок в пакеті, коли алгоритм PPD, що починає працювати слідом, знищує всі залишки пакету, не зважаючи на будь-які зміни ймовірності знищення. Основним плюсом алгоритму RED є можливість підрахування для кожного віртуального з’єднання ймовірності знищення чарунок в залежності від розміру пакету (AAL5), що передається по даному віртуальному з’єднанню. Чим більше пакети, тим вища ймовірність їх знищення. Це дозволяє справедливо розподілити смугу пропуску між потоками даних різних користувачів, що не можна зробити, використовуючи алгоритми EPD/PPD самостійно.
Нарешті, якщо довжина черги перевищує допустиме значення MaxThreshold (QueueLength> MaxThreshold), то в роботу відразу включається алгоритм EPD,