基于RDMA的协议报文转发方法及装置与流程

文档序号:18885138发布日期:2019-10-15 20:47阅读:242来源:国知局
基于RDMA的协议报文转发方法及装置与流程

本发明涉及通信技术领域,尤指一种基于远程直接数据存取(remotedirectmemoryaccess,rdma)的协议报文转发方法及装置。



背景技术:

当今已经进入大数据时代,数据中心的数据流每天产生的数据量都是t级别,比如,纽约证券所每天交易量是1tb,facebook每一千亿照片的数据量是1pb,腾讯每天的数据量是300tb,等等。由于数据中心每天产生的数据量非常大,为了满足高带宽、低延迟的要求,数据中心通常采用rdma。rdma通过网络把数据直接传入服务器的存储器,将数据从一个系统快速移动到远程系统存储器中,而不对操作系统造成任何影响。它消除了外部存储器复制和上下文切换的开销,因而能解放内存带宽和中央处理器(centralprocessingunit,cpu)进而改进应用系统性能。

数据中心的网络设备在进行报文转发时,会先将接收到的报文分配到各个入口队列,每个入口队列通过一个虚拟通道与对应的出口队列连接,每个入口队列的优先级不同,如图1所示为入口队列、虚拟通道、出口队列的示意图,然后再调度各个出口队列通过网络设备的接口转发出去。当数据中心采用rdma技术时,网络设备与服务器之间的流量非常大,网络设备中的各个入口队列与出口队列之间的虚拟通道极易产生拥塞而引发丢包,一旦协议报文出现丢包,直接会影响数据中心的正常通信,如何控制拥塞是确保数据中心正常通信的关键。



技术实现要素:

本发明实施例提供一种基于rdma的协议报文转发方法及装置,用以解决现有技术中存在的协议报文出现丢包,直接影响数据中心的正常通信的问题。

根据本发明实施例,提供一种基于rdma的协议报文转发方法,应用在基于rdma的网络设备中,其特征在于,所述方法包括:

确定接收到的待转发协议报文的第一业务类型;

根据业务类型与初始入口队列的对应关系确定所述第一业务类型对应的第一初始入口队列;

若确定所述第一初始入口队列拥塞,则重新探测各个初始入口队列与对应的出口队列之间的虚拟通道的带宽负载后,基于重新探测的带宽负载从所述各个初始入口队列中选出反压入口队列;

将所述待转发协议报文添加到所述反压入口队列中进行转发。

具体的,重新探测各个初始入口队列与对应的出口队列之间的虚拟通道的带宽负载后,从所述各个初始入口队列中选出反压入口队列,具体包括:

通过保活检测探测所述各个初始入口队列与对应的出口队列之间的虚拟通道的带宽负载;

比较得到的带宽负载;

选取带宽负载最小的虚拟通道对应的初始入口队列,得到所述反压入口队列。

具体的,还包括:

确定所述第一业务类型的所有协议报文的起始标识和终止标识,以及所述待转发协议报文在所述第一业务类型的所有协议报文中的排序标识;

在所述待转发协议报文的报文头部添加所述第一业务类型、所述起始标识、所述终止标识和所述排序标识。

可选的,还包括:

根据所述网络设备的各个接口转发的协议报文携带的业务类型、起始标识、终止标识和排序标识统计各个业务类型的协议报文的丢包率;

将各个业务类型的协议报文的丢包率分别与设定阈值进行比较;

丢包率大于所述设定阈值的第二业务类型的协议报文确定发生丢包;

根据所述对应关系确定所述第二业务类型对应的第二初始入口队列;

确定所述第二初始入口队列拥塞。

具体的,根据所述网络设备的各个接口转发的协议报文携带的业务类型、起始标识、终止标识和排序标识统计各个业务类型的协议报文的丢包率,具体包括:

针对每个业务类型,执行:

获取当前业务类型的已丢掉协议报文的排序标识;

统计所述当前业务类型的已丢掉协议报文的第一数量;

根据所述当前业务类型的所有协议报文的起始标识和终止标识计算所述当前业务类型的所有协议报文的第二数量;

将所述第一数量与所述第二数量的比值作为所述当前业务类型的协议报文的丢包率。

根据本发明实施例,还提供一种基于rdma的协议报文转发装置,应用在基于rdma的网络设备中,所述装置包括:

第一确定模块,用于确定接收到的待转发协议报文的第一业务类型;

第二确定模块,用于根据业务类型与初始入口队列的对应关系确定所述第一业务类型对应的第一初始入口队列;

