Ethernet-Karte Hänger

Technischer Support bei Problemen mit i-Telex sowie dessen Komponenten.

Moderator: FredSonnenrein

Benutzeravatar

Topic author
ProgBernie
Rank 10
Rank 10
Beiträge: 325
Registriert: Sa 27. Okt 2018, 17:51
Hauptanschluß: 898906 laeng d

Re: Ethernet-Karte Hänger

#21

Beitrag von ProgBernie »

Neue Erkenntnisse: Die Karte lässt sich reproduzierbar in den Zustand verbringen. Sie beantwortet testweise gesendete ICMP-Echo-Requests mit einer Payload bis zu 1468 Bytes, entsprechend 1510 Bytes Framelänge (plus 4 Byte FCS), zuverlässig, die ICMP-Echo-Replies haben dann eine Framelänge von 1514 Bytes.
Ab 1469 bis zu 1472 Bytes Payload (1511..1514 Bytes Frame plus 4 Byte FCS) werden Requests nicht mehr beantwortet und die Karte hängt sich manchmal auf (bei 1472 Bytes sehr oft).
Ab 1473 Bytes Payload entsprechend 2 Frames (Fragmented IP Protocol, 2 Frames mit 1514 und 35 Bytes da die MTU beim verwendeten Rechner auf 1500 steht) geht die Karte reproduzierbar in den Hänger mit der Anzeige "RAM-Fehler" über.

Damit wird auch klar, warum das Problem nicht ohne Traffic und bisher auch nicht bei nur internem Traffic im LAN auftritt: Es sendet intern keiner fragmentiert. Das kommt von außen (dann auf den Port 134). Dummerweise kann ich das aktuell nicht ohne weiteres unterbinden.

Ich habe mal den Wireshark-Trace mit den gefilterten Paketen angehängt, ein Dauerping mit Standard-Nutzdaten, einer mit dem Ping of death. Man sieht daß die Karte sogar noch Pings nach dem Todespaket beantwortet bevor sie stirbt:
itelex-kill-filtered.pcapng.zip
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Gruß Bernd
--
Fernschreibstelle Labenz
898906 laeng d

Benutzeravatar

detlef
Rank 12
Rank 12
Beiträge: 1028
Registriert: Do 28. Mär 2019, 09:10
Wohnort: Fronhausen (bei Marburg)
Hauptanschluß: 211230 dege d

Re: Ethernet-Karte Hänger

#22

Beitrag von detlef »

Das sieht nach einem Pufferüberlauf aus.
Gruß, Detlef

i-Telex: 211230 (T100Z), 96868 (T37)
Konferenzdienst: 11160 (de) / 11161 (en)
Auskunft 1987: 40140

Benutzeravatar

FredSonnenrein
Developer
Developer
Beiträge: 1259
Registriert: Fr 3. Jun 2016, 13:49
Wohnort: Braunschweig
Hauptanschluß: 8579924 hawe d

Re: Ethernet-Karte Hänger

#23

Beitrag von FredSonnenrein »

Danke für deine Mühen. Mit dem Dateianhang kann ich mangels Kenntnissen nichts anfangen. Aber mich interessiert sehr, warum dann ein RAM-Fehler angezeigt wird, ich vermute auch dass es kein RAM-Fehler ist, sondern das initialisieren des ENC28J60 schiefgeht.
Kannst du bitte mal den genauen Ablauf der LED der Ethernet-Karte nach dem Ping of death beschreiben?
Grüße,
Fred Sonnenrein, Braunschweig
i-Telex 952741 (Lo133), 531075 (Creed75), 8579924 (T100s), 792911 (T68d) oder 781272 (T100)
Bei Besetzt bitte 531002 versuchen.

Benutzeravatar

Topic author
ProgBernie
Rank 10
Rank 10
Beiträge: 325
Registriert: Sa 27. Okt 2018, 17:51
Hauptanschluß: 898906 laeng d

Re: Ethernet-Karte Hänger

#24

Beitrag von ProgBernie »

Ich vermute eher daß da arbiträr irgendwas direkt über den Stack angesprungen wird.
Ein schlechtes Video sagt mehr als eine gute Beschreibung:
20200701_112136.mp4
Sorry für die Schaukelei, in Seesternchenposition die rechte Hand mit dem Handy vors Rack halten und mit der linken ganz unten den Laptop bedienen...
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Gruß Bernd
--
Fernschreibstelle Labenz
898906 laeng d

Benutzeravatar

FredSonnenrein
Developer
Developer
Beiträge: 1259
Registriert: Fr 3. Jun 2016, 13:49
Wohnort: Braunschweig
Hauptanschluß: 8579924 hawe d

Re: Ethernet-Karte Hänger

#25

Beitrag von FredSonnenrein »

In der Tat merkwürdig, ein Reset nach Timeout käme entweder später und müsste mit blauer LED beginnen.
Grüße,
Fred Sonnenrein, Braunschweig
i-Telex 952741 (Lo133), 531075 (Creed75), 8579924 (T100s), 792911 (T68d) oder 781272 (T100)
Bei Besetzt bitte 531002 versuchen.

Benutzeravatar

Topic author
ProgBernie
Rank 10
Rank 10
Beiträge: 325
Registriert: Sa 27. Okt 2018, 17:51
Hauptanschluß: 898906 laeng d

Re: Ethernet-Karte Hänger

#26

Beitrag von ProgBernie »

Update: Auch mit Firmware 875 keine Besserung.
Gruß Bernd
--
Fernschreibstelle Labenz
898906 laeng d

Benutzeravatar

FredSonnenrein
Developer
Developer
Beiträge: 1259
Registriert: Fr 3. Jun 2016, 13:49
Wohnort: Braunschweig
Hauptanschluß: 8579924 hawe d

