Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I am developing a new TCP/IP stack targeting embedded systems primarily. It is being written in a restricted subset of C++14 (e.g. no dynamic memory or exceptions, but virtual functions are great).

There is a LOT of things complete already, it pretty much works. ARP, IP(v4), TCP (with NewReno congestion control), PMTUD, DHCP client. The design is single-threaded around an abstract event loop that a user would generally need to implement unless they found one of two provided implementations useful. The focus is correctness and reliability rather than performance, hence no DMA support for now and maybe forever.

Source code is here: https://github.com/ambrop72/aprinter/tree/ipstack/aipstack

Actually this is currently in its testbed project (APrinter firmware for 3D-printers) where it supports the integrated web interface using a custom HTTP server.

In addition to the one embedded platform where the firmware currently supports Ethernet (Duet board), it is possible to run on Linux with a TAP interface which is my primary testing setup.

If anyone is interested (in assisting development ;) I can help explain things and show how to set it up.



How familiar should one be with networking? I know some C++ and know the low level C apis for maintaining sockets but never implemented them. I also never took a networking class.


It helps if you ever looked at the packets for example in Wireshark and have at some understanding of how TCP works. But the most important thing is the ability to read standards (RFCs).




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: