Стань сильним Software Architect, впорядкуй знання та отримай нові навички. Реєстрація на тренінг!
×Закрыть

Карантин, дата-центри і сила мережевої операційної системи SONiC

Привіт, мене звати Максим, і я працюю техлідом у спеціалізованій R&D-компанії PLVision. З 2007 року вона розробляє програмні рішення у сферах вбудованих систем та мережевих технологій, а також Інтернету Речей.

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

У цій статті я хочу зачепити тему мережевих інновацій і поговорити про молоду і гарячу технологію SONiC, на якій працює хмарна платформа Microsoft Azure. Незважаючи на світову популярність, в Україні про SONiC знають мало. Нижче розкажу детальніше про цю ОС, а також поділюсь досвідом роботи PLVision над SONiC-проєктами.

Також я помітив, що в українському ІТ загалом говорять про мережеві розробки не так часто, як хотілося б. Думаю, багато хто навіть не здогадується, що важливі зміни у галузі комп’ютерних мереж впроваджують саме в Україні. Час про це поговорити.

Як COVID-19 вплинув на мережеві технології

Мережеві потужності, наявні на початку карантину, не змогли впоратись із цілою армією людей, які масово і одночасно почали переводити всю свою діяльність в онлайн. Наприклад, YouTube був змушений знижувати якість контенту через великий наплив користувачів, американський Netflix та український Megogo заявили — трафік по буднях зрівнявся з вихідними, а від операторів мобільного зв’язку ми дізнались, що люди почали значно частіше телефонувати один одному, і тривалість розмов раптом різко зросла. Сайти повільно завантажувались чи зовсім падали, а інколи Інтернет переставав працювати якраз у момент важливих дзвінків.

Гігабайти Інтернету, які британці використовували вдома. Порівняння трьох днів березня-19 і березня-20. Джерело: Statista

Люди почали робити онлайн-покупки у тих продуктових групах, в яких вони раніше купували тільки офлайн. Те саме сталось і зі споживанням багатьох послуг, і, схоже, ця тенденція не швидко піде на спад. Згідно з дослідженням міжнародної консалтингової компанії McKinsey & Company, 75% респондентів, які під час карантину вперше почали здійснювати онлайн-замовлення продуктів, брати участь в онлайн-навчанні, займатись дистанційно фітнесом, купувати одяг, взуття тощо, сказали, що продовжуватимуть робити це онлайн і після послаблення карантину. Їм це сподобалось і так комфортніше. В Україні тенденції схожі, і це — наші нові реалії.

Дослідження споживацьких паттернів у країнах, що відновлюються після суворого карантину. Джерело: McKinsey & Company

Зараз все більше компаній, які мають власні дата-центри, виробляють мережеве обладнання тощо, звертаються до опенсорсних, тобто відкритих технологій. Це дозволяє швидше та ефективніше впроваджувати якісні зміни у їхніх продуктах та послугах. Однією із таких технологій є операційна система SONiC — Software for Open Networking in the Cloud. Її розвиває велика технологічна спільнота, до якої входять такі гіганти як Facebook, LinkedIn, Alibaba. Навесні цього року такі корпорації як Nokia, Cisco, Dell оголосили, що теж приєднуються до цієї спільноти, а eBay і Target — що розглядають застосування SONiС.

PLVision має досвід роботи з основними мережевими операційними системи на ринку, зокрема з відкритими ОС, серед яких є і SONiC. З новин галузі та зі звернень замовників ми бачимо, як зростає попит на цю технологію. Я сам працюю із SONiC вже не перший рік. У 2016 Microsoft представив його для широкого загалу, і це був перший продукт в історії компанії, випущений на базі Linux. Якщо коротко, то він є системою програмних компонентів для управління комутаторами (свічами) та іншими мережевими пристроями з широкою функціональністю.

SONiC — інноваційна операційна система, розроблена Microsoft & Co

