Введение

Использование нескольких параллельных сетевых соединений для повышения пропускной способности и надежности

В компьютерных сетях агрегация каналов связи (link aggregation) – это объединение нескольких параллельных сетевых соединений любым из нескольких способов. Агрегация каналов связи увеличивает общую пропускную способность по сравнению с тем, что может обеспечить одно соединение, и обеспечивает резервирование, при котором выход из строя всех физических каналов, кроме одного, не приводит к потере связи. Группа агрегации каналов связи (LAG) – это объединенный набор физических портов. Другие обобщающие термины, используемые для описания этой концепции, включают транкинг.

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

Архитектура

Сетевые архитекторы могут реализовать агрегацию на любом из трех нижних уровней модели OSI. Примеры агрегации на уровне 1 (физический уровень) включают в себя устройства, использующие линии электропередач (например, IEEE 1901) и беспроводные сети (например, IEEE 802.11), объединяющие несколько частотных диапазонов. Агрегация уровня 2 OSI (канальный уровень, например, Ethernet-фрейм в локальных сетях или многоканальный PPP в глобальных сетях, Ethernet-MAC-адрес) обычно выполняется через порты коммутаторов, которые могут быть как физическими, так и виртуальными, управляемыми операционной системой. Агрегация на уровне 3 (сетевой уровень) в модели OSI может использовать алгоритм циклического перебора, хэш-значения, вычисляемые на основе полей заголовка пакета, или комбинацию этих двух методов. Независимо от уровня, на котором выполняется агрегация, возможна балансировка сетевой нагрузки между всеми каналами связи. Однако, чтобы избежать нарушения порядка доставки пакетов, не все реализации используют эту возможность. Большинство методов также обеспечивают резервирование. Объединение может выполняться таким образом, что несколько интерфейсов используют один логический адрес (например, IP) или один физический адрес (например, MAC-адрес), либо каждому интерфейсу может быть назначен свой собственный адрес. Первый вариант требует, чтобы оба конца соединения использовали один и тот же метод агрегации, но обеспечивает более высокую производительность по сравнению со вторым. Channel bonding отличается от балансировки нагрузки тем, что балансировка нагрузки распределяет трафик между сетевыми интерфейсами на основе каждого сетевого сокета (уровень 4), в то время как channel bonding подразумевает распределение трафика между физическими интерфейсами на более низком уровне – либо на уровне каждого пакета (уровень 3), либо на уровне канального уровня (уровень 2).

Процесс стандартизации

К середине 1990-х годов большинство производителей сетевых коммутаторов добавили функцию агрегации каналов в качестве проприетарного расширения для увеличения пропускной способности между своими коммутаторами. Каждый производитель разработал свой собственный метод, что приводило к проблемам совместимости. Рабочая группа IEEE 802.3 создала исследовательскую группу для разработки стандартного решения для канального уровня (то есть охватывающего как физический, так и канальный уровни) на встрече в ноябре 1997 года. Почти все производители сетевого оборудования быстро перешли на этот единый стандарт, отказавшись от своих собственных проприетарных решений.

802.1АХ

В докладе рабочей группы по техническому обслуживанию 802.3, подготовленном в ноябре 2006 года в рамках проекта 9-й редакции, было отмечено, что некоторые уровни 802.1 (например, безопасность 802.1X) располагались в стеке протоколов ниже агрегирования каналов, которое было определено как подслой 802.3. Для устранения этого несоответствия была сформирована рабочая группа 802.3ax (802.1AX), что привело к официальной передаче протокола группе 802.1 с публикацией IEEE 802.1AX 2008 3 ноября 2008 года.

Преимущества по сравнению со статической конфигурацией

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

Практические примечания

LACP работает, отправляя кадры (LACPDUs) по всем каналам, для которых протокол включен. Если он обнаруживает устройство на другом конце канала, также использующее LACP, это устройство независимо отправляет кадры по тем же каналам в обратном направлении, что позволяет обоим устройствам обнаружить несколько каналов между собой и затем объединить их в единую логическую связь. LACP может быть настроен в одном из двух режимов: активном или пассивном. В активном режиме LACPDUs отправляются с частотой 1 в секунду по настроенным каналам. В пассивном режиме LACPDUs не отправляются, пока не будет получен ответный кадр с другой стороны – принцип «отвечай только на запрос».

