一种基于NTB硬件的多队列通信方法及系统技术方案

技术编号:14778295 阅读:44 留言:0更新日期:2017-03-09 14:11
本发明专利技术公开了一种基于NTB硬件的多队列通信方法及系统,包括:发送端控制器根据待发送数据的数据大小及预定的队列选取规则,选取对应的目标NTB队列;所述发送端控制器按照预定封装格式对所述待发送数据进行封装,通过所述目标NTB队列将已封装数据发送至接收端控制器,并修改所述目标NTB队列控制页的管理数据;所述接收端控制器通过监控所述目标NTB队列控制页的管理数据,获取所述发送端控制器发送的已封装数据;可见,通过本方案提供的通信方法,不会出现数据包丢失,数据包乱序等情况,并且由于NTB链路的可靠性,也不会存在消息序列号的循环溢出等问题,从而实现高效的消息传递。

【技术实现步骤摘要】

本专利技术涉及计算机系统软件设计思想领域,更具体地说,涉及一种基于NTB硬件的多队列通信方法及系统
技术介绍
PCIe是现代计算机系统使用的主要总线协议之一,存在着非透明桥接(即NTB,Non-transparentBridging)延伸规格。随着传统存储系统的发展,对于多控制器的互联的通信的带宽性能要求也越来越高,PCIe也伴随着协议的改进而发展起来,PCIe的NTB也渐渐成为多控制器之间通信的新的手段,由于NTB是一种新的硬件通信设备,因此,如何实现基于NTB的通信方法,完成通信任务,实现多控制器之间的通信是本领域技术人员需要解决的问题。
技术实现思路
本专利技术的目的在于提供一种基于NTB硬件的多队列通信方法及系统,以实现基于NTB的通信,实现多控制器之间的通信。为实现上述目的,本专利技术实施例提供了如下技术方案:一种基于NTB硬件的多队列通信方法,包括:发送端控制器根据待发送数据的数据大小及预定的队列选取规则,选取对应的目标NTB队列;所述发送端控制器按照预定封装格式对所述待发送数据进行封装,通过所述目标NTB队列将已封装数据发送至接收端控制器,并修改所述目标NTB队列控制页的管理数据;所述接收端控制器通过监控所述目标NTB队列控制页的管理数据,获取所述发送端控制器发送的已封装数据。其中,所述发送端控制器根据待发送数据的数据大小及预定的队列选取规则,选取对应的目标NTB队列,包括:根据所述待发送数据的数据大小,确定所述待发送数据位于队列范围集中的目标队列范围,并将与所述目标队列范围所对应的NTB队列作为目标NTB队列;若根据所述待发送数据的数据大小,确定所述待发送数据不位于队列范围集中,则选取与所述待发送数据的数据大小最接近的NTB队列作为目标NTB队列,并根据最接近的NTB队列的粒度对所述待发送数据执行分片操作。其中,所述队列范围集所对应的NTB队列包括:以4KB为粒度所对应的NTB队列,以16KB为粒度所对应的NTB队列,以256KB为粒度所对应的NTB队列和以1MB为粒度所对应的NTB队列。其中,所述接收端控制器通过监控所述NTB队列控制页的管理数据,获取所述发送端控制器发送的已封装数据,包括:若所述接收端控制器监控到所述管理数据中的空闲下表信息发生变化,则获取已封装数据,对所述已封装数据进行解析后发送至上层应用;所述接收端控制器更新所述管理数据中的空闲下表信息。其中,已封装数据的封装格式依次包括:序列号信息,版本号信息,标志位信息,回复序列号信息,负载数据的长度信息,负载数据,校验数据;其中,所述标志位信息表示已封装数据的属性信息。其中,所述接收端控制器获取已封装数据之后,还包括:检测所述已封装数据中是否存在回复序列号;若存在,则判断是否存在需要发送至所述发送端控制器的回复数据;若存在回复数据,则按照所述预定封装格式对包括所述回复数据及所述回复序列号的消息包进行封装,并通过NTB队列发送至发送端控制器;若不存在回复数据,则间隔预设时长后,按照所述预定封装格式对包括所述回复序列号的消息包进行封装,并通过NTB队列发送至发送端控制器。其中,本方案还包括:所述发送端控制器根据当前NTB队列的数据结构判断是否能发送所述待发送数据;若能,则通过NTB队列将已封装数据发送至接收端控制器;若不能,则将所述待发送数据存入等待队列,直至当前NTB队列能发送所述待发送数据为止。一种基于NTB硬件的多队列通信系统,包括发送端控制器和接收端控制器;发送端控制器包括:选取模块,用于根据待发送数据的数据大小及预定的队列选取规则,选取对应的目标NTB队列;封装模块,用于按照预定封装格式对所述待发送数据进行封装;第一发送模块,用于通过所述目标NTB队列将已封装数据发送至接收端控制器,并修改所述目标NTB队列控制页的管理数据;所述接收端控制器通过监控所述目标NTB队列控制页的管理数据,获取所述发送端控制器发送的已封装数据。其中,所述接收端控制器,还包括:检测模块,用于检测所述已封装数据中是否存在回复序列号;判断模块,用于在所述已封装数据中存在回复序列号时,判断是否存在需要发送至所述发送端控制器的回复数据;第二发送模块,用于存在回复数据时,按照所述预定封装格式对包括所述回复数据及所述回复序列号的消息包进行封装,并通过NTB队列发送至发送端控制器;第三发送模块,用于不存在回复数据时,间隔预设时长后,按照所述预定封装格式对包括所述回复序列号的消息包进行封装,并通过NTB队列发送至发送端控制器。其中,还包括:所述发送端控制器根据当前NTB队列的数据结构判断是否能发送所述待发送数据;若能,则通过NTB队列将已封装数据发送至接收端控制器;若不能,则将所述待发送数据存入等待队列,直至当前NTB队列能发送所述待发送数据为止。通过以上方案可知,本专利技术实施例提供的一种基于NTB硬件的多队列通信方法及系统,包括:发送端控制器根据待发送数据的数据大小及预定的队列选取规则,选取对应的目标NTB队列;所述发送端控制器按照预定封装格式对所述待发送数据进行封装,通过所述目标NTB队列将已封装数据发送至接收端控制器,并修改所述目标NTB队列控制页的管理数据;所述接收端控制器通过监控所述目标NTB队列控制页的管理数据,获取所述发送端控制器发送的已封装数据;可见,通过本方案提供的通信方法,不会出现数据包丢失,数据包乱序等情况,并且由于NTB链路的可靠性,也不会存在消息序列号的循环溢出等问题,从而实现高效的消息传递。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本专利技术实施例公开的一种基于NTB硬件的多队列通信方法流程示意图;图2为本专利技术实施例公开的一种映射窗口数据结构示意图;图3为本专利技术实施例公开的一种数据包格式示意图;图4为本专利技术实施例公开的一种通信传递流程示意图;图5为本专利技术实施例公开的一种基于NTB硬件的多队列通信系统结构示意图。具体实施方式下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。本专利技术实施例公开了一种基于NTB硬件的多队列通信方法及系统,以实现基于NTB的通信,实现多控制器之间的通信。需要说明的是,NTB硬件的特点是可以直接访问远端内存的地址空间,也就是说假设节点A和节点B使用NTB相连,节点A可以直接访问节点B的内存空间,NTB会映射出一个地址窗口,这个窗口是节点B的内存的一部分地址空间,可能是4GB,也可能是2GB,可以根据实际的环境进行对应调节,但是对于这个映射窗口的所使用的数据结构是没有明确要求的,但是作为通信方法,会具体的说明数据结构,同时存放在这个数据结构中的通信消息的格式也是很关键的,通信方法也会对具体消息的通信格式进行说明。参见图1,本专利技术实施例提供的一种基于NTB硬件的多队列通信方法,包括:S1本文档来自技高网...
一种基于NTB硬件的多队列通信方法及系统

