В одном из предыдущих материалов мы уже рассказывали про самый маленький open source коммутатор, который собрала команда американских школьников, участвовавших в соревнованиях по робототехнике. Сегодня мы решили продолжить тему и рассказать о других подобных проектах. Многие инженеры собирают компактные свитчи в качестве хобби, желая разобраться в их устройстве, поэтому DIY-коммутаторов становится больше.

Фотография: Thomas Jensen / Unsplash.com
Фотография: Thomas Jensen / Unsplash.com

Кастомный Linux-свитч

Разработчик Мартин Браам из Нидерландов решил изучить устройство коммутаторов. По его мнению, лучшим способом сделать это, было собрать собственный свитч. Для своего проекта инженер выбрал достаточно известный Realtek RTL8367S с пятью разъёмами RJ-45 и двумя разъёмами для подключения к CPU. Настройка прошла не без сложностей. В документации были описаны несколько способов, но не было информации о том, как заставить устройство работать в роли «глупого» коммутатора. По итогу инженер использовал метод перебора и просто перепаивал контакты в различных комбинациях.

Следующим этапом стала работа с Ethernet. Инженер отрисовал тестовую схему, но позже в неё пришлось внести изменения. Он забыл включить в неё конденсатор между трансформатором и землей. Чтобы исправить проблему, инженер решил просто обрезать заземляющие контакты трансформатора и убрать замыкание.

В вопросе подключения к Linux, Браам выбрал плату PINE64 A64-LTS, потому что она имела удачное расположение портов и поддерживала деревья устройств. Он пересобрал ядро для платы, так как в стандартной конфигурации необходимые ему модули были деактивированы (в частности, CONFIG_NET_SWITCHDEV, CONFIG_NET_DSA_TAG_RTL8_4, CONFIG_NET_DSA_REALTEK и другие), а также модифицировал дерево устройств.

Коммутатор Браама привлек внимание резидентов Hacker News. Участники сообщества с интересом встретили проект и предложили несколько улучшений. Например, один инженер озвучил мнение, что можно было использовать маршрутизатор с поддержкой OpenWRT, который предлагает интерфейс для настройки VLAN и других опций.

От «глупого» к управляемому коммутатору

Похожий проект реализовал инженер Йерун Домбург. Он решил модернизировать домашнюю сеть: заменить кабели и проапгрейдить коммутатор 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 (ссылка для скачивания архива на сайте разработчика).

Другие открытые разработки

Существуют и другие примеры open source коммутаторов — в частности, SatCat5. Он разработан для маломощных аппаратов, например, устройств интернета вещей. SatCat5 поддерживает различные протоколы связи, включая стандартный Ethernet, I2C, SPI и UART. Такое разнообразие позволяет интегрировать в единую сеть устройства с различными интерфейсами, что особенно важно в условиях ограниченных ресурсов. Энергопотребление SatCat5 составляет всего 0,2–0,7 Вт. Коммутатор поддерживает PTP (Precision Time Protocol), который важен для многих научных и промышленных приложений. Для описания аппаратной части используется язык VHDL, поэтому SatCat5 можно адаптировать под разные FPGA-платформы.

Фотография: Patrick Turner / Unsplash.com
Фотография: Patrick Turner / Unsplash.com

Пример другого open source проекта — Open vSwitch (OVS), который распространяется под лицензией Apache 2.0. Этот многофункциональный виртуальный коммутатор спроектирован для управления сетевой инфраструктурой в виртуализированных средах. Коммутатор поддерживает работу с магистральными портами, способными передавать трафик нескольких VLAN, а также с портами доступа, ограниченными одной VLAN.

Высокая производительность достигается за счет оптимизации под сетевые интерфейсы с аппаратным ускорением (DPDK). Гибкость OVS позволяет интегрировать его с различными технологиями виртуализации на базе Linux. Например, с KVM — встроенной в ядро Linux системой виртуализации, и Xen-гипервизором, обеспечивающим параллельную работу нескольких операционных систем на одном устройстве. Центральный компонент Open vSwitch — демон ovs-vswitchd, реализующий основную функциональность. За управление конфигурацией отвечает легковесный сервер базы данных ovsdb-server. OVS позволяет строить программно-определяемые сети (SDN), так как поддерживает протокол OpenFlow для централизованного управления трафиком и маршрутизацией. Это — одна из причин, по которой OVS находит применение в дата-центрах. Часто OVS интегрируется с инструментами для построения облачной инфраструктуры, такими как OpenStack и Kuberenetes. Также свитч часто применяют в SDN-решениях.

Что еще почитать в нашем блоге на Хабре и не только:

  • Миниатюрный коммутатор с открытым исходным кодом. Группа школьников из Нью-Гэмпшира сконструировала компактное сетевое устройство под названием 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-метрики помогают обнаруживать сетевые аномалии и отслеживать качество работы сети в реальном времени. 

Комментарии (2)


  1. Javian
    28.09.2024 19:17
    +1

    Берем ПК на х86 (Напримир Athlon XP) с матплатой на 4-5 PCI. Ставим 4 сетевые карты и в USB подключаем WiFi адаптер. Ставим последний Openwrt x86. И пытаемся на этом взлететь - изучаем bridge/vlan/драйвера на wifi. Скучно не будет*.

    [*]- рекомендуется этим заниматься в отсутствие жены.


  1. achekalin
    28.09.2024 19:17

    На редкость забавный перевод: слов много, а иллюстраций нет, вместо них ссылки. А те две картинки, что есть - из клипартов!

    Можно картинки добавить в статью? Понимаю, что и по ссылке перейти не переломлюсь, но зачем тогда пост, киньте ссылку на оригинал, и всё!?