网络功能虚拟化(Network Functions Virtualization,NFV)是一种关于网络架构的概念。我们平时使用的x86服务器由硬件厂商生产,在安装了不同的操作系统以及软件后实现了各种各样的功能。而传统的网络设备并没有采用这种模式,路由器、交换机、防火墙、负载均衡等设备均有自己独立的硬件和软件系统。NFV借鉴了x86服务器的架构,它将路由器、交换机、防火墙、负载均衡这些不同的网络功能封装成独立的模块化软件,通过在硬件设备上运行不同的模块化软件,在单一硬件设备上实现多样化的网络功能。
NFV可以把链路层以上的功能都用纯软件实现。
NFV套用了企业软件开发的理念
– NFV Infrastructure,NFV基础设施
包括所需的硬件及软件。对应的是物理服务器,KVM,Docker
– VNF
Virtual Network Functions,指虚拟机及部署在虚拟机上的业务网元、网络功能软件等。
对应的是微服务中的一个服务
– MANO
Management and Orchestration,NFV的管理和编排。包括VIM,VNFM及NFVO,提供对VNF和NFVI资源的统一管理和编排功能。
对应OpenStack和K8S。
NFV可以实现部分链路层及以上层次的虚拟化,网络硬件只保留通道和二层交换功能。但是如果用NFV实现转发面的功能必然会带来性能下降和延迟提高,软件实现的东西(又套了一层虚拟化)怎么也比不上ASIC芯片的性能,而且NFV是集中化的,远离实际的业务位置造成延迟增加,只有一些对性能不敏感的功能才适合NFV化。
NFV的定义和SDN有重合之处,SDN分硬件SDN和软件SDN,软件SDN是要求控制面功能软件化的(实际上就是虚拟化),而NFV涵盖了软发面和控制面的虚拟化。只不过NFV强调的是虚拟化和微服务化,而SDN强调的是集中化。在实际中也是NFV和SDN一起使用,起到相辅相成的作用。