(перенесен в СФ из NEng по просьбе модератора)
Мы разрабатываем программное обеспечение для управления коммутаторами поверх Debian 10, ядро Linux 4.19. Мы используем мосты Linux (загруженные на проприетарное оборудование через switchdev) для коммутации уровня 2. Есть несколько вещей, которые меня смущают:
Я нашел ответ на свой вопрос после долгого чтения и некоторых экспериментов. Подводя итог, на тот случай, если кто-то столкнется с подобными проблемами, потому что может быть трудно найти ответ, не зная точно, что искать.
Для контекста наша предыдущая реализация коммутации уровня 2 и VLAN идентична Cumulus Linux. Традиционный режим моста Linux. Для каждой VLAN создается мост. Магистральный порт реализуется путем добавления подинтерфейсов с тегами VLAN, и каждый из этих подынтерфейсов добавляется к соответствующей VLAN в списке доступа к магистрали. Некоторые примеры конфигурации см. На странице руководства пользователя Cumulus.
Чтобы ответить на вопрос 2: нет, включение экземпляров Linux STP для каждой VLAN не делает этот PVST + совместимым с PVST +. PVST + включает в себя нечто большее, чем просто рассылку пакетов BPDU с тегами VLAN: MAC-адрес назначения отличается, присутствует заголовок SNAP, а в полезные данные добавляется поле для передачи информации VLAN. Коммутатор Cisco на другой стороне не будет принимать пакеты BPDU 802.1d с тегами VLAN, и никакая VLAN, кроме собственной VLAN магистрального порта (через которую PVST + отправляет BPDU 802.1d, соответствующие топологии VLAN 1 для обратной совместимости), не будет получать любой BPDU. Это вообще не сработает.
Наша текущая реализация использует мост с поддержкой VLAN, доступный в основной версии Linux с 3.9. Один экземпляр STP работает для всех VLAN. Это совместимо с MSTP: концептуально это как если бы мы запускали MSTP со всеми VLAN, сопоставленными с одним экземпляром MST. Итак, чтобы ответить на вопрос 1, Linux не поддерживает MSTP, но мост с поддержкой STP + VLAN совместим с MSTP.
РЕДАКТИРОВАТЬ: Вы можете задаться вопросом, как Cumulus выполняет PVST +. Ответ заключается в том, что они запускают исправленное ядро со своей собственной реализацией PVST +. Также следует избегать большой ловушки: MSTPD не выполняет PVST +, несмотря на их заявления. Мы планируем расширить его для поддержки PVST +.