
LwIP on BareMetal: Lightweight TCP/IP stack running on ultra-lightweight kernel - nkurz
https://github.com/ReturnInfinity/BareMetal-lwIP
======
dons
> are written entirely in Assembly for optimal speed, simplicity, and
> manageability of the code

So not optimized for safety.

~~~
loup-vaillant
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/](http://millcomputing.com/)

~~~
Symmetry
There is seL4

[http://sel4.systems/](http://sel4.systems/)

------
m_eiman
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?

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

[1] [http://rumpkernel.org/](http://rumpkernel.org/)

~~~
errordeveloper
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?

~~~
justincormack
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.

------
k0ngo
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 :)

~~~
loup-vaillant
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](http://c2.com/cgi/wiki?ExoKernel)

------
danbruc
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?

~~~
xorcist
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.

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

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

------
auvi
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/

------
errordeveloper
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/](http://osv.io/)

~~~
PinguTS
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.

------
reacweb
"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 !!!

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

~~~
easytiger
Because they didn't write it, someone else did

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

------
kator
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?

