Яка різниця між полями "помилки:" "скинуто:" "перевитрати:" та "кадр:" у вихідних пакетах ifconfig RX?


11

Може хтось, будь ласка, детальніше розглянути різницю між різними 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:конкретно стосується відмов CRC, коли nic аналізує вхідні кадри, і errors:це більш широка загальна категорія. Потім знову ... якби це було так, я б очікував, що обидва ці поля покажуть цифри.

Відповіді:


17

Ця інформація погано задокументована. Я скажу вам, що я розумію зі свого досвіду.

  • frame нараховує лише нерівні кадри, це означає, що кадри довжиною не поділяються на 8. Через цю довжину не є дійсним кадром, і він просто відкидається.

  • Тим часом errorsрахує помилки CRC, занадто короткі та занадто довгі кадри.

  • overruns підраховує, що часи, коли відбувається перевищення FIFO, викликане швидкістю, з якою буфер заповнюється, і ядро ​​не може його випорожнити.

  • Нарешті, droppedпідраховує такі речі, як ненавмисні теги VLAN або отримання кадрів IPv6, коли інтерфейс не налаштований для IPv6.


Дякую. Я знайшов допис у блозі з подібними висновками. blog.hyfather.com/blog/2013/03/04/ifconfig
Майк Б

Як ти це зрозумів, де твої джерела? Мені цікаво, бо я сам шукаю ці відповіді і не можу знайти їх ніде, окрім блогів чи публікацій, таких як ця. Будь-яка сторінка чи офіційна документація?
mdo123

8

Я знаю, що це питання на 1 рік, але це 1-е місце в Google, тому, можливо, я можу додати до нього 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поля також можуть вказувати на нерозмірні / негабаритні кадри.

Якщо ваш драйвер NIC та драйвер підтримує його, ви можете (або повинні) зробити:

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

Це те, що допомагає мені зрозуміти, що зазвичай відбувається.

Іноді немає помилок, але пакети пошкоджені ... тоді це більше 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може бути недоступним.


1
Дякуємо за те, що підняли головуethtool -S
kostix
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.