カーネルがパケットを失うのはなぜですか?

カーネルがパケットを失うのはなぜですか?

私は+をtcpdump使わずに以下の完全な要約を得ました。CtrlC

579204 packets captured
579346 packets received by filter
142 packets dropped by kernel

「カーネルドロップパケット」とは何ですか?なぜこれが起こるのですか?

ベストアンサー1

~からtcpdump(1)(tcpdumpのマニュアルページ):

「カーネルによって破棄された」パケット(オペレーティングシステムがtcpdumpこの情報をアプリケーションに報告すると、バッファスペースが不足しているために実行中のオペレーティングシステムでパケットキャプチャメカニズムによって破棄されたパケットの数、それ以外の場合は0として報告されます。)。

いくつかの説明:

このtcpdump プログラムは、ネットワークインタフェースを通過する生のパケットをキャプチャします。コマンドラインで指定した規則に従ってパケットを解析してフィルタリングする必要があります。これには時間がかかるため、受信パケットを処理するためにバッファリング(キューイング)する必要があります。場合によっては、パケットが多すぎてバッファに格納されることがあります。ただし、処理可能なものよりも高速に保存されるため、最終的にバッファスペースが不足し、カーネルはバッファに空き容量があるまで他のすべてのパケットを破棄します。

-B--buffer-size次のように()オプションを使用してバッファサイズを増やすことができます。

tcpdump -B 4096 ....

または

tcpdump --buffer-size=4096 ...

サイズはキビバイト単位で指定されるため、上記の行ではバッファサイズを4MiBに設定します。

おすすめ記事