Назад | Перейти на главную страницу

Режим сетевого связывания 802.3ad в Ubuntu 12.04 и коммутаторе Cisco

Я пытаюсь объединить 3 сетевые карты на 2 серверах. Я пытаюсь достичь максимальной пропускной способности 3 Гбит / с для репликации данных между серверами. Настройка проста, у меня есть 2 сервера с сетевой картой 3 Gigabit, подключенные к одному коммутатору Cisco. Ровно на порт 1-2-3 для сервера-1 и порт 4-5-6 для сервера-2. Конфигурация моих интерфейсов выглядит так:

auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet manual
        bond-master bond0

auto eth1
iface eth1 inet manual
        bond-master bond0

auto eth2
iface eth2 inet manual
        bond-master bond0

auto bond0
iface bond0 inet static
        address 192.168.1.11
        netmask 255.255.255.0
        gateway 192.168.1.1

        bond-miimon 100
        bond-mode 802.3ad
        #bond-downdelay 200
        #bond-updelay 200
        bond-lacp-rate 1
        # tried bond with slaves and no slaves interfaces
        bond-slaves eth0 eth1 eth2 
        # bond-slaves none

Я пробовал несколько конфигураций на этой карте, но в итоге всегда использую только одну сетевую карту.

Я тестировал производительность с помощью iperf и netcat

# server-1
iperf -s

# server-2 
iperf -c 192.168.1.10

# Wait for trafic
nc.traditional -l -p 5000 | pv > /dev/null 

# Push trafic
dd if=/dev/zero | pv | nc.traditional 192.168.1.11 5000

Мы также пробовали много конфигураций на коммутаторе Cisco, без порта-канала и с портом-каналом, и всегда использовалась только 1 сетевая карта. Если тестировать каждую карту индивидуально, то они работают на скорости 1 Гбит / с.

Я также могу сказать, что в / proc / net / bonding / bond0 режим показывает 802.3ad, а скорость LACP показывает FAST. У меня нет сбоев в подсчете ссылок, и появляются 3 интерфейса. Я также проверяю каждый интерфейс eth с помощью ethtool, и мне они нравятся.

Я следовал этому руководству, чтобы настроить его https://help.ubuntu.com/community/UbuntuBonding и я включил модуль связывания в ядре с помощью modprobe bonding и когда я использую lsmod чтобы проверить, включен ли модуль соединения, да, он есть в списке.

Что нам не хватает, чтобы это работало?

Для тестирования LAG используйте несколько потоков, поэтому они используют несколько ссылок. Используя netperf попробуйте:

netperf -H ipaddress &
netperf -H ipaddress &
netperf -H ipaddress &
netperf -H ipaddress &
netperf -H ipaddress &

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

У меня есть четыре порта 10GbE в связке LACP, и я получаю от 32 ГБ до 36 ГБ в каждую сторону между двумя серверами.

Другой способ - установить псевдонимы для связи с несколькими IP-адресами, а затем запустить несколько экземпляров netperf для разных адресов.

Ваш сервер с процессорами Intel Xeon X5690 обладает более чем достаточной мощностью, чтобы приводить до 10 ГБ на ядро.

Я управлял однонаправленным трафиком 80 ГБ через порты 8x1GbE. Ключ заключается в использовании хеширования l3 + l4 как на коммутаторе, так и на сетевых адаптерах, а также в использовании нескольких потоков.

Вот пример моей конфигурации 4x10GbE ... Мой файл конфигурации интерфейса:

#Ports that will be used for VXLAN Traffic in on Bond0
auto p4p1
auto p4p2
auto p6p1
auto p6p2

iface p4p1 inet manual
bond-master bond0

iface p4p2 inet manual
bond-master bond0

iface p6p1 inet manual
bond-master bond0

iface p6p2 inet manual
bond-master bond0

