Часть 14: Bound интерфейсы - github2wiki/SPBSUT_KURS GitHub Wiki

Немного про bonding

Что такое "объединение" (bonding) сетевых интерфейсов и как оно работает?

Под словом объединение будем подразумевать - портовый транкинг (автоматическое распределение каналов по требованию). В дальнейшем будет использоваться слово - "объединение" потому, что происходит практически объединение в единое целое.

Объединение позволяет совокупно собрать несколько портов в одну группу, эффективно объединяя пропускную способность в одном направлении. Объединение так же позволяет создавать мульти-гигабитные каналы для транспортировки трафика через высокопропускные районы вашей сети. Например, вы можете объединить два порта по 100 мегабит в 200 мегабитный магистральный порт. Это эквивалентно одному интерфейсу с пропускной способностью 200 мегабит.

Где я могу использовать подобное решение?

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

Какие типы режимов объединения доступны?

mod = 1 (active-backup)
Работает только один интерфейс, остальные находятся в очереди горячей замены. Если ведущий интерфейс перестает функционировать, то его нагрузку подхватывает следующий (присвоив mac-адрес) и становится активным. Дополнительная настройка коммутатора не требуется.

mode = 2 (balance-xor)
XOR политика: Передача на основе [(исходный MAC-адрес → XOR → MAC-адрес получателя) %число интерфейсов]. Эта команда выбирает для каждого получателя определенный интерфейс в соответствии с mac-адресом. Режим обеспечивает балансировку нагрузки и отказоустойчивость.

mode = 3 (broadcast)
Все пакеты передаются на все интерфейсы в группе. Режим обеспечивает отказоустойчивость.

mode = 4 (802.3ad)

  • IEEE 802.3ad Dynamic Link aggregation (динамическое объединение каналов). Создает агрегации групп, имеющие одни и те же скорости и дуплексные настройки. Использует все включенные интерфейсы в активном агрегаторе согласно спецификации 802.3ad.
  • Предварительнае реквизиты
  • Поддержка ethtool (позволяет отображать или изменять настройки сетевой карты) базы драйверов для получения скорости и дуплекса каждого интерфейса.
  • Коммутатор с поддержкой IEEE 802.3ad Dynamic Link aggregation. Большинство параметров потребует некоторой конфигурации для режима 802.3ad.

mode = 5 (balance-tlb)
Адаптивная балансировка передаваемой нагрузки: канал связи не требует какой либо специальной настройки. Исходящий трафик распределяется в соответствии с текущей нагрузкой (вычисляется по скоростям) для каждого интерфейса. Входящий трафик принимается текущим интерфейсом. Если принимающий интерфейс выходит из строя, то следующий занимает его место приватизировав его mac-адрес.

Поддержка ethtool (позволяет отображать или изменять настройки сетевой карты) базы драйверов для получения скорости и дуплекса каждого интерфейса.

mode = 6 (balance-alb)
Адаптивное перераспределение нагрузки: включает balance-tlb плюс receive load balancing (rlb) для трафика IPv4 и не требует специального конфигурирования. То есть все так же как и при mode =5, только и входящий трафик балансируется между интерфейсами. Полученная балансировка нагрузки достигается опросом ARP. Драйвер перехватывает ответы ARP, направленные в локальной системе в поисках выхода и перезаписывает исходный адрес сетевой карты с уникальным аппаратным адресом одного из интерфейсов в группе.

Настройка через утилиту ip

Ранее мы уже узнали про утилиту ip, и немного поговорили про синтаксис и основные комманды, в частности, посмотрели, что она может применительно к физическим интерфейсам. Теперь давайте посмотрим, как объединить два физических интерфейса (eth0 и eth1). Сперва нужно их отключить.

sudo ip link set dev eth0 down
sudo ip link set dev eth1 down

Теперь создадим новый интерфейс - bond0.

sudo ip link add name bond0 type bond

Установим режим работы интерфейса, нам нужен 4ый.

sudo ip link set dev bond0 type bond mode 802.3ad

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

sudo ip link set dev eth0 master bond0
sudo ip link set dev eth1 master bond0
sudo ip link set dev bond0 up

Готово. Интерфейс создан. Также нам надо удалить IP-адеса у физических интерфейсов, и добавить созданному. Или подключить его к другому интерфейсу, в зависимости от ваших потребностей. (Далее мы будем подключать к bond0 vlan интерфейс). Как удалять и добавлять IP-адрес к интерфейсу мы уже знаем.

Теперь посмотрим, как сконфигурировать интерфейс через файлы конфигурации сети.

Настройка через конфиги

Для того, чтобы создать интерфейс bond0, нужно:

  1. Создать файл конфигурации /etc/sysconfig/network-scripts/ifcfg-bond0, и поместить в него следующее:
TYPE=Bond
NAME=bond0
DEVICE=bond0
BONDING_MASTER=yes
BONDING_OPTS="mode=4 miimon=100"
ONBOOT=yes
  1. В файлах физических интерфейсов нужно добавить строки:
MASTER=bond0
SLAVE=yes

Здесь стоит пояснить параметр BONDING_OPTS. мы установили его как mode=4 miimon=100. miimon здесь определяет как часто будет проверяться состояние соединения на каждом из интерфейсов. Указывается в милисекундах.

Теперь перезагружаем сеть:

sudo systemctl restart network

Готово. Интерфейс настроен. Проверить его состояние можно так:

ip a