Jaka jest różnica między polami „error:” „dropped:” „overruns:” i „frame:” w danych wyjściowych pakietów ifconfig RX?

11

Czy ktoś może wyjaśnić różnicę między różnymi RX packetspolami ifconfigwyjściowymi?

Załóżmy na przykład, że uruchamiam ifconfigi widzę następujące informacje:

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 

Jaka jest różnica między errors: dropped: overrunsiframe:

Domyślam się w tym momencie (w oparciu o pewne niejasne googling), że frame:dotyczy konkretnie awarii CRC, gdy nic analizuje przychodzące ramki i errors:jest to szersza kategoria ogólna. Z drugiej strony ... gdyby tak było, spodziewałbym się, że oba pola pokażą liczby.

Mike B.
źródło

Odpowiedzi:

17

Ta informacja jest słabo udokumentowana. Powiem ci, co rozumiem z mojego doświadczenia.

  • frame zlicza tylko niewyrównane klatki, oznacza to klatki o długości niepodzielnej przez 8. Ponieważ ta długość nie jest poprawną ramką i jest po prostu odrzucana.

  • Tymczasem errorsliczą się błędy CRC, zbyt krótkie i zbyt długie ramki.

  • overruns odlicza czasy, kiedy występują przekroczenia FIFO, spowodowane szybkością zapełniania się bufora i braku możliwości jego opróżnienia przez jądro.

  • Nareszcie droppedliczy takie rzeczy, jak niezamierzone tagi VLAN lub odbieranie ramek IPv6, gdy interfejs nie jest skonfigurowany dla IPv6.

jcbermu
źródło
Dzięki. Znalazłem post na blogu z podobnymi ustaleniami. blog.hyfather.com/blog/2013/03/04/ifconfig
Mike B
Jak to wymyśliłeś, gdzie są twoje źródła? Jestem ciekawy, ponieważ sam szukam tych odpowiedzi i nie mogę ich znaleźć nigdzie poza blogami lub postami takimi jak ten. Jakieś strony podręcznika lub oficjalna dokumentacja?
mdo123
8

Wiem, że to pytanie ma 1 rok, ale w Google jest pierwsze, więc może dodam do tego 5 centów.

Po pierwsze, nie byłem świadomy tej reguły mod 8 w polu ramki ... Czy jest to reguła sterownika czy reguła jądra?

Z mojego niewielkiego doświadczenia ethtoolwynika , że te liczby są dość ogólne i więcej informacji można uzyskać z (jeśli sterownik to obsługuje) np. Z watchpolecenia.

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 

W zależności od sterownika będą różne pola, ethtoola ifconfigpola mogą wskazywać również na ramki niewymiarowe / ponadwymiarowe.

Jeśli twoja karta sieciowa i sterownik ją obsługują, możesz (lub powinieneś) zrobić np .:

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

aby uzyskać więcej informacji (włącz opcję wyświetlania informacji w ettoolu). Używam tutaj sterownika Macb ... więc sprawdź ethtoolswój sterownik.

ethtool -i eth1

To pomaga mi zazwyczaj zrozumieć, co się dzieje.

Czasami nie ma błędów, ale pakiety są uszkodzone ... wtedy jest to bardziej problem fizyczny lub ze sterownikiem ... a czasem sniffery pokazują, że wszystko jest poprawne, ale jest problem po tym, jak dostanie się do sterownika / jądra (tak jest powyżej) tak właściwie).

Więcej można uzyskać z netstat -slub jeśli umieścisz to w skrypcie (dla małych systemów osadzonych):

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

ponieważ netstat -smoże być niedostępny.

Tomasz Janicki
źródło
1
Dzięki za heads-up naethtool -S
kostix