Шукати в цьому блозі

Показ дописів із міткою DSCP. Показати всі дописи
Показ дописів із міткою DSCP. Показати всі дописи

понеділок, 17 травня 2010 р.

Общие сведения о DSCP (Differentiated Services Code Point)

Общие сведения о DSCP (Differentiated Services Code Point)

DSCP — поле в IP-пакете, позволяющее назначить сетевому трафику различные уровни обслуживания. Для достижения этого каждый пакет в сети помечается кодом DSCP и соответствующим ему уровнем обслуживания.
DSCP представляет собой объединение полей IP Precedence и Type of Service. Для работы с устаревшими маршрутизаторами, поддерживающими только поля IP Precedence, значения DSCP используются из-за совместимости с полями IP Precedence. Дополнительные сведения см. в документе RFC 2474 на веб-узле RFC Editor.

Как работает DSCP

Программы, поддерживающие QoS, отправляют запрос на конкретный тип службы для трафика через интерфейс прикладного программирования (API) общего качества службы. Возможные типы служб:
  • Guaranteed
    Эта служба предоставляет поддающиеся количественному определению гарантии высокого качества с ограниченной задержкой (гарантированный минимум).
  • Controlled load
    Эта служба обеспечивает поддающиеся количественному определению гарантии высокого качества без ограниченной задержки.
DSCP представляет собой шестиразрядное поле, в котором содержатся значения по умолчанию, указанные в следующей таблице. Равносильные значения IP Precedence и IEEE 802.1p показаны в отдельных столбцах.

Тип службы DSCP IP Precedence IEEE 802.1p
Network control3067
Guaranteed2855
Controlled load1833
Другой трафик000
Примечания
  • Службу сетевого контроля невозможно запросить через интерфейс прикладного программирования общего качества службы. Однако это можно выполнить посредством приложений управления сетями, использующими интерфейс прикладного программирования контроля трафика.
  • Значения DSCP по умолчанию можно изменить удаленно с помощью групповой политики।
Источник technet.microsoft.com

четвер, 4 червня 2009 р.

О параметрах QoS. Значения dscp. (практически для Linux)

Подводя итоги к статье "Implementing Quality of Service Policies with DSCP" и скрещивая "ёжика с бегемотом", т.е. Linux с Cisco, хочу облегчить (?) труд последующим поколениям (да и себе, на случай "если забуду").

