Как настроить MC-LAG

Для корректной работы MC-LAG необходимо произвести настройки на стороне сервера

Настройка MC-LAG на CentOS (lacp)

1. Подключаемся к серверу через IPMI.

2. Проверяем что модуль Bonding загружен:

~]$ modinfo bonding

filename:       
/lib/modules/3.10.0-1160.21.1.el7.x86_64/kernel/drivers/net/bonding/bonding.ko.xz
author:          Thomas Davis, tadavis@lbl.gov and many others
description:     Ethernet Channel Bonding Driver, v3.7.1
version:         3.7.1
license:         GPL
alias:           rtnl-link-bond
retpoline:       Yrhelversion:    7.9
srcversion:      3B2F8F8533AEAE2EB01F706
depends:
intree:          Y
vermagic:        3.10.0-1160.21.1.el7.x86_64 SMP mod_unload modversions
signer:          CentOS Linux kernel signing key

3. Создаем бонд интерфейс (ifcfg-bond0), в каталоге “/etc/sysconfig/network-scripts/”:

~]# cat /etc/sysconfig/network-scripts/ifcfg-bond0

DEVICE=bond0
NAME=bond0
TYPE=Bond
BONDING_MASTER=yes
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=none
DEFROUTE=yes
BONDING_OPTS="mode=802.3ad xmit_hash_policy=layer2+3 lacp_rate=1 miimon=100 min_links=1"
IPADDR=91.142.85.44
PREFIX=24
GATEWAY=91.142.85.1
DNS1=91.142.80.1
DNS2=91.142.82.1

Через строку BONDING_OPTS можно задавать параметры для данного интерфейса, со списком параметров можно ознакомится через modinfo bonding. NM_CONTROLLED="no" - запрещает NetworkManager перезаписывать данный файл, при использовании CentOS 8 строку NM_CONTROLLED="no" необходимо удалить.

4. Изменим настройки физических интерфейсов, для этого выясним их названия:

~]# ip a

1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 
scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 
scope host valid_lft forever preferred_lft forever 
2: enp1s0f0: mtu 1500 qdisc mq master bond0 state UP group default qlen 1000 
link/ether 52:82:e4:5d:d5:82 brd ff:ff:ff:ff:ff:ff 
3: enp1s0f1: mtu 1500 qdisc mq master bond0 state UP group default qlen 1000 
link/ether 52:82:e4:5d:d5:82 brd ff:ff:ff:ff:ff:ff 

В данном примере имена интерфейсов enp1s0f1 и enp1s0f1, однако они могут отличаться.

Далее вносим изменения в настройки сетевых интерфейсов:
~]# cat /etc/sysconfig/network-scripts/ifcfg-enp1s0f0

DEVICE=enp1s0f0
TYPE=Ethernet
MASTER=bond0                                                                                                                                                                                                                                                            
SLAVE=yes 
BOOTPROTO=none                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 
ONBOOT=yes                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              
NM_CONTROLLED=no

~]# cat /etc/sysconfig/network-scripts/ifcfg-enp1s0f1

DEVICE=enp1s0f1
TYPE=Ethernet
MASTER=bond0                                                                                                                                                                                                                                                            
SLAVE=yes 
BOOTPROTO=none                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 
ONBOOT=yes                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
NM_CONTROLLED=no

При использовании CentOS 8 строку NM_CONTROLLED="no" необходимо удалить

5. Перезапускаем network сервис и проверяем что интерфейс bond0 работает:

~]$ ifdown enp1s0f0 && ifup enp1s0f0
~]$ ifdown enp1s0f1 && ifup enp1s0f1
~]$ cat /proc/net/bonding/bond0

Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)

Bonding Mode: IEEE 802.3ad Dynamic link aggregation
Transmit Hash Policy: layer2+3 (2)
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0

802.3ad info
LACP rate: fast
Min links: 1
Aggregator selection policy (ad_select): stable
System priority: 65535
System MAC address: 3c:ec:ef:20:3d:1a
Active Aggregator Info:
       Aggregator ID: 1
       Number of ports: 2
       Actor Key: 9
       Partner Key: 3
       Partner Mac Address: c0:bf:a7:ae:b0:f7

Slave Interface: enp1s0f0
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 3c:ec:ef:20:3d:1a
Slave queue ID: 0
Aggregator ID: 1
Actor Churn State: none
Partner Churn State: none
Actor Churned Count: 0
Partner Churned Count: 0
details actor lacp pdu:
   system priority: 65535
   system mac address: 3c:ec:ef:20:3d:1a
   port key: 9
   port priority: 255
   port number: 1
   port state: 63
details partner lacp pdu:
   system priority: 127
   system mac address: c0:bf:a7:ae:b0:f7
   oper key: 3
   port priority: 127
   port number: 8
   port state: 63

