Topics で読み物として読む
この HLD は実装詳細を含みます。機能の概念・設定・運用を読み物として読みたい場合は Topics 14 章: Platform / Port / Optics を参照。
裏取りステータス: code-verified
sonic-utilities/config/main.py の breakout_cfg_file / _validate_interface_mode、sonic-buildimage/.../sonic-breakout_cfg.yang の BREAKOUT_CFG スキーマで動的 breakout 実装を確認(Verifier 2026-05-10)。
動的ポートブレイクアウト(dynamic port breakout・lanes / interface再構成)¶
読み手が知りたいこと¶
- breakout を変えると CONFIG_DB / SAI で何が起きるか
- どの CLI で変更し、関連設定(VLAN / LAG / ACL / IP)はどうなるか
platform.jsonで何を制約しているか- 拒否される / 一部 port が up しないときに何を見るか
--forceは何に使うか
1. 何をする機能か¶
1 つの物理 cage(QSFP-DD 等)を 複数の論理 port に切り分ける / 1 つに戻す 操作を、reload 不要・稼働中の SONiC で 行えるようにする1。
例: 100Gx1(Ethernet0)→ 25Gx4(Ethernet0/1/2/3)
達成目標:
- breakout 変更を
config interface breakout1 コマンドで完結 - 関連設定(PORT_CHANNEL / VLAN_MEMBER / ACL / IP / neighbor)を 依存解決 して整合的に削除
- platform 物理制約(lane / supported modes)を
platform.jsonで照合
2. 変更フロー¶
flowchart LR
USER[管理者] --> CLI[config interface breakout Ethernet0 4x25G]
CLI --> VAL[platform.json と\nbreakout-cfg.json で\n組合せ妥当性検証]
VAL --> DEPS[依存検出\nVLAN_MEMBER / PORT_CHANNEL_MEMBER\n/ ACL / IP]
DEPS --> REMOVE[CONFIG_DB から依存削除]
REMOVE --> PORTREM[PORT エントリ削除]
PORTREM --> APPLY[新 PORT 追加\nlanes / speed / index 再計算]
APPLY --> ORCH[PortsOrch / SyncD]
ORCH --> SAI[(SAI port create/remove)]
主要要素1:
platform.json: 各 cage の supported breakout modes(1x100G/2x50G/4x25G/4x10G等)hwsku.json: 既定 breakoutBREAKOUT_CFGテーブル: 現状の breakout 構成- 依存解決: 削除対象 port を参照する設定は CLI 側 /
db_migratorが事前削除
--force¶
依存設定が残っている時に --force で依存削除と breakout 変更を一気に行う。整合性確認後の運用変更で利用。
3. CONFIG_DB / CLI¶
| Table | 説明 |
|---|---|
PORT |
lanes / speed / index / alias |
BREAKOUT_CFG |
現行 breakout モード |
| Command | 用途 |
|---|---|
show interfaces breakout |
利用可能 mode と現在設定 |
config interface breakout <port> <mode> |
breakout 変更 |
config interface breakout <port> <mode> -f |
force |
4. 制限事項と干渉する機能¶
- 対応 platform のみ:
platform.jsonに modes 記載が必要 - 依存設定の自動再生は無し: 削除はするが再構築はユーザ責任
- link 一時断: SAI port create/remove のため link が切れる
- fabric port など特殊 port には適用しない
- port-profile-init / fast-link-up: port 起動シーケンスと整合が要る
- media-based-port-settings: SI 設定と連携
- multi-asic / single-json: per-asic で breakout を扱う場合の整合
- CMIS / ZR: ZR は固定 application-select で breakout 自由度低
5. トラブルシューティング¶
- 変更が拒否される →
platform.jsonの supported modes、依存設定の有無 - 一部 port だけ up しない → 物理 lane mapping、SI 設定、ASIC 側 lane 割当
- 関連設定が消えた → 依存解決で削除済み。再投入が必要
コマンド例¶
dynamic port breakout の状態を確認する。
show interfaces breakout current-mode
config interface breakout Ethernet0 '4x25G'
redis-cli -n 4 hgetall 'BREAKOUT_CFG|Ethernet0'
show platform summary
関連 Topics 章¶
- 14-platform-port-optics: port profile / lane / media SI / CMIS との結線
- 06-l2-vlan-lag: VLAN_MEMBER / PORT_CHANNEL_MEMBER の依存解決対象
制限事項¶
- breakout 可能なポート組合せは platform.json の
BRKOUT_CFGに定義された範囲に限られ、HLD 記述よりも実機サポート範囲が狭い場合がある。 - breakout 実行時は対象ポートが一時的に down し、隣接機器の LLDP / LAG メンバーシップが flap する点を運用で考慮する。
- 動的 breakout 中に CONFIG_DB が中間状態となるため、並行して
config saveを実行すると不整合な config が保存される。