一种基于WQE反压的QP的流控方法与流程

文档序号:26793376发布日期:2021-09-29 00:11阅读:359来源:国知局
一种基于WQE反压的QP的流控方法与流程
一种基于wqe反压的qp的流控方法
技术领域
1.本发明涉及流量控制方法相关领域,具体为一种基于wqe反压的qp的流控方法。


背景技术:

2.随着rocev2(rdma over converged ethernet v2)技术的成熟,rdma可以部署在数据中心已有的网络设施上,在大规模数据中心中部署rocev2,首先面临的问题是如何保证rdma的可靠传输。一旦发生丢包,通常会惩罚性地乘性减慢发送速率,并重传丢弃的数据包,用户会感受到突发的性能降级。流量控制可以有效的降低丢包概率,保证可靠性传输。
3.所以要想发挥出rdma真正的性能,突破数据中心大规模分布式系统的网络性能瓶颈,势必要为rdma搭建一套不丢包的无损网络环境,而实现不丢包的关键就是解决网络拥塞。流量控制用于防止端口阻塞的情况下丢帧。
4.现有的流控方法是在每个受控qp的发送端放置一个缓存区,将需要发送的数据包先缓存在缓存区中,然后按照每个qp流量配置进行数据发送,从而实现基于qp的流控。但是这种方法存在着一些缺点,比如:在每个受控qp发送端增加了一个数据包缓存区,增加了额外的发送延时,增加了额外的缓存区管理及调度逻辑,增加了系统的负复杂度,增加内存的消耗也增加了成本;该方法由于缓存区大小的限制,导致受控qp的个数有限,无法在受控qp数量大的应用中使用;rdma数据传输时,理论上支持的qp个数为2的24次方个,实际使用中,qp的个数通常在兆级甚至更多,导致该方法无法在rdma通信的应用中成为基于qp流控的通用解决方案。针对上述一些问题,设计了一种基于wqe反压的qp的流控方法。


技术实现要素:

5.本发明的目的在于提供一种基于wqe反压的qp的流控方法,以解决上述背景技术中提出的问题。
6.为实现上述目的,本发明提供如下技术方案:一种基于wqe反压的qp的流控方法,包括计时器、qp仲裁模块、qp管理模块、wqe_fifo储存器、包发送模块、qp寄存器模块、qp2受控寄存器、qp3正常寄存器、sq2基地址寄存器和sq3基地址寄存器,其流控方法如下:
7.步骤1、根据qp仲裁模块选定qp,qp管理模块由选定的结果从qp寄存器中读取该qp信息,再从对应的sq2基地址寄存器中读取待执行的wqe,然后将wqe写入wqe_fifo储存器中;
8.步骤2、包发送模块从wqe_fifo储存器读取sq2基地址寄存器中的wqe2_1,并根据wqe2_1中指定的数据长度,计算出需要分开发送数据包的总个数n;
9.步骤3包发送模块再根据qp2受控寄存器预先设置的流量,计算出本次发送数据包的个数m,并将m个数据包发送出去,并且包发送模块触发流控标志;
10.步骤4、将步骤3中的流控标志发送给wqe_fifo储存器,接收到的流控标志的wqe_fifo储存器通过自查将qp2受控寄存器的所有wqe2_1和wqe2_2清除,同时将qp3正常寄存器的wqe按原来的顺序置顶;
11.步骤5、将步骤3中的流控标志发送给qp管理模块后,qp管理模块将包计数值m回写到qp2受控寄存器的wqe当前指针寄存器中进行反压;
12.步骤6、将步骤3中的流控标志发送给计时器后,计时器根据qp2受控寄存器预先设定的流量,计算出间隔发送m个数据包的时间间隔,并进行计时;
13.步骤7、在步骤6中计时器开始计时后,包发送模块继续读取wqe3_1和wqe3_2执行qp3正常寄存器的操作;
14.步骤8、在步骤6中计时器计时完毕后,qp仲裁模块重新选中qp2受控寄存器,然后qp管理模块重新将wqe2_1读取出来并写入wqe_fifo储存器;
15.步骤9、包发送模块读取步骤8中wqe_fifo储存器内的wqe2_1,并发送m个数据包,同时再一次触发流控标志;
16.步骤10、重复步骤3到步骤9的操作,每次等间隔的调度wqe2_1并发送m个数据包,直到所有的n个数据包发送完毕为止,并且将qp2受控寄存器的wqe包计数寄存器清零。
17.优选的,所述步骤2中数据包的最大数据长度为4096byte。
18.优选的,所述qp2受控寄存器需要执行的发送任务wqe2_1、wqe2_2及wqe2_3,所述qp3正常寄存器需要执行的发送任务wqe2_1和wqe2_2。
19.优选的,所述步骤3中发出的m个数据包,其中第一个包标记为first,后续的m