Re: Ethernet-Karte Hänger

#27

Beitrag von FredSonnenrein »

An den Ethernet / TCP-Stacks ist auch seit Beginn der Entwicklung fast nichts geändert worden. Leider ist das "Basisprojekt" OpenMCP vor etlichen Jahren "abgestorben". Daher werden neue Versionen keine Besserungen in deinem Problem bringen können.

Fangen wir mal weiter oben an... Was für eine Stromversorgung hast du? Kann es sein, dass die unter Umständen einknickt und Störungen verursacht?

Oder ein ganz anderer Ansatz: Nimm mal alles in deinem Heimnetz außer Betrieb, was nicht i-Telex ist. Kommen die Abstürze dann auch noch?
Grüße,
Fred Sonnenrein, Braunschweig
i-Telex 952741 (Lo133), 531075 (Creed75), 8579924 (T100s), 792911 (T68d) oder 781272 (T100)
Bei Besetzt bitte 531002 versuchen.

Benutzeravatar

BjoernS
Rank 4
Rank 4
Beiträge: 38
Registriert: Mi 6. Mai 2020, 21:25
Wohnort: Darmstadt
Hauptanschluß: 844767 twtr d

Github

#28

Beitrag von BjoernS »

(Nebenbei: Scheinbar hat der ursprüngliche Entwickler vor einem Jahr den letzten Stand von OpenMCP auf Github hochgeladen, unter GPL 2.0. Mit entsprechenden Kenntnissen der Architektur wäre ein Fork für i-Telex machbar.)
844767 twtr d

Benutzeravatar

FredSonnenrein
Developer
Developer
Beiträge: 1259
Registriert: Fr 3. Jun 2016, 13:49
Wohnort: Braunschweig
Hauptanschluß: 8579924 hawe d

Re: Ethernet-Karte Hänger

#29

Beitrag von FredSonnenrein »

Ui, das ist interessant, da werde ich mich mal einklinken.
Grüße,
Fred Sonnenrein, Braunschweig
i-Telex 952741 (Lo133), 531075 (Creed75), 8579924 (T100s), 792911 (T68d) oder 781272 (T100)
Bei Besetzt bitte 531002 versuchen.

Benutzeravatar

Topic author
ProgBernie
Rank 10
Rank 10
Beiträge: 325
Registriert: Sa 27. Okt 2018, 17:51
Hauptanschluß: 898906 laeng d

Re: Ethernet-Karte Hänger

#30

Beitrag von ProgBernie »

So, ich habe jetzt 2 Änderungen getestet:

1. Für die ICMP-Antwort wird der ursprünglich empfangene Frame modifiziert und wieder zum Versand gegeben. Dabei wurde übersehen, daß der Empfangsframe die Prüfsumme am Ende enthält, diese beim Senden aber vom Chip selber angehängt wird (Register MACON3 Bits PADCFG). Dadurch wurde der ICMP-Reply um 4 Bytes zu lang gesendet. Lustigerweise steht sogar an der Stelle im code der Kommentar "length - 4", aber der code zieht da keine 4 ab...
Mit der Änderung können nun ICMP-ECHO-Requests mit bis zu 1472 Byte Länge korrekt verarbeitet werden (bisher: 1468)
ICMP-Echo-requests mit 1473 Bytes Payload bringen die Karte weiterhin in den Orkus...

2. Soweit ich sehen kann werden fragmentierte Pakete mit mehreren Frames nicht in der Ethernet-Schicht gehandhabt, sondern müssten in tieferliegenden Schichten behandelt werden. Zumindest die Schichten IP und ICMP tun das nicht. Damit würde ein zu langer ICMP-Echo-request in 2 Frames eintrudeln, wobei nur der erste einen IP-Header hat und das zweite Fragment erst angehängt werden müsste, bevor es in der IP-Schicht weiterverarbeitet wird. Da beim ersten Fragment der IP-Header und der ICMP-Header korrekt sind, müsste das hier trotzdem funktionieren, der Reply hätte dann eine zu geringe Länge. Der zweite Frame würde irgendwelchen Unsinn enthalten und vermutlich sofort verworfen werden. Dennoch habe ich testweise eingebaut, daß Frames mit Fragmenten gleich verworfen werden (auch dies war in Kommentaren bereits vorgesehen).
Dennoch bringt ein ICMP-ECHO-Request mit mehreren Frames die Karte gleich wieder in den Abgrund.

Meine Überlegung geht jetzt noch in eine andere Richtung: Soweit ich sehe wird die Ethernet-Routine im Interrupt aufgerufen. Fragentierte Pakete werden aber vermutlich so schnell wie möglich nacheinander gesendet, möglicherweise back-to-back, lediglich durch Präambel und SFD getrennt. Damit könnte während der Interruptbearbeitung ein weiterer vom ENC28J60 generiert werden, zumal das zweite Fragment beliebig kurz sein kann. Keine Ahnung wie das gehandhabt wird und was da passieren kann.
Also Test: Floodping an die Karte senden. Mit der Defaultlänge funktioniert das relativ gut, bei größeren Längen rebootet die Karte schnell (allerdings ohne den Hänger). Scheint also nicht so ganz sauber zu laufen, packet loss wäre OK, reboot nicht.

Ein kurzer Vergleich von OpenMCP auf github zeigt zumindest an den beiden ersten Stellen keinen Unterschied, also zumindest der ICMP-Bug ist da ebenfalls drin. Ich sehe, es ist noch mehr zu tun...
Folgende Benutzer bedankten sich beim Autor ProgBernie für den Beitrag (Insgesamt 3):
cguentherFredSonnenreinBjoernS
Gruß Bernd
--
Fernschreibstelle Labenz
898906 laeng d

Antworten

Zurück zu „Technischer Support (nur i-Telex)“