论文部分内容阅读
随着网络服务的应用场景和需求也不断增多,作为网络设备的转发层,数据平面的业务部署面临着很多挑战。开源的矢量报文处理器(Vector Packet Processor,VPP)作为新一代的数据平面框架,运行在通用CPU架构上,具备灵活和可扩展的特点,同时可以提供高速的数据包处理转发性能。然而,目前VPP存在两个问题:一是无法在服务运行时进行动态升级;二是数据包在CPU核上无法实现高效的负载均衡调度。本文针对上述问题,研究基于服务定义与软件开发分离的服务动态更新策略和基于数据包多次分发模型的负载均衡调度策略,并对现有的VPP进行改进,设计一个面向服务动态更新和负载均衡调度的数据平面框架VPP-α。VPP-α通过提供灵活的网络服务定义方式,支持服务快速部署和动态更新,同时在数据包调度过程中允许多次分发,实现CPU核上的负载均衡。本文的主要工作具体表现在以下几个方面:(1)提出了基于服务定义与软件开发分离的服务动态更新策略。服务动态更新的实现主要依赖于独立于运行环境的功能模块开发,以及独立于功能模块的服务连接信息描述。为此,本文中将服务定义与软件开发予以分离,即功能模块由第三方软件开发人员基于软件开发接口(Software Development Kit)独立开发,并可以在数据平面运行环境中动态加载运行。而在功能模块中不定义与连接有关的信息,专门为用户提供应用定义语言(Application Definition Language,ADL)用于服务定义,包括功能模块连接信息。数据路径框架提供了服务定义与软件开发工作之间的桥梁,在服务运行期间完成ADL节点与功能模块代码之间的元数据映射。用户可以随时向系统提供描述新服务的ADL文件,编排组件将自动完成服务的替换工作,实现服务的动态更新。(2)提出了基于数据包多次分发模型的负载均衡调度策略。负载均衡调度的关键在解决好应用处理图节点在CPU核上的映射和数据包在CPU核上的分发两个关键性问题。针对这两个关键问题,本文引入了Pipeline的调度执行模式将处理图节点映射到多个不同的CPU集合,以及实现了基于调度组、会话持久性密钥(Session Persistent Key,Skey)和哈希表的数据包分发策略,从而建立了数据包多次分发模型,允许在服务处理图执行过程中对数据包进行到CPU核上的多次重新分发,避免了一次性分发的不均匀性,实现负载均衡调度。(3)设计并实现了一种改进的数据平面框架VPP-α。在VPP现有框架的基础上,本文结合服务动态更新策略和负载均衡调度策略,设计并实现了一种面向服务动态更新和负载均衡调度的数据平面框架——VPP-α。具体的系统设计和实现内容包括软件架构、运行架构和数据路径框架的核心组件设计,以及数据平面运行环境的运行流程设计。(4)实现数据平面VPP-α的一系列相关测试。本文最后对VPP-α在服务动态更新和负载均衡调度两个设计方向上进行功能和性能测试,测试结果表明VPP-α系统支持服务在运行时进行高可用更新,除此之外,本文提出的负载均衡调度方案,实现了CPU核上的流量负载均衡,提高了数据包转发速率,降低了丢包率。