DPDK结构下类Socket接口研究与设计
发布时间:2017-08-01 16:19
本文关键词:DPDK结构下类Socket接口研究与设计
更多相关文章: 数据平面加速 网络处理性能 协议栈 SMP DPDK
【摘要】:随着互联网的不断发展,网络中的应用已经不仅仅局限于简单的小流量数据通信,大并发量随处可见。逐渐丰富的应用给服务提供商的服务器、网络设备带来严峻的挑战,这就要求承载这些应用的服务器和设备能够提供更高的网络处理性能,目前常见的解决方案就是增加服务器的核心数,增强服务器的并行处理能力,但是实验表明,随着系统核心数的增加,SMP系统的数据处理能力并不会随着核心数的增加而成线性增长,一味的增加服务器的配置,对于服务器的性能提升显然已经换不来可观的性能提升了。仔细分析不难发现,造成这一问题的原因就是传统内核协议栈的数据处理性能出现了瓶颈,例如对共享资源的访问,锁,线程调度,数据拷贝等等,这些瓶颈会随着CPU核心数量的增加而愈发的明显,所以仅仅针对用户层的应用程序的数据传输做优化并不会带来明显的效果。本论文第二章首先通过研究和分析传统内核协议栈的设计架构,指出传统内核协议栈存在的设计瓶颈和缺陷,接着探讨并分析Intel的数据平面开发工具(DPDK),分别通过驱动优化,内存优化,线程调度优化和无锁队列优化四点,简述其对数据平面进行加速的基本原理,这里通过对Ovs和dpdk-Ovs进行简单基础的转发对比测试,论证DPDK对数据包有更强的数据处理性能和可扩展性。第三章是本论文的主体部分,是本论文最核心的工作,完成了三部分内容的设计,一是将基于DPDK提供的数据平面的API,完全在用户态实现一个轻量级的TCP/IP协议栈,弥补DPDK尚无成熟协议栈的不足,它将实现基本的协议如IP、UDP、TCP、ARP和ICMP,为上层应用程序提供协议支持;二是对上层应用程序提供与原来兼容的类SOCKET接口,以静态库的形式提供给应用程序调用,与协议栈进程通过无锁队列实现通信;三是在此基础上,分别移植基于UDP协议的TFTP服务器和基于TCP协议的开源的HTTP服务器。最后,本论文将对TFTP服务器,TCP协议栈和HTTP服务器做详细的功能和性能测试。测试结果表明,在相同的服务器配置下,基于DPDK的协议栈能够提供优于传统内核协议栈的网络数据处理性能。
【关键词】:数据平面加速 网络处理性能 协议栈 SMP DPDK
【学位授予单位】:电子科技大学
【学位级别】:硕士
【学位授予年份】:2016
【分类号】:TP334.7
【目录】:
- 摘要5-6
- ABSTRACT6-16
- 第一章 绪论16-25
- 1.1 研究背景与意义16-18
- 1.2 国内外研究现状和发展态势18-23
- 1.2.1 新浪的Fast Socket18-20
- 1.2.2 Intel DPDK20
- 1.2.3 风河(Wind River) 网络加速平台20-21
- 1.2.4 开源社区中的工作21-23
- 1.2.4.1 Net Map高性能网络IO框架21
- 1.2.4.2 PF Ring高性能网络IO框架21-23
- 1.2.4.3 Netdp、Rump Kernel、KNI23
- 1.3 论文主要工作23-24
- 1.4 论文组织结构24-25
- 第二章 DPDK高性能数据平面加速套件25-36
- 2.1 DPDK总体架构25-26
- 2.2 DPDK的数据平面加速原理26-31
- 2.2.1 驱动层优化26-28
- 2.2.1.1 NAPI技术26-27
- 2.2.1.2 Poll Mode Driver-UIO用户态驱动27-28
- 2.2.2 内存优化28-29
- 2.2.2.1 大页内存28-29
- 2.2.2.2 rte_mbuf结构29
- 2.2.3 线程调度优化29-30
- 2.2.4 无锁队列30-31
- 2.3 DPDK转发性能测试31-35
- 2.3.1 测试目的和测试意义31
- 2.3.2 测试工具31
- 2.3.3 测试用例31-35
- 2.3.3.1 Dpdk Ovs和Ovs对物理网口间的数据转发性能测试32-33
- 2.3.3.2 Dpdk Ovs和Ovs对物理网卡和虚拟网卡转发性能测试33-34
- 2.3.3.3 Dpdk Ovs和Ovs对虚拟网卡之间的转发性能测试34-35
- 2.3.4 测试结果分析35
- 2.4 本章小结35-36
- 第三章 基于DPDK的类SOCKET接口设计36-75
- 3.1 概述36-37
- 3.1.1 设计工作36
- 3.1.2 设计目的36
- 3.1.3 性能提高原因分析36-37
- 3.2 总体架构37-39
- 3.3 平台无关层39-42
- 3.3.1 系统初始化39-40
- 3.3.2 内存管理40
- 3.3.3 数据包处理40-41
- 3.3.4 无锁队列41
- 3.3.5 定时器41
- 3.3.6 Hash查找41-42
- 3.4 消息通信的设计42-43
- 3.5 协议栈实现43-48
- 3.5.1 总体架构43-46
- 3.5.1.1 入流量执行流程44-45
- 3.5.1.2 出流量执行流程45-46
- 3.5.2 数据包发送处理46-48
- 3.5.2.2 路由查找47
- 3.5.2.3 ARP协议的实现47-48
- 3.6 UDP协议的实现48-52
- 3.6.1 UDP传输控制块48-49
- 3.6.2 UDP入流量处理49-50
- 3.6.3 UDP出流量处理50-51
- 3.6.4 UDP消息处理回调函数51
- 3.6.5 UDP checksum计算51
- 3.6.6 UDP hash计算51
- 3.6.7 UDP port自动选择51-52
- 3.6.8 其他相关API52
- 3.7 TCP协议的实现52-68
- 3.7.1 Tcp client结构53-55
- 3.7.1.1 TCP状态53
- 3.7.1.2 发送窗口Tx_w和接收窗口Rx_w53
- 3.7.1.3 发送队列send和接收队列recv53-54
- 3.7.1.4 定时重传和快重传54
- 3.7.1.5 累计发送54-55
- 3.7.2 TCP传输控制块55
- 3.7.3 TCP连接建立55-59
- 3.7.3.1 两个队列55-58
- 3.7.3.2 accept event事件58-59
- 3.7.4 TCP选项59-60
- 3.7.5 TCP入流量处理60-66
- 3.7.5.1 tcp_ack_callback()回调函数60-61
- 3.7.5.2 tcp_syn_callback()回调函数61-62
- 3.7.5.3 tcp_syn_ack_callback()回调函数62-63
- 3.7.5.4 tcp_push_ack_callback()回调函数63-64
- 3.7.5.5 tcp_fin_ack_callback()回调函数64-66
- 3.7.6 TCP出流量处理66-68
- 3.7.6.1 Clark算法66
- 3.7.6.2 tcp_dequeue_burst函数66-68
- 3.7.7 TCP消息处理回调函数68
- 3.8 套接口层实现68-69
- 3.9 应用的移植69-72
- 3.9.1 TFTP服务器的移植70-71
- 3.9.2 HTTP服务器的移植71-72
- 3.10 本章小结72-75
- 第四章 系统测试及结果分析75-97
- 4.1 TFTP服务器测试75-78
- 4.1.1 测试目的75
- 4.1.2 测试场景和测试步骤75-76
- 4.1.3 测试工具76
- 4.1.4 测试结果和分析76-78
- 4.2 TCP测试78-88
- 4.2.1 测试目的78
- 4.2.2 测试工具78
- 4.2.3 TCP功能测试78-85
- 4.2.3.1 测试场景部署78-79
- 4.2.3.2 三次握手、连接关闭、确认79-81
- 4.2.3.3 累计发送和分次接收81-84
- 4.2.3.4 定时重传84-85
- 4.2.4 TCP数据传输性能测试85-88
- 4.2.4.1 测试场景和测试步骤85-86
- 4.2.4.2 测试结果和分析86-88
- 4.3 HTTP服务器测试88-96
- 4.3.1 功能测试88-89
- 4.3.1.1 测试场景和测试步骤88
- 4.3.1.2 测试结果和分析88-89
- 4.3.2 性能测试——tinyhttpd单线程非并发性测试89-92
- 4.3.2.1 测试场景和测试步骤89-90
- 4.3.2.2 测试结果和分析90-92
- 4.3.3 性能测试——tinyhttpd多线程模型并发性测试92-96
- 4.3.3.1 测试场景与测试步骤93
- 4.3.3.2 测试结果分析93-96
- 4.4 本章小结96-97
- 第五章 总结与展望97-99
- 5.1 本论文主要成果97
- 5.2 下一步工作展望97-99
- 致谢99-100
- 参考文献100-102
- 攻硕期间取得的研究成果102-103
【相似文献】
中国期刊全文数据库 前10条
1 李威;殷志坚;;ZLIP TCP/IP协议栈在嵌入式系统中的应用[J];单片机与嵌入式系统应用;2013年12期
2 谢雪松,胡长阳;基于驱动程序的协议栈设计[J];电子工程师;2000年04期
3 郝京宇,黄建华,贾风根;协议栈的实现方法[J];计算机工程;2004年14期
4 何友鸣,郭凯红;协议栈内部非阻塞通信的一种实现策略[J];计算机系统应用;2005年08期
5 李伟;;基于协议栈的移动性技术对比分析[J];江苏通信技术;2006年06期
6 王海花;杨斌;;Linux TCP/IP协议栈的设计及实现特点[J];云南民族大学学报(自然科学版);2007年01期
7 宋丽华;张晓彤;王沁;郭艳飞;;嵌入式协议栈可重构性分析与设计实现[J];计算机科学;2007年09期
8 李庆江;;基于LwIP协议栈的嵌入式Web服务器的设计及实现[J];山东轻工业学院学报(自然科学版);2008年04期
9 孟浩;;一种通用嵌入式Web服务器精简协议栈的设计与实现[J];科技资讯;2008年34期
10 徐宏U,
本文编号:605107
本文链接:https://www.wllwen.com/kejilunwen/jisuanjikexuelunwen/605107.html