1个包标记为middle,所述步骤9发出的m个数据包都标记为middle,所述步骤10中发送的最后一个数据包标记为last。
20.与现有技术相比,本发明的有益效果是:本发明通过计时器和qp仲裁模块的配合来精确控制调度时间,从而控制wqe中数据包的发送间隔,实现基于qp流量的精确控制;通过weq_fifo储存器的自查,将qp2受控寄存器的所有wqe从fifo中清除,保留qp3正常寄存器中非受控qp的wqe,使非受控qp的操作不受影响;将qp2受控寄存器当前执行wqe的指针回写对应的qp寄存器的wqe当前指针寄存器中,进行反压操作,从而使得该wqe可以被不断的重复调用,直到按照流控的要求完成数据发送为止,实现基于wqe反压的流控。
附图说明
21.图1为本发明的工作流程示意图;
22.图2为本发明的步骤2中各个模块工作流程图;
23.图3为本发明的步骤7中各个模块工作流程图;
24.图4为本发明的流控制效果图。
25.图中:1、计时器;2、qp仲裁模块;3、qp管理模块;4、wqe_fifo储存器;5、包发送模块;6、qp寄存器;7、qp2受控寄存器;8、qp3正常寄存器;9、sq2基地址寄存器;10、sq3基地址寄存器。
具体实施方式
26.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
27.请参阅图1

4,本发明提供一种技术方案:一种基于wqe反压的qp的流控方法,包括计时器1、qp仲裁模块2、qp管理模块3、wqe_fifo储存器4、包发送模块5、qp寄存器模块6、qp2受控寄存器7、qp3正常寄存器8、sq2基地址寄存器9和sq3基地址寄存器10,其流控方法如下:
28.步骤1、根据qp仲裁模块2选定qp,qp管理模块3由选定的结果从qp寄存器6中读取该qp信息,再从对应的sq2基地址寄存器9中读取待执行的wqe,然后将wqe写入wqe_fifo储存器4中;
29.步骤2、包发送模块5从wqe_fifo储存器4读取sq2基地址寄存器9中的wqe2_1,并根据wqe2_1中指定的数据长度,计算出需要分开发送数据包的总个数n,此时各个模块的状态如图2所示;
30.步骤3包发送模块5再根据qp2受控寄存器7预先设置的流量,计算出本次发送数据包的个数m,并将m个数据包发送出去,并且包发送模块5触发流控标志;
31.步骤4、将步骤3中的流控标志发送给wqe_fifo储存器4,接收到的流控标志的wqe_fifo储存器4通过自查将qp2受控寄存器7的所有wqe2_1和wqe2_2清除,同时将qp3正常寄存器8的wqe按原来的顺序置顶;
32.步骤5、将步骤3中的流控标志发送给qp管理模块3后,qp管理模块3将包计数值m回写到qp2受控寄存器7的wqe当前指针寄存器中进行反压;
33.步骤6、将步骤3中的流控标志发送给计时器1后,计时器1根据qp2受控寄存器7预先设定的流量,计算出间隔发送m个数据包的时间间隔,并进行计时;
34.步骤7、在步骤6中计时器1开始计时后,包发送模块5继续读取wqe3_1和wqe3_2执行qp3正常寄存器8的操作,此时各个模块的状态如图3所示;
35.步骤8、在步骤6中计时器1计时完毕后,qp仲裁模块重新选中qp2受控寄存器7,然后qp管理模块3重新将wqe2_1读取出来并写入wqe_fifo储存器4;
36.步骤9、包发送模块5读取步骤8中wqe_fifo储存器4内的wqe2_1,并发送m个数据包,同时再一次触发流控标志;
37.步骤10、重复步骤3到步骤9的操作,每次等间隔的调度wqe2_1并发送m个数据包,直到所有的n个数据包发送完毕为止,并且将qp2受控寄存器7的wqe包计数寄存器清零。
38.进一步的,步骤2中数据包的最大数据长度为4096byte。
39.进一步的,qp2受控寄存器7需要执行的发送任务wqe2_1、wqe2_2及wqe2_3,qp3正常寄存器8需要执行的发送任务wqe2_1和wqe2_2。
40.进一步的,所述步骤3中发出的m个数据包,其中第一个包标记为first,后续的m

1个包标记为middle,所述步骤9发出的m个数据包都标记为middle,所述步骤10中发送的最后一个数据包标记为last。
41.其中将rdma设定最大传输长度pmtu(path maximum transfer unit)为1024bytes;qp2受控寄存器7的流量设置为10mb/s,wqe2_1发送的数据包长度为10mbit。则通过上述的前提假设和流控逻辑,可以得出每秒发送包的总个数n=10240个(10mb/1024byte),设定每秒发送1024次(计时器控制每976562.5ns触发一次发送操作),每次发送包的个数m=10,通过精确的控制间隔时间,可以精确的控制qp的流量,控制效果如图5所示。
42.本发明通过计时器1和qp仲裁模块2的配合来精确控制调度时间,从而控制wqe中数据包的发送间隔,实现基于qp流量的精确控制;通过weq_fifo储存器4的自查,将qp2受控寄存器7的所有wqe从fifo中清除,保留qp3正常寄存器8中非受控qp的wqe,使非受控qp的操作不受影响;将qp2受控寄存器7当前执行wqe的指针回写对应的qp寄存器6的wqe当前指针寄存器中,进行反压操作,从而使得该wqe可以被不断的重复调用,直到按照流控的要求完成数据发送为止,实现基于wqe反压的流控。
43.尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1