Вот некоторые сводные таблицы по терминам и значениям.
ToS Byte
Код:
┌────┬────┬────┬────┬────┬────┬─────┬─────┐
│ 1  │ 0  │ 1  │ T2 │ T1 │ T0 │ CU2 │ CU0 │
└────┴────┴────┴────┴────┴────┴─────┴─────┘
IP precedence—three bits (P2 to P0)
Delay, Throughput and Reliability—three bits (T2 to T0)
CU (Currently Unused)—two bits(CU1-CU0)
DiffServ Field
Код:
┌────┬────┬────┬────┬────┬────┬─────┬─────┐
│DS5 │DS4 │DS3 │DS2 │DS1 │DS0 │ ECN │ ECN │
└────┴────┴────┴────┴────┴────┴─────┴─────┘
DSCP—six bits (DS5-DS0)
ECN—two bits
Код:
┌────────────┬────────────────────────────────┐
│ Precedence │          Description           │
│   Level    │                                │
├────────────┼────────────────────────────────┤
│ 7          │ Stays the same (link layer and │
│            │ routing protocol keep alive)   │
├────────────┼────────────────────────────────┤
│ 6          │ Stays the same (used for IP    │
│            │ routing protocols)             │
├────────────┼────────────────────────────────┤
│ 5          │ Express Forwarding (EF)        │
├────────────┼────────────────────────────────┤
│ 4          │ Class 4                        │
├────────────┼────────────────────────────────┤
│ 3          │ Class 3                        │
├────────────┼────────────────────────────────┤
│ 2          │ Class 2                        │
├────────────┼────────────────────────────────┤
│ 1          │ Class 1                        │
├────────────┼────────────────────────────────┤
│ 0          │ Best effort                    │
└────────────┴────────────────────────────────┘
Код:
┌────────┬────────┬────────┬────────┬────────┐
│  Drop  │ Class 1│ Class 2│ Class 3│ Class 4│
│        │  CS1   │  CS2   │  CS3   │  CS4   │
├────────┼────────┼────────┼────────┼────────┤
│ Low    │ AF11   │ AF21   │ AF31   │ AF41   │
│        │ DSCP 10│ DSCP 18│ DSCP 26│ DSCP 34│
│        │ 001010 │ 010010 │ 011010 │ 100010 │
│        │ 0x0a   │ 0x12   │ 0x1a   │ 0x22   │
├────────┼────────┼────────┼────────┼────────┤
│ Medium │ AF12   │ AF 22  │ AF32   │ AF42   │
│        │ DSCP 12│ DSCP 20│ DSCP 28│ DSCP 36│
│        │ 001100 │ 010100 │ 011100 │ 100100 │
│        │ 0x0c   │ 0x14   │ 0x1c   │ 0x24   │
├────────┼────────┼────────┼────────┼────────┤
│ High   │ AF13   │ AF23   │ AF33   │ AF43   │
│        │ DSCP 14│ DSCP 22│ DSCP 30│ DSCP 38│
│        │ 001110 │ 010110 │ 011110 │ 100110 │
│        │ 0x0e   │ 0x16   │ 0x1e   │ 0x26   │
└────────┴────────┴────────┴────────┴────────┘
Подводя итог всему вышесказанному:
Код:
--set-dscp-class af11     Match packets with AF11 dscp              (001010), --set-dscp 0x0a
--set-dscp-class af12     Match packets with AF12 dscp              (001100), --set-dscp 0x0c (dec 12)
--set-dscp-class af13     Match packets with AF13 dscp              (001110), --set-dscp 0x0e (dec 14)
--set-dscp-class af21     Match packets with AF21 dscp              (010010), --set-dscp 0x12 (dec 18)
--set-dscp-class af22     Match packets with AF22 dscp              (010100), --set-dscp 0x14 (dec 20)
--set-dscp-class af23     Match packets with AF23 dscp              (010110), --set-dscp 0x16 (dec 22)
--set-dscp-class af31     Match packets with AF31 dscp              (011010), --set-dscp 0x1a (dec 26)
--set-dscp-class af32     Match packets with AF32 dscp              (011100), --set-dscp 0x1c (dec 28)
--set-dscp-class af33     Match packets with AF33 dscp              (011110), --set-dscp 0x1e (dec 30)
--set-dscp-class af41     Match packets with AF41 dscp              (100010), --set-dscp 0x22 (dec 34)
--set-dscp-class af42     Match packets with AF42 dscp              (100100), --set-dscp 0x24 (dec 36)
--set-dscp-class af43     Match packets with AF43 dscp              (100110), --set-dscp 0x26 (dec 38)
--set-dscp-class cs0      Match packets with default dscp           (000000), --set-dscp 0x00 (dec 00)
--set-dscp-class cs1      Match packets with CS1(precedence 1) dscp (001000), --set-dscp 0x08 (dec 08)
--set-dscp-class cs2      Match packets with CS2(precedence 2) dscp (010000), --set-dscp 0x10 (dec 16)
--set-dscp-class cs3      Match packets with CS3(precedence 3) dscp (011000), --set-dscp 0x18 (dec 24)
--set-dscp-class cs4      Match packets with CS4(precedence 4) dscp (100000), --set-dscp 0x20 (dec 32)
--set-dscp-class cs5      Match packets with CS5(precedence 5) dscp (101000), --set-dscp 0x28 (dec 40)
--set-dscp-class cs6      Match packets with CS6(precedence 6) dscp (110000), --set-dscp 0x30 (dec 48)
--set-dscp-class cs7      Match packets with CS7(precedence 7) dscp (111000), --set-dscp 0x38 (dec 56)
--set-dscp-class ef       Match packets with EF dscp                (101110), --set-dscp 0x2e (dec 46)

Задействуем функционал QoS (ToS) (решение для Linux)

