コンテンツにスキップ

Runbook: EVPN Type-2 (MAC/IP) route が peer に広告されない

実行前提

EVPN / VXLAN 系の config reload / systemctl restart bgp / VLAN-VNI mapping の変更は VXLAN overlay 経由のテナント通信を瞬断〜数十秒断する。事前に CONFIG_DB の VXLAN_TUNNEL / VLAN / VXLAN_EVPN_NVO を退避し、ロールバック手順として config_db.json を保存しておく。本番では事前にメンテ枠を確保すること。

症状

  • show bgp l2vpn evpn で local MAC が出ない
  • 対向 VTEP に Type-2 が届かない(受信側で show bgp l2vpn evpn route type macip が空)
  • VLAN-to-VNI mapping は設定済みだが overlay 通信できない

想定原因(優先度順)

  1. advertise-all-vni 未設定: FRRaddress-family l2vpn evpnadvertise-all-vni がない
  2. VLAN-VNI mapping 欠落: VXLAN_TUNNEL_MAP が未作成 / VNI 重複
  3. FDB が学習されていない: 対象 MAC が show mac に出ない
  4. route-target import/export 不整合
  5. type-2 prefix の filter / route-map で drop

切り分け手順

flowchart TD
    A["Type-2 (MAC/IP) 経路が広報されない"] --> B{ローカル MAC 学習済み?}
    B -- No --> B1["VLAN/PortChannel 設定 / FDB 確認"]
    B -- Yes --> C{l2vpn evpn family activate?}
    C -- No --> C1[address-family l2vpn evpn を有効化]
    C -- Yes --> D{"advertise-all-vni / RD/RT 設定?"}
    D -- No --> D1["EVPN_NVO / VRF RT 設定を投入"]
    D -- Yes --> E[bgp l2vpn evpn neighbor の send-community 確認]

確認コマンド

1. VXLAN / VNI

show vxlan tunnel
show vxlan vlanvnimap
show vxlan name <tunnel>
sonic-db-cli CONFIG_DB keys "VXLAN_TUNNEL_MAP|*"

2. FRR / BGP EVPN

docker exec bgp vtysh -c "show running-config" | grep -A30 "l2vpn evpn"
docker exec bgp vtysh -c "show bgp l2vpn evpn summary"
docker exec bgp vtysh -c "show bgp l2vpn evpn route"
  • 期待: advertise-all-vni あり、route-target が対向と一致

3. FDB / MAC 学習

show mac
sonic-db-cli APPL_DB keys "FDB_TABLE:Vlan*"

4. EVPN MAC/IP

docker exec bgp vtysh -c "show evpn mac vni <vni>"
docker exec bgp vtysh -c "show evpn vni"

5. orchagent

docker logs swss 2>&1 | grep -iE "vxlan|evpn" | tail -100

対処方法

  • advertise-all-vni 追加: vtysh -c "conf t" -c "router bgp <asn>" -c "address-family l2vpn evpn" -c "advertise-all-vni" の後 config saveロールバック: no advertise-all-vni を同経路で)
  • VLAN-VNI mapping 作成: sudo config vxlan map add <tunnel> <vlan> <vni>ロールバック: config vxlan map del
  • RT 不一致: route-target import/export を対向と揃える
  • FDB が学習されない: MAC learning enable、port が trunk として正しいか確認

確認

対処後の正常化を以下で裏取りする。

  • 症状解消: 「症状」節で挙げた事象 (counter / log / state) が回復していること
  • 再発監視: 数分〜数十分の間隔で同コマンドを再実行し、値がフラップしていないこと
  • 副作用なし: 関連サブシステム (syslog / show interfaces counters errors / show ip bgp summary 等) に新規 error が出ていないこと
  • 永続化: sudo config save -y 済みで config_db.json に変更が反映されていること (恒久対処の場合)

短時間で再発する場合は「想定原因」リストの次候補に進む。

関連ページ

引用元

本ページの根拠は引用元 12 を参照。


  1. sonic-net/sonic-frr @ master — bgp_evpn.c 

  2. sonic-net/sonic-swss @ master — vxlanorch.cpp