Switchport モードと VLAN CLI 拡張 — 内部実装¶
本ページは親 HLD Switchport モード(access / trunk / routed)と VLAN CLI 拡張 の YANG / CONFIG_DB / db_migrator 周りを切り出した派生ページ。概要・モード定義は concepts を参照。
YANG / CONFIG_DB¶
sonic-port / sonic-portchannel に新規 leaf を追加1:
typedef switchport-mode-type {
type enumeration {
enum routed;
enum access;
enum trunk;
}
default routed;
}
leaf switchport_mode { type switchport-mode-type; }
CONFIG_DB:
PORT|<name>
switchport_mode = "routed" | "access" | "trunk"
PORTCHANNEL|<name>
switchport_mode = ...
メンバ関係は既存 VLAN_MEMBER を流用(tagging_mode: untagged / tagged)。本機能は モード概念を明示 することで CLI の意味付けを揃えるのが主目的で、データプレーン挙動は既存と互換1。
db_migrator 拡張¶
旧 config_db.json には switchport_mode 欄が無い。db_migrator は次のルールで補完する1:
VLAN_MEMBERを持たないポート →routeduntaggedメンバ 1 個のみ →accesstaggedメンバを 1 つでも持つ →trunk
これにより既存 SONiC からのアップグレードで CONFIG_DB が破綻しない1。
フェーズ別 実装境界¶
switchport_mode 機能は CLI / YANG / CONFIG_DB / db_migrator までは master に取り込まれているが、 HLD が触れる関連改修のうち取り込まれていない部分もある。フェーズ別に「実装済」「未実装」を整理する1:
| Phase | 実装済 (master で動く) | 未実装 (HLD 提案のみ) |
|---|---|---|
YANG switchport_mode leaf 追加 (sonic-port / sonic-portchannel) |
✅ 取り込み済 | — |
CONFIG_DB PORT / PORTCHANNEL の switchport_mode カラム |
✅ 取り込み済 | — |
config switchport mode CLI |
✅ 取り込み済 | — |
db_migrator による旧 config_db.json の自動補完 (routed / access / trunk 推定) |
✅ 取り込み済(VLAN_MEMBER の有無で推定) | — |
tagging_mode (untagged / tagged) の意味付け |
✅ 既存 VLAN_MEMBER を流用 |
— |
| orchagent / vlanmgr / SAI 側のモード対応 | ✅ 改修不要(既存 VLAN_MEMBER 経由で従来動作) |
— |
routed モードでの VLAN_MEMBER 拒否バリデーション |
🟡 CLI 側のチェック | YANG must 制約や orchagent 側の強制バリデーションは未取り込み |
trunk native VLAN(switchport trunk native vlan 相当)の CONFIG_DB 表現 |
— | ❌ HLD では暗黙、master では VLAN_MEMBER untagged の併用に依存(明示フィールドなし) |
✅ フェーズは現行 master で素直に動作するが、🟡 / ❌ フェーズは CLI のガードに依存しており、redis-cli 直接編集で routed ポートに VLAN メンバを追加する等の整合性違反は防げない。詳細は discrepancy ページ を参照1。
アーキテクチャへの影響¶
- orchagent / SAI / vlanmgr 等の改修は 無し。
switchport_modeは CLI 側のメタ情報で、下流は既存のVLAN_MEMBER/tagging_modeを介して従来通り動く1 - 影響範囲は CLI コンテナ(
sonic-utilities)と CONFIG_DB スキーマに閉じる。新ベンダ依存・SAI 改修なし
📋 検証エビデンス: sonic-net/SONiC/doc/vlan/switchport-mode-support/Switchport Mode and VLAN CLI Enhancement.md#L141-L156 (sha: 49bab5b5ff0e924f1ea52b3d9db0dfa4191a7c06)
出典:
sonic-net/SONiC/doc/vlan/switchport-mode-support/Switchport Mode and VLAN CLI Enhancement.md#L141-L156 (sha: 49bab5b5ff0e924f1ea52b3d9db0dfa4191a7c06)
抜粋:
The overall SONiC architecture will remain the same and no new sub-modules will be introduced.
Changes are made only in the CLI container and Config_DB.
... Default port mode is "routed".
判断根拠: 影響範囲を CLI と CONFIG_DB に閉じる設計と既定モードの根拠。
関連ページ¶
- 親 HLD: switch-port-modes-and-vlan-cli-enhancement
- 概念: switch-port-modes-and-vlan-cli-concepts
- 設定 / 運用: switch-port-modes-and-vlan-cli-operations
- HLD と実装の乖離: switch-port-modes-and-vlan-cli-discrepancy
- CONFIG_DB: PORT / PORTCHANNEL / VLAN_MEMBER