rx_missed_errors Realtek NIC

Hast Du Probleme mit Hardware, die durch die anderen Foren nicht abgedeckt werden? Schau auch in den "Tipps und Tricks"-Bereich.
Antworten
reox
Beiträge: 2459
Registriert: 06.06.2006 22:09:47
Lizenz eigener Beiträge: MIT Lizenz

rx_missed_errors Realtek NIC

Beitrag von reox » 11.06.2022 12:42:33

Ich sehe auf meinem APU1 Board mit Realtek RTL8111E NICs immer wieder "missed pakets":

Code: Alles auswählen

$ ip -s -s link show dev eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
    link/ether 00:0d:b9:11:11:11 brd ff:ff:ff:ff:ff:ff
    RX: bytes  packets  errors  dropped missed  mcast
    1059778692987 875592329 0       0       42528   0
    RX errors: length   crc     frame   fifo    overrun
               0        0       0       0       0
    TX: bytes  packets  errors  dropped carrier collsns
    95525792516 317403777 0       0       0       0
    TX errors: aborted  fifo   window heartbeat transns
               0        0       0       0       4
Die Anzahl ist zwar im Gegensatz zur Anzahl an Paketen gering, aber dennoch wärs interessant ob das nicht einfach ein Konfigurationsproblem ist was gelöst werden kann.

Laut Kernel doku:
docs.kernel.org hat geschrieben:

Code: Alles auswählen

rx_missed_errors

    Count of packets missed by the host. Folded into the “drop” counter in /proc/net/dev.

    Counts number of packets dropped by the device due to lack of buffer space. This usually indicates that the host interface is slower than the network interface, or host is not keeping up with the receive packet rate.

    This statistic corresponds to hardware events and is not used on software devices.
Offenbar kann man mittels ethtool -g die ringbuffergröße ansehen bzw mit -G setzen - aber das scheint für die realtek NIC nicht zu gehen:

Code: Alles auswählen

# ethtool -g eth0
netlink error: Operation not supported
Infos:

Code: Alles auswählen

# ethtool -i eth0
driver: r8169
version: 5.10.0-11-amd64
firmware-version: rtl_nic/rtl8168e-2.fw
expansion-rom-version:
bus-info: 0000:01:00.0
supports-statistics: yes
supports-test: no
supports-eeprom-access: no
supports-register-dump: yes
supports-priv-flags: no

# dpkg -l firmware-realtek
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name             Version      Architecture Description
+++-================-============-============-==================================================
ii  firmware-realtek 20210315-3   all          Binary firmware for Realtek wired/wifi/BT adapters
Lässt sich das bei dem treiber gar nicht ändern? Liegts doch an der CPU? Wenn ich die Leitung mal auslaste, braucht die CPU schon 70-90% (was hauptsächlich auf die kappe von ksoftirqd geht - logisch, da die CPU das handling übernehmen muss):

Code: Alles auswählen

# dstat
You did not select any stats, using -cdngy by default.
--total-cpu-usage-- -dsk/total- -net/total- ---paging-- ---system--
usr sys idl wai stl| read  writ| recv  send|  in   out | int   csw
  2   0  97   0   0| 242k   23k|   0     0 |   0     0 | 383   303
  0   0 100   0   0|   0     0 |  10k   10k|   0     0 | 119    56
  1   1  99   0   0|   0    48k|2710B 1806B|   0     0 | 385   519
  0   0 100   0   0|   0     0 | 636B  760B|   0     0 |  85    44
  2   1  97   0   0|   0     0 |  12k   19k|   0     0 | 428   588
 77   1  23   0   0|   0     0 | 115M  115M|   0     0 |  28k  903    <--- Speedtest start
 76   1  24   0   0|   0     0 | 116M  116M|   0     0 |  28k  624
 77   1  23   0   0|   0     0 | 115M  115M|   0     0 |  28k  860
 74   0  26   0   0|   0     0 | 114M  114M|   0     0 |  28k  340
 76   1  24   0   0|   0     0 | 115M  115M|   0     0 |  27k  890
 91   2   7   0   0|   0     0 | 116M  117M|   0     0 |  33k  725
 77   2  21   0   0|   0     0 | 116M  116M|   0     0 |  30k  867
 77   0  23   0   0|   0     0 | 115M  115M|   0     0 |  29k  385
 77   0  23   0   0|   0     0 | 116M  116M|   0     0 |  29k  878
 78   0  22   0   0|   0     0 | 117M  117M|   0     0 |  29k  354

