Агрегація каналів

Агрегація каналів між комутатором та сервером

В комп'ютерних мережах, термін агрегація каналів застосовується до різних методів об'єднання (агрегації) декількох паралельних мережевих з'єднань з метою підвищення пропускної здатності, а також забезпечення резервування у випадках виходу з ладу одного з каналів. ГАК (група агрегації каналів, англ. link aggregation group, LAG) об'єднує множину фізичних портів, щоб зробити єдиний високошвидкісний канал передачі даних шляхом розподілу навантаження трафіку між портами-членами групи а також покращити надійність з'єднання.

Інші загальні терміни для опису методу включають port trunking,[1]link bundling,[2] Ethernet/network/NIC bonding,[1] або NIC teaming. Ці терміни охоплюють не лише виробничо-незалежні стандарти такі як  Link Aggregation Control Protocol (LACP) для Ethernet, визначених в IEEE 802.1AX та IEEE 802.1aq чи попередньому IEEE 802.3ad, але і різні патентовані рішення.

Мережеві архітектори можуть впроваджувати агрегацію на будь-якому з трьох нижніх рівнів моделі OSI.

  • Приклади агрегації 1-го рівня (фізичний рівень) включають мережеві пристрої ліній електропередач (наприклад IEEE 1901) та безпровідні (наприклад IEEE 802.11), що об'єднують декілька частотних діапазонів.
  • Агрегація 2-го рівня (канальний рівень, наприклад Ethernet frame в LAN-х або multi-link PPP в WAN-х, Ethernet MAC адреса) зазвичай відбувається через порти комутатора, які можуть бути фізичними або віртуальними, під керуванням операційної системи.
  • Агрегація на 3-му рівні (мережевий рівень) може використовувати планувальник round-robin, хеш-значення, що обчислені з полів в заголовку пакета, або комбінації цих двох методів.

Незалежно від рівня, на якому відбувається агрегування, балансування навантаження мережі відбувається по всіх каналах. Більшість методів також забезпечує і відмовостійкість.

Об'єднання може відбуватися або таким чином, що кілька інтерфейсів поділяють одну логічну адресу (тобто IP) або одну фізичну адресу (тобто MAC-адресу), або кожному інтерфейсу дозволяється мати власну адресу. Вимагається, щоб обидва кінці лінії зв'язку використовують один і той же метод агрегування.

Опис[ред. | ред. код]

Об'єднання каналів вирішує дві проблеми з з'єднаннями Ethernet: обмеження смуги пропускання і відсутність стійкості.

Що стосується першого питання: вимоги до пропускної здатності не масштабуються лінійно. Смуги пропускання Ethernet історично збільшувалися на порядок величини кожного покоління: 10 мегабіт/с, 100 Мбіт/с, 1000 Мбіт/с, 10,000 Мбіт/с. Якщо досягали межі пропускної здатності, то єдиним варіантом було перейти до наступного покоління, що могло мати відповідну вартість. Альтернативне рішення, що було представлено багатьма мережевими виробниками на початку 1990-х років, полягало в об'єднанні двох фізичних каналів Ethernet в один логічний канал через channel bonding. Більшість з цих рішень вимагали ручної конфігурації та ідентичного обладнання на обох сторонах агрегації.[3]

Друга проблема охоплює три точки відмови в типовому підключенні порт-кабель-порт. А саме, в будь-якій типовій конфігурації, чи то звичайне з'єднання комп'ютер-комутатор, чи комутатор-комутатор, кабель або порти з обох сторін з'єднання, в які включено кабель, можуть відмовити. Може бути створено кілька фізичних з'єднань, однак, значна кількість протоколів більш вищого рівня не були призначені до повністю безшовного самовідновлення.

IEEE агрегація каналів[ред. | ред. код]

Процес стандартизації[ред. | ред. код]

До середини 1990-х років, більшість виробників мережевих комутаторів включало можливість агрегації як власні розширення для збільшення пропускної здатності між їхніми комутаторами. Але кожен виробник розробив свій власний метод, що призвело до проблем сумісності. На нараді групи IEEE 802.3, в листопаді 1997 року[3], було створено дослідницьку групу, з метою розробки сумісного стандарту канального рівня. Група швидко вирішила включити функцію автоматичної конфігурації, яка б також вирішила проблему надійності. Це стало відомо як «Протокол Управління Канальною Агрегацією» (анг. «Link Aggregation Control Protocol»).

