Поділ control і data plane в мережевому обладнанні



У роботі мережного пристрою можна виділити дві абстракції – керуючий рівень (control plane) і передає рівень (data plane). Сontrol plane відповідає за логіку роботи мережевого пристрою для забезпечення в подальшому можливості передачі пакетів (заповнення різних таблиць, наприклад, маршрутизації, відпрацювання різних службових протоколів ARP/STP/тощо). Data plane в свою чергу відповідає безпосередньо за передачу корисного трафіку через наше мережеве пристрій. Тобто сontrol plane нам надає інформацію куди і як слати мережевий трафік, а data plane вже виконує поставлені перед ним завдання. Дані абстракції можуть бути виділені як на логічному, так і на фізичному рівні. Але завжди на мережевому обладнанні присутній такий поділ і де саме виконуються функції кожної з абстракцій? Давайте спробуємо в цьому розібратися.

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

Якщо ми звернемо свій погляд на програмно-визначаються мережі (Software-defined Network – SDN), ми виявимо, що керуючий рівень повністю або частково переноситься взагалі на виділене пристрій. Однак розгляд таких рішень залишимо за рамками даної статті.

Комутатори

Почнемо з комутаторів, так як тут ми отримаємо найбільш наочне поділ наших абстракцій. Головне для комутатора– швидкість передачі даних. Вся обробка пакетів повинна реалізуватися на швидкості порту (wire-speed), інакше комутатор буде гальмуючим елементом у нашій мережі. У зв'язку з цим, саме в комутаторах ми можемо виявити реалізацію передавального рівня на окремих мікросхемах – ASIC'ах (ASIC — інтегральна схема спеціального призначення). Фактично на комутаторі керуючий рівень виконується на базі процесора загального призначення, а передавальний рівень, як ми вже відзначили, на базі ASIC.

Процесори, які встановлюються в мережеве обладнання, найчастіше мають відмінності від тих, які стоять в наших ПК і серверах. Це найчастіше спеціалізовані процесори, які розраховані на використання в межах різних пристроїв (мережевих систем зберігання даних тощо) і відносяться до класу вбудованих процесорів (embedded processors). Зазвичай вони мають невеликий розмір, споживають небагато енергії і є частиною однокристальних системи (System on a chip – SoC). SoC – практично повноцінний комп'ютер, виконаний на базі однієї мікросхеми (з (мікро)процесором, оперативною пам'яттю, контролер введення/виводу, інтерфейсами тощо). Деякі з таких процесорів заточені на виконання операцій в мережевих пристроях, інші мають більш широкий спектр застосування. При цьому найчастіше на них можна запустити, наприклад, якісь рішення на базі Unix/Linux, так як вони все-таки залишаються в першу чергу процесорами загального призначення.

Класичний ASIC має стандартний набір функцій, які виконуються апаратно. Фактично загальна логіка обробки пакетів закладається в ASIC на етапі виробництва мікросхеми, змінити яку досить складно. У ASIC'е ми отримуємо прийнятний рівень логіки і при цьому високу швидкість обробки пакетів. Таким чином, висока продуктивність в комутаторі досягається за рахунок виконання функцій передавального рівня на ASIC'ах. І саме ASIC'і є причиною відносно обмеженою логіки роботи комутатора, яку складно змінити. Можна було б замість ASIC використовувати мікросхеми FPGA (Field-Programmable Gate Array), які можна перепрограмувати. Але вони дорогі і енергоємні. Тому виробники мережного устаткування, щоб не збільшувати вартість своїх пристроїв, з одного боку, частина обробки пакетів намагаються перенести на процесор загального призначення (тобто туди де працює керуючий рівень), що не завжди добре позначається на продуктивності пристрою. З іншого боку, намагаються модернізувати ASIC, зробивши їх більш функціональними і навіть програмованими (наприклад, ASIC UADP компанії Cisco).
ПриміткаІноді абревіатура ASIC використовується разом з абревіатурою SoC. Тут легко можна заплутатися, так як ASIC, в якому є мікропроцесор і пам'ять, фактично стає рішенням SoC.


Це трохи спрощене формулювання, але для загального розуміння, думаю, достатня. Таким чином, класичний ASIC виконувати більш специфічні операції, а SoC більш загальні, так як там є процесор.
Зазвичай в комутаторі стоїть один або кілька ASIC'ів. Наприклад, на кожні 12/24 порту ставиться свій ASIC. Програмування логіки роботи ASIC'а виконує керуючий рівень. Саме він заповнює всі таблиці всередині ASIC'а (маршрути, списки доступу тощо). ASIC може мати достатній інтелект, щоб комутувати пакети всередині себе, або ж здійснювати комутацію пакетів через зовнішню шину/комутаційну фабрику. Така архітектура використовується в першу чергу в комутаторах фіксованого конфігурації (не модульних). Прикладами таких комутаторів можуть бути Cisco Catalyst 2960/3650/3850.
ПриміткаВ статті в якості прикладів найчастіше будуть використовуватися пристрої компанії Cisco. Це обумовлено тим, що даний виробник один з небагатьох, хто надає досить детальну інформацію щодо апаратної архітектури всіх своїх пристроїв.

