Век живи, век RTFM и все равно LMD
Народная мудрость
В официальной документации на сайте FreeBSD для настройки link aggregation в rc.conf
рекомендуется указать следующее:
ifconfig_fxp0="up"
ifconfig_fxp1="up"
cloned_interfaces="lagg0"
ifconfig_lagg0="laggproto lacp laggport fxp0 laggport fxp1 10.0.0.15/24"
Но правильно ли это? Если Вы не планируете использовать 802.1q на агрегированном интерфейсе, то Вам должно быть всё равно и дальше можно не читать.
А если всё же надо?
Тогда, следуя авторской логике, в rc.conf
надо будет написать что-то типа:
ifconfig_fxp0="up"
ifconfig_fxp1="up"
cloned_interfaces="lagg0 lagg0.2 lagg0.4"
ifconfig_lagg0="laggproto lacp laggport fxp0 laggport fxp1 up"
ifconfig_lagg0_2="inet 10.0.2.15/24"
ifconfig_lagg0_4="inet 10.0.4.16/24"
Если так и поступить, то операционная система сделает вид, что так и надо, и, не выдав ни одного предупреждения, загрузится.
Но, если внимательно посмотреть, то можно заметить одну маленькую проблему: на тэгированных интерфейсах MTU окажется равным 1496:
lagg0.2: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1496
Почему это произошло?
В процессе загрузки ОС сначала создаёт все интерфейсы, перечисленные в cloned_interfaces
. Таким образом, на момент создания тэгированных интерфейсов lagg0.2
и lagg0.4
их родительский интерфейс lagg0
еще не имеет ни одного физического порта. Так как теоретически в lagg0
могут быть добавлены интерфейсы, которые не поддерживают длину фрейма 1522 байта, то ОС перестраховывается и уменьшает MTU для тэгированных интерфейсов на 4.
Для того, чтобы этого избежать, на момент создания тэгированных интерфейсов родительский интерфейс уже должен знать свои порты, а для этого добавление портов необходимо перенести на момент создания интерфейса. Правильный rc.conf
должен выглядеть так:
ifconfig_fxp0="up"
ifconfig_fxp1="up"
cloned_interfaces="lagg0 lagg0.2 lagg0.4"
create_args_lagg0="laggproto lacp laggport fxp0 laggport fxp1"
ifconfig_lagg0="up"
ifconfig_lagg0_2="inet 10.0.2.15/24"
ifconfig_lagg0_4="inet 10.0.4.16/24"
После загрузки с таким конфигурационным файлом Вы получите корректное значение MTU для тэгированных интерфейсов:
lagg0.2: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
P.S. Если тэгированный интерфейс при загрузке получил MTU 1496, то изменить его на 1500 уже не получится. При этом создаваемые уже после загрузки интерфейсы будут получать MTU 1500.