一种基于流水线的并发多路路由查询实现方法与流程

文档序号:15061892发布日期:2018-07-31 22:00阅读:230来源:国知局

本发明涉及路由查询领域,尤其是一种基于流水线的并发多路路由查询实现方法。



背景技术:

在数据中心内,服务器通过交换设备组成服务器集群;fpga板卡内路由交换模块实现不同网口之间基本的路由交换功能,每一个fpga路由板卡及其网口连接的刀片服务器作为集群中的一个节点,节点之间通过全互联架构实现集群内刀片之间互联互通,fpga路由板卡作为集群内刀片服务器之间数据交互的桥梁,其路由交换模块中路由查询的实现方法直接决定了路由转换速率,最终影响了不同刀片服务器之间数据的交换速率。

在fpga路由板卡内路由查询请求处理技术中,一个完整的路由查询请求处理过程分解成五个基本的环节:仲裁、hash映射、查表、数值比较、结果输出;路由查询“串行”的处理机制,路由查询请求队列中的每一个路由查询请求被完全处理完后再处理后续的请求,该方法虽然可以节约大量的寄存器资源,功能实现简单;但是,在大量并发路由查询请求时,存在网络时延长、路由查询实时性差的缺点;路由查询“并行”处理技术运用“并行”的路由查询处理机制,通过设置多个路由查询请求队列,同时并行处理每个队列中的路由查询请求,实现集群内不同刀片节点之间基本的路由交换功能;“并行”方法比“串行”方法明显降低了路由查询时延,在处理大量并发路由查询请求时,网络性能显著提升,但同时需要花费大量的寄存器资源,功能实现变得复杂。所以需要一种路由查询技术可以提高实时性的同时提高寄存器利用率,从而快速实现集群内不同刀片节点之间基本的路由交换。



技术实现要素:

本发明的目的在于:本发明提供了一种基于流水线的并发多路路由查询实现方法,解决了现有串行方式路由查询时延长、效率低,并行方式产生冗余和浪费寄存器资源的问题。

本发明采用的技术方案如下:

一种基于流水线的并发多路路由查询实现方法,包括如下步骤:

步骤1:依次仲裁等待队列中的每个端口请求;

步骤2:仲裁后的端口请求依次通过流水线各流程获取查询结果。

优选地,所述步骤1包括如下步骤:

步骤1.1:将所有的端口请求按先后顺序排成等待队列;

步骤1.2:依次仲裁等待队列中的每个端口请求,根据端口请求的优先级选择不同跳转路径后跳至步骤2。

优选地,所述步骤2包括如下步骤:

步骤2.1:标记正在查询的端口请求号,通过hash映射将请求中的查询mac地址转换为哈希地址得到ram读地址后,通过ram寄存器判断其路由表中是否存在查询mac地址对应的路由信息数据,若存在跳至步骤2.2,若不存在,则端口请求结束,将请求信息录入路由表;

步骤2.2:判断ram寄存器中路由信息数据对应的mac地址与查询mac地址是否匹配,若匹配成功,返回路由查询结果,端口请求结束;若匹配失败,提高端口请求优先级,ram读地址加一后返回等待队列。

优选地,所述步骤1.2中跳转路径包括跳转路径i和跳转路径ii。

综上所述,由于采用了上述技术方案,本发明的有益效果是:

1.本发明通将路由查询请求的处理方法分割为独立的模块,请求通过优先级仲裁轮询后依次进行流水线查询,包括hash映射、查表、数值比较、结果输出,实现流水线并行,相比“串行”方法,大大降低了等待队列的排队时间,显著降低了网络延时,提高了路由查询速率,相比“并行”方法,节省了更多的寄存器资源,解决了现有串行方式路由查询时延长、效率低,并行方式产生冗余和浪费寄存器资源的问题,达到了提高路由查询速率,提高资源利用率的效果;

2.本发明通过流水线并行处理请求,请求量多的时候,每个流水线流程处理完前一个请求即可立即处理下个请求,处理完的请求依次进行下一流程,每一个流程均处于工作状态,实现流水线并行,相比于并行方法,节省更多的寄存器资源,相比于串行,降低了时延;

3.本发明通过仲裁端口请求判断其优先级,选择不同的跳转路径进行流水线查询,便于实时性比较强的路由查询请求可以优先被处理,可以保障不同类型路由查询请求的服务质量。

