CN117240642B - 一种ib组播报文复制和接收装置及方法 - Google Patents
一种ib组播报文复制和接收装置及方法 Download PDFInfo
- Publication number
- CN117240642B CN117240642B CN202311514709.9A CN202311514709A CN117240642B CN 117240642 B CN117240642 B CN 117240642B CN 202311514709 A CN202311514709 A CN 202311514709A CN 117240642 B CN117240642 B CN 117240642B
- Authority
- CN
- China
- Prior art keywords
- multicast
- message
- replication
- node
- controller
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 35
- 230000010076 replication Effects 0.000 claims abstract description 158
- 239000000872 buffer Substances 0.000 claims abstract description 78
- 230000005540 biological transmission Effects 0.000 claims abstract description 12
- 230000008569 process Effects 0.000 claims description 13
- 230000004044 response Effects 0.000 claims description 13
- 238000012545 processing Methods 0.000 claims description 7
- 230000004048 modification Effects 0.000 claims description 4
- 230000000977 initiatory effect Effects 0.000 claims description 3
- 230000006870 function Effects 0.000 abstract description 3
- 238000010586 diagram Methods 0.000 description 6
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种IB组播报文复制和接收装置及方法,属于通信技术领域,包括单播组播报文分流控制器、组播查询控制器、组播复制节点访问控制器、报文缓存器、设备主存、报文复制控制器与远程直接内存访问接收引擎,使用报文回环和遍历复制节点链表的方式,在使用较少逻辑资源的情况下,实现基于组播组的多队列对组播复制功能。本发明一种IB组播报文复制和接收方法,使得单个组播组加入的队列对数量不会收到限制;在报文缓存器容量足够的情况下,不会引起对报文入口的反压;实际使用中如果出现反压,丢弃反压期间的报文并进行计数;兼容单播报文传输与组播报文传输,执行组播复制时不影响单播接收数据通路,适用范围广。
Description
技术领域
本发明涉及通信技术领域,且特别是有关于一种IB组播报文复制和接收装置及方法。
背景技术
在无限带宽(InfiniBand,IB)规范中,描述了一种在单个主机通道适配器(HostChannel Adapter,HCA)节点上将组播报文复制到多个队列对(QueuePair,QP)进行接收的子规范。支持该子规范的网卡,可以支持Verbs层调用,将某个队列对加入到某个组播组中。
每当主机通道适配器接收到目的全局标识(Global Identifier,GID)为组播类型且目的队列对编号(Queue Pair Number,QPN)为0xFFFFFF的无限带宽报文时,应当使用目的全局标识作为组播组标识(Multicast Group Identifier,MGID)查询组播组信息。如果组播组信息内存在一个或多个有效的队列对,那么将该报文复制到每个有效的队列对进行接收。其中,组播组由128位的组播组标识进行标识,队列对则由24位的队列对编号标识。
在实际应用中,队列对编号的索引空间很大,不可能把每个组播组的已加入队列对编号都存储在快速静态随机存储器(SRAM)中。例如,如果要能支持到单个组播组最大队列对编号的数量,那么单个组播队列需要的片上存储空间为48MB((2^24)*24bit),即48MB,这显然是不现实的,更何况通常主机通道适配器节点支持多个组播组同时启用。
使用缓存(Cache)技术来映射队列对编号的存储空间可以解决上述问题,但是缓存访问在不命中时,需要从内存预取,预取期间直接阻塞流水线,导致延迟增加,可能会反压报文的入口,降低报文复制和接收速率。另外,通常缓存占用的逻辑资源较多,需要提前分配映射空间。
发明内容
为解决上述问题,本发明提供一种IB组播报文复制和接收方法,使用报文回环和遍历复制节点链表的方式,在使用较少逻辑资源的情况下,实现基于组播组的多队列对组播复制功能。
为达到上述目的,本发明技术方案是:
一种IB组播报文复制和接收装置,包括单播组播报文分流控制器、组播查询控制器、组播复制节点访问控制器、报文缓存器、设备主存、报文复制控制器与远程直接内存访问接收引擎,所述组播报文分流控制器连接所述组播查询控制器与所述远程直接内存访问接收引擎,所述组播查询控制器连接所述组播复制节点访问控制器,所述组播复制节点访问控制器连接所述设备主存与所述报文缓存器,所述设备主存与所述报文缓存器连接所述报文复制控制器,所述报文复制控制器连接所述组播复制节点访问控制器与所述远程直接内存访问接收引擎。
进一步地,上述单播组播报文分流控制器接收报文,并将接收的报文按照单播报文或组播报文进行分流,将单播报文发送给所述远程直接内存访问接收引擎,将组播报文发送至所述组播查询控制器。
进一步地,上述组播查询控制器查询组播信息传并选择性丢弃报文,将组播报文和组播复制链头指针转交给所述组播复制节点访问控制器。
进一步地,上述组播复制节点访问控制器接收报文和对应的组播复制链头指针,转存报文到所述报文缓存器,同时使用报文对应的组播复制链头指针到所述设备主存读取组播复制节点。
进一步地,上述报文缓存器缓存报文,覆盖报文的访问内存的往返时间。
进一步地,上述报文复制控制器接收通过组播复制链头指针读取的组播复制节点,使用组播复制节点执行组播复制。
进一步地,上述远程直接内存访问接收引擎按照队列对接收和处理报文,对于单播报文,队列对编号由报文附带;对于组播报文,队列对编号在报文复制控制器复制时产生,队列对编号来自组播复制节点。
本发明还提供一种IB组播报文复制和接收方法,用于上述一种IB组播报文复制和接收装置,包括,
步骤S1,在报文进入单播组播报文分流控制器后,按照单播报文或组播报文进行分流,若报文是单播报文,将单播报文直接转交给远程直接内存访问接收引擎,进入步骤S12;若报文是组播报文,将组播报文送至组播查询控制器,进入步骤S2;
步骤S2,组播查询控制器收到组播报文后,检查组播报文的组播组有效性,若组播组有效,进入步骤S3;若组播组无效,进入步骤S13;
步骤S3,组播组有效时,判断报文缓存器剩余的缓存容量是否能放下当前报文,若报文缓存器剩余的缓存容量能放下当前报文,进入步骤S4;否则,进入步骤S5;
步骤S4,将组播报文和组播复制链头指针转交给组播复制节点访问控制器,同时缩减报文缓存器的信用值,进入步骤S6;
步骤S5,更新组播信息条目中的组播丢弃计数,将组播丢弃计数增加1,然后回写此组播信息条目,进入步骤S13;
步骤S6,组播复制节点访问控制器接收组播报文和对应的组播复制链头指针,使用组播复制链头指针作为访问地址发起读取请求,到设备主存读取组播复制链上的组播复制节点;同时将报文存入报文缓存器,进入步骤S7;
步骤S7,报文复制控制器等待读取请求对应的读取响应,当收到读取响应时,获得组播复制节点,从报文缓存器获取当前读取响应对应的报文;
步骤S8,报文复制控制器遍历组播复制节点的每一个有效的队列对编号,并复制出组播报文,然后将其和该队列对编号发送给远程直接内存访问接收引擎,进入步骤S9;
步骤S9,报文复制控制器执行完一个组播复制节点的复制后,判断当前组播复制节点的下一节点指针是否为空,若不为空,表示该组播复制链还未结束,进入步骤S10;若为空,表示该组播复制链已达到末尾节点,复制结束,进入步骤S11;
步骤S10,将当前报文送回报文缓存器再次缓存,将当前组播复制节点的下一节点指针送回到组播复制节点访问控制器,重复步骤S6至步骤S9,继续读取下一个组播复制节点,继续复制;
步骤S11,按照当前报文的长度增加报文缓存器的信用值,进入步骤S12;
步骤S12,远程直接内存访问接收引擎接收和处理报文,对于来自报文复制控制器的报文,用复制报文时对应的队列对编号指定的队列对执行接收和处理;对于来自单播组播报文分流控制器的单播报文,用报文附带的队列对编号执行接收和处理;
步骤S13,立即丢弃当前报文。
进一步地,上述步骤S2中,组播查询控制器向组播信息表发起组播组有效性查询,所述组播信息表由多条组播信息条目组成,每条组播信息条目包含组播组标识、组播丢弃计数、组播复制链头指针和标记位,所述组播组标识用于唯一标识此组播组,所述组播丢弃计数用于记录此组播组因为反压不能接收而丢弃的组播报文数量,所述组播复制链头指针指向某个组播复制链的头节点,所述标记位表明此组播信息条目的有效性。
进一步地,上述组播复制链是由多个组播复制节点组成的单向链表,每个组播组有一个对应的组播复制链。
进一步地,上述组播复制节点是一种结构体,所述组播复制节点包括下一节点指针、队列对编号数组、有效位、校验位,所述下一节点指针指向下一个组播复制节点;所述队列对编号数组用于记录加入到此组播复制链的组播组的队列对,N表示一个组播复制节点中队列对编号的数量;所述有效位的位宽为N,所述有效位的单个位表示对应的队列对编号是否有效;所述校验位是用于检查组播复制节点的信息是否在传输过程中或软件修改过程中出错。
进一步地,根据报文缓存器的缓存容量大小,根据报文缓存器的缓存容量大小,记录一个表示报文缓存器剩余缓存容量的信用值在组播查询控制器内,信用值初始等于报文缓存器的缓存容量大小,当在步骤S3中组播组有效时,送出报文的同时按照报文大小将信用值减小。
进一步地,报文缓存器需要的缓存容量为:缓存容量=访存往返时间*入站接口速率,访存往返时间是指发起读取请求到对应的读取响应返回之间的时间差,入站接口速率指网卡端口速率。
有益效果,本发明一种IB组播报文复制和接收方法的有益效果是,由于组播复制链为单向链表,由多个组播复制节点组成,单个组播组加入的队列对数量不会收到限制;在报文缓存器容量足够的情况下,访存延迟被覆盖,本发明不会引起对报文入口的反压,不会阻止报文从单播组播报文分流控制器进入;实际使用中如果出现反压,丢弃反压期间的报文并进行计数;本发明兼容单播报文传输与组播报文传输,执行组播复制时不影响单播接收数据通路,适用范围广。
为让发明的上述特征和优点能更明显易懂,下文特举实施例,并配合所附图式作详细说明如下。
附图说明
图1为本发明一种IB组播报文复制和接收装置的结构框图。
图2为本发明一种IB组播报文复制和接收方法的流程图。
图3为组播信息表MGID_TABLE的结构示意图。
图4为组播信息条目MGID_ENTRY的结构示意图。
图5为组播复制链MC_COPY_CHAIN与组播复制节点MC_COPY_NODE的结构示意图。
具体实施方式
为使本发明实施例的目的和技术方案更加清楚,下面将结合本发明实施例的附图,对本发明实施例的技术方案进行清楚、完整地描述。显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于所描述的本发明的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明一种IB组播报文复制和接收装置的结构框图。如图1所示,本发明一种IB组播报文复制和接收装置包括单播组播报文分流控制器11、组播查询控制器12、组播复制节点访问控制器13、报文缓存器14、设备主存15、报文复制控制器16与远程直接内存访问(RDMA)接收引擎17,单播组播报文分流控制器11连接组播查询控制器12与远程直接内存访问接收引擎17,组播查询控制器12连接组播复制节点访问控制器13,组播复制节点访问控制器13连接设备主存15与报文缓存器14,设备主存15与报文缓存器14均连接报文复制控制器16,报文复制控制器16连接组播复制节点访问控制器13与远程直接内存访问接收引擎17。
在一具体实施例中,上述各模块通讯连接。
进一步地,单播组播报文分流控制器11接收报文,并将接收的报文按照单播报文或组播报文进行分流,将单播报文发送给远程直接内存访问接收引擎17,将组播报文发送至组播查询控制器12。
进一步地,组播查询控制器12查询组播信息传并选择性丢弃报文,将组播报文和组播复制链头指针NODE_PTR转交给组播复制节点访问控制器13。
进一步地,组播复制节点访问控制器13接收报文和对应的组播复制链头指针NODE_PTR,转存报文到报文缓存器14,同时使用报文对应的组播复制链头指针NODE_PTR到设备主存15读取组播复制节点MC_COPY_NODE。
进一步地,报文缓存器14缓存报文,报文缓存器14的功能是覆盖报文的访问内存的往返时间,防止反压出现。
进一步地,报文复制控制器16接收通过组播复制链头指针NODE_PTR读取的组播复制节点MC_COPY_NODE,使用这个信息执行组播复制。
进一步地,远程直接内存访问接收引擎17按照队列对接收和处理报文,对于单播报文,队列对编号由报文附带;对于组播报文,队列对编号在报文复制控制器16复制时产生,队列对编号具体来自组播复制节点MC_COPY_NODE。
图2为本发明一种IB组播报文复制和接收方法的流程图。如图2所示,本发明一种IB组播报文复制和接收方法包括如下步骤。
步骤S1,在报文进入单播组播报文分流控制器11后,按照单播报文或组播报文进行分流,若报文是单播报文,将单播报文直接转交给远程直接内存访问接收引擎17,进入步骤S12;若报文是组播报文,将组播报文送至组播查询控制器12,进入步骤S2。其中,报文内部包括单播报文标识与组播报文标识,用于区分此报文是单播报文还是组播报文。
更具体地,组播报文需要进行组播复制处理,每个复制报文分别交给远程直接内存访问接收引擎17处理,同时每个复制报文的接收队列对编号是复制时指定的,而不是报文自带的目的队列对编号。一个报文入站后由哪些队列对来接收,取决于报文到来前是否已经把队列对加入这个组播组,当报文的目的全局标识(Destination GlobalIdentifier,DGID)匹配这个组播组的组播组标识MGID,就会把报文复制多份并由加入这个组播组的队列对来接收。
更具体地,报文送到远程直接内存访问接收引擎17时必须附带一个信息表示哪个队列对来接收。
步骤S2,组播查询控制器12收到组播报文后,检查组播报文的组播组有效性,若组播组有效,进入步骤S3;若组播组无效,进入步骤S13。
更具体地,组播查询控制器12向组播信息表MGID_TABLE发起组播组有效性查询,使用组播报文的目的全局标识(Destination Global Identifier,DGID)作为关键字查询。其中,组播信息表MGID_TABLE存储组播组相关的信息。图3示出了组播信息表MGID_TABLE的结构示意图,组播信息表MGID_TABLE由多条组播信息条目MGID_ENTRY组成。图4示出了组播信息条目MGID_ENTRY的结构示意图,每个组播信息条目MGID_ENTRY具体描述一个组播组相关的信息,组播信息条目MGID_ENTRY包含组播组标识MGID、组播丢弃计数LOST_CNT、组播复制链头指针NODE_PTR和标记位VLD。其中,组播组标识MGID用于唯一标识此组播组,组播丢弃计数LOST_CNT用于记录此组播组因为反压不能接收而丢弃的组播报文数量,组播复制链头指针NODE_PTR指向某个组播复制链MC_COPY_CHAIN的头节点;标记位VLD表明此组播信息条目MGID_ENTRY的有效性。只有当组播组标识MGID匹配组播报文的目的全局标识且标记位VLD有效时,才将组播组判断为有效。
步骤S3,组播组有效时,获得组播信息表MGID_TABLE的组播信息条目MGID_ENTRY中的组播组标识MGID、组播复制链头指针NODE_PTR和丢弃计数LOST_CNT等信息,判断报文缓存器14剩余的缓存容量是否能放下当前报文,若报文缓存器14剩余的缓存容量能放下当前报文,进入步骤S4;否则,进入步骤S5。
更具体地,根据报文缓存器14的缓存容量大小,记录一个表示报文缓存器14剩余缓存容量的信用值在组播查询控制器12内,信用值初始等于报文缓存器14的缓存容量大小。当在步骤S3中决定将报文送到后续步骤进行复制时,送出报文的同时按照报文大小将信用值减小。如果剩余的信用值已经小于报文大小了,则判断为报文缓存器14剩余的缓存容量不能放下当前报文,后续报文会被直接丢弃,该信用值不会改变。
步骤S4,将组播报文和组播复制链头指针NODE_PTR转交给组播复制节点访问控制器13,同时缩减报文缓存器14的信用值,进入步骤S6。
步骤S5,更新组播信息条目MGID_ENTRY中的组播丢弃计数LOST_CNT,将组播丢弃计数LOST_CNT增加1,然后回写此组播信息条目MGID_ENTRY;进入步骤S13。
步骤S6,组播复制节点访问控制器13接收组播报文和对应的组播复制链头指针NODE_PTR,使用组播复制链头指针NODE_PTR作为访问地址发起读取请求MEM_READ_REQUEST,到设备主存15读取组播复制链MC_COPY_CHAIN上的组播复制节点MC_COPY_NODE;同时将报文存入报文缓存器14,进入步骤S7。
更具体地,组播复制链MC_COPY_CHAIN是一种数据结构,是由多个组播复制节点MC_COPY_NODE组成的单向链表。图5示出了组播复制链MC_COPY_CHAIN与组播复制节点MC_COPY_NODE的结构示意图,每个组播组都有一个对应的组播复制链MC_COPY_CHAIN,查询组播信息表MGID_TABLE获得组播组信息时,可以得到组播复制链头指针NODE_PTR,指向该组播复制链MC_COPY_CHAIN的头节点。
进一步地,组播复制节点MC_COPY_NODE是一种结构体,组播复制节点MC_COPY_NODE包括下一节点指针NEXT_ NODE_PTR、队列对编号数组QPN[N]、有效位MASK、校验位PAR。更具体地,下一节点指针NEXT_ NODE_PTR指向下一个组播复制节点MC_COPY_NODE;队列对编号数组QPN[N]用于记录加入到此组播复制链MC_COPY_CHAIN的组播组的队列对。但是,组播复制节点MC_COPY_NODE中记录的队列对并不是都是有效的,需要用有效位MASK来标识哪些队列对有效。其中,N表示一个组播复制节点MC_COPY_NODE中队列对编号的数量,有效位MASK的位宽也为N,有效位MASK的单个位可以表示对应的队列对编号是否有效,N的大小按照需要确定。校验位PAR是用于检查组播复制节点MC_COPY_NODE的信息是否在传输过程中或软件修改过程中出错。
组播复制节点访问控制器13可以根据有效位MASK和队列对编号数组QPN[N]的数据向对应的队列对复制报文。
步骤S7,报文复制控制器16等待读取请求MEM_READ_REQUEST对应的读取响应MEM_READ_RESPONSE,当收到读取响应MEM_READ_RESPONSE时,获得组播复制节点MC_COPY_NODE,从报文缓存器14获取当前读取响应MEM_READ_RESPONSE对应的报文。
每个报文存进报文缓存器14的时候,组播复制节点访问控制器13会发起一个读取请求MEM_READ_REQUEST给设备主存15,对每一个读取请求MEM_READ_REQUEST必定有一个读取响应MEM_READ_RESPONSE从设备主存15发送到报文复制控制器16,和报文顺序匹配。
步骤S8,报文复制控制器16遍历组播复制节点MC_COPY_NODE的每一个有效的队列对编号,并复制出组播报文,然后将其和该队列对编号发送给远程直接内存访问接收引擎17,有效的队列对编号即要接收该复制报文的队列对编号,进入步骤S9。
步骤S9,报文复制控制器16执行完一个组播复制节点MC_COPY_NODE的复制后,判断当前组播复制节点MC_COPY_NODE的下一节点指针NEXT_ NODE_PTR是否为空,若不为空,表示还有后续的节点在组播复制链MC_COPY_CHAIN上,该组播复制链还未结束,进入步骤S10;若为空,表示该组播复制链已达到末尾节点,复制结束,进入步骤S11。
步骤S10,由于要遍历组播复制链上的每个组播复制节点,将当前报文送回报文缓存器14再次缓存,将当前组播复制节点MC_COPY_NODE的下一节点指针NEXT_ NODE_PTR送回到组播复制节点访问控制器13,重复步骤S6至步骤S9,继续读取下一个组播复制节点MC_COPY_NODE,继续复制。
在一具体实施例中,将当前组播复制节点的组播复制链头指针NODE_PTR通过路由器环回接口(LOOPBACK)送回到组播复制节点访问控制器13。
步骤S11,该组播复制链复制结束后,按照当前报文的长度恢复报文缓存器14的信用值,将增加的信用值直接通知到组播查询控制器12,并增加位于组播查询控制器12的报文缓存器14的信用计数器的值,从而让后续新的组播报文能够继续送入处理,进入步骤S12。
步骤S12,远程直接内存访问接收引擎17接收和处理报文,对于来自报文复制控制器16的报文,用复制报文时对应的队列对编号指定的队列对执行接收和处理;对于来自单播组播报文分流控制器11的单播报文,用报文附带的队列对编号执行接收和处理;进入步骤S14。
步骤S13,立即丢弃当前报文,进入步骤S14。
步骤S14,结束。
更具体地,从上述流程可以看出,组播复制节点访问控制器13的输入源有两个,一个是来自组播查询控制器12的新入站报文,另一个是来自报文复制控制器16的环回报文。
进一步地,报文缓存器14需要的缓存容量为:缓存容量=访存往返时间*入站接口速率,访存往返时间是指发起读取请求MEM_READ_REQUEST到对应的读取响应MEM_READ_RESPONSE返回之间的时间差,入站接口速率指网卡端口速率。
综上所述,本发明一种IB组播报文复制和接收方法的有益效果是,由于组播复制链MC_COPY_CHAIN为单向链表,由多个组播复制节点MC_COPY_NODE组成,单个组播组加入的队列对数量不会收到限制;在报文缓存器容量足够的情况下,访存延迟被覆盖,本发明不会引起对报文入口的反压,不会阻止报文从单播组播报文分流控制器进入;实际使用中如果出现反压,丢弃反压期间的报文并进行计数;本发明兼容单播报文传输与组播报文传输,适用范围广。
虽然本发明已以实施例揭露如上,然其并非用以限定本发明,任何所属技术领域中具有通常知识者,在不脱离本发明的精神和范围内,当可作些许的更动与润饰,故本发明的保护范围当视后附的申请专利范围所界定者为准。
Claims (13)
1.一种IB组播报文复制和接收装置,其特征在于,包括单播组播报文分流控制器、组播查询控制器、组播复制节点访问控制器、报文缓存器、设备主存、报文复制控制器与远程直接内存访问接收引擎,所述组播报文分流控制器连接所述组播查询控制器与所述远程直接内存访问接收引擎,所述组播查询控制器连接所述组播复制节点访问控制器,所述组播复制节点访问控制器连接所述设备主存与所述报文缓存器,所述设备主存与所述报文缓存器连接所述报文复制控制器,所述报文复制控制器连接所述组播复制节点访问控制器与所述远程直接内存访问接收引擎。
2.如权利要求1所述一种IB组播报文复制和接收装置,其特征在于,所述单播组播报文分流控制器接收报文,并将接收的报文按照单播报文或组播报文进行分流,将单播报文发送给所述远程直接内存访问接收引擎,将组播报文发送至所述组播查询控制器。
3.如权利要求2所述一种IB组播报文复制和接收装置,其特征在于,所述组播查询控制器查询组播信息传并选择性丢弃报文,将组播报文和组播复制链头指针转交给所述组播复制节点访问控制器。
4.如权利要求3所述一种IB组播报文复制和接收装置,其特征在于,所述组播复制节点访问控制器接收报文和对应的组播复制链头指针,转存报文到所述报文缓存器,同时使用报文对应的组播复制链头指针到所述设备主存读取组播复制节点。
5.如权利要求4所述一种IB组播报文复制和接收装置,其特征在于,所述报文缓存器缓存报文,覆盖报文的访问内存的往返时间。
6.如权利要求5所述一种IB组播报文复制和接收装置,其特征在于,所述报文复制控制器接收通过组播复制链头指针读取的组播复制节点,使用组播复制节点执行组播复制。
7.如权利要求6所述一种IB组播报文复制和接收装置,其特征在于,所述远程直接内存访问接收引擎按照队列对接收和处理报文,对于单播报文,队列对编号由报文附带;对于组播报文,队列对编号在报文复制控制器复制时产生,队列对编号来自组播复制节点。
8.一种IB组播报文复制和接收方法,其特征在于,用于如权利要求1-7任一项所述一种IB组播报文复制和接收装置,包括,
步骤S1,在报文进入单播组播报文分流控制器后,按照单播报文或组播报文进行分流,若报文是单播报文,将单播报文直接转交给远程直接内存访问接收引擎,进入步骤S12;若报文是组播报文,将组播报文送至组播查询控制器,进入步骤S2;
步骤S2,组播查询控制器收到组播报文后,检查组播报文的组播组有效性,若组播组有效,进入步骤S3;若组播组无效,进入步骤S13;
步骤S3,组播组有效时,判断报文缓存器剩余的缓存容量是否能放下当前报文,若报文缓存器剩余的缓存容量能放下当前报文,进入步骤S4;否则,进入步骤S5;
步骤S4,将组播报文和组播复制链头指针转交给组播复制节点访问控制器,同时缩减报文缓存器的信用值,进入步骤S6;
步骤S5,更新组播信息条目中的组播丢弃计数,将组播丢弃计数增加1,然后回写此组播信息条目,进入步骤S13;
步骤S6,组播复制节点访问控制器接收组播报文和对应的组播复制链头指针,使用组播复制链头指针作为访问地址发起读取请求,到设备主存读取组播复制链上的组播复制节点;同时将报文存入报文缓存器,进入步骤S7;
步骤S7,报文复制控制器等待读取请求对应的读取响应,当收到读取响应时,获得组播复制节点,从报文缓存器获取当前读取响应对应的报文;
步骤S8,报文复制控制器遍历组播复制节点的每一个有效的队列对编号,并复制出组播报文,然后将其和该队列对编号发送给远程直接内存访问接收引擎,进入步骤S9;
步骤S9,报文复制控制器执行完一个组播复制节点的复制后,判断当前组播复制节点的下一节点指针是否为空,若不为空,表示该组播复制链还未结束,进入步骤S10;若为空,表示该组播复制链已达到末尾节点,复制结束,进入步骤S11;
步骤S10,将当前报文送回报文缓存器再次缓存,将当前组播复制节点的下一节点指针送回到组播复制节点访问控制器,重复步骤S6至步骤S9,继续读取下一个组播复制节点,继续复制;
步骤S11,按照当前报文的长度增加报文缓存器的信用值,进入步骤S12;
步骤S12,远程直接内存访问接收引擎接收和处理报文,对于来自报文复制控制器的报文,用复制报文时对应的队列对编号指定的队列对执行接收和处理;对于来自单播组播报文分流控制器的单播报文,用报文附带的队列对编号执行接收和处理;
步骤S13,立即丢弃当前报文。
9.如权利要求8所述一种IB组播报文复制和接收方法,其特征在于,所述步骤S2中,组播查询控制器向组播信息表发起组播组有效性查询,所述组播信息表由多条组播信息条目组成,每条组播信息条目包含组播组标识、组播丢弃计数、组播复制链头指针和标记位,所述组播组标识用于唯一标识此组播组,所述组播丢弃计数用于记录此组播组因为反压不能接收而丢弃的组播报文数量,所述组播复制链头指针指向某个组播复制链的头节点,所述标记位表明此组播信息条目的有效性。
10.如权利要求9所述一种IB组播报文复制和接收方法,其特征在于,所述组播复制链是由多个组播复制节点组成的单向链表,每个组播组有一个对应的组播复制链。
11.如权利要求10所述一种IB组播报文复制和接收方法,其特征在于,所述组播复制节点是一种结构体,所述组播复制节点包括下一节点指针、队列对编号数组、有效位、校验位,所述下一节点指针指向下一个组播复制节点;所述队列对编号数组用于记录加入到此组播复制链的组播组的队列对,N表示一个组播复制节点中队列对编号的数量;所述有效位的位宽为N,所述有效位的单个位表示对应的队列对编号是否有效;所述校验位是用于检查组播复制节点的信息是否在传输过程中或软件修改过程中出错。
12.如权利要求8所述一种IB组播报文复制和接收方法,其特征在于,根据报文缓存器的缓存容量大小,记录一个表示报文缓存器剩余缓存容量的信用值在组播查询控制器内,信用值初始等于报文缓存器的缓存容量大小,当在步骤S3中组播组有效时,送出报文的同时按照报文大小将信用值减小。
13.如权利要求8所述一种IB组播报文复制和接收方法,其特征在于,报文缓存器需要的缓存容量为:缓存容量=访存往返时间*入站接口速率,访存往返时间是指发起读取请求到对应的读取响应返回之间的时间差,入站接口速率指网卡端口速率。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311514709.9A CN117240642B (zh) | 2023-11-15 | 2023-11-15 | 一种ib组播报文复制和接收装置及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311514709.9A CN117240642B (zh) | 2023-11-15 | 2023-11-15 | 一种ib组播报文复制和接收装置及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117240642A CN117240642A (zh) | 2023-12-15 |
CN117240642B true CN117240642B (zh) | 2024-01-19 |
Family
ID=89095303
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311514709.9A Active CN117240642B (zh) | 2023-11-15 | 2023-11-15 | 一种ib组播报文复制和接收装置及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117240642B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109889623A (zh) * | 2019-02-26 | 2019-06-14 | 湖南省星岳天璇科技有限公司 | 大二层层叠以太网arp广播消除方法及装置 |
CN115834263A (zh) * | 2022-11-21 | 2023-03-21 | 南京大学 | 一种分布式存储系统副本复制在网多播方法 |
CN116074236A (zh) * | 2021-10-29 | 2023-05-05 | 华为技术有限公司 | 报文转发方法及装置 |
CN116266800A (zh) * | 2021-12-17 | 2023-06-20 | 华为技术有限公司 | 组播传输方法、装置和系统 |
CN116915702A (zh) * | 2023-09-12 | 2023-10-20 | 常州楠菲微电子有限公司 | 一种报文环回编辑的方法及装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9344287B2 (en) * | 2013-01-23 | 2016-05-17 | Nexenta Systems, Inc. | Scalable transport system for multicast replication |
US9774461B2 (en) * | 2015-10-21 | 2017-09-26 | Oracle International Corporation | Network switch with dynamic multicast queues |
-
2023
- 2023-11-15 CN CN202311514709.9A patent/CN117240642B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109889623A (zh) * | 2019-02-26 | 2019-06-14 | 湖南省星岳天璇科技有限公司 | 大二层层叠以太网arp广播消除方法及装置 |
CN116074236A (zh) * | 2021-10-29 | 2023-05-05 | 华为技术有限公司 | 报文转发方法及装置 |
CN116266800A (zh) * | 2021-12-17 | 2023-06-20 | 华为技术有限公司 | 组播传输方法、装置和系统 |
WO2023109891A1 (zh) * | 2021-12-17 | 2023-06-22 | 华为技术有限公司 | 组播传输方法、装置和系统 |
CN115834263A (zh) * | 2022-11-21 | 2023-03-21 | 南京大学 | 一种分布式存储系统副本复制在网多播方法 |
CN116915702A (zh) * | 2023-09-12 | 2023-10-20 | 常州楠菲微电子有限公司 | 一种报文环回编辑的方法及装置 |
Non-Patent Citations (3)
Title |
---|
Hardware supported multicast in fat-tree-based InfiniBand networks;Jiazheng 等;《Journal of Supercomputing》;全文 * |
应用层多源组播拥塞控制研究;刘婧;《中国优秀硕士学位论文全文数据库 信息科技辑》;全文 * |
面向InfiniBand数...的区别化传输层带宽划分机制;张子文 等;《计算机学报》;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN117240642A (zh) | 2023-12-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5151899A (en) | Tracking sequence numbers in packet data communication system | |
US7953077B2 (en) | Network processor with single interface supporting tree search engine and CAM | |
US9019970B1 (en) | Implementation of reliable synchronization of distributed databases | |
US6275919B1 (en) | Memory storage and retrieval with multiple hashing functions | |
US6731599B1 (en) | Automatic load sharing-trunking | |
JP4078445B2 (ja) | データ識別子を複製することによって複数のコピーを送信するための方法および装置 | |
US8432908B2 (en) | Efficient packet replication | |
EP1629644B1 (en) | Method and system for maintenance of packet order using caching | |
US20040017819A1 (en) | Receive queue descriptor pool | |
US20090232139A1 (en) | Multiple virtual local area network databases in a switch with a relational lookup engine | |
US7046663B1 (en) | System and method for intercepting packets in a pipeline network processor | |
US20220045950A1 (en) | Single lookup entry for symmetric flows | |
KR102126592B1 (ko) | 멀티코어 프로세서들에 대한 내부 및 외부 액세스를 갖는 룩-어사이드 프로세서 유닛 | |
US7110404B1 (en) | System and method for sending a packet to multiple destinations using a pipeline network processor | |
CN113490084B (zh) | 一种支持优先级调度的fc-ae交换机超带宽传输方法 | |
US6601116B1 (en) | Network switch having descriptor cache and method thereof | |
US20040218592A1 (en) | Method and apparatus for fast contention-free, buffer management in a multi-lane communication system | |
GB2322761A (en) | A method for selecting virtual channels for the transmission of data packets over an ATM network | |
CN117240642B (zh) | 一种ib组播报文复制和接收装置及方法 | |
US6208662B1 (en) | Method for distributing and recovering buffer memories in an asynchronous transfer mode edge device | |
CN100401718C (zh) | 一种数据帧组播复制的方法及系统 | |
CN1132492C (zh) | 用于对信元流进行冗余端接的设备 | |
US6885591B2 (en) | Packet buffer circuit and method | |
US6556579B1 (en) | Method and apparatus for detecting duplicate buffers in a descriptor based multi-port queue | |
GB2321820A (en) | A method for dynamically allocating buffers to virtual channels in an asynchronous network |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |