Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
LwIP on BareMetal: Lightweight TCP/IP stack running on ultra-lightweight kernel (github.com/returninfinity)
89 points by nkurz on Oct 31, 2014 | hide | past | favorite | 23 comments


> are written entirely in Assembly for optimal speed, simplicity, and manageability of the code

So not optimized for safety.


I want a Coq kernel!

But seriously, I'm not sure writing the stuff in assembly can also optimise simplicity and manageability. Though we are talking about the obsolete X86 architecture here. More reasonable hardware[1] will likely be easier to compile to.

[1]: http://millcomputing.com/



It seems like a strange match to use LwIP (which is optimzed for small size to run on embedded systems) with a kernel optimized for speed. I'm guessing that a different IP stack would perform better, given the different constraints on a x64 system. Maybe there aren't many to choose from though, that aren't tied to a specific kernel?


You can use the NetBSD stack[1] on baremetal/in userspace/wherever.

[1] http://rumpkernel.org/


Yeah, exactly. NetBSD's implementation makes sense to use, as it's a rather solid one and very portable. Plus it's probably very general-purpose, while lwIP had never been. Not to say that general-purposeness is the best thing, so that's why I pointed at mTCP, which is actually optimised for multicore systems... Anyhow, I don't think these guys even get their point across. Why have they chosen lwIP in this particular instance actually?


Yes, lwIP only has smallness as a benefit, at the expense of a lot. If we knew what the idea behind the thing was it might be clearer, performance does seem to be an aim.


I agree. Something like mTCP [1] would make more sense, if this is for cloud-based systems...

[1]: https://github.com/eunyoung14/mtcp


Is it just me, or isn't "BareMetal OS" an oxymoron? I guess it sounds cool, but taking an established term and use it as a name for the exactly opposite seems confusing to me. Please be responsible when choosing names for your projects :)


Exokernels don't, actually, abstract over hardware. They merely manage resource allocation.[1] So, "BareMetal", is not such an oxymoron, provided you're talking about the kernel itself.

[1]: http://c2.com/cgi/wiki?ExoKernel


I love minimal things. But if this is supposed to be more than a because-we-can-thing, tell me if it is worth the trouble - how fast is it, how many requests can it stand? Numbers! Ten times a stock Linux setup? More? Less?


Speed does not matter much. Does it work in the wild? A TCP/IP stack developed from specifications would work very well if you dropped it on the Internet.


What about using a more modern, future-proof TCP/IP stack like PicoTCP? https://github.com/tass-belgium/picotcp/


Maxime, that's what I was thinking too! But nobody know what these guys are doing, as you can see above...


This reminds me of Mirage OS[1], which is written in OCaml. Although they call it a Unikernel and it runs on top of Xen.

  [1]: http://www.openmirage.org/


To me this is not as appealing as OSv [1], is BareMetal OS even made for the cloud or more for embedded systems?

[1]: http://osv.io/


Not really for embedded systems. Because the majority of the embedded systems is either ARM or proprietary Freescale, Renesas, you-name-it architecture. But BareMetal OS seems to be exclusively for 64-bit x86. It is also proud to not be generic. So: no, not for embedded.


"The kernel, as well as its various device drivers, are written entirely in Assembly for optimal speed, simplicity, and manageability of the code."

I love it !!!


Sounds a lot like MenuetOS: http://www.menuetos.net/


Why have they not written the TCP/IP stack in Assembly then?


Because they didn't write it, someone else did


I wonder how it compares with seL4 (http://sel4.systems/) which is verified, open source, "bare metal" and designed for minimality, security and performance.


Reminds me of KA9Q.. I wonder how many old systems from the '80s could find new life in all these quests for IOT on small MCU's?




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

Search: