Linux Advanced Routing & Traffic Control HOWTO (Hubert, Graf) - страница 32

Каждая из дисциплин имеет свои достоинства и недостатки. Не все из них досконально протестированы.

9.2.1. pfifo_fast

Эта дисциплина работает, как видно из названия, по принципу "первым пришел, первым ушел" (First In, First Out). Это означает, что ни один пакет не получает специальной обработки. Однако это не совсем так. Данная очередь имеет три, так называемых, "полосы". В каждой "полосе" пакеты обрабатываются по принципу FIFO. Но полоса 1 не будет обслуживаться до тех пор, пока есть пакеты в полосе 0. Аналогично, пока есть пакеты в полосе 1, не обрабатывается полоса 2.

Ядро учитывает значение поля пакета Type of Service, и направляет пакеты с установленным флагом 'минимальная задержка' в полосу 0.

Не путайте эту простую бесклассовую дисциплину с классовой дисциплиной PRIO! Хотя они ведут себя похожим образом, pfifo_fast является бесклассовой и вы не можете добавлять к ней другие дисциплины командой tc.

9.2.1.1. Параметры и использование

Вы не можете конфигурировать pfifo_fast, поскольку ее параметры жестко "зашиты". Вот ее конфигурация по умолчанию:

priomap

Определяет отображение пакетных приоритетов, присвоенных ядром, в полосы. Отображение основывается на значении поля TOS, которое выглядит следующим образом:

>   0     1     2     3     4     5     6     7

>+-----+-----+-----+-----+-----+-----+-----+-----+

>|                 |                       |     |

>|   PRECEDENCE    |          TOS          | MBZ |

>|                 |                       |     |

>+-----+-----+-----+-----+-----+-----+-----+-----+

Четыре бита TOS (поле TOS) определяются так:

ДвоичнДесятичнЗначение 
10008Минимизировать задержку (md)
01004Максимальная пропускная способность (mt)
00102Максимальная надежность (mr)
00011Минимальная стоимость (mmc)
00000Обычное обслуживание

Поскольку справа еще есть 1 бит, реальное значение поля TOS вдвое больше значения битов TOS. Команда tcpdump –v –v выводит значение всего поля TOS, а не только четырех бит. Оно приведено в первой колонке таблицы:

TOSБитыЗначениеПриоритет LinuxПолоса
0x00Normal Service0 Best Effort1
0x21Minimize Monetary Cost 1 Filler 2
0x42Maximize Reliability0 Best Effort1
0x63mmc+mr0 Best Effort1
0x84Maximize Throughput 2 Bulk2
0xa5mmc+mt2 Bulk2
0xc6mr+mt2 Bulk2
0xe7mmc+mr+mt2 Bulk2
0x108Minimize Delay6 Interactive0
0x129mmc+md6 Interactive0
0x1410mr+md6 Interactive0
0x1611mmc+mr+md6 Interactive0
0x1812mt+md4 Int. Bulk1
0x1a13mmc+mt+md4 Int. Bulk1
0x1c 4mr+mt+md4 Int. Bulk1
0x1e15mmc+mr+mt+md4 Int. Bulk1

Куча цифр. Вторая колонка содержит значение четырех значимых битов поля TOS, а в третьей расшифровывается значение. Например, 15 означает минимальную стоимость (Minimal Monetary Cost), максимальную надежность (Maximum Reliability), максимальную полосу пропускания (Maximum Throughput) и минимальную задержку (Minimum Delay).