Forum: Mikrocontroller und Digitale Elektronik Udp / Tcp frames "on the fly" verarbeiten


von Maximal (Gast)


Lesenswert?

Hallo Experten,

Ich bin auf der Suche nach einer Möglichkeit einen
Ethernet Frame in einen UC (waschl. Stm32)
einzulesen und dann über den 2 Netzwerk Anschluss
an den nächsten Teilnehmer zu senden.

Ich will damit einen Logger bauen der das Telegramm
Komplett aufzeichnen kann. Auch wenn es unglaublich klingt
Sind 10 MBit in Ordnung :-) aber mehr wären auch cool!
Primär Anwendung wäre hier der Modbus bzw. Diagnose.
Der Aufbau wäre dann sozusagen so:
 Master - > PHY - > uC - > PHY - > eigentlicher Teilnehmer
Der Aufbau ist vom Ethercat abgekupfert wobei die eben
Asics mit 2 Phy's und der Intelligenz haben und auch die Frames
Im durchlauf auslesen.

Kann man sowas mit Physical Layer transceiver machen?
Ich dachte an etwas wie 2 enc28j60 und einen STM32
Und das dann via DMA durchschaufeln.

Über Antworten würde ich mich sehr freuen,
Vorab vielen Dank!!
Grüße Max

von Derwildearmin (Gast)


Lesenswert?

Hallo,

da du nichts über dein eigentliches Ziel schreibst, schweife ich mal ein 
wenig ab. Wenn nur dein Ziel ist, Pakete mitzulesen, wäre ein „Mirror 
Port“ auf einem managbarem Switch einfacher :-) Wenn es unbedingt der uC 
sein soll, vergiss meine Antwort :-)

Lg

von Frank K. (fchk)


Lesenswert?

Mach es anders:

Die allermeisten Microcontroller brauchen noch einen extra PHY für 
Ethernet.

Jetzt schau Dir den hier an:

https://www.microchip.com/wwwproducts/en/LAN9354

Für den Microcontroller ist es ein PHY. Er wird genauso angeschlossen 
und funktioniert auch so. Es ist aber ein 3-Port-Switch, und zwar ein 
managebarer. Zwei Ports gehen an RJ45-Buchsen, der dritte Port ist das 
RMII an den Mikrocontroller. Damit kann der Baustein zum einen alle 
Pakete zwischen den beiden LAN-Ports automatisch an den jeweils anderen 
weiterreichen. Und zum anderen kann dieser Chip wie die meisten 
managebaren Switche Port Mirroring, d.h. er kann Pakete, die durch einen 
Port gehen, automatisch an einen weiteren Port ausleiten.

Jetzt weiß ich nicht, was Du mit den Paketen genau machen willst. Wenn 
das mehr als ein Hobby ist, kaufst Du das hier:

https://www.amazon.de/Dualcomm-1000Base-T-Gigabit-Ethernet-Network/dp/B004EWVFAY/ref=sr_1_2

Das geht auch für Gigabit Ethernet. Die duplizierten Pakete kannst DU 
dann an einem PC weiter verarbeiten.

Wenn Du das mit einem Mikrocontroller weiterverarbeiten willst, ohne 
groß basteln zu wollen, nimmst Du das hier:

Prozessorboard: 
https://www.microchip.com/DevelopmentTools/ProductDetails/PartNO/DM320007
LAN-Board (da ist der Vorgängerchip drauf, den kannst Du auch nehmen): 
https://www.microchip.com/DevelopmentTools/ProductDetails/AC320004-4
Basisboard: 
https://www.microchip.com/DevelopmentTools/ProductDetails/PartNO/DM320002

Damit hast Du dann bereits ein funktionierendes System mit 
funktionierender Software, das Du nachbauen und weiterentwickeln kannst.

fchk

von au weia (Gast)


Lesenswert?

Maximal schrieb:
> Ich dachte an etwas wie 2 enc28j60

Mit denen sicherlich nicht, denn man müsste jeden Frame mühselig
über SPI abholen und sein Protokoll beachten. Zudem ist die
Datenrate über SPI sicherlich zu stark eingeschränkt (ohne den
Grenzwert jetzt genau zu kennen).

von c-hater (Gast)


Lesenswert?

au weia schrieb:

> Mit denen sicherlich nicht, denn man müsste jeden Frame mühselig
> über SPI abholen und sein Protokoll beachten.

Und wo ist das Problem? Dass ein Paket eingegangen oder gesendet ist, 
kann er per INT-Pin melden, da bleibt nur recht wenig Overhead. Und den 
eigentlichen Paketinhalt kann man natürlich problemlos per DMA 
transferieren.

> Zudem ist die
> Datenrate über SPI sicherlich zu stark eingeschränkt (ohne den
> Grenzwert jetzt genau zu kennen).