Slave Interface: enp1s0f1
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 3c:ec:ef:20:3d:1b
Slave queue ID: 0
Aggregator ID: 1
Actor Churn State: none
Partner Churn State: none
Actor Churned Count: 0
Partner Churned Count: 0
details actor lacp pdu:
   system priority: 65535
   system mac address: 3c:ec:ef:20:3d:1a
   port key: 9
   port priority: 255
   port number: 2
   port state: 63
details partner lacp pdu:
   system priority: 127
   system mac address: c0:bf:a7:ae:b0:f7
   oper key: 3
   port priority: 127
   port number: 7
   port state: 63

Настройка MC-LAG на Debian 9 и 10 (lacp)

1. Подключаемся к серверу через IPMI.

2. Устанавливаем пакет для включения бондинга:

~]# apt-get install ifenslave

3. Выключаем сетевые интерфейсы:

~]# ifdown eth0 (Выполните для всех интерфейсов, которые планируете включить в агрегацию)

~]# /etc/init.d/networking stop

4. Вносим изменения в файл “/etc/network/interfaces”:

~]# cat /etc/network/interfaces

auto bond0 

iface bond0 inet static 
    address 91.142.85.44
    netmask 255.255.255.0
    network 91.142.95.0
    gateway 91.142.85.1
    dns-nameservers 91.142.80.1 91.142.82.1
    slaves eth0 eth1
    bond-mode 802.3ad
    bond_lacp_rate fast
    bond-miimon 100
    bond-downdelay 100
    bond-updelay 100
    bond-xmit-hash-policy layer2+3

5. Поднимаем интерфейс bond0 и проверяем:

# ifup bond0 
# /etc/init.d/networking start 
# 
# cat /proc/net/bonding/bond0 

Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011) 

Bonding Mode: IEEE 802.3ad Dynamic link aggregation
Transmit Hash Policy: layer2 (0) 
MII Status: up 
MII Polling Interval (ms): 100 
Up Delay (ms): 200 
Down Delay (ms): 200 

802.3ad info 
LACP rate: slow 
Min links: 0 
Aggregator selection policy (ad_select): stable 
System priority: 65535 
System MAC address: 3c:ec:ef:20:3d:1a 
Active Aggregator Info: 
           Aggregator ID: 6 
           Number of ports: 2 
           Actor Key: 9 
           Partner Key: 3 
           Partner Mac Address: c0:bf:a7:ae:b0:f7

Slave Interface: eth0 
MII Status: up 
Speed: 1000 Mbps 
Duplex: full 
Link Failure Count: 0 
Permanent HW addr: 3c:ec:ef:20:3d:1a 
Slave queue ID: 0 
Aggregator ID: 5 
Actor Churn State: monitoring 
Partner Churn State: monitoring 
Actor Churned Count: 0 
Partner Churned Count: 0 
details actor lacp pdu: 
    system priority: 65535 
    system mac address: 3c:ec:ef:20:3d:1a 
    port key: 9 
    port priority: 255 
    port number: 1 
    port state: 69 
details partner lacp pdu: 
    system priority: 65535 
    system mac address: 00:00:00:00:00:00 
    oper key: 1 
    port priority: 255 
    port number: 1 
    port state: 1 

Slave Interface: eth1 
MII Status: up 
Speed: 1000 Mbps 
Duplex: full 
Link Failure Count: 0 
Permanent HW addr: 3c:ec:ef:20:3d:1b 
Slave queue ID: 0 
Aggregator ID: 6 
Actor Churn State: monitoring 
Partner Churn State: monitoring 
Actor Churned Count: 0 
Partner Churned Count: 0 
details actor lacp pdu: 
    system priority: 65535 
    system mac address: 3c:ec:ef:20:3d:1a 
    port key: 9 
    port priority: 255 
    port number: 2 
    port state: 61 
details partner lacp pdu: 
    system priority: 127 
    system mac address: c0:bf:a7:ae:b0:f7 
    oper key: 3 
    port priority: 127 
    port number: 7 
    port state: 63

Настройка MC-LAG на Ubuntu 18.04 и 20.04 (lacp)

1. Подключаемся к серверу через IPMI.

2. Для настройки нам понадобятся имена сетевых интерфейсов, посмотреть их можно командой:

:~# ip a

1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
   link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
   inet 127.0.0.1/8 scope host lo
      valid_lft forever preferred_lft forever
   inet6 ::1/128 scope host
      valid_lft forever preferred_lft forever
2: enp1s0f0: mtu 1500 qdisc mq master bond0 state UP group default qlen 1000
   link/ether 52:82:e4:5d:d5:82 brd ff:ff:ff:ff:ff:ff
