Windows XP: Міф про QoS

Немає жодної людини, яка б хоч раз не прочитав який-небудь FAQ по Windows XP. А раз так, то кожен знає, що є така шкідлива служба Quality of Service - скорочено QoS. Під час налаштування системи її настійно рекомендується відключати, тому що вона за замовчуванням обмежує мережеву пропускну здатність на 20%, і начебто ця проблема існує і в Windows 2000.

Ось ці рядки:

"Q: Як повністю відключити службу QoS (Quality of Service)? Як її налаштувати? Чи правда, що вона обмежує швидкість мережі?
A: Дійсно, за замовчуванням Quality of Service резервує для своїх потреб 20% від пропускної здатності каналу (будь-якого - хоч модем на 14400, хоч гігабітний Ethernet). Причому навіть якщо видалити службу QoS Packet Scheduler з Properties-з'єднання, цей канал не звільняється. Звільнити канал або просто налаштувати QoS можна тут. Запускаємо аплет Group Policy (gpedit.msc). У Group Policy знаходимо Local computer policy і натискаємо на Administrative templates. Вибираємо пункт Network - QoS Packet Sheduler. Включаємо Limit reservable bandwidth. Тепер знижуємо Bandwidth limit 20% до 0% або просто відключаємо його. При бажанні тут же можна налаштувати і інші параметри QoS. Для активації проведених змін залишається тільки перезавантажитися ".
20% - це, звичайно, дуже багато. Воістину Microsoft - "маздай". Твердження подібного роду кочують з FAQ в FAQ, з форуму в форум, зі ЗМІ в ЗМІ, використовуються у всілякого роду "твікалках" - програмах по "налаштування" Windows XP (до речі кажучи, відкрийте "Групові політики" і "Локальні політики безпеки", і жодна "твікалка" не зрівняється з ними за багатством варіантів настройки). Викривати голослівні твердження такого роду потрібно обережно, що ми зараз і зробимо, застосувавши системний підхід. Тобто грунтовно вивчимо проблемне питання, спираючись на офіційні першоджерела.

Що таке мережа з якісним сервісом?

Давайте приймемо таке спрощене визначення мережевої системи. Програми запускаються і працюють на хостах і обмінюються даними між собою. Додатки відправляють дані операційній системі для передачі по мережі. Як тільки дані передані операційній системі, вони стають вхідні та вихідні дані.
Мережева служба QoS спирається на здатність мережі обробити цей трафік так, щоб гарантовано виконати запити деяких додатків. Це вимагає наявності фундаментального механізму з обробки мережевого трафіку, здатного ідентифікувати трафік, який має право на особливу обробку і право управляти цими механізмами.

Функціональні можливості QoS покликані задовольнити двох суб'єктів мережі: мережеві додатки і мережевих адміністраторів. Вони часто мають розбіжності. Адміністратор мережі обмежує ресурси, використовувані специфічним додатком, в той же час програма намагається захопити якомога більше мережевих ресурсів. Їх інтереси можуть бути узгоджені, беручи до уваги той факт, що мережевий адміністратор грає чільну роль по відношенню до всіх програм і користувачам.

Основні параметри QoS

Різні програми мають різні вимоги для обробки їх мережевого трафіку. Додатки в більшій чи меншій мірі терпимі до затримок і втрат трафіку. Ці вимоги знайшли застосування в наступних параметрах, пов'язаних з QoS:

• Bandwidth (смуга пропускання) - швидкість, з якою трафік, що генерується додатком, повинен бути переданий по мережі;
• Latency (затримка) - затримка, яку програма може допустити в доставці пакета даних.
• Jitter - зміна часу затримки.
• Loss (втрата) - відсоток втрачених даних.

Якби були доступні нескінченні мережеві ресурси, то весь трафік програми можна було б передати з необхідною швидкістю, з нульовим часом затримки, нульовим зміною часу затримки і нульовими втратами. Однак мережеві ресурси не безмежні.
Механізм QoS контролює розподіл мережевих ресурсів для трафіку додатки, щоб виконати вимоги по його передачі.

Фундаментальні ресурси QoS і механізми обробки трафіку

Мережі, які пов'язують хости, використовують різноманітні мережеві пристрої включаючи мережеві адаптери хостів, маршрутизатори, свічі і хаби. Кожен з них має мережеві інтерфейси. Кожен мережевий інтерфейс може прийняти і передати трафік з кінцевою швидкістю. Якщо швидкість, з якою трафік спрямований на інтерфейс, вище, ніж швидкість, з якою інтерфейс передає трафік далі, то виникає перевантаження.