Собственная агрегация ссылок

В дополнение к подстандартам агрегации каналов IEEE существует ряд проприетарных схем агрегации, включая EtherChannel и протокол агрегации портов (Port Aggregation Protocol) от Cisco, Aggregated Ethernet от Juniper, Multi Link Trunking, Split Multi Link Trunking, Routed Split Multi Link Trunking и Distributed Split Multi Link Trunking от AVAYA, Smartgroup от ZTE, Eth Trunk от Huawei и Speedify от Connectify. Большинство высокопроизводительных сетевых устройств поддерживают ту или иную форму агрегации каналов. Программные реализации, такие как *BSD lagg package, Linux bonding driver, Solaris dladm aggr и другие, существуют для многих операционных систем.

Драйверы для Linux

Драйвер связывания Linux предоставляет метод агрегирования нескольких контроллеров сетевого интерфейса (NIC) в единый логически связанный интерфейс, состоящий из двух или более так называемых подчиненных интерфейсов (NIC). Большинство современных дистрибутивов Linux поставляются с ядром Linux, в котором драйвер связывания Linux интегрирован в виде загружаемого модуля ядра, а также предустановленной пользовательской программы управления ifenslave (if = [network] интерфейс). Дональд Беккер разработал оригинальный драйвер связывания Linux. Он начал использоваться с патчами Beowulf для ядра Linux 2.0. Режимы работы драйвера связывания Linux: Этот режим может вызывать проблемы с управлением перегрузкой из-за переупорядочивания пакетов, которое он может спровоцировать. Активная резервная копия (active backup): В связке активен только один подчиненный интерфейс NIC. Другой подчиненный интерфейс становится активным, только если активный подчиненный интерфейс выходит из строя. MAC-адрес единого логического интерфейса виден снаружи только на одном NIC (порту), чтобы упростить пересылку в сетевом коммутаторе. Этот режим обеспечивает отказоустойчивость. XOR (balance xor): Передача сетевых пакетов на основе хеша исходного и конечного адреса пакета. Алгоритм по умолчанию учитывает только MAC-адреса (уровень 2). Более новые версии позволяют выбирать дополнительные политики на основе IP-адресов (уровень 2+3) и номеров портов TCP/UDP (уровень 3+4). Это выбирает один и тот же подчиненный интерфейс NIC для каждого MAC-адреса, IP-адреса или комбинации IP-адреса и порта соответственно. Однопоточные соединения будут гарантированно доставлять пакеты в порядке и передавать данные со скоростью одного NIC. Этот режим обеспечивает балансировку нагрузки и отказоустойчивость. Broadcast (широковещание): Передача сетевых пакетов на все подчиненные сетевые интерфейсы. Этот режим обеспечивает отказоустойчивость. IEEE 802.3ad Динамическая агрегация каналов (802.3ad, LACP): Создает группы агрегации, использующие одинаковые настройки скорости и дуплекса. Использует все подчиненные сетевые интерфейсы в активной группе агрегаторов в соответствии со спецификацией 802.3ad. Этот режим аналогичен режиму XOR и поддерживает те же политики балансировки. Соединение устанавливается динамически между двумя партнерами, поддерживающими LACP. Адаптивная балансировка нагрузки при передаче (balance tlb): Режим драйвера связывания Linux, не требующий специальной поддержки сетевого коммутатора. Исходящий сетевой трафик распределяется в соответствии с текущей нагрузкой (вычисляемой относительно скорости) на каждом подчиненном сетевом интерфейсе. Входящий трафик принимается одним из текущих подчиненных сетевых интерфейсов. Если этот принимающий подчиненный интерфейс выходит из строя, другой подчиненный интерфейс принимает MAC-адрес вышедшего из строя принимающего подчиненного интерфейса. Адаптивная балансировка нагрузки (balance alb) включает в себя balance tlb плюс балансировку нагрузки при приеме (rlb) для трафика IPv4 и не требует специальной поддержки сетевого коммутатора. Балансировка нагрузки при приеме достигается путем согласования ARP. Драйвер связывания перехватывает ARP-ответы, отправляемые локальной системой, и перезаписывает адрес исходного оборудования уникальным адресом оборудования одного из подчиненных интерфейсов NIC в едином логическом связанном интерфейсе, чтобы разные сетевые узлы использовали разные MAC-адреса для своего сетевого трафика. Драйвер Linux Team предоставляет альтернативу драйверу связывания. Основное отличие заключается в том, что часть ядра Team driver содержит только основной код, а остальная часть кода (проверка связности, реализация LACP, принятие решений и т. д.) выполняется в пользовательском пространстве как часть демона teamd.

