Udp / Tcp frames "on the fly" verarbeiten

Gast #6588138
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
Gast #6588166
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
#6588168
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
Gast #6588172
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).
Gast #6588194
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...
Gast #6588270
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
Gast #6588461
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.
#6593017
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
#6593032
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
Gast #6593198
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.
(Firma: egal) #6593277
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
Gast #6593313
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren