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 адрес подключенной сетевой карты). Что касается производительности сети, я не вижу никакой агрегации, используя два разных соединения. Я буду очень благодарен за любую подсказку.

0
задан 14 December 2020 в 22:35
1 ответ

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

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

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

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

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

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

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

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

0
ответ дан 21 May 2021 в 10:01

Теги

Похожие вопросы