Virtual Network Functions (VNFs) are software network elements (or groups of connected network elements) like routers, firewall or load balancers that replace networking hardware. In other words, network services are performed by dedicated software that runs on Virtual Machines that can be managed by Virtual Infrastructure Managers (VIMs) like OpenStack.
Such an approach offers several benefits. First, there is no need to install and configure each device manually. In complicated networks, that requires a great deal of manual work. If software takes on a network function once performed by dedicated devices, the network configuration takes minutes, not weeks or months. Thus VNFs increase network scalability and reduce operating costs.
When talking about VNFs, you may also come across the terms Network Function Virtualization (NFV). Even though these terms are sometimes used interchangeably, they are not the same thing. NFV is the name for the network architecture concept that can be realized by multiple elements, including management (see MANO model), while VNFs are primary components of NFV architecture.