Switchport モードと VLAN CLI 拡張 — 概念¶
本ページは親 HLD Switchport モード(access / trunk / routed)と VLAN CLI 拡張 から 概念 / 用語 / モード定義 を切り出した派生ページ。実装詳細は internals、設定例は operations、HLD と実装の乖離は discrepancy を参照。
実装状況の境界(partially implemented)
モード概念のうち access / trunk の CLI(config switchport mode access|trunk)と複数 VLAN 一括 add/del は master に取り込み済 で動作する。一方、HLD が想定していた routed モードへの明示遷移コマンドと PORTCHANNEL 一括移行は未実装 に近く、対応 PR が未取り込みの部分が残る。詳細は discrepancy を参照。
なぜこの機能が必要か¶
SONiC のレガシー VLAN CLI は config vlan add 10 / config vlan member add 10 Ethernet0 -u のように VLAN ID 単発操作 を強いる。多数 VLAN の運用では繰り返し叩くことになり、誤入力やループスクリプトでのレース問題があった。さらにポートの「routed / access / trunk」のような 意味的なモード は CLI に明示されておらず、運用者の認知コストが高かった1。
本機能は次の 2 つを導入する1:
- Switchport mode: ポート(
PORT)と LAG(PORTCHANNEL)に対してrouted/access/trunkのモード概念を CONFIG_DB に持ち、CLI から切替可能にする - 複数 VLAN 一括 CLI: 範囲指定(
10-20)またはカンマ区切り(10,15,20)で複数 VLAN を 1 コマンドで add / del
アーキテクチャは大きく変わらず、変更は CLI コンテナと CONFIG_DB に閉じる1。
モードの定義¶
| モード | パケット入出力 |
|---|---|
routed |
L3 インタフェース(既定) |
access |
単一 VLAN の untagged 受信・送信のみ |
trunk |
1 つの untagged VLAN(native)+ 複数 VLAN の tagged 受信・送信 |
物理ポート / PortChannel いずれも同じ 3 モードをサポートする1。
状態遷移¶
stateDiagram-v2
[*] --> routed
routed --> access: config switchport mode access ...
routed --> trunk: config switchport mode trunk ...
access --> routed: config switchport mode routed
trunk --> routed: config switchport mode routed
access --> trunk: mode 切替 (access→trunk)
trunk --> access: mode 切替 (trunk→access)
既定値は routed。access / trunk への切替は所属 VLAN を伴う設定が必要(VLAN 未指定だと不完全状態)1。
複数 VLAN 一括 CLI のスコープ¶
flowchart LR
CLI[config vlan add 10-15,20] --> P[multi-VLAN parser]
P --> R{範囲・重複・不在チェック}
R -->|OK| WR[CONFIG_DB に書く]
R -->|NG| ERR[エラー出力 + truncate]
要点1:
- VLAN 範囲は
2 〜 4094 - 重複・存在チェックでエラーが出たらそこで truncate(後続スキップ)
- メンバ追加 (
config vlan member add <VLAN_LIST> <PORT_LIST>) も同様に複数指定可能
関連ページ¶
- 親 HLD: switch-port-modes-and-vlan-cli-enhancement
- 実装詳細: switch-port-modes-and-vlan-cli-internals
- 設定 / 運用: switch-port-modes-and-vlan-cli-operations
- HLD と実装の乖離: switch-port-modes-and-vlan-cli-discrepancy
- Topics 読み物: 06 章: L2 / VLAN / LAG
実装フェーズ境界¶
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 が存在しない範囲。