网络功能虚拟化,英文全称是Network Functions Virtualisation,通常简写为NFV。它的正式定义由欧洲电信标准化协会的行业规范组给出,也就是业界常说的ETSI ISG NFV。这一组织于二零一二年联合多家主流电信运营商发起NFV倡议,其核心主张可以概括为一句话:把传统上运行在专用硬件设备上的网络功能,从封闭的硬件盒子里剥离出来,改写成纯软件,跑在通用的、基于行业标准的高性能服务器、存储和交换机之上。
要理解这句话的分量,必须先看清楚传统网络的交付形态。在过去几十年里,一个企业或者运营商要部署一项网络功能,无论是路由器、防火墙、负载均衡器,还是移动核心网里的分组数据网关、会话边界控制器,几乎都要向特定厂商采购一台台专用设备。这些设备的特点是软硬件深度绑定:厂商把功能逻辑烧进自己定制的芯片和机箱里,用户买回来的是一台黑盒,既看不到内部实现,也无法把软件单独拆出来复用。于是,网络功能的数量直接决定了机房里设备的数量,每新增一种功能,就意味着新增一类专用硬件,随之而来的是高昂的采购成本、漫长的到货周期、复杂的上架布线和日益沉重的能耗与运维负担。
NFV要解决的就是这个痛点。它借鉴了IT行业早已成熟的服务器虚拟化思想,提出把网络功能从专用硬件中解耦出来,让软件与硬件彻底分离。实现方式是这样的:用通用服务器、通用存储、通用交换机构建一个统一的资源池,在资源池之上铺设一层虚拟化层,由这层虚拟化层把底层的CPU、内存、磁盘和网络带宽抽象成可动态调度的虚拟资源,再由各种网络功能软件以虚拟机的形式运行在这些虚拟资源之上。这样一来,一台防火墙不再是一台独立的物理设备,而是一个可以在任意通用服务器上启动、迁移、克隆和销毁的软件实例。
这里需要强调的是,NFV本质上是一种架构理念和标准体系,而不是某一家公司的产品。ETSI ISG NFV的价值在于它定义了一套开放的参考架构、一套统一的术语体系,以及一组标准化的接口规范。正是这套标准的开放性,保证了不同厂商的虚拟化网络功能软件能够运行在不同厂商的通用基础设施之上,避免了从一种专用硬件锁定滑向另一种软件锁定的尴尬。理解这一点,对于软考网络工程师考试至关重要,因为命题人考察的往往不是NFV这个词本身的字面意思,而是它背后那套被严格定义的组件职责划分。
要把NFV的原理讲透,必须先建立它的总体框架。ETSI在NFV参考架构中把整个体系划分为三个大的工作域:虚拟化网络功能、NFV基础设施,以及NFV管理与编排。这三个工作域各司其职,通过标准化的参考点相互通信,共同支撑起一个网络功能的完整生命周期。
虚拟化网络功能,英文缩写为VNF,它是网络功能的软件实现,是真正干活的角色。一台传统防火墙被虚拟化之后,就变成了一个VNF;一个移动核心网的分组数据网关被虚拟化之后,同样是一个VNF。VNF运行在NFV基础设施之上,通过虚拟化层获得自己需要的计算、存储和网络资源。一个VNF既可以由单个虚拟机承载,也可以由多个相互连接的虚拟机共同构成,这些虚拟机之间通过内部虚拟网络连接,对外呈现为一个完整的网络功能。
VNF的定义里有一个容易被忽视的细节,那就是它关注的是"功能"而非"形态"。同样一个防火墙功能,既可以用运行在虚拟机里的传统软件实现,也可以用容器化的云原生方式实现。随着技术的演进,业界越来越多地采用容器来承载网络功能,这类基于容器的网络功能有时被专门称为CNF,以区别于基于虚拟机的VNF。但在软考的知识框架里,重点仍然放在VNF这个通用概念上,考生需要记住的是:VNF就是那个"执行虚拟化网络功能"的主体,它不负责资源调度,也不负责生命周期编排,它只负责完成网络功能本身应该完成的事情。
NFV基础设施,英文缩写为NFVI,它是整个体系最底层的物质基础。NFVI可以理解为由两大部分叠加而成:一部分是物理资源层,包括通用的计算资源、存储资源和网络资源,这些资源来自标准的商用服务器、存储阵列和交换设备;另一部分是虚拟化层,它位于物理资源之上,负责把物理资源抽象成逻辑上可分配、可度量的虚拟资源。
虚拟化层的核心技术是Hypervisor,也就是虚拟机监视器。Hypervisor运行在物理服务器之上,把一台物理机的CPU、内存和网卡切分成多个相互隔离的虚拟机,每个虚拟机都拥有独立的操作系统运行环境。正是这层虚拟化,让多个VNF能够共享同一台物理服务器,同时彼此之间又保持足够的隔离性。这里要特别澄清一个概念:NFVI虽然承载VNF,但它本身不执行任何网络功能,它只负责"提供执行环境"。这就像一座写字楼,NFVI是楼体和水电基础设施,而VNF是楼里租户各自经营的业务,楼盖得再好,也不代表租户的生意做好了。
NFV管理与编排,英文缩写为MANO,它是整个体系中最复杂、也是软考命题最容易设陷阱的部分。MANO并不是一个单一的组件,而是三个功能模块的统称:网络功能虚拟化编排器、虚拟化网络功能管理器,以及虚拟化基础设施管理器。
网络功能虚拟化编排器,英文缩写为NFVO,它是MANO中层级最高的大脑。NFVO负责两项核心工作:一是网络服务的编排,二是全局资源的编排。所谓网络服务,在NFV的语境下是一个比单个VNF更大的概念,它是由多个网络功能按照一定拓扑关系组合而成的端到端服务。NFVO要负责这种网络服务的生命周期管理,包括服务的创建、部署、扩容、缩容和终止。同时,NFVO还要站在全局视角,协调VNFM对VNF生命周期的管理和VIM对基础设施资源的管理,确保网络服务的部署能够在全局范围内获得最优的资源分配。
NFVO的存在,解决了"谁来统筹全局"的问题。当运营商要上线一个由防火墙、负载均衡器和网关三种VNF串联而成的服务链时,单个VNFM只知道怎么管理某一个VNF,单个VIM只知道怎么分配某一批虚拟资源,只有NFVO能够把这些分散的能力编排成一个完整的、可交付的服务。
虚拟化网络功能管理器,英文缩写为VNFM,它的职责非常聚焦,就是管理VNF的生命周期。这里所说的生命周期,涵盖了VNF从诞生到消亡的整个过程,包括VNF的实例化,也就是创建并启动一个VNF实例;VNF的扩容和缩容,也就是根据业务负载动态增减VNF的计算能力;VNF的更新和升级;以及VNF的终止和注销。VNFM通过标准化的接口与VNF本身以及VNF的单元管理系统交互,同时向上接受NFVO的调度指令,向下向VIM请求所需的虚拟资源。
理解VNFM的关键在于抓住"生命周期管理"这个核心词。VNFM不关心底层的物理资源如何分配,那是VIM的职责;VNFM也不关心端到端的服务如何编排,那是NFVO的职责;VNFM唯一专注的,就是把一个个VNF从创建到销毁的每一个环节管好。在软考题目里,凡是看到"负责VNF实例的创建、扩容、升级、终止"这类描述,对应的必然是VNFM。
虚拟化基础设施管理器,英文缩写为VIM,它是MANO中最贴近底层资源的一层。VIM负责管理NFVI中的虚拟化资源,具体包括计算、存储和网络三类资源的分配、调度和回收。当VNFM要为一个VNF申请计算资源时,它不会直接去操作物理服务器,而是把请求交给VIM,由VIM在资源池中找到合适的物理资源并完成虚拟机的创建。在具体的工程实践中,OpenStack这类云管理平台扮演的就是VIM的角色,它把底层服务器的资源统一纳管起来,对外提供标准化的资源申请接口。
VIM与NFVO、VNFM的分工,可以用一个具体的例子来理清。假设要部署一个网络服务,NFVO首先接到上层运营支撑系统的指令,开始编排这个服务;NFVO发现服务中包含一个防火墙VNF,于是要求VNFM去实例化这个防火墙;VNFM接到指令后,向VIM申请运行防火墙所需的虚拟机和网络资源;VIM在自己的资源池里完成资源分配并把虚拟机创建出来;最后VNFM在虚拟机上启动防火墙VNF,整个服务才算部署完成。这一串自上而下的调用关系,是理解MANO三个组件职责划分的最佳切入点,也是历年真题反复考察的命题原点。
NFV作为一项架构理念,要落到实际生产中,必然涉及与相邻技术的区分,以及在具体场景中的部署方式。这一部分既是软考的高频考点,也是很多考生最容易混淆的知识盲区。
软件定义网络,英文缩写为SDN,是与NFV几乎同期兴起、又经常被放在一起讨论的另一项技术。它们之间确实存在天然的互补关系,但在概念层面必须严格区分。NFV关注的是"功能的虚拟化",它要解决的问题是把运行在专用硬件上的网络功能搬到通用硬件上,核心在于软硬件解耦;SDN关注的是"网络的控制方式",它要解决的问题是把网络设备的控制平面与数据转发平面分离,让网络能够通过集中的控制器进行可编程的流量调度。
简单地说,NFV改变的是"网络功能长什么样、跑在哪里",SDN改变的是"网络流量怎么转发、由谁决定"。一个形象的区分方式是:NFV回答"我用什么来承载一个防火墙功能",SDN回答"我如何灵活地指挥数据包在网络中流动"。两者可以独立部署,也可以协同工作,例如在一个NFV环境里,用SDN控制器来灵活编排不同VNF之间的虚拟网络连接,实现服务链的动态构建。但考生必须清楚,NFV与SDN是两个独立的命题,不能混为一谈。
NFV最初落地时,VNF几乎无一
本篇完!