选取模块,用于若确定所述第一初始入口队列拥塞,则重新探测各个初始入口队列与对应的出口队列之间的虚拟通道的带宽负载后,基于重新探测的带宽负载从所述各个初始入口队列中选出反压入口队列;

添加模块,用于将所述待转发协议报文添加到所述反压入口队列中进行转发。

具体的,所述选取模块,用于重新探测各个初始入口队列与对应的出口队列之间的虚拟通道的带宽负载后,从所述各个初始入口队列中选出反压入口队列,具体用于:

通过保活检测探测所述各个初始入口队列与对应的出口队列之间的虚拟通道的带宽负载;

比较得到的带宽负载;

选取带宽负载最小的虚拟通道对应的初始入口队列,得到所述反压入口队列。

可选的,所述第一确定模块,还用于确定所述第一业务类型的所有协议报文的起始标识和终止标识,以及所述待转发协议报文在所述第一业务类型的所有协议报文中的排序标识;

所述添加模块,还用于在所述待转发协议报文的报文头部添加所述第一业务类型、所述起始标识、所述终止标识和所述排序标识。

可选的,所述装置还包括:

统计模块,用于根据所述网络设备的各个接口转发的协议报文携带的业务类型、起始标识、终止标识和排序标识统计各个业务类型的协议报文的丢包率;

比较模块,用于将各个业务类型的协议报文的丢包率分别与设定阈值进行比较;

第三确定模块,用于丢包率大于所述设定阈值的第二业务类型的协议报文确定发生丢包;

第四确定模块,用于根据所述对应关系确定所述第二业务类型对应的第二初始入口队列;确定所述第二初始入口队列拥塞。

具体的,所述统计模块,用于根据所述网络设备的各个接口转发的协议报文携带的业务类型、起始标识、终止标识和排序标识统计各个业务类型的协议报文的丢包率,具体用于:

针对每个业务类型,执行:

获取当前业务类型的已丢掉协议报文的排序标识;

统计所述当前业务类型的已丢掉协议报文的第一数量;

根据所述当前业务类型的所有协议报文的起始标识和终止标识计算所述当前业务类型的所有协议报文的第二数量;

将所述第一数量与所述第二数量的比值作为所述当前业务类型的协议报文的丢包率。

本发明有益效果如下:

本发明实施例提供一种基于rdma的协议报文转发方法及装置,通过确定接收到的待转发协议报文的第一业务类型;根据业务类型与初始入口队列的对应关系确定所述第一业务类型对应的第一初始入口队列;若确定所述第一初始入口队列拥塞,则重新探测各个初始入口队列与对应的出口队列之间的虚拟通道的带宽负载后,基于重新探测的带宽负载从所述各个初始入口队列中选出反压入口队列;将所述待转发协议报文添加到所述反压入口队列中。该方案中,在转发待转发协议报文时,确定出该待转发协议报文对应的第一初始入口队列后,会进一步确定第一初始入口队列是否拥塞,若拥塞会重新探测,从各个初始入口队列中选出反压入口队列,将待转发报文添加到反压入口队列进行转发,从而可以确保待转发协议报文可以正常转发,进一步确保数据中心正常通信。

附图说明

图1为本发明实施例中一种基于rdma的协议报文转发方法的流程图;

图2为本发明实施例中根据协议报文中携带的业务类型、起始标识、终止标识和排序标识确定各个初始入口队列是否拥塞的流程图;

图3为本发明实施例中一种基于rdma的协议报文转发装置的结构示意图;

图4为本发明实施例中另一种基于rdma的协议报文转发装置的结构示意图。

具体实施方式

针对现有技术中存在的协议报文出现丢包,直接影响数据中心的正常通信的问题,本发明实施例提供一种基于rdma的协议报文转发方法,应用在基于rdma的网络设备中,该方法的流程如图1所示,执行步骤如下:

s11:确定接收到的待转发协议报文的第一业务类型。

通常协议报文都有对应的业务类型,例如虚拟路由冗余协议(virtualrouterredundancyprotocol,vrrp)报文、地址解析协议(addressresolutionprotocol,arp)报文、动态主机配置协议(dynamichostconfigurationprotocol,dhcp)报文、知名组播路由协议报文等等,因此,在接收到待转发协议报文时,首先需要确定待转发协议报文的业务类型,可以定义为第一业务类型。

s12:根据业务类型与初始入口队列的对应关系确定第一业务类型对应的第一初始入口队列。

一般会预先设置业务类型与初始入口队列的对应关系,这样接收到待转发协议报文后可以根据该对应关系确定将待转发协议报文加入哪个初始入口队列,确定出的初始入口队列可以定位第一初始入口队列。