附图说明

本发明将通过例子并参照附图的方式说明,其中:

图1是本发明的流程示意图;

图2是本发明的流水线并行流程示意图;

图3是串行方法流程示意图;

图4是并行方法流程示意图;

图5是本发明的流水线并行实施时序示意图。

具体实施方式

本说明书中公开的所有特征,或公开的所有方法或过程中的步骤,除了互相排斥的特征和/或步骤以外,均可以以任何方式组合。

下面结合图1-5对本发明作详细说明。

实施例1

一种基于流水线的并发多路路由查询实现方法,包括如下步骤:

步骤1:依次仲裁等待队列中的每个端口请求;

步骤2:仲裁后的端口请求依次通过流水线各流程获取查询结果。

现有的串行方式采用一个请求依次通过查询流程后才能处理第二个请求,带来时延大的缺点,而并行方式可以同时处理多个请求,但在请求量少的情况下,造成处理空档,带来寄存器资源的浪费;本申请将查询流程的五个模块独立设置,所有请求排成等待队列,第一个请求经过仲裁后即可进行第二个流程,第二个请求在第一个请求仲裁结束后开始仲裁,第二个请求在第一个请求结束第二个流程后开始第二个流程,之后的所有的请求同理,实现了流水线并行,如图2-4所示,时延降低了百分之八十,效率提升了四倍。

实施例2

步骤1.1:将所有的端口请求按先后顺序排成等待队列;

步骤1.2:依次仲裁等待队列中的每个端口请求,根据端口请求的优先级选择不同跳转路径后跳至步骤2。优先级高选择跳转路径ii进行后续流程,优先级低选择跳转路径i需要排队进行后续流程;

步骤2.1:标记正在查询的端口请求号,通过hash映射将请求中的查询mac地址转换为哈希地址得到ram读地址后,通过ram寄存器判断其路由表中是否存在查询mac地址对应的路由信息数据,若存在跳至步骤2.2,若不存在,则端口请求结束,将请求信息录入路由表;

步骤2.2:判断ram寄存器中路由信息数据对应的mac地址与查询mac地址是否匹配,若匹配成功,返回路由查询结果,端口请求结束;若匹配失败,提高端口请求优先级,ram读地址加一后返回等待队列。

mac地址为路由查询请求操作的查找关键字,由于按通常的方式获取存储路由信息对的ram地址效率低下(它们需要逐个地查找匹配ram地址是否是目标地址),因此将ram地址查找与获取方式变为哈希方式,即将信息写入以mac哈希值为地址的ram单元;读出时,仅需对mac进行哈希运算就可以得到ram读取地址,加快速率且简化流程;根据不同的优先级进行不同的跳转路径进行后续流程,便于实时性比较强的路由查询请求可以优先被处理,可以保障不同类型路由查询请求的服务质量。

实施例3

如图5所示,存在六路并发路由查询请求,请求0通过仲裁模块判断后优先级低,选择跳转路径i后依次通过了hash映射、查表、数值比较流程的处理,数值比较时,查询请求中mac地址与从ram中读取的路由信息中mac地址进行比较,若结果一致,则匹配成功即该条路由查询请求找到了转发数据包的ip地址信息,返回查询结果;若结果不一致,则匹配不成功,请求0的优先级变大并得到新的ram地址后继续插入到请求队列中;在此过程中,请求1、请求2、请求3、请求4依次进行流水线流程处理,当仲裁模块轮询到请求5时,由于此时队列中存在优先级更高的请求0,因此判断后请求0在请求5之前优先进入,通过跳转路径ii开始后续流程,最终得到结果输出。在六路并发路由查询请求过程中,体现出对高优先级查询请求的优先处理策略,同时明显降低了网络延时,且提高了资源的利用率。

工作原理:将所有的查询请求排成等待队列,将路由查询请求的处理方法分割为独立的流程,第一个请求通过优先级仲裁轮询后依次进行hash映射、查表、数值比较、结果输出的流水线流程,在第一个请求仲裁结束后第二个请求开始仲裁,在第一个请求结束后续每一个流程时第二个请求开始后续各个流程,本发明解决了现有路由查询串行时延长、效率低,并行产生冗余和浪费寄存器资源的问题,达到了提高路由查询速率,提高资源利用率的效果。

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