250 likes | 335 Views
硕士毕业生毕业答辩. 一种高性能网络连接跟踪器的设计和实现. 答辩人:张晨晖 导师:刘斌 教授 2011 年 5 月 25 日. 一种高性能网络连接跟踪器的设计和实现. 内容概述. 1. 问题背景. 2. 连接跟踪器设计. 3. 连接跟踪器实现. 4. 仿真测试. 5. 总结. 1 . 问题背景. 一种高性能网络连接跟踪器的设计和实现. 灵活性. 1.1 网络流量分类的意义. 1.2 软件性能不高. ● libNIDS 是软件方案中较高性能的底层构件,但其吞吐率仍无法达到 OC-192 接口标准。. 1 . 问题背景.
E N D
硕士毕业生毕业答辩 一种高性能网络连接跟踪器的设计和实现 答辩人:张晨晖 导师:刘斌 教授 2011年5月25日
一种高性能网络连接跟踪器的设计和实现 内容概述 1.问题背景 2.连接跟踪器设计 3.连接跟踪器实现 4.仿真测试 5.总结
1. 问题背景 一种高性能网络连接跟踪器的设计和实现 灵活性 1.1 网络流量分类的意义 1.2 软件性能不高 ● libNIDS是软件方案中较高性能的底层构件,但其吞吐率仍无法达到OC-192接口标准。
1. 问题背景 一种高性能网络连接跟踪器的设计和实现 灵活性 ● libNIDS性能测试:主机CPU 2GHz,I/O 10Gbps
1. 问题背景 一种高性能网络连接跟踪器的设计和实现 灵活性 1.3 FPGA技术提供了加速的理想平台 • 高度的配置灵活性 • 并行处理能力 • 可部署在路由器线卡上 在支持各种实时网络功能的流量测量、防火墙以及网络入侵检测系统等领域已经得到了广泛的应用。
1. 问题背景 一种高性能网络连接跟踪器的设计和实现 灵活性 1.4 设计目标 高速处理能力 纯硬件实现: Altera Stratix ⅣFPGA 高吞吐率:OC-192 - 10Gbps - 30Mpps的吞吐率(以40字节最小包计算)。 高并发连接数:支持一百万以上的并发连接数。
2. 连接跟踪器设计 一种高性能网络连接跟踪器的设计和实现 2.1 业务识别引擎 2.2 连接跟踪器设计难点 2.3 连接跟踪器结构 2.4 两级存储结构 2.5 其他优化技术
2. 连接跟踪器设计 一种高性能网络连接跟踪器的设计和实现 2.1 业务识别引擎 包含两个部分: 连接跟踪器:提供并维护一个网络连接到业务标签的映射表。 连接识别引擎:简化处理,使不成为性能瓶颈
一种高性能网络连接跟踪器的设计和实现 2.2 连接跟踪器设计难点 包内容 缓存 内存管理 方案 连接跟踪 设计难点 灵活性 连接表 维护 参数化 层次化 带宽 要求 并发连接 要求 高速缓存 Cut-through 处理 片外 存储器 高效标识 连接
一种高性能网络连接跟踪器的设计和实现 2.3 连接跟踪器结构
一种高性能网络连接跟踪器的设计和实现 2.4 两级存储结构 第一级是片内高速缓存。查询操作仅在高速缓存中进行。若高速缓存查找失败,则到片外连接表中查询。注意此时的包不会等待查找结果而是直接发送。 第二级是片外存储器。存储完整的连接表项,采用大容量片外DRAM存储器实现。
一种高性能网络连接跟踪器的设计和实现 2.4.1 高速缓存替换
一种高性能网络连接跟踪器的设计和实现 2.4.2 连接表内存管理 • Stratix Ⅳ E开发板上的RLDRAM Ⅱ存储器容量576Mbits,是连接表存储后端的理想选择。开发板上还有容量为2GB的DDR3内存。总之,片外存储空间巨大,而且价格便宜。连接表不必为提高存储利用率而优化。
一种高性能网络连接跟踪器的设计和实现 2.5 其他优化技术 • 5元组对称散列(H3)作为连接标识CID:104位 -> 40位,碰撞概率<1e-6 • 统一TCP/UDP连接开始和结束判断:非SYN非零载荷——无状态 • 连接超时:防止内存浪费,支持半闭连接。
3.连接跟踪器实现 一种高性能网络连接跟踪器的设计和实现 3.1 高速缓存实现 • 相同地址的4个SRAM模块读出的4个cache表项内容一起组成一个cache line。 • 高速缓存控制模块运行JUMP替换算法。 • 运算的结果是写使能信号wen[]和写数据wdata[]。这些信号将在下一个时钟周期控制控制cache line的更新。
一种高性能网络连接跟踪器的设计和实现 3.2 连接管理器实现 • 命令处理器类似一个简单的流水线CPU。其指令包括“命令” 和“数据” 两部分。 • 把命令处理和存储器读写分开的层次化结构,提供了较高的可扩展性并利于开发中的分别调试。
4. 仿真测试 一种高性能网络连接跟踪器的设计和实现 4.1模块级ModalSim测试 验证子模块逻辑正确性
4. 仿真测试 一种高性能网络连接跟踪器的设计和实现 4.2 高速缓存C程序模拟 • ModalSim仿真可以用于测试模块逻辑正确性,但由于模拟百万并发连接压力则比较慢(以天计)。因此我们编写C程序模拟系统行为。
4. 仿真测试 一种高性能网络连接跟踪器的设计和实现 4.2.1 高速缓存表项和命中率 • 随着高速缓存的增大,命中率有一个从明显到缓慢增长的过程。表项为2K时,命中率达到一半以上(0.53),即一百万连接中有一半的IP包可在高速缓存中找到。这表明,用少量高速缓存确实可以有效的提高查找性能。同时也看到,高速缓存在16K(命中率0.74)以上,增加的高速缓存空间对系统性能的提升并不明显。
4. 仿真测试 一种高性能网络连接跟踪器的设计和实现 4.2.2JUMP和LRU比较
4. 仿真测试 一种高性能网络连接跟踪器的设计和实现 4.3 整体仿真 ModalSim测量整个系统对输入压力的响应,尤其是TTB(识别响应时间)。
4. 仿真测试 一种高性能网络连接跟踪器的设计和实现 4.3.1 TTB和输入带宽压力关系 • 当测试带宽压力由10Mpps上升到80Mpps时,更多的连接需要经过更多的包才能被识别出来。也就是说,带宽压力下TTB增大。
4. 仿真测试 一种高性能网络连接跟踪器的设计和实现 4.3.2 TTB和高速缓存大小关系 • 增加高速缓存的大小可以改善TTB,但是改善不是线性的。
系统设计 以高吞吐率(OC-192)和高并发连接数(1M)为目标,设计了基于FPGA的高性能业务识别引擎结构及其连接跟踪模块。主要特点是使用片上高速缓存和片外大容量存储器组成的两级存储结构、cut-through工作模式和高效的散列和内存管理方案。 系统实现 采用了自顶向下逐步细化的设计思路,按照模块功能的独立性进行了模块划分,尽量对系统行为参数化以便灵活配置。对各个模块进行了详细的设计描述,并使用SystemVerilog编码完成了整个设计。 验证和测试 采用了模块级和系统级两步验证手段保证设计和实现逻辑的正确性,在ModelSim仿真工具下进行了验证。为减少仿真时间,结合C语言模拟Cache行为进行了压力测试,初步得到系统工作参数。 5. 总结 一种高性能网络连接跟踪器的设计和实现