Topics で読み物として読む
この HLD は実装詳細を含みます。機能の概念・設定・運用を読み物として読みたい場合は Topics 12 章: Multi-ASIC / VoQ / Chassis を参照。
裏取りステータス: code-verified
実装裏取り済み。switch_type=fabric: sonic-yang-models/yang-models/sonic-port.yang:75 / APP_FABRIC_PORT_TABLE_NAME: sonic-swss-common/common/schema.h:40,549 / FabricPortsOrch: sonic-swss/orchagent/fabricportsorch.{cpp,h} / show fabric: sonic-utilities/show/fabric.py + scripts/fabricstat + config/fabric.py。
VOQ シャーシの Fabric ポート(fabric ASIC 管理 / link monitoring)¶
何のための仕組みか¶
VOQ シャーシは forwarding ASIC(front panel を持つ NPU)を fabric ASIC(cell ベースの内部 fabric)で相互接続する。本 HLD は fabric ASIC を forwarding ASIC と同様に syncd / sairedis で管理し、fabric link の状態監視・統計収集・自動 isolation を行う枠組み1。
詳細は HLD
doc/voq/fabric.mdおよびdoc/voq/architecture.mdを参照。
どう構成するか¶
Fabric ASIC のコンテナ¶
forwarding ASIC と同じく fabric ASIC ごとに database / swss / syncd を立てる。front panel が無いので lldp / teamd / bgp は disable。SSI(Supervisor SONiC Instance)から chassis 内の fabric ASIC を一括管理する1。
DEVICE_METADATA で identify¶
SAI VOQ 仕様の推奨: fabric ASIC の switch_id は forwarding ASIC と重複させない1。
全体構造¶
flowchart LR
subgraph LC0[Line Card 0]
F0[forwarding ASIC<br/>front-panel ports]
end
subgraph LC1[Line Card 1]
F1[forwarding ASIC]
end
subgraph FAB[Fabric Card]
FA[fabric ASIC<br/>fabric ports only]
end
subgraph SSI[Supervisor SONiC Instance]
SS[swss-fabric / syncd-fabric]
FMG[fabric link monitor]
end
F0 ---|cells| FA
F1 ---|cells| FA
SS -- ASIC_DB --> FA
SS -- STATE_DB.FABRIC_PORT_TABLE --> FMG
FMG -->|threshold 超過| ISOLATE[link isolate]
何が見えるか(STATE_DB / counter)¶
FABRIC_PORT_TABLE¶
fabric port は chip 上の fabric port 番号で識別。周期 poll で書き込まれる1:
STATE_DB:FABRIC_PORT_TABLE:<fabric_port_name>
lane = <number>
status = "up" | "down"
# up なら remote peer の switch_id / fabric port を保持
# down なら reason (CRC / misaligned 等)
Fabric 専用 SAI counter¶
forwarding 用 port counter とは別に1:
SAI_PORT_STAT_IF_IN_OCTETS / IN_ERRORS / IN_FABRIC_DATA_UNITS
SAI_PORT_STAT_IF_IN_FEC_{CORRECTABLE,NOT_CORRECTABLE,SYMBOL}_ERRORS
SAI_PORT_STAT_IF_OUT_OCTETS / OUT_FABRIC_DATA_UNITS
「cell(fabric data unit)」が物理 packet と別粒度で計測される。
どう監視するか(Rev 3 以降)¶
Rev 3 以降、fabric link 単位で エラー率しきい値による自動 isolation が追加1:
IN_FEC_NOT_CORRECTABLE_FRAMES等を周期チェック- しきい値超過 → リンクを論理的に isolate(fabric から外す)
- リンクダウン時はダウン理由(CRC / misaligned)も STATE_DB に表記
- Rev 3.6 で persistent link flap 検出が追加(short up/down 繰り返しも isolate)
しきい値の具体値・判定窓は HLD で完全固定されておらず、実装側のチューニング余地あり。
Hotswap¶
Rev 1.1 で hotswap handling が明記1。fabric / line card の活線挿抜で fabric ASIC コンテナが動的に start/stop される。
📋 検証エビデンス: sonic-net/SONiC/doc/voq/fabric.md#L33-L40 (sha: 49bab5b5ff0e924f1ea52b3d9db0dfa4191a7c06)
出典:
sonic-net/SONiC/doc/voq/fabric.md#L33-L40 (sha: 49bab5b5ff0e924f1ea52b3d9db0dfa4191a7c06)
抜粋:
| 3.5 | Aug-12 2024 | Update fabric link monitoring behavior on link down |
| 3.6 | Oct-09 2025 | Update fabric link monitoring behavior on persistent link flap |
判断根拠: 継続的に改訂されている fabric link 監視機能の設計実績の根拠。
設定と CLI¶
| Table | Key | フィールド |
|---|---|---|
DEVICE_METADATA |
localhost |
switch_type=fabric, switch_id=<n> |
STATE_DB FABRIC_PORT_TABLE はランタイム生成。
| Command | 用途 |
|---|---|
show fabric counters [port \| queue \| reachability] |
fabric port 統計 |
show fabric port status |
fabric port 状態(up/down/peer 情報) |
clear fabric counters |
counter クリア |
制限事項¶
- VOQ chassis 構成専用。pizza-box には無関係
- fabric ASIC は front-panel を持たないため LLDP / BGP 等は disable 強制
- 自動 isolation のしきい値設計は HLD で完全固定されていない
- HLD は 25KB+ で改訂多数。フローや edge case は本文を参照
干渉する機能¶
- VOQ chassis architecture(
doc/voq/architecture.md): 本 HLD の前提 - multi-ASIC: container グルーピング機構を共有
- SSI: 制御平面はここに集約。fabric ASIC の swss/syncd は SSI 上
- port counter / show interfaces counters: forwarding 側と独立。CLI が分離されている
- warm-boot / fast-boot: fabric link 一時 down 時の cell loss / VOQ 制御は HLD でカバー
トラブルシューティング¶
show fabric port status
redis-cli -n 6 KEYS "FABRIC_PORT_TABLE:*" | head
redis-cli -n 6 HGETALL "FABRIC_PORT_TABLE:Fabric0"
show fabric counters port # FEC_NOT_CORRECTABLE が増えていないか
docker logs swss-fabric0 2>&1 | grep -i isolate # 自動 isolate されたか
関連 Topics¶
- Topics 12 Multi-ASIC / VOQ - architecture
- Topics 12 Multi-ASIC / VOQ - internals
- 関連 HLD: VOQ SONiC / Recirculation port (VOQ chassis) / Everflow on VOQ chassis