Мережеві пристрої можуть обробити стан перевантаження, організовуючи чергу трафіку в пам'яті пристрою (в буфері), поки перевантаження не пройде. В інших випадках мережеве обладнання може відмовитися від трафіку, щоб полегшити перевантаження. В результаті застосування стикаються зі зміною часу очікування (так як трафік зберігається в чергах на інтерфейсах) або з втратою трафіку.

Здатність мережевих інтерфейсів до пересилання трафіку і наявність пам'яті для збереження трафіку в мережевих пристроях (до тих пір, поки трафік не може бути посланий далі) становлять фундаментальні ресурси, потрібні для забезпечення QoS для потоків трафіку додатків.

Розподіл ресурсів QoS по мережевих пристроїв

Пристрої, що підтримують QoS, розумно використовують ресурси мережі для передачі трафіку. Тобто трафік додатків, більш терпимих до затримок, стає в чергу (зберігається в буфері в пам'яті), а трафік додатків, критичних до затримок, передається далі.

Для виконання цього завдання мережевий пристрій має ідентифікувати трафік шляхом класифікації пакетів, а також мати черги і механізми їх обслуговування.

Механізм обробки трафіку

Механізм обробки трафіку включає в себе:
• 802.1p
• Диференційовані послуги per-hop-behaviors (diffserv PHB).
• Інтегровані послуги (intserv).
• ATM і ін.

Більшість локальних мереж засноване на технології IEEE 802 включаючи Ethernet, token-ring і ін. 802.1p - це механізм обробки трафіку для підтримки QoS в таких мережах.

802.1p визначає поле (рівень 2 в мережевий моделі OSI) в заголовку пакета 802, яке може нести одне з восьми значень пріоритету. Як правило, хости або маршрутизатори, посилаючи трафік в локальну мережу, маркують кожен посланий пакет, привласнюючи йому певне значення пріоритету. Передбачається, що мережеві пристрої, такі, як свічі, мости і хаби, оброблять пакети відповідним чином, використовуючи механізми організації черг. Область застосування 802.1p обмежена локальною мережею (LAN). Як тільки пакет перетинає локальну мережу (через рівень 3 OSI), пріоритет 802.1p видаляється.

Diffserv - це механізм рівня 3. Він визначає поле в рівні 3 заголовка пакетів IP, названих diffserv codepoint (DSCP).

Intserv - це цілий комплекс послуг, що визначає гарантований сервіс і сервіс, керуючий завантаженням. Гарантований сервіс обіцяє нести певний обсяг трафіку з вимірної і обмеженої затримкою. Сервіс, керуючий завантаженням, погоджується нести певний обсяг трафіку з "появою легкої завантаженості мережі". Це - вимірні послуги в тому сенсі, що вони визначені, щоб забезпечити вимірний QoS до певної кількості трафіку.

Оскільки технологія ATM фрагментірует пакети у відносно маленькі осередки, то вона може запропонувати дуже низький час затримки. Якщо необхідно передати пакет терміново, інтерфейс ATM може завжди звільнятися для передачі на час, який потрібен, щоб передати одну клітинку.

QoS має ще багато різних складних механізмів, що забезпечують роботу цієї технології. Відзначимо лише один важливий момент: для того, щоб QoS запрацювала, необхідна підтримка цієї технології і відповідна настройка на всьому протязі передачі від початкової точки до кінцевої.

Приймаємо наступне:
• Всі маршрутизатори беруть участь в передачі потрібних протоколів.
• Один QoS-сеанс, що вимагає 64 Kbps, инициализирован між хостом А і хостом B.
• Інший сеанс, що вимагає 64 Kbps, инициализирован між хостом А і хостом D.
• Для спрощення схеми вважаємо, що маршрутизатори сконфігуровані так, що можуть резервувати всі мережеві ресурси.

У нашому випадку один запит про резервування 64 Kbps досяг би трьох маршрутизаторів на шляху даних між хостом А і хостом B. Інший запит про 64 Kbps досяг би трьох маршрутизаторів між хостом А і хостом D. Маршрутизатор виконали б ці запити на резервування ресурсів, тому що вони не перевищують максимуму. Якщо замість цього кожен з вузлів B і C одночасно ініціалізованих б 64 Kbps QoS-сеанс з хостом A, то маршрутизатор, що обслуговує ці хости (B і C), заборонив би одне із з'єднань.

Тепер припустимо, що адміністратор мережі відключає обробку QoS в трьох нижніх маршрутизаторах, які обслуговують хости B, C, D, E. В цьому випадку запити про ресурси до 128 Kbps задовольнялися б незалежно від місця розташування бере участь в з'єднанні хоста. При цьому гарантії якості були б низькі, оскільки трафік для одного хоста піддавав би ризику трафік іншого. Якість обслуговування могло б бути збережено, якби верхній маршрутизатор обмежував всі запити до 64 Kbps, проте це призвело б до неефективного використання мережевих ресурсів.

З іншого боку, пропускну здатність всіх мережевих зв'язків можна було б збільшити до 128 Kbps. Але збільшена пропускна здатність буде використовуватися тільки коли хости B і C (або D і E) одночасно зажадають ресурси. Якщо це не так, то ресурси мережі знову будуть використовуватися неефективно.

QoS-компоненти Microsoft

Windows 98 містить компоненти QoS тільки користувацького рівня включаючи:

• Компоненти додатків.
• GQoS API (частина Winsock 2).
• QoS service provider.

Операційна система Windows 2000 / XP / 2003 містить все описане вище і такі компоненти:

• Resource Reservation Protocol Service Provider (Rsvpsp.dll) і служби RSVP (Rsvp.exe) і QoS ACS. У Windows XP, 2003 не використовуються.
• Управління трафіком (Traffic.dll).
• Generic Packet Classifier (Msgpc.sys). Класифікатор пакетів визначає клас сервісу, якому належить пакет. При цьому пакет буде поставлений в відповідну чергу. Черги управляються Планувальником пакетів QoS.
• Планувальник пакетів QoS (Psched.sys). Визначає параметри QoS для специфічного потоку даних. Трафік позначається певним значенням пріоритету. Планувальник пакетів QoS визначає графік постановки в чергу кожного пакета і обробляє конкуруючі запити між поставленими в чергу пакетами, які потребують одночасному доступі до мережі.

Додатки знаходяться вгорі стека. Вони можуть знати чи не знати про QoS. Щоб використовувати всю міць QoS, Microsoft рекомендує використовувати в додатках виклики Generic QoS API. Це особливо важливо для додатків, що вимагають високоякісних гарантій обслуговування. Деякі утиліти можуть використовуватися для виклику QoS від імені додатків, які не знають про QoS. Вони працюють через API керування трафіком. Наприклад, NetMeeting використовує GQoS API. Але для таких додатків якість не гарантується.

Останній цвях

Вищевикладені теоретичні моменти не дають однозначної відповіді на питання, куди діваються горезвісні 20% (які, зауважу, ніхто ще точно не вимірював). Виходячи з вищесказаного, такого бути не повинно. Але опоненти висувають новий аргумент: система QoS хороша, та реалізація крива. Стало бути, 20% все-таки "віджираються". Мабуть, проблема допекла і софтверного гіганта, оскільки він вже досить давно окремо спростував подібні вигадки.

Втім, дамо слово розробникам і викладемо вибрані моменти зі статті "316666 - Windows XP Quality of Service (QoS) Enhancements and Behavior" літературною російською мовою:

"Сто відсотків мережевий смуги пропускання доступні для розподілу між усіма програмами, якщо будь-яка програма явно не запитує пріоритетну смугу пропускання. Ця" зарезервована "смуга пропускання доступна іншим програмам, якщо програма, яка її зажадала, не надсилає дані.

За замовчуванням програми можуть резервувати до 20% основної швидкості з'єднання на кожному інтерфейсі комп'ютера. Якщо програма, яка резервувала смугу пропускання, не подає досить багато даних, щоб використовувати її повністю, невикористана частина зарезервованої смуги пропускання доступна для інших потоків даних.

Були заяви в різних технічних статтях і телеконференціях, що Windows XP завжди резервує 20% доступної смуги пропускання для QoS. Ці заяви невірні ".

Якщо тепер у кого-то все ще "віджиратись" 20% смуги пропускання, що ж, я можу порадити і далі використовувати побільше всіляких "твікалок" і кривих мережевих драйверів. Ще й не стільки буде "віджиратись".

Все, міф про QoS, помри!