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

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

четвер, 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: Ну и опять таки - это не панацея от всех бед, а лишь один из кирпичиков в Вашем тетрисе :)

Как полностью отключить службу QoS?

По умолчанию QoS (Quality of Service) резервирует для своих нужд 20 % от пропускной способности канала.
Причём, даже если удалить службу Планировщик пакетов QoS из свойств соединения, этот канал не освобождается. Освободить канал, или просто настроить QoS, можно таким образом. Запускаем апплет Групповая политика (gpedit.msc).
В Групповой политике находим Конфигурация компьютера и нажимаем на Административные шаблоны. Выбираем пункт Сеть -- Диспетчер пакетов QoS. Выбираем Ограничить резервируемую пропускную способность.
Теперь уменьшаем Ограничение пропускной способности с 20% до 0, или просто отключаем его.
При желании в Диспетчере пакетов QoS можно настроить и другие параметры QoS. Для активации произведённых изменений остаётся только перезагрузиться.



PS: Для справки, в Windows XP Home Edition нет gpedit.msc, так что по-умолчанию пользователям этой ОС данный рецепт не подходит... Для любопытствующих - может попробовать скопировать gpedit.msc из Windows XP Professional и попробовать таки реализовать этот сценарий. Сам я такого не пробовал, но мало ли... ;)


Информация к размышлению: "В некоторых публикациях и группах новостей заявлялось, что Windows XP всегда резервирует под нужды механизма QoS 20 % доступной полосы пропускания. Данное утверждение неверно."
Верить или не верить в данном случае Микрософту? Отсылаю к оригинальной статье, а решение принимайте самостоятельно - никто ни к чему не обязывает.