Netronome智能网卡——XDP卸载

前言

本文对XDP卸载到智能网卡做一个记录,XDP和eBPF的概念参考Cilium的BPF和XDP指南

简介

我手头的两块智能网卡型号为Agilio CX 2x25GbE,具有两个25G速率的端口,需要安装对应的光模块,SFP+的光模块能达到10G速率,SFP28的光模块能达到25G速率;

网卡支持DPDK、P4可编程、OVS卸载、XDP卸载等功能,适用于云IaaS/PaaS、NFV、数据中心微分段、网络遥测、零信任安全等多种场景和应用。

本教程主要针对XDP卸载到智能网卡。

XDP卸载优势

  • 与内核协同;
  • 对传统工具支持更好;
  • 无需独占CPU核,节省CPU资源;
  • 高性能;

应用

4层负载均衡、DdoS防御、网络性能加速、网络遥测、软件定义路由……
XDP卸载支持的功能(来源于Netronome eBPF卸载的官方文档):
网卡支持的卸载功能
网卡和eBPF卸载的详细资料参考netronome官网的介绍文档:
https://www.netronome.com/products/agilio-cx/
https://www.netronome.com/technology/ebpf/

软硬件准备

网卡安装到标准的PCIe接口,在主机上安装linux系统(可使用双系统),使用官网推荐的Ubuntu18.04 或 Fedora 28(桌面版即可,服务器版未尝试),本教程环境使用的是Ubuntu18.04.5桌面版;网卡不支持windows

网卡驱动和设置

由于网卡使用的nfp驱动合并在主linux,网卡正确安装并启动系统后,使用ip link命令即可显示出我们所安装的网卡。若不显示,检查驱动模块:
lsmod " grep nfp
若无输出,证明驱动模块未加载,尝试手动加载:
modprobe nfp

将光模块安装后,以光纤跳线连接两主机网卡(或将同网卡两端口相连接,仅用于测试);

速率设置:为网卡设置匹配的速率,否则网卡将显示线缆未连接;

注:更改端口速率必须按顺序进行,即enp4s0np0->enp4s0np1,不同主机和系统可能显示的网卡端口名不同;

down掉对应端口
ip link set dev $ETHNAME down
ethtool设置端口速率
ethtool -s $ETHNAME speed 10000
重载nfp模块以使速率设置生效
rmmod nfp; modprobe nfp

网卡设置完成后应能够正常连通;

更新固件

初始固件为网卡基础固件,不支持XDP卸载,固件类型可通过ethtool -i <网卡端口名称>查看;下图为初始固件:
![在这里插入图片描述](https://img-blog.csdnimg.cn/8bc33baaed7a4307ae8579f05ebdc08f.png在这里插入图片描述
升级完固件以后:
在这里插入图片描述

卸载示例

以最简单的丢包程序为例,也可修改返回码测试其他行为:

#include <linux/bpf.h>
int xdp_prog1 (struct xdp_md *ctx __attribute__((unused) )) {
    return XDP_DROP; 
}

卸载方式

  1. 通过ip命令卸载
    ip link set dev $ETHNAME xdpoffload obj drop.o sec .text
  2. 通过加载程序卸载,可使用libbpf相关接口,或BCC(同样使用了libbpf库)
    此处不赘述

本文以ip link为例:

  1. 使用Clang编译:
    clang -O2 -target bpf -c drop.c -o drop.o
  2. 使用ip命令加载程序
    ip link set dev $ETHNAME xdpoffload obj drop.o sec xdp
  3. 查看程序是否正确被卸载:
    ip link show dev $ETHNAME

此时XDP程序已卸载到网卡,丢弃一切接收到的数据包。
4. netronome还提供了脚本,以表格形式实时显示网卡和XDP程序的实时速率等:
nfp-drv-kmods/tools/stat_watch.py $ETHNAME -c
效果图:
在这里插入图片描述

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WuPeng_uin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值