У меня есть функционирующий классификатор трафика, который использует необработанные смещения пакетов для сопоставления MAC-адресов источника и/или назначения пакета. Фильтр использует отрицательное смещение, так как по умолчанию смещение = 0 — это начало IP-пакета. Это означает, что содержимое заголовка Ethernet предшествует этому.
Например, для MAC 12:34:56:78:90:ab:
tc filter добавить dev <iface> протокол ip parent 1:0 prio 1 u32 \
соответствует u16 0x0800 0xffff в -2 \
соответствует u32 0x90ab 0xffff при -12 \
совпадение u16 0x12345678 0xffffffff в -14 \
потокид 1:10
Сетевой канал теперь будет передавать трафик VLAN 802.1Q наряду с данными, не относящимися к VLAN. протокол IP
предотвращает сопоставление этого трафика. Вопрос в том, как построить аналогичное правило для VLAN-трафика? Я пытаюсь снова сделать отрицательное смещение, чтобы найти значение «Ethertype» 0x8100 для трафика DotQ, просто чтобы подтвердить мои предположения о смещении, но, похоже, не могу его найти или, по крайней мере, не может сопоставить Это. Пример ниже не соответствует трафику DotQ:
tc filter add dev <iface> parent 1:0 prio 1 u32 \
соответствует u16 0x8100 0xffff при -6 идентификатор потока 1:10
Мне не удалось найти документацию по тк
система, определяющая, что смещение=0
представляет собой. Это безоговорочно начало IP-заголовка или протокол IP
повлиять на это?