思科 ACI 是一個大型路由域,不支援傳統 STP 生成樹協議,但可以識別 STP BPDU 封包並對 STP TCN 拓撲變化做出回應。
處理機制
ACI 從外部交換器接收到 TCN BPDU,將會在對應介面所屬 EPG flood BPDU。 flood 範圍控制在 EPG,或者說,EPG 相關的 FD VLAN,具體是透過 FD VLAN/VXLAN 關聯的 fabric_encap VNI 來實現。
STP 可能造成的問題
upon receiving STP TCN, EPM will flush all EPs behind the VLAN,這個行為會導致接收到 STP TCN 的 EPG,所有 EP 被 flush,重新學習,流量中斷。
如果不同 EPG,使用 overlapping vlan id,且 vlan id 來源是相同 vlan pool,就會計算相同 fabric_encap VNID,STP flood 範圍就會從單一 EPG 變成兩個 EPG。影響範圍喜加一(這也是不建議 overlapping vlan 的原因之一)
STP 相關的 best practice
總結了一些 tips,詳細內容還是建議參考官方文件。 ACI Design Guide[1],unofficial guide 1[2],和 Cisco 論壇[3]
1. leaf — external switch(eg. N7k),external switch 介面無法設定 bpdufilter 不收不發 BPDU,容易形成環路
2. leaf — physical server,leaf 介面可以開啟 bpduguard,收到 BPDU 就進入 bpdu-guard-err-disable 狀態,避免誤接 switch
3. external switch 所有接入 endhost(non-switch) 的接口,都應該打開 portfast/trunk edge,避免接口 flap 產生的 TCN,一路傳遞到 ACI。同時開啟 bpduguard,避免誤接 switch
4. external switch 在 trunk 接口,只 allow 特定 vlan
5. external switch 連接 ACI 的接口,應該配置 spanning-tree link-type shared,將 ACI 理解為一個 Hub,並不是默認 STP P2P(兩台 switch 直接對接)。參考文件 STP link-type shared[4]
6. 建議使用 leaf–VPC / port-channel LACP 形式連接 external switch,避免 STP 的影響
7. 推薦 VLAN = EPG 的 network centric mode 部署,縮小故障域
8. BD setting L2 Unknown Unicast 可以設定為 flood,即使 EP 被 flush,也能夠透過 flood 行為轉發。這個方式會增加網路當中的 flood traffic,慎重選擇
9. 外接 external switch 和 BM local endpoint,建議使用不同 vlan,分割到不同 EPG,避免被連帶影響。
10. 打開 MCP(MCP default policy:enabled, on intf policy group)
11. 開啟 Rogue EP control
12. Catalyst 系列的spanning-tree etherchannel guard misconfig 最好關閉,這個機制是假設Catalyst switch 連接到了同一個設備做EtherChannel 所以收到BPDU 的source mac 應該相同;如果收到不同source mac BPDU 並且超出一定閾值,就會err-disable 介面;在和ACI 對接場景,ACI 作為STP hub,在encap vlan flood BPDU,很容易讓對端Cat err-disable。建議使用 LACP, PagP 來取代 etherchannel guard misconfig。
透過這些最佳實踐,可以在 Cisco ACI 環境中更好地管理 STP TCN,確保網路穩定性和效能。
引用链接
[1]
ACI Design Guide: https://www.cisco.com/c/en/us/td/docs/dcn/whitepapers/cisco-application-centric-infrastructure-design-guide.html#MinimizethescopeofSpanningTreetopologychanges
[2]
unofficial guide 1: https://unofficialaciguide.com/2019/03/28/stp-and-aci-intermittent-packet-loss-due-to-tcns/
[3]
Cisco 论坛: https://community.cisco.com/t5/application-centric-infrastructure/apic-issues-excessive-stp-tcn-flushes/td-p/3302890
[4]
STP link-type shared: https://www.cisco.com/c/en/us/support/docs/cloud-systems-management/application-policy-infrastructure-controller-apic/211236-ACI-operation-with-L2-switches-and-Spann.html