Что означают эти два оператора сценария 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

Если вы можете использовать конкретные селекторы, поскольку они легче понять. В заключение. эта картина может помочь с выбором правильных смещений, если вам нужно использовать общие.

введите описание изображения здесь

Другие вопросы по тегам