Перший випуск 802.3ad в 2000[ред. | ред. код]

У 2000 році більшість схем агрегованих гігабітних каналів використовують стандарт IEEE Агрегації Каналів, який раніше був статтею 43 стандарту IEEE 802.3, доданою в березні 2000 року цільовою групою IEEE 802.3ad[4]. Майже кожен виробник мережевого устаткування швидко прийняв цей спільний стандарт щодо своїх фірмових стандартів.

Перехід до рівня 802.1 в 2008[ред. | ред. код]

Девід Лоу зазначив, що в 2006 році деякі рівні 802.1 (наприклад, безпеки 802.1X) були поміщені в стек протоколів нижче Агрегації Каналу, який був визначений як підрівень 802.3[5]. Цю невідповідність було вирішено формальною передачею протоколу до групи 802.1 з публікацією IEEE 802.1AX-2008 3 листопада 2008 року[6].

Протокол Управління Канальною Агрегацією (LACP)[ред. | ред. код]

В IEEE специфікації Протокол Управління Канальною Агрегацією (LACP) надає спосіб для управління групуванням декількох фізичних портів з метою формування одного логічного каналу. LACP дає можливість мережевому пристрою узгодити автоматичне групування каналів, посилаючи LACP кадри партнеру (безпосередньо підключеному пристрою, яке також підтримує LACP).

Особливості LACP та практичні приклади

  1. Максимальна дозволена кількість згрупованих портів в агрегованому каналі: Допустимі значення, як правило, від 1 до 8.
  2. LACP кадри надсилаються з MAC-адресою багатоадресної групи 01:80:c2:00:00:02 (01-80-c2-00-00-02)
  3. У період виявлення LACP
    • LACP кадри передаються кожну секунду
    • Механізм «залишатися живим» (keep alive) для учасників каналу: (за замовчуванням: повільно = 30 с., швидко = 1 с.)
  4. LACP може мати режим балансування навантаження канал-порту:
    • Ціле число зв'язок (link-id), яке ідентифікує порт учасника для балансування навантаження. Діапазон становить від 1 до 8.
  5. Режими LACP :
    • активний: Включає LACP безумовно.
    • пасивний: Вмикає LACP тільки при виявленні LACP пристрою. (Це стан за замовчуванням)

Переваги перед статичною конфігурацією[ред. | ред. код]

  • Аварійне переключення відбувається автоматично: Коли з'єднання дає збій і між пристроями є, наприклад, медіа-конвертер, система не відчує ніяких проблем з підключенням. При статичній агрегації каналів, пристрій буде продовжувати посилати трафік по каналу який дав збій.
  • Динамічна конфігурація: Пристрій може підтвердити, що конфігурація на іншому кінці може опрацьовувати агрегацію каналів. При статичній агрегації каналів помилка кабелю або налаштування може залишитися непоміченою і викликати небажану поведінку мережі.[7]

Практичні нотатки[ред. | ред. код]

LACP працює шляхом відправки кадрів (LACPDUs) по всім з'єднанням, які мають включений протокол. Якщо він знаходить пристрій на іншому кінці зв'язку, що також має ввімкнутий LACP, то він буде також самостійно передавати кадри тими ж каналами, дозволяючи виявляти декілька зв'язків між ними, а потім об'єднає їх в одне логічне з'єднання. LACP може бути налаштований на один з двох режимів: активний або пасивний. В активному режимі він завжди буде передавати кадри по налаштованих каналах. У пасивному режимі проте, він діє як «говорити, коли заговорили», і, отже, може бути використаний як спосіб контролю випадкових петель (до тих пір, як інший пристрій знаходиться в активному режимі).[4]

Запатентована агрегація каналів[ред. | ред. код]

In addition to the IEEE link aggregation substandards, there are a number of proprietary aggregation schemes including Cisco's EtherChannel and Port Aggregation Protocol, Juniper's Aggregated Ethernet, AVAYA's Multi-Link Trunking, Split Multi-Link Trunking, Routed Split Multi-Link Trunking and Distributed Split Multi-Link Trunking, ZTE's «Smartgroup», Huawei's «Eth-Trunk», or Connectify's Speedify.[8] Більшість мережевих пристроїв високого класу підтримують якийсь тип агрегації каналів а також існують програмно-базовані реалізації для багатьох операційних систем — такі, як *BSD lagg пакет, Лінукс bonding драйвер сполучний, Solaris dladm aggr і т. д.

