Discussion:
ng_netflow on vlans ifaces
(слишком старое сообщение для ответа)
Mike Yurlov
2009-10-13 16:14:32 UTC
Permalink
Приветствую!

Подскажите правильную схему подсчета трафика с использованием
ng_netflow на интерфейсе, через который идёт .1q трафик.
Hапример имеем физический bge0 на котором есть vlan[0-20]. Hужно
посчитать отдельно входящий, отдельно исходящий. Часть трафика
проходит через pf-nat.

С нетграфом я не очень, и если со схемами без виланов более-менее
быстро разобрался, то тут прямо заклинило. Из того что нагуглил и понял:
варианты следующие:
- цеплять netflow-ноду через tee или напрямую к физич.интерфейсу bge0
(при этом получаем трафик только в одном направлении)
- цеплять к ether (при этом получаем сумму in/out без разделения)
- использовать ноды vlan, пока не разобрался в сути и плюсах-минусах.

Так всё-же к чему и через что цепляться? Пните в направлении
правильных схем. Глеб может пинать со страшной силой :)

Интересуют варианты по критериям:
1)максимально просто в конфигурировании с учетом изменений/реконфигураций
2)максимально шустро по производительности


Чуть не забыл. FreeBSD на текущий момент релизы 6.х. При необходимости
можно проапдейтить/переставить.


WBR, UMike
Alexey Markov
2009-10-14 10:45:15 UTC
Permalink
Рад видеть тебя, Mike!
Помнится, 13 октября 2009 в 20:14 ты писал :

MY> - цеплять netflow-ноду через tee или напрямую к физич.интерфейсу bge0
MY> (при этом получаем трафик только в одном направлении)

С помощью split элементарно делается в обоих направлениях. У меня это
выглядит как-то так:

$NGCTL -f- <<-SEQ
mkpeer vlan2: split upper mixed
name vlan2:upper splitup
mkpeer vlan2: split lower mixed
name vlan2:lower splitlo
mkpeer splitup: netflow out iface0
name splitup:out netflow

connect splitup: netflow: in out1
connect splitlo: netflow: out iface1
connect splitlo: netflow: in out0

mkpeer netflow: ksocket export inet/dgram/udp
msg netflow:export connect inet/127.0.0.1:4444
SEQ
--
С уважением, Алексей Марков.
Mike Yurlov
2009-10-14 12:27:09 UTC
Permalink
Post by Alexey Markov
MY> - цеплять netflow-ноду через tee или напрямую к физич.интерфейсу bge0
MY> (при этом получаем трафик только в одном направлении)
AM> С помощью split элементарно делается в обоих направлениях. У меня это
AM> выглядит как-то так:

Это я всё понимаю. Кстати начиная с 7.2-RELEASE можно и без split делать
(появилась
возможность считать и egress). Имелось в виду следующее (уже написано до
меня)
----- Cut-----
ifconfig vlan10 create
ifconfig vlan10 vlandev em0 vlan 10
ifconfig vlan10 10.10.0.2/24

ngctl mkpeer em0: tee lower left
ngctl name em0:lower tee0
ngctl conn em0: tee0: upper right

напускаем в em0 тэгированного трафика, либо смотрим на живом роутере.
результат один и тот же:
nghook -a tee0: left2right - трафик есть.
nghook -a tee0: right2left - трафика нет!!

т.е. в нетграф попадают только пакеты входящие в тазик, а исходящие
благополучно проходят мимо нетграфа прямиком на сетевой интерфейс.
----- Cut-----

Меня конечно не затруднит создать для каждого вилана описанную тобой
структуру и зацепить всё это на одну ноду нетграфа, хотелось просто узнать
существуют ли другие варианты. Я не первый и не последний задаю этот вопрос.
Мне-то еще просто, у меня виланов десятки. А представь граф в случае vlan
per user когда на машине сотни vlan-интерфейсов. Выглядит вот так
Loading Image...

Как вариант мне придумалось еще так: к ether физического интерфейса цепляем
tee (как в примере выше), к нему ноду vlan (или две), где создать с помощью
addfilter хуки для каждого вилана и эти хуки прицепить к netflow. Тоже
достаточно громоздко, но может быть проще оперировать при создании/удалении
виланов т.к. требуется только удалить фильтр или добавить фильтр и хук к
netflow. Hо всё равно неработоспособно из за указанного выше.

WBR, UMike

Loading...