मुझे पता है कि यह एक 1 साल पुराना सवाल है लेकिन यह Google पर 1 है इसलिए शायद मैं इसमें 5 सेंट जोड़ सकता हूं।
पहले मुझे फ्रेम फ़ील्ड पर इस मॉड 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
फ़ील्ड अंडरस्क्राइब / ओवरसाइज़्ड फ़्रेम को भी इंगित कर सकते हैं।
यदि आपका एनआईसी और ड्राइवर इसका समर्थन करता है, तो आप कर सकते हैं (या करना चाहिए):
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
अधिक जानकारी प्राप्त करने के लिए (जानकारी को एथलेट में दिखाने के लिए सक्षम होने दें)। मैं यहाँ macb ड्राइवर का उपयोग कर रहा हूँ ... इसलिए ethtool
अपने ड्राइवर की जाँच करें।
ethtool -i eth1
यह वही है जो मुझे यह समझने में मदद करता है कि आमतौर पर क्या हो रहा है।
कभी-कभी कोई त्रुटि नहीं होती है, लेकिन पैकेट दूषित होते हैं ... तो यह एक PHYsical या ड्राइवर की समस्या अधिक होती है ... और कभी-कभी स्निफ़र्स दिखाते हैं कि सब कुछ सही है, लेकिन ड्राइवर / कर्नेल के पास जाने के बाद एक समस्या है (यह ऊपर का मामला है) वास्तव में)।
कुछ और से प्राप्त किया जा सकता है 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
उपलब्ध नहीं हो सकता है।