インターフェイスでtcpdumpパケットがドロップされるのはなぜですか?

インターフェイスでtcpdumpパケットがドロップされるのはなぜですか?

Windows 7ホストでVirtual Boxを介してUbuntu 14.04を使用しています。 NICはUSB-Ethernetアダプタです。

これmantcpdumpの場合「カーネルパケット削除」の原因については説明しますが、「インタフェースパケット削除」の原因については説明しません。

インターフェイスがパケットをドロップする理由を説明できる人はいますか?それとも、パケット損失の原因をどのように知っていますか?

ベストアンサー1

指摘したように、「インターフェースによって破棄されたパケット」カウンターに関する文書には何もありません。したがって、ソースコードの破棄が必要です。

~からtcpdumpのソースコード、インターフェイスドロップカウンタは次から抽出されますstats.ps_ifdrop

if (stats.ps_ifdrop != 0) {
    if (!verbose)
        fputs(", ", stderr);
    else
        putc('\n', stderr);
    (void)fprintf(stderr, "%u packet%s dropped by interface\n",
        stats.ps_ifdrop, PLURAL_SUFFIX(stats.ps_ifdrop));

~から人間pcap_stats:

ps_ifdrop
    number of packets dropped by the network interface or its driver.

そしてからlibpcapのソースコード:

 *  "ps_ifdrop" is supported. It will return the number
 *  of drops the interface reports in /proc/net/dev,
 *  if that is available.

だからtcpdump "インタフェース消去パケット"カウンタは、キャプチャ/proc/net/dev中に破棄されたと記録されたパケットに対応します。tcpdump

フィールド意味/proc/dev/net説明ここ

下落をよりよく理解するために、まず次の統計を調べました。

  • ethtool -S <interface>
  • grep '' /sys/class/net/<interface>/statistics/*

おすすめ記事