Собственно, в связи с тем, что сеть Датасвит поддерживает функционал QoS:
Цитата:
Сообщение от Fire Посмотреть сообщение
DSCP to 802.1p
IP TOS Precedence to Priority Queue Mapping
802.1P Priority to Priority Queue Mapping
TOS/Differentiated Service Enable
Flow Control
Port Priority
Попытаться реализовать "под себя" этот функционал можно переопределив значения поля DSCP, через iptables в таблице mangle:
Код:
*mangle
:PREROUTING ACCEPT [178941:94642599]
:INPUT ACCEPT [121227:85510027]
:FORWARD ACCEPT [18238:2053107]
:OUTPUT ACCEPT [126752:85537218]
:POSTROUTING ACCEPT [133655:86846914]
[0:0] -A INPUT -j DSCP --set-dscp 0x0a
[0:0] -A INPUT -p gre -j DSCP --set-dscp 0x2e
[0:0] -A INPUT -p icmp -m icmp --icmp-type any -j DSCP --set-dscp 0x1a
[0:0] -A INPUT -p tcp -m tcp --dport 80 -j DSCP --set-dscp 0x22
[0:0] -A INPUT -p tcp -m tcp --dport 22 -j DSCP --set-dscp 0x24
[0:0] -A FORWARD -j DSCP --set-dscp 0x0a
[0:0] -A FORWARD -j DSCP --set-dscp 0x0a
[0:0] -A FORWARD -p gre -j DSCP --set-dscp 0x2e
[0:0] -A FORWARD -p gre -j DSCP --set-dscp 0x2e
[0:0] -A FORWARD -p icmp -m icmp --icmp-type any -j DSCP --set-dscp 0x1a
[0:0] -A FORWARD -p icmp -m icmp --icmp-type any -j DSCP --set-dscp 0x1a
[0:0] -A FORWARD -p tcp -m tcp --dport 80 -j DSCP --set-dscp 0x22
[0:0] -A FORWARD -p tcp -m tcp --sport 80 -j DSCP --set-dscp 0x22
[0:0] -A FORWARD -p tcp -m tcp --dport 8085 -j DSCP --set-dscp 0x2e
[0:0] -A FORWARD -p tcp -m tcp --sport 8085 -j DSCP --set-dscp 0x2e
[0:0] -A FORWARD -p tcp -m tcp --dport 22 -j DSCP --set-dscp 0x24
[0:0] -A FORWARD -p tcp -m tcp --sport 22 -j DSCP --set-dscp 0x24
[0:0] -A OUTPUT -j DSCP --set-dscp 0x0a
[0:0] -A OUTPUT -p gre -j DSCP --set-dscp 0x2e
[0:0] -A OUTPUT -p icmp -m icmp --icmp-type any -j DSCP --set-dscp 0x1a
[0:0] -A OUTPUT -p tcp -m tcp --sport 80 -j DSCP --set-dscp 0x22
[0:0] -A OUTPUT -p tcp -m tcp --sport 22 -j DSCP --set-dscp 0x24
[0:0] -A OUTPUT -p udp -m udp --sport 4569 -j DSCP --set-dscp 0x2e
[0:0] -A OUTPUT -p udp -m udp --sport 10000:20000 -j DSCP --set-dscp 0x2e
[0:0] -A OUTPUT -p udp -m udp --sport 5060 -j DSCP --set-dscp 0x18
Если у Вас всего один компьютер, то определять цепочку FORWARD не нужно.
Ну и, естественно, что значения поля dscp и условия для его установки могут отличаться от предложенных выше. На вкус и цвет, как говориться... ;) Только помните, что если весь Ваш поток "закинуть" в EF, то он перестанет быть "гарантированным", надеюсь понимаете почему? ;)
Отдельно хочется отметить, что инструкция -j DSCP --set-dscp не является терминирующей, как DROP, ACCEPT или REJECT, поэтому наиболее общие условия для установки DSCP необходимо описывать раньше, чем частные решения.

PS: Ну и опять таки - это не панацея от всех бед, а лишь один из кирпичиков в Вашем тетрисе :)