Benutzeravatar
unitra
Beiträge: 638
Registriert: 15.06.2002 21:09:38
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: 127.128.129.130

Re: rx_missed_errors Realtek NIC

Beitrag von unitra » 14.06.2022 20:51:28

Bei IPv4 gab es im letzten Jahrtausend, ein ICMP Packet das bei zu schneller Übertragung dem sendenden Knoten singaliseren konnte, die Übertragung anzupassen. Stichwort "Congestion Control". Das ICMP Paket hiess "Source Quench". Mit dem aufkommen der IP Packetfilter wurden bestimmte ICMP Messages per se nicht mehr zugelassen. "Source quench" ist deprecated.

https://datatracker.ietf.org/doc/html/rfc6633

Darüber hinaus ist es auch interessant zu wissen ob "push" oder "pull" verwendet wird. Das ist der Hintergrund und die Historie.

Congestion Control gibt es auch TCP aka "window size", bei UDP gibt es so etwas nicht. Congestion Control ist bei der Übertragung ist ein komplexes Thema, und kommt eigentlich nur zum Tragen bei den Endpunkten, Knoten, Server/Clients. Die Netzwerkkomponenten müssen im Gegensatz zu den Endpunkten die Daten nicht speichern, sondern "nur so schnell wie möglich" rein und raussenden, darüber hinaus sind die eingesetzen NPU's in den Routern (Network Processing Units) manchmal auch ASIC's genannt so gut, dass nichts mehr and die CPU durchdrings, sondern direkt auf dem dafür vorgesehenem IC auf dem kürzestem Weg, in Hardware verarbeitet wird.

RTL Chips in NIC's sind eher "billig" verglichen mit speziellen Netzwerkchips, für bestimmte Sachen gibt es HW offloading mechanismen wie z.B. TCP offloading. Darüber hinaus ist der Netzwerktraffic bei den Endpunkten "bursty". Bestimmte Security Protokolle machen es den billigen CPU's auch nicht sehr einfach.

Was ich damit sagen will. Wenn die CPU Überlastet ist und es kein Netzwerkprotokoll mehr gibt die Sendeübertragung zu steuern zwischen 2 Endpunkten, dann werden Packete gedroppt. Zusätzlich erreichen Endpunkte mit eingebauten NIC's meistens nicht die Line-Rate Full-Duplex wie es in den Spezifikationen beschrieben wird. Security wie SSH setzten da noch einen darauf.

Zum Schluss kann man hier noch passend https://datatracker.ietf.org/doc/html/rfc1925 zitieren:

Code: Alles auswählen

        (7a) (corollary). Good, Fast, Cheap: Pick any two (you can't
            have all three).

reox
Beiträge: 2459
Registriert: 06.06.2006 22:09:47
Lizenz eigener Beiträge: MIT Lizenz

Re: rx_missed_errors Realtek NIC

Beitrag von reox » 15.06.2022 08:41:42

unitra hat geschrieben: ↑ zum Beitrag ↑
14.06.2022 20:51:28
RTL Chips in NIC's sind eher "billig" verglichen mit speziellen Netzwerkchips, für bestimmte Sachen gibt es HW offloading mechanismen wie z.B. TCP offloading.
Das ist vollkommen richtig und deshalb haben die neuen pcengines boards auch einen Intel i210AT drauf und nicht die Realteks chips.

Ich hab auch noch diesen Benchmark gefunden: https://bsdrp.net/documentation/example ... ngines_apu
dort sieht man auch missed pakets und die Bandbreite kommt in etwa mit der hin die ich auch erreiche.
Evt wirds langsam Zeit für einen APU2...

Antworten