This is an old revision of the document!
По неизвестной причине использование if_lagg и двух сетевых адаптеров igb на FreeBSD 10.1 amd64 приводило к большой нагрузке на CPU, потере пакетов и потере связи.
Реализация объединения сетевых адаптеров средствами netgraph не подвержена подобной проблеме.
Cкрипт: ng_lagg.sh
ng_lagg.sh start auto em0 em1 igb0
Создаст интерфейс ngeth0 (ngethX - если X-1 существует), добавит в него адаптеры em0,em1 и igb0.
Также будет сгенерирован и установлен случайный мак адрес.
ng_lagg.sh start xxxLAGG em0 em1 igb0
Создаст интерфейс с именем xxxLAGG, остальное как в примере выше.
Имя интерфейса произвольное.
1. Имя интерфейса не должно содержать: “.” и “:”.
Это ограничение netgraph.
Подробнее: man 4 netgraph
2. В LAGG на базе netgraph можно добавлять только сетевые интерфейсы к которые работают с нодой ng_ether.
Список доступных интерфейсов можно увидеть так:
ngctl list | grep ether
Если ничего нет, то убедитесь что нода ng_ether загружена, или загрузите:
kldload ng_ether
ng_lagg.sh stop ngeth0
или
ng_lagg.sh stop xxxLAGG
в зависимости от названия интерфейса.
ng_lagg.sh if_add xxxLAGG igb1
ng_lagg.sh if_del em0
Проверки на принадлежность интерфейса к какому либо lagg на базе netgrapf не производится.
Код просто отключает lower хук интерфейса не производя никаких проверок.
kldload ng_ether ifconfig igb0 up ifconfig igb1 up ngctl msg igb0: setpromisc 1 ngctl msg igb1: setpromisc 1 ngctl msg igb0: setautosrc 0 ngctl msg igb1: setautosrc 0 ngctl mkpeer igb0: one2many lower many0 ngctl name igb0:lower lagg0 ngctl connect igb1: lagg0: lower many1 ngctl mkpeer lagg0: vlan one downstream ngctl name lagg0:one lagg0_vlan ngctl mkpeer lagg0_vlan: eiface vlan21 ether ngctl name lagg0_vlan:vlan21 ngvlan21 ifconfig ngeth0 name ngvlan21 ifconfig ngvlan21 link 00:1a:4d:55:9a:44 ifconfig ngvlan21 inet 192.168.0.20 netmask 255.255.255.0 ngctl msg lagg0_vlan: addfilter '{ vid=21 hook="vlan21" }'