目录

  • 前言
  • 简介
  • 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
效果图:

Netronome智能网卡——XDP卸载相关推荐

  1. 智能网卡OVS卸载设计

    智能网卡卸载OVS作用 主要通过编辑报文实现卸载OVS转发功能:比如加vxlan头或者去vxlan头,修改MAC, 修改IP,修改UDP或者TCP的字段:以实现网络的智能互联功能: 智能网卡卸载OVS ...

  2. 图解DPU智能网卡,各种网络卸载细节

    关注笔者公众号可以获取更多 DPU智能网卡卸载方面细节 文将会介绍mellanox的dpu智能网卡全卸载的几个方案的实现以及实现架构(ovs全卸载.ipsec卸载.操作系统升级等). BlueFile ...

  3. 智能网卡的网络加速技术

    2021年9月25日,由"科创中国"未来网络专业科技服务团指导,江苏省未来网络创新研究院.网络通信与安全紫金山实验室联合主办.SDNLAB社区承办的2021中国智能网卡研讨会中,多 ...

  4. 从网络虚拟化,看智能网卡发展史

    5G的到来无疑将加速网络虚拟化的进程,在电信领域,网络虚拟化不仅在核心网,也在网络的边缘.但是,仅仅通过软件解决方案不能提供足够的网络可靠性和服务质量,而具有高级可编程功能智能网卡(Smart NIC ...

  5. mellanox 网卡驱动_收购Mellanox之后 NVIDIA发布全球首款25G安全智能网卡

    都说N卡网速快,现在,NVIDIA网卡真的来了-- 4月27日,NVIDIA正式完成了对Mellanox(迈络思)的收购,成交价70亿美元,约合人民币496亿元,得到了后者丰富的高性能网络解决方案. ...

  6. 锐文科技智能网卡xNIC-200/400在国产服务器测试性能报告

    锐文科技,依托于网络虚拟化,软件定义网络,网络安全等前沿技术:专注于基于FPGA的高性能网络产品开发:为云计算,高性能计算,企业网络及金融领域等提供高带宽,低延迟的智能网卡(Smart NIC).公司 ...

  7. 智能网卡相关知识(smart nic 、DPU)

    网卡作为穿行在网络与计算之间的桥梁,是可以解决计算瓶颈的关键硬件. 随着CPU 密度和数据中心网络带宽的进一步提升,用户对预期性能的需求,系统运行平稳性都会有更高的要求.云厂商一方面面临巨大的成本压力 ...

  8. 智能网卡-提升网络性能的新选择

    一.智能网口介绍 智能网卡(Smart NIC)是一种专用于网络数据处理的高性能网卡,采用了定制芯片.高速网络接口和强大的软件支持,可以为数据中心和企业网络提供更快.更安全.更可靠的网络连接和数据传输 ...

  9. 基于智能网卡的vhost-user优化接收方法-学习笔记

    本文是对阿里云文档的学习笔记 1. 为什么需要智能网卡 2. 智能网卡解决方案 3. 接受端的数据通路 4. 零拷贝优化方案 5. 待续 流程图很清楚,不过具体细节没有吃透,后续会有整理

最新文章

  1. vs配置编译c语言,为 VSCode 配置 C 语言编译环境
  2. Xcode 真机程序发布测试
  3. 《CSS揭秘》第五章:字体排印
  4. Akka的好用例[关闭]
  5. 【辟谣】代码规范固然重要,但是不要再黑程序员了...
  6. Hibernate双向多对多关联
  7. hive 时间转字符串_2. HIVE 基本操作
  8. axios post body参数_09-axios
  9. jupyter 托管_如何在本地托管的Jupyter Notebook上进行协作
  10. 【转】位操作基础篇之位操作全面总结
  11. hihocoder217周 树形DP
  12. 因一纸设计稿,我把竞品APP扒得裤衩不剩(中)
  13. Java数组:随机排序
  14. 反编译之脱去乐固加固的壳
  15. 3、可燃气体的爆炸极限
  16. 我们游戏后台架构学习
  17. android微信炸弹代码,微信炸弹怎么弄 微信8.0扔炸弹攻略[多图]
  18. matlab 文件输出到text文件总结
  19. 使用晨曦记账本,根据需要设置记账表格行数
  20. 实例讲解:使用IBM heapAnalyzer分析heap dump文件步骤

热门文章

  1. 互联网金融时代,必看的六种理财模式------------王艾老哥浅析
  2. 计算机视觉的顶刊顶会(转载)
  3. Android中动态改变布局中控件的位置
  4. CTFweb相关靶场推荐与环境配置
  5. 环境搭建|第三篇:apache2+tomcat项目部署
  6. (图解 HTTP)一篇文章带你深入了解 HTTP 协议
  7. java计算机毕业设计安路友汽车租赁源码+数据库+系统+lw文档+部署
  8. 北斗三号频点_我国首颗北斗三号芯片正式发布
  9. VMware vSAN 7 超融合基础架构 (HCI)虚拟化集群解决方案
  10. IDEA搭建简单的SSM(spring+springMVC+mybatis)框架