文章目录
一、数据包测试仪dnsperf设计
前言
在 网络编程(五):基于DPDK的用户态协议栈设计 的基础上实现高性能dns server。
1. DNS服务
- 1.请求频率很高
2.速度要求响应快(dpdk可以做到高性能吞吐量)
源码: 2410_vip / 9.4-zdns · GitLab
启动dns服务指令
gcc -o dns dns.c
./dns
./build/dns
BUG整理
- Q:会出现error : Permission denied
A:端口号 < 1024,默认是系统端口, 需要root权限
2. 配置本地网络访问DNS
根据源码条件,win+R ==> cmd 输入: nslookup foo.bar.com
- 本节代码内容:
dpdk环境配置
[00:19:40] <== dpdk绑定网卡eth0 [**2.4.1 dpdk搭配环境**]
静态网关设置
代码运行
rte_pktmbuf_pool_create(); //创建内存池
从网卡接收数据开始的代码逻辑(目的是只把dns协议数据解析)
3. 数据包性能测试
(1)测试本地dns server性能
测试工具:dnsperf DNS Performance Testing Tools
编译指令
//编译
./autogen.sh
./configure
make
//执行
dns server: ./dns
dnsperf: ./src/dnsperf -s 192.168.1.24 -d queries.txt -q 100
测本台机器:./src/dnsperf -s 192.168.1.24 -p 53 -d queries.txt -q 100
测试结果
跑eth0本地内核网卡上的dns server
(2)测试基于dpdk的dns server性能
核心API
malloc() --> rte_malloc()
memcpy() --> rte_memcpy()
编译指令
//dns server
make clean
make
./build/dns
//dnsperf
./src/dnsperf -s 192.168.1.11 -p 53 -d queries.txt -q 100