#Configure Bond0. Setup script will provide VXLAN VLAN configuration on bond0
auto bond0
iface bond0 inet manual
#address 10.3.100.60
#netmask 255.255.0.0
bond-mode 4
bond-slaves none
bond-lacp-rate 0
bond-ad-select 1
bond-miimon 100
bond-xmit_hash_policy 1

cat / proc / net / bonding / bond0

root@host2:~# 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: layer3+4 (1)
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): bandwidth
Active Aggregator Info:
    Aggregator ID: 2
    Number of ports: 4
    Actor Key: 33
    Partner Key: 32768
    Partner Mac Address: 54:7f:ee:e3:01:41

Slave Interface: p6p1
MII Status: up
Speed: 10000 Mbps
Duplex: full
Link Failure Count: 1
Permanent HW addr: 90:e2:ba:47:2b:e4
Aggregator ID: 2
Slave queue ID: 0

Slave Interface: p4p2
MII Status: up
Speed: 10000 Mbps
Duplex: full
Link Failure Count: 1
Permanent HW addr: 90:e2:ba:47:2b:69
Aggregator ID: 2
Slave queue ID: 0

Slave Interface: p4p1
MII Status: up
Speed: 10000 Mbps
Duplex: full
Link Failure Count: 1
Permanent HW addr: 90:e2:ba:47:2b:68
Aggregator ID: 2
Slave queue ID: 0

Slave Interface: p6p2
MII Status: up
Speed: 10000 Mbps
Duplex: full
Link Failure Count: 1
Permanent HW addr: 90:e2:ba:47:2b:e5
Aggregator ID: 2
Slave queue ID: 0

Вот результат запуска нескольких экземпляров netperf:

root@host6:~# vnstat -i bond0.192 -l
Monitoring bond0.192...    (press CTRL-C to stop)

   rx:    36.83 Gbit/s 353202 p/s          tx:   162.40 Mbit/s 314535 p/s

bond0.192  /  traffic statistics

                           rx         |       tx
--------------------------------------+------------------
  bytes                   499.57 GiB  |        2.15 GiB
--------------------------------------+------------------
          max           36.90 Gbit/s  |   170.52 Mbit/s
      average           20.05 Gbit/s  |    86.38 Mbit/s
          min               0 kbit/s  |        0 kbit/s
--------------------------------------+------------------
  packets                   39060415  |        34965195
--------------------------------------+------------------
          max             369770 p/s  |      330146 p/s
      average             186891 p/s  |      167297 p/s
          min                  0 p/s  |           0 p/s
--------------------------------------+------------------
  time                  3.48 minutes

Надеюсь это поможет...

Вы никогда не получите производительности более 1 сетевой карты между двумя серверами. Коммутаторы не распространяют кадры из одного источника по нескольким каналам в группе агрегирования каналов (LAG). На самом деле они хешируют исходный MAC или IP (или оба) и используют этот хеш для назначения клиента одной сетевой карте.

Таким образом, ваш сервер может передавать через любое количество сетевых адаптеров, но все эти кадры будут отправлены на целевой сервер по одной ссылке.

Извините за размещение этого сообщения в качестве ответа. Я не могу добавить комментарий к ответу @ longneck, возможно, из-за отсутствия репутации ...?

МОЖНО получить производительность более 1 сетевой карты между двумя серверами, поскольку коммутаторы способны распределять трафик не только на основе MAC / IP, но и номеров портов. Устройства Cisco вполне способны на это, но вам, возможно, придется настроить коммутатор для просмотра портов L4, а не только адресов L2 и L3, которые могут быть по умолчанию.

Настоящая причина, почему ты наверное не будет обеспечивать производительность более 1 сетевой карты между двумя серверами, потому что двунаправленный 1 Гбит / с - это МНОГО трафика для любого современного процессора. Я не знаю, насколько грубоваты ваши серверы, но если серверы делают значимые вещи с каждым полученным пакетом, я был бы удивлен, если бы серверы могли обрабатывать полнодуплексный режим 1 Гбит / с.

Извините, я не хотел наступать на ответ @ longneck выше, просто хотел прояснить несколько дополнительных моментов.