Лінукс bonding драйвер[ред. | ред. код]

Лінукс bonding драйвер[9] забезпечує спосіб об'єднання декількох мережевих плат (NICs) в єдиний логічний інтерфейс об'єднання двох або більше так званих (NIC) рабів. Більшість сучасних дистрибутивів Linux (дистрибутиви) поставляються з ядром Linux, який має інтегрований Linux bonding драйвер як завантажуваний модуль ядра та ifenslave (if = [мережвий] інтерфейс) попередньо встановлена програма управління рівня користувача. Donald Becker розробляв початковий Linux bonding драйвер. Воно увійшло у вжиток з патчами кластера Beowulf для Linux ядра 2.0.

Режими драйвера[ред. | ред. код]

Режими Linux bonding драйвера[9] (режими агрегації інтерфейсів мережі) постачаються як параметри модуля ядра bonding під час завантаження. Вони можуть бути задані як аргументи командного рядка до команд insmod або modprobe, але, як правило, вказується в файлі конфігурації який є специфічний для різних дистрибутивів Лінукс. Поведінка одного логічного об'єднаного інтерфейсу залежить від заданого режиму bonding драйвера. Параметр за замовчуванням є balance-rr.

Round-robin (balance-rr)

Передача мережевих пакетів в послідовному порядку з першого доступного мережного інтерфейсу (NIC) по останній. Цей режим забезпечує балансування навантаження і відмовостійкість.

Active-backup (active-backup)

Тільки один підлеглий NIC є активним. Інший стає активним, якщо, і тільки якщо, активний підлеглий виходить з ладу. The single logical bonded interface's MAC address зовні видно тільки на одній NIC (порт), щоб уникнути спотворення в мережевому комутаторі. Цей режим забезпечує відмовостійкість.

XOR (balance-xor)

Передача мережевих пакетів на основі [(вихідний МАС-адреса XOR з МАС-адресою призначення) по модулю NIC лічильника веденого]. При цьому вибирається один і той же NIC рабиню для кожного призначення MAC-адреси. Цей режим забезпечує балансування навантаження і відмовостійкість.

Broadcast (broadcast)

Передача мережевих пакетів на всіх підлеглих мережевих інтерфейсів. Цей режим забезпечує відмовостійкість.

IEEE 802.3ad Динамічна агрегація кагалів (802.3ad)(LACP)

Створює агрегаційні групи, які поділяють ті ж налаштування швидкості і дуплексів. Використовує всі підлеглі мережеві інтерфейси в активній групі агрегації відповідно до специфікації 802.3ad.

Адаптивне балансування навантаження передачі (balance-tlb)

Режим Лінукс bonding драйвера, який не вимагає будь-якої спеціальної підтримки мережевого комутатора. Вихідний трафік пакетних розподіляється відповідно до поточного навантаженням (розрахованого по відношенню до швидкості) на кожному підпорядкованому мережевому інтерфейсі. Вхідний трафік приходить на один з призначених на даний момент мережевий інтерфейс. Якщо цей приймальний інтерфейс виходить з ладу, то тоді інший бере МАС-адресу інтерфейсу, що відмовив.

Адаптивне балансування навантаження (balance-alb)

Включає в себе balance-tlb плюс балансування вхідного навантаження (RLB) для трафіку IPv4 і не вимагає будь-якого спеціального налаштування комутатора. Балансування вхідного навантаження досягається за рахунок ARP домовлення. Драйвер bonding перехоплює ARP Відповіді послані локальною системою на їх виході і перезаписує вихідну апаратну адресу унікальною апаратною адресою одного з мережевих інтерфейсів, що є в одному логічному об'єднаному інтерфейсі, так що різні мережеві-ровесники використовують різні МАС-адреси для пакетної передачі трафіку.

Драйвер Linux Team [ред. | ред. код]

