Introduction
In 2012 the European Telecommunications Standards Institute proposed the concept of Network Function Virtualization (NFV) [1]. NFV was initially conceptualized to address challenges faced by Network Service Providers (NSPs) worldwide. With increasing connectivity demands and the increase in network requirements for emerging technologies (i.e., Industrial Internet of Things (IIoT), Intelligent Transportation Systems (ITS), and wearables), NSPs were tasked with expanding their networks to accommodate the growth in demand and improving network performance. This expansion, if conducted, would have accumulated massive amounts of capital and operational expenditures as each network function had its dedicated piece of hardware, and networks were based on ridged physical infrastructure. With the introduction of NFV technology, network functions were abstracted from their dedicated hardware and executed as software-based Virtual Network Functions (VNFs) in servers, data centers, and network clouds.