3: enp1s0f1: mtu 1500 qdisc mq master bond0 state UP group default qlen 1000
   link/ether 52:82:e4:5d:d5:82 brd ff:ff:ff:ff:ff:ff

В данном примере имена интерфейсов enp1s0f1 и enp1s0f1, однако они могут отличаться.

3. Вносим изменения в файл “/etc/netplan/01-netcfg.yaml”, для отступов следует пользоваться пробелами:

:~# cat /etc/netplan/01-netcfg.yaml

network:
   version: 2
   renderer: networkd
   ethernets:
       enp1s0f0:
               dhcp4: false
               optional: true
       enp1s0f1:
               dhcp4: false
               optional: true

4. Вносим изменения в файл “/etc/netplan/02-bonding.yaml” (помним про отступы) :

:~# cat /etc/netplan/02-bonding.yaml

network:
   version: 2
   renderer: networkd
   bonds:
       bond0:
           interfaces: [enp1s0f0, enp1s0f1]
           addresses: [91.142.85.44/24]
           gateway4: 91.142.85.1
           parameters:
               mode: 802.3ad
           nameservers:
               addresses: [91.142.80.1, 91.142.82.1]
           dhcp4: false
           optional: true

5. Применяем новую конфигурацию и проверяем интерфейс bond0:

:~# netplan --debug apply

:~# ip a

1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
   link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
   inet 127.0.0.1/8 scope host lo
      valid_lft forever preferred_lft forever
   inet6 ::1/128 scope host
      valid_lft forever preferred_lft forever
2: enp1s0f0: mtu 1500 qdisc mq master bond0 state UP group default qlen
1000
   link/ether 52:82:e4:5d:d5:82 brd ff:ff:ff:ff:ff:ff
3: enp1s0f1: mtu 1500 qdisc mq master bond0 state UP group default qlen
1000
   link/ether 52:82:e4:5d:d5:82 brd ff:ff:ff:ff:ff:ff
4: bond0: mtu 1500 qdisc noqueue state UP group default qlen 1000
   link/ether 52:82:e4:5d:d5:82 brd ff:ff:ff:ff:ff:ff
   inet 91.142.85.44/24 brd 91.142.85.255 scope global bond0
      valid_lft forever preferred_lft forever
   inet6 fe80::5082:e4ff:fe5d:d582/64 scope link
      valid_lft forever preferred_lft forever

:~# cat /proc/net/bonding/bond0

Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)

Bonding Mode: IEEE 802.3ad Dynamic link aggregation
Transmit Hash Policy: layer2 (0)
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0

802.3ad info
LACP rate: slow
Min links: 0
Aggregator selection policy (ad_select): stable
System priority: 65535
System MAC address: 52:82:e4:5d:d5:82
Active Aggregator Info:
       Aggregator ID: 1
       Number of ports: 2
       Actor Key: 9
       Partner Key: 3
       Partner Mac Address: c0:bf:a7:ae:b0:f7

Slave Interface: enp1s0f1
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 3c:ec:ef:20:3d:1b
Slave queue ID: 0
Aggregator ID: 1
Actor Churn State: none
Partner Churn State: none
Actor Churned Count: 0
Partner Churned Count: 0
details actor lacp pdu:
   system priority: 65535
   system mac address: 52:82:e4:5d:d5:82
   port key: 9
   port priority: 255
   port number: 1
   port state: 61
details partner lacp pdu:
   system priority: 127
   system mac address: c0:bf:a7:ae:b0:f7
   oper key: 3
   port priority: 127
   port number: 7
   port state: 63

Slave Interface: enp1s0f0
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 3c:ec:ef:20:3d:1a
Slave queue ID: 0
Aggregator ID: 1
Actor Churn State: monitoring
Partner Churn State: monitoring
Actor Churned Count: 1
Partner Churned Count: 1
details actor lacp pdu:
   system priority: 65535
   system mac address: 52:82:e4:5d:d5:82
   port key: 9
   port priority: 255
   port number: 2
   port state: 61
details partner lacp pdu:
   system priority: 127
   system mac address: c0:bf:a7:ae:b0:f7
   oper key: 3
   port priority: 127
   port number: 8
   port state: 63

Настройка MC-LAG на EXSi (lacp)

1. Подключаемся к серверу через IPMI и переходим в раздел vSwitch0:

2. Нажимаем кнопку Add uplink:

3. Добавляем второй сетевой интерфейс и настраиваем NIC teaming:

4. Проверяем что служба для работы NIC-Teaming включена, если нет - включаем. Для этого переходим в Host > Manage > Services и запускаем службу lbtd:

Настройка MC-LAG на Windows Server RU NIC Teaming (lacp)

Внимание! Выполнять настройку группировки портов рекомендуется через IPMI (доступен через биллинг).

Создание подключения через Диспетчер серверов:

1. Запустите Диспетчер серверов.

