Runbook: PortChannel メンバーで LACP が確立しない¶
実行前提
teammgrd 再起動や config portchannel member del/add は LACP 再ネゴシエーションをトリガーし、該当 PortChannel が一時的に down する。ECMP / MCLAG 経路がある場合は数百 ms ~数秒の通信断が出る。先に sudo cp /etc/sonic/config_db.json /etc/sonic/config_db.json.bak.$(date +%s) を取得し、対向側で「graceful な PortChannel drain」が可能かを確認すること。問題悪化時は backup を戻し config reload -y で復旧する。
症状¶
show interfaces portchannelでS(Selected) ではなくD(DOWN) /I(Individual) のままになるteamdctl <PortChannel> stateのrunner.aggregator.selectedがfalse- 片側のみ UP(LACP unidirectional)
想定原因(優先度順)¶
- 物理リンク oper down: メンバーポートが L1 で UP していない
- 対向側の LACP mode 不一致: 一方が
active/ 他方がoff(static) - speed / duplex mismatch: メンバーごとに速度が異なると LACP は member を eligible にしない
min_links未達: PORTCHANNEL のmin_linksを満たすメンバーが UP していない- teamd / teammgrd の異常:
teamd@<PortChannel>.serviceが crash ループ
切り分け手順¶
flowchart TD
A[LACP が established にならない] --> B{両端 mode = active?}
B -- No --> B1[lacp mode active に変更]
B -- Yes --> C{member speed/MTU/duplex 一致?}
C -- No --> C1[メンバー設定を揃える]
C -- Yes --> D{teamd 動作 / partner key 一致?}
D -- No --> D1[teamd ログで partner SystemID/Key 確認]
D -- Yes --> E[ASIC LAG bind 状態を確認]
確認コマンド¶
1. メンバーポートの L1 状態¶
- 期待: 全メンバーが
up/up、PortChannel の Protocol がLACP(A)(Up) - 異常: メンバーが down → SFP / FEC を確認(fec-errors.md)
2. teamd の生の状態¶
- 期待:
setup.runner_name = lacp、各 port のselected: true - 異常:
selected: falseで reason 表示 → speed mismatch / system_id 同一 等
3. 対向側との LACP PDU 観測¶
- 期待: 双方向に LACPDU が 1 秒間隔(fast)または 30 秒間隔(slow)で流れる
- 異常: 片方向のみ → 対向側のポートチャネル設定確認
4. CONFIG_DB の整合¶
sonic-db-cli CONFIG_DB hgetall "PORTCHANNEL|PortChannel0001"
sonic-db-cli CONFIG_DB keys "PORTCHANNEL_MEMBER|PortChannel0001|*"
- 期待:
min_linksを満たすメンバー数が登録されている - 異常: メンバーが想定数より少ない →
config portchannel member addで追加
5. teammgrd ログ¶
対処方法¶
- speed mismatch:
config interface speed Ethernet0 <speed>で揃える - LACP mode 不一致: 対向と協調し
mode activeで揃える min_linksの見直し:config portchannel <name> --min-links <N>- teamd crash:
sudo systemctl restart teamd@PortChannel0001
関連ページ¶
引用元¶
-
sonic-net/sonic-swss @ 4305596 — cfgmgr/teammgr.cpp ↩
-
sonic-net/sonic-utilities @ 39732bceb — show interfaces portchannel ↩