文摘
英文文摘
声明
第一章 绪论
1.1 研究背景
1.2 研究的目的和意义
1.3 本论文的主要工作
1.4 本文的组织结构
第二章 Linux内核及其网络数据结构sk_buff的介绍
2.1 Linux2.6内核简介
2.2 Linux2.6网络子系统简介
2.3 重要的网络数据结构
2.3.1 sk_buff结构概述
2.3.2 sk_buff的数据结构
2.3.3 sk_buff的相关操作
2.3.4 skb_shared_info数据结构
2.4 小结
第三章 IPv6协议及IPv6分片数据包重组算法的介绍
3.1 网络协议栈
3.2 IPv6协议
3.2.1 IPv6协议变化概述
3.2.2 IPv6数据包的包头结构
3.2.3 IPv6数据包的分段
3.2.4 IPv6数据包的扩展头简介
3.2.5 IPv6数据包的分段扩展头
3.3 IPv6分片重组规则
3.3.1 RFC791分片重组算法的基本思想
3.3.2 RFC815分片重组算法中“洞”的概念
3.4 小结
第四章 多线程编程
4.1 线程在Linux下的实现
4.1.1 线程的创建
4.1.2 线程的终结
4.2 多线程编程的优点
4.3 有锁多线程编程
4.3.1 Linux内核同步机制
4.3.2 有锁多线程编程
4.4 无锁多线程编程
4.4.1 无锁算法简介
4.4.2 CAS原语汇编实现
4.4.3 利用CAS原语实现lock-free算法
4.5 FIFO链表队列的lock-free算法
4.5.1 FIFO队列及其的相关lock-free算法
4.5.2 有序单链表的lock-free算法简介
4.5.3 代码只执行一次的编程技巧
4.6 小结
第五章 IPv6分片数据包并行重组的设计与实现
5.1 Linux2.6内核的IPv6分片重组算法
5.2 分片重组模块reas_cas的lock-free算法设计
5.2.1 分片重组模块reas_cas的数据结构
5.2.2 分片包接收算法设计
5.2.3 fq缓冲区节点的分配和释放算法设计
5.2.4 分片包入队算法设计
5.2.5 分片重组算法设计
5.2.6 分片链超时设计
5.3 分片重组模块reas_cas的lock-free算法实现
5.4 分片重组模块reas_cas的lock-free算法测试
5.4.1 测试平台的搭建
5.4.2 LF_RING模块数据包捕获的测试
5.4.3 IPv6分片数据包并行重组模块测试
5.5 小结
总结与展望
参考文献
攻读硕士学位期间取得的研究成果
致 谢