通过Mellanox ConnectX NIC使用XDP加速
通过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加速相关推荐
- Ubuntu 18.04 Mellanox ConnectX 网络适配器驱动安装
验证系统是否安装了NVIDIA网络适配器: lspci -v | grep Mellanox 可以看到系统中安装了ConnectX -6网络适配器 官网 官方使用手册 下载驱动,ConnectX -6 ...
- Mellanox能给英伟达带来什么?
目录 Mellanox能给英伟达带来什么? mellanox以太网卡 以太网卡 - 概述 Mellanox 10/25/40/50/56/100/200GbE聚合网络网卡 Mellanox Conne ...
- Native xdp hook 点
XDP 支持三种操作模式: Native XDP(XDP_FLAGS_DRV_MODE) 默认的工作模式,Native工作在网卡驱动的RX队列上. Offloaded XDP(XDP_FLAGS_HW ...
- 虚拟化硬件加速-vdpa
以前提到过vdpa,只有mellanox connectx-5网卡,不支持vdpa,公司最近来了mellanox DPU,也就是bluefield-2,自带connectx-6网卡,硬件支持vdpa, ...
- 业界第一个真正意义上开源100 Gbps NIC Corundum介绍
来源:内容由本人微信公众号「网络交换FPGA」编译自「FCCM2020」,谢谢.第一次在csdn上发文章. FCCM2020在5月4日开始线上举行,对外免费.我们有幸聆听了其中一个有关100G开源NI ...
- linux xdp简介
XDP是利用ebpf提供的全新内核网络性能提升方案,主要优势包括: 它不需要任何专门的硬件 它不需要内核绕过 它不会取代 TCP/IP 堆栈 它与 TCP/IP 堆栈以及 BPF 的所有优点协同工作 ...
- Linux 网络加速和性能优化
1. IPA 2. GRO 3. GSO 4.智能选网 5.多链路聚合技术 6. 网络带宽预测 7.网络性能预测 8. 基于机器学习的网络优化模型 9. 构建用户态协议栈,极简协议 10. 高速数据网 ...
- NVIDIA空中导航SDK改造5G通信
NVIDIA空中导航SDK改造5G通信 Transforming Next-Generation Wireless with 5T for 5G and the NVIDIA Aerial SDK N ...
- 一切为了AI!黄仁勋GTC大会发布全新DPU处理器,计算吞吐量三年跨越1000倍
点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送达 编辑:白峰.QJP [导读]昨晚的GTC大会,英伟达推出了包括数据中心.边缘人工智能. ...
最新文章
- 一文综述人脸检测算法(附资源)
- vue-quill-editor + element-ui upload实现富文本图片上传
- 数据库的字段是date java里面能用timestamp吗_数据库中DATETIME,DATE和TIMESTAMP类型 的区别...
- C++知识点50——虚函数与纯虚函数(上)
- Storyboard更改layer层属性
- python编辑svg文件_SVG 文本
- Machine Learning实验3】SoftMax regression
- 的tree用法_linux命令tree用法
- VTK:可视化算法之TubesWithVaryingRadiusAndColors
- idea springBoot 配置devtools实现热部署
- sql字符处理函数concat()、concat_ws()
- flink基本程序架构
- Oracle 11g 字符集修改
- 1. java程序的编译命令_Java中javac、java、javap使用详解(java编译命令)
- matlab 矩阵规定化,Matlab实现直方图规定化
- Chromium浏览器的一些使用总结
- ubuntu下给谷歌chrome浏览器添加去广告的插件
- Normalize.css介绍与使用
- GIS(地理信息系统/地理信息科学)怎么评职称?
- android 相机编程,Android相机开发系列