We have implemented a new network stack in Minix 3, which is split into multiple servers and runs on multiple cores to improve performance of the original INET server by several orders of magnitude and to improve dependability of the stack by being able to update and recover from crashes of individual components of the stack. On the other hand, the performance of such a stack is limited by the extra latency introduced by the extra message queues. This adds up to an existing serious problem of the Internet know as bufferbloat. This project would focus on :
How to reduce buffering and queueing in the Minix stack
How to provide feedback through the stack from the devices to the applications
how and when to tell TCP to slow down when other parts of the system get overloaded?
how to tell applications about current conditions? For instance to lower video resolution, etc.
how can we adapt the multiserver stack to provide different applications with the best possible QoS.
the default stack is a compromise and unlikely the best option for all applications
can we give some applications access to lower levels of the stack? Private TCP?
what are the scalability and reliability implications?