. One of the potential reasons for this could be because process affinity varies significantly depending on system environment and scheduler implementation. As an example, results could be different if two virtual CPUs assigned to a VNF are implemented on the same core (via hyper-threading) versus two cores on the same physical processor versus separate physical processor. The key learning from this exercise was to not assume any performance gain without testing the specific VNF in a replica of the production system environment. 10.2.4.2 Intel DPDK and Related Technologies Another method to improve the performance of VNFs is to leverage the Intel instruction set features that are specifically designed to accelerate packet processing on x86 platforms. From a hardware point of view, today's network appliances (such as switches, routers, firewalls, etc.) are built using application-specific interacted circuit (ASIC), field programmable gate array (FPGA), and "network processors." These are "fixed-function" dedicated units that are used for offloading tasks such as crypto, compression, and packet processing. In recent years, however, Intel has demonstrated that new multicore architecture processors along with specially designed set of software libraries, can perform as well as ASICs, FPGA, or network processors for access network use-cases. One of the key technologies is DPDK. It is a set of libraries and drivers that essentially facilitates this task by providing application programming interfaces (APIs) for efficient memory management and packet handling as well as optimized poll-mode drivers. It offers Environment abstraction layer-provides access to low-level resources such as hardware, memory space, and logical cores using a generic interface that obscures the details of those resources from applications and libraries. Memory manager-allocates pools of objects in huge-page memory space; an alignment helper ensures that objects are padded, to spread them equally across dynamic random access memory (DRAM) channels