20MHz maximaler SPI-Clock. Das langt absolut locker, um 10Mbit Ethernet 
zu behandeln. Da haben wohl Ingenieure drüber nachgedacht...

von Maximal (Gast)


Lesenswert?

Hallo,
Wow, das ging ja schnell.
@fhck danke für den Hinweis und den Link, der IC ist wirklich 
interessant Und bietet genau das nach dem ich gesucht habe!!!

@c-hater schön erklärt, den "Zufall" mit der SPI Geschwindigkeit hab ich 
nicht erkannt, ist aber einleuchtend. :-)

Jetzt hab ich erstmal Datenblatt Studium vor mir.

Nochmals vielen Dank für die Infos und die Antworten.

Grüße

von oerks (Gast)


Lesenswert?

Der Intel IXP425 haette z.B. 2 Netzwerkports.
Ist allerdings eher ein echtes Schwergewicht.
Der koennte aber auch 100 Mbit locker wegschreiben.

von Johannes (Gast)


Lesenswert?

Also wenn es dir wirklich nur um die Diagnose geht und nicht um die 
Bastelei:

Nimm einen Raspberry Pi mit einem zusätzlichen USB Ethernet Adapter. Auf 
dem mittels der bridge utils eine Ethernet Bridge erstellen, fertig.
Tut genau das was angefragt wurde, erlaubt auch Pakete auszuleiten oder 
zu filtern, schafft ziemlich sicher >>10MBit, und du hast auch gleich 
ein bisschen Rechenpower für komplexes Logging dabei.

von Achim M. (minifloat)


Lesenswert?

Finde schon interessant, mit welchen Kanonen hier auf Spatzen geschossen 
wird.

Tut es denn kein zusätzlicher Netzwerkanschluss am Rechner, der an einem 
Hub hängt? Die Prozessnachrichten werden einfach durch den Hub gejagt. 
Am Rechner kann man bequem alles mit Wireshark mitlesen.

Dafür würde ich mir nicht den Aufwand mit Zusatzhardware machen, die 
zudem ja auch erst mal entwickelt und debuggt werden muss. Am Ende fängt 
man an, die Zusatzhardware zu debuggen anstatt das zu entwickelnde 
Gerät.

mfg mf

von Frank K. (fchk)


Lesenswert?

Achim M. schrieb:

> Tut es denn kein zusätzlicher Netzwerkanschluss am Rechner, der an einem
> Hub hängt? Die Prozessnachrichten werden einfach durch den Hub gejagt.
> Am Rechner kann man bequem alles mit Wireshark mitlesen.

Richtige Hubs gibt es ja nicht mehr, und bei normalen, unmanaged 
Switches kommen die Pakete ja gar nicht mehr bei Dir vorbei, da brauchst 
Du schon einen Managed Switch mit Port Mirroring. Das ist die Lösung, 
die ich vorgeschlagen habe - entweder als Kaufware, als Bastelware oder 
als nackten Chip.

fchk

von Johannes (Gast)


Lesenswert?

Wie schon geschrieben geht das mit 30€ für einen RPi + USB NIC. Wenn man 
gleich 2 USB NICs drauf wirft (dann vermutlich ~35€), lassen sich die 
Daten sicherlich auch an einen angeschlossenen Rechner ausleiten.

von Irgend W. (Firma: egal) (irgendwer)


Lesenswert?

Johannes schrieb:
> Wie schon geschrieben geht das mit 30€ für einen RPi + USB NIC. Wenn man
> gleich 2 USB NICs drauf wirft (dann vermutlich ~35€), lassen sich die
> Daten sicherlich auch an einen angeschlossenen Rechner ausleiten.
Ja, klar man kann den Aufwand garantiert auch noch weiter in die Höhe 
treiben. Halt eine echte Hobby Lösung - größtmöglicher Aufwand für 
geringst möglichem nutzen:-)

Für knapp 20€ fix und fertig ganz und ganz ohne RPI gefrickel:
- 5 x 10/100/1000Mbps RJ45 Ports
- Layer2-Funktionen: Port Mirroring

https://www.tp-link.com/de/business-networking/easy-smart-switch/tl-sg105e/#specifications

https://geizhals.de/tp-link-tl-sg100-desktop-gigabit-easy-smart-switch-tl-sg105e-a1165963.html?hloc=de

oder:
https://geizhals.de/?cat=switchgi&xf=13086_4%7E658_Smart%7E659_RJ-45

von MaWin (Gast)


Lesenswert?

Maximal schrieb:
> Sind 10 MBit in Ordnung

Hmm, Geheimdienste machen das mit 10 GBit on the fly inklusive 
Protokolldecodierung, dezippen, Schlagwortanalyse und können 
modifizierte Pakete weiterleiten.

Das macht man mit FPGAs, tausenden davon.

Aber du scheinst ja Zeit zu haben., dann geht auch ein rPi oder PC.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.