SONiC (Software for Open Networking in the Cloud) — это сетевая операционная система с открытым исходным кодом, которая существенно отличается от других сетевых операционных систем, с которыми вы сталкивались ранее. Изучение SONiC требует новой психологической подготовки и определённых навыков. Поскольку это новая операционная система, которая коренным образом меняет архитектуру сетей, всем, кто изучает SONiC, необходимо понимать и освоить следующие ключевые моменты и навыки.
Содержание
ПереключатьОсновы Linux должны быть освоены
Linux — основа сетевой операционной системы SONiC. В отличие от традиционных сетевых операционных систем (таких как iOS или Junos), которые полностью скрывают базовую реализацию, SONiC предоставляет доступ ко всей системе Linux.

От управления службами systemd до развертывания контейнеризированных приложений — каждый уровень требует прямого вмешательства, поэтому вам необходимо:
- Глубоко понимать структуру файловой системы Linux и быстро находить ключевые файлы конфигурации (например, каталог /etc/sonic/)
- Умело использовать инструменты анализа журналов (journalctl, grep) для устранения неполадок в различных журналах служб в /var/log/.
- Главное управление службами systemd (systemctl start/stop/restart/enable)
- Иметь навыки работы с контейнерами Docker (docker ps/exec/logs/inspect)
- Понимание сетевых пространств имен Linux и виртуальных сетевых устройств
Перед развертыванием SONiC рекомендуется улучшить свои навыки работы с Linux следующими способами:
- Пройдите базовый курс системного администратора Linux
- Практика устранения распространенных неполадок в экспериментальной среде
- Ознакомьтесь с основами технологии контейнеризации
- Освойте базовые навыки написания скриптов Bash
Понимание контейнеризации и развертывания
В SONiC используется архитектура микросервисов, в которой каждый компонент сетевой функции (например, BGP, LLDP и т. д.) выполняется в независимом Docker-контейнере. Это резко контрастирует с монолитной архитектурой традиционных сетевых операционных систем.

Эта архитектура имеет три ключевые характеристики:
- Изоляция компонентов: каждая служба имеет собственную независимую систему журналов, сетевое пространство имен и распределение ресурсов, при этом сбои строго контролируются в рамках одного контейнера.
- Динамическая масштабируемость: службы можно запускать и останавливать по требованию, поддерживая оперативные обновления и выпуски в оттенках серого.
- Детальное управление: выполнение операций и обслуживания на уровне компонентов с помощью таких команд, как docker exec/restart/logs.
Изучение SONiC требует изменения следующих установок:
- От «глобальной конфигурации» к «конфигурации компонентов»
- От «единого журнала» к «распределенной трассировке журналов»
- От «полного перезапуска» до «горячего обновления сервиса»
Освоение основного компонента Redis
SONiC использует Redis в качестве основной шины данных, обеспечивая разделение конфигурации и состояния посредством нескольких логических баз данных. Для освоения SONiC вам необходимо освоить:

Освоение анализа архитектуры нескольких баз данных
- CONFIG_DB: Постоянная конфигурация (эквивалент текущей конфигурации в традиционной NOS)
- STATE_DB: сбор данных о состоянии в реальном времени (аналогично SNMP, но более структурировано)
- APPL_DB: Шина межпроцессного взаимодействия (инновационный механизм IPC)
Освоение ключевых навыков эксплуатации и обслуживания Redis
- Используйте redis-cli для быстрого поиска элементов конфигурации
- Понимание взаимосвязи между моделями YANG и схемой Redis
- Master swss (служба переключения состояний)
Поэтому рекомендуется для новых обучающихся:
- Начните с документации схемы БД, а не работайте напрямую с CLI
- Используйте инструмент инкапсуляции sonic-db-cli для снижения эксплуатационных рисков
- Внедрить процесс предварительной проверки изменений в базе данных
Освоение основ использования Git
При возникновении проблем в производственной среде репозиторий GitHub часто предоставляет ответы быстрее, чем служба поддержки поставщика.
Основные навыки выживания, которые необходимо освоить:

Использование Git
- git cause для отслеживания определенной строки конфигурации
- Используйте git bisect для быстрого поиска коммита, в котором возникла ошибка.
- Умело переключайтесь между ветвями сообщества и ветвями, настроенными поставщиком, для пошаговых инструкций на уровне исходного кода.
Ключевые модули
- swss (конвейер обработки конфигурации)
- syncd (уровень абстракции ASIC)
- орчагент (основная бизнес-логика)
DevOps и мышление автоматизации

