Hallo,
für UDP Kommunikation auf einem Mikrocontroller wird der LWIP-Stack
eingesetzt. Folgendes Phänomen ist mir aufgefallen:
Der Mikrocontroller sowie zwei Rechner (in der gleichen Subnetz
Maske)sind an einem Switch verbunden. Wenn ich nun auf beiden Rechner
Ping permanent ausführe, dann werden die Ping-Antwortzeiten nach ca. 30
Sekunden deutlich schlechter (>200ms).
UDP Initialisierung:
Techniker schrieb:> Wenn ich nun auf beiden Rechner> Ping permanent ausführe, dann werden die Ping-Antwortzeiten nach ca. 30> Sekunden deutlich schlechter (>200ms).
Wohin geht der Ping jeweils?
Was sagt Wireshark?
Fragen über Fragen...
Folgendes ist mir dabei auch noch aufgefallen:
Sobald ich einen Ethernetstecker von einem PC an einem Switch
herausnehme und wieder anstecke wird die Ping Antwortzeiten deutlich
schlechter.
Techniker schrieb:> udp_connect(upcb, addr, port);
Ich verstehe nicht den tieferen Sinn eines "connect" in einer
CallBack-Routine (die ja aller Warscheinlichkeit nach auch
noch Interrupt-getrieben ist).
Üblicherwise wird man einen Connect einmal machen und dann
die Connection bestehen lassen, und nicht bei jedem kleinen
Furz öffnen und wieder schliessen..
Überhaupt wird sich auch die Nomenklatur als ungünstig erweisen
da UDP nicht über die Connection-Charakteritik verfügt wie TCP.
Hobbyprogrammierer schrieb:> Ich verstehe nicht den tieferen Sinn eines "connect" in einer> CallBack-Routine (die ja aller Warscheinlichkeit nach auch> noch Interrupt-getrieben ist).
Wenn so ein Connect mit Speicher-Allokation gemacht wird und
dann mit anderer Speicher-Allokation/-Deallokation im Programm
geschachtelt ist ergibt sich irgendwann eine Speicher-/Heap-
fragmentierung wo mir nicht mehr klar ist was passiert ....
Hallo,
ich vermute, dass Du da auf das Sägezahnproblem beim ETH PHY DMA Treiber
gestossen bist. Das zeigt sich darin, dass sämtliche Rx Netzwerkpakete
zwar ankommen, aber "periodisch angestossen."
Stelle mal den wireshark log rein. ICMP Pakete haben eine Sequenznummer,
so dass Du sehen kannst, ob Pakete tatsächlich komplett verloren gehen
oder nur verzögert auftreten.
Wenn das Problem bei einem "Neutronenpumpenbeschuss" (= mehrere schnelle
pings auf die Adresse von einem PC mit fastping o.ä.) weggeht, weisst es
ebenfalls darauf hin.
Ich habe das mal im lwip developer forum zur Diskussion gestellt, finde
es aber auf die Schnelle nicht.
Techniker schrieb:> Wie müsste die Callbackfunktion ohne connect Funktion implementiert> werden?
Ich weiss ja nicht mal warum du das machst, geschweige denn
kenne ich mit diesem bisschen Codeschnipsel was du überhaupt
vor hast.
Allein deine Fragestellung lässt mich stark daran zweifeln dass
du überhaupt weisst was du machst.
Aber ohne vollständiges Programm lässt sich hier nichts aussagen.
Eine eigene Frage?
Dieser Thread ist über 9 Jahre alt.
Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.