Как стать автором
Обновить

Опыт эксплуатации Mellanox под управлением Switchdev

Время на прочтение 13 мин
Количество просмотров 4.4K
Блог компании Qrator Labs Блог компании Конференции Олега Бунина (Онтико) Сетевые технологии *Сетевое оборудование
Всего голосов 23: ↑23 и ↓0 +23
Комментарии 23

Комментарии 23

Читая - испытывал наслаждение и удовольствие. Пишите пожалуйста больше!

Большое спасибо, мы постараемся.

Есть только одна проблема — этот скрипт инициализируется при рестарте системы, а рестартовать систему при каждом изменении мы не можем. Соответственно, нам нужно это дело как-то синхронизировать — что, мягко говоря, очень неудобно и превращает изменения рантайма в боль. Одно неверное движение — и вся наша фабрика может развалиться.

Чтобы жизнь не была настолько болезненной, наш коллега написал два perl-скрипта. Первая утилита — mlxrtr —  конфигурит маршрутизацию и интерфейсы. Пример конфигурационного файла для mlxrtr:

Немогу не отметить, что наверное каждый дистрибутив уже имеет какое-то решение этой проблемы. Многие используют systemd-networkd. Использование самописных перловых скриптов, отдаёт суровым велосипедизмом. Причём, с долгой историей. Уж простите за прямоту.

Да, отчасти согласен.

Когда мы поднимали ip/mpls в облаке для L3VPN, вторая головная боль после отладки и настройки этого дела -- была настройка сервисов после ребута "коробки" (создание VRFa и "помещения" интерфейсов внутрь него).

Сначала тоже юзали самописные скрипты, но потом начали копать в сторону штатных средств systemd-networkd или NetworkManager. Остановились на 2м :)

nm умеет в mpls? У меня он как-то всегда ассоциировался с простыми пользовательскими сценариями: wifi, провод, dsl, lte без всяких туннелей и прочего разврата. Сам всегда использую systemd. Правда, мне кажется, что они до сих пор довольно активно добавляют новые возможности в networkd

Скорее в vrf :) С systemd вместе с dummy интерфейсами что-то не заладилось, уже точно не вспомню что

Да, есть, но у многих таких решений есть фатальные или неприятные недостатки. Например просто неумение настраивать некоторые вещи, также нужно уметь перестраивать конфигурацию "на ходу" и желательно не по принципу всё сожжём дотла и сделаем заново. Если кто-то юзает что-то такое в проде на свичах, то было бы реально интересно посмотреть на это. Cumulus, например, пилят ifupdown2 - оно более-менее ничего, но тоже есть свои минусы. Кто-нибудь тут ещё чем-нибудь другим успешно пользуется?

Вот тут доклад есть, я там рассматривал несколько вариантов:

https://netdevconf.info/0x15/session.html?Switchdev-Offload-Workshop

Но, конечно, не всё сильно копал. systemd и NM показалось, что не очень подходят, когда смотрел.

Всё что описал автор вполне влазит в systemd. Но, вообще, разные дистрибутивы применяют разные системы. Есть netd из openwrt, если про оборудование речь.

Split никто не мог. А как у systemd с переконфигурацией, как он это делает? Ещё у драйвера меланокса есть пара своих приколов, т.е. нельзя напрямую некоторые действия сделать и это тоже нужно "заложить" в систему конфигурации, иначе они об этом могут "споткнуться".

Ну и помимо адресов ещё и tc filter нужен, а этого тоже не найти.

Так-то да, у нас велосипед, но это не всегда плохо. Тут его поддерживать не сильно сложнее, чем допиливать или подстраиваться под ограничения других систем.

Split никто не мог

А это что?

А как у systemd с переконфигурацией, как он это делает?

Раньше вроде только через рестарт было (я так до сих пор и делаю, по привычке). А теперь улучшились:

@1650469297:~/$ networkctl --help
networkctl [OPTIONS...] COMMAND

Query and control the networking subsystem.

Commands:
...
  renew DEVICES...       Renew dynamic configurations
  reconfigure DEVICES... Reconfigure interfaces
  reload                 Reload .network and .netdev files
...
See the networkctl(1) man page for details.

Ну и помимо адресов ещё и tc filter нужен, а этого тоже не найти.

Тут и не поспорить

Так-то да, у нас велосипед, но это не всегда плохо

Я с вами в принципе солидарен, но конкретно в этом случае нет. По двум причинам: во-первых перл, во-вторых уникальный формат конфига (во всяком случае, я такого раньше не видел)

split - это разделение одного порта на несколько, тут в другом комментарии кто-то спрашивал.

Мы берем некий port 1 и разбиваем его на 4 субпорта — чтобы, например, из 100 Гб интерфейса получить 4 интерфейса по 25 Гб.

А какая физическая аналогия этому действу? Я что-то не представляю как из одного интерфейса сделать 4. Или подразумевается просто прикручивание сабинтерфесов к одному физическому порту?

Спасибо.

Технически 40Gbps и 100Gbps интерфейсы в форм-факторе QSFP или QSFP28 представляют из себя 4 линии по 10 или 25 гигабит каждая (в сумме 40 и 100 Gbps, соответственно). С помощью специальных кабельных сборок или комбинации кабелей и трансиверов можно сделать 4 интерфейса.

Например, 40GBASE-SR4 в сочетании с MPO breakout кабелем может выдать 4 интерфейса 10GBASE-SR.

Если интересно прочитать про это все подробнее, то есть замечательная книга "Ethernet: The Definitive Guide", там достаточно хорошо все описано.

Для коммутаторов Mellanox на чипе Spectrum (собственный чип, разработанный Mellanox) на выбор есть различные ОС. Это может быть MLNX-OS (он же Mellanox Onyx), а также Cumulus — сетевая ОС на базе Linux, которую тоже купила компания NVIDIA. Другие варианты софта — SAI (Switch Abstraction Interface), на базе которого работает ОС SONiC (NOS) от Microsoft и, наконец — switchdev (Linux kernel).

в любые ли свитчи mellanox можно прошить switchdev?
на ebay есть предложения «These all have ONIE software on them», например, подойдёт?


Mellanox лучше использовать VRF, просто потому что они offload’ятся в чип. Для этого создаем специальное правило и сам VRF, где указываем его имя, что это тип VRF, и номер таблицы.

где посмотреть сколько таблиц vrf может оффлоадиться?


Linux может не поддерживать, например, MCLAG

хм, а как делать резервирование свитчей?

>в любые ли свитчи mellanox можно прошить switchdev?
>на ebay есть предложения «These all have ONIE software on them», например, подойдёт?

Нет, не в любые, только в системы на чипах Spectrum. ONIE это инсталлятор OS по сути.

>где посмотреть сколько таблиц vrf может оффлоадиться?

Судя по докам, до 255.

>хм, а как делать резервирование свитчей?

Как уже написано в статье, switchdev подойдет не каждому. Мы, например, резервируемся площадками целиком, но этот случай подходит конкретно для нас.

Нет, не в любые, только в системы на чипах Spectrum

мне казалось, что у mellanox других и нет )

Не было ли у вас странных желаний попробовать завести openvswitch вместо switchdev ?

Нет, не было :).

А не смотрели на klish? Возможно даже что-то готовое есть для их связки с switchdev.


Не знаю как сейчас, а раньше многие "импортозаместительные" коммутаторы шли с CLI на clish/klish (элтекс, натекс навскидку).

Не, нет видел такое. Сейчас глянул - это какой-то общий фреймворк только, а где к нему что-то полезное искать? Со свичдевом не находится.

Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.