Server Plus 伺服器智選館

技術分享

Cisco NX-OS 9.3.x VLAN Translation:vPC 環境下的 1:1 VLAN Mapping 設計與驗證

VLAN Translation 的主要用途,是在 VLAN ID 發生衝突時維持兩側既有編號。例如 upstream 2103 已經分配給其他客戶,但本端或客戶側仍必須使用 2103,就可在 Nexus 接入側將 wire tag 2103 轉換為內部可用的 translated VLAN。vPC 環境下必須讓兩台 Nexus 的 VLAN database、mapping、allowed VLAN 與 member port 設定保持一致。

7 分鐘閱讀Server Plus
NX-OSVLAN TranslationCisco Nexus 9000vPCVLAN Mapping

Cisco Nexus 9000 在 NX-OS 9.3.x 建置 1:1 VLAN Translation,主要用於處理 VLAN ID 衝突:例如 upstream 2103 已分配給其他客戶,但本端或客戶側仍必須使用 2103。本文整理 vPC 架構下的 mapping 設計、封包流向、驗證項目與故障排除。

資料來源:Server Plus 技術筆記 · 2026-07-11

設計原則

以 ingress VLAN 2103、translated VLAN 2104 為例,2103 是客戶側進入交換器時的 dot1q tag;封包進入 mapping port 後會被硬體改寫為 2104。後續 allowed VLAN check、L2 forwarding、MAC learning 與上游 trunk 都以 2104 為準。

因此,Nexus 內部只需要建立 translated VLAN。ingress VLAN 不作為本機 forwarding domain,也不應加入 allowed VLAN。這是 vPC 環境下維持一致性與避免 VLAN suspend 的核心原則。

vlan 2104
  name CUSTOMER-L2-TRANSIT
  vn-segment 2104
  • translated VLAN 2104:交換器內部 forwarding VLAN,必須建立
  • ingress VLAN 2103:客戶側 wire tag,不建立本機 VLAN
  • trunk allowed VLAN 使用 2104
  • SVI、MAC table、STP 與上游轉送均以 2104 為準

主要用途:VLAN ID 衝突

1:1 VLAN Translation 最常見的用途,是解決服務商或資料中心 L2 transit 環境中的 VLAN ID 衝突。舉例來說,upstream 業者的 VLAN 2103 已經分配給其他客戶,但本端既有架構、客戶設備或合約交付條件要求繼續使用 VLAN 2103,雙方都無法直接改號。

在這種情境下,Nexus 9000 可以在 customer-facing port 將 ingress VLAN 2103 轉換為內部可用的 translated VLAN 2104。對客戶側而言仍然是 VLAN 2103;對本端交換器與 upstream trunk 而言,實際 forwarding 則使用 VLAN 2104,避免與 upstream 既有 VLAN 規劃衝突。

範例拓撲為客戶側 port-channel13 接收 VLAN 2103,Nexus vPC pair 內部轉換為 VLAN 2104,上游 port-channel1100 使用 VLAN 2104,port-channel1000 作為 vPC peer-link。

Customer side requirement      Nexus 9000 vPC pair          Upstream available VLAN
Must keep VLAN 2103      ->   translate to VLAN 2104   ->   forward as VLAN 2104

NX-OS 9.3.x 行為

在 NX-OS 9.3.x,VLAN mapping 與 VXLAN 相關的硬體 programming path 有關。即使設計本身是純 L2 transit,不做 VXLAN encapsulation,translated VLAN 仍需要配置 vn-segment,讓硬體 vlan_xlate table 正常生效。

這個場景不需要建立 NVE 介面,因為封包沒有跨 IP underlay。vn-segment 在此是觸發硬體轉換表 programming 的必要條件,不代表此流量會進入 VXLAN overlay。

  • NX-OS 9.3.x:translated VLAN 需要 vn-segment
  • 純 L2 transit:不需要 NVE interface
  • 封包仍在本機 L2 pipeline 內完成 VLAN tag translation

VLAN database

VLAN database 僅建立 translated VLAN。VLAN name 建議使用可維運識別的通用描述,方便 NOC、變更紀錄與後續查修。

vlan 2104
  name CUSTOMER-L2-TRANSIT
  vn-segment 2104

Customer-facing trunk

客戶側 port-channel 啟用 vlan mapping engine,設定 2103 -> 2104。allowed VLAN 僅放行 translated VLAN 2104,避免 ingress VLAN 與 translated VLAN 在同一個 trunk 上形成邏輯衝突。

interface port-channel13
  description CUSTOMER-SIDE-TRUNK
  switchport
  switchport mode trunk
  switchport vlan mapping enable
  switchport vlan mapping 2103 2104
  switchport trunk allowed vlan 2104
  speed 1000
  no negotiate auto
  vpc 13
  • 啟用 switchport vlan mapping enable
  • mapping 關係為 ingress VLAN 2103 轉換至 translated VLAN 2104
  • allowed VLAN 僅允許 2104
  • port-channel 與 member port 的 mapping 設定需一致

Physical member port

實體 member port 需與 port-channel 維持一致的 switchport mode、vlan mapping 與 allowed VLAN。若設定不一致,介面可能無法加入 port-channel,或在 vPC consistency 檢查中產生異常。

interface Ethernet1/13
  description CUSTOMER-SIDE-MEMBER
  switchport
  switchport mode trunk
  switchport vlan mapping enable
  switchport vlan mapping 2103 2104
  switchport trunk allowed vlan 2104
  speed 1000
  no negotiate auto
  channel-group 13 mode active
  no shutdown

Upstream trunk 與 peer-link

