论文部分内容阅读
除了基础的数据包转发外,计算机网络经常需要提供许多比较复杂的额外功能,比如访问控制、入侵检测和负载均衡等等。包括数据包转发在内的这些功能通常由特殊的硬件设备来实现,这些设备被称为网络功能(Network Function,NF)设备。NF设备在经历了快速地技术发展和爆炸式地数量增长后,已经成为网络中不可替代的基础组件,为网络带来了丰富的功能,但是其基于特殊硬件的实现方式也带来了许多严峻的问题。比如,昂贵的特殊硬件设备增加了网络的部署成本,硬件设备的多样性增加了网络的管理成本,以及硬件设备漫长的研发周期限制了新的NF的开发速度等等。为了解决这些问题,人们提出了网络功能虚拟化(Network Functions Virtualization,NFV)这个概念。NFV提议用软件实现NF,并将其运行在通用服务器上的虚拟化环境中,从而代替原来由特殊硬件设备实现的NF。其中,运行在虚拟化环境中的NF被称为虚拟网络功能(Virtual Network Function,VNF),多个VNF通常会串在一起组成数据通路,数据包由这个通路上的VNF依次处理,这一通路被称为服务链(Service Chain,SC)。NFV虽然利用了发展比较成熟的虚拟化技术,但是在面向商用网络的实现过程中,仍然面临包括性能、管理和安全在内的许多方面的挑战,其中性能方面的挑战尤为突出。为此,研究人员提出了许多NFV框架来推进NFV的实现,同时从各个方面对NFV进行了性能优化。根据对NFV进行性能优化的关注点,这些研究工作可以分为三类:对单个VNF的性能优化、对整个SC的性能优化和对数据包收发流程的优化。其中,对单个VNF的性能优化集中在两个方面,一是利用特殊硬件设备加速VNF的数据包处理,二是降低VNF运行的虚拟化开销;对整个SC的性能优化集中在三个方面,一是优化VNF间的资源分配,二是降低VNF间的数据包传递开销,三是缩短SC的长度;对数据包收发流程的优化集中在两个方面,一是降低通过网卡收发数据包的开销,二是加速NFV平台的数据包分发。在上述研究工作中,对NFV平台的数据包分发的优化研究比较少,但是数据包分发对NFV平台的整体性能有着关键影响。具体来说,NFV平台中通常会运行多个不同的SC,在收到新的数据包时,NFV平台需要根据网络策略确定该数据包应该通过的目的SC,并将该数据包分发给目的SC的第一个VNF,这一操作被称为数据包分发(Packets Dispatch)。数据包分发对每一个新收到的数据包都是必不可少的操作,如果不能被高效地执行,那么后续SC的运行都会被减慢甚至被阻塞,最终限制NFV平台的整体性能。学术界提出的NFV框架大多使用专门的软件模块来负责数据包分发,为了保证性能这些软件模块通常会独占若干个CPU核。这种纯软件的解决方案在消耗大量计算资源的同时仍然会引入较大的网络延迟。对此,有研究提出利用SDN交换机来加速数据包分发,该方案显著地提升了数据包分发的性能和效率。但是SDN交换机毕竟是比较昂贵的特殊硬件设备,在一般的服务器平台中使用成本较高,该方案也存在受硬件资源限制而比较难进行扩展的问题。为了进一步优化NFV平台的数据包分发从而提升NFV平台的整体性能,我们在本文中提出了一个名为FlowLever的NFV框架,该框架利用当前高性能网卡普遍支持的Flow Director(FDir)功能来加速数据包分发。FDir为网卡提供了一种简单的、类似于SDN交换机所提供的“匹配-执行”(Match-Action)功能。通过配置FDir,我们可以使网卡将新收到的数据包与提前配置好的信息进行匹配,并根据匹配结果将数据包分发到不同的网卡队列。FlowLever在运行时会根据NFV平台的网络策略对FDir进行相应配置,指导网卡直接进行数据包分发,从两个方面来提升数据包分发的性能:一是减少了负责数据包分发的软件模块的工作量,节省了计算资源,二是数据包由网卡直接分发,绕过了运行软件模块的CPU核,降低了网络延迟。在进一步考虑应用FDir的具体细节时,我们遇到了三大技术挑战:一是FDir提供的匹配模式有限,二是FDir提供的匹配规模有限,三是FDir的配置开销很大。通过对FlowLever进行特别的设计以及对现有工具的多项优化,我们逐一克服了上述几个挑战,并实现了一个原型系统。最后,我们对实现的原型系统进行了多项微基准测试和整体的性能测试,证明FlowLever显著地提升了NFV平台的数据包分发的性能。