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

8

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

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

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

  1. Некоторые режимы обеспечивают более быстрое восстановление после отказа?
  2. Каково влияние нагрузки на процессор для каждого режима?
  3. Какие режимы могут объединять пропускную способность, а не просто обеспечивать избыточность?
  4. Есть ли ограничения к этому?
  5. Баланс-рр требует поддержки коммутатора?
  6. Надежность? Каковы ваши опыт работы в долгосрочной перспективе?
Matt
источник
Вы должны прочитать связующий HOWTO ядра , не так ли? Это должно ответить на ваши вопросы.
The Wabbit
Да, он говорит вам, что они делают в определенной степени. Но это не говорит вам, насколько хорошо они работают в производственной среде. Некоторые говорят, что «поддержка коммутатора не требуется». В то время как другие не имеют комментариев и оставляют вас угадывать.
Мэтт
Не уверен, почему понизить. Это совершенно правильный вопрос, и по теме не так ли?
Мэтт
Кто бы ни проголосовал за и / или закрытое голосование, пожалуйста, укажите причину, чтобы я мог хотя бы получить шанс улучшить вопрос.
Мэтт
Я подозреваю, что отрицательное голосование может произойти из-за того, что из-за того, как ваш вопрос задан, создается впечатление, что вы не занимались исследованием или чтением документации до того, как ее спросили. Смотрите подсказку для голосования.
Зоредаче

Ответы:

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

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

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

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

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

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

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

rnxrx
источник
10

Большинство из этих пунктов довольно подробно описаны в /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) и более чем с 2 интерфейсами.

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 (независимо от используемого режима соединения).

wazoox
источник
Обратите внимание, что 802.3ad не требует использования LACP. LACP - это просто протокол управления для конфигурации с динамическим агрегированием каналов, вы можете прекрасно настроить статическое LA без LACP.
the-wabbit
1
Это правда, однако большинство коммутаторов не допускают статической конфигурации агрегации каналов и называют агрегаты «режим LACP».
wazoox
802.3ad определяет оба - статический LA и LACP. Если коммутатор заявляет о соответствии стандарту 802.3ad, он должен реализовать оба варианта. В каждой модели коммутатора, которая была у меня в руках, был реализован LACP, а также реализован статический LA.
the-wabbit
1

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

Соединение по Ethernet

FINESEC
источник
1
Пожалуйста, потратьте некоторое время на улучшение этого ответа, помимо предоставления ссылки. Ссылка полезна, но ответы здесь должны быть не просто ссылкой на документацию.
Зоредаче
Спасибо за эту ссылку. Раздел 12.1.1 Выбор режима соединения MT для топологии с одним коммутатором - это то, к чему я стремился.
Мэтт
Да, именно поэтому я только вставил ссылку без каких-либо комментариев ;-)
FINESEC