О CLI
При входе в интерфейс свежеустановленного SONiC'а пользователь попадает в обычный Linux shell (bash). Отсюда можно запускать, как специальные комманды CLI SONiC'a, так и обычные для Linux команды и программы. В том числе может быть запущена интерактивная оболочка
sonic-cli
(/usr/bin/sonic-cli
), она чуть отзывчивее дополняет вводимые команды. Также sonic-cli
может быть установлена как оболочка по умолчанию для некоторых пользователей, если требуется ограничиться их доступ к операционной системе.
Все основные команды SONiC'а делятся на изменяющие конфигурацию устройства и отображающие конфигурацию и/или состояние. Первые начинаются со слова
config
, вторые - с
show
. Команды
config ...
применяются немедленно.
Команды изменяющие конфигурацию должны запускаться от имени root, то есть нужно либо сперва зайти под ним, либо выполнять команды через
sudo
.
Слова в командах могут сокращаться до первых нескольких букв, по которым можно однозначно определить следующее слово.
При запуске команд из сеанса bash, первое слово сокращать нельзя. Так как для него это название исполняемого файла. Работает автодополнение по нажатию Tab.
Для большинства команд можно вызвать подсказку по синтаксису и следующим аргументам, добавив ключ
-h
или
--help
.
Сохранение конфигурации, файл /etc/sonic/config_dg.json
Текущая конфигурация, сформированная командами
config ...
(не считая
config save
) не сохраняется автоматически и будет утеряна при перезагрузки. Хранится текущая конфигурация в базе Redis, но непосредственное взаимодействие с ним не рекоммендуется. Для сохранения текущей конфигурации для автоматического применения после перезагрузки необходимо использовать как раз таки команду
config save
. Конфигурация сохраняется в файле /etc/sonic/config_db.json. Структура данного файла в значительной мере понятна интуитивно, поэтому его вполне можно изменить текстовым редактором, после чего применить новую конфигурацию командой
config reload
.
Команда
config reload
всегда вызывает прерывание связи на несколько десятков секунд. Даже если в файле /etc/sonic/config_db.json изменений совсем не производилось.
Некоторые элементы конфигурации не могут быть изменены с помощью основных инструментов CLI SONiC'а, и требуют внесения изменений непосредственно в данный файл (или использования иных инструментов).
Связь с конфигурацией ядра Linux
Продвижение бОльшей части трафика выполняет ASIC (application-specific integrated circuit) без участия ядра Linux и другого ПО работающего на CPU. Тем не менее, по ряду причин удобно, чтобы сетевая подсистема ядра Linux имела эквивалентную в некоторых аспектах конфигурацию. Более того, некоторые элементы постоянно синхронизируются, например ПО frr, реализующее динамическую маршрутизацию вообще не взаимодействует с ASIC'ом, а записывает импортируемые маршруты именно в сетевую подсистему ядра, откуда они переносятся в ASIC.
В связи с этим стандартные утилиты Linux в некоторых аспектах могут быть использованы для отображения текущей конфигурации/состояния.
Использовать стандартные утилиты Linux для конфигурации сетевых функций коммутатора не следует. Не всё сконфигурированное с их помощью попадает в ASIC.
Конфигурация Control Plane
В состав SONiC входит известный открытый программный frr . Возможности его конфигурирования весьма широки, но почти не представлены в основном CLI SONiC'а. Поэтому, рекоммендуется настраивать его отдельно. Для этого необходимо отключить автоматическое отображение основной конфигурации SONiC (/etc/sonic/config_db.json) в конфигурацию frr, внеся следующие изменения в /etc/sonic/config_db.json:
- "Закомментировать раздел" BGP_NEIGHBOR;
- Удалить ключ bgp_asn из раздела DEVICE_METADATA;
- Добавить в тот же раздел DEVICE_METADATA ключ docker_routing_config_mode со значением split.
После изменения файла применить изменения -
config reload -y
.
Примерная ожидаемая конфигурация bgp после применения изменений:
Теперь frr может конфигурироваться независимо от основной конфигурации SONiC'а.
Попасть в CLI frr можно запустив
vtysh
. Для сохранения текущей конфигурации frr используется команда
write
(внутри vtysh). Также возмно прямое редактирование файлов в директории /etc/sonic/frr.
Полезные ссылки
- Главный репозиторий проекта(содержит документацию, исходные коды и тех. задания по которым они писались): https://github.com/Azure/SONiC
- Справка по основным командам: https://github.com/Azure/sonic-utilities/blob/master/doc/Command-Reference.md
- Документация FRRouting: http://docs.frrouting.org/en/latest/