Qual è la differenza tra i campi "errori:" "rilasciati:" "sovraccarico:" e "frame:" nell'output dei pacchetti ifconfig RX?


11

Qualcuno può approfondire la differenza tra i vari RX packetscampi ifconfignell'output?

Ad esempio, diciamo che corro ifconfige vedo quanto segue:

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 

Qual è la differenza tra errors: dropped: overrunseframe:

La mia ipotesi a questo punto (basata su alcuni vaghi googling) è che frame:riguarda specificamente gli errori CRC quando il nic analizza i frame in arrivo e che errors:è una categoria generica più ampia. Poi di nuovo ... Se così fosse, mi aspetterei che entrambi i campi mostrino i numeri.

Risposte:


17

Tale informazione è scarsamente documentata. Ti dirò quello che ho capito dalla mia esperienza.

  • frame conta solo frame disallineati, significa frame con una lunghezza non divisibile per 8. A causa di tale lunghezza non è un frame valido e viene semplicemente scartato.

  • Nel frattempo errorsconta errori CRC, frame troppo corti e frame troppo lunghi.

  • overruns conta le volte in cui si verificano sovraccarichi FIFO, causati dalla velocità con cui il buffer si riempie e il kernel non è in grado di svuotarlo.

  • Alla fine droppedconta cose come tag VLAN non intenzionali o ricezione di frame IPv6 quando l'interfaccia non è configurata per IPv6.


Grazie. Ho trovato post sul blog con risultati simili. blog.hyfather.com/blog/2013/03/04/ifconfig
Mike B,

Come l'hai capito, dove sono le tue fonti? Sono curioso perché sto cercando queste risposte da solo e non riesco a trovarle altro che blog o post come questo. Qualche pagina man o documentazione ufficiale?
mdo123,

8

So che questa è una domanda di 1 anno, ma è la prima su Google, quindi forse posso aggiungere 5 centesimi ad essa.

Innanzitutto non ero a conoscenza di questa regola mod 8 sul campo del frame ... È una regola del driver o una regola del kernel?

Nella poca esperienza che ho, questi numeri sono abbastanza generici e ulteriori informazioni possono essere ottenute da ethtool(se il driver lo supporta) es: questo è da watchcomando.

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 

A seconda del driver, ci saranno diversi campi ethtoole i ifconfigcampi possono puntare anche a frame di dimensioni inferiori o grandi.

Se la tua scheda di rete e driver lo supportano puoi (o dovresti) fare es:

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

per ottenere maggiori informazioni (abilitare la visualizzazione delle informazioni in ethtool). Sto usando il driver macb qui ... quindi controlla il ethtooltuo driver.

ethtool -i eth1

Questo è ciò che mi aiuta a capire di solito cosa sta succedendo.

A volte non ci sono errori ma i pacchetti sono danneggiati ... quindi è più un problema di PHYsical o di driver ... e a volte gli sniffer mostrano che tutto è corretto ma c'è un problema dopo che arriva al driver / kernel (questo è il caso sopra in realtà).

Alcuni altri possono essere ottenuti da netstat -s, o se lo metti in uno script (per piccoli sistemi integrati):

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

poiché netstat -spotrebbe non essere disponibile.


1
Grazie per l'heads-up suethtool -S
kostix il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.