文章目录

  • 1 NFV概念
  • 2 NFV架构
  • 2.1 NFVI
  • 2.2 VNF
  • 2.3 NFVMANO
  • 2.4 其他
  • 3 VNF实现技术
  • 3.1 系统结构
  • 3.2 数据平面
  • 3.3 控制平面
  • 3.4 部署方式
  • 3.5 实现与语言
  • 3.6 应用
  • 4 讨论总结


1 NFV概念

NFV的主要思想是解耦物理网络设备和运行于它之上的网络功能,意味着一个网络功能可以当成是普通软件的一个实例。NFV具备三个特性:

  • 解耦软件和硬件
  • 灵活的网络功能部署
  • 动态扩展

2 NFV架构

欧洲电信标准组织ETSI(European Telecommunications Standard Institute)于2015年发布的NFV参考框架主要包括NFV基础设施NFVI(Network Function Virtualization Infrastructure)、虚拟化网络功能VNF(Virtualization Network Function)、NFV管理和编排NFVMANO(NFV Management and Orchestration)。

nvr架构图 nfv架构包括_虚拟化

2.1 NFVI

NFVI包括各种计算、存储、网络等硬件设备,以及相关的虚拟化控制软件,将硬件相关的计算、存储和网络资源全面虚拟化,实现资源池化。
NFV设施包括硬件基础资源、虚拟化层、虚拟化资源。

  • 硬件基础资源通过虚拟化层向NFV提供计算资源、存储资源和网络资源等;
  • 虚拟化层负责硬件资源的抽象、对虚拟化网络功能与底层硬件资源的解耦功能;
  • 虚拟化资源包括虚拟计算资源、存储资源和网络资源。

2.2 VNF

VNF运行在NFVI上,目的是把基于硬件的网络功能通过软件来实现并部署于虚拟化资源中。常见NF有提升网络安全的NF(比如防火墙、IDS、IPS等)和提升网络性能的NF(代理、负载句衡器等)。

2.3 NFVMANO

NFVMANO负责对整个VNFI资源的管理和编排,业务网络和NFVI资源的映射和关联。主要包含虚拟化设施管理器、虚拟化网络功能管理器和虚拟化网络功能调度器。

2.4 其他

NFV是对功能、服务的抽象,云计算主要是对计算的抽象;SDN是对网络的抽象,NFV是对网络功能的抽象。

nvr架构图 nfv架构包括_nvr架构图_02

3 VNF实现技术

NFV的一个重要部分就是VNF的实现,对于一个给定的服务可以分解为多个虚拟网络功能VNFs,这些VNF可以用软件实现并运行于通用服务器上,从而将网络服务的实现转化为VNF序列的构建。
下面从系统结构、数据平面、控制平面、部署方式、实现与语言、应用六个方面分析当前的相关研究成果。

3.1 系统结构

本部分主要对xOMB和OpenBox两种系统结构进行了说明。

nvr架构图 nfv架构包括_nvr架构图_03


从上图,我们可以看到xOMB由四个部件组成:商用硬件交换机、前端软件Middleboxes、后端应用服务器和控制器。xOMB针对不同的功能都要定义一个处理流水。

nvr架构图 nfv架构包括_数据_04


OpenBox将控制平面和数据平面进行解耦,控制平面主要用于监控和性能相关功能的设定,数据平面是一个或多个服务实例SI(Service Instance)的集合。OpenBox协议类似于OpenFlow协议,用于控制平面和数据平面的通信。

以下属于个人观点:相比于xOMB,OpenBox系统架构将控制平面和数据平面切割的很明显,将两者很好的进行解耦。在实现层面,OpenBox实现流程也比xOMB清晰的多。但是OpenBox的模块粒度较粗,这也是它的一个致命伤。如果能够提高OpenBox的粒度,那么采用OpenBox作为NFV的系统架构是非常合适的。

3.2 数据平面

数据平面根据控制平面下发的流表规则进行数据的解析处理。通过一张图表,我们来分析数据平面的可采用方案。

nvr架构图 nfv架构包括_虚拟化_05


OpenState在数据平面加入state,使得数据平面的工作模式变成了match-state-action,它指出每个流在处理过程中都会维持一个状态,通过触发事件的产生来改变流的状态并执行相应的动作。

有状态面向包处理网络抽象SNAP(Stateful Network-wide Abstractions for packet Processing)提供了一个简单集中式的有状态编程模型,支持分布式状态管理,实现了很多有状态的操作原语。

有状态数据平面体系结构SDPA(Stateful Data Plane Architecture)的处理单元转发处理器FP用于管理状态信息,并且扩展了OpenFlow协议实现控制器和FP的通信。测试结果显示,SDPA体系结构在有状态转发中提高了转发效率。

