 decisions and priorities can be determined by the application, to achieve quality of service (QoS) requirements. Similarly, rate limiting could be employed on interfaces to control the allowable traffic by class or application. These put greater stress on the CPU because packets need to be analyzed beyond the destination address field. Basic packet forwarding makes heavy utilization of network I/O and memory read/write opera- tions. When moving this to a server-based architecture, the I/O capabilities of the server can be the limiting factor in forwarding throughput. Moving these workloads to a server-based architecture can prove challenging if we continue to build routers as monolithic functions that need to support all these features. Many network workloads will require high data throughput that is hard to achieve on top of hypervisors and overlay networks where the network function does not have direct access to the network interface. Overlay routing or switching can impede the throughput a VF can achieve via virtual platform. Techniques such as single root I/O virtualization (SRIOV) (Intel) can be employed to bypass these overlays and instead directly pass data to the network interface card (NIC). SRIOV is a network interface that allows a single physical peripheral component interconnect (PCI) express hardware interface to be shared by different VMs. Allocating a VF to VM instance enables network traffic to bypass the hypervisor and flow directly between the VF and the VM. This allows near line rate performance without dedicating a single physical NIC to each VM. Network Functions Virtualization The downside is that this VNF is now bound to that specific server SO the ability to move that function between servers, becomes more challenging. Over time, higher throughput will be achieved through overlay routers and switches when they leverage emerging APIs that provide higher data plane throughput. An example is the Data Plane Development Kit (DPDK), which provides a set libraries and drivers for fast packet p