Linux

Linux 核心中實現了哪些 STP 變體?

  • July 28, 2021

應版主要求從 NEng 移至 SF

我們正在 Debian 10、Linux 核心 4.19 之上開發一些交換機管理軟體。我們正在使用 Linux 網橋(通過 switchdev 解除安裝到專有硬體)來進行第 2 層交換。有幾件事讓我感到困惑:

  1. 使用支持 VLAN 的網橋,如果打開核心 STP 會發生什麼?如果我沒記錯的話,STP 是在 802.1q 中繼之前發明的。一切都“正常工作”並與專有協議或多生成樹協議互操作嗎?
  2. 使用不支持 VLAN 的網橋,可以為每個 VLAN 創建一個網橋,並且可以選擇為每個 VLAN 單獨打開 STP。中繼是通過將帶有 vlan 標記的介面添加到相應的網橋來完成的。這是否與 Cisco 的 PVST+ 類似或可互操作?

經過大量閱讀和一些實驗,找到了我的問題的答案。在這裡總結一下,以防有人遇到類似的問題,因為如果不確切知道要搜尋什麼就很難找到答案。

就上下文而言,我們之前的第 2 層交換和 VLAN 實現與 Cumulus Linux 的傳統 Linux 橋接模式相同。為每個 VLAN 創建一個網橋。中繼埠是通過添加帶有 VLAN 標記的子介面來實現的,每個子介面都添加到中繼訪問列表中的相應 VLAN 中。有關一些配置範例,請參閱 Cumulus 使用者指南頁面。

回答問題 2:不,為每個 VLAN 啟用 Linux STP 實例不會使此 PVST+ 或與 PVST+ 兼容。PVST+ 涉及的不僅僅是發送帶有 VLAN 標記的 BPDU 數據包:目的 MAC 地址不同,存在 SNAP 標頭,並且在負載中添加了一個欄位來攜帶 VLAN 資訊。另一端的 Cisco 交換機將不接受帶有 VLAN 標記的 802.1d BPDU 數據包,除中繼埠的本機 VLAN(PVST+ 通過其發送與 VLAN 1 拓撲相對應的 802.1d BPDU 以實現向後兼容性)之外的任何 VLAN 都不會接收任何 BPDU。它根本行不通。

我們目前的實現使用 VLAN 感知網橋,自 3.9 起在主線 Linux 中可用。為所有 VLAN 執行一個 STP 實例。這可以與 MSTP 互操作:從概念上講,就好像我們正在執行 MSTP,所有 VLAN 都映射到單個 MST 實例。所以,回答問題 1,Linux 不做 MSTP,但 STP + VLAN-aware bridge 可以與 MSTP 互操作。

編輯:您可能想知道 Cumulus 如何執行 PVST+。答案是他們執行一個帶有自己的 PVST+ 實現的更新檔核心。此外,要避免的一個大陷阱:MSTPD不做 PVST+,儘管他們聲稱。我們正在考慮擴展它以支持 PVST+。

引用自:https://serverfault.com/questions/1013452