无状态网络功能Stateless将网络功能需要维护的状态从处理中解耦出来存放于数据层,避免了因为状态问题导致网络功能障碍。但是Stateless实现逻辑复杂,性能比有状态的低。

3.3 控制平面

控制平面负责整个VNF的逻辑控制,特别是控制平面要监控大量数据平面状态。而且这些状态往往需要多个管理程序来进行管理,存在状态的相关性和管理控制的相关性。
这里主要对Statesman和SIMPLE两种方案进行了说明。
Statesman是一个网络状态管理的服务,对网络状态定义了三个视图:Observed State(维护监测到的网路最新状态)、Proposed State(预期状态)、Target State(目标状态)。Statesman实现了在同一网络设备上运行多个松耦合网络管理应用,并保证网络的安全和性能。
SIMPLE是一个基于SDN的策略执行层,能够将高层次的VNF策略转换成一个高效的、负载均衡的数据平面配置,可以使数据流按照数据平面配置信息依次通过所期望的VNF序列。

3.4 部署方式

VNF部署的实现方式有:xOMB、ClickOS、Docker等。

xOMB部署在通用服务器上,使用通用的操作系统。但是单独部署一个VNF可能造成服务器资源的浪费,与其他VNF共用服务器又可能导致相互影响。

ClickOS是一个高性能、虚拟化软件VNF平台,实现了防火墙、NAT和负载均衡三个VNF,他们分别部署在三个虚拟机中。为提高性能,平台采用Xen(支持半虚拟化虚拟机)搭建低延时、高吞吐量平台。

Docker能够提供比虚拟机跟多隔离的容器供用户使用,大大提高了物理主机的利用效率。将VNF部署于Docker,同时考虑虚拟机和Docker配合使用应该是一个比较好的思路。

nvr架构图 nfv架构包括_数据中心_06

3.5 实现与语言

基于Click和开放虚拟交换机OVS(Open-VSwitch)是实现的VNF采用C语言实现,这对于C语言的要求非常高。于是产生了基于P4语言实现的Pisces,Pisces可编程、协议无关无关的软件交换机。

P4语言构成主要分为五个部分:头部、解析器、表、动作和流控制程序。P4程序的编译过程主要分为两步:前端编译器将P4源代码编译为高级中间表示HLIR(High-Level Intermediate Representation),后端编译器将HLIR转换为特定目标设备的形式JSON或者二进制代码等。

Pisces原型是OVS的修改版本,解析、匹配和动作代码由P4编译器生成的C代码替代。下图是Pisces的工作流程图。

nvr架构图 nfv架构包括_数据中心_07


P4语言发展时间较短,各功能模块不是很全面。在实际的应用中,可能需要开发自己定义组件添加到库中调用。

3.6 应用

在数据中心中,随着大数据业务和人工智能应用的广泛部署,网络拥塞成为了业务应用性能的瓶颈。这部分的研究有:NetAgg、IncBricks、Neurosurgeon等。

NetAgg是一种路径聚合分布式应用网络流量的防范,其出发点是针对网络中特定应用(Map/Reduce批处理、搜索引擎等)。在不改变现有数据中心的网络结构和应用服务等的前提下,在交换机ide旁路接入agg boxes核心组件。

IncBricks基于可编程网络设备,可进行原子计算操作的网络缓存。核心思想是卸载末端服务器的计算操作到可编程网络设备上(交换机和网络加速器等)。

Neurosurgeon将原先由云数据中心执行的计算操作进行拆分,缩短了应用在移动终端的时延,减少了数据中心的计算操作,减少了网络流量。

nvr架构图 nfv架构包括_虚拟化_08


NetAgg和 Neurosurgeon是在不改变数据中心现有应 用的前提下进行的,而IncBricks要对数据中心应用进行定制,以满足其缓冲 系 统 工 作 要 求。IncBricks和Neurosurgeon着眼于将应用计算操作在近端进行,而不是发送到远端服务器进行;NetAgg着眼于将数据流进行聚合,但不卸载服务器计算操作到其它设备上。

4 讨论总结

VNF是由软件实现的,升级更新只需要修改相关的代码,大幅度缩减了网络功能的开发更新周期,同时提高了网络功能的创新性。实现的 VNF采用通用的通信协议,方便VNF的统一管理。
要想用VNF替换现有的基于硬件的网络 功能设备,要求VNF的性能达到或超过已部署的网络功能设备,所以VNF性能优化是1个重要的研究方向,当然这里的性能优化包括了VNF运行环境性能的优化和VNF处理性能 的 优化。

  • 运行环境的性能优化
    主要考虑VNF的部署方式以及部署平台的性能优化。
  • VNF处理性能优化
    主要解决数据包的快速处理和各个VNF包处理结果的复用性问题。构建1个VNF管理平台对VNF进行统一管理,同时实现VNF功能的私人定制也是1个研究方向。