Основа сети

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

Порядок кадров

При балансировке трафика сетевые администраторы часто стремятся избежать изменения порядка следования Ethernet-фреймов. Например, TCP испытывает дополнительные накладные расходы при работе с пакетами, пришедшими не по порядку. Для достижения этой цели все фреймы, относящиеся к одной сессии, отправляются по одной и той же линии связи. В распространенных реализациях используются L2 или L3 хэши (то есть, на основе MAC- или IP-адресов), что гарантирует, что один и тот же поток всегда будет передаваться по одной и той же физической линии связи. Однако это может не обеспечить равномерное распределение трафика по линиям связи в транке, если взаимодействуют только одна или несколько пар хостов, то есть когда хэши обеспечивают недостаточное разнообразие. Это фактически ограничивает общую пропускную способность для клиента. Nvidia поддерживает объединение сетевых интерфейсов с помощью Nvidia Network Access Manager/Firewall Tool. HP предлагает инструмент для объединения сетевых интерфейсов для сетевых карт HP, который поддерживает различные режимы агрегации каналов, включая 802.3ad с LACP. Кроме того, существует базовая агрегация на уровне 3, позволяющая серверам с несколькими IP-интерфейсами в одной сети выполнять балансировку нагрузки, а домашним пользователям с несколькими интернет-соединениями – увеличивать скорость соединения, распределяя нагрузку между всеми интерфейсами. Broadcom предоставляет расширенные функции через Broadcom Advanced Control Suite (BACS), посредством которой доступна функциональность BASP (Broadcom Advanced Server Program), предлагающая статические LAG 802.3ad, LACP и "интеллектуальное объединение", которое не требует какой-либо конфигурации на коммутаторах. Возможно настроить объединение сетевых интерфейсов с помощью BACS, используя комбинацию сетевых карт от разных производителей, при условии, что хотя бы одна из них произведена Broadcom, а остальные сетевые карты обладают необходимыми возможностями для поддержки объединения.

Linux и UNIX

Linux, FreeBSD, NetBSD, OpenBSD, macOS, OpenSolaris и коммерческие дистрибутивы Unix, такие как AIX, реализуют объединение Ethernet на более высоком уровне и, пока сетевая карта поддерживается ядром, могут работать с сетевыми картами от разных производителей или использующих разные драйверы. Hyper-V от Microsoft не предоставляет поддержку агрегирования каналов на уровне гипервизора, но вышеупомянутые методы объединения сетевых адаптеров в Windows применимы и к Hyper-V.

Одноключатель

При режимах балансировки rr, балансировки xor, широковещания и 802.3ad все физические порты в группе агрегирования каналов должны находиться на одном логическом коммутаторе, что в большинстве распространенных сценариев создает единую точку отказа при выходе из строя физического коммутатора, к которому подключены все каналы. Режимы активного резервирования, балансировки tlb и балансировки alb также могут быть настроены с использованием двух или более коммутаторов. Однако после переключения (как и во всех остальных режимах) в некоторых случаях активные сеансы могут прерываться (из-за проблем с ARP) и требовать перезапуска. Тем не менее, почти все производители предлагают проприетарные расширения, решающие эту проблему: они объединяют несколько физических коммутаторов в один логический коммутатор. Протокол split multi link trunking (SMLT) от Nortel позволяет распределять несколько Ethernet-каналов между несколькими коммутаторами в стеке, предотвращая единую точку отказа и обеспечивая балансировку нагрузки всех коммутаторов на несколько агрегирующих коммутаторов из единого стека доступа. Эти устройства синхронизируют состояние через Inter Switch Trunk (IST), представляя подключенному (доступающему) устройству единый блок коммутации и предотвращая дублирование пакетов. SMLT обеспечивает повышенную устойчивость с переключением и восстановлением менее чем за секунду для каналов любой скорости, оставаясь при этом прозрачным для конечных устройств. Группа агрегирования каналов с использованием нескольких шасси предоставляет аналогичные функции в универсальном формате, не зависящем от конкретного производителя. Для подключенного устройства соединение выглядит как обычный агрегированный канал. Координация между несколькими участвующими источниками осуществляется производителем в соответствии с его специфическими требованиями.

