SmartSwitch HA HAMgrD 内部実装¶
このページは HAMgrD(概要ハブ) の派生ページで、actor の workflow と DPU-Driven mode の詳細 に絞って整理する。概念は smartswitch-high-availability-manager-daemon-hamgrd-design-concepts.md、設定は smartswitch-high-availability-manager-daemon-hamgrd-design-operations.md、制限事項は smartswitch-high-availability-manager-daemon-hamgrd-design-limitations.md を参照。
現状未実装
本ページの記述は HLD v0.1 を元にした 将来仕様の参考。hamgrd バイナリは community master に未取り込みで、actor framework / swbus / DPU/vDPU の STATE 系テーブルは欠落している。
1. Actor 起動と動的変動¶
hamgrd起動直後に CONFIG_DB / APPL_DB の既存 table から 初期 actor 群(global config / dpu / vdpu / ha set / ha scope)を作成1- APPL_DB は SDN controller から動的更新されるため、新規 HA set 等の create/delete 時に actor を生成・破棄
2. DPU と vDPU の状態集約¶
vDPU actor が物理 DPU actor に register、DPU actor が状態変化を vDPU に転送、vDPU が aggregate して HA Set に通知する 3 段構成1。
3. HA Set workflow¶
HA Set は どの vDPU をペアにするかを定義 するだけのほぼ静的な存在1:
- HA Set actor は
DASH_HA_SET_CONFIG_TABLEの vDPU リストを subscribe DASH_HA_GLOBAL_CONFIGと vDPU 状態を集約して自分の state を更新- scope が
dpuなら DPU 単位の forwarding rule を設定 - ローカル vDPU が含まれる HA Set では DPU 側 HA Set table を program して ENI から参照可能にする
4. HA Scope workflow(DPU-Driven mode)¶
sequenceDiagram
participant APP as APPL_DB
participant HS as HA Set Actor
participant V as vDPU Actor
participant SC as HA Scope Actor
participant SWSS as DPU SWSS
participant DPU
APP->>SC: HA scope config update
SC->>HS: Subscribe HA set state
HS-->>SC: state
SC->>V: Subscribe vDPU state
V-->>SC: state
SC->>SC: Aggregate scope state
SC->>SWSS: Program DASH_HA_SCOPE_TABLE
SWSS->>DPU: Configure HA scope
Note over DPU: peer pair / state machine
初期化時¶
- HA Scope actor 作成と HA Set state subscribe1
- 初期 state は
Role=Active/Standby,AdminState=Disabled - DPU 側に HA Scope config を forward
更新時¶
- SDN controller が enable を立てると HAMgrD が DPU に転送
- DPU の状態遷移を監視
- DPU からの role activation 要求を扱う
- DPU が最終 state に達したとき DPU actor が BFD responder を program
削除時¶
- HA Scope actor を pending deletion マーク → DPU 側削除 → 完了後 actor 自体と STATE_DB エントリを削除
詳細は smart-switch-ha-dpu-scope-dpu-driven-setup.md 参照1。
5. Switch-Driven mode¶
TBD(HLD で未確定)1。NPU が能動的に HA state machine を駆動するモード。
HLD と実装の差分
本ページに記述した actor workflow / DPU-Driven シーケンスは HLD v0.1 を元にした将来仕様の参考。schema 層(HA Set / HA Scope の APP/CFG/STATE table 名)は一部のみ取り込み済の部分実装状態である一方、hamgrd バイナリ・actor framework・swbus・DASH_HA_DPU_STATE / VDPU_TABLE の schema は community master に未取り込みで、Switch-Driven mode は HLD 上 TBD のまま。実コードでの裏取り結果と回避策は smartswitch-high-availability-manager-daemon-hamgrd-design-limitations.md を参照。
関連ページ¶
- HAMgrD(概要ハブ)
- smartswitch-high-availability-manager-daemon-hamgrd-design-concepts.md — 概念
- smartswitch-high-availability-manager-daemon-hamgrd-design-operations.md — スキーマ
- smartswitch-high-availability-manager-daemon-hamgrd-design-limitations.md — 実装乖離
実装フェーズ境界¶
Phase 別の実装済 / 未実装 サマリ
本ページは monitor: partially_implemented で、HLD で示された一連の機能
が 段階的に取り込まれている 状態を扱う。フェーズ毎の実装境界を
1 枚の表に集約する (詳細は本ページ上部の diff admonition および
discrepancy-index を参照)。
| Phase | 範囲 (機能 / 段階) | 実装済 (master 取り込み済) | 未実装 (HLD 提案のみ) |
|---|---|---|---|
| Phase 1 — 基本機能 | HLD §概要 / §設計の中核ユースケース | 取り込み済 — 本ページの「実装の概観」「実装詳細」節および diff admonition の現状側を参照 |
— (Phase 1 は実装済) |
| Phase 2 — 拡張機能 | HLD §拡張 / §追加要件 / §周辺統合 | 一部のみ取り込み済 — 本ページ「実装詳細」の補足参照 | 未実装 / 未マージ — HLD §未対応箇所、本ページ「制限事項」および diff admonition の差分側に列挙 |
| Phase 3 — 将来拡張 | HLD §Future Work / §将来課題 | — | 未実装 — HLD 提案段階。対応 PR は確認されていない (last_verified 時点) |
凡例: 「実装済」=現行 master で動作確認できる範囲 / 「未実装」=HLD には記載があるが対応 PR が未マージまたは設計のみで code が存在しない範囲。
引用元¶
このページを読んだ後の次アクション¶
読み手向け
- 本機能を実運用で使う場合: 実装が無いため、本機能に依存した運用は不可。代替機能 (下記リンク) で要件を満たせるか検討する
- upstream 動向を追う場合: 関連 issue / PR を sonic-net/SONiC で検索(HLD タイトル / CONFIG_DB テーブル名 / Orch クラス名で grep するのが速い)
- 代替手段 / 関連 reference: 本ページの frontmatter
relatedが空のため、Reference 索引 から関連テーブル / CLI / YANG を辿る
本ドキュメントの追跡
- monitor:
not_implemented/ last_verified:2026-05-11 - 次回再裏取りトリガ: quarterly。一覧は discrepancy-index を参照(運用詳細は repo の
meta/discrepancy-operations.md)