We have demonstrated that is is possible to exploit multicore architectures to implement a fast and reliable network stack (paper). However, the main problem is that we can only use one cpu/core for one component of the stack. Therefore, once a core gets overloaded, the stack does not scale further. The goal of this project is to find out, how can we scale beyond the sing-cpu bottle-neck. Is it possible to run multiple TCP components? Which one would an application use to open a socket? Can we have multiple IP components? How would IPs route packets between each other and how would they connect to TCPs? Can each application implement its own TCP? What are the overheads of making the system more distributed than it is now? How can packet filtering and vitualization of modern network cards help us in our goal? This project should answer some of these questions.