用于上传/下载数据库的硬件加速的制作方法

文档序号:24053397发布日期:2021-02-24 00:02阅读:130来源:国知局
用于上传/下载数据库的硬件加速的制作方法
hardware,“rh”)配置数据库的传送的框图;
[0009]
图2是示意性地图示根据本发明实施方式,在网元中的rh状态数据库的传送的框图;
[0010]
图3是示意性地图示根据本发明实施方式,通过共享缓冲区在处理器与rh之间的rh数据库的双向传送的框图;
[0011]
图4是示意性地图示根据本发明实施方式,用于将新的路由表从处理器传送到rh的方法的流程图;以及
[0012]
图5是示意性地图示根据本发明实施方式,用于将新的状态表从rh传送到处理器的方法的流程图。
具体实施方式
[0013]
概述
[0014]
网元(诸如网络交换机)根据路由规则和其他规则,从入口端口接收分组,并将分组转发到出口端口。典型的交换机包括对分组进行路由的路由硬件,以及控制和监视路由硬件操作的处理器。在下文中,将路由硬件(routing hardware)称为“rh”。
[0015]
通常,rh根据储存在一个或多个表中的数据来处理输入分组。例如,路由表可以储存用于根据分组报头中的字段来对分组进行路由的规则,并且防火墙表可以定义分组的安全策略。
[0016]
为了监视rh的操作,例如用于诊断,用于实时统计信息收集,用于针对rh可能对其配置进行的任何修改来更新主机,以及用于其他目的,rh通常会生成状态报告数据,该状态报告数据继而被转发到处理器。处理器可以使用这样的状态数据来调整rh的操作(例如,通过修改路由表)以获得更好的性能。
[0017]
在下文中,将rh配置表称为“rh配置数据库”。在以下描述的上下文中,术语“配置数据库”是指rh可能为其操作所需的任何表格数据,包括(但不限于)路由表、权限表、服务类表、固件以及队列配置数据。
[0018]
还将rh可能向处理器发送的任何表格数据称为“rh状态数据库”(或“硬件状态数据库”)。在以下描述的上下文中,术语“rh状态数据库”是指rh可能向处理器发送的任何表格数据,包括(但不限于)监视表、队列长度统计信息、控制状态转储、计数器转储、分组采样转储和/或路由表(路由表有时被rh修改)。rh配置数据库和rh状态数据库统称为“rh数据库”。在一些实际情况下,rh数据库可能非常大,例如,大约10mb或更大。
[0019]
网络接口(ni)也称为网络接口控制器(nic),是发送和接收分组的网元的另一示例。典型的ni包括一个或多个端口,向端口和从端口传送分组的分组处理硬件,以及与主机系统通信的处理器。nic中的分组处理硬件通常根据处理器提供的一个或多个表(也称为数据库)来处理分组。分组处理硬件可以生成向处理器转发的rh状态数据。
[0020]
在本上下文中,术语“分组处理硬件”是指交换机中的rh、ni中的分组处理硬件,以及其他类型网元中的其他类似硬件。术语“数据库”是指在网元(例如,交换机或ni)的处理器与分组处理硬件之间传送的各种数据库。例如,数据库可以包括交换机中的rh数据库(例如,配置数据库或rh状态数据库),或者ni中用于配置的数据库或状态数据库。
[0021]
本文提出的本发明的实施方式提供了在处理器与分组处理硬件之间的数据库的
加速传送。在一些实施方式中,分组处理硬件包括快速数据传送电路,该快速数据传送电路被配置用于在处理器与网络端口之间以及在处理器与分组处理硬件之间传送数据。举例而言,下面的描述主要涉及交换机中的rh与处理器之间的交互。所公开的技术能够以类似的方式应用于nic和其他合适的网元。
[0022]
在实施方式中,为了将rh配置数据库传送到rh,处理器首先将数据库储存在可由rh访问的存储器中,并且继而在也可由rh访问的队列中写入一个或多个工作队列元素。队列可以位于相同或不同的rh可访问存储器中。工作队列元素(work-queue element,“wqe”)通常(但不一定)是连续的传送指令;例如,将起始于地址0x208c0000的1m字节从位置0x440000传送到表6。处理器继而通知rh已准备好传送配置数据库。
[0023]
接下来,rh读取wqe并从存储器加载配置数据库。在实施方式中,rh向处理器发送完成队列元素(completion queue element,“cqe”)以指示出rh已经完成对应的wqe的执行。在一些实施方式中,rh将cqe写入处理器和rh都可访问的存储器中。
[0024]
根据实施方式,rh通过快速系统总线(例如,高速外围组件互连(“pcie”))向存储器或从存储器传送rh数据库。rh可以预取工作元素并利用快速dma电路,并且因此rh数据库的传送能够以系统总线所支持的最大速度不间断地进行。
[0025]
在一些实施方式中,当rh数据库或其部分改变时(例如,新的路由表准备就绪),阻止rh传送分组,直到新表在rh中完全加载。因此,分组在缓冲区中累积,从而增加了时延。在极端情况下,分组可能会被丢弃。因此,将数据库表从处理器高速加载到rh至关重要。
[0026]
在一些实施方式中,当rh执行加载新配置表的wqe时,处理器通过检查所有相关联的cqe来验证该表已经被完全加载。只有这样,处理器才能向rh指示出新配置表应当生效。
[0027]
根据实施方式,rh状态数据库例如可以包括rh变量(诸如队列长度、分组大小等)以及其他状态表的运行时监视。在典型的实施方式中,rh可以用新的状态值不断地更新状态数据库。处理器可能需要例如定期地读取状态表,或者举另一例而言,当一些分组被丢弃时读取状态表。如上所述,本文公开的技术提供了高效的rh数据库传送,包括状态表上传。
[0028]
在一些实施方式中,尽管并非必须,为通信分组的传送和数据库的传送保持单独的队列。替代地,可以使用给定的工作队列来对与通信分组和数据库两者有关的wqe进行排队,以及/或者可以使用给定的完成队列来对与通信分组和数据库两者有关的cqe进行排队。在一些实施方式中,数据传送电路并行传送(上传和/或下载)两个或更多个数据库。
[0029]
因此,根据本文提供的本发明实施方式,可以使用还用于在端口与处理器之间发送和接收网络分组的现有dma电路,从处理器下载或向处理器上传rh数据库。传送是快速的,并且处理器有效地分担了传送任务。
[0030]
系统描述
[0031]
在下面的描述中,术语“网元”通常是指网络交换机;然而,根据本发明的实施方式决不限于网络交换机;相反,根据本发明的实施方式,“网元”是指任何发送和/或接收网络数据的装置,例如路由器或网络接口控制器(nic)。
[0032]
图1是示意性地图示根据本发明实施方式,在网元中的rh配置数据库的传送的框图。网元100包括处理器102、rh 104和系统总线106,该系统总线106耦合到处理器和rh两者(并且可能耦合到网元中未示出的其他单元,例如存储单元)。系统总线例如可以是高速外围组件互连(“pcie”)。
[0033]
根据实施方式,处理器108通常(但并非排他地)集成在印刷电路板(pcb)中。处理器包括cpu 108和随机访问存储器(ram)110以及未示出的其他单元。
[0034]
为了将数据从处理器快速传送到rh,处理器在ram 110中分配区域:缓冲区区域112、工作队列元素(wqe)区域114以及完成队列元素(cqe)区域116。
[0035]
根据实施方式,rh 104包括出口端口118、入口端口120(未参考图1的示例实施方式进行描述)、路由表122以及其他配置表124。为了将数据传送到路由表(和传送到其他配置表)以及传送到出口端口,rh 104还包括数据传送电路126(为简洁起见,在本文中也称为“电路”)和读取队列128(rh 104通常还包括其他单元,例如为清楚起见而未在本文示出的纵横接线器)。
[0036]
根据实施方式,路由表122、其他配置表124和读取队列128是ram或其部分。例如,所有读取队列128可以储存在单个ram模块中,而路由表122和其他配置表124可以储存在为快速访问而优化的单独的ram模块中。
[0037]
电路126被配置用于从ram 110读取wqe,执行wqe,以及将对应的cqe写入ram中。
[0038]
根据图1的示例实施方式,wqe包括用于从缓冲区传送数据的指令。数据可以指向出口端口118(例如,边界网关协议(border gateway protocol,bgp)、内部控制消息协议(internal control message protocol,icmp)),或者指向rh配置表(通过读取队列128),诸如路由表122和其他配置表124。
[0039]
在实施方式中,电路执行的与从处理器到路由表的数据传送有关的活动包括:a)通过系统总线106从ram 110读取wqe;b)通常通过经由系统总线106和经由读取队列128将数据块从缓冲区112传送到路由表122来执行wqe;以及c)将cqe 116写入ram 110中。
[0040]
上述结构允许从处理器快速传送数据:cpu干预仅限于传送前(wqe的准备)和传送后(检查cqe);队列和其他硬件(例如,pcie接口;未示出)对传送的数据进行组织以实现最大的pcie传送速率,并且队列允许在数据传送的中断最少或没有中断的情况下预取wqe和流水线操作。
[0041]
应当注意,当将数据从处理器传送到出口端口118,到路由表122或到其他配置表124时,电路执行相同的活动a到c——区别在于选定的读取队列和最终目的地(在一些实施方式中,网元100可以包括附加路径,以通过出口端口向网络发送分组)。
[0042]
因此,根据图1中所示和上文描述的示例实施方式,rh中的电路将rh数据库高效地从处理器传送到任何rh配置表或任何出口端口。特别是,rh数据库到配置表的传送能够以可与输出出口分组的速度相比的速度,并且在不需要cpu负载或cpu负载很少的情况下高效地完成。
[0043]
图2是示意性地图示根据本发明实施方式,在网元中的rh状态数据库的传送的框图。网元200包括处理器202、rh 204和系统总线206。包括cpu 208和ram 210的处理器可以与图1的处理器102、cpu 108和ram 110相同,并且系统总线206可以与系统总线106相同(rh 204通常还包括其他单元,例如为清楚起见而未在本文示出的纵横接线器)。
[0044]
为了将数据从rh快速传送到处理器,处理器在ram 210中分配区域:缓冲区区域212、wqe区域214,以及cqe区域216。根据实施方式,rh 204包括出口端口218(未参考图2的示例实施方式描述)、入口端口220以及状态表222。为了从状态表以及从入口端口传送数据,rh 204还包括数据传送电路224(为简洁起见,在本文中也称为“电路”)和写入队列226。
[0045]
根据实施方式,状态表222和写入队列226是ram或其部分。例如,所有写入队列226可以储存在单个ram模块中,而状态表222可以储存在为快速访问而优化的单独的ram中。
[0046]
电路224被配置用于从ram 202读取wqe,执行wqe以及将对应的cqe写入ram中。根据图2的示例实施方式,wqe包括用于将数据传送到缓冲区的指令。数据可以来源于入口端口220(例如,bgp、icmp)或者来源于rh状态表,例如,状态表222。
[0047]
上述结构允许将数据快速传送到处理器:cpu干预仅限于传送前(wqe的准备)和传送后(检查cqe);队列和其他硬件(例如,pcie接口;未示出)对传送的数据进行组织以实现最大的pcie传送速率,并且队列允许在数据传送的中断最少或没有中断的情况下预取wqe和流水线操作。
[0048]
在实施方式中,电路执行的与从状态表到缓冲区的数据传送有关的活动包括:a)通过系统总线206从ram 210读取wqe;b)通常通过经由写入队列226和系统总线206将数据块从状态表传送到缓冲区212来执行wqe;以及c)将cqe 216写入ram 210中。
[0049]
应当注意,当从入口端口218或从状态表222将数据传送到处理器时,电路执行相同的活动a到c——区别在于选定的写入队列和数据源(在一些实施方式中,网元200可以包括附加路径,以通过入口端口从网络接收分组)。
[0050]
因此,根据图2中所示和上文描述的示例实施方式,rh中的电路高效地将数据从任何rh表或从任何入口端口传送到处理器。特别是,从状态表的数据传送能够以可与输入入口分组的速度相比的速度,并且在不需要cpu负载或cpu负载很少的情况下高效地完成。
[0051]
可以理解,上述网元100和200、处理器102和202以及rh单元104和204的结构是以举例方式引用的。根据所公开的技术的网元、处理器和rh单元并不限于以上描述。例如,在备选实施方式中,cpu可以是多个cpu;缓冲区112和212可以是分布式的;在实施方式中,缓冲区可以位于耦合到系统总线的单独的存储器中。在一些实施方式中,cqe和wqe可以储存在发送队列中。
[0052]
上述阶段a至c的顺序不一定是连续的。例如,在一些实施方式中,电路提前提取wqe组。队列128和226可以储存在单个或分开的ram中。
[0053]
图3是示意性地图示根据本发明实施方式,通过共享缓冲区在处理器与rh之间的rh数据库的双向传送的框图。图3中所示的示例实施方式结合了图1的示例实施方式的数据下载能力和图2的示例实施方式的数据上传能力,并添加了共享缓冲区。
[0054]
网元300包括处理器302、rh 304,以及系统总线306。处理器302和系统总线306可以等同于处理器102、202和系统总线106、206,并且将不进行描述。
[0055]
rh 304包括电路306、配置表308、状态表310、入口端口312以及出口端口314。(rh 304通常还包括其他单元,例如为清楚起见而未在本文示出的纵横接线器)。
[0056]
为了节省硅面积,rh 304还包括共享队列316,该共享队列316可以用于所有的数据传送。电路306控制共享队列,该共享队列对从处理器向任何配置表和任何出口端口,以及从任何入口端口或状态表向处理器传送的数据进行缓冲。
[0057]
因此,根据图3中所示和上文所述的示例实施方式,在cpu的负载很少或没有cpu负载的情况下,以及利用共享rh缓冲区,促进了在处理器与rh配置表、状态表、入口端口和出口端口之间的高效双向数据传送。
[0058]
图4是示意性地图示根据本发明实施方式,用于将新的路由表从处理器传送到rh
的方法的流程图400。该流程图由cpu和电路(在图1中相应地为108和126)共同执行。
[0059]
该流程起始于写入路由表步骤402,其中cpu在缓冲区112(图1)中准备新的路由表。cpu继而继续进行写入cqe步骤404,并准备一系列cqe,该一系列cqe将路由表的传送破碎成多个较小的(例如,连续的)数据块传送操作。
[0060]
cpu在新路由表生效之前执行步骤402和步骤404。在实施方式中,cpu可以通过编辑先前的表就地准备新的表;在其他实施方式中,cpu可以通过将模板路由表加载到缓冲区以及继而编辑模板表来准备表。
[0061]
接下来,cpu进入发送门铃步骤406,其中cpu向电路指示出新的路由表已准备好下载。该指示例如可以通过在pcie总线上发送适当的消息来完成。在一些实施方式中,在发送门铃之前,可以向电路发送通知(在流程图400中未示出),该通知例如可以描述门铃的性质。
[0062]
电路在等待门铃步骤410处开始流程,其中电路等待处理器发出步骤406的门铃。在步骤410中,rh根据储存在先前路由表中的规则对分组进行路由。当电路接收到门铃时,电路进入停止分组路由步骤412,其中rh停止对传入分组进行路由。
[0063]
从此时起,传入分组在入口队列中累积;至关重要的是减少累积时间,避免分组丢弃,或者备选地避免针对入口队列使用大缓冲区。
[0064]
在步骤412之后,电路开始下载新的路由表。电路进入读取wqe步骤414,并从ram 110(图1)读取第一wqe 116;接下来,电路进入执行wqe步骤416并执行wqe(通常通过读取队列128将连续的数据块从缓冲区112传送到路由表122)。
[0065]
在执行wqe之后,电路进入发送cqe步骤418,并将完成队列条目写入cqe区域116(图1)中。cqe可以包括各个字段,这些字段允许cpu验证wqe已成功完成。
[0066]
接下来,电路进入检查最后wqe步骤420,并检查当前wqe是否为最后的wqe。如果存在更多的cqe,则电路将会重新进入步骤414,以获得下一wqe。
[0067]
在步骤406中发送门铃之后,cpu进入获取cqe步骤408,并等待来自电路的cqe。重要的是应当注意,在电路执行wqe期间,cpu处于空闲状态(实际上,正在忙于执行其他任务),并且因此cpu的负载很低。当cpu接收到cqe时,cpu进入检查cqe步骤422,并针对预定义的成功/失败准则来测试cqe(例如,包括crc签名验证,以及检查所传送的数据的大小)。如果cqe测试失败,则cpu可以中止流程。如果测试通过,则cpu进入检查最后cqe步骤424,并检查当前cqe是否为最后的cqe。如果cqe不是最后的cqe,则cpu将会重新进入步骤408,以获得下一cqe。如果cqe是最后的cqe,则cpu将会进入通知完成步骤426,并向电路指示出可以开始使用新的路由表。在步骤426之后,cpu结束流程。
[0068]
如果在步骤420中,电路发现当前wqe是最后的wqe,则电路进入等待完成通知步骤428,并等待处理器发出完成通知。当电路接收到完成通知时,电路进入重新开始分组路由步骤430,其中rh根据新的路由表重新开始分组路由。此后,电路重新进入步骤410,并等待下一配置表加载。
[0069]
因此,根据图4中所示和上文描述的示例流程图,可以将新的路由表从处理器加载到rh。使用wqe-cqe协议以高速且cpu负载较少的方式完成加载。用于将数据传送到路由表的机制与用于将数据传送到出口端口的机制相同;因此,相对于其他解决方案,实现成本低且性能高。
[0070]
关联于表上传的流程与下载流程相似;主要区别在于数据传送的方向。图5是示意性地图示根据本发明实施方式,用于将新的状态表从rh传送到处理器的方法的流程图500。该流程图由cpu和电路(在图2中相应地为208和226)共同执行。
[0071]
该流程起始于准备表缓冲区步骤502,其中cpu准备用于接收rh状态数据库的缓冲区212(图2)。cpu继而继续进行写入cqe步骤504,并准备一系列cqe,该一系列cqe将状态表的传送破碎成数据块传送操作。
[0072]
cpu在当前状态表为“有效”(即注册rh状态)的同时执行步骤502和步骤504。为了加载状态表,cpu进入发送门铃步骤506,其中cpu向电路指示出当前状态表应当被冻结并发送给处理器。该指示例如可以通过在pcie总线上发送适当的消息来完成。在一些实施方式中,可以在发送门铃之前向电路发送通知(在流程图500中未示出),该通知例如可以描述门铃的性质。
[0073]
电路在等待门铃步骤510处开始流程,其中电路等待处理器发出步骤506的门铃。当电路接收到门铃时,电路进入停止状态更新步骤512,其中rh的状态更新停止,并且状态表冻结。
[0074]
在步骤512之后,电路开始上传冻结的状态表。电路进入读取wqe步骤514,并从ram 210(图2)读取第一wqe 216;接下来,电路进入执行wqe步骤516,并执行wqe(通常通过读取队列226将连续的数据块从状态表222传送到缓冲区212)。
[0075]
在执行wqe之后,电路进入发送cqe步骤518,并将完成报告条目写入cqe区域216(图2)中。cqe可以包括各个字段,这些字段允许cpu验证wqe已成功完成。
[0076]
接下来,电路进入检查最后wqe步骤520,并检查当前wqe是否为最后的wqe。如果存在更多的cqe,则电路将会重新进入步骤514,以获得下一wqe。
[0077]
在步骤506中发送门铃之后,cpu进入获取cqe步骤508,并等待来自电路的cqe。在电路执行wqe期间,cpu可以自由执行无关的任务,并且因此cpu的负载低。当cpu接收到cqe时,cpu进入检查cqe步骤522,并针对成功/失败准则来测试cqe。如果cqe测试失败,则cpu可以中止流程。如果测试通过,则cpu进入检查最后cqe步骤524,并检查当前cqe是否为最后一个cqe。如果cqe不是最后一个cqe,则cpu将会重新进入步骤508,以获得下一cqe。如果cqe是最后一个cqe,则cpu将会进入通知完成步骤526,并向电路指示出可以使用新的状态表来重新开始状态更新。在步骤526之后,cpu结束流程。
[0078]
如果在步骤520中,电路发现当前wqe是最后的wqe,则电路进入等待完成通知步骤528,并等待处理器发出完成通知。当电路接收到完成通知时,电路进入重新开始状态更新步骤530,其中重新开始状态更新,并且将状态注册在新的状态表中。此后,电路重新进入步骤510,并等待下一状态表加载。
[0079]
因此,根据图5中所示和上文描述的示例流程图,可以将状态表从rh加载到处理器。在以高速且cpu负载较少的情况下使用wqe-cqe协议完成加载。用于将状态表传送到处理器的机制与用于将数据从入口端口传送到处理器的机制相同;因此,相对于其他解决方案,实现成本低且性能高。
[0080]
可以理解,上述流程400和流程500是以举例方式引用的。根据所公开的技术的流程不限于以上描述。例如,在备选实施方式中,步骤422和步骤522中的检查失败可以触发重试而不是中止,并且仅在预设次数的失败重试之后流程才会中止。在一些实施方式中,电路
预取多个wqe,并从内部队列执行wqe。
[0081]
在实施方式中,cpu将进入步骤406的时间推迟到将要加载新路由表的时间(亦即,新表将会准备好下载,但加载将会被推迟)。类似地,在图5中,电路可以推迟进入步骤506。
[0082]
在一些实施方式中,当状态表上传发生时,不停止状态更新。类似地,在实施方式中,当加载新的路由表时,不停止路由。
[0083]
在一些实施方式中,添加超时检查,以便如果cpu未能在预定义的时间限制内发送第二门铃,则停止流程(并恢复起用先前的表)。
[0084]
包括处理器102、202、302和rh单元104、204、304及其所有子单元的网元100、200和300的配置、方法400和500是示例配置和方法,其纯粹为了概念清晰而示出。在备选实施方式中可以使用任何其他合适的配置和方法。
[0085]
例如,在一些实施方式中,有时增量地更新rh配置表,并且因此需要与方法400不同的方法。在一些实施方式中,可以使用wqe-cqe以外的协议;例如,可能不需要cqe。
[0086]
在各个实施方式中,电路126、204和306的不同元件可以使用适当的硬件来实现,诸如一个或多个专用集成电路(asic)或现场可编程门阵列(fpga),或者asic和fpga的组合。
[0087]
cpu 108和208中的每一个通常包括通用处理器,该通用处理器以软件编程从而执行本文描述的功能。软件例如可以通过网络以电子形式下载到处理器,或者其可以替代地或另外地提供和/或储存在诸如磁、光或电子存储器等非暂时性有形介质上。
[0088]
尽管本文所述的实施方式主要涉及交换机中的路由硬件数据库的传送以及总体上涉及nic中的数据库的传送,但本文所述的方法和系统亦可用于其他应用中,诸如计算和遥测。
[0089]
因此应当理解,上述实施方式是作为示例引用的,且本发明不受上述的具体图示和描述的限制。相反,本发明的范围包括上述各个特征的组合和子组合,以及本领域技术人员在阅读以上描述时所想到的,且未在现有技术中公开的变化和修改。通过引用并入本专利申请书中的文档应被视为本申请书的组成部分,除非这些并入的文档中所定义的任何术语达到与本说明书中明确或隐含作出的定义相冲突的程度,在此情况下应当仅考虑本说明书中的定义。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1