Hi,
This is Venkada Ramanujam. I am doing projects on fixing TCP IP stack related issues on Genode.
-Aim is to fix as much as possible problems in TCP IP stack in Genode and, to compare TCP IP stack performance on linux with the Genode.
I need details about Genode TCP IP stack and earlier version's problems and how the problems solved. Kindly send me the details.
Thank You,
With Reg, VENKADA RAMANUJAM.S 9578520238
Hello Venkada,
welcome to the mailing list! It is good to hear that you'd like to help out with improving TCP/IP on Genode. For TCP/IP we are using the lwIP stack. You can find it as package of the 'libports' repository.
For working on performance improvements, you need to get a profound understanding of the software stack, which is quite complex:
* Device-driver level (operation of the NIC driver) * Communication of network packets from the driver to the TCP/IP stack * Inner working of lwIP * Interaction between lwIP and the C runtime * Application-performance benchmark
This list does not even cover topics that are important across all those places, in particular the implementation of Genode's base libraries (such as the C++ runtime, or memcpy) as well as the behavior of the kernel (e.g., latency of inter-process communication depending on the kernel's scheduling policy).
To optimize performance, two intermediate steps are needed, the provision of a useful benchmark and tooling that helps to find suitable attack points for optimization. We have addressed the former point (benchmarking) recently. You can find a suite of ready-to-use low-level benchmarks in libports, and you can find a port of netperf in the ports repository. The latter point (tooling) is more tricky. Without knowing where the bottlenecks are, you have to optimize by chance. Given the complexity of the software stack, chances are low to hit the real hot spot this way. For this reason, there is current work under way to equip Genode with a high-performance event tracing framework, which will enable us to gather traces of events across the while software stack.
So what is a good point to start? I'd recommend you to explore the benchmarks that we already have, get them running, and compare your results with those of Linux.
Alternatively, you may consider adding functionality. For example, right now, we are using IPv4 only. It would be interesting to look at enabling IPv6 as well (which seems to be principally supported by lwIP).
Cheers Norman