Наведені в статті структурні схеми комутаторів і маршрутизаторів є спрощеними для акцентування уваги в першу чергу на розташування керуючого і передавального рівнів. Вони не включають усі структурні елементи пристроїв.

Якщо ми маємо справу з модульним комутатором (комутатор, в який можна встановлювати плати з різними типами портів), архітектура може бути більш складною. Більше портів, значить, потрібно більше продуктивність і більше ASIC'ів. Існує як мінімум два підходи до реалізації архітектури таких комутаторів.

У першому випадку, передавальний рівень виконується централізовано на виділених ASIC'ах, які розташовуються на окремій платі. У цьому випадку ASIC'і на лінійних картах є менш інтелектуальними і виконують вкрай обмежений набір функцій. Програмуванням логіки продовжує займатися керуючий рівень, якій в свою чергу запускається на своїх апаратних потужностях (використовується знову ж процесор загального призначення (причому їх може бути кілька), розташований на окремому модулі — супервизоре). Прикладом таких комутаторів можуть бути Cisco Catalyst 4500 і Cisco Catalyst 6500/6800 (централізована комутація).


* мікросхеми Port ASIC, встановлені на лінійних картах, не мають великий інтелектуальністю і виконують вкрай обмежений набір функцій
ПриміткаВикористання виділених ASIC'ів для передавального рівня, на мій погляд, зумовлено тим, що дешевше поставити один або два більш інтелектуальних АЅІСа на весь модульний комутатор, ніж використовувати досить розумні ASIC'і, що обслуговують порти, на кожній лінійній карті. Плюс це дозволяє подовжити життєвий цикл пристрою, так як далі, змінюючи плату з центральним ASIC'ом, ми можемо додавати новий функціонал в пристрій, використовуючи при цьому старі лінійні карти.

Можливий варіант, де на кожному модулі з лінійними портами, стоїть своя спеціалізована плата передачі. У цьому випадку кожен модуль має свій передавальний рівень, що дозволяє підвищити продуктивність всієї «коробки». Можна сказати, що це проміжний варіант між першим і другим підходами реалізації архітектури модульних комутаторів. Прикладом таких комутаторів можуть бути Cisco Catalyst 6500/6800 (розподілена комутація).


* мікросхеми Port ASIC, встановлені на лінійних картах, не мають великий інтелектуальністю і виконують вкрай обмежений набір функцій

Другий підхід – використовувати досить інтелектуальні ASIC'і на лінійних картах. У цьому випадку кожен ASIC може самостійно обробити мережний трафік, виконуючи основний набір функцій. Тобто ми одразу маємо розподілений передавальний рівень. Це може виявитися більш дорогим рішенням, але при цьому найчастіше більш продуктивним. Також ми мінімізуємо при такій архітектурі затримки при передачі пакетів. Прикладом такого комутатора може бути Cisco Nexus 9500.



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

Відзначимо, що в комутаторах ми можемо мати розподіл рівня управління. Наприклад, в комутаторі Cisco Nexus 9500 керуючий рівень всередині одного пристрою рознесений: частина функцій виконуються на супервизоре, а частина на платі лінійних портів (на кожній платі коштує свій процесор загального призначення).

До цього моменту всі розгляд відбувався в рамках одного пристрою. Але багато комутатори вміють об'єднуватися в одне логічне пристрій за коштами стекування. У разі якщо у нас зібраний стек з комутаторів, зазвичай керуючий рівень запускається на основному комутаторі (його ще називають активним/майстром). А передавальний рівень буде запущений окремо на кожному комутаторі в стеку. Тобто через стековий канал зв'язку керуючий рівень, розташований на основному комутаторі, роздає керуючу інформацію на всі комутатори в стеку для роботи передавального рівня локально. Прикладом такої моделі може бути стек Cisco технології stackwise або HPE IRF.

Маршрутизатори

Давайте тепер подивимося, як йдуть справи з нашими абстракціями в маршрутизаторах. Якщо ми будемо розглядати відносно бюджетні маршрутизатори, керуючий і передає рівні будуть виконуватися на одному і тому ж залозі — процесорі загального призначення (найчастіше у форматі SoC). Процесорний час буде розподілятися в цьому випадку між обома абстракціями. Ніяких спеціалізованих мікросхем для передавального рівня, як це було в комутаторах, ми там не знайдемо. У зв'язку з цим ми отримаємо дуже гнучку логіку роботи пристрою, але не найвидатніші значення продуктивності (десятки і сотні мегабитов в секунду). Причому різні вендорные хитрощі (наприклад, Cisco Express Forwarding) є лише оптимізацією обробки пакетів на програмному рівні на базі стандартної апаратної бази. Прикладами таких пристроїв є, Cisco 800, 1900, 2900 та ін. Ситуація змінюється, якщо наш процесор загального призначення стає багатоядерним (наприклад, в Cisco ISR 4300), та ще таких процесорів може бути кілька (наприклад, в Cisco ISR 4400). У цьому випадку керуючий і передає рівні можуть виконуватися на різних ядрах і процесорах. Причому передає рівнем виділяється відразу кілька ядер, щоб отримати паралельну обробку пакетів, а значить, підвищити продуктивність нашого пристрою. Варто зауважити, що деякі ядра можуть бути віддані взагалі під сторонні сервіси (звичайно, якщо процесор це дозволяє зробити).


