誰かがさまざまな違いを詳しく説明してくれませんかRX packets
ifconfig
出力のフィールド?
たとえば、私が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:
overruns
およびframe:
この時点での私の推測は(漠然としたグーグルに基づいて)frame:
は特に、nicが着信フレームを分析するときのCRC障害に関係し、errors:
は、より広範な一般的なカテゴリです。繰り返しますが、その場合は、両方のフィールドに数字が表示されると思います。
その情報は十分に文書化されていません。私の経験からわかったことをお伝えします。
frame
は、ミスアライメントされたフレームのみをカウントします。これは、8で割り切れない長さのフレームを意味します。その長さは有効なフレームではないため、単に破棄されます。
一方、errors
は、CRCエラー、短すぎるフレーム、長すぎるフレームをカウントします。
overruns
は、FIFO=オーバーランが発生した回数をカウントします。これは、バッファーがいっぱいになり、カーネルがバッファーを空にできない速度が原因で発生します。
最後に、dropped
は、意図しないVLANタグのようなもの、またはインターフェイスがIPv6用に構成されていない場合のIPv6フレームの受信などをカウントします。
私はこれが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
が利用できない可能性があるため。