コンテンツにスキップ

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 を持たないポート → routed
  • untagged メンバ 1 個のみ → access
  • tagged メンバを 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 / PORTCHANNELswitchport_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 VLANswitchport 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 に閉じる設計と既定モードの根拠。

関連ページ

引用元


  1. sonic-net/SONiC doc/vlan/switchport-mode-support/Switchport Mode and VLAN CLI Enhancement.md @ 49bab5b5ff0e924f1ea52b3d9db0dfa4191a7c06