Quelle est la différence entre les champs «errors:» «drop:» «overruns:» et «frame:» dans la sortie des paquets ifconfig RX?

11

Quelqu'un peut-il expliquer la différence entre les différents RX packetschamps de ifconfigsortie?

Par exemple, disons que je cours ifconfiget que je vois ce qui suit:

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 

Quelle est la différence entre errors: dropped: overrunsetframe:

Ma supposition à ce stade (basée sur une vague recherche sur Google) est que cela frame:concerne spécifiquement les échecs CRC lorsque le nic analyse les trames entrantes et c'est errors:une catégorie générique plus large. Là encore ... si tel était le cas, je m'attendrais à ce que ces deux champs affichent des nombres.

Mike B
la source

Réponses:

17

Cette information est mal documentée. Je vais vous dire ce que je comprends de mon expérience.

  • frame ne compte que les trames mal alignées, cela signifie des trames dont la longueur n'est pas divisible par 8. En raison de cette longueur, ce n'est pas une trame valide et elle est simplement jetée.

  • Pendant ce temps, errorscompte les erreurs CRC, les trames trop courtes et les trames trop longues.

  • overruns compte les moments où il y a des dépassements FIFO, causés par la vitesse à laquelle le tampon est plein et le noyau n'est pas en mesure de le vider.

  • Enfin, droppedcompte des éléments comme les balises VLAN involontaires ou la réception de trames IPv6 lorsque l'interface n'est pas configurée pour IPv6.

jcbermu
la source
Merci. J'ai trouvé un article de blog avec des résultats similaires. blog.hyfather.com/blog/2013/03/04/ifconfig
Mike B
Comment avez-vous compris cela, où sont vos sources? Je suis curieux parce que je cherche moi-même ces réponses et ne semble pas pouvoir les trouver ailleurs que sur des blogs ou des articles comme celui-ci. Des pages de manuel ou de la documentation officielle?
mdo123
8

Je sais que c'est une question vieille d'un an, mais c'est la première sur Google, alors je peux peut-être y ajouter 5 cents.

D'abord, je n'étais pas au courant de cette règle mod 8 sur le champ frame ... Est-ce une règle de pilote ou une règle de noyau?

Dans la petite expérience que j'ai, ces chiffres sont assez génériques et plus d'informations peuvent être obtenues auprès de ethtool(si le pilote le prend en charge) ex: c'est de la watchcommande.

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 

Selon le pilote, il y aura différents champs dans ethtoolet les ifconfigchamps peuvent également pointer vers des cadres sous-dimensionnés / surdimensionnés.

Si votre carte réseau et votre pilote le prennent en charge, vous pouvez (ou devriez) faire 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

afin d'obtenir plus d'informations (activez l'affichage des informations dans ethtool). J'utilise le pilote macb ici ... alors vérifiez ethtoolvotre pilote.

ethtool -i eth1

C'est ce qui m'aide à comprendre généralement ce qui se passe.

Parfois, il n'y a pas d'erreurs mais les paquets sont corrompus ... alors c'est plus un problème PHYsical ou de pilote ... et parfois les renifleurs montrent que tout est correct mais il y a un problème après qu'il arrive au pilote / noyau (c'est le cas ci-dessus) réellement).

Vous pouvez en obtenir d'autres netstat -s, ou si vous les mettez dans un script (pour les petits systèmes embarqué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

car netstat -spourrait ne pas être disponible.

Tomasz Janicki
la source
1
Merci pour l' ethtool -S
avertissement