2. В меню слева выберите Локальный сервер.

3. В открывшемся окне Свойства, нажмите на Включено или Отключено для Объединения сетевых карт:

Диспетчер серверов

4. Для создания группы портов:

a. В верхнем меню Серверы выберите сервер который хотите настроить. Если к диспетчеру подключен только один сервер - имя сервера выберется автоматически;

b. В секции Группы нажмите на кнопку Задачи и в меню выберите Создать группу, после чего откроется диалоговое окно Объединение сетевых карт;

c. Введите имя новой группы, а также выберите сетевые адаптеры которые необходимо объединить;

d. Нажмите на Дополнительные свойства;

  • Режим поддержки групп - LACP;

  • Режим балансировки нагрузки:

    Хеш Адреса - Вычисляется хэш на основе MAC или IP и привязывает данный хэш к определенному физическому адаптеру.

    Hyper-V порт - Привязывает определенный порт группы к виртуальному свитчу Hyper-V.

    Динамический - Использует самые лучшие аспекты указанных выше режимов. Используется по умолчанию с Windows Server 2016.

Объединение сетевых карт

e. Основной групповой интерфейс:

В данном меню можно указать VLAN ID для группового интерфейса:

5. После внесения всех параметров и нажатия на кнопку ОК будет создан новый интерфейс, для которого необходимо задать сетевые параметры.

Создание подключения через Powershell:

1. Используя команду Get-NetAdapter узнаем имена сетевых адаптеров:

2. Создаем новую группу портов, внимательно смотрим на имена портов. В случае если алгоритм балансировки Dynamic недоступен - в таком случае необходимо использовать IPAddresses:

> New-NetLbfoTeam -Name NewTeam -TeamMembers "Ethernet","Ethernet 2" -TeamingMode LACP -LoadBalancingAlgorithm Dynamic

3. Устанавливаем сетевые настройки для созданного адаптера:

> New-NetIPAddress -InterfaceAlias NewTeam -IPAddress <ip address> -PrefixLength <prefix> -DefaultGateway <gw>
> Set-DnsClientServerAddress -InterfaceAlias NewTeam -ServerAddresses ("ip 1","ip 2")

Пример:
> New-NetIPAddress -InterfaceAlias NewTeam -IPAddress 91.142.85.44 -PrefixLength 24 -DefaultGateway 91.142.85.1
> Set-DnsClientServerAddress -InterfaceAlias NewTeam -ServerAddresses ("91.142.80.1","91.142.82.1")

Настройка MC-LAG на Windows Server EN NIC Teaming (lacp)

Attention! It is recommended to configure NIC Teaming through the IPMI (available through billing).

Сreating a connection in the server manager.

1. Launch Server Manager.

2. Select from left menu Local Server.

3. In the Properties window, click Enable or Disable for NIC Teaming:

Server Manager

4. For creating a team

a. In the Servers section, select the name of the server to set up. If there is only one server connected, the name of the server is selected automatically;

b. In the Teams section, under Tasks, select New Team. The New Team wizard then starts;

c. Type the name of the team to create, and then select the network adapter to include in the team from the Member adapters list;

d. Click Additional properties;

- From Teaming mode select the LACP;

- Load balancing mode:

Address Hash - Distributes the load based on IP addresses and port numbers.

Hyper-V Port - Distributes the load to each of the virtual switch ports used by the virtual machines.

Dynamic - Distributes the load based on IP addresses and port numbers in sending. / Distributes the load same to "Hyper-V Port" in receiving.

The New team wizard

e. Primary team interface

Any VLAN ID can be specified for the primary team interface

If the Dynamic balancing algorithm is not available - in this case, you must use IPAddresses.

5. As a result, a new adapter will appear in the list of network adapters, for which you need to specify network settings:

Сreating a connection in the PowerShell

1. Get the names of network interfaces via the command Get-NetAdapter:

2. Creating a new team. If the Dynamic balancing algorithm is not available - in this case, you must use IPAddresses:

> New-NetLbfoTeam -Name NewTeam -TeamMembers "Ethernet1","Ethernet 2" -TeamingMode LACP -LoadBalancingAlgorithm Dynamic

3. Set the ip address to the interface:

> New-NetIPAddress -InterfaceAlias NewTeam -IPAddress <ip address> -PrefixLength <prefix> -DefaultGateway <gw>
> Set-DnsClientServerAddress -InterfaceAlias NewTeam -ServerAddresses ("ip 1","ip 2")

Пример:
> New-NetIPAddress -InterfaceAlias NewTeam -IPAddress 91.142.85.44 -PrefixLength 24 -DefaultGateway 91.142.85.1
> Set-DnsClientServerAddress -InterfaceAlias NewTeam -ServerAddresses ("91.142.80.1","91.142.82.1")