web-dev-qa-db-ja.com

tcpdumpで「ドロップされたパケット」をキャプチャする方法

ネットワークのパフォーマンスに問題があります。 NIC E1000を使用してVMware Cloud ServerでUbuntu 16.04を使用していますが、ifconfigコマンドのセクションでいくつかのパケットがドロップされるのがわかります。

root@ubuntu:~# ifconfig ens192
ens192    Link encap:Ethernet  HWaddr 00:50:56:03:25:14  
          inet addr:192.16.1.100  Bcast:192.16.1.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:574749 errors:0 dropped:83 overruns:0 frame:0
          TX packets:76478 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:44109471 (44.1 MB)  TX bytes:19484534 (19.4 MB)

一部のパケットがドロップされただけですが、私のサーバーはリアルタイムのオンラインゲームを実行しているので、接続しているクライアントに影響を与えています。

私はGoogleで情報の調査と調査を行った後、バッファリング、最大ウィンドウサイズなどの構成ファイルを変更しようとしました。しかし、それでもパケットはドロップされます。

そこで、ドロップしたパケットをキャプチャして、パケットの種類を正確に分析したいと思います。

私はwiresharkで私の見解のためにこのキャプチャも試しました:

Sudo tcpdump -i ens192 -n -w /var/www/html/logs.pcap -C 1 -Z root

しかし、どのパケットがドロップされたかはわかりません。ドロップされたパケットはtcpdumpのフィルターに行く前に無視されると思います。

上記の「ドロップされたパケット」をキャプチャする方法を教えてください(ドロップ:8)?

前もって感謝します!

6
Joey

問題はtcpdump自体にある可能性があります。応答が十分に速くない場合、古いパケットは新しいパケットで上書きされます。つまり、それらは破棄されます。

各パケットのすべてのバイトをキャプチャする場合、カーネルのパケットキャプチャバッファがオーバーランするのは非常に簡単です。このオーバーランの症状は、パケットトレースプログラムがパケットをドロップしたことを報告することです。

Tcpdumpの場合、キャプチャを停止すると、キャプチャ、フィルタリング、およびドロップされたパケット数の概要が出力されます。例えば:

$ Sudo tcpdump -i en0 -w trace.pcap
tcpdump: listening on en0, link-type EN10MB (Ethernet), capture size 65535 bytes
^C
94 packets captured
177 packets received by filter
0 packets dropped by kernel

droppedカウントがゼロ以外の場合は、-Bオプションをtcpdumpに渡して、パケットキャプチャバッファーのサイズを増やす必要があります。キャプチャファイルなしでも試して、キャプチャ率が向上するかどうかを確認してください。

4
harrymc

あなたの質問は、リアルタイムパケットをキャプチャしてドロップするパケットを見つけようとするのではなく、前に戻って前のパケットがドロップした原因を見つけることに関係しているようです。後者の場合、 harrymcの回答 は、最終的には探しているものをキャプチャできるはずです。

戻ってそのインターフェイスで何が起こっているのかを調べるには、RX packets:574749 errors:0 dropped:83 overruns:0 frame:0に表示されるヘッダーが、基礎となるカウンターの要約にすぎないことを理解する必要があります。

私のコメント から、_ この回答ethtoolコマンド/パッケージを使用して、いくつかのカウンターを分析し、表示されるものを見つけることができるかどうかを確認することをお勧めします場違いの。
ethtool -S ens192

broadcomドライバーのソースファイル から、ファイル内のいくつかの個別の状況についてtp->rx_dropped++;がわかります。 12 これらの1つ以上(正確なNICおよび基になるドライバーに応じて)貢献ドロップされたパケットを引き起こしている可能性があるものに。

心を楽にするために、サーバーは上記の出力に基づいて受信したパケットの0.015%未満をドロップしています。ドロップ率/エラー率が1%を超えるまで、クライアントはサーバーの中断やジッターに気付くことはありません。それでも目立ちません。 TCPは、必要な再送信をすべて処理します。

2
Will.Beninger