Очень полезно использовать PRIO для снижения задержки в случае, когда нет необходимости замедлять трафик.
При освобождении пакета из очереди вначале происходит попытка использовать полосу 0 и в случае, если она не доставила пакет, PRIO будет пытаться использовать полосу 1, и так далее. Соответственно, пакеты с максимальной надёжностью должны быть отправлены на полосу 0, с минимальной задержкой - на полосу 1, и все оставшиеся - на полосу 2.
Так как очередь PRIO сама по себе будет иметь дополнительный (minor) номер равный 0, полоса 0 на самом деле major:1, полоса 1 является major:2, и т.д. Вместо major, подставьте основной номер, назначенный очереди в момент её создания при помощи 'tc qdisc add" с параметром handle.
Определяет, каким образом приоритеты пакета, назначенные ядром, влияют на выбор полосы. Выбор основывается на TOS-октете пакета, который выглядит приблизительно так:
0 1 2 3 4 5 6 7 +---+---+---+---+---+---+---+---+ | | | | |СТАРШИНСТВО| TOS |MBZ| | | | | +---+---+---+---+---+---+---+---+
Четыре бита поля TOS определены как:
Двоичный Десятичный Значение --------------------------------------------------------------- 1000 8 Минимизировать задержку (minimize delay - md) 0100 4 Максимизировать пропускную способность (maximize thorughput - mt) 0010 2 Максимальная надежность (maximal reliability - mr) 0001 1 Минимизировать денежную стоимость (minimize monetary cost - mmc) 0000 0 Обычное обслуживание (normal service)
Так как справа от этих полей находится 1 бит, действительное значение TOS вдвое больше значение битов TOS. Tcpdump -v -v показывает значение всего поля TOS, а не только четырех битов. Это значение, которые вы видите в первом столбце следующей таблицы:
TOS Биты Значение Linux Приоритет Полоса --------------------------------------------------------------- 0x0 0 Обычное обслуживание 0 Best Effort 1 0x2 1 Минимизировать затраты 1 Filler 2 0x4 2 Макс. надежность 0 Best Effort 1 0x6 3 mmc+mr 0 Best Effort 1 0x8 4 Макс. пропускн. способн. 2 Bulk 2 0xa 5 mmc+mt 2 Bulk 2 0xc 6 mr+mt 2 Bulk 2 0xe 7 mmc+mr+mt 2 Bulk 2 0x10 8 Минимизировать задержку 6 Interactive 0 0x12 9 mmc+md 6 Interactive 0 0x14 10 mr+md 6 Interactive 0 0x16 11 mmc+mr+md 6 Interactive 0 0x18 12 mt+md 4 Int. Bulk 1 0x1a 13 mmc+mt+md 4 Int. Bulk 1 0x1c 14 mr+mt+md 4 Int. Bulk 1 0x1e 15 mmc+mr+mt+md 4 Int. Bulk 1
Второй столбец содержит значение соответствующих четырех битов TOS, за которыми следует их расшифрованное значение. К примеру, 15 обозначает пакет, которые требует минимальные денежные затраты, максимальную надежность, максимальную скорость прохождения и минимальную задержку.
Четвертый столбец перечисляет, каким образом ядро Linux интерпретирует биты TOS, и показывает, какие приоритеты ставятся им в соответствие.
Последний столбец показывает используемый по умолчанию priomap. В командной строке, priomap по умолчанию выглядит так:
1, 2, 2, 2, 1, 2, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1
Это означает, что приоритету 4, например, будет поставлена в соответствие полоса номер 1. priomap также разрешает использовать более высокие приоритеты (>7), которые не соответствуют значениям TOS, но устанавливаются другими способами.
Эта таблица из RFC 1349 (обратитесь к RFC за дополнительной информацией) объясняет, как приложения могут устанавливать свои биты TOS:
TELNET 1000 (минимальная задержка) FTP Control 1000 (минимизировать задержку) Data 0100 (макс. пропускн. способность) TFTP 1000 (минимизировать задержку) SMTP Command phase 1000 (минимальная задержка) DATA phase 0100 (макс. пропускн. способность) Domain Name Service UDP Query 1000 (минимальная задержка) TCP Query 0000 Zone Transfer 0100 (макс. пропускн. способность) NNTP 0001 (минимальные денежные затраты) ICMP Errors 0000 Requests 0000 (как правило) Responses <такой же, как и в Request> (как правило)
Закладки на сайте Проследить за страницей |
Created 1996-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |