计算机网络之RDMA技术(六)地址句柄
姓名:周肇星;学号:22011110028;学院:通信工程学院
嵌牛导读RDMA技术全称远程直接数据存取,就是为了解决网络传输中服务器端数据处理的延迟而产生的。RDMA通过网络把资料直接传入计算机的存储区,将数据从一个系统快速移动到远程系统存储器中,而不对操作系统造成任何影响,这样就不需要用到多少计算机的处理功能。它消除了外部存储器复制和上下文切换的开销,因而能解放内存带宽和CPU周期用于改进应用系统性能。本专题将针对RDMA技术进行介绍!
嵌牛鼻子计算机网络,高性能网络,RDMA
嵌牛提问读完本文,对RDMA技术的地址句柄有所认识了吗?
嵌牛正文
AH全称为Address Handle,可直译为“地址句柄”。这里的地址,指的是一组用于找到某个远端节点的信息的集合,在IB协议中,地址指的是GID、端口号等等信息;而所谓句柄,可以理解为一个指向某个对象的指针
对于每一个目的节点,本端都会创建一个对应的AH,而同一个AH可以被多个QP共同使用
IB协议中有四种基本服务类型:RC、UD、RD和UC,其中最常用的是RC和UD
RC的特点是两个节点的QP之间会建立可靠的连接,一旦建立连接关系便不容易改变,对端的信息是创建QP的时候储存在QP Context中的
而对于UD来说,QP间没有连接关系,用户想发给谁,就在WQE中填好对端的地址信息就可以了。用户不是直接把对端的地址信息填到WQE中的,而是提前准备了一个“地址薄”,每次通过一个索引来指定对端节点的地址信息,而这个索引就是AH
每次进行UD服务类型的通信之前,用户都需要先通过IB框架提供的接口,来为每一个可能的对端节点创建一个AH,然后这些AH会被驱动放到一个“安全”的区域,并返回一个索引(指针/句柄)给用户。用户真正下发WR(Work Request)时,就把这个索引传递进来就可以了
定义AH的概念的原因有以下三种:
相关链接:
[1] 983 UD服务类型中的目的地址由哪些部分组成:包括AH、 QPN和Q_key
[2] 10222 目的地址的相关注意事项
[3] 11221 AH相关的Verbs接口
姓名:周肇星;学号:22011110028;学院:通信工程学院
嵌牛导读RDMA技术全称远程直接数据存取,就是为了解决网络传输中服务器端数据处理的延迟而产生的。RDMA通过网络把资料直接传入计算机的存储区,将数据从一个系统快速移动到远程系统存储器中,而不对操作系统造成任何影响,这样就不需要用到多少计算机的处理功能。它消除了外部存储器复制和上下文切换的开销,因而能解放内存带宽和CPU周期用于改进应用系统性能。本专题将针对RDMA技术进行介绍!
嵌牛鼻子计算机网络,高性能网络,RDMA
嵌牛提问读完本文,对RDMA技术的InfiniBand有所认识了吗?
嵌牛正文
InfiniBand架构是一种支持多并发链接的“转换线缆”技术,它是新一代服务器硬件平台的I/O标准。由于它具有高带宽、低延时、 高可扩展性的特点,它非常适用于服务器与服务器(比如复制,分布式工作等)、服务器和存储设备(比如SAN和直接存储附件)以及服务器和网络之间(比如LAN, WANs和the Internet)的通信
随着CPU性能的飞速发展,I/O系统的性能成为制约服务器性能的瓶颈。于是人们开始重新审视使用了十几年的PCI总线架构。虽然PCI总线结构把数据的传输从8位/16位一举提升到32位,甚至当前的64位,但是它的一些先天劣势限制了其继续发展的势头,PCI总线有如下缺陷:
因此,Intel、 Cisco、 Compaq、 EMC、 富士通等公司共同发起了InfiniBand架构,其目的是为了取代PCI成为系统互连的新技术标准,其核心就是将I/O系统从服务器主机中分离出来
== InfiniBand采用双队列程序提取技术,使应用程序直接将数据从适配器送入到应用内存 ==(称为RDMA或远程直接存储器存取), 反之依然。在TCP/IP协议中,来自网卡的数据先拷贝到核心内存,然后再拷贝到应用存储空间,或从应用空间将数据拷贝到核心内存,再经由网卡发送到Internet。这种I/O操作方式,始终需要经过核心内存的转换,它不仅增加了数据流传输路径的长度,而且大大降低了I/O的访问速度、增加了CPU的负担。而SDP则是将来自网卡的数据直接拷贝到用户的应用空间,从而避免了核心内存参入。这种方式就称为零拷贝,它可以在进行大量数据处理时,达到该协议所能达到的最大的吞吐量
物理层 定义了在线路上如何将比特信号组成符号,然后再组成帧、 数据符号以及包之间的数据填充等,详细说明了构建有效包的信令协议等
链路层 定义了数据包的格式以及数据包操作的协议,如流控、 路由选择、编码、解码等
网络层 通过在数据包上添加一个40字节的全局的路由报头(Global Route Header,GRH)来进行路由的选择,对数据进行转发。在转发的过程中,路由器仅仅进行可变的CRC校验,这样就保证了端到端的数据传输的完整性
传输层 再将数据包传送到某个指定的队列偶(Queue Pair,QP)中,并指示QP如何处理该数据包以及当信息的数据净核部分大于通道的最大传输单元MTU时,对数据进行分段和重组
注意HCA与TCA的区别
== IBA子网由端节点、交换机、路由器和子网管理器组成 ==
每个端口具有一个GUID(Globally Unique Identifier),GUID是全局唯一的,类似于以太网MAC地址
运行过程中,子网管理代理(SMA)会给端口分配一个本地标识(LID),LID仅在子网内部有用
通道适配器提供了一种内存转换和保护(Memory Translation & Protection,MTP)机制,它将虚拟地址转换为物理地址,并验证访问权限
== 交换机根据目的地LID进行转发 ==
IBA交换机支持单播转发,并可能支持多播转发
子网管理器能够配置交换机,包括加载其转发表
== 基于数据包的全局路由头(GRH)进行路由 ==,并在数据包从子网传递到子网时替换数据包的本地路由头
每个子网由一个唯一的子网标识符,与端口的GUID捆绑在一起构成端口的== GID(Global Identifier) ==
虚拟通道(Virtual lanes,VL)提供了一种在单条物理链路中创建多个虚拟链接的机制
QP是硬件和软件之间的一个虚拟接口,架构的设定是为每个适配器提供2^24个QP
用户调用API发送接收数据的时候,实际上是将数据放入QP当中,然后==以轮询的方式将QP中的请求一条条的处理,其模式类似于生产者-消费者模式==
QP是队列结构,按顺序存储着软件给硬件下发的任务(WQE)
WQE中包含从哪里取出多长的数据,并且发送给哪个目的地等等信息
虽然IB协议将QP称为虚拟接口,但是它是有实体的:
一、IB考试是什么?
IBDP考试,即International Baccalaureate Diploma Program。它是为高中11和12年级学生设置的大学预科课程。与其他预科国际课程不同的是,IB是独立的,它有自己独立的课程体系,所以全球的IB课程都按照相同的教学大纲进行,并且参加统一的毕业甄选考试。
学生在完成两年IB课程后,将在每年5月份进行考试,考试通过的就可以取得IB国际文凭。大部分的美国大学都是认可的,包括常春藤大学。IB课程不以世界上任何一个国家的课程体系为基础,而是自成体系,广泛吸收了当代许多发达国家主流课程体系的优点,涵盖了其主要的核心内容。
二、课程体系与科目
IB 选课规则:IB课程一共有六个组别,分别是第一语言(中文)、第二语言(英语),人文类(商业、经济、地理等)、科学类(物理、化学、生物等科目)、数学和计算机类、艺术类。
每个学生都必须在组别1-5里各选一门课程,第六门课程可在所有组别中任选一门。IB课程分为标准难度课程(SL / Standard Level)和更具挑战性的高难度课程(HL / Higher Level)。
这六门课程中要求有三门为HL,三门为SL。
选IB Diploma的学生还必须要修Theory of Knowledge(TOK),并在两年内完成150小时的CAS以及在毕业前完成一篇四千词左右的Extended Essay。IB每科满分7分,总分满分45分(42分学科成绩+3分TOK+EE分数)
三、考试时间及题型
IB考试分为多个板块,需通过多次评估来获得总分。因此,只有IB学校的学生才能参加IB考试。
IB课程中,很多课都有internal assessment (IA)即平时考核内容。如第一语言的中文文学科目,在平时会有论文、口试、报告演讲等多次评估。多项评估的过程都会被记录,交给IB中心进行抽查。同学们在平时每次评估都要尽力做到最好。
姓名:周肇星;学号:22011110028;学院:通信工程学院
补充改编自 https://zhuanlanzhihucom/p/142175657
嵌牛导读RDMA技术全称远程直接数据存取,就是为了解决网络传输中服务器端数据处理的延迟而产生的。RDMA通过网络把资料直接传入计算机的存储区,将数据从一个系统快速移动到远程系统存储器中,而不对操作系统造成任何影响,这样就不需要用到多少计算机的处理功能。它消除了外部存储器复制和上下文切换的开销,因而能解放内存带宽和CPU周期用于改进应用系统性能。本专题将针对RDMA技术进行介绍!
嵌牛鼻子计算机网络,高性能网络,RDMA
嵌牛提问读完本文,对RDMA技术的操作类型有所认识了吗?
嵌牛正文
InfiniBand specification R13, Chapter3, 321, Page 99描述队列操作分类
InfiniBand specification R13, Chapter3, 361, Page 125描述队列操作分类
InfiniBand specification R13, Chapter3, 374, Page 136描述原子操作
InfiniBand specification R13, Chapter9, 941, Page 257SEND操作
InfiniBand specification R13, Chapter9, 942, Page 264ReSync操作
InfiniBand specification R13, Chapter9, 943, Page 264RDMA WRITE操作
InfiniBand specification R13, Chapter9, 944, Page 268RDMA READ操作
InfiniBand specification R13, Chapter9, 945, Page 271ATOMIC操作
因此可以归纳出:当涉及到本地端数据的读取时,能够根据地址集合(a gather list of local buffer segments)取出几个连续缓存区数据并合并到一个消息中、发送出去;当涉及到远端数据的写入时,仅能在一个连续缓存区上操作(注意这里的连续指虚拟空间上的连续,不一定是连续的物理内存范围)
称之为“双端操作”的因为完成一次通信过程需要两端CPU的参与
对于SEND操作:
在SEND-RECV操作中,发送端并不知道发送的数据会放到远程节点上的位置,需要接收端都要提前准备好接收缓存区
因此每次数据传输过程中,不止发送端需要下发WQE,接收端也需要下发WQE来告诉硬件收到的数据需要放到哪个地址,因而接收端CPU自然会感知这一过程
WRITE全称是RDMA WRITE操作,是本端主动写入远端内存的行为,除了准备阶段,远端CPU不需要参与,也不感知何时有数据写入、数据在何时接收完毕,所以这是一种单端操作
对于RDMA WRITE操作:
在准备阶段通过数据交互时,目标节点将首先分配一个内存空间,并将一个32位的R_Key与该内存空间相关联。目标节点将虚拟地址、长度和R_Key传输给本端节点后,本端节点即获取了对端某一片可用的内存的地址和“钥匙”,相当于获得了这片远端内存的读写权限。(虚拟地址、长度和R_Key的通信是由客户端上层协议完成的,其超出了IBA的范围。例如:一个应用程序可以将虚拟地址、长度和R_Key封装进一个私有的数据结构中,然后它使用SEND操作将其推送到其他应用程序中)
一旦远端的CPU把内存授权给本端使用,它便不再会参与数据收发的过程,本端就可以通过虚拟地址像访问自己的内存一样直接对这一远端内存区域进行读写(虚拟地址与物理地址的转换是由RDMA网卡完成)
即:上层应用给本节点的RDMA网卡下发了一个WQE,WQE中包含了源内存地址、目的内存地址、数据长度和秘钥等信息,然后硬件会从内存中取出数据,组包发送到对端网卡。B节点的网卡收到数据后,解析到其中的目的内存地址,把数据写入到本节点的内存中
虚拟地址、长度和R_Key的通信是由客户端上层协议完成的。例如:应用程序可以将虚拟地址、长度和R_Key封装进一个私有的数据结构中,然后使用SEND操作将其推送出去
READ跟WRITE是相反的过程,是本端主动读取远端内存的行为。同WRITE一样,远端CPU不需要参与,也不感知数据在内存中被读取的过程
对于RDMA READ操作:
原子操作在远程节点上的指定地址上执行64位操作。该操作可以原子地读取、修改和写入目标地址,并保证同一CA上的其他QP对该地址的操作不会同时发生(原子性)
与SEND、RDMA Write的重传一样,在某些情况下响应端实际上已经执行了操作,但某种原因导致请求端误认为接收端未完成接收、处理,因此会重传请求。接收端将会再次承认该请求,而不是重新运行原子操作(对于可靠的服务类型,QP将包括PSN、响应回复报文等信息存储在Connetion Context中,因此接收端将查询QP Context或EE Context,若存在则直接重新回复存储的回复报文,此时并不检查R_Key,也不会将虚拟地址转换为物理地址)
IBA定义了两类ATOMIC操作:
ReSync操作仅对可靠的数据报传输服务支持:
rdma不是软件,而是一种应用插件技术,RDMA技术全称远程直接内存访问,就是为了解决网络传输中服务器端数据处理的延迟而产生的。它将数据直接从一台计算机的内存传输到另一台计算机,无需双方操作系统的介入。
这允许高吞吐、低延迟的网络通信,尤其适合在大规模并行计算机集群中使用。RDMA通过网络把资料直接传入计算机的存储区,将数据从一个系统快速移动到远程系统存储器中,而不对操作系统造成任何影响,这样就不需要用到多少计算机的处理能力。
它消除了外部存储器复制和上下文切换的开销,因而能解放内存带宽和CPU周期用于改进应用系统性能。
RDMA工作原理
普通网卡集成了支持硬件校验的功能,并对软件进行了改进,从而减少了发送数据的拷贝量,但无法减少接收数据的拷贝量,而这部分拷贝量要占用CPU 的大量计算周期。普通网卡的工作过程,先把收到的数据包缓存到系统上,数据包经过处理后,相应数据被分配到一个TCP连接。
以上内容参考 -RDMA
姓名:周肇星;学号:22011110028;学院:通信工程学院
嵌牛导读RDMA技术全称远程直接数据存取,就是为了解决网络传输中服务器端数据处理的延迟而产生的。RDMA通过网络把资料直接传入计算机的存储区,将数据从一个系统快速移动到远程系统存储器中,而不对操作系统造成任何影响,这样就不需要用到多少计算机的处理功能。它消除了外部存储器复制和上下文切换的开销,因而能解放内存带宽和CPU周期用于改进应用系统性能。本专题将针对RDMA技术进行介绍!
嵌牛鼻子计算机网络,高性能网络,RDMA
嵌牛提问读完本文,对RDMA技术的InfiniBand编址有所认识了吗?
嵌牛正文
IBA规定在子网内和子网间传输数据时会用到不同的地址标识符,所以每个端口的地址分为两种:本地标识符LID(Local Identifier)和全球路由标识符GID(Global Identifier)
每个端点节点包含一个或多个通道适配器,每个通道适配器包含一个或多个端口,==每个端口包含一个LID和GID==
LID在子网中是唯一的,每个端口的LID都由本地子网管理器分配,交换机使用LID在子网内路由数据包
LID由Base LID和Path Bits组成:Base LID是关于一个端口地址的最低位,Path Bits是LID的一部分,用来在子网内传递时改变不同的路径到达目的端口。如果Path Bits的值为0,那么LID就等于Base LID
Path Bits的值是由SM通过设置==LMC(LID Mask Control)==的值来控制的,由3个bit组成,其取值范围是0-7。在拓扑发现阶段,子网管理器决定接收数据端口的路径数目,并且通过设置Path bits的位数来分配LID的16位地址空间来为每一个端口分配 ==2^LMC 个LID==,因此每一个端口的最大LID数目可为2^8
假设,A端口的LID为4、LMC为2,则交换机把它看成4个LID{4,5,6,7};B端口的LID为8、LMC为2,则LID为{8,9,10,11};则A发往B将存在4条路径
每一个节点和它的节点端口都会被分配一个==GUID(Global Unique Identifier)标识符==
==GID==是全局唯一的。每个数据包可选地包含一个全局路由报头(GRH),报头指定一个SGID(源GID)以及一个DGID(目的GID),==路由器使用GRH在子网之间路由数据包、交换机忽略GRH==
每个通道适配器包含许多队列对(QP),每个QP都有由通道适配器分配的队列对号(QPN),该队列对号(QPN)唯一地标识信道适配器中的QP
单播 GID 范围定义为:
Link local :在本地子网中使用默认GID前缀的单播GID,Routers不得转发任何具有本地链路GID或目标GID的数据包到本地子网之外
Site local :在子网集合中使用的单播GID,在该集合中是唯一的(例如数据中心或园区),但不一定是全局唯一的。路由器不得将任何具有site-local 源GID(SGID)或site-local目标GID(DGID)的数据包转发到站点之外
Global :全局
数字经济蓬勃发展,预计到2024年,数字经济的发展将孕育出超过5亿个新应用/服务,加速着 社会 经济的数字化转型。
以证券行业为例,随着移动互联应用的常态化及行业数字化转型的加快,从电子化到互联网化,再到数智化,证券行业进入新机构时代,呈现出业务机构化、服务专业化等特征,市场竞争日益激烈。金融 科技 支撑的重要性日益凸显,基于浪潮K1 Power的极速交易服务器,采用低延时网卡加速等创新技术,致力于辅助券商以更低的时延抢占先机,提升客户体验。
浪潮K1 Power采用RDMA IB网卡设备加速
证券市场行情瞬息万变,行情指标时效性高,精确至毫秒级乃至微秒级的实时行情服务,能够为投资者投资决策争取更多的操作时间和空间。
基于浪潮K1 Power的极速交易系统采用了超低延时的RDMA IB网卡设备加速,相比于传统的以太网卡,延时更低。传统以太网模式下,两台服务器之间传输数据时,须先把数据从应用缓存拷贝到Kernel中的TCP协议栈缓存,然后再拷贝到驱动层,最后拷贝到网卡缓存,多次内存拷贝需要CPU多次介入,导致处理延时高达数十微秒,整个过程中CPU过多参与也大量消耗了CPU性能,影响正常的数据计算。而在RDMA模式下,应用数据可以绕过Kernel协议栈而直接向网卡写数据,即网卡可以直接读取用户态的数据。由于浪潮K1 Power服务器支持PCIe Gen4,从而使得处理延时由数十微秒降低到1微秒内,且整个过程几乎不需要CPU参与,节省了性能。
为提高IB卡的易用性,浪潮商用机器封装了IB传输必需的建立连接和读写调用接口,用户无需了解IB API复杂的编程模型及细节,即可使用IB接口通信,体验IB RDMA的低延迟特性。
未来将集合处理器和CAPI特性优势
浪潮K1 Power服务器搭载的全新POWER9处理器,在降低系统延时方面拥有诸多优势。多核多线程、CPU单核4线程的优势,能够轻松应对高并发状况,且主频高达38GHz,拥有更快的时钟周期;支持PCIe 40,将IO带宽提高了2倍,延时降低了1/2;高达110M的L3缓存,大幅提高了数据命中率;支持CAPI,将FPGA获取数据的延时降低至传统I/O架构的1/36。
根据未来发展规划,基于浪潮K1 Power的极速交易系统将 探索 基于CAPI的FPGA加速方案,在该方案中,CAPI将能够使异构设备使用虚拟地址直接访问系统内存。众所周知,NVLink技术使得CPU和GPU之间可以共享内存并可互相直接访问对方内存,从而极大地提高了CPU和GPU之间的协同工作效率,与此类似,CAPI作为FPGA和处理器的接口,将允许设备内存成为系统内存映射的一部分,从而使FPGA和CPU上运行的软件可以看到相同的虚拟内存地址,即内存共享。这些链路及带宽优势,结合数据传输路径上的优势,使得浪潮K1 Power的传输速率高而IO路径更短,从而使数据获取的延时降低至300纳秒级别。
数字经济时代,基于浪潮K1 Power的低延时网卡方案,以更低的延时,结合浪潮K1 Power服务器高可靠、高安全及性能优势,加速行业数字化转型步伐。
姓名:周肇星;学号:22011110028;学院:通信工程学院
部分素材取自 https://zhuanlanzhihucom/p/195757767
嵌牛导读RDMA技术全称远程直接数据存取,就是为了解决网络传输中服务器端数据处理的延迟而产生的。RDMA通过网络把资料直接传入计算机的存储区,将数据从一个系统快速移动到远程系统存储器中,而不对操作系统造成任何影响,这样就不需要用到多少计算机的处理功能。它消除了外部存储器复制和上下文切换的开销,因而能解放内存带宽和CPU周期用于改进应用系统性能。本专题将针对RDMA技术进行介绍!
嵌牛鼻子计算机网络,高性能网络,RDMA
嵌牛提问读完本文,对RDMA技术的QP概念有所认识了吗?
嵌牛正文
InfiniBand specification R13, Chapter3, 321, Page 98QP与相关元素的概念
InfiniBand specification R13, Chapter3, 351, Page 108QP与相关元素的概念
InfiniBand specification R13, Chapter3, 3510, Page 117QPN、QP0、QP1的概述
InfiniBand specification R13, Chapter3, 3751, Page 137SMI使用QP0
InfiniBand specification R13, Chapter3, 3752, Page 138GSI使用QP1
InfiniBand specification R13, Chapter3, 38, Page 139QP包含SQ与RQ
InfiniBand specification R13, Chapter3, 38, Page 139通道适配器对WQE的处理与数据的收发
InfiniBand specification R13, Chapter3, 39, Page 143GSI模型具体描述
InfiniBand specification R13, Chapter3, 394, Page 145QP0限定为无连接的数据报服务类型
InfiniBand specification R13, Chapter3, 395, Page 147QP1限定为无连接的数据报服务类型
InfiniBand specification R13, Chapter3, 3951, Page 147允许QP1重定向的原因与机制
根据IB协议中的描述,QP是硬件和软件之间的一个虚拟接口。QP由一个发送队列SQ与接收队列RQ组成,SQ与RQ均是队列结构,按顺序存储着软件给硬件下发的任务(WQE),WQE中包含从哪里取出多长的数据,并且发送给哪个目的地等等信息
通道适配器硬件接收到WQE后,读取WQE、并解析其中的命令,验证WQE的虚拟地址,将其转换为物理地址,并访问对应的数据。数据可通过一个或切分成多个数据包被传输出去,通道适配器为每个数据包添加一个传输头,如果目标位于其它子网上,则再添加上网络头部,随后添加本地路由头、并计算效验和
当数据到达目的节点时,验证校验和后,传输头指出了目标QP,通道适配器通过该QP的QP Context检查数据包是否来自正确的源端。对于SEND操作,QP从其接收队列中取出WQE,从中检索接收缓存区的虚拟地址、并转换成接收物理地址,将数据写入相应的位置,如果这不是消息的最后一个包,QP则在其QP Context中保存当前写的位置,并等待下一个包,然后继续写入缓存区,直至接收到最后一个包,然后该接收WQE退役,并向源端发送ACK确认
当发起者收到确认时,它会在CQ上创建一个CQE,并将WQE从发送队列中退出。一个QP可以在任何时候有多个未完成的消息,但接收端总是按照发送的顺序进行确认,因此WQE会按发送的顺序退役
对于可靠的服务类型,如果QP检测到一个或多个丢失的数据包,它会向发送者发送一条NAK消息指示其下一个预期的序列号。然后发起者可以从预期的数据包开始重新发送
每个QP间都是独立的,彼此通过PD隔离,因此一个QP可以被视为某个用户独占的一种资源,一个用户也可以同时使用多个QP
QP有很多种服务类型,包括RC、UD、RD和UC等,所有的源QP和目的QP必须为同一种类型才能进行数据交互
虽然IB协议将QP称为“虚拟接口”,但是它是有实体的:
QP Number简称为QPN,就是每个QP的编号。IB协议中规定用24个bit来表示QPN,即每个节点最大可以同时使用2^24个QP,每个节点都各自维护着QPN的集合,由通道适配器分配,相互之间是独立的,即QPN编号在各节点内唯一、不同的节点上可以存在编号相同的QP
编号为0的QP用于子网管理接口SMI(Subnet Management Interface),用于管理子网中的全部节点
子网管理器使用通过QP0发送、接收被称为子网管理报文SMP(Subnet Management Packet)的特殊类型的MAD(Management Datagram)报文(并仅发送接收SMP,其余数据无效)
并且QP0被永久配置为不可靠的数据报的服务类型
编号为1的QP用于通用服务接口GSI(General Service Interface)
GSI使用QP1进行初始通信,但允许对特定类的流量重定向到特权QP上,这是因为所有管理类数据包都进入同一队列,将导致瓶颈问题、线头阻塞现象,因此设计了重定向到其它QP的机制。当通道适配器接收到QP1上的GMP报文时,它可能会响应为一个指示新端口和QP的重定向响应,然后发起者将请求重新发送到新地址,并将该地址用于同一管理类的所有后续请求
并且QP1被永久配置为不可靠的数据报的服务类型,QP1上仅能收发MAD数据包
通用服务代理GSA(General Service Agents)是由许多管理服务代理组合而成,通用服务GA(General Service)使用称为通用管理报文GMP(General Service Packet)的报文,该报文是一种特殊的MAD报文
GSA中最出名的就是CM(Communication Management),是一种在通信双方节点正式建立连接之前用来交换必须信息的一种方式
QPC全称是Queue Pair Context,用于存储QP相关属性
QP在硬件上的实体只是一段存储空间而已,硬件除了知道这段空间的起始地址和大小之外一无所知,甚至连这个QP服务类型都不知道。还有很多其他的重要信息,比如某个QP中包含了若干个WQE,硬件怎么知道有多少个,当前应该处理第几个呢?
所以就需要软件通过操作系统提前申请好一大片连续的空间,即QPC来承载这些信息给硬件看。网卡及其配套的驱动程序提前约定好了QPC中都有哪些内容,这些内容分别占据多少空间,按照什么顺序存放。这样驱动和硬件就可以通过通过QPC这段空间来读写QP的状态等等信息
如上图所示,硬件其实只需要知道QPC的地址0x12350000就可以了,因为它可以解析QPC的内容,从而得知QP的位置,QP序号,QP大小等等信息。进而就能找到QP,知道应该取第几个WQE去处理。不同的厂商可能实现有些差异,但是大致的原理就是这样
四种操作都有配套的Verbs接口,类似于ibv_create_qp()这种形式,编写APP时直接调用就可以了
创建一个QP的软硬件资源,包含QP本身以及QPC。用户创建时会写传入一系列的初始化属性,包含该QP的服务类型,可以储存的WQE数量等信息
释放一个QP的全部软硬件资源,包含QP本身及QPC。销毁QP后,用户将无法通过QPN索引到这个QP
修改一个QP的某些属性,比如QP的状态,路径的MTU等等。这个修改过程既包括软件数据结构的修改,也包括对QPC的修改
查询一个QP当前的状态和一些属性,查询到的数据来源于驱动以及QPC的内容
在行为上都是软件向QP中填写一个WQE(对应用层来说叫WR),请求硬件执行一个动作。所以这两种行为都叫做“Post XXX Request”的形式,即下发XXX请求
Post Send本身不是指这个WQE的操作类型是Send,而是表示这个WQE属于通信发起方。这个流程中填写到QP中的WQE/WR可以是Send操作,RDMA Write操作以及RDMA Read操作等
用户需要提前准备好数据缓冲区、目的地址等信息,然后调用接口将WR传给驱动,驱动再把WQE填写到QP中
Post Recv的使用场景就相对比较少了,一般只在Send-Recv操作的接收端执行,接收端需要提前准备好接收数据的缓冲区,并将缓冲区地址等信息以WQE的形式告知硬件
0条评论