Изучите использование Terraform с декларативным синтаксисом для управления устройствами SONiC:
- Определить ресурсы коммутатора
- Управление блоками конфигурации для VLAN, BGP, ACL и т. д.
- Государственные файлы
Изучите Ansible: пакетное развертывание и настройка
- Используйте модуль sonic_config для отправки config_db.json
- Динамически генерировать конфигурации (шаблоны Jinja2 + файлы переменных)
Главное управление конфигурацией (config_db.json), основной метод конфигурирования SONiC, а не традиционный терминал конфигурирования.
Навыки программирования
Возможности программирования SONiC напрямую определяют вашу эксплуатацию и техническое обслуживание.
Питон
- Разбор config_db.json (json.loads()/json.dumps())
- Написать пользовательский Orchagent (обрабатывать события Redis DB)
- Автоматизированное тестирование (фреймворк pytest-sonic)
Bash-скриптинг (инструменты для быстрого выполнения операций и обслуживания)
- Пакетная обработка контейнеров Docker
Go (разработка облачных компонентов)
- Участвовать в развитии сообщества SONiC (например, добавлять новые интерфейсы SAI)
- Написание плагинов K8s CNI (интеграция Calico/SRIOV)
- Высокопроизводительный агент сетевого мониторинга (заменяющий некоторые скрипты Python)
YAML/JSON (конфигурация как код)
- Ansible Playbook для определения конфигураций устройств
- Файлы переменных Terraform для управления различиями в окружающей среде
- K8s CRD для управления кластерами SONiC
C++ (необходим для низкоуровневой разработки)
- Изменить SAI (интерфейс переключения абстракции)
- Отладка базовой логики процесса syncd
- Оптимизация производительности драйвера ASIC
Сопутствующие товары:
-
Коммутатор NVIDIA MQM9700-NS2R Quantum-2 NDR InfiniBand, 64 порта NDR 400 Гбит/с, 32 порта OSFP, управляемый, воздушный поток P2C (обратный)
$34000.00
-
Коммутатор NVIDIA MQM9700-NS2F Quantum-2 NDR InfiniBand, 64 порта 400 Гбит/с, 32 порта OSFP, управляемый, P2C Airflow (вперед)
$30000.00
-
DPU NVIDIA B3220 BlueField-3, P-Series FHHL, 200GbE (режим по умолчанию)/NDR200 lB, двухпортовый QSFP112, PCle Gen5.0x16 с возможностью расширения x 16 PCle, 16 ядер Arm, 32 ГБ встроенной памяти DDR, интегрированный BMC, отключенная криптография, высокая скоба
$4490.00
-
NVIDIA B3140H BlueField-3 8 Arm-ядер SuperNIC, E-серия HHHL, 400GbE (режим по умолчанию)/NDR IB, однопортовый QSFP112, PCle Gen5.0 x16, 16 ГБ встроенной памяти DDR, интегрированный BMC, криптография отключена
$4390.00
-
Адаптер NVIDIA NVIDIA (Mellanox) MCX75510AAS-NEAT ConnectX-7 InfiniBand/VPI, NDR/400G, однопортовый OSFP, PCIe 5.0x16, высокая скоба
$1650.00
-
Совместимый с NVIDIA MMA4Z00-NS400 400G OSFP SR4 Flat Top PAM4 850 нм 30 м на OM3/50 м на OM4 MTP/MPO-12 Многомодовый модуль оптического трансивера FEC
$550.00
-
Совместимый с NVIDIA MMS4X00-NS400 400G OSFP DR4 Flat Top PAM4 1310nm MTP/MPO-12 500m SMF FEC Модуль оптического трансивера
$700.00
-
Модуль оптического приемопередатчика NVIDIA MMA1Z00-NS400, совместимый с 400G QSFP112 VR4 PAM4 850 нм 50 м MTP/MPO-12 OM4 FEC
$550.00
-
NVIDIA MMA4Z00-NS Совместимый двухпортовый OSFP 800 Гбит/с 2x400G SR8 PAM4 850 нм 100 м DOM Двойной модуль оптического трансивера MPO-12 MMF
$650.00
-
NVIDIA MMA4Z00-NS-FLT Совместимый двухпортовый OSFP 800 Гбит/с 2x400G SR8 PAM4 850 нм 100 м DOM Двойной модуль оптического трансивера MPO-12 MMF
$650.00
-
NVIDIA MMS4X00-NM Совместимый двухпортовый OSFP 800 Гбит/с 2x400G PAM4 1310nm 500m DOM Dual MTP/MPO-12 SMF Модуль оптического трансивера
$900.00
-
Совместимый с NVIDIA MMS4X00-NM-FLT 800G Twin-port OSFP 2x400G Flat Top PAM4 1310nm 500m DOM Dual MTP/MPO-12 SMF Модуль оптического трансивера
$1199.00
