Linuxでパケットロスが発生する原因一覧(NIC・MTU・仮想環境)

  • URLをコピーしました!

Linuxサーバーで通信遅延やタイムアウトが発生し、 確認した結果「パケットロスが起きている」ことが分かった。

次に必要なのは、 「なぜパケットロスが発生しているのか」を正しく切り分けることです。

本記事では、 Linuxで発生するパケットロスの原因を NIC・MTU・仮想環境の観点から一覧で整理し、 それぞれの確認ポイントと解決の判断基準を解説します。

目次

結論:パケットロスの原因は1箇所ではない

パケットロスは、

  • OS設定
  • NIC・ドライバ
  • 仮想化レイヤー
  • ネットワーク機器

複数レイヤーの要因が重なって発生することがほとんどです。

原因① NICの処理能力不足・ドロップ

典型的な症状

  • トラフィック増加時に通信が不安定
  • CPU idle は高いのに通信が遅い

確認コマンド

ip -s link

見るべきポイント

  • RX dropped
  • TX dropped

これらが増え続けている場合、 NICキュー溢れや処理能力不足が疑われます。

解決の判断基準

トラフィック発生時でも dropped が増えなくなれば改善です。

原因② NICドライバ・ファームウェア問題

典型的な症状

  • 特定OS・特定カーネルでのみ発生
  • 再起動で一時的に改善

確認コマンド

ethtool -i eth0
ethtool -S eth0

判断ポイント

  • エラーカウンタが増加
  • 古いドライバ・FWを使用

この場合、OSより下のレイヤーに原因があります。

原因③ MTU不一致

なぜ起きるか

通信経路のどこかで MTU が小さいと、

  • フラグメント
  • ICMP blocked

によりパケットが破棄されます。

確認方法

ip link show

通信先との MTU が一致しているかを確認します。

解決の判断基準

MTUを揃えた後、

  • ping(DF指定)で疎通確認
  • アプリ通信が安定

すれば改善と判断できます。

原因④ 仮想環境(vSwitch・オーバーコミット)

よくある環境

  • VMware
  • KVM
  • クラウド環境

典型的な症状

  • 特定VMだけ通信が遅い
  • ホスト負荷に比例してロスが増える

原因例

  • vNICキュー不足
  • vSwitch輻輳
  • 帯域制限

この場合、ゲストOS側では異常が見えにくい点が特徴です。

原因⑤ TCP再送・輻輳制御

確認方法

netstat -s | grep -i retrans
ss -s

TCP再送が多発している場合、

  • 軽微なパケットロス
  • 遅延による再送

が発生しています。

原因⑥ ネットワーク機器(スイッチ・FW)

Linux側で問題が見えない場合、

  • ポートエラー
  • バッファ溢れ
  • FWのレート制限

といった外部要因を疑います。

原因と確認ポイントまとめ

原因主な確認点
NIC処理能力RX/TX dropped
ドライバ/FWethtool エラー
MTU不一致MTU設定・DF ping
仮想環境vSwitch/ホスト負荷
TCP再送retransmits

まとめ

Linuxでのパケットロスは、

  • NIC
  • MTU
  • 仮想化レイヤー

といった複数要因を切り分けて初めて解決できます。

「ネットワークが悪い」と決めつけず、 Linux上で事実を積み上げて判断することが重要です。

目次