Сучасні SoC мають багатоядерні процесори. 48 ядрами вже нікого не здивуєш. А укупі з інтегрованими в SoC акселираторами пакетної обробки, на базі одного SoC можна отримати дуже хорошу продуктивність: на ринку є рішення SoC, що дозволяють обробляти мережевий трафік на швидкостях до 40 Гбіт/с.

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

Один з варіантів – використання спеціалізованих мережевих процесорів (Network Processor — NP або Network Processing Unit — NPU). Мережеві процесори істотно функціональніше, ніж ASIC'і, але при цьому більш продуктивні, ніж процесори загального призначення.
ПриміткаСучасні мережеві процесори в основному побудовані на базі RISC архітектури і володіють такими схожими характеристиками:
  • програмовані – є можливість запускати на них різні сервіси (МСЕ, IPSec, NAT тощо), не обмежуючись стандартними мережевими функціями L2/L3. Також программируемость дозволяє без заміни заліза додавати новий функціонал;
  • багатопотокові – кількість потоків вимірюється сотнями (так як процесори є багатоядерними), що дозволяє отримати велику продуктивність;

  • енергоефективність – якщо порівнювати зі звичайними процесорами, мережеві процесори надають краще співвідношення пропускна здатність/Вт. Даний параметр в першу чергу впливає на щільність портів на лінійних картах пристроїв.

В якості прикладу розглянемо маршрутизатори Cisco ASR 1000, де основні функції передавального рівня виконується на окремій платі. На такій платі розміщується один або два спеціалізованих мережевих процесорів Cisco QuantumFlow Processor (QFP), які займаються безпосередньо обробкою трафіку. Цей процесор має архітектуру RISC і заточений саме під передачу трафіку. QFP другого покоління включає до 128 процесорних ядер, на кожному з яких може бути запущено чотири окремих процесу. Тобто ми маємо до 256 ядер на одній платі (у випадку двох процесорів). Порівнявши з архітектурою більш простих маршрутизаторів, де все виконується на декількох ядрах, можна відразу зробити висновок, що такі маршрутизатори є більш продуктивними.

Мережеві процесори випускаються різними компаніями (Cisco, EZChip, Broadcom тощо) і використовуються для виконання функцій передавального рівня багатьма виробниками мережного обладнання. Наприклад, мережеві процесори використовуються в обладнанні компаній Huawei (як в маршрутизаторах, наприклад, в NetEngine40E, так і в комутаторах S12700).
ПриміткаНерідко виробники мережевого устаткування при побудові високопродуктивних комутаторів (призначених для установки в ядро великих мереж) використовують в якості основи архітектуру високопродуктивних маршрутизаторів. У цьому випадку грань відмінностей між комутаторами і маршрутизаторами розмивається.

Крім мережевих процесорів, на ринку представлені спеціалізовані чіпсети, наприклад, Juniper Trio chipset. Вони позиціонуються між мережевими процесорами і ASIC'ами. За великим рахунком, загальний сенс зберігається – передавальний рівень виконується на спеціалізованому залозі, в даному випадку чіпсеті Trio Chipset. Зазначимо, що до виводу на ринок Trio chipset, компанія Juniper активно використовувала у своїх маршрутизаторах програмовані ASIC'і власної розробки (Internet Processor ASIC і I-Chip).

Варто відзначити, що в топових рішення, ми будемо мати не тільки рознесення рівнів управління і передачі між різними залізом, але і розподіл всередині кожного рівня. Наприклад, в маршрутизаторі Cisco ASR 9000 керуючий рівень всередині одного пристрою рознесений: частина функцій виконуються на процесорній платі, а частина на платі лінійних портів. Те ж саме стосується і передавального рівня: мережевих процесорів багато і вони розташовані безпосередньо на лінійних картах.


висновок

Так як реалізацій архітектур навіть у одного вендора досить багато, розглянути їх усі вкрай складно. Однак, якщо нам потрібна велика продуктивність, найчастіше передає рівень буде виконуватися на спеціалізованому залозі: будь то мережевий процесор, спеціалізований чіпсет, звичайний або програмований ASIC, або щось ще. У деяких пристроях ми зустрінемо навіть комбінацію цих мікросхем. Нерідко виробники мережевого устаткування в своєму обладнанні використовують мікросхеми сторонніх компаній (наприклад, ASIC'і або мережеві процесори).
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.