В одном из предыдущих материалов мы уже рассказывали про самый маленький open source коммутатор, который собрала команда американских школьников, участвовавших в соревнованиях по робототехнике. Сегодня мы решили продолжить тему и рассказать о других подобных проектах. Оказывается, многие инженеры собирают компактные свитчи в качестве хобби, желая разобраться в их устройстве.
Открытые разработки
Существуют различные примеры open source коммутаторов — в частности, SatCat5. Он разработан для маломощных аппаратов, например, устройств интернета вещей или малых спутников. SatCat5 поддерживает различные протоколы связи, включая Ethernet, I2C, SPI и UART, что позволяет интегрировать в единую сеть устройства с различными интерфейсами, что особенно важно в условиях ограниченных ресурсов. Энергопотребление SatCat5 составляет всего 0,2–0,7 Вт. Коммутатор поддерживает PTP (Precision Time Protocol), который важен для многих научных и промышленных приложений. Для описания аппаратной части коммутатора используется язык VHDL.
SatCat5 использовали во время миссии Slingshot-1, в рамках которой был запущен малый спутник (кубсат) для обкатки модульных и автономных технологий на орбите. Статьи по теме и другие документы (например, IDC) можно найти в репозитории на GitHub. Еще где-то полгода назад SatCat5 привлек внимание резидентов Hacker News. Тред запустили разработчики проекта, где ответили на вопросы комьюнити, обсудили перспективы этого SatCat5 и другие открытые проекты в сфере gateware — например, OpenCores.
Еще один пример open source проекта — Open vSwitch (OVS), который распространяется под лицензией Apache 2.0. Этот многофункциональный виртуальный коммутатор спроектирован для управления сетевой инфраструктурой в виртуализированных средах. Коммутатор поддерживает работу с магистральными портами, способными передавать трафик нескольких VLAN, а также с портами доступа, ограниченными одной VLAN.
Высокая производительность достигается за счет оптимизации под сетевые интерфейсы с аппаратным ускорением (DPDK). Гибкость OVS позволяет интегрировать его с различными технологиями виртуализации на базе Linux (например, с KVM или Xen). Центральный компонент Open vSwitch — демон ovs-vswitchd. OVS позволяет строить программно-определяемые сети (SDN), так как поддерживает протокол OpenFlow для централизованного управления трафиком и маршрутизацией. Это — одна из причин, по которой OVS находит применение в дата-центрах и SDN-решениях.
Кастомный Linux-свитч
Разработчик Мартин Браам из Нидерландов решил собрать собственный свитч, чтобы изучить устройство коммутаторов. Для этого он выбрал достаточно известный Realtek RTL8367S. Настройка прошла не без сложностей. В документации были описаны несколько способов, но не было информации о том, как заставить девайс работать в роли «глупого» коммутатора. По итогу инженер использовал метод перебора и просто перепаивал контакты в различных комбинациях. Следующим этапом стала работа с Ethernet. Инженер отрисовал тестовую схему, но позже в неё пришлось внести изменения. Он забыл включить в неё конденсатор между трансформатором и землей.
Что касается работы с Linux, то Браам выбрал плату PINE64 A64-LTS, потому что она имела удачное расположение портов и поддерживала деревья устройств. Однако в стандартной конфигурации необходимые ему модули были деактивированы, а также были сложности в процессе загрузки. Один из вариантов, который рассматривал Мартин Браам, подразумевал создание оверлея для дерева устройств с последующей загрузкой через U-Boot. Однако он все же решил пропатчить дерево устройств под A64-LTS. Внесенные изменения можно посмотреть в блоге автора [ближе к концу страницы].
Коммутатор Мартина привлек внимание резидентов Hacker News, которые с интересом встретили проект и предложили несколько улучшений. Например, один инженер озвучил в треде мнение, что можно было использовать маршрутизатор с поддержкой OpenWRT, который предлагает удобный интерфейс для настройки VLAN. Другой пользователь также отметил, что сегодня OpenWRT в принципе можно установить на коммутаторы вроде Zyxel GS1900, хотя и с ограничениями по поддержке PoE и 10Gb/SFP+.
От «глупого» к управляемому коммутатору
Похожий проект реализовал инженер Йерун Домбург. Он решил модернизировать домашнюю сеть: заменить кабели, а также проапгрейдить коммутатор TP-Link TL-SG1005D, превратив его в управляемый. В устройстве был установлен Realtek RTL8366SB, способный поддерживать VLAN и зеркалирование портов (port mirroring). Домбург доработал прошивку, чтобы настроить коммутатор через интерфейс I2C (Inter-Integrated Circuit) с помощью микроконтроллера AVR. После чего инженер добавил к RTL8366SB 8-битный микроконтроллер ATMega88 по технике dead-bug монтажа.
RTL8366SB использует нестандартную реализацию протокола I2C, поэтому инженеру потребовалось разработать специализированный драйвер. Он должен был учитывать особенности чипа: дополнительные тактовые циклы и нестандартные последовательности чтения/записи. В процессе разработки интерфейса для настройки VLAN Йерун Домбург столкнулся ещё с одной проблемой. Когда он впервые считал все регистры устройства, ни одно из полученных значений не совпадало с описанием в документации. Оказалось, что она была написана для чипа RTL8366, но инженеру повезло найти код, реализующий Linux-драйвер для чипа с аналогичным набором регистров. Исходный код проекта доступен под лицензией GPLv3 (ссылка для скачивания архива на сайте разработчика).
Что еще почитать в нашем блоге на Хабре и не только:
Миниатюрный коммутатор с открытым исходным кодом. Группа школьников из Нью-Гэмпшира сконструировала компактное сетевое устройство под названием mrxSwitch. Обсудим, каким образом проект, изначально задуманный для состязаний по подводной робототехнике, эволюционировал в общедоступный продукт. Также посмотрим на мнения и схожие разработки вроде SwitchBlox и PE-505.
Больше, чем Quagga — пакет для маршрутизации FRRouting. Обсудили возможности пакета, мнения, отличия от предшественника Quagga и альтернативы — BIRD и ExaBGP. Показываем, что у FRRouting под капотом — в частности, архитектуру с набором демонов под каждый протокол.
Построить топологию и проверить отказоустойчивость — подборка open source решений для эмуляции сетей. Рассмотрели несколько сетевых эмуляторов и симуляторов — Containerlab, Mininet, Kathará, IMUNES и другие. Обсудили их возможности и области применения.
В копилку уязвимостей BGP — как устроена атака Kirin. Наш обзорный материал, в котором мы рассказываем про новую атаку на BGP протокол, направленную на перегрузку маршрутизаторов. Она использует тысячи подключений, что позволяет злоумышленникам обойти традиционные механизмы защиты. В качестве противодействия инженеры APNIC рекомендуют администраторам следить за размерами таблиц маршрутизации и настраивать ограничения по числу префиксов.
Когда мобильная сеть недоступна: зачем запускают звонки через интернет. Рассматриваем пять основных подходов к настройке звонков по Wi-Fi (от UMA до OTT), а также предлагаем обсудить перспективы технологии. Еще говорим о том, почему она привлекает операторов связи и частный бизнес. Спойлер: она позволяет расширить зону покрытия собственной и привлекать клиентов в местах с проблемным доступом (например, в поездах).
Выявление уязвимостей в сети оператора. Тематический вебинар, посвященный ключевым угрозам, с которыми сталкиваются операторы связи, и методам их эффективного решения. В одном из докладов Артём Терещенко, эксперт из VAS Experts, рассказал о том, как QoE-метрики помогают обнаруживать сетевые аномалии и отслеживать качество работы сети в реальном времени