s13:若确定第一初始入口队列拥塞,则重新探测各个初始入口队列与对应的出口队列之间的虚拟通道的带宽负载后,基于重新探测的带宽负载从各个初始入口队列中选出反压入口队列。

在确定出第一初始入口队列后,由于是待转发协议报文,为了确保正常转发该待转发协议报文,还需要进一步确定第一初始入口队列是否拥塞,若第一初始入口队列拥塞,则需要重新确定入口队列,可以通过重新探测各个初始入口队列与对应的出口队列之间的虚拟通道的带宽负载从各个初始入口队列中选出一个初始入口队列,选出的初始入口队列可以定义为反压入口队列。

s14:将待转发协议报文添加到反压入口队列中进行转发。

可以用s13中确定出的反压入口队列来转发待转发协议报文。

该方案中,在转发待转发协议报文时,确定出该待转发协议报文对应的第一初始入口队列后,会进一步确定第一初始入口队列是否拥塞,若拥塞会重新探测,从各个初始入口队列中选出反压入口队列,将待转发报文添加到反压入口队列进行转发,从而可以确保待转发协议报文可以正常转发,进一步确保数据中心正常通信。

具体的,上述s13中重新探测各个初始入口队列与对应的出口队列之间的虚拟通道的带宽负载后,从各个初始入口队列中选出反压入口队列,实现过程具体包括:

通过保活检测探测各个初始入口队列与对应的出口队列之间的虚拟通道的带宽负载;

比较得到的带宽负载;

选取带宽负载最小的虚拟通道对应的初始入口队列,得到反压入口队列。

通常各个初始入口队列与对应的出口队列之间的虚拟通道会进行保活检测,因此,本实施例中可以借助于保活检测来探测各个初始入口队列与对应的出口队列之间的虚拟通道的带宽负载,然后基于探测到的各个带宽负载,从中选取带宽负载最小的虚拟通道对应的初始入口队列,带宽负载最小说明该初始入口队列最为空闲,从而得到反压入口队列,以确保待转发协议报文可以正常转发。

可选的,上述基于rdma的协议报文转发方法还包括:

确定第一业务类型的所有协议报文的起始标识和终止标识,以及待转发协议报文在第一业务类型的所有协议报文中的排序标识;

在待转发协议报文的报文头部添加第一业务类型、起始标识、终止标识和排序标识。

通常一个业务类型的所有协议报文的数量是确定的,因此,可以确定第一业务类型的所有协议报文的起始标识和终止标识,例如,起始标识可以为1,终止标识可以为100,还可以确定出待转发协议报文在第一业务类型中的所有协议报文中的排序标识,排序标识可以为(1,100)之间的任一数值,然后可以在待转发协议报文的报文头部添加第一业务类型、起始标识、终止标识和排序标识。

相应地,一种可选的实施方式,可以根据协议报文中携带的业务类型、起始标识、终止标识和排序标识确定各个初始入口队列是否拥塞,如图2所示,具体包括:

s21:根据网络设备的各个接口转发的协议报文携带的业务类型、起始标识、终止标识和排序标识统计各个业务类型的协议报文的丢包率。

以上介绍了待转发协议报文会携带业务类型、起始标识、终止标识和排序标识这些信息,那么待转发协议报文转发出去之后,就可以基于这些信息统计各个业务类型的协议报文的丢包率,具体可以根据网络设备的各个接口转发的协议报文携带的业务类型、起始标识、终止标识和排序标识来统计。

s22:将各个业务类型的协议报文的丢包率分别与设定阈值进行比较。

可以预先根据实际需要设置一个设定阈值,然后将各个业务类型的协议报文丢包率与其进行比较。

s23:丢包率大于设定阈值的第二业务类型的协议报文确定发生丢包。

丢包率大于设定阈值的业务类型的协议报文定义为第二业务类型的协议报文,可以确定第二业务类型的协议报文发生丢包。

s24:根据对应关系确定第二业务类型对应的第二初始入口队列。

根据之前的对应关系可以进一步确定第二业务类型对应的初始入口队列,定义为第二初始入口队列。

s25:确定第二初始入口队列拥塞。

一种可选的实施方式,可以在对应关系中第二初始入口队列添加拥塞标识,以便于后续直接识别出拥塞的初始入口队列。

通过s21-s25可以实现根据协议报文中携带的业务类型、起始标识、终止标识和排序标识确定各个初始入口队列是否拥塞,以便于后续在确定出待转发协议报文的初始入口队列后,直接确定该初始入口队列是否拥塞。

