BGP / EVPN 関連¶
概要¶
SONiC のルーティングは FRRouting (FRR) を中心に構築されており、その大部分が BGP / EVPN-VXLAN / VNET の運用に関わります。fpmsyncd が FRR の Netlink を受け取って ROUTE_TABLE / NEXTHOP_GROUP_TABLE に書き込み、orchagent が SAI 経由で ASIC を更新するという経路が基本構造です。さらに bgpcfgd / frrcfgd が CONFIG_DB の BGP_* テーブルや OpenConfig YANG を FRR の vtysh コンフィグへ翻訳します。
このカテゴリは BGP / EVPN に関わるページを area 横断でまとめます。routing(BGP loading 最適化、PIC、BMP、BFD HW offload、EVPN-VXLAN、EVPN multihoming、Weighted ECMP、suppress-fib-pending、router-id、VoQ 向け BGP、Overlay ECMP)・overlay(VXLAN / VNet 全体設計、VNET local endpoint)・architecture(PBH = Policy Based Hashing)・reference(config bgp / config vxlan / show bgp / show route-map CLI、BGP_NEIGHBOR / BGP_PEER_GROUP / PREFIX_LIST / ROUTE_MAP / VXLAN_TUNNEL などの CONFIG_DB テーブル、対応する YANG)に広く分散しています。
EVPN-VXLAN は FRR の bgpd + zebra + EVPN AFI / SAFI を使い、Type-2(MAC/IP)と Type-5(IP prefix)を中心に運用します。SONiC 側では VNET という独自の VRF-like 概念が存在し、VNET テーブル経由で VXLAN tunnel と紐づきます。マルチホーミング(ESI / DF election)は実装されているものの、現行マスターでは discrepancy が報告されているページがあります。
主要キーワード: BGP, EVPN, VXLAN, VNET, route-map, prefix-list, prefix-set, BMP, BFD, PIC, FRR, bgpcfgd
関連ページ¶
routing(BGP / EVPN HLD 本体)¶
- FRR-BGP Unified Mgmt Framework(frrcfgd / OpenConfig BGP) (area:
routing, verification:code-verified) — frrcfgd の前提 - bgpcfgd の dynamic BGP peer 動的変更(update.conf.j2 / delete.conf.j2) (area:
routing, verification:code-verified) - BGP router-id を明示的に設定する(DEVICE_METADATA.bgp_router_id) (area:
routing, verification:code-verified) - BGP Loading Optimization(fpmsyncd flush / orchagent ring buffer / async sairedis) (area:
routing, verification:code-verified) - BGP PIC(Prefix Independent Convergence / NHG 階層) (area:
routing, verification:code-verified) - BBR 連動の BGP ルート集約(BGP_AGGREGATE_ADDRESS) (area:
routing, verification:code-verified) - BGP Suppress FIB Pending(dplane_fpm_nl + RTM_F_OFFLOAD) (area:
routing, verification:hld-only) - BGP Route Install Error Handling(ERROR_ROUTE_TABLE / FIB-install pending) (area:
routing, verification:discrepancy-found) - BGP セッション向け BFD ハードウェアオフロード(bfdsyncd 経路) (area:
routing, verification:discrepancy-found) - VoQ シャーシでの BGP 構成(iBGP フルメッシュ + addpath / multipath-relax) (area:
routing, verification:code-verified) - BMP(BGP Monitoring Protocol / BMP_STATE_DB) (area:
routing, verification:code-verified) - EVPN VXLAN(FRR BGP-EVPN / VTEP / VRF / Type-2/Type-5) (area:
routing, verification:discrepancy-found) - EVPN VXLAN Multihoming(ESI / DF election / split-horizon) (area:
routing, verification:discrepancy-found) - Overlay ECMP with BFD monitoring(VxLAN VNet ルートと BFD 連動) (area:
routing, verification:code-verified) - Weighted ECMP(WCMP / BGP link-bandwidth ext community) (area:
routing, verification:code-verified) - ECMP inner packet hashing テストプラン(PBH 経由の VxLAN/NVGRE 内側 5-tuple ハッシュ) (area:
routing, verification:code-verified) - VRF Ansible テストプラン(T0 上で BGP/ACL/loopback/warm-reboot 含む E2E 検証) (area:
routing, verification:hld-only)
overlay(VXLAN / VNET)¶
- VXLAN / VNet 全体設計(VxlanOrch / VnetOrch / VRF mapper) (area:
overlay, verification:code-verified) - VNET の Local Endpoint Forwarding(DPU 直結 nexthop の最適化) (area:
overlay, verification:code-verified)
architecture¶
- Policy Based Hashing(PBH: NVGRE / VxLAN inner 5-tuple) (area:
architecture, verification:hld-only)
reference - CLI¶
- config bgp サブコマンド (area:
reference, verification:code-verified) - config vxlan サブコマンド (area:
reference, verification:code-verified) - show bgp / show ip bgp / show ipv6 bgp サブコマンド (area:
reference, verification:code-verified) - show route-map コマンド (area:
reference, verification:code-verified)
reference - CONFIG_DB¶
- BGP_GLOBALS テーブル (area:
reference, verification:code-verified) - BGP_DEVICE_GLOBAL テーブル (area:
reference, verification:code-verified) - BGP_NEIGHBOR テーブル (area:
reference, verification:code-verified) - BGP_NEIGHBOR_AF テーブル (area:
reference, verification:code-verified) - BGP_PEER_GROUP テーブル (area:
reference, verification:code-verified) - BGP_PEER_GROUP_AF テーブル (area:
reference, verification:code-verified) - BGP_AGGREGATE_ADDRESS テーブル (area:
reference, verification:code-verified) - PREFIX_LIST テーブル (BGP) (area:
reference, verification:code-verified) - PREFIX_SET テーブル (area:
reference, verification:code-verified) - ROUTE_MAP テーブル (area:
reference, verification:code-verified) - VXLAN_TUNNEL テーブル (area:
reference, verification:code-verified) - VXLAN_TUNNEL_MAP テーブル (area:
reference, verification:code-verified)
reference - YANG¶
- sonic-bgp-global YANG (area:
reference, verification:code-verified) - sonic-bgp-neighbor YANG (area:
reference, verification:code-verified) - sonic-bgp-peergroup YANG (area:
reference, verification:code-verified) - sonic-route-map YANG (area:
reference, verification:code-verified) - sonic-vxlan YANG (area:
reference, verification:code-verified)
典型的な読み進め方¶
- BGP 設定経路 →
sonic-frr-bgp-extended-unified-configuration-management-framework.md→bgpcfgd-dynamic-peer-modification-support.mdで CONFIG_DB → FRR の翻訳 - CLI / CONFIG_DB / YANG →
config-bgp.md/show-bgp.md/bgp-neighbor.md/sonic-bgp-neighbor.mdのいずれかで実機操作の語彙 - 収束最適化 →
bgp-loading-optimization-for-sonic.md→bgp-prefix-independent-convergence-architecture-document.md→bgp-suppress-announcements-of-routes-not-installed-in-hw.md - EVPN-VXLAN →
vxlan-sonic.md(VxlanOrch / VnetOrch)→evpn-vxlan-hld.md(FRR BGP-EVPN)→evpn-vxlan-multihoming.md - ECMP / Hashing →
sonic-weighted-ecmp.md→overlay-ecmp-with-bfd-monitoring.md→sonic-policy-based-hashing.md - 監視・テスト →
bmp-for-monitoring-sonic-bgp-info.md→test-plan-for-inner-packet-hashing-in-ecmp.md
関連 Topics 章¶
- Topics 02: BGP — BGP 単独の段階的学習章
- Topics 03: VXLAN / EVPN / VNET — VXLAN / EVPN / VNET の段階的学習章
- Topics 04: VRF / ECMP — VRF / ECMP の前提
verification ステータス注意点¶
- hld-only:
sonic-policy-based-hashing.md,bgp-suppress-announcements-of-routes-not-installed-in-hw.md,vrf-feature-ansible-test-plan-omit-in-toc.md - discrepancy-found:
bfd-hw-offload-for-bgp-session.md,bgp-route-install-error-handling.md,evpn-vxlan-hld.md,evpn-vxlan-multihoming.md— 各ページ末尾に差分メモあり