Карантин, дата-центри і сила мережевої операційної системи 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 із цими пристроями. Ми можемо працювати безпосередньо із клієнтським залізом у нашому офісі або ж робимо усе віддалено. Цей проєкт був великим, і складався із семи підпроєктів:
| (Інтеграція SONiC з мережевим пристроєм у дата-центрі) |
Нові версії SONiC виходять орієнтовно раз на 6 місяців, і для виробників оригінального мережевого обладнання та систем власної розробки важливо, щоб на їхніх whitebox-комутаторах/роутерах коректно працювала найсвіжіша версія. Таким компаніям потрібна постійна підтримка SONiC, яку ми надаємо. Щоправда, у подібних кейсах є і свої нюанси, на які треба зважати:
- Whitebox-модель замовника є вигідною для кінцевих споживачів, але вимагає використання відкритої мережевої операційної системи. На відміну від програмного забезпечення певного постачальника, адаптація SONiC до конкретного deployment сценарію вимагає додаткових зусиль програмних інженерів і фахівців служби підтримки. Саме тому для виконання цієї роботи потрібно залучати вузьких спеціалістів.
- Вносячи якісь зміни для підтримки рівня якості продукту, слід регулярно проводити тестування, зокрема постійно брати до уваги початковий стан продукту. Так можна переконатися, що whitebox-комутатори із SONiC працюють коректно.
- Замовнику необхідно виділити свій продукт серед продуктів інших постачальників, які працюють на основі того ж кремнієвого чипа (ASiC), орієнтуючись на конкретний сценарій розгортання. Додаткова функціональність як апаратного, так і програмного забезпечення має бути конкурентною перевагою для замовника, проте її реалізація вимагає і додаткових зусиль.
Я вже казав на початку, що в Україні небагато фахівців, які встигають за змінами на мережевому ринку чи мають досвід роботи із нещодавно запущеними технологіями. У ситуації, коли попит на такі рішення лише росте, ми самі беремось за популяризацію нових технологій серед фахівців та за їхнє навчання.
У таких випадках мені та моїм колегам доводиться ставати викладачами, щоб ділитись досвідом. Нещодавно PLVision запустив навчальний курс Advanced Computer Networking в Українському Католицькому Університеті у рамках бакалаврської програми Computer Science. Впродовж двох семестрів ми відкриваємо студентам світ мережевих технологій. Тішить, що навчальні заклади готові до експериментів та партнерства, і розуміють, що часу гаяти не можна. Ви ж пам’ятаєте про нові версії SONiC кожних півроку? :)
Наша компанія регулярно запрошує до співпраці C, C++ інженерів, а також QA Automation інженерів, яким наші ментори допомагають прокачатися у Linux, мережах та Python у перші три тижні перед стартом на SONiC-проєктах.Тоді вони разом з нами приступають до розробки інноваційних мережевих продуктів і, таким чином, долучаються до якісних змін у глобальному масштабі. Долучайтеся і ви — ловіть хвилю інновацій.
27 коментарів
Додати коментар Підписатись на коментаріВідписатись від коментарів