本科毕业设计摘要

高速采集驱动库的机制及性能研究

Research on Mechanism and Performance of High - speed packet capture Driver Library

1.研究业内实时报文采集的不同机制;

2.设计实验,实测不同用例下不同驱动库的性能;

3.根据研究结果提高现有采集软件性能。

实验:


1、发包程序

pf_ring:zsend

dpdk: pktgen-dpdk (1.8版本不能运行)

2、性能分析

vtune

perf

3、性能测试

单线程run to completion 对比(pf_ring 和 DPDK性能进行对比,基于不同报文长度)

单Rx双worker的pipeline模型线程分布  NUMA (利用最小长度报文进行测试)

改变网卡队列长度对收包速率的影响(微小影响)

单Rx的pipeline模型worker数量变化

单Rx的pipeline模型线程栈分布

双Rx双Worker的pipeline模型线程分布

双接收队列时,网卡RSS结果均衡程度影响速率(有影响)

多线程run to completion 对比  NUMA

DPDK多生产者多消费者(mpmc)的可扩展性分析

xDR线程分布

4、理论基础

Linux内核处理报文的过程(结合内核代码)(附带了解 IRQ、软中断、RPS)

RPS技术:

RPS(Receive Packet Steering)多核CPU单队列网卡条件下,在软件层面模拟实现硬件网卡的多队列。

在网卡驱动函数里对每一条流依据四元组(SIP,SPORT,DIP,DPORT)做Hash,再根据Hash标志将软中断的负载均衡到各个CPU

RFS(Receive Flow Steering)确保应用程序处理的CPU和软中断处理的CPU是同一个,可以充分利用CPU的Cache

Linux报文采集:

Linux报文采集通常采用TCP/IP协议栈的嵌套字实现。嵌套字主要有三种类型

流式嵌套字、数据报嵌套字、原始嵌套字

tcpdump设置钩子函数复制报文,libpcap直接使用原始嵌套字方式。以上两种都是基于内核协议栈,报文获取来自于内核协议栈的复制

PF_Ring:

高速数据包采集库,提供两个层次的库供用户使用。一个层次对传统报文处理方法做了改进,基本处理依然依赖内核态的中断。第二个层次是对报文处理方法进行大量的改进,性能提升显著,不过还未开源。

NUMA相关理论

报文处理中的负载均衡的了解(RSS、RPS、pipeline处理模型)

5、笔记

testpmd

启动testpmd程序 ./app/testpmd -c 0xf -n 4 -- -i

程序启动后你可以执行help命令查看帮助信息;

start  启动数据转发;

stop   停止并统计数据转发结果

程序启动后默认是io转发模式,

set  fwd  io|mac|rxonly|txonly|csum  设置其他转发模式,如    set  fwd  mac   设置为mac转发模式;

6、阶段任务

#### **任务描述**

- 1. 了解DPDK,学习DPDK官网文档、电信的DPDK资料、intel ppt

- 2. 在服务器83.11上安装DPDK

- 3. 运行tcpreplay

- 4. 运行l2fwd,l3fwd实验一下报文在设备之间的传输

#### **输出:**

- 每天在issue上记录一下当天完成的内容。

#### **时间:**

- 10月12日前学习DPDK文档

- 10月14日前安装DPDK,运行DPDK的testpmd和tcpreplay,同时继续学习DPDK文档

- 10月15日前安装运行l2fwd和l3fwd例程,同时继续学习DPDK文档

#### **任务描述**

- 1. 使用zsend及其命令行配置

- 2. 使用pktgen-dpdk及其配置脚本

- 3. 学习vtune文档并实验

- 4. 使用perf及其命令行配置

#### **输出:**

- 每天在issue上记录一下当天完成的内容。

#### **时间:**

10月28日前

你可能感兴趣的:(本科毕业设计摘要)