Linux Team драйвер забезпечує альтернативу для bonding драйвера. Основна відмінність полягає в тому, ядерна частина драйвера Team містить тільки важливий код а інша частина коду (перевірки посилань, реалізації LACP, прийняття рішень і т. д.) виконується в просторі користувача як частина teamd сервісу.

Використання[ред. | ред. код]

Мережева магістраль[ред. | ред. код]

Агрегація каналів забезпечує недорогий спосіб будувати високошвидкісну магістральну мережу, яка передає набагато більше даних, ніж один єдиний порт або пристрій. Агрегація каналів також дозволяє поступово збільшувати швидкість магістральної мережі в міру зростання мережі без необхідності заміни всього та купівлі нового обладнання.

Більшість магістральних встановлень прокладають більше кабелів або волоконно-оптичних пар, ніж спочатку необхідно, навіть якщо у них немає термінової необхідності для додаткових кабелів. Це робиться тому, що витрати на робочу силу вище, ніж вартість кабелю, і проведення додаткового кабелю знижує майбутні витрати на робочу силу, якщо мережеві потреби змінюються. Об'єднання каналів може дозволити використання цих додаткових кабелів для незначного збільшення швидкості та не потребує будь-яких додаткових витрат, якщо порти доступні.

Порядок кадрів[ред. | ред. код]

При балансуванні трафіку, мережеві адміністратори часто хочуть уникнути зміни порядку Ethernet кадрів. Наприклад, TCP зазнає додаткових накладних витрат при роботі з перемішаними пакетами. Ця ціль приблизно досягається посиланням всіх кадрів, які пов'язані з конкретною сесією, по тому ж самому каналу. Найбільш поширені реалізації використовують L3 хеш (тобто на основі IP-адреси), гарантуючи, що той же потік завжди передається через той же фізичний канал.[citation needed]

Проте, в залежності від трафіку, то це може не забезпечити рівномірний розподіл між каналами в магістралі. Це ефективно обмежує пропускну здатність клієнта в сукупності до максимальної пропускної спроможності учасника за один сеанс. Головним чином з цієї причини 50:50 балансування навантаження практично не досягається в реальних ситуаціях; близько 70/30 зазвичай. Покращені комутатори можуть використовувати хеш L4 (тобто з використанням номера порту TCP / UDP), який принесе баланс ближче до 50:50 як різні L4 потоки між двома вузлами що може використовувати різні фізичні лінії зв'язку.[citation needed]

Максимальна пропускна здатність[ред. | ред. код]

Кілька комутаторів можуть бути використані для оптимізації максимальної пропускної здатності в топології багатьох мережевих комутаторів,[9] коли комутатори налаштовані паралельно в рамках ізольованої мережі між двома або більш системами. У цій конфігурації комутатори ізольовані один від одного. Одна з причин використання такої топології — це ізольована мережа з великою кількістю хостів (наприклад, кластер налаштований для забезпечення високої продуктивності), використання кілька невеликих комутаторів може бути більш економічно ефективним, ніж один великий комутатор. Якщо потрібний доступ за межами мережі то окремий хост може бути оснащений додатковим мережевим пристроєм, підключеним до зовнішньої мережі; цей хост тоді додатково виступає як шлюз. Мережеві інтерфейси з 1 по 3 вузла А обчислювального кластера, наприклад, з'єднані через окремі мережеві комутатори з 1 по 3 мережевими інтерфейсами з 1 по 3 вузла B обчислювального кластера; тут немає взаємозв'язку між мережевими комутаторами з 1 по 3. Режим balance-rr лінкс bonding драйвера зазвичай використовуються в конфігураціях цього типу; режим balance-rr дозволяє окремі зв'язки між двома вузлами, щоб ефективно використовувати пропускну здатність більш ніж одного інтерфейсу.

Використання мережевих інтерфейсних карт[ред. | ред. код]

Мережеві адаптери об'єнані разом можуть також забезпечити мережевий зв'язок за межами пропускної здатності будь-якого одного. Наприклад, це дозволяє центральному файловлму серверу встановити агреговане 2-гігабітне з'єднання за допомогою двох 1-гігабітних мережевих адаптерів об'єднаних разом. Зверніть увагу швидкості передачі даних як і раніше будуть 1Гбіт/с, що може ввести в оману в залежності від методологій, які використовуються для тесту пропускної здатності агрегованого каналу.

