plane) from the underlying hardware. Also, NFV implements packet forwarding in software. The hardware becomes generic (e.g., x86 or merchant silicon) and the software is decoupled from hard- ware. We will survey these technologies before we dive deeper into NFV. VIRTUALIZATION In this section, we discuss virtualization as it relates to networks and compute environments and then focus on the virtualization of network functions, which applies to both network and compute virtualization. 3.1.1 NETWORK VIRTUALIZATION Let us begin by understanding the concept of closed user groups (CUGs). A CUG allows a set of users to communicate among each other in isolation from other users of the network. A net- work should allow the creation of multiple CUGs. Each CUG behaves as though the entire network belongs to the particular CUG with no interference from other CUGs that may exist on the same net- work. The technology that enables such CUGs is called network virtualization. Each CUG operates on its own virtual network, coexisting with other virtual networks on the same physical network. Ethernet and IP networks were designed to allow multiple users to communicate and share a common physical network. However, the original definition of Ethernet and IP did not have the notion of CUGs. Ethernet defines the notion of a broadcast domain over a shared medium. Virtual LAN (VLAN) is a broadcast domain that is partitioned and isolated from other VLANs and associated broadcast domains. To partition a network into VLANs, the network switch or router needs to be configured. VLANs allow network administrators to group hosts together into a broadcast domain or virtual network. VLAN membership can be configured through software. Without VLANs, partitioning users (i.e., hosts) neces- sitates physically relocating network switches and cables that connect stations to switches. VLANs greatly simplify network design and deployment by virtualizing the LAN (see Figure 3.1). Virtual private wire service (VPWS) and virtual private LAN service (VPLS) 