Андрей Елсуков опубликовал (http://butcher.heavennet.ru/patches/kernel/ipfw_tags/) патч для поддержки тэгирования пакетов в IPFW.
Патч добавляет в файрвол два новых модификатора tag и untag, и опцию tagged. Когда пакет обрабатывается правилом файрвола, модификатор tag N добавляется "маркер" (тэг) с номером N. Одновременно к пакету может быть прикреплено несколько различных тэгов. Они используются только внутри ядра системы и не передаются в сеть. При помощи модификатора untag тэг может быть удалён из пакета. Тэги могут быть добавлены либо удалены из пакета не только при помощи файрвола, а, например, при помощи специальной netgraph ноды. Для проверки наличия определённых тэгов в пакете используется опция tagged.Тэгирование пакетов может использоваться, например, для следующих задач:
- пометка пакетов до трансляции при помощи ng_nat или ipfw nat, с возможностью идентификации и фильтрации пакетов после трансляции;
- пометка пакетов проходящих через определённые netgraph ноды;
- пометка разными тэгами пакетов входящих на различные интерфейсы и настройка политик их фильтрации.URL: http://butcher.heavennet.ru/patches/kernel/ipfw_tags/
Новость: http://www.opennet.me/opennews/art.shtml?num=7528
"Теги используются только внутри ядра системы и не передаются в сеть"
Получается, что это не 802.1q метки, а другие. Это не очень интересно...
Для 802.1q используется vlan(4).
это как mark'и в iptables
или как tag/tagged, которые уже больше года как есть в OpenBSD's pf :)
Не "как". Отличие от iptables/pf в том, что можно вешать несколько тегов, а не только один (соответственно, можно несколько и проверить, конструкцией типа tagged 1-5,7,10). И снять тег потом можно (в pf нельзя, только заменить на другой).
Хотя самое вкусное, конечно, возможность работать с тегами и вне файрвола.
Было бы интересно иметь возможность forwarding'а пакетов с одного интерфейса на другой на основе 802.1q vlan tags, не имея при этом ip-адресов на этих интерфейсах и не создавая все 4096 vlan-интерфейсов на каждом; иметь возможность менять этот тэг, убирать или наоборот добавлять. В общем сделать что-то вроде коммутатора, который маршрутизирует трафик между своими интерфейсами-портами на основе vlan tag, ip/tcp/udp/icmp заголовка. Хотя многим покажется это ненужным/несерьезным.
А кто мешает сделать bridge.
Я уже и не говорю про цепочки с ng_vlan.
а по подробней тока в исходниках или ещё где почитать можно ?
А можно ползоват и TOS как сетевой таг на каждой пакет и филтрирават потом :-)