ACM Transactions on Computer Systems (TOCS)
Pc-based software routers: high performance and application service support
Proceedings of the ACM workshop on Programmable routers for extensible services of tomorrow
Fairness issues in software virtual routers
Proceedings of the ACM workshop on Programmable routers for extensible services of tomorrow
Towards high performance virtual routers on commodity hardware
CoNEXT '08 Proceedings of the 2008 ACM CoNEXT Conference
RouteBricks: exploiting parallelism to scale software routers
Proceedings of the ACM SIGOPS 22nd symposium on Operating systems principles
PacketShader: a GPU-accelerated software router
Proceedings of the ACM SIGCOMM 2010 conference
Network I/O fairness in virtual machines
Proceedings of the second ACM SIGCOMM workshop on Virtualized infrastructure systems and architectures
On multi---gigabit packet capturing with multi---core commodity hardware
PAM'12 Proceedings of the 13th international conference on Passive and Active Measurement
NetBump: user-extensible active queue management with bumps on the wire
Proceedings of the eighth ACM/IEEE symposium on Architectures for networking and communications systems
Hi-index | 0.00 |
Multi-core CPUs, along with recent advances in memory and buses, render commodity hardware a strong candidate for building fexible and high-performance software routers. With a forwarding plane physically composed of many packet processing components and operations, resource allocation in multi-core systems is not trivial. Indeed, packets crossing cache hierarchies degrade forwarding performance, since the bottleneck is main memory access. Therefore, forwarding path allocation and input/output processing become challenging, especially when states and data structures have to be shared among multiple cores. In this context, we investigate a set of input/output processing architectures, as well as resource allocation strategies for forwarding paths. For each packet processing operation, we uncover the gains and possible implications by either running different components concurrently or replicating the same components across different cores.