SONiC було представлено у вигляді відкритого коду на OCP Global Summit 2016. До цього він називався Azure Cloud Switch (ACS). Його створено на основі Debian. Завдяки використанню Switch Abstraction Interface (SAI) він може працювати на комутаторах та роутерах (маршрутизаторах) різних виробників.

Наразі існує близько 70 мережевих платформ, які підтримують SONiC. SAI використовується як рівень абстракції, надаючи сталий API для керування Application Specific Integrated Circuits (ASIC). Основні властивості SONiC будуються на базі Linux і SAI.

Загалом SONiC називають тришаровою мережевою ОС, яка складається з:

  • Кремнієвого чипа/ASIC;
  • Мережевого прошарку (основна функція SONiC);
  • Інструментів керування.

Екосистема SONiC. Джерело: блог Microsoft Azure

Оскільки SONiC — це продукт із відкритим кодом, його розробляли не лише в Microsoft. До процесу долучились лідери мережевого ринку — Arista, Broadcom, Dell та Mellanox (тепер NVIDIA). Компанія Cisco тоді зробила внесок у розробку ASIC та мережевого прошарку для SONiC. Крім того, постачальники систем власної розробки — Original Design Manufacturers (ODM), як-от Delta, Celestica, Inventec тощо, також брали участь у створенні мережевого рівня цієї операційної системи.

Alibaba Group сприяє розширенню SONiC з метою обробки дворівневих сценаріїв на рівні додатків. LinkedIn додав підтримку Free Range Routing (FRR), а інші компанії — можливості для мультихостингу. Це робить SONiC доступнішим для підприємств, у яких немає проектних груп із питань мережевого ПЗ.

Загалом SONiC — це сукупність патчів ядра, драйверів пристроїв, утиліт тощо, які поєднано з дистрибутивом Linux. Насамперед це ПЗ спрямоване на вирішення питань надійності та доступності хмарної мережі, а також можливості її розширення, тобто додавання нових функцій.

Приклад того як змінювався SONiC від моменту офіційного релізу

Основні принципи роботи SONiC:

  • Контроль. Це відкрите програмне забезпечення, тому воно дає змогу кожному досліджувати його вміст і вибирати, що саме потрібно розгорнути та які функції вимкнути на своїх комутаторах чи роутерах.
  • Можливість розширення. Контейнеризація робить SONiC надзвичайно простим у доповненні та розширенні. Оператори можуть легко додати в SONiC нові компоненти, відкрите або комерційне програмне забезпечення, налаштовуючи систему для власних потреб. Це дозволяє новим розробникам легко впроваджувати нові функції та можливості. Кожен охочий може ознайомитись із дорожною картою (роудмапом) проєкту, відслідкувати прогрес версій та ознайомитись із активними гілками на GitHub:
  • 201811 — Перелік заморожених фіч. Усування багів і стабілізація.
    SAI v1.4.1
  • 201911 — Рішення, що періодично погоджуються з активною спільнотою. Імовірно, не тестовані.
    SAI v1.5.1
  • master — Рішення, які тестовані активними розробниками. Інколи нестабільні.
    SAI v1.5.1
  • Швидка адаптація. Завдяки функції hitless upgrade можна швидко додавати нові фічі, виправляти баги, накладати security патчі.
  • Співпраця. Відкритий код додає швидкості до впровадження нових функцій і стимулює інновації. Кожен може запропонувати рішення для будь-якого прошарку SONiC: від апаратного забезпечення до нових додатків та інструментів. Проєкти на основі SONiC дають можливість працювати із досвідченою спільнотою, спілкуватись з інженерами з різних куточків планети, підписувати коміти своїм іменем. Допомагаючи розробляти відкритий код SONiC і сприяючи розвитку технології, Microsoft, зміг розширити свою присутність у центрах обробки даних хмарних сервісів та провідних онлайн-провайдерів широкого кола послуг (Alibaba, Tencent, Baidu тощо). Центри обробки даних цих компаній здебільшого працювали на технологіях Microsoft, за винятком частини мережевої інфраструктури, яку зазвичай охоплюють фірмові продукти. Впровадження SONiC дозволило їм скоротити витрати на мережеву інфраструктуру завдяки використанню відкритого програмного забезпечення. Крім того, вони змогли спростити режим управління, узгодивши верхній рівень додатків з рівнем інфраструктури.

