Агрегация сетевых интерфейсов на FreeBSD при помощи lagg в режиме LACP

При возникновении необходимости собирания нескольких физических каналов в один логический рекомендую посмотреть на протокол Link Aggregation Control Protocol (LACP)

Практическая часть.
Нужно либо собрать/пересобрать ядро с поддержкой lagg:

device lagg

либо каждый раз подгружать модулем при загрузке системы. Для этого в файл /boot/loader.conf
добавляем строчку:

if_lagg_load=»YES»»

или в файле /boot/defaults/loader.conf найти строчку

if_lagg_load=»NO»
и исправить ее на
if_lagg_load=»YES»

Далее что бы не перезагружать компьютер загружаем данный модуль в ручную

kldload if_lagg.ko

Проверяем, если ли он в загруженных:

# kldstat | grep lagg
Id Refs Address Size Name
1 2 0xffffffff80100000 5713f8 kernel
2 1 0xffffffffb0717000 4916 if_lagg.ko

Если добавили в ядро, то смотрим так:

# kldstat -v | grep lagg
400 if_lagg

Создадим и настроим интерфейс lagg0
(крайне рекомендую проделать эту процедуру один раз руками, дабы убедится что все работает)

ifconfig lagg0 create
ifconfig em2 up
ifconfig em3 up
ifconfig lagg0 laggproto lacp laggport em1 laggport re1 192.168.0.1 netmask 255.255.240.0

Параметр lacp означает что балансировка каналов будет происходить нагрузкой, и в случае падения одного из них, пускать весь трафик через оставшийся в живых.

Естественно что бы не заниматься подобным «шаманством» каждый раз добавляем все это в rc.conf

cloned_interfaces=»lagg0″
ifconfig_em2=»up»
ifconfig_em3=»up»
ifconfig_lagg0=» laggproto lacp laggport em2 laggport em3 192.168.0.1 netmask 255.255.240.0″

Следует отметить что интерфейсы в данном примере вы меняете на свои
Еще одна особенность: Если у вас один из интерфейсов был уже сконфигурен на какой либо адрес, то нужно его высвободить.

Правильным результатом должен быть примерно такой
#ifconfig
lagg0: flags=8843 metric 0 mtu 1500
options=209b
ether 00:1b:21:82:a2:5c
inet 192.168.0.1 netmask 0xfffff000 broadcast 192.168.15.255
media: Ethernet autoselect
status: active
laggproto lacp lagghash l2,l3,l4
laggport: em3 flags=18
laggport: em2 flags=1c