We have demonstrated that is is possible to exploit multicore architectures to implement a fast and reliable network stack (paper) To demonstrate its performance, we have implemented new sockets that allow applications to pass data quickly to the stack without kernel involvement (copying). However, this implementation is fairly primitive since the full posix-compliance require to tackle many challenges. On the other hand, our stack also provides slow sockets implemented the same way as in mainline Minix.
The goal of this project is to come up with a design that would marry the posix compliance and high performance. We need to redesign the slow posix sockets to use the mechanisms we evaluated for the fast sockets, for instance, using shared memory buffers to copy between userspace and the stack. In the ideal case, we would be able to receive and transmit directly to/from the userspace buffers.
Although we have ideas how to achieve this goal, the student's task is to explore what is possible and how far can we extend the model we use within the network stack. We admit that the final solution may be a mix of socket implementations that the application can choose from.