Як технологічна спільнота розвиває відкритий SONiC

Однією з ключових особливостей SONiC є його контейнерний характер. Функції і компоненти технології розміщено в окремих docker-контейнерах.

Наприклад, контейнер Border Gateway Protocol (BGP) містить наступні компоненти:

  • bgpd (реалізація BGP),
  • zebra (IP routing-manager),
  • fpmsyncd (демон для збереження FIB в базу даних SONiC).

Завдяки такому підходу ми можемо легко оновити будь-який з компонентів незалежно від інших, а також комбінувати їх таким чином, щоб отримати потрібний набір ПЗ.

Структура SONiC. Джерело: OCP Global Summit, 2019

Щоб додати новий функціонал, інженери розробляють додатковий контейнер і розгортають його на комутаторах/роутерах із підтримкою SONiC. Також можна використовувати найрізноманітніші інструменти конфігурації й керування на додачу до SONiC, а отже, прив’язати комутатори/роутери до загальної платформи керування послугами.

Завдяки тому, що до розвитку SONiC долучається спільнота великих технологічних компаній, він має широкий набір можливостей:

  • транк VLAN, TACACS і потокове передавання даних за допомогою телеметрії;
  • інтеграція FRR, конвергенція BGP, Open19;
  • підтримка OOM (відкритого оптичного моніторингу);
  • функція швидкого перезавантаження;
  • функція перезавантаження без вимкнення живлення;
  • модульне шасі та підтримка комутаторів на основі ARM;
  • візуалізація мережі.

На GitHub є окрема wiki-сторінка про SONiC з величезним масивом слайдів, підказок тощо.

Досвід PLVision у роботі із SONiC

Інженери PLVision працюють із SONiC з моменту його офіційного запуску, тобто з 2016 року. Команда зробила вагомий внесок у розробку проєкту, здійснивши понад 1000 успішних комітів, при цьому підтвердивши та інтегрувавши їх із продуктами замовників.

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

Загалом ми здійснюємо розробку цілого продукту чи певного функціоналу на основі SONiC, а також надаємо підтримку.

Одним із наших перших SONiC-замовників була компанія, яка виробляла мережеві комутатори, і для них ми здійснювали інтеграцію SONiC із цими пристроями. Ми можемо працювати безпосередньо із клієнтським залізом у нашому офісі або ж робимо усе віддалено. Цей проєкт був великим, і складався із семи підпроєктів:


  1. Портування мережевої операційної системи SONiC поверх прошарку SAI для комутатора замовника;
  2. Адаптація/розширення прошарку SAI для задоволення функціональних вимог SONiC;
  3. Етап bring-up SONiC на комутаторі замовника;
  4. Інтеграція з платформою/пакетом підтримки платформи (BSP). Перелік драйверів та функцій надавався замовником;
  5. Забезпечення тестування SONiC. Перелік того, що тестуватиметься, узгоджувався із замовником;
  6. Налаштування експериментального середовища для тестування;
  7. Розробка документації.

(Інтеграція SONiC з мережевим пристроєм у дата-центрі)

