Что означают эти два оператора сценария QOS
Недавно я изучал утилиту QOS в Linux - TC, и сегодня я столкнулся с двумя нижеприведенными данными из сценария ограничения пропускной способности в Linux:
tc filter add dev eth0 parent 1: prio 1 protocol ip u32 \
match ip tos 0x68 0xff match ip protocol 0x11 0xff flowid 1:1
tc filter add dev eth0 parent 1: prio 1 protocol ip u32 \
match ip tos 0xb8 0xff match ip protocol 0x11 0xff flowid 1:1
Что это значит, говоря: "сопоставить ip tos 0x68 0xff соответствует ip protocol 0x11 0xff"?
1 ответ
С помощью универсального селектора u32 вы определяете шаблон для сопоставления с заголовком IP-пакета и маску для соответствия конкретным битам только с определенным смещением.
u32 match ip PATTERN MASK at OFFSET
Несколько совпадений логически "аннулированы", поэтому фильтр будет успешным, если все совпадения будут успешными. Давайте попробуем "расшифровать" ваш фильтр и его селекторы:
ip tos 0x68 0xff
Это может быть прочитано как проверка, имеет ли поле TOS заголовка IP значение 0x68 (маска 0xff, поэтому 0x68 И 0xff = 0x68). Я бы сказал, что это как-то связано с DSCP ( подробнее о значении 0x68).
ip protocol 0x11 0xff
Это проверяет, имеет ли поле протокола значение 0x11, которое является протоколом UDP. Вы можете найти номера протоколов в /etc/protocols
(для UDP 17 = 0x11)
ip tos
а также ip protocol
это так называемые конкретные селекторы, но вы можете переписать их в общей форме
u8 0x68 0xff at 1
u8 0x11 0xff at 9
Селектор u8 определяет длину шаблона для сопоставления в битах (другие - u32, u16). Затем используйте ту же логику, что и выше. Сопоставьте значение 0x68 в байте 1 в заголовке IP, которое является полем TOS, и значение 0x11 в байте 9, которое является полем протокола.
Наконец, я хотел бы добавить еще один пример, как сопоставить IP-пакеты с IP-адресом источника из конкретной сети (192.168.123.0/24):
u32 u32 0xc0a87b00 0xffffff00 at 12
Это соответствует только первым 3 байтам (0xc0 = 192, 0xa8 = 168, 0x7b = 123) поля в байте 12 из-за значения маски (0xc0 AND 0xff = 0xc0, ..., 0xXX AND 0x00 = 0x00). Это может быть записано с определенным селектором как
ip src 192.168.123/24
Если вы можете использовать конкретные селекторы, поскольку они легче понять. В заключение. эта картина может помочь с выбором правильных смещений, если вам нужно использовать общие.