Агрегация сетевых интерфейсов в Debian Lenny

Объеденение двух сетевых интерфейсов в один в терминологии Windows называется teaming, а в терминологии Linux — bonding. Этот режим может использоваться для повышения отказоустойчивости и/или пропускной способности сетевого подключения.

Linux поддерживает несколько режимов агрегации интерфейсов:

  • 0 (balance-rr) — round-robin распределение пакетов между интерфейсами. Обеспечивает отказоустойчивость и повышение пропускной способности.
  • 1 (active-backup) — в каждый момент времени работает только один интерфейс, в случае его выхода из строя, mac-адрес назначается второму интерфейсу и трафик переключается на него.
  • 2 (balance-xor) — обеспечивает балансировку между интерфейсами на основании MAC-адресов отправителя и получателя.
  • 3 (broadcast) — отправляет пакеты через все интерфейсы одновременно, обеспечивает отказоустойчивость.
  • 4 (802.3ad) — обеспечивает агрегацию на основании протокола 802.3ad.
  • 5 (balance-tlb) — в этом режиме входящий трафик приходит только на один «активный» интерфейс, исходящий же распределяется по всем интерфейсам.
  • 6 (balance-alb) — балансирует исходящий трафик как tlb, а так же входящий IPv4 трафик используя ARP.

Настроим агрегацию сетевых интерфейсов eth0 и eth1 в один bond0, используя round-robin алгоритм балансировки пропускной способности.

Установим ifenslave:

root@localhost:~$ apt-get install ifenslave-2.6

Далее нужно привести конфиг /etc/network/interfaces примерно к такому виду:

auto bond0
iface bond0 inet static
        address 192.168.0.2
        netmask 255.255.255.0
        network 192.168.0.0
        broadcast 192.168.0.255
        gateway 192.168.0.1
        up /sbin/ifenslave bond0 eth0 eth1
        down /sbin/ifenslave -d bond0 eth0 eth1

Создаем файл /etc/modprobe.d/bonding.conf:

alias bond0 bonding
options bonding mode=0 miimon=100 downdelay=200 updelay=200

Добавляем модуль bonding в /etc/modules:

root@localhost:~$ echo "bonding" >> /etc/modules

Перезапускаем службу настройки сети:

root@localhost:~$ invoke-rc.d networking restart

Если все получилось, выглядеть должно примерно так:

root@localhost:~$ ifconfig
bond0     Link encap:Ethernet  HWaddr 00:1e:58:99:f2:a0
          inet addr:192.168.0.2  Bcast:192.168.0.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MASTER MULTICAST  MTU:1500  Metric:1
          RX packets:6533845 errors:0 dropped:0 overruns:0 frame:0
          TX packets:6583132 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:3584238626 (3.3 GiB)  TX bytes:5339636447 (4.9 GiB)

eth0      Link encap:Ethernet  HWaddr 00:1e:58:99:f2:a0
          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1
          RX packets:3741006 errors:0 dropped:0 overruns:0 frame:0
          TX packets:3291562 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:1893688937 (1.7 GiB)  TX bytes:2677192063 (2.4 GiB)
          Interrupt:21

eth1      Link encap:Ethernet  HWaddr 00:1e:58:99:f2:a0
          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1
          RX packets:2792839 errors:0 dropped:0 overruns:0 frame:0
          TX packets:3291570 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:1690549689 (1.5 GiB)  TX bytes:2662444384 (2.4 GiB)
          Interrupt:28 Base address:0xa000

Мысль на тему “Агрегация сетевых интерфейсов в Debian Lenny”

Комментирование закрыто.