MUX_CABLE テーブル¶
概要¶
Dual-ToR (active-active / active-standby) 構成で各 server-facing port に紐付く mux cable の状態と接続先サーバ情報を保持する1。linkmgrd (docker-mux) と orchagent の MuxOrch が CONFIG_DB を購読する。
データフロー (自動生成)¶
flowchart LR
CDB[("CONFIG_DB<br/>MUX_CABLE")]
DM["MuxOrch"]
CDB --> DM
SAI["SAI<br/>sai_neighbor_api"]
DM --> SAI
凡例
CONFIG_DB から SAI までの典型経路を docs/reference/config-db-orch-map.md から機械生成したミニ図。詳細・例外は本ページ本文と対応表を参照。
key 構造¶
<ifname> は PORT.name への leafref。
主要フィールド¶
| フィールド | 型 | 既定 | 説明 |
|---|---|---|---|
cable_type |
enum active-active/active-standby |
active-standby |
DualToR ケーブル種別 |
prober_type |
enum hardware/software |
software |
linkmgrd の ICMP prober モード |
neighbor_mode |
enum prefix-route/host-route |
host-route |
MUX neighbor 経路モード |
server_ipv4 |
ipv4-prefix | - | サーバ IPv4 アドレス |
server_ipv6 |
ipv6-prefix | - | サーバ IPv6 アドレス |
soc_ipv4 |
ipv4-prefix | - | SoC IPv4 (active-active 限定) |
soc_ipv6 |
ipv6-prefix | - | SoC IPv6 (active-active 限定) |
state |
enum auto/manual/detach/active/standby |
auto |
MUX 状態。auto は自動 failover |
購読者¶
linkmgrd(docker-mux): ICMP prober を駆動してstateを更新、MUX_CABLE_TABLE(APPL_DB) とSTATE_DB反映orchagentのMuxOrch: SAI tunnel encap / route programming で active/standby 切替
関連 CONFIG_DB / YANG / CLI¶
- 関連 CONFIG_DB:
PEER_SWITCH、TUNNEL(DualToR の MuxTunnel0)、PORT - 関連 CLI:
config muxcable mode/active/standby/auto、show muxcable - 関連 YANG:
sonic-mux-cable、sonic-tunnel、sonic-peer-switch
関連リファレンス¶
引用元¶
関連 Topics¶
運用ヒント¶
典型値¶
- key 形式:
MUX_CABLE|Ethernet0(dual-ToR の Active-Standby 用)。 state:auto/active/standby/manual。server_ipv4/server_ipv6: ぶら下がるサーバ IP。soc_ipv4: SmartCable SoC IP。
よくある誤設定¶
state: manualのまま放置すると linkmgrd が自動フェイルオーバしない。- ToR 間で
server_ipv4が不一致だと両 ToR が active になり tunnel ループ。
確認コマンド¶
sonic-db-cli CONFIG_DB hgetall 'MUX_CABLE|Ethernet0'
sonic-db-cli STATE_DB hgetall 'MUX_CABLE_TABLE|Ethernet0'
show mux status
show mux config
例外条件・特殊挙動¶
- cable_type が不正値 → YANG が拒否:
enum { active-active; active-standby; }のみ許可。デフォルトactive-standby。 - prober_type が不正値 → YANG が拒否:
enum { hardware; software; }のみ許可。デフォルトsoftware。 - neighbor_mode が不正値 → YANG が拒否:
enum { prefix-route; host-route; }のみ許可。デフォルトhost-route。 - state が不正値 → YANG が拒否:
enum { auto; manual; detach; active; standby; }のみ許可。デフォルトauto。autoモードではリンクプローバの判断で自動切替、manualは手動固定。 - server_ipv4 の形式不正 → YANG が拒否:
type inet:ipv4-prefix。不正な IPv4 プレフィックスは YANG バリデーションで拒否される。 - MUX_CABLE エントリが存在しない場合: linkmgrd は当該インターフェースに対して mux 管理を行わない。
値依存挙動マトリクス¶
| フィールド | 値 | 挙動 |
|---|---|---|
state |
auto (default) |
ICMP prober の判断で active/standby を自動決定。フェイルオーバも自動 |
state |
active |
当該 ToR を強制 active。linkmgrd が MUX を active 側に固定 |
state |
standby |
当該 ToR を強制 standby。トラフィックをピア ToR 経由に迂回 |
state |
manual |
自動フェイルオーバ無効。現在の active/standby 状態を維持 |
state |
detach |
active-active 専用。NIC から ToR を論理的に切り離し。active-standby では WARN + 無視 |
cable_type |
active-standby (default) |
ActiveStandby ステートマシン選択。ICMP prober で片系のみ active |
cable_type |
active-active |
ActiveActive ステートマシン選択。両 ToR が active。soc_ipv4 が必要 |
prober_type |
software (default) |
linkmgrd が ICMP パケットをソフトウェアで生成・送信 |
prober_type |
hardware |
xcvrd 経由でハードウェア MUX に probe を委譲 |
neighbor_mode |
host-route (default) |
サーバ IP を /32 (/128) host route として処理 |
neighbor_mode |
prefix-route |
サーバ IP を prefix-based route として処理。動的変更は muxorch で WARN (再起動が必要) |