Bonding (port channel) интерфейсы

Интерфейсы Bonding являются виртуальными сетевыми интерфейсами, которые объединяют несколько физических сетевых интерфейсов для увеличения отказоустойчивости и пропускной способности канала. Данные интерфейсы работают в соответствии со стандартом IEEE 802.3ad (если настроен протокол LACP).

 

Внимание!

Запрещено объединять в один Bonding интерфейс физические интерфейсы, входящие в разные группы - доверенные и недоверенные. Например, запрещено объединять интерфейсы из LAN и WAN сегментов, так как физические интерфейсы, объединенные в Bonding, становятся неконтролируемыми с точки зрения СКЗИ и МЭ. Соответственно, политику СКЗИ и правили МЭ нужно применять на виртуальном Bonding интерфейсе, который является логическим объединением физических интерфейсов.

Bonding интерфейсы описываются в файлах /etc/network/interfaces.d/bondN.

Внимание!

Cisco-like консоль не поддерживает изменение сетевых параметров (MTU/IP адрес/состояние) для Bonding (port channel) интерфейсов.

Рассмотрим пример объединения физических интерфейсов eth1/eth2 в bonding интерфейс с протоколом LACP:

 

Внимание!

Если в файле /etc/network/interfaces  или в файлах директории /etc/network/interfaces.d/ присутствуют строки с настройками для интерфейсов eth1 и eth2, то необходимо их удалить (изменять файл /etc/ifaliases.cf относительно данных интерфейсов не нужно).

Внимание!

Bonding интерфейсы описываются в файлах /etc/network/interfaces.d/bondN

Если настройка интерфейсов выполняется в файлах в директории /etc/network/interfaces.d/, то в файле /etc/network/interfaces должна быть ссылка на указанную директорию вида:

source-directory /etc/network/interfaces.d

 

1.   Отредактируйте файл /etc/network/interfaces.d/bond0, добавив в него описание для Bonding (port channel) интерфейса, например:

root@sterragate:~# vim.tiny /etc/network/interfaces.d/bond0

auto bond0

iface bond0 inet static

address 192.168.2.1

netmask 255.255.255.0

mtu 1500

slaves eth1 eth2

bond_mode 802.3ad

bond_miimon 100

bond_xmit_hash_policy layer2+3

•   address <IP адрес> - IP адрес логического интерфейса bond0;

•   netmask <маска> - сетевая маска для IP адрес логического интерфейса;

•   mtu <значение> - параметр для задания MTU интерфейса; значение по умолчанию - 1500; при изменении MTU интерфейса bond0 меняется MTU и объединяемых интерфейсов eth1 и eth2;

      slaves <интерфейсы> - имена физических интерфейсов, объединяемых в агрегированный канал;

•   bond_mode - настройка, отвечающая за протокол, который обеспечивает работу агрегации каналов (в данном примере - это LACP, который основан на стандарте 802.3ad);

      bond_miimon <интервал> - параметр, определяющий интервал времени в миллисекундах. Через заданное время будет происходить проверка физических интерфейсов на их доступность;

•   bond_xmit_hash_policy - параметр, определяющий уровень (в соответствии с эталонной моделью OSI), на котором будет происходить вычисление хеш-функции для последующей балансировки трафика.

2.  Чтобы Bonding интерфейс bond0 появился в системе, выполните команду ifup bond0, после чего убедитесь, что данный интерфейс действительно доступен в системе, а интерфейсы eth1/eth2 добавлены в bond0:

root@sterragate:~# ifup bond0

root@sterragate:~# ip address show bond0

136: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000

    link/ether 00:50:56:9e:bf:69 brd ff:ff:ff:ff:ff:ff

    inet 192.168.2.1/24 brd 192.168.2.255 scope global bond0

       valid_lft forever preferred_lft forever

root@sterragate:~# ip address show eth1

3: eth1: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0 state UP group default qlen 1000

    link/ether 00:50:56:9e:bf:69 brd ff:ff:ff:ff:ff:ff

root@sterragate:~# ip address show eth2

4: eth2: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0 state UP group default qlen 1000

    link/ether 00:50:56:9e:bf:69 brd ff:ff:ff:ff:ff:ff

     Видно, что Bonding интерфейс bond0 присутствует в системе и сконфигурирован, а также интерфейсы eth1/eth2 добавлены в bond0. Расширенную информацию о bond0 можно посмотреть при помощи команды cat /proc/net/bonding/bond0.

3.  Добавьте Bonding интерфейс bond0 в файл /etc/ifaliases.cf:

root@sterragate:~# vim.tiny  /etc/ifaliases.cf

interface (name="GigabitEthernet0/0" pattern="eth0")

interface (name="GigabitEthernet0/1" pattern="eth1")

interface (name="GigabitEthernet0/2" pattern="eth2")

interface (name="Port-channel1" pattern="bond0")

interface (name="default" pattern="*")

•      значение параметра name должно быть задано в виде Port-channelN.

•      значение параметра pattern должно соответствовать имени Bonding интерфейса в нотации Linux.

4.  Пересчитайте контрольную сумму файлa /etc/ifaliases.cf:

root@sterragate:~# integr_mgr calc -f /etc/ifaliases.cf

 

 

SUCCESS:  Operation was successful.

5.  Перезапустите VPN сервис:

root@sterragate:~# systemctl restart vpngate.service

Теперь для интерфейса Port-channel1 можно задать политику СКЗИ и правила МЭ посредством cisco-like консоли или LSP.

Объединение физических интерфейсов в режиме Active-Passive описано в инструкции «Агрегирование сетевых интерфейсов» (http://doc.s-terra.ru/, Примеры дополнительных возможностей).