![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
RDMA
文章平均质量分 73
CodeFarmerL
软件架构,硬件建模、硬件IP验证、智能网卡、DPU、Android、NPU、AI、RISC-V、NIC(network_interconnect)
展开
-
SRP Linux driver 系列二十:检查系统是否支持SRPT示例运行并安装需要的条件
该脚本将检查系统前提条件并安装缺少的条件,确保系统满足SRPT运行的要求。请注意,在安装过程中可能会询问确认安装依赖包,请根据需要进行确认。将上述脚本保存为名为。原创 2023-07-20 17:15:34 · 72 阅读 · 0 评论 -
SRP Linux driver 系列十九:用于检查系统是否满足运行SRP示例运行脚本
该脚本将检查是否满足运行前提条件,并根据检查结果提供相应的建议。请注意,根据您的系统环境,可能需要进行其他调整和配置。将上述脚本保存为名为。原创 2023-07-20 17:14:15 · 56 阅读 · 0 评论 -
SRP Linux driver 系列十八:SRPT使用示例
在上面的示例中,我们使用SCST Target创建了一个简单的SCSI Target,并使用SRPT后端驱动来处理IO请求。在示例中,我们将使用SCST Target和SRPT后端驱动来模拟一个简单的SCSI Target,并创建一个SCSI Initiator来连接到该SCSI Target,并发送一个IO请求。请注意,这只是一个简单的示例,实际的SCSI和SRPT应用可能涉及更多的配置和设置。根据您的需求和环境,可能需要进行更多的配置和调整。原创 2023-07-20 17:12:53 · 105 阅读 · 0 评论 -
SRP Linux driver 系列十七:ib_srpt.c--函数调用关系
库函数在SRP target的初始化和清理过程中用于与InfiniBand和RoCE设备进行交互,实现设备的配置和管理,以及与RDMA/CM进行连接管理。综上所述,SRPT作为SCST的后端驱动,实现了与SCST的接口,以提供SCSI Target的功能,并通过RDMA协议来处理SCSI Target的IO请求。:用于分配内存区域(MR),在SRP target的初始化过程中,用于获取DMA内存区域,并且用于SRQ的接收缓冲区。函数:该函数是SCST的回调函数,用于释放与SCST Target相关的资源。原创 2023-07-20 17:10:29 · 100 阅读 · 0 评论 -
SRP Linux driver 系列十六:ib_srpt.c--函数九
是一个用于显示SRPT登录信息的sysfs属性,它被定义为可读,不允许写入数据,因此最后一个参数为NULL。变量定义了每个sysfs文件的属性,它们与SRPT RDMA通道的相关信息相关联,并定义了相应的显示函数。这些函数都将被sysfs文件系统调用,并返回要显示的内容,以便用户空间程序能够获取通道的相关信息。函数是一个sysfs属性的show回调函数,用于显示SRPT端口所对应设备的链路层类型。这是一个sysfs属性的store回调函数,用于将用户提供的CPU掩码存储到SRPT端口的。原创 2023-07-20 16:51:23 · 111 阅读 · 0 评论 -
SRP Linux driver 系列十五:ib_srpt.c--函数八
如果命令状态处于SRPT_STATE_NEW、SRPT_STATE_DATA_IN或SRPT_STATE_DONE状态,说明该命令在超时前已经完成,不应该进入超时回调函数,因此会输出错误信息并终止处理。对于其他状态(如SRPT_STATE_NEED_DATA、SRPT_STATE_CMD_RSP_SENT和SRPT_STATE_MGMT_RSP_SENT等),会输出相应的超时错误信息,并调用。总之,该函数负责协调数据传输的过程,根据传输的结果返回相应的状态给SCST核心,以便继续处理后续的操作。原创 2023-07-20 14:23:22 · 90 阅读 · 0 评论 -
SRP Linux driver 系列十四:ib_srpt.c--函数七
该函数在传输数据时,通过查询队列对的属性信息,计算超时时间(T_tr),然后检查计算出的 RDMA 完成时间是否超过预设的超时时间 RDMA_COMPL_TIMEOUT_S。该函数用于处理RDMA传输过程中的SG映射。总的来说,该函数是RDMA连接管理的核心处理函数,根据不同的RDMA CM事件类型,将控制流交给相应的处理函数,并返回相应的结果,以便进行后续的处理。总的来说,该函数是连接管理的核心处理函数,根据不同的连接管理事件类型,将控制流交给相应的处理函数,并返回相应的结果,以便进行后续的处理。原创 2023-07-20 11:27:38 · 72 阅读 · 0 评论 -
SRP Linux driver 系列十三:ib_srpt.c--函数六
然后,它增加通道的引用计数,以防止在函数执行期间通道被释放。首先,它尝试将通道状态设置为CH_DISCONNECTING,如果通道未连接(还未达到已连接状态),则返回错误码-ENOTCONN。接下来,根据通道使用的通信管理器类型,它执行相应的断开连接操作。对于每个nexus,它又遍历其中的所有通道(ch)。请注意,该函数以双下划线(__)开头,这表示它是一个内部函数,应该在同一个模块中使用,并且不应该在其他模块中调用。如果断开连接成功,它会输出一条日志,表示关闭通道,因为目标(target)已被禁用。原创 2023-07-19 14:23:24 · 78 阅读 · 0 评论 -
SRP Linux driver 系列十二:ib_srpt.c--函数五
该函数是用于取消注册 SRPT RDMA 通道的。通常在与会话关联的最后一个命令完成后间接调用该函数。函数,它们都是与 SRPT RDMA 通道相关的回调函数。为其他值,则输出警告信息表示遇到了意外的操作码。用于处理 SRPT RDMA 通道上的完成事件。用于轮询 RDMA 完成队列并处理完成事件。用于处理一个 RDMA 完成事件。用于处理 IB 发送完成事件。原创 2023-07-19 14:01:33 · 83 阅读 · 0 评论 -
SRP Linux driver 系列十一:ib_srpt.c--函数四
函数用于处理 IB RDMA 错误完成通知,并根据 RDMA 操作码和当前 I/O 上下文状态采取相应的处理措施。函数用于处理 IB RDMA 完成通知,并根据 RDMA 操作码和当前 I/O 上下文状态采取相应的处理措施。用于将 SCST 的任务管理函数返回状态映射为 SRP_TSK_MGMT 的任务管理函数响应状态。函数用于构建 SRP_RSP 响应,填充 SRP_RSP 数据结构并将响应数据写入。用于处理 SRP_TSK_MGMT 信息单元,执行任务管理函数。用于处理等待列表中的接收完成事件。原创 2023-07-19 11:27:00 · 64 阅读 · 0 评论 -
SRP Linux driver 系列十:ib_srpt.c--函数三
注意:这个函数用于释放发送 I/O 上下文所占用的资源,并将其添加到通道的空闲列表,以便在需要时可以复用这些 I/O 上下文。函数用于处理 IB 发送完成通知,并根据当前 I/O 上下文状态采取相应的处理措施,包括取消映射散列表、完成 SCST 命令的处理和调整 SQ 的 WR 可用数。函数用于处理 IB_WC_SEND 错误完成事件,并根据 I/O 上下文的状态采取相应的处理措施,包括中止命令的执行和调整 SQ 的 WR 可用数。用于释放发送 I/O 上下文(I/O context)所占用的资源。原创 2023-07-19 10:11:22 · 63 阅读 · 0 评论 -
SRP Linux driver 系列九:ib_srpt.c--函数二
函数用于在SRPT HCA设备上分配I/O上下文结构,以便处理SRPT的I/O操作。函数用于为SRPT HCA设备分配一个环形数组,用于存储SRPT I/O上下文结构,并在分配失败时进行回收处理。函数确保在释放I/O上下文结构之前先解除了对应的DMA映射,并释放了相关的I/O缓冲区内存,避免了内存泄漏。函数用于释放SRPT HCA设备中的环形数组,该数组存储了SRPT I/O上下文结构,并且释放相关的资源。函数根据接收到的管理数据报文的请求类型,执行相应的操作,并生成响应的管理数据报文,从而实现了对。原创 2023-07-18 18:01:30 · 80 阅读 · 0 评论 -
SRP Linux driver 系列八:ib_srpt.c--函数一
srpt_set_ch_state该函数用于设置 SRPT(SCSI RDMA Protocol target)的 RDMA 通道的状态。函数的如下:/* * The only allowed channel state changes are those that change the channel * state into a state with a higher numerical value. Hence the new > prev test. */static bool原创 2023-07-18 14:50:48 · 77 阅读 · 0 评论 -
SRP Linux driver 系列七:ib_srpt.c--全局变量
ib_srpt.c实现了SCSI RDMA Protocol target驱动程序。它允许将SCSI命令通过RDMA传输在服务器和客户端之间进行传输。这段代码包含了模块的初始化、全局变量定义、参数设置、回调函数和相关的数据结构定义。该驱动程序使用了Linux内核中的一些重要头文件,例如linux/module.h、linux/init.h、linux/slab.h等。它还使用了一些RDMA相关的头文件,例如rdma/ib_cache.h。原创 2023-07-18 14:19:44 · 114 阅读 · 0 评论 -
SRP Linux driver 系列六:ib_srpt.h介绍
这是一个内核模块ib_srpt.ko的头文件ib_srpt.h,用于实现SCSI RDMA Protocol Target(SRP Target)功能,使得通过InfiniBand网络传输SCSI命令和数据。原创 2023-07-17 17:55:16 · 115 阅读 · 0 评论 -
SRP Linux driver 系列五:Makefile介绍
内核模块,涵盖了模块的编译、安装、卸载、测试等功能。注释对每个目标的作用和参数进行了解释,同时还增加了对每个测试目标的简单描述。编译该模块需要检查系统内核版本和OFED内核包,同时进行一系列的宏定义测试,以确保编译时所需的宏定义和选项正确设置。这个Makefile用于构建ib_srpt.ko内核模块。这个Makefile用于构建。原创 2023-07-17 15:47:35 · 99 阅读 · 0 评论 -
SRP Linux driver 系列四:ib_srpt与会话管理
以下与SRP会话相关的动作可以同时发生:会话的生命周期中发生的动作如下:原创 2023-07-17 15:36:35 · 65 阅读 · 0 评论 -
SRP Linux driver 系列三:ib_srpt测试流程
使用SCST_MAX_TGT_DEV_COMMANDS设置为48重复上述测试,并应用在ib_srpt.c上的补丁。验证SRPT在遵循README.ofed中的说明时是否能够编译,安装,并在最新发布的OFED分发版以及最新发布的CentOS,Ubuntu和openSUSE分发版上正常运行。测试低内存条件:加载SRPT,在tmpfs文件系统上创建一个大文件以减少可用内存,并在发起者系统上运行压力测试。用1到128的多个值测试ib_srp_tablesize参数。在运行此脚本的同时,不断尝试从另一个系统登录。原创 2023-07-17 15:34:02 · 132 阅读 · 0 评论 -
SRP Linux driver 系列二:OFED支持
SRP目标驱动程序旨在在Linux InfiniBand内核驱动程序的基础上工作。虽然所有最近的Linux发行版都包含最新版本的InfiniBand驱动程序,但获取最新可用的InfiniBand驱动程序的唯一方法是安装OFED软件堆栈。OFED软件堆栈由OpenFabrics Alliance(OFA)分发。OpenFabrics Alliance的使命是开发、分发和推广统一的、传输独立的、开源的RDMA-capable fabrics和网络的软件堆栈,包括InfiniBand和以太网。原创 2023-07-17 15:27:39 · 349 阅读 · 0 评论 -
SRP Linux driver 系列一:总览介绍
SRP目标驱动程序已经设计为在Linux RDMA内核驱动程序的基础上工作,可以使用Linux发行版中包含的RDMA驱动程序或OFED(OpenFabrics Enterprise Distribution)的RDMA驱动程序。关于如何将SRP目标驱动程序与OFED一起使用的更多信息,请参阅README.ofed。SRP目标驱动程序已实现为SCST(SCSI Target Subsystem)驱动程序,这使得它能够在真实设备和虚拟设备上支持多种I/O模式。原创 2023-07-17 15:22:14 · 412 阅读 · 0 评论 -
ISER系列一:什么是ISER
它是 iSCSI 数据传输模型的扩展,iSCSI 是 TCP/IP 的存储网络标准。事实上,它消除了 TCP/IP 处理开销,同时保留了与 iSCSI 协议的兼容性。ISER 是 iSCSI 的 RDMA 传输,链路协议可以是以太网或 InfiniBand,任何支持的速度(10、40、56、100Gb/s)。此外,它还具有最低的延迟和最低的CPU利用率。而且,它还享有iSCSI协议的稳定性和优点,如安全性、高可用性等。传输层 iSER 和/或 iSCSI/TCP 对用户是透明的。支持 iSER 的目标。原创 2023-07-13 10:57:05 · 684 阅读 · 0 评论 -
iSCSI Extensions for RDMA
iSCSI RDMA 扩展 (iSER) 将 iSCSI 协议扩展到 RDMA。要发现并登录 iSCSI 目标,以及访问和管理 open-iscsi 数据库,请使用该 iscasiadm 实用程序(一个命令行工具)。iSER 启动器通过 iscsi-initiator-utils 软件包中提供的 iSCSI 接口进行控制。要启用 iSER 作为传输协议,请使用“ I iser”作为命令的参数 iscasiadm。目标设置(例如超时和重试)的设置与任何其他 iSCSI 目标相同。原创 2023-07-11 14:38:55 · 160 阅读 · 0 评论 -
Storage Protocols
iSCSI RDMA 扩展 (iSER)是 iSCSI 数据传输模型的扩展,iSCSI 是 TCP/IP 的存储网络标准。有关各种 ISER 目标配置步骤、故障排除和调试以及基于 RDMA 的存储协议的其他实现(例如基于 RDMA 的 Ceph、nbdX 等),请参阅社区网站上的存储解决方案。NVME-oF 是一种网络存储技术规范,旨在支持 NVMe 基于消息的命令通过以太网、光纤通道和 InfiniBand 等网络在主机和目标固态存储设备或系统之间传输数据。原创 2023-07-11 14:25:26 · 82 阅读 · 0 评论 -
SRP - SCSI RDMA Protocol
此外,在从单个启动器 IB 端口到同一目标 HCA 上的两个不同 IB 端口的两个物理连接(即网络路径)的情况下,每个路径上需要不同的 initiator_ext 值。在单个目标 IB 端口的情况下,即 SRP 连接使用相同路径,则为每个 SRP 连接使用不同的 initiator_ext 值来启用配置。SRP 可以通过使用“rmmod ib_srp”关闭,或者通过停止 OFED 驱动程序(“/etc/init.d/openibd stop”)关闭,或者作为系统完全关闭的副产品。原创 2023-07-11 14:19:10 · 407 阅读 · 0 评论 -
NVMe of RDMA(Soft-RoCE)环境搭建九:NVMe of RDMA(Soft-RoCE)性能测试
由于测试环境限制以及相关环境影响较大,以上测试数据仅作为本文档测试流程输出中的一个组成部分,不代表NVMe相关硬件的实际性能,如要获取实际框架的性能,可以参考该文档在实际硬件上进行精确测试。对比测试本地 NVMe SSD 和 NVMe over RoCE SSD之间的顺序/随机性能。将 NVMe SSD 全盘顺序写2遍后,使用 fio 测试工具。原创 2023-07-06 10:25:40 · 395 阅读 · 0 评论 -
NVMe of RDMA(Soft-RoCE)环境搭建八:虚拟机环境验证
Client:ib_send_bw -d rxe_0 <server端ip,这里的ip是192.168.225.135,注意:这里要确保client端能访问server端>完成前七个步骤后,我们现在有两台虚拟机,我们利用其中一台作为server端,另外一台作为client端,测试Soft-RoCE的通路。完成第1章节后,我们现在有两台虚拟机,我们利用其中一台作为server端,另外一台作为client端,测试Soft-RoCE的通路。原创 2023-07-06 10:25:23 · 565 阅读 · 0 评论 -
NVMe of RDMA(Soft-RoCE)环境搭建七:虚拟机克隆
1.在VMware上从上面新建的虚拟机中克隆一个新的虚拟机,路径“虚拟机->管理->克隆”,弹出对话框,点击“下一页”2.选择虚拟机的克隆源,选择默认值3.克隆类型,选择“创建完整克隆”4.新虚拟机名称,自定义虚拟机名称,点击完成(等待克隆完成),关闭对话框,新虚拟机克隆完成原创 2023-07-06 10:25:08 · 184 阅读 · 0 评论 -
NVMe of RDMA(Soft-RoCE)环境搭建六:NVMe软件栈部署脚本
该脚本为NVMe of RDMA(Soft-RoCE)环境搭建五中操作步骤自动化执行脚本。脚本会自动化检查本地ip地址,并进行NVMe相关配置。原创 2023-07-06 10:27:15 · 244 阅读 · 0 评论 -
NVMe of RDMA(Soft-RoCE)环境搭建五:NVMe软件栈部署
【代码】NVMe of RDMA(Soft-RoCE)环境搭建五:NVMe软件栈部署。原创 2023-07-06 10:26:41 · 445 阅读 · 0 评论 -
NVMe of RDMA(Soft-RoCE)环境搭建四:RDMA(Soft-RoCE)软件栈部署
相比于rdma-core自带的示例程序 ,功能更加强大,当然也更复杂。ens33为Soft-RoCE设备所绑定的网络设备名,也就是我们刚才ifconfig看到的网卡名,每个虚拟机可能都不一样。2.由于我们实在虚拟机中进行相关验证,没有对应的支持RDMA的硬件网卡,所以我们这里的RDMA Soft-RoCE。RoCE功能的软件实体)的相关选项,用户态也已经部署了rdma-core,那么此步骤可以跳过。如果CONFIG_RDMA_RXE的值为y或者m,表示当前的操作系统可以使用RXE。原创 2023-07-05 17:38:44 · 1277 阅读 · 4 评论 -
NVMe of RDMA(Soft-RoCE)环境搭建三:系统常用软件安装
备注:如果系统联网没有VPN注意要切换Ubuntu系统的下载源,切换方法“Software Updater->Settings->Ubuntu Software->Download from(下拉框),选择“Other”->选择一个国内的下载源,例如:mirrors.aliyun.com->选择完点击“close”即可。建议安装VMware Tools,这样在虚拟机和宿主机之间复制粘贴文字/文件会比较方便。1.Ubuntu下载源修改(重要),VPN网络跳过该步骤。1.VMware软件。原创 2023-07-05 17:30:18 · 374 阅读 · 0 评论 -
NVMe of RDMA(Soft-RoCE)环境搭建二:虚拟机ubuntu系统安装
5.设置用户名称及密码,自定义设置,点击“continue”,开始安装系统(5分钟,改时间根据不同硬件及网络相关,仅作参考)。安装完成点击“Restart Now”重启。3.安装类型选择,选择默认,点击“Install Now”后弹出对话框,继续点击“continue”4.选择时区,选择默认值,点击“continue”2.系统更新和其他软件安装,选择默认。1.选择系统语言,选择默认。原创 2023-07-05 17:30:02 · 378 阅读 · 0 评论 -
NVMe of RDMA(Soft-RoCE)环境搭建一:新建虚拟机
1.在VMware Workstation中打开“文件>新建虚拟机”,弹出对话框,选择“自定义(高级)”,如下图所示。12.指定磁盘容量,根据主机磁盘容量选择,其他选项保持默认值。2.下一步,硬件兼容性选择(选择默认),点击下一步。13.指定磁盘文件路径,无特殊需求,保持默认值。14.准备好创建虚拟机,点击“完成”,开始创建。请参考windows程序安装方法执行。9.选择I/O控制器类型,选择默认值。10.选择磁盘类型,选择“NVMe“11.选择磁盘,选择默认值。8.网络类型,选择默认值。原创 2023-07-05 17:22:17 · 495 阅读 · 0 评论 -
nvme、spdk、dpdk、rdma
NVMe、DPDK和RDMA的结合:当结合NVMe、DPDK和RDMA时,可以构建出一种高性能的存储和网络解决方案。NVMe、SPDK和RDMA的结合:当结合NVMe、SPDK和RDMA时,可以构建出一种高性能的存储解决方案。通过利用SPDK的NVMe驱动和RDMA支持,可以实现高速的NVMe存储设备之间的直接数据传输,同时减少主机之间的通信开销和延迟。通过结合SPDK的NVMe驱动和RDMA支持,可以实现高性能、低延迟的NVMe设备之间的直接数据传输。原创 2023-07-03 14:52:34 · 613 阅读 · 0 评论 -
SPDK、DPDK和RDMA
RDMA网络(RDMA Network):RDMA网络是指支持RDMA技术的网络基础设施,它可以是InfiniBand网络、以太网(Ethernet)或其他支持RDMA的网络类型。它提供了一系列的组件和库,用于构建低延迟、高吞吐量的存储应用程序,例如NVMe驱动程序、NVMe over Fabrics(NVMe-oF)和存储虚拟化组件等。SPDK提供了一系列的组件和工具,用于构建存储应用程序,而RDMA则提供了低延迟和高带宽的网络传输技术,可以加速存储数据在主机之间的传输。原创 2023-07-03 10:36:47 · 2458 阅读 · 0 评论 -
RDMA Linux hns驱动分析
队列描述符(Queue Descriptor):通常是一个结构体,包含用于描述队列条目的属性和位置信息的字段。例如,可以定义一个struct queue_desc结构体,包含发送/接收数据的地址指针、长度、状态标志等字段。// 其他字段...数据缓冲区:通常是一个指针,指向实际的数据缓冲区。例如,可以使用void*类型的指针来表示数据缓冲区。内存区域键(Memory Region Key):通常是一个整数或标识符,用于标识发送或接收数据所属的内存区域。原创 2023-06-24 10:11:27 · 1162 阅读 · 0 评论 -
RDMA 与存储网络协议
而SMB Direct利用RDMA技术,直接在主机之间进行内存数据的传输,避免了CPU的参与和网络协议栈的处理,从而提高了数据传输的效率和性能。而NFS RDMA利用RDMA技术,直接在主机之间进行内存数据的传输,避免了CPU的参与和网络协议栈的处理,提高了数据传输的效率和性能。在部署和使用NFS RDMA时,建议参考相关的文档和厂商提供的支持资料,以了解具体环境下的配置和使用细节。它通过RDMA直接在网络上传输数据,提供更高的带宽和更低的延迟,适用于高性能文件共享和数据访问的场景。原创 2023-06-24 09:14:17 · 1026 阅读 · 0 评论 -
多级基地址表(Multi-Level Translation Table,MTT)
接收端根据接收到的数据包中的虚拟地址,在自己的MTT中查找对应的页表项,并将数据写入相应的物理页。访问和更新:在进行RDMA传输时,驱动程序根据发送或接收的数据包中的虚拟地址,通过查找MTT中的BAT,获取对应的物理页地址。总而言之,多级基地址表(MTT)是一种用于管理RDMA传输中内存页的数据结构,它提供了虚拟地址到物理地址的映射机制,以实现高效的数据传输和访问。MTT的级别数量和BAT的大小(每个BAT可以容纳的索引数量)取决于系统的需求和限制。内存的大小取决于MTT级别的数量和BAT的大小。原创 2023-06-21 16:05:07 · 703 阅读 · 0 评论 -
Peer-Direct RDMA (Remote Direct Memory Access) Flow
IOMMU可以提供内存隔离和安全性,防止设备访问未经授权的内存区域,并允许对设备的内存访问进行细粒度的控制。Peer-Direct RDMA Flow 在特定的硬件和软件支持下可以提供更低的延迟和更高的吞吐量,适用于需要高性能和低延迟的数据传输场景。在 Peer-Direct RDMA Flow 中,数据传输过程避免了主机 CPU 的介入和数据复制,从而提供了更低的延迟和更高的吞吐量。降低延迟:由于数据传输是直接在 RDMA 网络上进行的,无需额外的网络协议层或数据包处理,因此可以实现低延迟的数据传输。原创 2023-06-21 15:59:12 · 199 阅读 · 0 评论 -
RDMA知识点概要
分配的条目将被初始化并与相应的资源关联起来。这些工具包括ibv_*命令行工具(如ibv_devices、ibv_devinfo等),用于列举和查看RDMA设备信息,以及perfquery、rdma_bw等工具,用于性能测试和诊断。设备功能支持:mlx5_core实现了适配器的各种功能支持,包括网络传输协议(如InfiniBand和Ethernet)、内存管理、中断处理、事件通知、QoS(Quality of Service)、RoCE(RDMA over Converged Ethernet)等。原创 2023-06-21 15:53:57 · 580 阅读 · 0 评论