上游 trunk 不需要 vlan mapping,因為封包進入交換器後已經以 VLAN 2104 forwarding。若 vPC peer-link 有手動限制 allowed VLAN,需確認 VLAN 2104 已被允許通過。

interface port-channel1100
  description UPSTREAM-TRUNK
  switchport
  switchport mode trunk
  switchport trunk allowed vlan add 2104
  mtu 9216
  vpc 1100

interface port-channel1000
  description VPC-PEER-LINK
  switchport
  switchport mode trunk
  spanning-tree port type network
  vpc peer-link

封包流向

客戶側封包進入 mapping port 時,wire tag 是 2103。Ingress pipeline 先將 VLAN tag 改寫為 2104,接著才進行 allowed VLAN check 與 L2 forwarding。因此 allowed VLAN 必須以 2104 為準。

反向流量從上游進入時已是 VLAN 2104,交換器以 2104 進行 L2 forwarding;從客戶側 port egress 時,再由 mapping engine 將 tag 改寫回 2103。

Customer to Upstream
wire tag 2103
  -> ingress translation 2103 to 2104
  -> allowed VLAN check on 2104
  -> L2 forwarding in VLAN 2104
  -> upstream egress tag 2104

Upstream to Customer
wire tag 2104
  -> L2 forwarding in VLAN 2104
  -> customer egress translation 2104 to 2103
  -> customer receives tag 2103

設定檢查重點

VLAN Translation 問題通常不是單一命令缺漏,而是 VLAN database、allowed VLAN、mapping 與 vPC consistency 其中一項不一致。檢查時應從 forwarding VLAN 2104 的角度判斷。

  • VLAN database 需存在 2104 並配置 vn-segment
  • customer-facing trunk 需啟用 vlan mapping
  • customer-facing trunk allowed VLAN 需為 2104
  • 兩台 vPC peer 的 mapping 與 allowed VLAN 需一致
  • physical member port 與 port-channel 設定需一致
  • SVI 應建立在 translated VLAN,而不是 ingress VLAN

vPC 一致性與變更順序

VLAN mapping 屬於 vPC consistency 必須一致的項目。兩台 Nexus 的 VLAN database、mapping 命令、allowed VLAN 與 member port 設定需同步完成。

實務變更時,建議先建立 VLAN database 與 vn-segment,再確認 peer-link 與上游 allowed VLAN,最後套用 customer-facing port-channel 與 physical member port mapping。

Step 1: Create VLAN 2104 with vn-segment 2104 on both peers
Step 2: Verify peer-link allows VLAN 2104
Step 3: Configure mapping on both vPC member port-channels
Step 4: Configure mapping on physical member ports
Step 5: Verify vPC consistency and forwarding

驗證項目

設定完成後,需同時驗證 running-config、switchport mapping、vPC consistency、VLAN active 狀態與 MAC learning。流量層面則確認 customer-facing side 看到 tag 2103,上游 side 看到 tag 2104。

show running-config interface port-channel13
show interface port-channel13 switchport
show vpc consistency-parameters vlans
show vpc consistency-parameters interface port-channel13
show vlan id 2104
show mac address-table vlan 2104
show interface port-channel13 counters
show vlan counters

故障排除

若出現 VLAN suspend 或客戶流量不通,先確認 ingress VLAN 是否被誤建立,再檢查 vn-segment、allowed VLAN、mapping 設定與 vPC consistency。MAC table 是否能在 VLAN 2104 學到位址,是判斷 forwarding 是否正常的關鍵。

show vlan brief | inc 2103
show running-config | section "vlan 2104"
show interface port-channel13 switchport
show vpc consistency-parameters interface port-channel13
show mac address-table vlan 2104
show logging | inc SUSPENDED
show logging | inc -i "vlans|mapping"
  • 若出現 VLAN 2103,移除兩台 peer 上的該 VLAN
  • 若 MAC table 無學習結果,檢查 vn-segment 與 mapping programming
  • 若 vPC consistency failed,對齊兩台 peer 的 port-channel、member port 與 VLAN database
  • 若 peer-link 未允許 2104,補上 peer-link allowed VLAN

版本升級注意事項

在較新的 NX-OS 版本中,VLAN mapping 的實作方式可能與 9.3.x 不同,設定可更接近 standalone L2 feature。升級或降版前,應在維護窗口內確認 vlan mapping 命令相容性,必要時先移除 mapping,升降版完成後再重新套用。

  • 9.3.x:translated VLAN 需要 vn-segment
  • 較新版本:可能不再依賴 VXLAN feature path
  • 升降版前需確認 release notes 與既有 mapping 命令相容性
  • 設計原則不變:ingress VLAN 不作為本機 forwarding VLAN

相關服務

FAQ

常見問題

為什麼 ingress VLAN 不建立在 VLAN database?

ingress VLAN 只代表 customer-facing wire tag。封包進入 mapping port 後會被改寫為 translated VLAN,交換器內部 forwarding、allowed VLAN check 與 MAC learning 都以 translated VLAN 為準。

NX-OS 9.3.x 為什麼需要 vn-segment?

在 NX-OS 9.3.x,VLAN mapping 與 VXLAN 相關硬體 programming path 有關。即使不建立 NVE、不做 VXLAN encapsulation,translated VLAN 仍需要 vn-segment 讓硬體 vlan_xlate table 正常生效。

上游 trunk 需要設定 vlan mapping 嗎?

不需要。上游方向使用的是 translated VLAN。mapping 設在 customer-facing port,封包進入時從 ingress VLAN 改寫為 translated VLAN,從 customer-facing port egress 時再改回 ingress VLAN。