论文部分内容阅读
SDN分离了网络的控制平面和数据平面,它允许通过抽象底层物理网络的复杂性对网络状态进行集中管理。随着SDN大规模的部署和应用,控制平面扮演着越来越重要的角色,在控制平面上进行开发的网络服务应用不但给网络提供了丰富的服务,更是对大规模网络进行监督和管理并使其健康运行的重要保障。处于SDN架构控制平面的控制器是整个网络的重要组成部分,是整个网络的核心,控制器的性能将影响整个网络的性能。而当前已经成熟的众多版本的控制器普遍存在性能较低问题,满足不了大规模网络的需求,因此控制器性能提升依然是急需解决的问题。本文的主要工作是分析和研究了主流开源控制器的性能,并且基于Intel DPDK设计了用户空间协议栈,开发完成了基于DPDK的KNI组件的协议栈支持,完成了基于该平台的SDN控制器。首先本文阐述了SDN控制器的研究现状及其意义,并且在虚拟环境下搭建了主流开源控制器,然后对它们进行延迟和吞吐量性能方面的测试,接着对测试结果进行了研究分析,得出这种传统的纯粹基于内核的TCP/IP协议栈的控制器已经凸显其吞吐量方面的不足,不能满足SDN大规划化的需求。其次本文设计了一种基于Intel公司数据平面开发包工具的SDN控制器方案,并给出了基于DPDK的用户空间协议栈的设计模型,详细分析了这一架构的性能方面优势,并着重对该协议栈的TCP协议模型进行了设计。本文最终开发实现了基于DPDK的KNI组件来完成TCP数据传输,这是在本文设计的用户空间协议栈模型上借助内核协议栈来完成TCP协议的支持。接着本文着重对控制器的整体框架及功能进行了设计和实现,并对控制器进行了二层转发模块应用的开发,这使得控制器具有根据主机物理地址信息下发正确流表的能力。在测试中,本文对协议栈及控制器二层转发模块进行了功能性的测试,最后对实现的控制器进行了延迟和吞吐量方面的性能测试,并将之与主流开源控制器进行比较分析,验证了基于DPDK平台实现的控制器的高效性。