> А можно поподробнее как-нить объяснить? Просто я пока только фрю начал изучать
> досконально, и таких тонкостей настойки нетграфа к сожалению не знаю...нода ng_ether подключена интерфейсу, у неё есть хуки:
lower - со стороны самой железки, те все полученные пакеты из сети здесь, если сюда что то подключено
upper - это со стороны ядра фри, здесь все пакеты которые вышли из сетевого стёка фри (которые она сама сгенерировала, например ссш, веб сервер и которые идут через неё транзитом в виде маршрутизации (роутинг) или нат)
Если к хукам ничего не подключено, нода ведёт себя так как будто одни соединены - те пакеты из сети прямиком идут в сетевой стёк, а пакеты из сетевого стёка идут в сеть.
Когда мы подключаем бпф, то настраиваем её так, чтобы все пакеты от upper хуков всегда уходили в lower хуки той же ноды.
А пакеты с lower хука попадают в upper хук той же ноды только если они не мультикаст, если же они мультикаст то мы их пересылаем на lower хук другой ноды, и в сетевой стёк они не попадают вообще.
Мультикаст определяется по установленному младшему биту в первом байте адреса назначения ethernet заголовка, так же введены дополнительные провеки: эзернет пакет должен содержать в себе IPv4 пакет, IPv4 должен содержать IGMP либо UPD, юдп мултикаст пересылается только в внешнего интерфейса на внутренний, игмп в обе стороны - там две немного разных программы для bpf.