コンテンツにスキップ

発展トピックへの橋渡し

VRF / RIF / route / NHG の読み方を押さえると、周辺機能の設計意図が追いやすくなります。このページでは、章 04 から次に読む候補を整理します。

ハンドオフ

Fine-Grained ECMP と Weighted ECMP

fine-grained-ecmp HLD は、L4 ヘッダのハッシュ入力を変えずに、特定 nexthop bucket への偏りを管理者が制御するための仕組み。具体的には FG_NHG_PREFIX, FG_NHG_MEMBER テーブルで bucket → member の bind を細粒度に変更し、特定 server 群への traffic を warm-take-down できる。NHG bucket 数は power-of-two で、SAI SAI_NEXT_HOP_GROUP_ATTR_HASH_BUCKET_COUNT に直接対応する。

Weighted ECMP (sonic-weighted-ecmp) は member ごとに weight を持つ点が fine-grained と異なり、SAI 側で SAI_NEXT_HOP_GROUP_TYPE_DYNAMIC_UNORDERED_ECMP を要求するため platform 対応が分かれる。

VRRP は interface と VRF の冗長化

VRRP は、複数ルータが 1 つの仮想 router address を共有し、Master 障害時に Backup が引き継ぐ L3 冗長プロトコルです。SONiC では Ethernet、VLAN、sub-interface、PortChannel、non-default VRF が関係します。

この章の前提で見るなら、VRRP は「どの L3 interface / VRF 上で VIP と VMAC を扱うか」「FRR vrrpd と CONFIG_DB がどう連携するか」の機能です。詳細は VRRP を参照してください。

SAG は VLAN RIF の gateway MAC を揃える

Static Anycast Gateway は、EVPN/VXLAN fabric などで複数 leaf が同じ default gateway IP / MAC を提供するための仕組みです。L3 interface と RIF の MAC、IPv6 link-local の me-route 更新が関係します。

現行ページでは community master への取り込み状況に discrepancy があるため、利用前提ではなく設計理解として読みます。詳細は SAG for SONiC を参照してください。

TSA は経路広告を止めて traffic を逃がす

TSA は Traffic-Shift Away のための運用機能で、BGP に route policy を適用して対象装置へ traffic が来ないようにします。FIB pipeline そのものではなく、RIB に入る前の制御プレーン運用に近い機能です。

VoQ Chassis では Supervisor と Line Card の TSA 状態同期が課題になります。詳細は Reliable TSA を参照してください。

他章との境界

読みたいこと 次に読む章
BGP が route を選ぶまで BGP と FRR 制御プレーン
EVPN / VNET / Overlay ECMP VXLAN / EVPN / VNET
SRv6 / MPLS Segment Routing / MPLS
counter や telemetry の全体 Observability / Telemetry 系の章
test plan や VS test テスト計画の章

関連ページ

発展トピック

VRF / NHG / route の基本動作を超えた領域では、scale 改善と障害収束の最適化が主題になる。

  • NHG (Next Hop Group) スケール拡張: ECMP/WCMP の path 数を増やすほど SAI / ASIC のリソースを食う。SONiC では NHG を route 間で共有して resource 消費を抑えるが、shared NHG の更新中に flap が出ないよう orchagent が swap 戦略を持つ。
  • WCMP (Weighted ECMP): SAI の SAI_NEXT_HOP_GROUP_MEMBER_ATTR_WEIGHT を使い、capacity の異なる link でも均等に近づける配分が可能。SONiC では特定 ASIC でのみ実用に乗っている段階。
  • VRF leaking: 同一 SONiC 内で複数 VRF 間に route を leak する設計。FRR の import vrf 設定と SONiC の VRF テーブルの組み合わせで実現。route-target で leak 範囲を絞る。
  • 管理用 VRF (mgmt VRF): MGMT_VRF_CONFIG で management 経路と data plane 経路を完全分離。telemetry / NTP / DNS / SNMPbind-to-vrf を確認する。
  • SAG / VRRP の組み合わせ: SAG が default gateway 系の MAC を fabric 全体で揃える一方、VRRP は per-segment で master/backup を切り替える。両者は競合しうるので、deployment 単位で片方に寄せる。

