FABRIC_PORT テーブル
概要
FABRIC_PORT テーブルは VOQ chassis におけるラインカード間ファブリックリンクの設定を CONFIG_DB に保持する。portsyncd / orchagent がファブリックポートの isolate / unisolate 状態を SAI 側に反映する。
データフロー (自動生成)
flowchart LR
CDB[("CONFIG_DB<br/>FABRIC_PORT")]
DM["fabricmgrd"]
CDB --> DM
APPDB[("APP_DB<br/>APP_FABRIC_MONITOR_PORT_TABLE")]
DM --> APPDB
SYNCD["syncd"]
APPDB --> SYNCD
凡例
CONFIG_DB から SAI までの典型経路を docs/reference/config-db-orch-map.md から機械生成したミニ図。詳細・例外は本ページ本文と対応表を参照。
key 構造
| キー |
型 |
説明 |
name |
string (1..128) |
ファブリックポート名 |
フィールド
| フィールド |
型 |
デフォルト |
説明 |
isolateStatus |
boolean_type |
False |
ポートのアイソレーション状態 |
alias |
string (1..128) |
— |
ファブリックポートのエイリアス |
lanes |
string (1..128) |
— (mandatory) |
レーン番号文字列 |
forceUnisolateStatus |
uint32 |
0 |
強制 unisolate のステータス値 |
値依存挙動マトリクス
isolateStatus (boolean_type: True/False, デフォルト False)
| 値 |
挙動 |
False (デフォルト) |
ファブリックポートが通常接続状態。FABRIC_MONITOR が自動制御 |
True |
fabricmgr が APPL_DB に isolateStatus=True を書き込み、syncd 経由で SAI がポートを fabric trunk から除外(fabricmgr.cpp:86-89) |
forceUnisolateStatus (uint32, デフォルト 0)
| 値 |
挙動 |
0 (デフォルト) |
通常の FABRIC_MONITOR 制御に委ねる |
| 0 以外 |
FABRIC_MONITOR による自動 isolate を上書きして強制 unisolate(緊急用途) |
lanes (string, mandatory)
| 値 |
挙動 |
| プラットフォーム固有のレーン文字列 |
SAI 側でポートを特定するために使用 |
| 未設定 |
YANG mandatory 違反で reject |
明示的な enum 制約なし(isolateStatus は boolean_type = "True"/"False" 文字列)。isolateStatus=True のまま FABRIC_MONITOR を disable にすると自動復帰がかからない。
制約
lanes は mandatory
isolateStatus の値は sonic-types:boolean_type(True/False 文字列)
購読者
orchagent の FabricPortOrch / ファブリック関連ロジック
fabricmgrd 系 daemon(プラットフォーム実装による)
関連 CONFIG_DB / YANG / CLI
- 関連 CONFIG_DB:
FABRIC_MONITOR、SYSTEM_PORT、CHASSIS_MODULE
- 関連 YANG:
sonic-fabric-port、sonic-fabric-monitor
- 関連 CLI:
config fabric、show fabric
関連リファレンス
引用元
関連ページ
運用ヒント
典型値
- key 形式:
FABRIC_PORT|<Fabric>。
admin_status: up、isolate_status: False、lanes: プラットフォーム既定値。
よくある誤設定
- isolate_status=True のままにすると VOQ chassis 内で fabric リンクが trunk から外れたまま戻らない。
確認コマンド
sonic-db-cli CONFIG_DB keys 'FABRIC_PORT|*'
show fabric counters port
例外条件・特殊挙動
| consumer |
条件 |
挙動 |
| orchagent |
SAI_SWITCH_ATTR_NUMBER_OF_FABRIC_PORTS 取得失敗 |
FABRIC_PORT_ERROR (0) を返し初期化失敗(fabricportsorch.cpp:179) |
| orchagent |
SAI_SWITCH_ATTR_FABRIC_PORT_LIST 取得失敗 |
throw runtime_error("FabricPortsOrch get port list failure") を送出、orchagent 異常終了(fabricportsorch.cpp:196) |
| orchagent |
ポートのレーン番号取得失敗 |
throw runtime_error("FabricPortsOrch get port lane failure") を送出(fabricportsorch.cpp:212) |
| orchagent |
キュー数・キューリスト取得失敗 |
throw runtime_error(...) を送出(fabricportsorch.cpp:280,296) |
| orchagent |
remote fabric port ID / remote port index 取得失敗 |
throw runtime_error(...) を送出(fabricportsorch.cpp:384,396) |
| orchagent |
CRC エラー率比較時に rxCells = 0 |
整数乗算比較でゼロ除算を回避し、エラーなしと判断(fabricportsorch.cpp:534-536) |
Evidence: sonic-swss orchagent/fabricportsorch.cpp:179-396,534-536