一种基于多滑动窗口并发的轻量级异步消息实现方法技术

技术编号:19865791 阅读:123 留言:0更新日期:2018-12-22 13:45
本发明专利技术公开一种基于多滑动窗口并发的轻量级异步消息实现方法,该方法通过发送方消息重传和接收方消息排重,由软硬件协作共同实现异步消息的可靠传输,极大地降低了硬件实现异步消息容错的复杂度。与传统滑动窗口相比,通信双方无需进行握手和信用反馈,无需对乱序数据包进行缓存,降低了维护并发窗口的内存开销和CPU开销;支持多个独立的滑动窗口并发工作,可以大幅提高异步消息的带宽。

【技术实现步骤摘要】
一种基于多滑动窗口并发的轻量级异步消息实现方法
本专利技术涉及高速互连网络领域,尤其涉及一种基于多滑动窗口并发的轻量级异步消息实现方法。
技术介绍
支持RemoteDirectMemoryAccess(RDMA)技术的网络接口卡(RNIC)使处理器具有直接访问远程计算机内存的能力,具有数据零拷贝、数据传输旁路操作系统核心等特性,从而可以显著降低处理器负载、提高数据传输效率。RNIC一般包含如下三类通信资源:(1)发送队列(SendQueue,SQ)是网卡中用于管理发送请求的部件,用于管理发送工作请求;(2)接收队列(ReceiveQueue,RQ),是网卡中用于管理接收请求的部件,用于管理接收工作请求;(3)完成队列(CompleteQueue,CQ),是网卡中用于管理完成信息的部件,用于管理完成信息。RNIC支持异步消息、RDMAW、RDMAR等消息类型,其中异步消息是一种重要的消息类型,提供了Send/Recv语义,可用于控制消息的传输等场景。每个发送队列可以向任意的接收队列发送数据,每个接收队列也可以从任意的发送队列接收数据。使用异步消息传输数据时,首先在接收方接收队列中投递接收请求,指定接收方缓冲区地址。然后由发送方向发送队列投递发送请求,指定发送方缓冲区地址。RNIC发送部件根据发送请求将数据写入接收方接收请求指定的内存中,并分别在发送方、接收方的完成队列中产生完成信息。用户以异步方式查询完成队列获取发送及接收请求的执行情况。目前开放式高性能互连网络标准一般都是通过硬件维护的一对一连接以及递增的消息序列号来实现异步消息的有序可靠传输,这种方式不但增加了硬件设计的负担,而且消息传输效率较低。
技术实现思路
本专利技术的目的在于通过一种基于多滑动窗口并发的轻量级异步消息实现方法,来解决以上
技术介绍
部分提到的问题。为达此目的,本专利技术采用以下技术方案:一种基于多滑动窗口并发的轻量级异步消息实现方法,其包括如下步骤:S101、接收端预先向接收队列投递接收请求;S102、发送方消息库通过查询发送方连接信息表,获取空闲的发送窗口,并将窗口ID、包序列号填入发送描述符,然后按门铃;S103、发送部件处理该发送描述符:首先从发送队列取发送描述符,然后根据描述符从发送缓冲区取数据,并将数据发送给接收端;S104、接收部件接收数据:从接收队列取接收描述符、将数据写入描述符指定的接收缓冲区、向接收方完成队列写完成;S105、接收方向发送方发送ACK;S106、接收端进行消息排重:查询完成队列;查询接收方连接信息表,根据数据包携带的窗口ID、序列号进行排重;S107、发送方收到ACK后,向完成队列写状态为成功的完成;或者定时器超时后,向完成队列写状态为超时的完成。S108、发送方查询完成,根据完成状态确定是否重传:若状态为成功,则增加该消息使用的窗口的序列号,释放该窗口;若状态为超时,则进行重传。特别地,如果在传输过程中异步消息请求丢失,则处理过程如下:S201、接收端预先向接收队列投递接收请求;S202、发送方消息库通过查询连接信息表,获取空闲的发送窗口,并将窗口ID、包序列号填入发送描述符,然后按门铃;S203、发送部件处理该发送描述符:从发送队列取发送描述符、根据描述符从发送缓冲区取数据、将数据发送给接收端,但数据在传输过程中丢失;S204、发送方在规定的时间内未收到ACK,向完成队列写状态为超时的完成;S205、发送方查询到超时完成,使用同一个窗口进行重传。特别地,如果在传输过程中异步消息ACK丢失,则处理过程如下:S301、接收端预先向接收队列投递接收请求;S302、发送方消息库通过查询连接信息表,获取空闲的发送窗口,并将窗口ID、包序列号填入发送描述符,然后按门铃;S303、发送部件处理该发送描述符:首先从发送队列取发送描述符,然后根据描述符从发送缓冲区取数据,并将数据发送给接收端;S304、接收部件接收数据:从接收队列取接收描述符、将数据写入描述符指定的接收缓冲区、向接收方完成队列写完成;S305、接收方向发送方发送ACK;S306、接收端进行消息排重:查询完成队列;查询连接信息表,根据数据包携带的窗口ID、序列号进行排重;S307、发送方在规定的时间内未收到ACK,向完成队列写状态为超时的完成;S308、发送方查询到超时完成,使用同一个窗口进行重传;S309、接收方收到重发的消息,查询连接信息包,如果发现是重复包,直接丢弃。本专利技术提出的基于多滑动窗口并发的轻量级异步消息实现方法通过发送方消息重传和接收方消息排重,由软硬件协作共同实现异步消息的可靠传输,极大地降低了硬件实现异步消息容错的复杂度。与传统滑动窗口相比,通信双方无需进行握手和信用反馈,无需对乱序数据包进行缓存,降低了维护并发窗口的内存开销和CPU开销;支持多个独立的滑动窗口并发工作,可以大幅提高异步消息的带宽。附图说明图1为本专利技术实施例提供的基于多滑动窗口并发的轻量级异步消息实现方法原理示意图;图2A和图2B为本专利技术实施例提供的发送端获取发送窗口过程示意图;图3为本专利技术实施例提供的数据包格式示意图;图4为本专利技术实施例提供的传输过程中异步消息请求丢失处理过程示意图;图5为本专利技术实施例提供的传输过程中异步消息ACK丢失处理过程示意图。具体实施方式下面结合附图和实施例对本专利技术作进一步说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本专利技术,而非对本专利技术的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本专利技术相关的部分而非全部内容,除非另有定义,本文所使用的所有技术和科学术语与属于本专利技术的
的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述具体的实施例,不是旨在于限制本专利技术。本专利技术采用软硬件协同的方式实现异步消息的高效、可靠传输,由硬件提供一定的可靠传输能力,由消息库软件通过并发的轻量级滑动窗口实现异步消息的重传与排重。硬件层为可靠数据传输提供下列支持:(1)接收部件对每个收到的数据包进行应答,但不检测和处理丢包、重复包、乱序包等错误。(2)发送部件在规定时间内收到应答后,产生状态为成功的完成。(3)发送部件在规定时间内未收到应答,产生状态为超时的完成;此时存在两种可能,一是接收方没有收到数据,二是接收方收到了数据但应答丢失。发送端通过查询完成队列获知发送请求的执行情况。状态为成功的完成表示数据被接收端正确地接收。状态为超时的完成无法判断接收端是否收到了数据。为了保证数据的可靠传输,发送端消息库查询到超时完成后,重新投递一个跟超时消息一样的发送请求。如果该超时是由于请求包丢失引起的,则该重传不会引起问题。如果该超时是由于应答包丢失引起的,则接收方会收到两个重复的数据包,为了保证可靠性语义,需要在接收端利用数据包的序列号进行排重以便丢掉重复的数据包。请参照图1所示,图1为本专利技术实施例提供的基于多滑动窗口并发的轻量级异步消息实现方法原理示意图。本实施例中基于多滑动窗口并发的轻量级异步消息实现方法,其包括:步骤1.接收端预先向接收队列投递接收请求,指定接收缓冲区的地址、长度等信息。步骤2.发送端获取发送窗口。发送方消息库通过查询发送方连接信息表,获取空闲的发送窗口,并将窗口ID、包序列号填入发送描述符,然后按门铃。如图2A和图本文档来自技高网
...

