ifconfig RXパケット出力の「errors」、「dropped:」、「overruns:」、「frame:」フィールドの違いは何ですか?


11

誰かRX packetsifconfig出力のさまざまなフィールドの違いについて詳しく説明できますか?

たとえば、実行ifconfigして次のように表示するとします。

eth0      Link encap:Ethernet  HWaddr AA:BB:CC:DD:EE:FF  
          inet addr:1.1.1.1  Bcast:1.1.1.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:202723544 errors:0 dropped:4959 overruns:0 frame:37
          TX packets:158354057 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:4261083782 (3.9 GiB)  TX bytes:1224803677 (1.1 GiB)
          Interrupt:83 Memory:f6bf0000-f6c00000 

違いは何ですかerrors: dropped: overrunsframe:

この時点での私の推測(いくつかのあいまいなグーグルに基づく)はframe:、nicが着信フレームを分析するときのCRCの失敗に特に関係し、それerrors:はより広い一般的なカテゴリーです。繰り返しますが、その場合は、両方のフィールドに数字が表示されると思います。

回答:


17

その情報は十分に文書化されていません。私の経験からわかったことをお伝えします。

  • frame ミスアライメントされたフレームのみをカウントします。これは、8で割り切れない長さのフレームを意味します。その長さは有効なフレームではないため、単に破棄されます。

  • 一方errors、CRCエラー、短すぎるフレーム、長すぎるフレームをカウントします。

  • overruns バッファがいっぱいになり、カーネルがバッファを空にできない速度が原因でFIFOオーバーランが発生した回数をカウントします。

  • 最後に、dropped意図しないVLANタグや、インターフェースがIPv6用に構成されていない場合のIPv6フレームの受信などをカウントします。


ありがとう。似たような結果のブログ投稿を見つけました。blog.hyfather.com/blog/2013/03/04/ifconfig
マイクB

これをどのようにして見つけましたか?あなたの情報源はどこですか?私はこれらの回答を自分で探していて、ブログやこのような投稿以外のどこにも見つけられないようで、興味があります。manページや公式ドキュメントはありますか?
mdo123

8

私はこれが1年前の質問であることを知っていますが、Googleで最初なので、5セント追加することができます。

最初に、フレームフィールドのこのmod 8ルールに気付きませんでした...それはドライバールールですか、カーネルルールですか?

私が持っている少しの経験では、これらの数値は非常に一般的であり、より多くの情報がethtool(ドライバーがそれをサポートしている場合)から取得できますwatch。例:これはコマンドからです。

Every 1s: ethtool -S eth1 | grep rx_ && echo  && ifconfig eth1                                                   1970-01-01 00:21:07

 rx_octets: 12635134290
 rx_frames: 8488675
 rx_broadcast_frames: 103
 rx_multicast_frames: 0
 rx_pause_frames: 0
 rx_64_byte_frames: 113
 rx_65_127_byte_frames: 47
 rx_128_255_byte_frames: 186340
 rx_256_511_byte_frames: 1
 rx_512_1023_byte_frames: 0
 rx_1024_1518_byte_frames: 8302174
 rx_greater_than_1518_byte_frames: 0
 rx_undersized_frames: 0
 rx_oversize_frames: 0
 rx_jabbers: 0
 rx_frame_check_sequence_errors: 0
 rx_length_field_frame_errors: 0
 rx_symbol_errors: 0
 rx_alignment_errors: 0
 rx_resource_errors: 283
 rx_overruns: 132
 rx_ip_header_checksum_errors: 0
 rx_tcp_checksum_errors: 0
 rx_udp_checksum_errors: 0

eth1      Link encap:Ethernet  HWaddr AA:BB:CC:DD:20:16  
          inet addr:192.168.0.10  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::a8bb:ccff:fedd:2016/64 Scope:Link
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:8488675 errors:415 dropped:4 overruns:132 frame:283
          TX packets:647464 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:3892403548 (3.6 GiB)  TX bytes:62273943 (59.3 MiB)
          Interrupt:147 Base address:0xc000 

ドライバーに応じて、さまざまなフィールドがethtoolあり、 ifconfigフィールドは小さすぎる/大きすぎるフレームを指すこともあります。

NICとドライバーがサポートしている場合は、exを実行できます(または実行する必要があります)。

ifdown eth1 && modprobe -r macb && modprobe macb && ifup eth1 && ethtool -offload  eth1  rx off  tx off && ethtool -K eth1 gso off && ethtool --show-offload eth1

より多くの情報を取得するために(ethtoolに情報を表示できるようにします)。ここではmacbドライバーを使用しています...ドライバーを確認ethtoolしてください。

ethtool -i eth1

これは、通常何が起こっているのかを理解するのに役立ちます。

時々エラーはないがパケットは破損している...それは物理的またはドライバの問題である...そして時々スニファはすべてが正しいことを示しますが、ドライバ/カーネルに到達した後に問題があります(これは上記のケースです)実際)。

さらにいくつかをから取得しnetstat -sたり、これをスクリプトに組み込んだりすると(小さな組み込みシステムの場合):

awk '(f==0) { i=1; while ( i<=NF) {n[i] = $i; i++ }; f=1; next} (f==1){ i=2; while ( i<=NF){ printf "%s = %d\n", n[i], $i; i++}; f=0}'  /proc/net/netstat

以来netstat -sかもしれない使用できません。


1
ヘッドアップをありがとうethtool -S
kostix
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.