Runbook: Interface MTU mismatch によるパケットドロップ¶
実行前提
config interface mtu <if> <N> は ASIC への即時反映で、当該 port を一瞬 reset する実装になっている SAI ベンダーが多い。L3 隣接 (BGP/OSPF) が flap する。事前に show interfaces status > /tmp/if.before を取り、変更後 show interfaces status で差分確認。問題発生時は元の MTU に戻して config save -y。
症状¶
- 大きい packet (>1500B) のみ落ちる
ping -s 1472 -M doが通り、ping -s 8000 -M doが通らない- BGP UPDATE が大きい場合のみ session reset
想定原因(優先度順)¶
- 両端 MTU 不一致: ローカル 9100、対向 1500 等
- VLAN / PortChannel の MTU が member より小さい: 上位論理 IF が L1 を絞る
- MPLS / VXLAN encapsulation オーバーヘッド未考慮: VTEP で +50B 越え
- PMTUD ブラックホール: 中間 ACL が ICMP
frag-neededを破棄
切り分け手順¶
flowchart TD
A[大きいパケットが落ちる / ping -s で失敗] --> B{両端 MTU 一致?}
B -- No --> B1[config interface mtu で揃える]
B -- Yes --> C{PortChannel メンバー mtu 一致?}
C -- No --> C1[LAG メンバー全てに同 MTU 設定]
C -- Yes --> D{VLAN/Vxlan の overhead 考慮?}
D -- No --> D1[overlay 用に +50/+54 増やす]
D -- Yes --> E[ASIC port MTU と sysctl を確認]
確認コマンド¶
1. 両端 MTU 比較¶
- 期待: 両端で同値
- SONiC default: 9100
2. PMTUD テスト¶
3. ASIC_DB 反映¶
4. counters¶
RX_ERR/RX_OVRの増加を確認
対処方法¶
- 両端を揃える:
sudo config interface mtu Ethernet0 9100を双方で実行 - VLAN / PortChannel:
sudo config interface mtu Vlan100 9100 - 保存:
sudo config save -y
確認¶
対処後の正常化を以下で裏取りする。
- 症状解消: 「症状」節で挙げた事象 (counter / log / state) が回復していること
- 再発監視: 数分〜数十分の間隔で同コマンドを再実行し、値がフラップしていないこと
- 副作用なし: 関連サブシステム (syslog /
show interfaces counters errors/show ip bgp summary等) に新規 error が出ていないこと - 永続化:
sudo config save -y済みでconfig_db.jsonに変更が反映されていること (恒久対処の場合)
短時間で再発する場合は「想定原因」リストの次候補に進む。
関連ページ¶
引用元¶
-
sonic-net/sonic-swss @ 4305596 — portsorch.cpp の MTU 反映 ↩
-
sonic-net/sonic-utilities @ 39732bceb — config interface mtu ↩