具体的,上述s21中根据网络设备的各个接口转发的协议报文携带的业务类型、起始标识、终止标识和排序标识统计各个业务类型的协议报文的丢包率,实现过程具体包括:

针对每个业务类型,执行:

获取当前业务类型的已丢掉协议报文的排序标识;

统计当前业务类型的已丢掉协议报文的第一数量;

根据当前业务类型的所有协议报文的起始标识和终止标识计算当前业务类型的所有协议报文的第二数量;

将第一数量与第二数量的比值作为当前业务类型的协议报文的丢包率。

根据目前的重传机制,网络设备发出报文后,对端会反馈未接收到的报文,网络设备可以基于此确定丢包的报文并进行重传。在本实施例中,由于之前转发的协议报文会携带业务类型、起始标识、终止标识和排序标识,网络设备可以直接获取当前业务类型的已丢掉的协议报文的排序标识,从而可以统计出当前业务类型的已丢掉协议报文的数量,该数量可以定义为第一数量,假设第一数量为20;基于当前业务类型的所有协议报文的起始标识和终止标识可以计算出当前业务类型的所有协议报文的的数量,定义为第二数量,假设起始标识为1,终止标识为100,则第二数量为100;将第一数量与第二数量的比值作为当前业务类型的协议报文的丢包率,之前第一数量20与第二数量100的比值0.2就可以作为当前业务类型的协议报文的丢包率。

以上介绍了基于rdma的协议报文转发方法,基于同一发明构思,本发明实施例提供一种基于rdma的协议报文转发装置,应用于基于rdma的网络设备中,该装置的结构如图3所示,包括:

第一确定模块31,用于确定接收到的待转发协议报文的第一业务类型;

第二确定模块32,用于根据业务类型与初始入口队列的对应关系确定第一业务类型对应的第一初始入口队列;

选取模块33,用于若确定第一初始入口队列拥塞,则重新探测各个初始入口队列与对应的出口队列之间的虚拟通道的带宽负载后,基于重新探测的带宽负载从各个初始入口队列中选出反压入口队列;

添加模块34,用于将待转发协议报文添加到反压入口队列中进行转发。

该方案中,在转发待转发协议报文时,确定出该待转发协议报文对应的第一初始入口队列后,会进一步确定第一初始入口队列是否拥塞,若拥塞会重新探测,从各个初始入口队列中选出反压入口队列,将待转发报文添加到反压入口队列进行转发,从而可以确保待转发协议报文可以正常转发,进一步确保数据中心正常通信。

具体的,上述选取模块33,用于重新探测各个初始入口队列与对应的出口队列之间的虚拟通道的带宽负载后,从各个初始入口队列中选出反压入口队列,具体用于:

通过保活检测探测各个初始入口队列与对应的出口队列之间的虚拟通道的带宽负载;

比较得到的带宽负载;

选取带宽负载最小的虚拟通道对应的初始入口队列,得到反压入口队列。

可选的,上述第一确定模块31,还用于确定第一业务类型的所有协议报文的起始标识和终止标识,以及待转发协议报文在第一业务类型的所有协议报文中的排序标识;

上述添加模块34,还用于在待转发协议报文的报文头部添加第一业务类型、起始标识、终止标识和排序标识。

可选的,本发明实施例提供另一种基于rdma的协议报文转发装置,如图4所示,在如图3所示的装置的基础上还包括:

统计模块35,用于根据网络设备的各个接口转发的协议报文携带的业务类型、起始标识、终止标识和排序标识统计各个业务类型的协议报文的丢包率;

比较模块36,用于将各个业务类型的协议报文的丢包率分别与设定阈值进行比较;

第三确定模块37,用于丢包率大于设定阈值的第二业务类型的协议报文确定发生丢包;

第四确定模块38,用于根据对应关系确定第二业务类型对应的第二初始入口队列;确定第二初始入口队列拥塞。

具体的,上述统计模块35,用于根据网络设备的各个接口转发的协议报文携带的业务类型、起始标识、终止标识和排序标识统计各个业务类型的协议报文的丢包率,具体用于:

针对每个业务类型,执行:

获取当前业务类型的已丢掉协议报文的排序标识;

统计当前业务类型的已丢掉协议报文的第一数量;

根据当前业务类型的所有协议报文的起始标识和终止标识计算当前业务类型的所有协议报文的第二数量;

将第一数量与第二数量的比值作为当前业务类型的协议报文的丢包率。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本发明的可选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括可选实施例以及落入本发明范围的所有变更和修改。

显然,本领域的技术人员可以对本发明实施例进行各种改动和变型而不脱离本发明实施例的精神和范围。这样,倘若本发明实施例的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1