knot DNS 02 Tips - XDP

3 篇文章 0 订阅

Knot XDP & optimizations

Kernel: Knot XDP (AF_XDP) 高性能模式, 需升级内核到 4.18.x(推荐使用 5.x 内核).
version: 3.x
网卡: 建议使用Intel系列多队列支持 XDP 网卡(700系列(i40e),500系列(ixgbe)),

configure

listen-xdp:
配置 xdp, 格式为 interface@port:

server:
    rundir: "/var/run/knot"
    user: knot:knot
    listen: [ 127.0.0.1@53, ::1@53 ]
    listen-xdp: enp5s0f1@53

Optimizations

DEVNAME=enp5s0f1
# 调整CPU为性能模式
for file in `find  /sys/devices/system/cpu/ -name scaling_governor`; do echo performance > $file; done
# 启用 UDP RSS HASH
ethtool -N $DEVNAME rx-flow-hash udp4 sdfn
ethtool -N $DEVNAME rx-flow-hash udp6 sdfn
# 设置网卡 RX/TX channels(queue)
ethtool -L $DEVNAME combined 64
# 设置网卡 RX/TX 硬件描叙符数量
ethtool -G $DEVNAME rx 1024 tx 2048
# 
renice -n 19 -p $(pgrep '^ksoftirqd/[0-9]*$')

Limitations

  1. XDP 只处理UDP请求;
  2. 不支持 VLAN;
  3. 不支持 Dynamic DNS;
  4. MTU 限制 1792 长度;
  5. 不支持UDP Checksum校验;
  6. 一个网卡不支持多个BPF filters;
  7. BPF filter 不支持自动卸载, 需手动执行ip link set dev <ETH> xdp off;
  8. big-endian字节序平台需重新编译;
  9. Symmetrical routing is required (要求 源/目的 MAC/IP 一致, 有点类似对称哈希, 具体作用不太清楚, 可能是用于XDP TX与RX使用同一个queue id);

kxdpgun

kxdpgun 是 Knot 基于XDP开发的dns性能测试工具, 使用很简单:

Usage: kxdpgun [-t duration] [-Q qps] [-b batch_size] [-r] [-p port] [-F cpu_affinity] [-I interface] -i queries_file dest_ip

-I interface: knot 3.1 version
-i queries_file 格式:

abc6.example.com. AAAA
a.example.com. NS E
ab.example.com. A D
abcd.example.com. DS D

示例:

./kxdpgun -i name.txt -I enp5s0f1 172.16.41.170 -t 30 -Q 8000000 -F 0xffff 

在本地测试环境, CPU E5-2670 X 2 单个域名请求可达到 8Mpps %100 无丢失:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Reference

Knot Mode XDP

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值