У режимі строгого пріоритету (strict priority mode) черга з малою затримкою обслуговується за наявності в ній хоча б одного пакета, що обумовлює мінімально можливу затримку для класу трафіка, який оброблюється за допомогою цієї черги. У той же час слід зазначити, що високопріоритетна черга з малою затримкою здатна на тривалий період часу зайняти всі 100% смуги пропускання інтерфейса і тим самим "придушити" інші MDRR-черги.
У режимі чергування пріоритетів (alternate priority mode) черга з малою затримкою обробляється в проміжках між обробкою інших черг. На додаток до черги з малою затримкою алгоритм MDRR підтримує ще сім черг. Припустимо, що черга з малою затримкою має номер 0. Тоді відповідно до режиму пріоритету, що чергується, черги механізму MDRR обслуговуються в такому порядку: 0, 1, 0, 2, 0, 3, 0, 4, 0, 5, 0, 6, 0,Режим чергування пріоритетів дозволяє зменшити максимальну затримку обслуговування черги 0 із суми квантових значень (що було б у випадку традиційного механізму кругового обслуговування) до максимального квантового значення серед всіх інших черг.
Розглянемо роботу алгоритму MDRR на прикладі. Припустимо, що алгоритм MDRR використовується для обслуговування трьох черг - черги 2, черги 1 і черги 0, - вага яких дорівнює 1, 2 і 1, відповідно (табл.1). Черга 2 є чергою з малою затримкою, яка обслуговується в режимі пріоритету, що чергується. Схематичне зображення черг та відповідні до них значення лічильників дефіциту подані на рис.5.
Таблиця 1 - Вага і квантові значення черг, що обслуговуються за допомогою алгоритму MDRR
Номер черги | Вага | Квантове значення = вага MTU (MTU = 1500 байт) |
Черга 2 | 1 | 1500 |
Черга 1 | 2 | 3000 |
Черга 0 | 1 | 1500 |
Коли механізм MDRR сконфігуровано на вихідному інтерфейсі маршрутизатора, як максимальний розмір одиниці передачі інформації (Maximum Transmission Unit, MTU) використовується відповідне значення MTU цього інтерфейса.
Першою обслуговується черга 2. При ініціалізації лічильника дефіциту йому присвоюється значення 1500, яке дорівнює квантовому значенню черги. Черга 2 обслуговується доти, доки відповідне їй значення лічильника дефіциту залишається більше нуля. Після обслуговування пакета значення лічильника дефіциту черги 2 зменшується на величину, яка дорівнює розмірові пакета в байтах. Оскільки поточне значення лічильника дефіциту (1500) більше нуля, планувальник MDRR обслуговує 500-байтовий пакет, що знаходиться на початку черги 2. Нове значення лічильника дефіциту черги 2 стає рівним 1500 - 500=1000. Оскільки нове значення лічильника дефіциту усе ще більше нуля, планувальник MDRR починає обслуговування наступного у черзі пакета. У результаті передачі 1500-байтового пакета значення лічильника дефіциту зменшується до 1000 - 1500=-500, після чого MDRR-планувальник переходить до обслуговування наступної черги. Стан черг і відповідних їм значень лічильників дефіциту після закінчення обслуговування черги 2 схематично подано на рис.6.
Рисунок 5 - MDRR - черги і відповідні значення лічильників дефіциту до початку обслуговування черги 2
Рисунок 6 - Стан черг і відповідних їм значень лічильників дефіциту після першого циклу обслуговування
Оскільки обслуговування черги 2 здійснюється в режимі чергування пріоритетів MDRR-планувальник переходить до обробки іншої черги, номер якої вибирається відповідно до кругового принципу. Припустимо, що підійшла черга обслуговування черги 0. При ініціалізації лічильника дефіциту йому присвоюється значення 1500, яке дорівнює квантовому значенню черги 0. У результаті обслуговування 1500-байтового пакета значення лічильника дефіциту зменшується до 1500 - 1500 = 0. Відповідно до алгоритму MDRR-планувальник завершує обслуговування черги 0. Стан черг і відповідних їм значень лічильників дефіциту після закінчення обслуговування черги 0 схематично подане на рис.
Оскільки режим чергування пріоритетів припускає постійне переключення MDRR-планувальника між чергою з малою затримкою та іншими чергами, наступною обслуговується черга 2. Нове значення лічильника дефіциту стає рівним - 500+1500=1000. Оскільки значення лічильника дефіциту більше нуля, MDRR-планувальник приступає до обслуговування наступного пакета черги 2.
У результаті передачі 500-байтового пакета значення лічильника дефіциту зменшується до 500. Незважаючи на те що MDRR-планувальник міг би обслужити як мінімум ще один пакет черги 2, це не є можливим, тому що черга порожня. Тому значення лічильника дефіциту черги 2 скидається в нуль. Оскільки порожня черга не обробляється MDRR-планувальником, значення лічильника дефіциту черги 2 залишається рівним нулеві до постановки в цю чергу наступного пакета. Стан черг і відповідних їм значень лічильників дефіциту після закінчення обслуговування черги 2 схематично подано на рис.8.
Рисунок 7 - Стан черг і відповідних їм значень лічильників дефіциту після першого циклу обслуговування черги 0
Рисунок 8 - Стан черг і відповідних їм значень лічильників дефіциту після другого циклу обслуговування черги 2
Наступною обслуговується черга 1, значення лічильника дефіциту якої встановлюється рівним 3000. MDRR-планувальник передає три пакети з черги 1, у результаті чого значення її лічильника дефіциту зменшується до 3000 - 1500 - 500 - 1500=-500. Стан черг і відповідних їм значень лічильників дефіциту після закінчення обслуговування черги 1 схематично подано на рис.9.
У результаті обслуговування двох пакетів черги 0 значення її лічильника дефіциту стає рівним 1500-500-1500=-500. Оскільки черга 0 стає порожньою, відповідне значення лічильника дефіциту скидається в нуль. Стан черг і відповідних їм значень лічильників дефіциту після закінчення обслуговування черги 0 схематично подано на рис.10.
Рисунок 9 - Стан черг і відповідних їм значень лічильників дефіциту після першого циклу обслуговування черги 1
Рисунок 10 - Стан черг і відповідних їм значень лічильників дефіциту після другого циклу обслуговування черги 0
На наступному кроці MDRR-планувальник обробляє останній пакет черги 1. Оскільки черга 1 стає порожньою, відповідне їй значення лічильника дефіциту скидається в нуль.
Модифікований алгоритм кругового обслуговування з дефіцитом MDRR реалізований в маршрутизаторах Cisco серії 12000. Механізм MDRR можна сконфігурувати для обслуговування або черги вихідного інтерфейса (вихідний блок маршрутизатора - ТХ), або черги вхідного інтерфейса (вхідний блок маршрутизатора - RX) при функціонуванні в режимі подачі черг комутаційної матриці маршрутизатора на вихідний інтерфейс.
механізм кругове обслуговування черга
Вибір схеми організації черг є одним з важливих кроків у проектуванні мережі і містить у собі такі етапи.
1. Визначити, чи знаходиться в стані перевантаження канал зв'язку з глобальною мережею. У тому випадку, якщо перевантаження немає, то немає й необхідності в додаткових діях. Але якщо спостерігаються періоди значного завантаження каналу, то виникає потреба в реалізації механізмів розподілу ресурсів.
2. На наступному етапі варто з'ясувати, чи потрібний строгий контроль над розподілом трафіка відповідно до пріоритетів і чи є прийнятними автоматичні настройки маршрутизатора. Слід зазначити, що коректне настроювання черг зовсім непроста задача. Для того щоб виконати її з найбільшою ефективністю, адміністратор мережі має проаналізувати типи трафіка, що проходять через даний інтерфейс, з'ясувати, як розрізняти різні потоки трафіку, і визначити відносні пріоритети. Крім того, варто пам'ятати про те, що характер трафіка з часом міняється. А це вимагає регулярного виконання такого аналізу.
3. Стратегія черг базується на проведеному аналізі трафіка і визначенні відносних його пріоритетів (обговорюється на кроці 2).
4. На останньому кроці потрібно визначити, наскільки виділений трафік чутливий до затримок.
На рис.11 подано алгоритм дій адміністратора мережі з метою вибору типу черги.
Рисунок 11 - Алгоритм вибору типу черги.