Intel Is Working On A Linux Networking Stack For Small Systems
For supporting Linux networking on very small embedded systems like the Intel Quark, developers at Intel are working on a lightweight networking stack to fit on such systems.
Andi Kleen at Intel announced their work on a smaller networking stack to fit on systems like the Quark where there might only be a few megabytes of RAM and flash storage. Andi wrote, "There has been a lot of interest recently to run Linux on very small systems, like Quark systems. These may have only 2-4MB memory. They are also limited by flash space. One problem on these small system is the size of the network stack. Currently enabling IPv4 costs about 400k in text, which is prohibitive on a 2MB system, and very expensive with 4MB."
The Linux networking stack within the kernel is very heavy due to being very feature rich, so Andi has been working on making it optionally lighter by removing some features that shouldn't be needed by clients in such systems. Besides stubbing out code within the networking area, the Intel kernel is also depending upon their earlier work with Link-Time Optimizations for the Linux kernel to allow the GCC compiler to remove unused code automatically.
Andi stubbed out some networking code to still yield a powerful TCP/IP stack while being a lot lighter. "With these changes I can get a fully featured network stack down to about 170k with LTO. Without LTO there are also benefits, but somewhat less."
The networking options come down to having the full networking stack, generating only a client-only subset of features, and then having a minimal networking subset of features for embedded systems with a special user-land.
Kleen announced this work on the kernel mailing list and is currently seeking comments and review of the changes.