Нові версії SONiC виходять орієнтовно раз на 6 місяців, і для виробників оригінального мережевого обладнання та систем власної розробки важливо, щоб на їхніх whitebox-комутаторах/роутерах коректно працювала найсвіжіша версія. Таким компаніям потрібна постійна підтримка SONiC, яку ми надаємо. Щоправда, у подібних кейсах є і свої нюанси, на які треба зважати:

  • Whitebox-модель замовника є вигідною для кінцевих споживачів, але вимагає використання відкритої мережевої операційної системи. На відміну від програмного забезпечення певного постачальника, адаптація SONiC до конкретного deployment сценарію вимагає додаткових зусиль програмних інженерів і фахівців служби підтримки. Саме тому для виконання цієї роботи потрібно залучати вузьких спеціалістів.
  • Вносячи якісь зміни для підтримки рівня якості продукту, слід регулярно проводити тестування, зокрема постійно брати до уваги початковий стан продукту. Так можна переконатися, що whitebox-комутатори із SONiC працюють коректно.
  • Замовнику необхідно виділити свій продукт серед продуктів інших постачальників, які працюють на основі того ж кремнієвого чипа (ASiC), орієнтуючись на конкретний сценарій розгортання. Додаткова функціональність як апаратного, так і програмного забезпечення має бути конкурентною перевагою для замовника, проте її реалізація вимагає і додаткових зусиль.

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

У таких випадках мені та моїм колегам доводиться ставати викладачами, щоб ділитись досвідом. Нещодавно PLVision запустив навчальний курс Advanced Computer Networking в Українському Католицькому Університеті у рамках бакалаврської програми Computer Science. Впродовж двох семестрів ми відкриваємо студентам світ мережевих технологій. Тішить, що навчальні заклади готові до експериментів та партнерства, і розуміють, що часу гаяти не можна. Ви ж пам’ятаєте про нові версії SONiC кожних півроку? :)

Наша компанія регулярно запрошує до співпраці досвідчених C, C++ інженерів, а також Python Automation інженерів, яким у форматі on-the-job training ми допомагаємо опанувати Microsoft Azure SONiC. Тоді вони разом з нами приступають до розробки інноваційних мережевих продуктів і, таким чином, долучаються до якісних змін у глобальному масштабі. Долучайтеся і ви — ловіть хвилю інновацій.


Підписуйтеся на Telegram-канал «DOU #tech», щоб не пропустити нові технічні статті.

LinkedIn
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Интересный доклад. Приятно, что есть на рынке компании занимающиеся подобной тематикой.

Из негативного опыта одного из моих предыдущих проэктов могу сказать, что работать с SONiC могут позволить себе либо достаточно серьезные компании уровня Microsoft/Facebook/... либо стартапы без адекватного финансирования не понимающие всю сложность данной тематики.

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

Подскажите, какой стартап может позволить себе подобное и быть конкурентноспособным?

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

Да, функциональность поставляемых вендорами ASIC (Broadcom, Mellanox, ...) действительно
впечатляет и при наличии достаточных ресурсов на них возможна реализация NOS по функциональности и качеству сопоставимая с некоторыми из продуктов от сетевых вендоров.

Вопрос в понимании уровня инвестициий теми кто берется за это и сложности задач возникающих перед командой.

С технической точки зрения предстоит написать control plane и уровень абстракций с железом с нуля (см. пример Juniper с их JunOS) борясь с искушением использовать уже «готовое» ПО (например FRR/Quagga). Иметь огромные ресурсы по автоматизации тестирования.

В противном случае получаются полу-решения для поддержания которых необходима команда
разработки на протяжении всего жизненного цикла продукта (баги, миграция на новое железо т.к. производитель whitebox линейки коммутаторов отказался от поддержки или вовсе исчез, миграция старых драйверов на новые дистрибутивы/ядра и т.п.), что в конечном итоге приведет к еще большим затратам чем покупка готового решения с поддержкой от вендора.

Рынок сетевых консервативен — чтобы занять хотя бы какую-то нишу нужны годы. Пример более менее успешных компаний — Cumulus, Arista.

Успешный опенсорс очень часто начинается с больших Enterprise-ов, которые вкладывают туда деньги для того, чтобы довести его до адекватного уровня обычного пользователя. Например, всем известная OS Linux. Мне кажется, что о многочисленных юзкейсах последней упоминать не стоит. Ну и в общем время закрытых систем проходит и это общий тренд не только в нетворкинге и IT вообще.

SONiC часом не форк Cumulus Linux, той теж базується на Debian?

