Всем привет! Хочу уточнить у знающих людей один момент по классовой дисциплине PRIO. Предысторию «зачем и почему» описывать не буду, дабы не утомлять большим количеством текста, перейду сразу к сути. По-умолчанию дисциплина PRIO создает 3 класса с приоритетами от 0 до 2 и распределяет трафик по меткам TOS, если нет заданных классификаторов или трафик не был классифицирован.
Мне для трафика, уходящего с интерфейса нужно создать 4 уровня приоритета, т.е. 4 класса, к примеру так:
tc qdisc add dev eth0 root handle 1: prio bands 4
Но вот правильно ли я понял следующий момент. Если трафик правильно классифицируется и попадает в нужные классы, то обрабатывается с приоритетом от 0 до 3 (соответственно для каждого класса), а неклассифицированный трафик обрабатывается по флагам TOS первыми 3мя классами: 1:1, 1:2, 1:3. Верно ли я это понимаю?
Или же все не так и нужно как то менять параметр priomap? Как его менять я честно говоря не понял. Нашел такой описание, а понять толком не могу, буду раз если кто-то поможет. :)
priomap classForPrio_0 classForPrio_1 ... classForPrio_15 This option defines a table which is used to assign a packet to a class based on its :priority:. It is only used if the packet is not assigned a class by a classifier. There is one entry in the table per packet priority, so the table has 16 entries. The first entry in the table contains the class number for priority 0 packets, the second entry contains the class number for priority 1 packets, and so on. Class number 0 means classid N:1, class number 1 means classid N:2, etc. The «priomap» option must be the last one in the command line. The «priomap» keyword is followed by the class numbers for each priority in asceding priority number order. If not specified this default priomap is used:
priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1
If you supply less than 16 class numbers the ones you do supply are used to fill in the first entries in the table. The default map is used for the remaining entries.