论文部分内容阅读
伴随着互联网的持续迅猛发展,互联网用户和接入终端的数量仍处于持续上升阶段,互联网中流转的总数据量呈现着爆炸性增长态势,各类网络设备的处理能力面临巨大的挑战。网络设备处理能力不足,可能导致网络拥塞、网速下降、服务器瘫痪、网络应用超时等诸多问题,严重影响网络服务质量。本论文为解决网络设备数据处理能力不足这一问题,对国内外研究现状进行调研,筛选其中可行的几类软件方案进行融合,并在局部的算法实现上进行优化,提出并实现一组较为完整的高性能网络数据流处理技术解决方案。 本论文主要完成工作如下: (1)提出了本系统数据平面与;理平面的关系和划分(管理平面用于系统或设备管理的人员对设备进行管理、配置等操作,是管理功能的集合,是设备或系统正常运行的基础;数据平面用于执行实际的数据处理,实现业务功能需求,是核心业务功能的集合)。介绍数据包处理自定义协议栈的实现思路、多核并行技术利用、进程间通信等相关关键技术。 (2)设计实现数据平面,包含数据包收发、数据处理协议栈、日志记录三个模块。其中高性能数据包收发模块利用DPDK(Intel Data Plane DevelopmentKit)开源框架,实现了多网口与多线程的一一绑定,以及用户态驱动技术和大页内存管理。自定义轻量级协议栈由多个并行处理引擎组成,作为用户应用程序,直接从DPDK框架以轮询的方式获取数据包,层层剥离和解析协议首部,解析处理完成后又重新向下层传递,并根据路由查找结果添加到DPDK的发送队列中,由DPDK负责转发。目前已支持的协议包括二层ARP、三层IP、ICMP、四层UDP和TCP。在数据到达协议栈的二层、三层和四层处理过程中,会匹配配置的防火墙或访问控制策略,对数据包进行过滤。在数据包处理过程中,还对部分算法进行优化,实现高效路由查找算法、无锁循环队列、自定义用户态内存管理。此外,将策略匹配等过程中产生的日志按照syslog格式发送至日志服务器。 (3)设计实现管理平面,主要负责协助完善数据平面的功能、性能和稳定性,包括初始化全局变量、共享内存和信号处理函数、与数据平面的协同启动、负载均衡、运行监测等。管理平面还管理着系统相关配置信息,包括读写配置文件、接收并处理新的配置命令等。此外,还实现了一个独立的登录框架和自定义shell,用于用户异步登录,并向管理平面后台程序发送管理命令。 本论文编码实现了诸多优化方案,并形成了可在真实硬件设备部署运行的一套高性能数据处理系统。由于时间关系及技术原因,还有诸多设计思想未能付诸实践,包括应用层协议解析还原、三员分离管理等,留待下一步工作完善。