LACP между Netgear ProSafe GSM7248V2 и сервером Linux

LACP между Netgear ProSafe GSM7248V2 и сервером Linux

Я пытаюсь подключить сервер Linux с двумя сетевыми картами 1 Гбит/с к коммутатору Netgear ProSafe GSM7248V2 с использованием связывания, а именно режима 802.3ad. Результаты очень запутанные, я был бы благодарен за любые подсказки о том, что попробовать дальше.

На стороне сервера мой /etc/network/interfaces выглядит так:

auto bond0
iface bond0 inet static
        address 192.168.1.15/24
        gateway 192.168.1.254
        dns-nameservers 8.8.8.8
        dns-search my-domain.org
        bond-slaves eno1 eno2
        bond-mode 4
        bond-miimon 100
        bond-lacp-rate 1
        bond-xmit_hash_policy layer3+4
        hwaddress aa:bb:cc:dd:ee:ff

Конфигурация коммутатора следующая:

(GSM7248V2) #show port-channel 3/2          


Local Interface................................ 3/2
Channel Name................................... fubarlg
Link State..................................... Up
Admin Mode..................................... Enabled
Type........................................... Dynamic
Load Balance Option............................ 6
(Src/Dest IP and TCP/UDP Port fields)

Mbr    Device/       Port      Port
Ports  Timeout       Speed     Active
------ ------------- --------- -------
0/7    actor/long    Auto      True   
       partner/long  
0/8    actor/long    Auto      True   
       partner/long  

(GSM7248V2) #show lacp actor 0/7    

         Sys    Admin   Port      Admin
 Intf  Priority  Key  Priority    State  
------ -------- ----- -------- ----------- 
0/7    1        55    128      ACT|AGG|LTO 

(GSM7248V2) #show lacp actor 0/8

         Sys    Admin   Port      Admin
 Intf  Priority  Key  Priority    State  
------ -------- ----- -------- ----------- 
0/8    1        55    128      ACT|AGG|LTO 

(GSM7248V2) #show lacp partner 0/7 

       Sys      System       Admin Prt Prt     Admin
 Intf  Pri       ID          Key   Pri Id      State
------ --- ----------------- ----- --- ----- ----------- 
0/7    0   00:00:00:00:00:00 0     0   0     ACT|AGG|LTO 

(GSM7248V2) #show lacp partner 0/8

       Sys      System       Admin Prt Prt     Admin
 Intf  Pri       ID          Key   Pri Id      State
------ --- ----------------- ----- --- ----- ----------- 
0/8    0   00:00:00:00:00:00 0     0   0     ACT|AGG|LTO 

Я считаю, что xmit "layer3+4" наиболее совместим с Load Balance Type 6 коммутатора. Первое, что удивляет, это то, что коммутатор не видит MAC-адрес партнера LACP.

На стороне сервера содержимое /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: layer3+4 (1)
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0

802.3ad info
LACP rate: fast
Min links: 0
Aggregator selection policy (ad_select): stable
System priority: 65535
System MAC address: ac:1f:6b:dc:2e:88
Active Aggregator Info:
    Aggregator ID: 15
    Number of ports: 2
    Actor Key: 9
    Partner Key: 55
    Partner Mac Address: a0:21:b7:9d:83:6a

Slave Interface: eno1
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: ac:1f:6b:dc:2e:88
Slave queue ID: 0
Aggregator ID: 15
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: ac:1f:6b:dc:2e:88
    port key: 9
    port priority: 255
    port number: 1
    port state: 63
details partner lacp pdu:
    system priority: 1
    system mac address: a0:21:b7:9d:83:6a
    oper key: 55
    port priority: 128
    port number: 8
    port state: 61

Slave Interface: eno2
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: ac:1f:6b:dc:2e:89
Slave queue ID: 0
Aggregator ID: 15
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: ac:1f:6b:dc:2e:88
    port key: 9
    port priority: 255
    port number: 2
    port state: 63
