论文目录 | |
摘要 | 第1-6页 |
ABSTRACT | 第6-16页 |
第一章 绪论 | 第16-25页 |
1.1 研究背景与意义 | 第16-18页 |
1.2 国内外研究现状和发展态势 | 第18-23页 |
1.2.1 新浪的Fast Socket | 第18-20页 |
1.2.2 Intel DPDK | 第20页 |
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、KNI | 第23页 |
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 其他相关API | 第52页 |
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_w | 第53页 |
3.7.1.3 发送队列send和接收队列recv | 第53-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页 |