Virtual Network Function (VNFs) are the manifestation of the desire to fully virtualize all network services. A lot of progress has been made to fulfilling that dream and there is no shortage of VNFs available. But in terms of crafting a true VNF ecosystem around open management and orchestration (MANO) frameworks, the networking industry still has a long way to go.
VNF and NFV Washing
Officially, a VNF is any combination of software that performs a discrete networking function. The challenge that creates is that a VNF can be written in almost any programming language and come in any software package, with arbitrary interfaces (which may or may not fully conform to ETSI NFV standards). Until all the interoperability specifications can be defined, VNFs today essentially only offer an alternative to deploying a physical appliance. Contrast this with VNFs that operate seamlessly on top of a NFVI, with well-understood and stable performance characteristics, and that can be fully life-cycled managed by any standardized MANO implementation from multiple vendors. In fact, more than a few vendors have engaged in “NFV washing” by simply porting a HW-based network product into a VM and pretending they have a full NFV VNF. Or by positioning offerings that require proprietary NFVI, or their own proprietary MANO, as an NFV VNF when in truth that product is still more akin to a virtual appliance rather than a true NFV application.
To be fair to vendors, the NFV standard are still evolving and there is much we don’t fully understand, nor have we solved all compatibility, deployment or manageability issues. For example, we’ve been focused on VNFs as VMs (virtual machines), when in fact, because VNFs are more akin to applications it may very well turn out that some subset of VNFs will be delivered in, for example, a Linux Container format. That format will not only make it easier to deploy a VNF across multiple platforms, the whole process of adding and updating additional functionality is greatly enhanced. Instead of patching the VNF new functions are added by replacing discrete containers with a new container that then exposes that functionality to the network via a standard set of APIs. Certainingly work on the NFVI level is moving towards supporting these Container deployments as well, but it remains to be seen how we manage VMs, Containers and in some cases, Bare Metal machines as hosts for out VNFs, in an effective manner.