延續上個章節,進行相關的 LAB 實作。
啟用 VLAN 感知模式:
br_default)上明確啟用此模式。nv set interface br_default bridge domain vlan-aware
在埠 (Port) 上定義 VLAN:
swp1, swp2)它屬於哪個 VLAN。PVID vs. VID (重要觀念):
PVID (Port VLAN ID):
nv set interface swp1 bridge domain br_default access 10 (代表 swp1 的 Access Port 在 VLAN 10)。VID (VLAN ID):
nv set bridge domain br_default vlan 10, 20。在橋接器上宣告 VLAN:
br_default)有哪些 VLAN 在這個橋接網域中是「有效」的。nv set interface br_default vlan 10 20 30 (告訴橋接器要處理 VLAN 10, 20, 30)。Configure a VLAN-aware Bridge
NVUE YAML:
- set:
bridge:
domain:
br_default:
vlan:
'10': {}
'20': {}
以下配置是由 NVUE 系統產生。
auto br_default
iface br_default
bridge-ports swp1 swp3 swp4
hwaddress ce:36:78:fb:56:e2
bridge-vlan-aware yes
bridge-vids 10 20
bridge-pvid 1
bridge-pvid 預設為 1,不必為網橋(Bridge)或端口指定 bridge-pvid。儘管這不會影響配置,但它有助於其他用戶的可讀性。
如果在網橋(bridge)層級指定
bridge-vids或bridge-pvid,則網橋中的所有連接埠都會繼承這些設定。但是,為特定連接埠指定任何這些設定都會覆蓋網橋中的設定。
Access Ports and Tagged Packets
下面 swp3 允許未標記流量(untagged traffic) 進入 VLAN 10。swp4 則為 30。
NVUE YAML
- set:
bridge:
domain:
br_default:
vlan:
'10': {}
'20': {}
interface:
...
swp1:
type: swp
bridge:
domain:
br_default: {} # VLAN 10、20 流量都可通過
swp2:
type: swp
swp3:
type: swp
bridge:
domain:
br_default:
access: 10
swp4:
type: swp
bridge:
domain:
br_default:
access: 30
以下配置是由 NVUE 系統產生。
$ cat /etc/network/interfaces
...
auto swp3
iface swp3
bridge-access 10
auto swp4
iface swp4
bridge-access 30
auto br_default
iface br_default
bridge-ports swp1 swp3 swp4
hwaddress 9e:e8:2a:e8:85:8c
bridge-vlan-aware yes
bridge-vids 10 20
bridge-pvid 1
VLAN Bridge Binding Mode
Cumulus Linux 中 SVI (VLAN 介面) 狀態 (Up/Down) 如何判定的重要觀念 ?
Cumulus Linux 會將 VLAN 設備 (SVI) 的鏈路狀態 (link state) 從其底層設備(即 Bridge)繼承而來。
因此,只要橋接器 (bridge) 本身處於管理上的『Up』狀態,並且至少有一個橋接器埠口 (port) 是 Up 的,那麼這個 VLAN 設備(SVI)的鏈路狀態就會是 Up - 無論那個 Up 的 Port 是不是這個 VLAN 的成員。
如果需要 VLAN 設備(SVI)的鏈路狀態只追蹤 (track) 那些同時也是該 VLAN 成員 的 Port 子集 (subset) 的狀態,而不是追蹤所有 Port,那麼你可以設定 VLAN 橋接器綁定模式 (VLAN bridge binding mode)。
在 VLAN 橋接器綁定模式中,Cumulus Linux 不會自動從底層設備繼承鏈路狀態,而是會根據 屬於該 VLAN 的橋接器埠口 來決定(SVI 的)鏈路狀態。
這段在講 SVI (L3 介面 vlan10) 的 Up/Down 狀態是怎麼決定的,這會直接影響到依賴這個 SVI 的路由協定 (如 OSPF, BGP) 或 HSRP/VRR。
vlan10 (SVI) 的狀態 = br_default (Bridge) 的狀態。br_default 如何決定狀態?:只要 Bridge 底下任何一個 Port (swp1~swp50) 是 Up 的,br_default 就是 Up。vlan10 介面只在 swp1 和 swp2 上運行 (Access Port)。vlan20 介面在 swp3 上運行。swp1 和 swp2 都斷線了 (vlan10 實際上已經孤立),但只要 swp3 還是 Up 的,br_default 就會是 Up。vlan10 這個 SVI 介面仍然會顯示為『Up』,路由協定繼續通告這條路徑,導致流量被送到一個「黑洞」。VLAN bridge binding mode
vlan10 (SVI) 的狀態是只看那些屬於 vlan10 的 Port (e.g., swp1, swp2) 的狀態。swp1 和 swp2 (vlan10) 斷線了。swp3 (vlan20) 還是 Up 的。vlan10 的狀態時,只會去看 swp1 和 swp2。vlan10 這個 SVI 介面會正確地轉為Down,路由協定會撤銷 (withdraw) 相關路由,流量會改走備援路徑。預設情況下,SVI (VLAN 介面) 只要有任何一個 Port 活著就會是 Up。如果希望 SVI 只關心自己 VLAN 內的 Port 是否活著,必須手動啟用 VLAN bridge binding 模式,這樣狀態連動才會準確。預設的行為 vlan-bridge-binding 是關閉。

分別在 spine01 和 spine02 配置 Vlan 和橋接介面的配置。在 spine01 和 spine02 之間,只有允許 VLAN 10 和 20 的標記流量。因此從 server01 的 10.1.20.101 去存取 server02 的 10.1.20.102 時可以成功,但針對存取 10.1.30.103 或 10.1.30.104 會因為 spine01 和 spine02 之間的 swp1 介面 VLAN 不允許 VLAN 30 而存取不到。