Network operators are under pressure to offer efficient network-based services while keeping service deployment costs to a minimum. Network Functions Virtualization (NFV) can potentially revolutionize network-based services bringing low deployment costs for network operators. NFV has been introduced to ultimately extend the non-proprietary and open-standardbased model to network and service deployments, significant improvements to today’s proprietary locked implementations. Notwithstanding the continuous efforts of both academia and industry to support the NFV paradigm, the current NFV solutions offered are still in its infancy. In this survey, we provide a detailed background of NFV to establish a comprehensive understanding of the subject, ranging from the basics to more advanced topics. Moreover, we offer a comprehensive overview of the NFV main concepts, standardization efforts, benefits of NFV and discuss the NFV architecture as defined by the European Telecommunications Standardization Institute (ETSI). Furthermore, we discuss NFV applicability and current open source projects. We then highlight NFV requirements, design considerations, and developmental architectural impairments and barriers to commercial NFV deployments. Finally, we conclude enumerating future directions for NFV development.