Active-Standby Dual ToR 設定と運用
このページは Active-Standby Dual ToR(概要ハブ) の派生ページで、CONFIG_DB / APP_DB / STATE_DB スキーマと CLI、トラブルシューティング に絞って整理する。概念は active-standby-dual-tor-concepts.md、内部実装は active-standby-dual-tor-internals.md、制限事項は active-standby-dual-tor-limitations.md を参照。
1. CONFIG_DB
| Table |
Key |
フィールド |
説明 |
MUX_LINKMGR |
LINK_PROBE |
interval_v4 / interval_v6 / timeout / suspend_timer / positive_signal_count / negative_signal_count |
linkmgrd チューニング |
localhost MUX_DRIVER |
- |
i2c_retry_count |
ycabled の MUX 失敗判定回数 |
MUX_CABLE |
<PORT> |
state ∈ {active, standby, auto, manual}, server_ipv4, server_ipv6 |
port 単位 mux 設定 |
PEER_SWITCH |
<switchname> |
address_ipv4 |
peer ToR の loopback |
TUNNEL |
MUX_TUNNEL |
tunnel_type=IPINIP, dst_ip, dscp_mode, encap_ecn_mode, ecn_mode, ttl_mode |
IPinIP tunnel 定義 |
DEVICE_METADATA |
localhost |
type=ToRRouter, peer_switch, subtype=DualTor |
dual ToR 識別 |
2. APP_DB / STATE_DB
| Table |
フィールド |
説明 |
APP_DB.MUX_CABLE |
state ∈ {active, standby, unknown} |
linkmgrd ↔ swss |
APP_DB.HW_MUX_CABLE |
state ∈ {active, standby} |
orchagent ↔ ycabled |
APP_DB.MUX_CABLE_COMMAND |
command ∈ {probe, link_status_peer} |
linkmgrd → ycabled |
APP_DB.MUX_CABLE_RESPONSE |
response, link_status_peer |
ycabled → linkmgrd |
STATE_DB.MUX_CABLE_TABLE |
state ∈ {active, standby, unknown, error} |
orchagent |
STATE_DB.HW_MUX_CABLE_TABLE |
state ∈ {active, standby, unknown} |
ycabled |
STATE_DB.MUX_LINKMGR_TABLE |
state ∈ {healthy, unhealthy, uninitialized} |
linkmgrd 合成 |
STATE_DB.MUX_METRICS_TABLE |
<app>_switch_<state>_start/end |
切替計測 |
STATE_DB.MUX_SWITCH_CAUSE |
cause, time |
最後の switchover 原因 |
STATE_DB.LINK_PROBE_STATS |
pck_loss_count, pck_expected_count 等 |
プローブ統計 |
3. CLI
| Command |
用途 |
config muxcable mode {active\|auto\|manual\|standby} {<port>\|all} [--json] |
mux モード切替 |
show muxcable config [<port>] [--json] |
設定状態 |
show muxcable status [<port>] [--json] |
動作状態(STATUS / HEALTH) |
config muxcable mode auto Ethernet4
config muxcable mode active Ethernet4
config muxcable mode auto all
config muxcable mode active の戻り値:
| RC |
出力 |
意味 |
| 100 |
{"Ethernet4":"OK"} |
既に active |
| 100 |
{"Ethernet4":"INPROGRESS"} |
切替中 |
| 0 / 1 |
- |
成功 / 失敗 |
4. トラブルシューティング
| 症状 |
最初に見る場所 |
HEALTH=UNHEALTHY |
MUX_LINKMGR_TABLE.state と LINK_PROBE_STATS.pck_loss_count |
| standby 側 server 宛 traffic が永続 black-hole |
NEIGH table の zero mac entry / tunnel route の有無 |
MUX_CABLE_TABLE.state=error(I2C ループ) |
i2c_retry_count 設定とハードウェア / cable 個体 |
| switchover に時間がかかる |
MUX_METRICS_TABLE の <app>_switch_active_* |
| IPv6 のみ切替で断 |
accept_untracked_na と arp_update の FAILED → INCOMPLETE 書き換え |
コマンド例
下記コマンドで MUX/ToR の状態と切替動作を確認できる。
# Dual ToR mux 状態と切替メトリクス
show mux status
show mux config
redis-cli -n 0 keys 'MUX_CABLE_TABLE:*'
redis-cli -n 6 hgetall 'MUX_LINKMGR_TABLE|Ethernet0'
redis-cli -n 6 hgetall 'LINK_PROBE_STATS|Ethernet0'
関連ページ
制限事項
- 詳細な制限の正典は別ページ: 設計上の制約は active-standby-dual-tor-limitations.md を参照。本ページでは運用面で意識すべき制限のみを抜粋する。
- I2C アクセスは順次:
MUX_CABLE の i2c_retry_count を増やしても、I2C はバス共有でシリアル化されるため、同時 mux 切替の並列度は限られる。短時間に多数の切替を起こすとレイテンシが伸びる。
config mux の即時反映なし: CLI による mux state 変更は MuxOrch / linkmgrd 経由のため、MUX_CABLE.state が反映されるまで数秒のラグがある。
show mux status の値は STATE_DB スナップショット: 切替中のレース観測のため瞬間値は揺れる。安定値を見るときは 1 〜 2 秒空けて再取得する運用が必要。
- runbook 推奨: 異常時のフロー切り分けは Dual-ToR 用 runbook (mux-state-flap, server-traffic-blackhole 等) を併用すること。CLI コマンド単独では切り分けきれないケースが多い。
引用元