Runbook: Port が admin up なのに oper down のまま¶
HLD-only
portsorch / xcvrd / SAI の標準動作に基づく運用ノート。
症状¶
show interface status Ethernet0でAdmin = upだがOper = downconfig interface startup Ethernet0を発行しても変化なし- 対向ポートは別の機器で問題なく動作する
切り分けフロー¶
flowchart TD
A[admin up / oper down] --> B{xcvr presence?}
B -- No --> C[SFP / DAC を抜き差し、sfputil presence]
B -- Yes --> D{autoneg / speed / FEC が一致?}
D -- No --> E[asic-link-autoneg-mismatch.md]
D -- Yes --> F{ASIC_DB の oper_status?}
F -- down --> G[SAI / driver / lane 設定確認]
F -- up --> H[Linux kernel netdev / interface_relations 確認]
確認コマンド¶
# Admin/Oper、speed、FEC、type を一括
show interface status Ethernet0
# Transceiver の有無 / EEPROM
sudo sfputil show presence -p Ethernet0
sudo sfputil show eeprom -p Ethernet0 | head -40
# APPL_DB / ASIC_DB
sonic-db-cli APPL_DB hgetall "PORT_TABLE:Ethernet0"
sonic-db-cli ASIC_DB keys "ASIC_STATE:SAI_OBJECT_TYPE_PORT:*" | head
sonic-db-cli STATE_DB hgetall "PORT_TABLE|Ethernet0"
# orchagent / syncd のログ
docker logs swss 2>&1 | grep -iE "Ethernet0|portsorch" | tail -50
docker logs syncd 2>&1 | grep -iE "Ethernet0|SAI_PORT" | tail -50
# kernel 側
ip -d link show Ethernet0
ethtool Ethernet0
よくある原因¶
- Transceiver 未挿入 / EEPROM 異常 —
sfputil show presenceがNot present - speed / FEC / autoneg の不一致 — 25G で FEC 設定が片側 RS、片側 none など
- portsorch が CONFIG_DB を APPL_DB に反映できていない —
swsscontainer の異常 - lane / serdes 設定の platform.json バグ — port-breakout 後の設定残り
- SAI driver / FW のリンクトレーニング失敗 —
syncdログにlink training failed - kernel netdev は up だが ASIC 側で down — host-side のみ up となる multi-asic 構成の罠
portsorch は CONFIG_DB の PORT 変更を SAI 属性 (SAI_PORT_ATTR_ADMIN_STATE 等) に変換して syncd へ渡し、xcvrd は EEPROM 読出し結果を STATE_DB の TRANSCEIVER_INFO に書き戻す1。