発展トピックへの橋渡し¶
VRF / RIF / route / NHG の読み方を押さえると、周辺機能の設計意図が追いやすくなります。このページでは、章 04 から次に読む候補を整理します。
ハンドオフ¶
- 概念とアーキテクチャは本章の concept / architecture と、area HLD の sonic-vrf-support-design-spec-draft, sonic-management-vrf-design-document-201911-release, sonic-weighted-ecmp で完結する。
- 設定とリファレンスは reference/cli の
config vrf系コマンド、reference/config_db/VRF,MGMT_VRF_CONFIG,INTERFACE,ROUTEに集約されている。 - 本ページは基本 VRF/RIF/route を押さえた読者向けに、VRRP / SAG / TSA / NHG scale / WCMP / VRF leaking / fine-grained ECMP といった発展領域だけを扱う。
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 / SNMP のbind-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.confとip vrf execを併用する。 - VRRPv3 IPv6 の link-local 衝突: VMAC を変更すると IPv6 link-local が再生成されない実装があり、ND が古い MAC を返す。
ip -6 neigh flush系で起こしなおす。
将来計画 / ロードマップ¶
- ECMP fast reroute と PIC の協調は継続テーマ。
bgp-picHLD とnexthop-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-swssのvrforch/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 showとredis-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-mgmtのvrftest 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 を伴う。