Назад | Перейти на главную страницу

Какой вариант STP реализован в ядре Linux?

(перенесен в СФ из NEng по просьбе модератора)

Мы разрабатываем программное обеспечение для управления коммутаторами поверх Debian 10, ядро ​​Linux 4.19. Мы используем мосты Linux (загруженные на проприетарное оборудование через switchdev) для коммутации уровня 2. Есть несколько вещей, которые меня смущают:

  1. Что произойдет с мостами с поддержкой VLAN, если включить STP ядра? Если я правильно помню, STP был изобретен до транкинга 802.1q. Все ли «просто работает» и взаимодействует с проприетарными протоколами или протоколом множественного связующего дерева?
  2. При использовании мостов, не поддерживающих VLAN, создается мост для каждой VLAN и есть возможность включить STP для каждого из них индивидуально. Транкинг выполняется путем добавления интерфейсов с тегами vlan к соответствующим мостам. Это похоже на Cisco PVST + или совместимо с ним?

Я нашел ответ на свой вопрос после долгого чтения и некоторых экспериментов. Подводя итог, на тот случай, если кто-то столкнется с подобными проблемами, потому что может быть трудно найти ответ, не зная точно, что искать.

Для контекста наша предыдущая реализация коммутации уровня 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 +.