Microsoft Windows[ред. | ред. код]

Microsoft Windows Server 2012 підтримує агрегацію каналів на базі ОС. Попередні версії Windows Server покладалися на підтримку виробника в межах їх програмного драйвера пристрою. Intel, наприклад, випустила Advanced Networking Services (ANS) для з'єднання Intel Fast Ethernet і Gigabit карти.[10] Nvidia також підтримує «групування» за допомогою Nvidia Network Access Manager/Firewall Tool. HP також має інструмент групування для HP фірмових мережевих карт, який дозволить групування для non-EtherChanneled NIC або який буде підтримувати кілька режимів EtherChannel (агрегація портів), включаючи 802.3ad з LACP. Крім того, є базовий 3-рівня агрегація (доступа принаймні з Windows XP SP3), що дозволяє серверам з декількома інтерфейсами IP в тій же мережі виконувати балансування навантаження, а також домашні користувачі з більш ніж одним підключенням до Інтернету, що збільшує швидкість з'єднання розділяючи навантаження по всіх інтерфейсах .[11] Broadcom пропонує розширені функції через Broadcom Advanced Control Suite (BACS), за допомогою якого функціональність групування BASP («Broadcom Advanced Server Program») доступний, пропонуючи 802.3ad статичні групи LAG, LACP і «розумне групування», який не вимагає якої-небудь конфігурації на комутаторах для роботи. Можна налаштувати групування за допомогою BACS поєднуючи мережеві карти від різних виробників до тих пір, поки хоча б один з них є Broadcom та інші мережеві адаптери мають необхідні можливості для створення групування.[12]

Linux та UNIX[ред. | ред. код]

Linux, FreeBSD, NetBSD, OpenBSD, Mac OS X, OpenSolaris та комерційні дистрибутиви UNIX, такі як AIX, підтримують Ethernet склеювання (групування) на більш високому рівні, і отже, можуть мати справу з мережевими картами від різних виробників або драйверів, до тих пір, як мережева карта підтримується ядром.[9]

Платформи віртуалізації[ред. | ред. код]

Citrix XenServer і VMware ESX мають вбудовану підтримку для встановлення агрегованого зв'язку. XenServer пропонує як статичні LAG так і LACP. Vsphere 5.1 (ESXi) тепер підтримує як статичні LAG так і LACP з їхнім віртуальним розподіленим комутатором. Для Microsoft Hyper-V склеювання або групування не пропонується від гіпер-козирка або на рівні ОС, але вищезгадані методи групування під Windows також поширюються і для Hyper-V.

Обмеження[ред. | ред. код]

Один коммутатор[ред. | ред. код]

При режимах balance-rr, balance-xor, broadcast і 802.3ad всі фізичні порти в групі агрегації каналів повинні знаходитися на тому ж логічному комутаторі, який в більшості випадків буде залишатися єдиною точкою відмови, коли фізичний комутатор, до якого обидва канали підключені переходять в автономний режим. При active-backup, balance-tlb, та balance-alb також може бути підключення до двох або більше комутаторів. Але після спрацювання відмовостійкості (як і у всіх інших режимах), в деяких випадках, для активних сесій може відбутися збій (через проблеми ARP) і вони повинні бути перезапущені.

Проте, майже всі виробники мають власні розширення, які вирішують дещо з цього питання: вони агрегують кілька фізичних комутаторів в один логічний комутатор. У 2012 році IEEE стандартизовали цю функцію в IEEE 802.1aq. Протокол розділеного багатокагального транкінгу (SMLT) дозволяє кільком каналам Ethernet бути розділеним на кілька комутаторів в стеці, запобігаючи виникненню єдиної точки відмови, і додатково дозволяє всім комутаторам балансувати навантаження між декількома комутаторами агрегації з одного стека доступу. Ці пристрої синхронізують стан між інтер-комутаторними магістралями (від анг. Inter-Switch Trunk IST) таким чином, що вони з'являються на сполучному (доступу) пристрої, щоб бути одним пристроєм (блок комутатора) і запобігати дублюванню пакетів. SMLT забезпечує підвищену стійкість з суб-другого аварійного перемикання і суб-другого відновлення для всіх швидкостей (10 Мбіт / с, 100 Мбіт / с, 1000 Мбіт / с і 10 Гбіт / с) при прозорій роботі для кінцевих пристроїв.