【技术保护点】
一种基于NTB硬件的多队列通信方法,其特征在于,包括:发送端控制器根据待发送数据的数据大小及预定的队列选取规则,选取对应的目标NTB队列;所述发送端控制器按照预定封装格式对所述待发送数据进行封装,通过所述目标NTB队列将已封装数据发送至接收端控制器,并修改所述目标NTB队列控制页的管理数据;所述接收端控制器通过监控所述目标NTB队列控制页的管理数据,获取所述发送端控制器发送的已封装数据。

【技术特征摘要】
1.一种基于NTB硬件的多队列通信方法,其特征在于,包括:发送端控制器根据待发送数据的数据大小及预定的队列选取规则,选取对应的目标NTB队列;所述发送端控制器按照预定封装格式对所述待发送数据进行封装,通过所述目标NTB队列将已封装数据发送至接收端控制器,并修改所述目标NTB队列控制页的管理数据;所述接收端控制器通过监控所述目标NTB队列控制页的管理数据,获取所述发送端控制器发送的已封装数据。2.根据权利要求1所述的多队列通信方法,其特征在于,所述发送端控制器根据待发送数据的数据大小及预定的队列选取规则,选取对应的目标NTB队列,包括:根据所述待发送数据的数据大小,确定所述待发送数据位于队列范围集中的目标队列范围,并将与所述目标队列范围所对应的NTB队列作为目标NTB队列;若根据所述待发送数据的数据大小,确定所述待发送数据不位于队列范围集中,则选取与所述待发送数据的数据大小最接近的NTB队列作为目标NTB队列,并根据最接近的NTB队列的粒度对所述待发送数据执行分片操作。3.根据权利要求2所述的多队列通信方法,其特征在于,所述队列范围集所对应的NTB队列包括:以4KB为粒度所对应的NTB队列,以16KB为粒度所对应的NTB队列,以256KB为粒度所对应的NTB队列和以1MB为粒度所对应的NTB队列。4.根据权利要求3所述的多队列通信方法,其特征在于,所述接收端控制器通过监控所述NTB队列控制页的管理数据,获取所述发送端控制器发送的已封装数据,包括:若所述接收端控制器监控到所述管理数据中的空闲下表信息发生变化,则获取已封装数据,对所述已封装数据进行解析后发送至上层应用;所述接收端控制器更新所述管理数据中的空闲下表信息。5.根据权利要求1所述的多队列通信方法,其特征在于,已封装数据的封装格式依次包括:序列号信息,版本号信息,标志位信息,回复序列号信息,负载数据的长度信息,负载数据,校验数据;其中,所述标志位信息表示已封装数据的属性信息。6.根据权利要求5所述的多队列通信方法,其特征在于,所述接收端控制器获取已封装数据之后,还包括:检测所述已封装数据中是否存在回复序列号;若存在,则判断是否存在需要发送至...

【专利技术属性】
技术研发人员:张仁峰闫永刚卓保特
申请(专利权)人:郑州云海信息技术有限公司
类型:发明
国别省市:河南;41

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1