Распределение MAC-адресов для интерфейса с объединением каналов

Вопрос или проблема

Я настроил Channel-bonding (на RHEL/CentOS) с параметром balance-alb (mode=6):

BONDING_OPTS="mode=balance-alb miimon=100 updelay=200 downdelay=200"

который работает корректно, и согласно /proc/net/bonding/bond0, активный slave – eth1.

[root@baba ~]# cat /proc/net/bonding/bond0
Драйвер Ethernet Channel Bonding: v3.4.0-1 (7 октября 2008)

Режим Bonding: адаптивный баланс нагрузки
Основной Slave: отсутствует
Текущий активный Slave: eth1
Состояние MII: активно
Интервал опроса MII (мс): 100
Задержка включения (мс): 200
Задержка выключения (мс): 200

Интерфейс Slave: eth0
Состояние MII: активно
Скорость: 1000 Мбит/с
Дуплекс: полный
Количество отказов связи: 0
Постоянный HW адрес: 00:19:00:00:00:fb

Интерфейс Slave: eth1
Состояние MII: активно
Скорость: 1000 Мбит/с
Дуплекс: полный
Количество отказов связи: 0
Постоянный HW адрес: 00:06:11:11:11:3b

(я намеренно заменил средние биты MAC-адреса на 00 и 11)

Теперь, согласно ifconfig, распределение MAC-адресов для eth0 и eth1 отличается (от вывода выше) – они поменялись местами.

[root@baba ~]# ifconfig | sed -n '/^[a-z]*[0-9]/p'
bond0     Link encap:Ethernet  HWaddr 00:19:00:00:00:FB  
eth0      Link encap:Ethernet  HWaddr 00:06:11:11:11:3B  
eth1      Link encap:Ethernet  HWaddr 00:19:00:00:00:FB  

Кто-нибудь знает, почему я вижу это или как это работает? Заранее спасибо.
С уважением!!

1) eth0 присоединяется к bond, и bond берет MAC-адрес eth0.

2) eth1 присоединяется к bond.

3) По какой-то причине eth1 становится активным slave, и наблюдается следующее поведение:

Если принимающий slave выходит из строя, другой slave
перенимает MAC-адрес вышедшего из строя
принимающего slave.

Источник: https://www.kernel.org/doc/Documentation/networking/bonding.txt

Изменение MAC-адреса, похоже, работает как ожидалось.

Ответ или решение

Настройка и управление сетевыми интерфейсами с использованием технологии агрегирования каналов (Channel bonding) — это востребованная задача в современных сетевых инфраструктурах. В рассматриваемом случае на Red Hat Enterprise Linux (RHEL) или CentOS используется режим балансировки нагрузки balance-alb (mode=6), который обеспечивает адаптивное распределение нагрузки среди доступных сетевых интерфейсов.

Теоретическая часть

Агрегирование каналов позволяет объединить несколько физических интерфейсов в один логический интерфейс, что повышает пропускную способность и надежность сетевого соединения. В случае с режимом balance-alb, система автоматически распределяет входящую и исходящую нагрузку между различными интерфейсами, основываясь на алгоритме адаптивной балансировки нагрузки.

Особенностью режима balance-alb является то, что он берет на себя ответственность за распределение трафика, используя MAC-адреса, что также включает в себя динамическое изменение MAC-адресов сетевых интерфейсов. Это вызвано необходимостью обеспечить корректное распределение трафика и возможность переключений на новых активных интерфейсах.

Пример из вашего случая

В вашем примере конфигурация для bond0 установлена с параметрами mode=balance-alb miimon=100 updelay=200 downdelay=200, что указывает на использование адаптивной балансировки нагрузки и настройки моментов переключения при изменении состояния интерфейсов.

Вы наблюдаете, что активным ведомым интерфейсом (Active Slave) является eth1, но при этом происходит смена MAC-адресов между eth0 и eth1.

Из вывода /proc/net/bonding/bond0 видно, что eth0 и eth1 имеют определенные MAC-адреса:

  • eth0: 00:19:00:00:00:fb
  • eth1: 00:06:11:11:11:3b

Однако в выводе команды ifconfig указано, что:

  • Для bond0 MAC-адрес совпадает с eth0: 00:19:00:00:00:FB
  • eth0 имеет MAC-адрес 00:06:11:11:11:3B
  • eth100:19:00:00:00:FB

Применение знаний

Данная ситуация характерна для режима balance-alb, в котором для обеспечения балансировки и отказоустойчивости MAC-адрес логического канала (bond0) может быть перенесен на активный интерфейс, в данном случае eth1. Это сделано для того, чтобы обеспечить правильное распределение трафика и чтобы в случае сбоя трафик не потерялся, а перенаправлялся через оставшиеся действующие интерфейсы.

Причина таких изменений заключается в том, что при использовании balance-alb необходимо обеспечить доступность систем, даже если один из интерфейсов отключен. Когда eth1 стал активным интерфейсом, его MAC-адрес логически заменяется на тот, что был назначен bond0, а eth0 получает временно назначенный MAC-адрес. В документе network bonding указано, что подобное поведение правильно и вовсе не является аномалией.

Для подтверждения этого поведения можно рассмотреть следующие аспекты:

  1. Конфигурационные файлы: убедитесь, что конфигурационные файлы сетевых интерфейсов корректно настроены и нет ручных изменений MAC-адресов.

  2. Linux bonding driver: он самостоятельно управляет распределением MAC-адресов для обеспечения отказоустойчивости и балансировки нагрузки.

  3. Документация: в зависимости от версии ядра Linux документация по сетевому драйверу bonding может содержать дополнительные детали о том, как конкретные режимы влияют на MAC-адресацию.

Таким образом, наблюдаемое поведение считается нормальным для balance-alb и является частью механизма обеспечения надежности и эффективной балансировки сетевой нагрузки. Рекомендуется детально изучить документацию на используемую версию системы и драйвера, чтобы лучше понять нюансы управления агрегированием каналов.

Оцените материал
Добавить комментарий

Капча загружается...