The fundamental idea of NFV is to virtualize network services and abstract them from dedicated hardware. NFV deployments typically use commodity servers to run software versions of network services that previously were hardware-based. These software-based services are called Virtual Network Functions (VNF) and would run in an NFV environment. Examples of VNFs include routing, firewalling, load balancing, WAN acceleration, and encryption. By virtualizing these network services, providers can offer customers these services dynamically, with the ability to spin them up down on demand.