QoS (ToS) part 1

Ночь! народ спит. Плотно подкрепившись, нужно было выждать 3-4 часа перед сном(да я слежу за фигурой). В результате этого выжидания родился текст приведенный ниже.

Повестка дня:
1. Модели QoS(ToS)
2. Старый добрый IP Precedence
3. Разбираем на части DSCP

Кого заинтересовало прошу

Существует три модели QoS(ToS)
1. Best Effort (BE)
Знатная модель, все мы нею пользуемся — Никакого QoS 🙂
* Так работает интернет
* Никакого деления на классы
* Используется по умолчанию
+ Ничего ненужно настраивать работает с коробки:)
+ Отличная Масшатбируемость
— Не гарантируется уровень обслуживания (у провайдеров в тарифе стоит ДО)
— У всех видов трафика один приоритет

2. Integrated Services (IntServ)
* Для приложений выделяется гарантированная полоса пропускания
* Никто не может использовать чужую полосу.
* Несколько уровней приоритетов(кому сколько)
* Механизм очередей
* Для гарантированного выделения полосы по всей длине используется RSVP
* Перед отправкой требует в сети гарантированную полосу
+ Явное указание гарантированной полосы
+ Позволяет динамически открывать порты( например зарезервировали 20кб для фтп, фтп использует два порта: 21 соединение и 20 для передачи, протокол сам позаботится о портах)
— Огромное количество служебного трафика
— Плохо масштабируемая модель
— Если по пути следования попадается роутер не поддерживающий RSVP, то нас ждет облом

3. Differentiated Services (DiffServ) описывает каким образом должны быть обработаны пакеты по пути их передачи.
Почти гарантированная доставка
* Весь трафик в сети делится по классам
* Вы сами определяете класс трафика
* Каждый класс обрабатывается со своим приоритетом
+ Хорошая масштабируемость
+ Огромное количество классов
— Сложность настроек
— ПОЧТИ гарантированный уровень обслуживания:)

О последнем, как о самом ходовом мы и поговорим
Как же наши L3 девайсы различают какому пакеты отдать наивысший приоритет, а другого заставить подождать? Ответ хранится в IP хедере.

На картинке изображена эволюция ToS(Type of Service).
Что и как привело нас к DSCP в том виде которые у нас сейчас есть:
В те далекие годы первые три бита это IP precedence(приоритет) биты. Собственно ими мы и задавали приоритет пакета. Ещё 4 бита определяли флаги, которые могли быть выставлены для указания конкретного сервиса QoS.
Согласно RFC 791 наши три бита могут принимать следующие значения

Десятичная Двоичная Описание
0 000 Routine(Весь трафик по умолчанию)
1 001 Priority
2 010 Immediate
3 011 Flash(Видео+голос)
4 100 Flash override(Видео трафик)
5 101 Critical(VOIP)
6 110 Internetwork control
7 111 Network control

В RFC 1349 были внесены некоторые изменения в биты относящиеся к ToS

3-6 ToS биты Описание
0000 Normal service
1000 Minimize delay
0100 Maximize throughput
0010 Maximize reliability
0001 Minimize monetary cost

В RFC 2474 был пересмотрен весь октет ToS. Сам байт ToS был переименован в поле Differentiated Services (DS). Первые 5 бит получили название Differentiated Services Codepoint (DSCP), последние 2 бита в RFC 3168 получили название Explicit Congestion Notification (ECN). С этими нововведениями мы смогли использовать 64 codepoint кода(6 бит) для маркировки пакетов, эти коды обратно совместимы со старым IP precedence.
Таблица совместимости:

Десятичная IPP Двоичная IPP(codepointDSCPxxx) Описание Десятичная DSCP
0 000(000xxx) Routine(BE) Весь трафик по умолчанию 0
1 001(001xxx) Priority(AF class 1) 8
2 010(010xxx) Immediate(AF class 2) 16
3 011(011xxx) Flash(AF class 3)Видео+голос 24
4 100(100xxx) Flash override(AF class 4)Видео трафик 32
5 101(101xxx) Critical (EF) VOIP 40
6 110(110xxx) Internetwork control(Control) 48
7 111(111xxx) Network control(Control) 56

Per-Hop Behaviors (PHB) -описание конкретного типа обработки пакетов, грубо говоря это разделение наших 64 кодов на категории с определенными требованиями.
PHB описанные в RFC:
■ Default PHB для передачи данных от узлов которые не маркируют пакеты DSCP 000000. Могут быть перемаркированны на следующих узлах.
■ Class Selector (CS) устанавливает значение DSCP для совместимости с IP precedence. Формат xxx000
■ Expedited Forwarding (EF) эти пакеты должны получать приоритет в очереди. Voip трафик
RFC 2598 определяет EF PHB как трафик с малыми потерями, малой задержкой и гарантированной полосой пропускания. При превышении, все что выше дропается, только если канал загружен полностью, и очереди создаются. Если очередей нет — может забирать хоть всю скорость интерфейса.(спс за подсказку Vermillion)
■ Assured Forwarding (AF) используется для организации очередей и предотвращения перегрузки.
Гарантированная пропускная способность + возможно получить еще если полоса свободна. В RFC 2597 Определены рекомендованные 4 класса и значения для уровней packet drop precedence.

Приоритет AF class 1 AF class 2 AF class 3 AF class 4
low drop precedence 001010 010010 011010 100010
medium drop precedence 001100 010100 011100 100100
high drop precedence 001110 010110 011110 100110

3 и 4бит это drop bits(dd) они определяют приоритет ВНУТРИ класса. Чем НИЖЕ тем ЛУЧШЕ!
Роутер должен выделить определенное количество полосы и буферов на каждый AF класс.
Пустующую полосу можно разделить между не простаивающими классами.
Изменение порядка пакетов из одного класса ЗАПРЕЩЕНО!

ECN(Explicit Congestion Notification) позволяет сообщить другому L3 устройству, что у нас тут перегрузка:)


Комментарии: