LACP с двумя сетевыми картами, работающими, когда один из них не работает, а не когда оба работают

У меня проблемы с настройкой транка LACP для правильной работы на Ubuntu 12.04.2 LTS.

Моя установка представляет собой один хост, подключенный с двумя интерфейсами 10 Gbe к двум отдельным коммутаторам Nexus 5548, с vPC, настроенным для поддержки LACP с несколькими шасси. Конфигурация Nexus соответствует рекомендациям Cisco, а конфигурация Ubuntu - https://help.ubuntu.com/community/UbuntuBonding

Сервер подключен к порту Ethernet1/7 на каждом коммутаторе Nexus, чьи порты настроены одинаково и расположены в порт-канал 15. Порт-канал 15 настроен как VPC 15, и выход VPC выглядит хорошо. Это порты простого доступа, т.е. не задействован транкинг 801.1q.

Диаграмма:

    +----------+      +----------+      +----------+      +----------+
    | client 1 |------| nexus 1  |------| nexus 2  |------| client 2 |
    +----------+      +----------+      +----------+      +----------+
                           |                  |
                           |    +--------+    |
                           +----| server |----+
                           eth4 +--------+ eth5

Когда одна из ссылок не работает, оба клиента 1 и 2 могут получить доступ к серверу. Однако, когда я поднимаю вторичную ссылку, клиент, подключенный к коммутатору с помощью недавно включенной ссылки, не может связаться с сервером. В следующей таблице приведены переходы между состояниями и результаты:

   port states (down by means of "shutdown")
     nexus 1 eth1/7        up     up    down   up
     nexus 2 eth1/7       down    up     up    up

   connectivity
    client 1 - server      OK     OK     OK   FAIL
    client 2 - server      OK    FAIL    OK    OK

Теперь я верю, что изолировал проблему на стороне Linux. Находясь в состоянии up-up, каждый нексус использует локальную ссылку на сервер для доставки пакетов, что подтверждается просмотром таблицы MAC-адресов. На сервере я могу видеть, что пакеты от каждого клиента принимаются через интерфейс ethX (пакеты от клиента 1 на eth4, пакеты от клиента 2 на eth4) с помощью tcpdump -i ethX, но когда я запускаю tcpdump -i bond0 Я могу только трафик с любого из хостов (в соответствии с тем, что я изложил выше).

Я наблюдаю одинаковое поведение для трафика ARP и ICMP (IP); ARP отказывает от клиента, когда обе ссылки работают, работает (вместе с ping), когда одна из них не работает, ping не работает, когда я снова включаю ссылку (пакеты все еще принимаются на интерфейсе eth, но не на bond0).

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

Так что - выяснить, как исправить это то, с чем я имею дело; мой Google не принес мне никакой удачи до сих пор.

Любые указатели высоко ценятся.

/ и т.д. / сеть / интерфейсы

    auto eth4
    iface eth4 inet manual
    bond-master bond0

    auto eth5
    iface eth5 inet manual
    bond-master bond0

    auto bond0
    iface bond0 inet static
    address 10.0.11.5
    netmask 255.255.0.0
    gateway 10.0.0.3
    mtu 9216
    dns-nameservers 8.8.8.8 8.8.4.4
    bond-mode 4
    bond-miimon 100
    bond-lacp-rate 1
    #bond-slaves eth4
    bond-slaves eth4 eth5

/ Proc/ нетто / склеивание /bond0

    A little further information:
    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: fast
    Min links: 0
    Aggregator selection policy (ad_select): stable
    Active Aggregator Info:
    Aggregator ID: 1
    Number of ports: 1
    Actor Key: 33
    Partner Key: 1
    Partner Mac Address: 00:00:00:00:00:00

    Slave Interface: eth4
    MII Status: up
    Speed: 10000 Mbps
    Duplex: full
    Link Failure Count: 8
    Permanent HW addr: 90:e2:ba:3f:d1:8c
    Aggregator ID: 1
    Slave queue ID: 0

    Slave Interface: eth5
    MII Status: up
    Speed: 10000 Mbps
    Duplex: full
    Link Failure Count: 13
    Permanent HW addr: 90:e2:ba:3f:d1:8d
    Aggregator ID: 2
    Slave queue ID: 0

РЕДАКТИРОВАТЬ: Добавлен конфиг от Nexus

    vpc domain 100
      role priority 4000
      system-priority 4000
      peer-keepalive destination 10.141.10.17 source 10.141.10.12
      peer-gateway
      auto-recovery
    interface port-channel15
      description server5
      switchport access vlan 11
      spanning-tree port type edge
      speed 10000
      vpc 15
    interface Ethernet1/7
      description server5 internal eth4
      no cdp enable
      switchport access vlan 11
      channel-group 15

РЕДАКТИРОВАТЬ: Добавлены результаты от порта-канала не-VPC на nexus1 для того же сервера, до и после изменения IP (изменил IP, чтобы повлиять на алгоритм балансировки нагрузки). Это все еще использует те же настройки на сервере.

      port states (down by means of "shutdown")
        nexus 1 eth1/7        up     up    down   up
        nexus 1 eth1/14      down    up     up    up <= port moved from nexus 2 eth1/7

   connectivity (sever at 10.0.11.5, hashing uses Eth1/14)
       client 1 - server      OK     OK     OK   FAIL
       client 2 - server      OK     OK     OK   FAIL

Результаты после изменения IP соответствуют прогнозируемым; неиспользуемый интерфейс вызывает сбои.

      connectivity (sever at 10.0.11.15, hashing uses Eth1/7)
       client 1 - server      OK    FAIL    OK    OK
       client 2 - server      OK    FAIL    OK    OK

2 ответа

Единственная конфигурация LACP, которую мне удалось получить в Ubuntu, это:

auto bond0
iface bond0 inet dhcp
  bond-mode 4
  bond-slaves none
  bond-miimon 100
  bond-lacp-rate 1
  bond-updelay 200 
  bond-downdelay 200

auto eth0
iface eth0 inet manual
  bond-master bond0

auto eth1
iface eth1 inet manual
  bond-master bond0

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

У меня нет проблем с LACP при моей настройке, хотя это с сетью 1Gbe.

Кроме того, если проблемы все еще возникают, попробуйте подключить оба кабеля к одному коммутатору и настроить порты для LACP. Просто чтобы исключить возможность проблем с несколькими шасси LACP.

Проблема не на стороне Linux, а на стороне Nexus и как это работает в конфигурации vPC.

чтобы сначала настроить vPC на Nexus, вам нужно подключить два коммутатора Nexus и настроить эту ссылку как "peer-link".

в нормальной ситуации, когда обе ссылки от коммутаторов к серверу находятся в состоянии UP, трафик в vlan 11, настроенном на vPC, сбрасывается на одноранговую ссылку.

только когда один из интерфейсов, являющихся частью vPC, недоступен - трафик в vlan 11 разрешен по одноранговому каналу.

Вот как vPC работает на коммутаторах Nexus.

Чтобы решить эту проблему, вы можете запустить fabric-path и установить другое соединение между коммутаторами nexus-1 и nexus-2.

Другие вопросы по тегам