Hi there,
I'm looking for a protocol that is directly on top of Ethernet without TCP/IP. The goal is that an FPGA board can directly communicate with a Linux PC or and STM32 without the need of complete TCP/IP stack.<p>I was looking into TIPC [1] over Ethernet, but it seems also complex to implement in FPGA.<p>Do you know any suggestions?<p>[1]: http://tipc.io/
You can send raw packets with something like this [1] [2].<p>I imagine you want to test the approach is software before implementing it in an FPGA.<p>You can then construct Ethernet frames to be as simple as you like [3].<p>This question seems like what you might be trying to do [4].<p>[1] <a href="https://stackoverflow.com/questions/12229155/how-do-i-send-a-raw-ethernet-frame-in-python" rel="nofollow">https://stackoverflow.com/questions/12229155/how-do-i-send-a...</a><p>[2] <a href="https://stackoverflow.com/questions/57133295/how-can-i-listen-for-raw-ethernet-frames-in-vanilla-python-3" rel="nofollow">https://stackoverflow.com/questions/57133295/how-can-i-liste...</a><p>[3] <a href="https://en.wikipedia.org/wiki/Ethernet_frame" rel="nofollow">https://en.wikipedia.org/wiki/Ethernet_frame</a><p>[4] <a href="https://stackoverflow.com/questions/815758/simple-serial-point-to-point-communication-protocol" rel="nofollow">https://stackoverflow.com/questions/815758/simple-serial-poi...</a>
There's a new protocol in town called Shortest Path Bridging (SPB) or 802.1aq and in the near future it will be huge [1]. It's an open standard by IEEE and expect it to be everywhere soon if the networking vendors start to support it by default.<p>You can use it without TCP/IP because it depends on IS-IS protocol hence no need for IP [2].<p>The wonderful thing about running without TCP/IP in your private is that the chance of getting compromised over the Internet is zero unless someone pull a Stuxnet style attack on your network. But the chance that is happening in your private network is very slim.<p>[1]IEEE 802.1aq:<p><a href="https://en.m.wikipedia.org/wiki/IEEE_802.1aq" rel="nofollow">https://en.m.wikipedia.org/wiki/IEEE_802.1aq</a><p>[2]Shortest Path Bridging/fabric networks 101 - part 2:<p><a href="https://www.linkedin.com/pulse/shortest-path-bridgingfabric-networks-101-part-2-johnny-hermansen" rel="nofollow">https://www.linkedin.com/pulse/shortest-path-bridgingfabric-...</a>
Realistically, UDP/IP is going to be your least complicated and best supported option.<p>PEP/IPX could be an option except IPX support is likely hard to find these days. Anything else is going to need privileged execution, which maybe is fine.<p>UDP/IP isn't too hard... To do it right, you probably want dhcp or ipv6 router advertisement support, and arp or neighbor discovery protocol. But if you don't want to do it right, you can abuse broadcast packets quite a bit.
UDP over IP should be feasible, see <a href="https://www.fpga4fun.com/10BASE-T.html" rel="nofollow">https://www.fpga4fun.com/10BASE-T.html</a>