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

В чем разница между режимами связывания каналов в Linux?

В Linux вы можете объединить несколько сетевых интерфейсов в «связанный» сетевой интерфейс для обеспечения аварийного переключения.

Но есть несколько режимов, некоторые из которых не требуют поддержки коммутатора. Я не ограничен своим переключением тем, что могу использовать любой из режимов.

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

  1. Обеспечивают ли некоторые режимы более быстрое переключение при отказе?
  2. Как насчет влияния нагрузки на процессор для каждого режима?
  3. Какие режимы могут комбинировать полосу пропускания, а не просто обеспечивать избыточность?
  4. Есть ли у этого ограничения?
  5. Требуется ли для balance-rr поддержка коммутатора?
  6. Надежность? Какой у вас долгосрочный опыт?

Большинство из этих моментов достаточно подробно описано в /usr/src/linux/Documentation/networking/bonding.txt файл документации из пакета исходных кодов linux вашего любимого дистрибутива. Скорость переключения при отказе контролируется параметром «miimon» для большинства режимов, но не должна быть слишком низкой; нормальные значения в любом случае меньше одной секунды.

Вот лучшие части, выполненные мной:

   balance-rr or 0
       Round-robin policy: Transmit packets in sequential
       order from the first available slave through the
       last. This mode provides load balancing and fault
       tolerance. 


   active-backup or 1
       Active-backup policy: Only one slave in the bond is
       active.  A different slave becomes active if, and only
       if, the active slave fails. The bond's MAC address is
       externally visible on only one port (network adapter)
       to avoid confusing the switch.

       This mode provides fault tolerance. The "primary"
       option affects the behavior of this mode.

   balance-xor or 2
       XOR policy: Transmit based on the selected transmit
       hash policy.  The default policy is a simple [(source
       MAC address XOR'd with destination MAC address) modulo
       slave count].  Alternate transmit policies may be
       selected via the xmit_hash_policy option.

       This mode provides load balancing and fault tolerance.

   broadcast or 3
       Broadcast policy: transmits everything on all slave
       interfaces.  This mode provides fault tolerance.

   802.3ad or 4
       IEEE 802.3ad Dynamic link aggregation.  Creates
       aggregation groups that share the same speed and
       duplex settings.  Utilizes all slaves in the active
       aggregator according to the 802.3ad specification.

       Slave selection for outgoing traffic is done according
       to the transmit hash policy, which may be changed from
       the default simple XOR policy via the xmit_hash_policy
       option. Note that not all transmit policies may be 802.3ad
       compliant, particularly inregards to the packet mis-ordering
       requirements of section 43.2.4 of the 802.3ad standard.
       Differing peer implementations will have varying tolerances for
       noncompliance.

       Note: Most switches will require some type of configuration
       to enable 802.3ad mode.

   balance-tlb or 5
       Adaptive transmit load balancing: channel bonding that
       does not require any special switch support.  The
       outgoing traffic is distributed according to the
       current load (computed relative to the speed) on each
       slave.  Incoming traffic is received by the current
       slave.  If the receiving slave fails, another slave
       takes over the MAC address of the failed receiving
       slave.

   balance-alb or 6
       Adaptive load balancing: includes balance-tlb plus
       receive load balancing (rlb) for IPV4 traffic, and
       does not require any special switch support.

       When a link is reconnected or a new slave joins the
       bond the receive traffic is redistributed among all
       active slaves in the bond by initiating ARP Replies
       with the selected MAC address to each of the
       clients. The updelay parameter must
       be set to a value equal or greater than the switch's
       forwarding delay so that the ARP Replies sent to the
       peers will not be blocked by the switch.

Balance-rr, active-backup, balance-tlb и balance-alb не нуждаются в поддержке коммутатора.

balance-rr увеличивает производительность за счет фрагментации, плохо работает с некоторыми протоколами (CIFS) и с более чем двумя интерфейсами.

balance-alb и balance-tlb могут работать некорректно со всеми переключателями; часто возникают некоторые проблемы с arp (например, некоторые машины могут не подключаться друг к другу). Возможно, вам придется изменить различные настройки (miimon, updelay), чтобы получить стабильную сеть.

balance-xor может потребовать или не потребовать конфигурации коммутатора. Вам необходимо настроить группу интерфейсов (не LACP) на коммутаторах HP и Cisco, но, очевидно, в коммутаторах D-Link, Netgear и Fujitsu это не обязательно.

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

Примечание: что бы вы ни делали, одно сетевое соединение всегда проходит через одну и только одну физическую ссылку. Таким образом, при агрегировании интерфейсов GigE передача файлов с машины A на машину B не может превышать 1 гигабит / с, даже если каждая машина имеет 4 агрегированных интерфейса GigE (независимо от используемого режима связывания).

  1. Самым большим фактором переключения при отказе является скорость обнаружения сбоя канала. Отключите кабель от хоста, и все они будут работать нормально. Оставьте активную ссылку на выключенном коммутаторе, и большинство режимов (за исключением тех, которые поддерживают маяки / сообщения поддержки активности) будут отправлять часть вашего трафика в никуда.

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

  3. Любой режим, который не является активным / ждущим или режимом широковещательной передачи, будет разделять трафик в разной степени. Некоторые режимы могут балансироваться для каждого пакета, другие работают для каждого потока. Первый будет более равномерно распределять нагрузку, а второй гораздо более полезен (читай: функциональный / стабильный) в реальных сетях.

  4. Да, для каждого режима есть ограничения, но нам нужно знать гораздо больше о вашем приложении, чтобы с ними поговорить.

  5. Только LACP / 802.3ad (режим 4) явно требует поддержки на коммутаторе. Тем не менее, просто потому, что вы отправляете на коммутатор с определенным шаблоном, это не означает, что коммутатор отправит вам-обратно- таким же образом.

  6. Единственный режим, которому я склонен доверять в производстве, - это 802.3ad, который с соответствующим образом настроенным коммутатором гарантирует, что только правильные ссылки попадут в канал, а также обеспечивает некоторую степень симметрии в совместном использовании трафика и предсказуемый ответ при ссылка не работает. Этот режим также позволяет избежать некоторых распространенных, но неприятных проблем (например, одноадресного флуда). Активный / ждущий режим тоже довольно распространен. Другие режимы могут потребоваться при определенных обстоятельствах, но, ИМО, обычно более болезненны.

Другие режимы балансировки на основе потока / MAC / IP или активный / резервный также могут подойти и могут потребоваться при работе с неуправляемыми коммутаторами.

Документация ядра отвечает на некоторые из этих вопросов:

Связывание Ethernet