
网络专栏
文章平均质量分 86
RDMA技术专栏
大隐隐于野
这个作者很懒,什么都没留下…
展开
-
PCI Express 5.0规范正式发布:带宽最高可达128GB/s
在可预见的未来,PCIe架构将继续引领市场成为高性能I/O的标准。PCIe 5.0将主要用于追求高吞吐量的高性能设备,如用于AI工作的GPU和网络应用,以及应用于密集型数据中心数据传输,PCIe 5.0还带来了其他功能 , 例如电气层面的改变提高了信号完整性,及向后兼容以前版本的PCIe。PCIe也从1992年发布的最初133Mbps的速度,已提升到了现在PCIe 3.0的8GT/s,PCIe 4.0翻倍到了16GT/s,而PCIe 5.0速度再次翻倍,速率达到32GT/s。原创 2025-04-24 10:48:43 · 450 阅读 · 0 评论 -
mellanox网卡速率
[root@localhost ~]# lspci | grep Mella65:00.0 Ethernet controller: Mellanox Technologies MT2892 Family [ConnectX-6 Dx]65:00.1 Ethernet controller: Mellanox Technologies MT2892 Family [ConnectX-6 Dx][root@A03-R40-I49-166-B907339 ~]# lspci | grep Mellanox原创 2025-02-28 11:35:36 · 371 阅读 · 0 评论 -
ib网络状态探测
在 InfiniBand 网络中,Host Channel Adapter(HCA)是关键组件,了解其状态和配置对于网络管理和故障排查至关重要。以下是一些常用的命令,用于查询和管理 HCA 的状态和配置。原创 2025-02-18 10:21:30 · 569 阅读 · 0 评论 -
IB网络错误检查工具ibqueryerrors
是一个用于查询 InfiniBand 网络中错误统计信息的工具。它可以帮助网络管理员识别和诊断网络问题,如丢包、重传和其他通信错误。这个工具通常是 InfiniBand 管理软件包的一部分,例如 OpenSM(Open Subnet Manager)。原创 2025-02-17 19:39:53 · 1292 阅读 · 0 评论 -
RoCE拥塞控制机制详解
这次记录了RoCEv2网络中对于拥塞控制的检测,预防和应对方法。ECN检测和标记是现代数据中心商用交换机普遍具有的功能,它保存在IP头部的查分服务代码点中的两个比特位中。启用ECN功能后,在网络上出现拥塞后,交换机会对ECN域打上CE值,由接收方产生CNP来通知发送方网络拥塞事件。发送方收到CNP指示的事件通知后,根据DC-QCN算法中对当前速度处于快速恢复,积极增加和超积极增加三个阶段中对应的动作来对注入速率进行控制,从而解决网络中的拥塞情况。原创 2025-01-24 13:18:51 · 1022 阅读 · 0 评论 -
ib out_of_buffer问题分析
在创建队列对时,设置。原创 2025-01-16 16:56:49 · 1040 阅读 · 0 评论 -
RDMA网络配置相关的性能问题总结
在IB/RoCE网络环境中,经常会遇到一些网络相关的配置不当问题,这些问题可能导致性能出现降级。本文对这些问题做一个总结,以供记录备忘。原创 2025-01-16 16:54:29 · 1411 阅读 · 0 评论 -
netstat命令详解
netstat -an命令能看到所有和本地计算机建⽴连接的IP,它包含四个部分:proto(连接⽅式)、local address(本地连接地址)、foreign address(和本地建⽴连接的地址)、state(当前端⼝状态)。netstat -an会打印系统当前网络链接状态,而grep -i “80”是用来提取与80端口有关的连接的,wc -l进行连接数统计。FIN-WAIT-1:等待远程TCP连接中断请求,或先前的连接中断请求的确认。LAST-ACK:等待原来的发向远程TCP的连接中断请求的确认。原创 2024-09-05 09:44:31 · 2497 阅读 · 0 评论 -
【转】查看网卡挂在哪个numa节点上
原创 2024-06-21 18:17:27 · 382 阅读 · 0 评论 -
802.3ad xmit_hash_policy
From the Hash Mode menu, select the load-balancing mode for a port channel (LAG):Note: The switch balances traffic on a port channel (LAG) by selecting one ofthe links in the channel over which packets must be transmitted. Theswitch selects the link by c原创 2024-05-29 10:04:45 · 505 阅读 · 0 评论 -
HOW TO CONFIGURE ROCE OVER LAG Mellanox CONNECTX
CONTENT。原创 2024-05-29 09:39:54 · 1088 阅读 · 0 评论 -
2个RoCE网卡Bonding聚合,实现带宽Double
我们知道操作系统里面,可以将2个实际的物理网卡,合体形成一个“逻辑网卡”,从而达到如主备/提升带宽等目的。但是RoCE网卡,是否也跟普通网卡一样,支持Bond能力呢?答案是的,RoCE也可以组Bond,只是比普通网卡多了一些约束。今天我们就来实际操作一下这个过程,并了解其中需要注意的地方。也欢迎一起交流学习。原创 2024-05-28 20:55:48 · 2608 阅读 · 0 评论 -
网卡bonding模式中xmit_hash_policy bond参数中不同策略的值计算方法
包含分段和未分段数据包的单个 TCP 或 UDP 会话可能会看到两个接口之间的流量平衡,这可能导致无序交付。预期的用例是由多个虚拟机共享的绑定,所有虚拟机都配置为使用自己的 vlan,以提供类似 lacp 的功能,而无需具有 lacp 功能的交换硬件。对于主要使用单个大的四层流的流量,例如单个NFS挂载、单个iSCSI目标/启动器,或其他持久的单个TCP/UDP连接,该流量不能负载均衡。如果此系统和另一个系统之间的网络流量使用相同的 IP 但多个端口,这个算法是一个不错的选择。原创 2024-04-19 18:02:04 · 3488 阅读 · 0 评论 -
bond技术及mode模式详解
前言: 一般企业内用于提供NFS服务、samba服务或者vsftpd服务时,要求系统必须提供7*24小时的网络传输服务。它所能提供的最大网络传输速度为100MB/s,但是当访问的用户数量特别多时,服务器的访问压力非常大,网络传输速率特别慢。 因此我们可以采用bond技术实现多网卡的负载均衡来保障网络的自动备援和负载均衡。以此保障实际运维工作中网络的可靠性、文件高速率传输性。一、Linux多网卡绑定1.1 网卡绑定mode的种类网卡绑定mode共有七种:bond0、bond1、bond2、bon原创 2024-04-19 14:26:45 · 2251 阅读 · 0 评论 -
VirtIO vring实现原理详解
VRing包含数据传输的所有要素,包括Descriptor Table,Avail Ring和Used Ring,其中Descriptor Table是一个数组,每个Entry描述一个数据的buffer,Descriptor Table存放的是指针,Avail Ring和Used Ring中的ring数组则不同,它们存放的是索引,用来间接记录Descriptor chain。对于发送数据,buffer对于后端来说是只读的,对于接受数据,后端需要往buffer中写数据,所以是可写的。原创 2024-04-08 17:10:42 · 1145 阅读 · 0 评论 -
使用libibverbs构建RDMA应用
每一个队列对(QP)包含有一个发送队列(SQ)和接收队列(RQ),并且必须与至少一个完成队列(CQ)相关联(换言之,一个QP中的SQ和RQ可以关联到同一个CQ上)。LID是本地ID的缩写,当一个port变成活跃状态的时候,port就被分配了一个独一无二的数字。ibv_rc_pingpong程序在开始执行的时候放置大量的缓存区到发送队列,然后在必要的时候重新填充队列。它是每个结点用来通信的硬件。如果PSN与最近使用的一个PSN很相似的话,硬件就假定传入的数据包是一个陈腐的包,来自一个旧连接,然后予以拒绝。原创 2024-04-03 10:23:06 · 1036 阅读 · 0 评论 -
iperf网络性能测试工具
iperf命令是一个网络性能测试工具,可以测试TCP和UDP带宽质量。同时也可以通过UDP测试报告网丢包率或者发包性能,是一个非常实用的工具可以直接通过官网下载对应系统版本进行安装(1.对于windows版的iPerf,直接将解压出来的iperf.exe和cygwin1.dll复制到%systemroot%目录即可2.对于linux版的iPerf,请使用如下命令安装。原创 2024-03-28 12:56:55 · 2504 阅读 · 0 评论 -
IEEE 802.3ad 链路聚合与LACP的简单知识&EtherChannel 总结
该链路在逻辑上是一个整体,内部的组成和传输数据的细节对上层服务是透明的。1. IEEE 802.3ad 方式下的 AIX 实现了不受官方支持的允许“链路聚合”包含不同线路速度的适配器,您应只聚集设置为相同线路速度并且设置为全双工的适配器。EtherChannel支持基于2层MAC,3层IP,4层端口号的源/目的的负载均衡,高效地使用现有链路,当EtherChannel内有链路DOWN掉后,立即采用其它链路承担该链路的流量,这在事实上使EtherChannel具有了链路热备份的特性,提高了链路的冗余性。原创 2024-03-28 10:40:25 · 1837 阅读 · 0 评论 -
Linux网卡bond的七种模式详解
接收的负载被顺序地分布(round robin)在bond中最高速的slave上 当某个链路被重新接上,或者一个新的slave加入到bond中,接收流量在所有当前激活的slave中全部重新分配,通过使用指定的MAC地址给每个 client发起ARP应答。条件2:底层驱动支持设置某个设备的硬件地址,从而使得总是有个slave(curr_active_slave)使用bond的硬件地址,同时保证每个bond 中的slave都有一个唯一的硬件地址。需要注意的 是,并不是所有的传输策略都是802.3ad适应的,原创 2024-03-28 10:24:21 · 5709 阅读 · 1 评论 -
numa网卡绑定
使用numactl --membind 将程序的cpu和mem绑定到同一节点上后,会大大减少perf中观察到的minor-fault(page-fault)的次数,同样会在延迟,只比原来的1us增加几百ns。不常访问的函数偶尔访问时(几秒一次),可能会出现延迟较高的情况,比如原来是1us,冷的情况下是3us,perf中观察到有较多的minor-fault(page-fault)chip:芯片,一个cpu芯片上可以包含多个cpu core,比如四核,表示一个chip里4个core。原创 2024-02-07 15:43:41 · 1644 阅读 · 0 评论 -
RDMA Send Receive操作详解
在下面的图中,我们可以看到注册的内存区域(MR)和被通信队列所使用的位于内存区域之内的缓冲区(buffer)。当数据流开始到达系统B的时候,系统B上的HCA就消费来自系统B的WQE,然后将数据放到该放的缓冲区上去。系统A也创建一个WQE并放置到它的发送队列(SQ)中去,该WQE中的指针执行一段内存缓冲区,该缓冲区的数据将要被传送。第1步:系统A和B都创建了他们各自的QP的完成队列(CQ), 并为即将进行的RDMA传输注册了相应的内存区域(MR)。系统B分配了一段空的缓冲区,用来存放来自系统A发送的数据。原创 2024-01-18 11:09:54 · 1188 阅读 · 0 评论 -
RDMA原理浅析
在具体的远程内存读写中,RDMA操作用于读写操作的远程虚拟内存地址包含在RDMA消息中传送,远程应用程序要做的只是在其本地网卡中注册相应的内存缓冲区。跟TCP/IP的send/recv是类似的,不同的是RDMA是基于消息的数据传输协议(而不是基于字节流的传输协议),所有数据包的组装都在RDMA硬件上完成的,也就是说OSI模型中的下面4层(传输层,网络层,数据链路层,物理层)都在RDMA硬件上完成。RDMA是一种新的直接内存访问技术,RDMA让计算机可以直接存取其他计算机的内存,而不需要经过处理器的处理。原创 2024-01-18 11:02:09 · 1251 阅读 · 0 评论 -
RDMA Scatter Gather List详解
其中在ibv_send_wr我们需要一个sg_list的数组,sg_list是用来存放ibv_sge元素,那么什么是SGL以及什么是sge呢?这个WR请求中,包括一个sg_list的元素。wr是一个链表,每一个结点包含了一个sg_list(i.e. SGL: 由一个或多个SGE构成的数组), sg_list的长度为num_sge。下面图解一下SGL和WR链表的对应关系,并说明一个SGL (struct ibv_sge *sg_list)里包含的多个数据段是如何被RDMA硬件聚合成一个连续的数据段的。原创 2024-01-18 08:43:00 · 1910 阅读 · 0 评论 -
Linux下双网卡绑定七种模式以及多网卡的7种bond模式原理
mode 0下bond所绑定的网卡的IP都被修改成相同的mac地址,如果这些网卡都被接在同一个交换机,那么交换机的arp表里这个mac地址对应的端口就有多 个,那么交换机接受到发往这个mac地址的包应该往哪个端口转发呢?所以 mode0下的bond如果连接到交换机,交换机这几个端口应该采取聚合方式(cisco称为 ethernetchannel,foundry称为portgroup),因为交换机做了聚合后,聚合下的几个端口也被捆绑成一个mac地址.我们的解 决办法是,两个网卡接入不同的交换机即可。原创 2024-01-15 15:55:41 · 1770 阅读 · 0 评论 -
NVMe over TCP高性能文件存储,让未来照进现实,400us
闪存是一种固态芯片,主流的闪存设备使用NAND技术来映射数据,这种芯片无需任何外部电源即可维护存储的数据,它的读写速度比内存稍低,但无需借助机械方式进行寻址,因此读写性能远高于机械磁盘,容量也比内存要大,单GB成本近年来快速下降,大有成为服务器上高速存储介质主流设备的趋势。,与SCSI等协议不同,NVMe协议实现了多队列的架构和指令集,更能发挥多核CPU服务器的处理能力,使该协议指令集在多核CPU服务器上发挥更好的性能,存储系统如果不能针对这些特点进行深入的优化,也不能充分享受到新型介质和协议带来的红利。原创 2024-01-12 15:54:57 · 878 阅读 · 0 评论 -
智能网卡SmartNIC历史及其发展趋势
智能网卡的出现,为解决这个问题提供了新的思路,我们可以通过智能网卡来将OVS操作从CPU卸载下来,并完成存储加速、数据加密、深度包检测和复杂路由等各种功能,将花费在处理这些工作负载上的 大量的CPU周期返回给主机CPU,同时解决了不同业务之间的冲突问题,大幅提升了各项业务的性能,也确保了服务器CPU能为应用提供最大的处理能力或者提供更多的虚拟机(VM)服务,创造更大的价值。随着数据中心的高速发展,摩尔定律逐渐失效,CPU的增长速度无法满足数据的爆发式增长,CPU的处理速率已经不能满足数据处理的要求。原创 2024-01-11 14:56:35 · 1932 阅读 · 0 评论 -
Remote Direct Memory Access Transport for Remote Procedure Call
AbstractRPC.benefit.in [].RDMA Sends;it isreceiver.HandleLengthOffsetPosition[].modified.be freed.原创 2024-01-09 16:35:51 · 460 阅读 · 0 评论 -
【RDMA】RDMA完成队列 Completion Queue
上面的描述其实还包含了“同一个QP的SQ和RQ中的WQE,其对应的CQE间是不保序的”的情况,这一点其实比较容易理解,SQ和RQ,一个负责主动发起的任务,一个负责被动接收的任务,它们本来就可以是认为是两条不同方向的通道,自然不应该相互影响。另外需要注意的是,即使在多个WQ共用一个CQ的情况下,“同一个WR中的WQE,其对应的CQE间是保序的”这一点也是一定能够保证的,即上图中的属于WQ1的WQE 1、3、4对应的CQE一定是按照顺序产生的,对于属于WQ2的WQE 2、5、6也是如此。转载 2024-01-09 14:00:45 · 693 阅读 · 0 评论 -
【RDMA】RDMA事件通知机制详解
RDMA通过kernel-bypass和协议栈offload两大核心技术,实现了远高于传统TCP/IP的网络通信性能。尽管RDMA的性能要远好于TCP/IP,但目前RDMA的实际落地业务场景却寥寥无几,这其中制约RDMA技术大规模上线应用的主要原因有两点:主流互联网公司普遍选择RoCE(RDMA over Converged Ethernet)作为RDMA部署方案,而RoCE本质上是RDMA over UDP,在网络上无法保证不丢包。因此RoCE部署方案需要额外的拥塞控制机制来保证底层的无损网络,如PF原创 2024-01-09 11:06:31 · 2029 阅读 · 1 评论 -
OFI libfabric原理及应用解析
【代码】OFI libfabric原理及应用解析。原创 2023-11-21 09:53:26 · 1119 阅读 · 0 评论 -
深入分析高性能互连点对点通信开销
今天分享最近阅读的一篇文章:“Breaking Band,A Breakdown of High-Performance Communication”,这篇文章发表在ICPP 2019会议。由加州大学欧文分校和ARM公司合作完成。从题目中可以看到,这篇文章是一篇评测型的文章,它主要对高性能网络点对点通信中的各部分开销进行了比较详细的分析。本文将首先介绍论文的研究背景与论文最核心的贡献,以及本文涉及到的一些相关知识。然后介绍论文的评测方法,评测结果,以及作者提出的一些优化方案。原创 2023-11-20 10:59:06 · 176 阅读 · 0 评论 -
[RDMA] 高性能异步的消息传递和RPC :Accelio
Accelio是一个开源的高性能,异步,可靠消息传递和远程过程调用(RPC)的库。对于远程直接内存访问(RDMA),TCP / IP和共享内存, Accelio优化硬件加速。Accelio最大化消息和CPU并行性,同时最大限度地降低CPU的争用和锁定。并行和异步体系结构,无锁定设计和零数据复制机制,提供每秒无与伦比的传输和带宽性能,以及更低的延迟和CPU开销。Accelio保证终端到终端的事务传递和执行力,它支持事务请求 - 应答的通信模型。原创 2023-08-17 15:46:59 · 1197 阅读 · 0 评论 -
RPC通信编解码库对比:json、flatbuf、protobuf、MessagePack
如果你不知道bson是啥可以去查一下,总之msgpack和bson是同类型的竞争产品,但是msgpack无论从速度还是体积上都秒杀bson,至少在网络传输上是这样的。Protobuf的解码时间几乎不随着数据长度的增长而有太大的增长,而JSON则随着数据长度的增加,解码所需要的时间也越来越长。对序列化数据的访问不需要打包和拆包——它将序列化数据存储在缓存中,这些数据既可以存储在文件中,又可以通过网络原样传输,而没有任何解析开销;总结:最简单最通用的应用协议,使用广泛,开发效率高,性能相对较低,维护成本较高。原创 2023-12-18 10:07:52 · 1852 阅读 · 0 评论 -
传统FC存储向NoF发展进化
全闪存时代背景下,传统的FC(Fibre Channel,网状通道)存储网络已经无法满足全闪存数据中心的要求,NVMe(Non-Volatile Memory express,非易失性内存主机控制器接口规范)存储协议的出现极大提升了存储系统内部的存储吞吐性能、降低了传输时延,NoF(NVMe over Fabric)存储网络应运而生。NoF 将 NVMe 协议应用到服务器主机前端,作为存储阵列与前端主机连接的通道,可端到端取代 SAN 网络中的 SCSI 协议,构建全以太的存储 SAN 网络。原创 2023-12-18 11:04:49 · 1315 阅读 · 0 评论 -
RDMA编程实例rdma_cm API
我们都知道RDMA 网卡目前使用的是rdma_cm和vbers api编程,和socket不一样,如果能用socket对RDMA编程,那确实是很大的利好。在一切正常的情况下,函数返回时会得到一个 RDMA_CM_EVENT_CONNECT_REQUEST事件,也就是说,有客户端发起连接了。当rdma_get_cm_event返回RDMA_CM_EVENT_DISCONNECTED事件时,表示客户端断开了连接,server端要进行对应的清理。在事件的参数里面,会有一个新的rdma_cm_id传入。原创 2023-12-06 10:20:13 · 1568 阅读 · 1 评论 -
【RDMA】High Performance Network Programming with OFI
libfabric rdma原创 2023-12-07 17:49:00 · 1269 阅读 · 0 评论 -
RDMA概念,协议,通信流程详解
RDMA有两种基本操作,包括和。Memory verbs:包括read、write和atomic操作。RDMA Read:从远程主机读取部分内存。调用者指定远程虚拟地址,像本地内存地址一样用来拷贝。在执行 RDMA 读操作之前,远程主机必须提供适当的权限来访问它的内存。一旦权限设置完成, RDMA 读操作就可以在对远程主机没有任何通知的条件下执行。不管是 RDMA 读还是 RDMA 写,远程主机都不会意识到操作正在执行 (除了权限和相关资源的准备操作)。原创 2023-09-12 14:15:06 · 2660 阅读 · 0 评论 -
RDMA send/recv demo
调用以后在服务端调用rdma_accept以后应该就会产生RDMA_CM_EVENT_ESTABLISHED事件,/*调用以后生成RDMA_CM_EVENT_ROUTE_RESOLVED事件*//*走到这里,应该就会发起建立连接产生的第二个包,客户端收到这个包以后。/*服务端可以走到这里应该建立连接的过程已经ok了*//*客户端可以走到这里应该建立连接的过程已经ok了*//*这个在客户端调用了,服务端就不用了*//*客户端发起连接以后就会收到这个事件*/具体要看源码分析*/原创 2023-09-12 14:03:46 · 359 阅读 · 0 评论 -
理解RDMA SGL
在NVMe over PCIe中,I/O命令支持SGL(Scatter Gather List 分散聚合表)和PRP(Physical Region Page 物理(内存)区域页), 而管理命令只支持PRP;而在NVMe over Fabrics中,无论是管理命令还是I/O命令都只支持SGL。RDMA编程中,SGL(Scatter/Gather List)是最基本的数据组织形式。SGL是一个数组,该数组中的元素被称之为SGE(Scatter/Gather Element),原创 2023-08-15 15:39:21 · 441 阅读 · 0 评论 -
深入浅出全面解析RDMA
RDMA(RemoteDirect Memory Access)技术全称远程直接内存访问,就是为了解决网络传输中服务器端数据处理的延迟而产生的。它将数据直接从一台计算机的内存传输到另一台计算机,无需双方操作系统的介入。这允许高吞吐、低延迟的网络通信,尤其适合在大规模并行计算机集群中使用。RDMA通过网络把资料直接传入计算机的存储区,将数据从一个系统快速移动到远程系统存储器中,而不对操作系统造成任何影响,这样就不需要用到多少计算机的处理能力。它消除了外部存储器复制和上下文切换的开销,因而能解放内存...原创 2021-06-02 17:32:26 · 998 阅读 · 0 评论