質問: 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)?前もって感謝します!
回答: 問題は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に渡して、パケットキャプチャバッファーのサイズを増やす必要があります。キャプチャファイルなしでも試して、キャプチャ率が向上するかどうかを確認してください。