Teaming (bonding) на Debian Linux

Июль 29th, 2011 Рубрики: Linux, основы Linux, Сети

Доброго времени, гости и читатели www.k-max.name. Всех коллег спешу поздравить с профессиональным праздником!

объединение интерфейсов ethernet

Приурочиваю к празднику сегодняшнюю статью о возможности объединения сетевых интерфейсов для отказоустойчивости и увеличения пропускной способности. Называется это в Linux - BONDING интерфейсов, в windows - Teaming интерфейсов.

Типы агрегации (объединения) интерфейсов в Linux

mode=0 (balance-rr)

Этот режим используется по-умолчанию, если в настройках не указано другое. balance-rr обеспечивает балансировку нагрузки и отказоустойчивость. В данном режиме пакеты отправляются "по кругу" от первого интерфейса к последнему и сначала. Если выходит из строя один из интерфейсов, пакеты отправляются на остальные оставшиеся.При подключении портов к разным коммутаторам, требует их настройки.

mode=1 (active-backup)

При active-backup один интерфейс работает в активном режиме, остальные в ожидающем. Если активный падает, управление передается одному из ожидающих. Не требует поддержки данной функциональности от коммутатора.

mode=2 (balance-xor)

Передача пакетов распределяется между объединенными интерфейсами по формуле ((MAC-адрес источника) XOR (MAC-адрес получателя)) % число интерфейсов. Один и тот же интерфейс работает с определённым получателем. Режим даёт балансировку нагрузки и отказоустойчивость.

mode=3 (broadcast)

Происходит передача во все объединенные интерфейсы, обеспечивая отказоустойчивость.

mode=4 (802.3ad)

Это динамическое объединение портов. В данном режиме можно получить значительное увеличение пропускной способности как входящего так и исходящего трафика, используя все объединенные интерфейсы. Требует поддержки режима от коммутатора, а так же (иногда) дополнительную настройку коммутатора.

mode=5 (balance-tlb)

Адаптивная балансировка нагрузки. При balance-tlb входящий трафик получается только активным интерфейсом, исходящий - распределяется в зависимости от текущей загрузки каждого интерфейса. Обеспечивается отказоустойчивость и распределение нагрузки исходящего трафика. Не требует специальной поддержки коммутатора.

mode=6 (balance-alb)

Адаптивная балансировка нагрузки (более совершенная). Обеспечивает балансировку нагрузки как исходящего (TLB, transmit load balancing), так и входящего трафика (для IPv4 через ARP). Не требует специальной поддержки коммутатором, но требует возможности изменять MAC-адрес устройства.

Настройка bonding в Debian 6

Для корректной работы объединения интерфейсов необходимо установить пакет ifenslave-2.6 и проверить наличие модуля bonding:

root@bond-srv:~# apt-cache search ifenslave
ifenslave-2.6 - Attach and detach slave interfaces to a bonding device
root@bond-srv:~# modprobe -l | grep bondi
kernel/drivers/net/bonding/bonding.ko

Для настройки объединения интерфейсов необходимо отредактировать файл конфигурации сети до следующего вида:

root@bond-srv:~# cat /etc/network/interfaces
# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto bond0 eth0 eth1
# настроим параметры бонд-интерфейса
iface bond0 inet static
# адрес, маска, шлюз. (можно еще что-нибудь по вкусу)
        address 10.0.0.11
        netmask 255.255.255.0
        gateway 10.0.0.254
        # определяем подчиненные (объединяемые) интерфейсы
        bond-slaves eth0 eth1
        # задаем тип бондинга
        bond-mode balance-alb
        # интервал проверки линии в миллисекундах
bond-miimon 100
        # Задержка перед установкой соединения в миллисекундах
bond-downdelay 200
# Задержка перед обрывом соединения в миллисекундах
        bond-updelay 200

Далее перезапускаем сеть и видим как все работает:

root@bond-srv:~# /etc/init.d/networking stop && /etc/init.d/networking start
Deconfiguring network interfaces...
done.
Configuring network interfaces...
done.
root@bond-srv:~# ifconfig
bond0     Link encap:Ethernet  HWaddr 00:02:b3:b0:27:98
          inet addr:10.0.0.11  Bcast:10.0.0.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MASTER MULTICAST  MTU:1500  Metric:1
          RX packets:289786 errors:0 dropped:0 overruns:0 frame:0
          TX packets:144029 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:88731609 (84.6 MiB)  TX bytes:8668925 (8.2 MiB)

eth0      Link encap:Ethernet  HWaddr 00:02:b3:b0:27:98
          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1
          RX packets:144766 errors:0 dropped:0 overruns:0 frame:0
          TX packets:72000 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:44351263 (42.2 MiB)  TX bytes:4345219 (4.1 MiB)

eth1      Link encap:Ethernet  HWaddr 00:02:b3:b0:27:24
          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1
          RX packets:145020 errors:0 dropped:0 overruns:0 frame:0
          TX packets:72029 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:44380346 (42.3 MiB)  TX bytes:4323706 (4.1 MiB)

Диагностика bonding

Для проверки работы объединения интерфейсов необходимо просмотреть содержимое каталога /proc/net/bonding/ на наличие каждого из бонд-интерфейсов:

root@bond-srv:~# ls -la /proc/net/bonding/
итого 0
dr-xr-xr-x 2 root root 0 Июл 28 22:07 .
dr-xr-xr-x 5 root root 0 Июл 28 22:07 ..
-r--r--r-- 1 root root 0 Июл 28 22:07 bond0
root@bond-srv:~# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.5.0 (November 4, 2008)

Bonding Mode: adaptive load balancing
Primary Slave: eth0
Currently Active Slave: eth0
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 200
Down Delay (ms): 200

Slave Interface: eth0
MII Status: up
Link Failure Count: 0
Permanent HW addr: 00:02:b3:b0:27:98

Slave Interface: eth1
MII Status: up
Link Failure Count: 0
Permanent HW addr: 00:02:b3:b0:27:24

На сегодня это все. такая маленькая заметочка, как говориться "чтобы было".

Что еще почитать

Для более подробного ознакомления с объединением сетевых интерфейсов, советую почитать:

1. http://www.linuxfoundation.org/collaborate/workgroups/networking/bonding
2. http://www.kernel.org/doc/Documentation/networking/bonding.txt
3. http://www.opennet.ru/man.shtml?topic=etcnet-options&category=5&russian=0

С Уважением, Mc.Sim!




Теги: , , , , ,
Комментариев пока нет.

Написать комментарий