既知の制約と回避方法

  • VRF 削除時の RIF cleanup race: VRF を削除する直前まで他 orch が RIF を使っていると、APPL_DB / ASIC_DB に残骸が残る。手順としては「VRF 上の interface を先に外す」「BGP/static route を flush する」「最後に VRF を消す」を厳守する。
  • NHG resize 中の transient loss: shared NHG を更新する瞬間に短い loss が発生しうる。重要 prefix では bgp suppress-fib-pending と PIC を組み合わせる。
  • mgmt VRF と DNS resolver: glibc resolver の bind 先 source IP を mgmt VRF に固定する設定が抜けると DNS が data VRF に漏れる。resolv.confip vrf exec を併用する。
  • VRRPv3 IPv6 の link-local 衝突: VMAC を変更すると IPv6 link-local が再生成されない実装があり、ND が古い MAC を返す。ip -6 neigh flush 系で起こしなおす。

将来計画 / ロードマップ

  • ECMP fast reroute と PIC の協調は継続テーマ。bgp-pic HLDnexthop-group-fast-failover 系の提案が交差する。
  • SAG の community master 取り込みは段階的で、ベンダー fork 側で先行する状況。SONiC main 側の YANG / orch 整備の進捗を architecture/sag-high-level-design-for-sonic の "Future Work" で追う。
  • VRF レベルの metrics (per-VRF route count / drop / nexthop unreachable) は telemetry 章 (09, 10) の OpenConfig schema 拡張に依存する。

関連 RFC / 仕様書

  • RFC 4364 — BGP/MPLS IP VPNs (VRF モデルの源流)
  • RFC 5798 — VRRPv3
  • RFC 7432 — EVPN (VRF leak の overlay 版)
  • RFC 2992 — ECMP hashing 議論
  • RFC 7196 — IS-IS Routing for Anycast (SAG 概念の参考)

upstream 開発の最新動向

  • sonic-swssvrforch / routeorch で NHG 共有の最適化と memory 削減 PR が継続的に入っている。
  • FRR の VRF leaking 周りは IPv6 source address selection と set src のバグ修正が時折入る。SONiC 側は FRR バージョン更新でこれを取り込む。
  • mgmt VRF を前提とした host-system 系 daemon (chrony, snmpd, gnmi server) の bind 設定改善 PR が散発的にあり、deployment ガイドラインの変化につながる。

トラブルシュート観点

  • VRF 削除が hang する場合、ip vrf showredis-cli -n 4 hgetall "VRF|<name>" の差分を確認する。RIF が残っているなら、対応 interface の vrf_name を unset してから削除する。
  • ECMP path が偏るときは、ASIC hash seed (SAI_SWITCH_ATTR_LAG_DEFAULT_HASH_SEED) と hash-field 設定を redis-cli -n 1 hgetall "SAI_OBJECT_TYPE_HASH:..." で確認。inner header をハッシュ入力に入れていない platform は ECMP 偏り易い。
  • mgmt VRF からの telemetry が届かない場合、ip vrf exec mgmt curl ... で経路自体を切り分け、gnmi-server--bind-vrf または host-system 起動引数で VRF 指定が抜けていないか確認する。

検証パスとラボ要件

  • VRF leaking の検証は sonic-mgmtvrf test suite で network namespace を分けたシナリオを再現できる。leak 経路の next-hop-vrf <other> 設定と FIB 上の経路存在を show ip route vrf <name> で確認する。
  • WCMP の動作は wcmp_manager の weight 反映遅延を計測することで実機差を見える化できる。SAI vendor によっては bucket resize が atomic でなく数 ms の transient loss を伴う。