【技术保护点】
1.一种基于多滑动窗口并发的轻量级异步消息实现方法,其特征在于,包括如下步骤:S101、接收端预先向接收队列投递接收请求;S102、发送方消息库通过查询发送方连接信息表,获取空闲的发送窗口,并将窗口ID、包序列号填入发送描述符,然后按门铃;S103、发送部件处理该发送描述符:首先从发送队列取发送描述符,然后根据描述符从发送缓冲区取数据,并将数据发送给接收端;S104、接收部件接收数据:从接收队列取接收描述符、将数据写入描述符指定的接收缓冲区、向接收方完成队列写完成;S105、接收方向发送方发送ACK;S106、接收端进行消息排重:查询完成队列;查询接收方连接信息表,根据数据包携带的窗口ID、序列号进行排重;S107、发送方收到ACK后,向完成队列写状态为成功的完成;或者定时器超时后,向完成队列写状态为超时的完成。S108、发送方查询完成,根据完成状态确定是否重传:若状态为成功,则增加该消息使用的窗口的序列号,释放该窗口;若状态为超时,则进行重传。

【技术特征摘要】
1.一种基于多滑动窗口并发的轻量级异步消息实现方法,其特征在于,包括如下步骤:S101、接收端预先向接收队列投递接收请求;S102、发送方消息库通过查询发送方连接信息表,获取空闲的发送窗口,并将窗口ID、包序列号填入发送描述符,然后按门铃;S103、发送部件处理该发送描述符:首先从发送队列取发送描述符,然后根据描述符从发送缓冲区取数据,并将数据发送给接收端;S104、接收部件接收数据:从接收队列取接收描述符、将数据写入描述符指定的接收缓冲区、向接收方完成队列写完成;S105、接收方向发送方发送ACK;S106、接收端进行消息排重:查询完成队列;查询接收方连接信息表,根据数据包携带的窗口ID、序列号进行排重;S107、发送方收到ACK后,向完成队列写状态为成功的完成;或者定时器超时后,向完成队列写状态为超时的完成。S108、发送方查询完成,根据完成状态确定是否重传:若状态为成功,则增加该消息使用的窗口的序列号,释放该窗口;若状态为超时,则进行重传。2.根据权利要求1所述的基于多滑动窗口并发的轻量级异步消息实现方法,其特征在于,如果在传输过程中异步消息请求丢失,则处理过程如下:S201、接收端预先向接收队列投递接收请求;S202、发送方消息库通过查询连接信息表,获取空闲的发送窗口,并将窗口ID、包序列号填入发送描述符,然...

【专利技术属性】
技术研发人员:陈淑平周慧霖彭龙根何王全卢德平钱炜
申请(专利权)人:无锡江南计算技术研究所
类型:发明
国别省市:江苏,32

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

1