Однакова швидкість з'єднання[ред. | ред. код]

У більшості реалізацій, всі порти, що використовуються в агрегації, складаються з одного і того ж фізичного типу, наприклад, всі мідні порти (10/100/1000BASE-T), всі багаторежимні оптоволоконні порти, або всі порти однорежимних оптоволоконні порти. Проте, всі IEEE стандарти вимагають щоб кожен канал був повно-дуплексим, і всі вони мали однакову швидкість (10, 100, 1000 або 10000 Мбіт/с).

Багато комутаторів PHY незалежні, а це означає, що комутатор може мати суміш міді, SX, LX, LX10 або інших GBIC-ів. Збереження такої ж PHY є звичайним підходом, одночасно можна агрегувати волокно 1000BASE-SX для однієї лінії зв'язку і 1000BASE-LX (більш, різноманітний шлях) для другого каналу, але головне в тому, що швидкість буде 1 Гбіт/с повний дуплекс для обох каналів. Один шлях може мати трохи більший час транзиту, але стандарт був спроектований так, щоб це не викликало проблем.

Невідповідності Ethernet агрегації[ред. | ред. код]

Невідповідність агрегування відноситься до не відповідності типу агрегування на обох кінцях зв'язку. Деякі комутатори не реалізують стандарт 802.1AX але підтримують статичну конфігурацію агрегації каналів. Таким чином, агрегація каналів між аналогічним статично налаштованими комутаторами буде працювати, але будуть проблеми між статично налаштованим комутатором і пристроєм, що налаштований для LACP.

Див. також[ред. | ред. код]

Примітки[ред. | ред. код]

  1. а б Guijarro, Manuel; Ruben Gaspar та ін. (2008). Experience and Lessons learnt from running High Availability Databases on Network Attached Storage. Journal of Physics: Conference Series. Conference Series. Т. 119, № 4. IOP Publishing. с. 042015. doi:10.1088/1742-6596/119/4/042015. Архів оригіналу (PDF) за 7 жовтня 2020. Процитовано 17 серпня 2009. Network bonding (also known as port trunking) consists of aggregating multiple network interfaces into a single logical bonded interface that correspond to a single IP address.
  2. IEEE 802.3ad Link Bundling. Cisco Systems. 27 лютого 2007. Архів оригіналу за 19 квітня 2012. Процитовано 15 березня 2012.
  3. а б IEEE 802 Trunking Tutorial. 11 листопада 1997. Архів оригіналу за 7 грудня 2013. Процитовано 13 серпня 2013.
  4. а б IEEE 802.3ad Link Aggregration Task Force. Архів оригіналу за 27 жовтня 2017. Процитовано 19 травня 2016.
  5. Law, David (13 лютого 2006). IEEE 802.3 Maintenance (PDF). с. 9. Архів оригіналу (PDF) за 7 жовтня 2008. Процитовано 18 серпня 2009. Proposal to move Link Aggregation to IEEE 802.1 •It is an 802.3 sublayer but it has to go above IEEE Std 802.1x
  6. IEEE SA - 802.1AX-2008 - IEEE Standard for Local and metropolitan area networks--Link Aggregation. Архів оригіналу за 7 серпня 2013. Процитовано 13 серпня 2013.
  7. Link aggregation on Dell servers (PDF). Архів оригіналу (PDF) за 13 березня 2012. Процитовано 19 травня 2016.
  8. FierceWirelessTech: Connectify commercializes Speedify channel bonding service. Архів оригіналу за 28 червня 2016. Процитовано 19 травня 2016.
  9. а б в г The Linux Foundation: Bonding. Архів оригіналу за 28 грудня 2010. Процитовано 19 травня 2016.
  10. Intel Advanced Networking Services. Архів оригіналу за 24 січня 2007. Процитовано 19 травня 2016.
  11. Load Balance Network Adapters, at PC Tools' Registry Guide for Windows. Архів оригіналу за 1 квітня 2017. Процитовано 19 травня 2016.
  12. Broadcom Windows Management Applications [Архівовано 1 серпня 2012 у Wayback Machine.], visited 8 July 2012