通过Mellanox ConnectX NIC使用XDP加速

Accelerating with XDP over Mellanox ConnectX NICs

XDP(eXpress Data Path)是Linux内核网络堆栈中的可编程数据路径。为BPF提供了一个框架,可以在运行时实现高性能的包处理。XDP与Linux网络堆栈协同工作,不是内核旁路。
由于XDP运行在内核网络驱动程序中,可以从网卡的RX环读取以太网帧并立即采取运行。XDP通过在驱动程序中实现的RX钩子插入eBPF基础架构。XDP是EBPF的一个应用程序,可以使用返回码触发操作、修改包内容和推/拉头文件信息。

XDP有各种各样的用例,比如包过滤、包转发、负载平衡、DDOS缓解等等。一个常见的用例是XDP_DROP,指示驱动程序丢弃数据包。这可以通过运行自定义BPF程序来解析在驱动程序中接收到的传入数据包来完成。这个程序返回一个决策判断或返回码(XDP_DROP),其中数据包在驱动程序级被丢弃,而不会浪费任何进一步的资源。Ethtool计数器可用于验证XDP程序的操作。

Running XDP_DROP

XDP程序一进入网络驱动程序就运行,从而提高了网络性能。还提高了CPU利用率。Mellanox ConnectX NIC系列允许NIC硬件准备元数据。此元数据可用于对使用XDP的应用程序执行硬件加速。

下面是一个如何使用Mellanox ConnectX-5运行XDP_DROP的示例。

检查当前内核是否支持bpf和xdp:

sysctl net/core/bpf_jit_enable

如果找不到,请编译并运行启用了BPF的内核。可以使用任何大于5.0的上游内核。
启用以下kconfig标志:

· BPF BPF_SYSCALL

· BPF_JIT

· HAVE_BPF_JIT

· BPF_EVENTS

创新启动新的kernel.

Install clang and llvm:

yum install -y llvm clang libcap-devel

按照以下方法编译

cd make samples/bpf/

这将编译所有可用的XDP应用程序。编译完成后,将看到/sample/bpf下的所有XDP应用程序(图1)。

Figure 1. XDP applications under /sample/bpf.

在前面的安装中,现在可以运行XDP应用程序了。可以在两种模式下运行:
驱动程序路径必须在驱动程序中具有实现。以页面分辨率工作,不创建SKB。性能明显提高。Mellanox NIC支持此模式。

通用路径适用于任何网络设备。与SKBs合作,但性能更差。

在驱动程序路径中运行XDP_DROP。XDP_DROP是在Linux中丢弃数据包最简单、最快的方法之一。在这里,指示驱动程序在驱动程序的最早Rx阶段丢弃数据包。这意味着数据包被回收回刚刚到达的RX环队列中。

位于<linux\u source>/samples/bpf/implements XDP Drop的xdp1应用程序。

选择选择的流量生成器。使用Cisco TRex。

在RX端,使用以下命令在驱动程序路径中启动xdp1:

<PATH_TO_LINUX_SOURCE>/samples/bpf/xdp1 -N # -N can be omitted

可以使用应用程序输出,同时ethtool计数器显示XDP丢弃率:

ethtool -S | grep -iE rx[0-9]*_xdp_drop

Figure 2. Verify XDP drop counter using ethtool counters.

通过Mellanox ConnectX NIC使用XDP加速相关推荐

  1. Ubuntu 18.04 Mellanox ConnectX 网络适配器驱动安装

    验证系统是否安装了NVIDIA网络适配器: lspci -v | grep Mellanox 可以看到系统中安装了ConnectX -6网络适配器 官网 官方使用手册 下载驱动,ConnectX -6 ...

  2. Mellanox能给英伟达带来什么?

    目录 Mellanox能给英伟达带来什么? mellanox以太网卡 以太网卡 - 概述 Mellanox 10/25/40/50/56/100/200GbE聚合网络网卡 Mellanox Conne ...

  3. Native xdp hook 点

    XDP 支持三种操作模式: Native XDP(XDP_FLAGS_DRV_MODE) 默认的工作模式,Native工作在网卡驱动的RX队列上. Offloaded XDP(XDP_FLAGS_HW ...

  4. 虚拟化硬件加速-vdpa

    以前提到过vdpa,只有mellanox connectx-5网卡,不支持vdpa,公司最近来了mellanox DPU,也就是bluefield-2,自带connectx-6网卡,硬件支持vdpa, ...

  5. 业界第一个真正意义上开源100 Gbps NIC Corundum介绍

    来源:内容由本人微信公众号「网络交换FPGA」编译自「FCCM2020」,谢谢.第一次在csdn上发文章. FCCM2020在5月4日开始线上举行,对外免费.我们有幸聆听了其中一个有关100G开源NI ...

  6. linux xdp简介

    XDP是利用ebpf提供的全新内核网络性能提升方案,主要优势包括: 它不需要任何专门的硬件 它不需要内核绕过 它不会取代 TCP/IP 堆栈 它与 TCP/IP 堆栈以及 BPF 的所有优点协同工作 ...

  7. Linux 网络加速和性能优化

    1. IPA 2. GRO 3. GSO 4.智能选网 5.多链路聚合技术 6. 网络带宽预测 7.网络性能预测 8. 基于机器学习的网络优化模型 9. 构建用户态协议栈,极简协议 10. 高速数据网 ...

  8. NVIDIA空中导航SDK改造5G通信

    NVIDIA空中导航SDK改造5G通信 Transforming Next-Generation Wireless with 5T for 5G and the NVIDIA Aerial SDK N ...

  9. 一切为了AI!黄仁勋GTC大会发布全新DPU处理器,计算吞吐量三年跨越1000倍

    点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送达 编辑:白峰.QJP [导读]昨晚的GTC大会,英伟达推出了包括数据中心.边缘人工智能. ...

最新文章

  1. 一文综述人脸检测算法(附资源)
  2. vue-quill-editor + element-ui upload实现富文本图片上传
  3. 数据库的字段是date java里面能用timestamp吗_数据库中DATETIME,DATE和TIMESTAMP类型 的区别...
  4. C++知识点50——虚函数与纯虚函数(上)
  5. Storyboard更改layer层属性
  6. python编辑svg文件_SVG 文本
  7. Machine Learning实验3】SoftMax regression
  8. 的tree用法_linux命令tree用法
  9. VTK:可视化算法之TubesWithVaryingRadiusAndColors
  10. idea springBoot 配置devtools实现热部署
  11. sql字符处理函数concat()、concat_ws()
  12. flink基本程序架构
  13. Oracle 11g 字符集修改
  14. 1. java程序的编译命令_Java中javac、java、javap使用详解(java编译命令)
  15. matlab 矩阵规定化,Matlab实现直方图规定化
  16. Chromium浏览器的一些使用总结
  17. ubuntu下给谷歌chrome浏览器添加去广告的插件
  18. Normalize.css介绍与使用
  19. GIS(地理信息系统/地理信息科学)怎么评职称?
  20. android 相机编程,Android相机开发系列

热门文章

  1. 2022-2028年中国儿童保健品行业市场研究及前瞻分析报告
  2. java数据类型相互转换工具类
  3. RNN,LSTM,GRU基本原理的个人理解重点
  4. 汇编语言将数据、代码、栈放入不同段基础
  5. Lambda 表达式基础理论与示例
  6. 自定义Kubernetes调度程序来编排高可用性应用程序
  7. 超轻量AI引擎MindSpore Lite
  8. 双圆弧插值算法(三,代码实现)
  9. TSR交通标志检测与识别
  10. 快速搭建第一个Mybatis程序