Комментарии 23
Читая - испытывал наслаждение и удовольствие. Пишите пожалуйста больше!
Есть только одна проблема — этот скрипт инициализируется при рестарте системы, а рестартовать систему при каждом изменении мы не можем. Соответственно, нам нужно это дело как-то синхронизировать — что, мягко говоря, очень неудобно и превращает изменения рантайма в боль. Одно неверное движение — и вся наша фабрика может развалиться.
Чтобы жизнь не была настолько болезненной, наш коллега написал два perl-скрипта. Первая утилита — mlxrtr — конфигурит маршрутизацию и интерфейсы. Пример конфигурационного файла для mlxrtr:
Немогу не отметить, что наверное каждый дистрибутив уже имеет какое-то решение этой проблемы. Многие используют systemd-networkd. Использование самописных перловых скриптов, отдаёт суровым велосипедизмом. Причём, с долгой историей. Уж простите за прямоту.
Да, отчасти согласен.
Когда мы поднимали ip/mpls в облаке для L3VPN, вторая головная боль после отладки и настройки этого дела -- была настройка сервисов после ребута "коробки" (создание VRFa и "помещения" интерфейсов внутрь него).
Сначала тоже юзали самописные скрипты, но потом начали копать в сторону штатных средств systemd-networkd или NetworkManager. Остановились на 2м :)
nm умеет в mpls? У меня он как-то всегда ассоциировался с простыми пользовательскими сценариями: wifi, провод, dsl, lte без всяких туннелей и прочего разврата. Сам всегда использую systemd. Правда, мне кажется, что они до сих пор довольно активно добавляют новые возможности в networkd
Да, есть, но у многих таких решений есть фатальные или неприятные недостатки. Например просто неумение настраивать некоторые вещи, также нужно уметь перестраивать конфигурацию "на ходу" и желательно не по принципу всё сожжём дотла и сделаем заново. Если кто-то юзает что-то такое в проде на свичах, то было бы реально интересно посмотреть на это. 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 нужен, а этого тоже не найти.
Тут и не поспорить
Так-то да, у нас велосипед, но это не всегда плохо
Я с вами в принципе солидарен, но конкретно в этом случае нет. По двум причинам: во-первых перл, во-вторых уникальный формат конфига (во всяком случае, я такого раньше не видел)
Мы берем некий 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 подойдет не каждому. Мы, например, резервируемся площадками целиком, но этот случай подходит конкретно для нас.
Не было ли у вас странных желаний попробовать завести openvswitch вместо switchdev ?
А не смотрели на klish? Возможно даже что-то готовое есть для их связки с switchdev.
Не знаю как сейчас, а раньше многие "импортозаместительные" коммутаторы шли с CLI на clish/klish (элтекс, натекс навскидку).
Опыт эксплуатации Mellanox под управлением Switchdev