Одинаковая скорость связи

В большинстве реализаций все порты, используемые в агрегации, относятся к одному физическому типу, например, все медные порты (10/100/1000BASE-T), все многомодовые оптоволоконные порты или все одномодовые оптоволоконные порты. Однако стандарт IEEE требует лишь того, чтобы каждая линия связи была полнодуплексной и все они имели одинаковую скорость (10, 100, 1000 или 10000 Мбит/с). Многие коммутаторы PHY-независимы, то есть могут поддерживать комбинацию медных портов, SX, LX, LX10 или других модульных трансиверов GBIC/SFP. Хотя обычно придерживаются использования одного и того же PHY, возможно агрегировать оптоволокно 1000BASE SX для одной линии и 1000BASE LX (более длинный, альтернативный путь) для второй линии. Один из путей может иметь большее время задержки, но поскольку большинство реализаций направляют один поток трафика по одной физической линии (используя хэш MAC-адресов, IP-адресов или комбинаций портов IP/транспортного уровня в качестве индекса), это не приводит к существенным проблемам с последовательностью доставки пакетов.

Несовпадение агрегации Ethernet

Несоответствие агрегации возникает, когда типы агрегации на разных концах соединения не совпадают. Некоторые коммутаторы не поддерживают стандарт 802.1AX, но позволяют настраивать агрегацию каналов вручную. Поэтому агрегация каналов между коммутаторами, настроенными статически одинаково, может работать, но она не будет функционировать между коммутатором с ручной настройкой и устройством, настроенным на использование LACP.

Эфир

На интерфейсах Ethernet объединение каналов требует поддержки как от коммутатора Ethernet, так и от операционной системы хост-компьютера, которая должна распределять отправку кадров по сетевым интерфейсам аналогично тому, как операции ввода-вывода распределяются по дискам в RAID 0 массиве. По этой причине в обсуждениях объединения каналов также часто упоминаются избыточные массивы недорогих узлов (RAIN) или избыточные массивы независимых сетевых интерфейсов.

Модемы

В аналоговых модемах можно объединять несколько dial-up соединений через POTS. Скорость передачи данных по таким объединенным соединениям может быть ближе к суммарной пропускной способности объединенных каналов, чем при использовании схем маршрутизации, которые просто распределяют нагрузку исходящих сетевых соединений между каналами.

DSL

Аналогичным образом, несколько линий DSL могут быть объединены для увеличения полосы пропускания. В Соединенном Королевстве ADSL иногда объединяют, например, для обеспечения скорости загрузки 512 кбит/с и скорости скачивания 4 Мбит/с в районах, где доступна только полоса пропускания 2 Мбит/с.

Докис

В соответствии со спецификациями DOCSIS 3.0 и 3.1 для передачи данных по кабельным телевизионным сетям, возможно объединение нескольких каналов. В DOCSIS 3.0 можно объединить до 32 нисходящих и 8 восходящих каналов. Обычно они имеют ширину 6 или 8 МГц. DOCSIS 3.1 определяет более сложные схемы, включающие агрегирование на уровне субнесущих и более крупных логических каналов.

Wi-Fi

На 802.11 (Wi-Fi) в технологии Super G используется объединение каналов, известной как 108 Мбит/с. Она объединяет два канала стандарта 802.11g, который имеет скорость передачи данных 54 Мбит/с на канал. В IEEE 802.11n определен режим с шириной канала 40 МГц. Это не объединение каналов, а единый канал с удвоенной шириной по сравнению с более старым каналом 20 МГц, использующий два соседних диапазона по 20 МГц. Это позволяет напрямую удвоить скорость передачи данных PHY по сравнению с одним каналом 20 МГц.