Hallo,
auf einem STM32 läuft der Lwip Stack im Standalone Betrieb. Soweit
funktioniert alles prima. Was mir aufgefallen ist, dass kein ARP request
beim Power On gesendet wird. Was könnte getan werden, damit der
Mikrocontroller beim Power On eine ARP request sendet?
Danke im Voraus.
Guten Morgen,
ich benutzt auf meinem Device eine feste IP-Adresse. Müsste trotzdem
nicht beim Power On ein ARP request gesendet werden? Wie wird auf dem
LWIP Stack ein ARP request ausgelöst?
leo schrieb:> Was könnte getan werden, damit der Mikrocontroller beim Power On eine ARP> request sendet?
Wohin soll er den denn schicken? Mit einem ARP-Request fragst du einen
anderen Teilmehmer, wie die MAC-Adresse zu seiner IP ist, damit du ihm
was senden kannst. Solange du niemandem was sendest, gibt's auch
niemanden, von dem du die MAC-Adresse erfahren müßtest.
leo schrieb:> Ok, ich möchte ein UDP Packet mit einer IP-Adresse an einen Teilnehmer> senden. Da müsste doch mit oder ohne DHCP ein ARP request gesendet> werden.
Nö, der Sender erwartet, dass es bei dem Empfänger ankommt. Für die
IP/MAC Auflösung ist dann dein Router zuständig.
leo schrieb:> Ok, ich möchte ein UDP Packet mit einer IP-Adresse an einen Teilnehmer> senden. Da müsste doch mit oder ohne DHCP ein ARP request gesendet> werden.
Ja. Das hat dann aber nicht mit dem Power-On zu tun, sondern mit dem
Senden des Pakets. Kommt da denn auch kein ARP-Request?
♪Geist schrieb:> leo schrieb:>> Ok, ich möchte ein UDP Packet mit einer IP-Adresse an einen Teilnehmer>> senden. Da müsste doch mit oder ohne DHCP ein ARP request gesendet>> werden.>> Nö, der Sender erwartet, dass es bei dem Empfänger ankommt.
Und wohin sendet er das Paket, wenn er die MAC-Adresse des Empfängers
nicht kennt?
> Für die IP/MAC Auflösung ist dann dein Router zuständig.
Aber nur wenn das Ziel in einem anderen Subnetz liegt. Und selbst dann
braucht der Sender die MAC-Adresse des Routers.
Um ARP sollte sich LwIP selbst kümmern. Wenn ein Paket an einen
Empfänger geschickt werden soll, braucht der Stack die MAC Adresse.
Sonst kann er den Ethernet Header nicht ausfüllen. Also wird im ARP
Cache nachgesehen ob sie schon drinsteht. Falls nicht, geht ein Request
raus.
Ist das LWIP_ARP Makro lwipopts.h vielleicht 0 und ARP damit gar nicht
drin?
Mit diesem code funktioniert das UDP-senden bei U.Radig. Das müsste bei
anderen Webservern genauso ablaufen:
Über arprequest die Dest-MAC feststellen und das UDP-Paket genau dahin
schicken.
leo schrieb:> Ok, ich möchte ein UDP Packet mit einer IP-Adresse an einen Teilnehmer> senden. Da müsste doch mit oder ohne DHCP ein ARP request gesendet> werden.
Welche lwip Version?
Ist LWIP_ARP auf 1 definiert?
netif->output = etharp_output gesetzt?
lwip sendet einen gratuitous ARP wenn der linkauf UP gesetzt wird.
Danach immer dann, wenn im eigenen ARP Cache die MAC Adresse des
Empfängers nicht mehr zu finden ist.
Gruß Martin