details partner lacp pdu:
    system priority: 1
    system mac address: a0:21:b7:9d:83:6a
    oper key: 55
    port priority: 128
    port number: 7
    port state: 61

Если я правильно понимаю, это означает, что драйвер связывания Linux правильно определил все данные агрегатора (ключ, номера портов, приоритет системы, приоритет порта и т. д.). Несмотря на это, я получаю это в dmesg после перезапуска сетевой службы:

[Dec14 20:40] bond0: Releasing backup interface eno1
[  +0.000004] bond0: first active interface up!
[  +0.090621] bond0: Removing an active aggregator
[  +0.000004] bond0: Releasing backup interface eno2
[  +0.118446] bond0: Enslaving eno1 as a backup interface with a down link
[  +0.027888] bond0: Enslaving eno2 as a backup interface with a down link
[  +0.008805] IPv6: ADDRCONF(NETDEV_UP): bond0: link is not ready
[  +3.546823] igb 0000:04:00.0 eno1: igb: eno1 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: RX
[  +0.160003] igb 0000:05:00.0 eno2: igb: eno2 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: RX
[  +0.035608] bond0: link status definitely up for interface eno1, 1000 Mbps full duplex
[  +0.000004] bond0: Warning: No 802.3ad response from the link partner for any adapters in the bond
[  +0.000008] bond0: first active interface up!
[  +0.000166] IPv6: ADDRCONF(NETDEV_CHANGE): bond0: link becomes ready
[  +0.103821] bond0: link status definitely up for interface eno2, 1000 Mbps full duplex

Оба интерфейса работают, сетевое соединение, похоже, вполне нормальное, просто я получаю странное предупреждение об отсутствии совместимого с 802.3ad партнера.

Кроме того, когда я пытаюсь одновременно скопировать два больших двоичных файла (по 10 ГБ каждый) с двух разных машин, подключенных к одному и тому же коммутатору, каждая из которых подключена со скоростью 1 Гбит/с, общая пропускная способность интерфейса bond0 на сервере значительно ниже 1 Гбит/с, хотя я ожидал бы чего-то ближе к 2 Гбит/с (скорость чтения и т. д. здесь не является ограничивающим фактором, все SSD, хорошо кэшированы и т. д.). Когда я копирую одни и те же файлы последовательно, один за другим, с одних и тех же машин, я легко достигаю пропускной способности, близкой к 1 Гбит/с.

Не подскажете, что тут может быть не так? Что касается диагностики, то в dmesg появляется сбивающее с толку предупреждение (нет совместимого с 802.3ad партнера) и в выводе sh lacp коммутатора (нет MAC партнера, хотя обычная запись порта показывает правильный MAC-адрес подключенной сетевой карты). Что касается производительности сети, я не вижу никакой агрегации с использованием двух разных подключений. Буду очень благодарен за любую подсказку.

решение1

Коммутатор настроен на longтайм-аут LACP — один LACPDU каждые 30 секунд.

Система Linux настроена на bond-lacp-rate 1.

Я не могу найти, что это на самом деле делает в Debian, но если он передает lacp_rate=1параметр модуля в связывание (ссылка), то это быстрый тайм-аут — один LACPDU каждую 1 секунду.

Это несоответствие между медленной/быстрой скоростью LACP является неправильной конфигурацией.

Во всех примерах документации, которые мне удалось найти, указано, что Debian принимает это, bond-lacp-rate slowи я надеюсь, что это поможет вам.

Вероятно, вы также можете удалить bond-lacp-rateстроку из файла конфигурации, поскольку по умолчанию установлена ​​низкая скорость, а затем выгрузить модуль связывания или перезагрузить компьютер, чтобы применить изменения.

Не тестируйте пропускную способность только с двумя потоками. layer3+4Политика не гарантирует, что любые два потока получат отдельную сетевую карту, просто при достаточном количестве потоков трафик должен быть сбалансирован более-менее равномерно.

Тестируйте, скажем, с 16 или 32 одновременными потоками TCP iperf3. Общая пропускная способность всех потоков должна быть близка к 2 Гбит/с.

Связанный контент