Чи існує SONiC в вигляді virtual appliance, який можливо імпортувати в симулятори GNS3 або EVE-NG?

Mellanox заробляє стеженням за користувачами. Для чого вони приєдналися до розробки — це секрет ;)

Реквестирую сравнение с ONF и Openstack.

ONF — спільнота, мета якої зробити мережеву транформацію, перевести комп’ютерні мережі на якісно новий рівень.
OpenStack — спільнота, мета якої зробити доступною можливість побудови віртуальної інфраструктури.
У цих спільнот різні цілі, а в ONF маса різних проєктів. Що саме і як порівняти з SONiC?

а SONiC кем-то действительно используется в Open Compute Project (OCP)?
или это пока просто проект?
а ну да — Microsoft же ж :-) это я не проснулся еще :-)
но в Facebook и прочих (использующих OCP архитектуру) вроде другие сетевые устройства?

Він вже працює на платформах Barefoot (тепер Intel), Mellanox (тепер NVIDIA), Cisco, Dell, Apstra... Список неповний.

то, что его там можно запустить, совершенно не означает, что его там действительно используют
та же Cisco будет предлагать свои устройства, в первую очередь, с родной ОС

Все так і не так :-) Cisco почав активно інвестувати в опенсорсний SONiC, бо ніхто не любить платити за їхню ОС. Основні драйвери SONiC — white- & brite-box вендори, основные конкуренти Cisco, він мусить їх наздоганяти. Так само як і їхній SDN.

Будь-який hyper scaler, який використовує Microsoft стак, приречений на використання SONiC. Інакше він не отримає повний бенефіт. Тому й китайські гіперскейлери сидять на ньому і розвивають свої гілки.

Будь-який hyper scaler, який використовує Microsoft стак, приречений на використання SONiC

и много таких, кроме самого MS?

в ТОП10 діджитал компаній таких я знаю мінімум 3, а скільки їх всього знає напевно лише відділ продажів MS

Alibaba, Tencent — це лише ті, що відкрито про це заявляють та інвестують в комюніті.

А, ну і LinkedIn точно теж. Ще до того як він став Microsoft :-)

Объясните зачем cisco развивать прямую конкуренцию своей линейке продуктов инвестируя в SONiC и другие открытые NOS? С чего это вдруг решили что покупать решения от венродов и платить за их ОС никто не хочет?

Если посчитать стоимость построения и управления сети на основе решений от лидеров рынка на протяжении всего жизненного цикла сети выйдет дешевле.

Коммутаторы и функционал SONiC едва покрывают потребности инфраструктуры датацентров. Решения сетевых вендоров нацелены на все остальные сегменты.

Так само думав і IBM, коли зробив BIOS закритим. Яке продовження історії ми знаємо.

чем армяне лучше, чем грузины?
чем SONiC лучше, чем всякие Mellanox Onyx, NX-OS и прочие JunOS?

С точки зрения Microsoft: SONiC лучше всех вышеперечисленных тем, что он самый верхний abstraction layer, независимый от фактического железа и ОС каждого конкретного производителя, поэтому в своих дата-центрах Microsoft должен организовывать взаимодействие других продуктов только с SONiC, а не с каждой их перечисленных систем.

Як SONiC співвідноситься з OpenWRT?
Чи вони для різних сегментів ринку?

Сегменты разные. OpenWRT больше для домашних роутеров.

По суті вони для діаметрально протилежних сегментів. SONiC заточений під ентерпрайз дата-центри, а OpenWRT — для малого й середнього бізнесу та домашнього вжитку.
SONiC працює за принципом дизагрегації, а OpenWRT, як правило, заточений під коробку і є частиною продукту, просто на відкритій платформі.

SONiC заточен в лучшем случае для частичного покрытия задач датацентра. Задачи среднего и крупного enterprise сегмента не покрыты вообще. Просто по причине того, что единственный класс устройств который поддерживает SONiC — L3 коммутаторы.

Подписаться на комментарии