一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

网络适配器中的连接管理的制作方法

2022-07-10 02:24:48 来源:中国专利 TAG:


1.本文所描述的实施方式总体上涉及数据通信,并且尤其涉及用于网络适配器中的连接管理的方法和系统。


背景技术:

2.infiniband
tm
(ib)是一种交换结构通信架构,主要用于高性能计算。它已被无线带宽贸易协会标准化。计算装置(主机处理器和外围装置)经由网络适配器(诸如网络接口控制器(nic))连接到ib结构。ib限定分层硬件协议(物理层、链路层、网络层和输送层)和管理装置间初始化和通信的软件层两者。输送层负责有序的分组递送、划分、通道复用和输送服务,以及发送时的数据分段和接收时的重组。
3.使用可靠连接(rc)和动态连接(dc)输送服务通信的方法在本领域中是已知的。例如,美国专利8,213,315描述了一种通信方法,所述通信方法包括在网络接口装置中接收来自在发起者主机上运行的发起者进程的第一请求和第二请求,以经由分组网络相应地向在一个或多个目标节点上运行的第一目标进程和第二目标进程传输第一数据和第二数据。单个动态连接的发起者上下文被分配用于服务第一请求和第二请求两者。引用动态连接(dc)发起者上下文的第一连接分组指向第一目标进程,以便打开与第一目标进程的第一动态连接,接着在第一动态连接上传输第一数据。在传输第一数据之后,关闭第一动态连接,并且传输第二连接分组,以便打开与第二目标进程的第二动态连接,接着传输第二数据。
4.美国专利8,761,189描述了一种用于通信的方法,所述方法包括在网络接口控制器(nic)中分配单个动态连接的(dc)发起者上下文,用于服务来自在发起者主机上运行的发起者进程的请求,以将数据传输到在一个或多个目标节点上运行的多个目标进程。nic传输指向第一目标进程并且参考dc发起者上下文的第一连接分组,以便打开与第一目标进程的第一动态连接。响应于第一连接分组,nic在分组网络上接收包含第一会话识别符(id)的第一确认分组。在接收到第一确认分组之后,nic在第一动态连接上将包含第一会话id的一个或多个第一数据分组从nic传输到第一目标进程。后续可以以类似方式处理与其他目标进程的动态连接。


技术实现要素:

5.本文所描述的实施方式提供一种网络适配器,其包括网络接口、主机接口和处理电路。网络接口被配置为连接到用于与远程目标通信的通信网络。主机接口被配置为连接到主机,所述主机访问多通道发送队列(mcsq),所述多通道发送队列(mcsq)存储源自主机上运行的客户端进程的工作请求(wr)。处理电路被配置为从mcsq检索wr,并且将检索到的wr分发在由处理电路可访问的多个发送队列(sq)中。
6.在一些实施方式中,目标中的每个包括:(i)远程节点,其耦合到通信网络;或(ii)本地装置,其耦合到主机。在其他实施方式中,wr包括与相应sq相关联的相应识别符,并且处理电路被配置为基于识别符在sq之间分发wr。在其他实施方式中,处理电路被配置为,响
应于检测到所述检索到的wr中的识别符在所述sq中没有相关联的sq,从所述多个sq中选择可用的sq,将所述识别符与所述可用的sq相关联,并且在所述可用的sq上发布所述wr。
7.在实施方式中,处理电路被配置为响应于检测到给定wr中的识别符与选定sq相关联,在所述选定sq上发布所述wr。在另一实施方式中,处理电路被配置为根据可靠连接(rc)协议来操作sq,在所述可靠连接协议中,sq被分配为持久地连接到相应的目标。在又一实施方式中,处理电路被配置为根据动态连接(dc)协议来操作sq,所述动态连接(dc)协议允许给定sq在不同时间连接到不同目标。
8.在一些实施方式中,主机在相应地与第一sq池和第二sq池相关联的第一mcsq和第二mcsq上发布wr,并且处理电路被配置为将来自第一mcsq的wr分发到第一池中的sq,并且将来自第二mcsq的wr分发到第二池的sq。在其他实施方式中,至少一个sq在第一池和第二池之间共享,并且处理电路被配置为将来自第一mcsq和第二mcsq两者的wr发布到至少一个sq。在其他实施方式中,处理电路被配置为在完成队列(cq)上发布对应于在给定wr之前发布到所述mcsq的wr的全部完成队列元素(cqe)之后,在由所述客户端进程可访问的所述cq上发布指示所述给定wr的结束执行的所述cqe。
9.在实施方式中,处理电路被配置为独立于mcsq中相应wr的顺序将cqe发布到cq。在另一实施方式中,处理电路被配置为向已经与给定目标建立连接的给定sq分发仅指定给定目标的wr,直到所述连接终止。在又一实施方式中,处理电路被配置为响应于检测到给定sq中的故障,在cq上发布指示所述故障的cqe。
10.在一些实施方式中,处理电路被配置为在cq上发布指示要在给定sq中执行的每个wr的故障的cqe。在其他实施方式中,处理电路被配置为在所述cq上发布指示将被分发到给定sq的来自mcsq的每个wr的故障的cqe。在其他实施方式中,至少给定的wr指定从主机到目标的相应数据传输操作。在另外的其他实施方式中,至少给定的wr指定本地执行的操作。
11.根据本文所描述的实施方式,另外提供一种用于通信的方法,其包括在网络适配器中,所述网络适配器连接到用于与远程目标通信的通信网络并且还连接到主机,所述主机访问存储源自在主机上运行的客户端进程的工作请求(wr)的mcsq,从mcsq检索wr并且将检索到的wr分发到由所述处理电路可访问的多个发送队列(sq)中。
附图说明
12.从下面结合附图对其实施方式的详细描述中,将更全面地理解这些和其他实施方式,在附图中:
13.图1是示意性地图示了根据本文所描述的实施方式的计算系统的框图,其中网络适配器管理多个通道上的主机通信;
14.图2是示意性地图示了根据本文所描述的实施方式的支持通过多个通道的通信的网络节点中的数据流的图;
15.图3是示意性地图示了根据本文所描述的实施方式的用于多通道传输的方法的流程图;以及
16.图4是示意性地图示了根据本文所描述的实施方式的使用dc和rc连接来单独管理通信的网络节点中的数据流的图。
具体实施方式
17.概述
18.本文所描述的实施方式提供用于将在多个通道上的通信管理卸载到网络适配器的方法和系统。
19.在数据中心和高性能计算(hpc)等各种应用中,主机运行与大量目标通信的客户端进程。主机通常包括用于在分组网络上与远程节点通信的网络适配器。网络适配器通常执行发布在一个或多个工作队列上的工作请求(wr),所述一个或多个工作队列经由通信网络连接到目标。用于数据传输的工作队列被称为发送队列(sq),而用于数据接收的工作队列被称为接收队列(rq)。wr指定所需的数据传送操作,例如,在主机上操作的客户端进程。网络适配器通过在主机可访问的完成队列(cq)上发布完成队列元素(cqe)来通知wr的完成。
20.原则上,主机可以使用在主机的中央处理单元(cpu)上运行的软件程序来处理多通道通信。此类管理多个sq的软件程序可以包括诸如程序或多个程序的组合,诸如客户端进程、通信栈和在主机和网络适配器之间进行调解的驱动程序。这类软件程序会反复检查哪些wr已经完成,并且按期望顺序发布其他未完成的wr。尽管以下公开主要涉及使用cpu实现的主机,但是所公开的实施方式类似地适用于使用实现主机的任何其他合适的处理单元,诸如,例如,图形处理单元(gpu)。
21.由于各种原因,在软件中管理多个sq可以是不利的。首先,软件程序在执行任务时可能会消耗cpu周期,诸如在多个sq中平衡工作负载和轮询cq。这些cpu周期可以用于执行非通信操作,例如计算操作。软件程序通常还消耗相当大的带宽用于主机和网络适配器之间的通信,例如,在底层总线(例如,外围组件互连高速(pcie)总线)上。此外,在软件中管理大量的sq需要相当大的存储空间,并且可能导致主机cpu的高速缓存的缓存性能很差。
22.下面的描述主要涉及被称为可靠连接(rc)和动态连接(dc)的输送服务和协议。其他合适的输送服务或协议,诸如传输控制协议(tcp)也是适用的。
23.在rc协议中,连接是持久的,并且长时间占用相应sq。因此,rc协议适用于要求中低可扩展性的应用。与rc的持久性质不同,根据dc协议配置的sq是按需使用的,并且在完成数据传送操作时会断开。因此,给定的dc sq可在不同时间连接到不同目标。
24.在执行指定数据传输操作的wr时,网络适配器通常以多个分组传输数据,其中对于每个传输的分组,网络适配器从目标接收确认(ack)通知。在dc协议中,仅在收到当前数据传送的最后一个分组的ack后,连接才会断开,并且变得可用于连接到另一目标。在一些实施方式中,网络适配器经由使用其他dc sq处理经由一个或多个其他连接的通信,来利用传输最后一个分组和断开之间的时间间隔。作为一个示例,cpu可以应用基于散列的调度,在这种情况下,通过将合适的静态散列函数应用于例如wr中指定的目标地址,将wr发布在dc sq上。然而,基于散列的调度可能会导致dc sq中的工作负载不平衡。作为另一示例,cpu可在同一dc sq上发布与公共流相关联的wr。如果没有可用的dc sq,则cpu会等待直到一些dc sq被释放。在此方案中,软件以异步进度模式操作,这给cpu带来了负担。
25.在所公开的实施方式中,网络适配器将主机软件从管理多个通道的负担卸载。为此,主机软件程序在公共多通道发送队列(mcsq)上发布目的地为多个目标的wr。网络适配器从mcsq检索wr,并且将其分发到连接到相关目标的sq。具体来说,当已经为sq设置了到目
标的连接时,将使用它。否则,网络适配器分配新的连接上下文,使用所述上下文连接到远程对等体,并且通过已建立的连接将数据发送到远程对等体。网络适配器还将cqe发布到主机软件程序可访问的公共cq。
26.在一些实施方式中,代替在队列中存储wr,sq具有用于引用mcsq中的wr的小存储空间,例如指向wr的指针。因此,由网络适配器处理的sq比通常在软件中处理的具有全队列的sq需要少得多的存储空间。
27.接下来,我们关注主要涉及网络适配器的实施方式。考虑包括网络接口、主机接口和处理电路的网络适配器。网络接口对接到用于与远程目标通信的通信网络。主机接口连接到主机,所述主机访问存储源自在主机上操作的客户端进程的wr的mcsq,其中至少给定的wr指定从主机到目标的相应数据传输操作。替代地或另外地,至少给定的wr指定由网络适配器本地执行的操作,例如,存储器注册操作。处理电路从mcsq中检索wr并且将检索到的wr分发在由处理电路可访问的多个sq中。在本上下文中,将wr分发到sq的操作意味着用于访问mcsq的wr的信息被提供用于存储在sq中。其访问信息因此被分发和存储用于sq的wr本文被称为在sq上发布的wr。处理电路调度发布在多个sq上的wr的执行,并且在由客户端进程可访问的cq上发布cqe,其中每个cqe指示一个或多个wr的结束执行。
28.主机与之通信的中的每个目标可以包括:(i)远程节点,其耦合到通信网络;或(ii)本地装置(诸如硬件加速器),其耦合到主机。
29.为了将wr从mcsq分发到sq,wr包括与相应sq相关联的相应识别符,并且处理电路基于识别符在相应sq之间分发wr。网络适配器可以从mcsq检索尚未分配sq的wr。在此情况下,处理电路从多个sq中选择可用的sq,将识别符与可用的sq相关联,并且在可用的sq上发布wr。响应于检测到给定wr中的识别符已经与选定的sq相关联,处理电路在选定的sq上发布wr。在一些实施方式中,wr和sq之间的关联基于目标地址和网络状态。
30.在所公开的实施方式中,一些输送上下文可以使用rc协议,而其他输送上下文可以使用dc协议或用户数据报协议(udp)。wr与sq的关联可以通过选择特定类型的输送上下文来实现。替代地,网络适配器可在执行时选择输送上下文的最佳可用类型。
31.在实施方式中,主机在相应地与第一sq池和第二sq池相关联的第一mcsq和第二mcsq上发布wr。在此实施方式中,处理电路将来自第一mcsq的wr分发到第一池中的sq,并且将来自第二mcsq的wr分发到第二池的sq。sq池可以是不相交的,替代地,至少一个sq在第一sq池和第二sq池之间共享。在此情况下,处理电路将来自第一mcsq和第二mcsq两者的wr发送到至少一个sq。
32.网络适配器以发布顺序执行发布到同一sq的wr,但通常不保证发布在不同sq上的wr的执行顺序与wr发布到mcsq的相同顺序相匹配。
33.要以它们在mcsq上发布的相同顺序执行wr,这些wr应发布在同一sq上。为了以在mcsq发布对应wr的相同顺序发布cqe,处理电路在cq上发布对应于在给定wr之前发布到mcsq的wr的全部cqe之后,在cq上发布与给定wr对应的cqe。替代地,在允许无序执行的情况下,处理电路独立于mcsq中的相应wr的顺序在cq上发布cqe。
34.在一些实施方式中,在连接建立和终止之间,dc sq服务于指定公共目标的wr。在此类实施方式中,处理电路向已经与给定目标的rq建立连接的给定sq分发仅指定给定目标的wr,直到连接终止。
35.使用sq的连接可能会因各种原因而故障,诸如超出输送重试次数、重试接收器未就绪(rnr)否定确认(nack)重试次数超出、远程访问错误和远程操作错误。
36.当连接故障时,网络适配器无法执行在对应sq上发布的wr,并且因此不会在cq上发布对应的cqe。这反过来可能会导致暂停从mcsq wr检索目的地为使用其他sq的其他连接。在一些实施方式中,网络适配器暂停执行与故障连接相关联的wr,但是保持执行活动连接的wr。具体地,响应于检测到给定sq中的故障,处理电路在cq上发布指示故障的cqe。例如,处理电路被配置为在cq上发布指示要在给定sq中执行的每个wr的故障的cqe。作为另一示例,处理电路被配置为在所述cq上发布将被分发到给定sq的来自mcsq的每个wr的cqe。
37.主机软件识别故障连接的cq,并且对应地采取行动,例如,从mcsq移除对应的wr。在一些实施方式中,主机cpu尝试纠正错误,例如,通过重启会话或应用其他合适的纠正动作。在错误被纠正后,主机cpu排出其余的wr,并且从成功执行的最后一个wr开始重新发布它们。
38.在所公开的技术中,网络适配器从主机卸载多通道连接的管理。因此,主机发布指定可能在公共mcsq上使用不同输送服务的多个不同目标的wr。网络适配器在连接到目标的多个sq之间分发wr,并且在不涉及主机cpu的情况下在公共完成队列上发布完成通知。使用此方案,可以释放原本用于通信管理的cpu周期,例如用于计算任务。通过使用公共多通道队列(mcsq工作队列),与使用单个工作队列相比,存储空间明显减少。此外,所公开的实施方式提高了cpu高速缓存性能。
39.系统描述
40.图1是示意性地图示了根据本文所描述的实施方式的计算系统20的框图,其中网络适配器管理多个通道上的主机通信。
41.在计算系统20中,网络节点24通过通信网络30与远程网络节点28通信。通信网络30可以包括任何合适的分组网络,诸如,例如,以太网网络或infiniband
tm
(ib)结构。
42.例如,计算系统20可以用于网络节点与其他网络节点交换大量数据的应用中,诸如,例如高性能计算、分布式计算和数据中心,仅举几例。
43.网络节点24包括中央处理单元(cpu)32形式的处理器和存储器34,它们通过合适的总线36互连。在本示例中,总线36包括外围组件互连快速(pcie)总线。替代地,也可以使用其他合适的总线类型。网络节点24还包括用于连接到通信网络30的网络适配器38,诸如网络接口控制器(nic)。为了简洁起见,cpu 32、存储器34和总线36(有或没有网络适配器)的组合也被称为“主计算机”或简称为“主机”。
44.网络适配器38包括:网络接口42,其耦合到通信网络30;以及主机接口44,其经由总线36耦合到cpu 32和存储器34。耦合在网络接口42和主机接口44之间的处理电路46生成用于在通信网络30上传输的传出分组,并且处理从通信网络接收的输入分组,如下所述。
45.在入口方向,处理电路46经由网络接口42对网络适配器中接收到的分组进行各种处理,诸如验证分组有效载荷中的数据的正确性、分组分类和优先级以及路由。出于分组分类和路由的目的,处理电路通常检查分组报头中的某些字段。报头字段包含寻址信息,诸如源地址和目的地地址以及端口号,以及所使用的底层网络协议。在出口方向上,处理电路46经由主机接口44从主机检索用于传输的数据,将数据打包成分组序列,并且经由通信网络30将分组传输到它们的目的地。
46.在公开的实施方式中,处理电路46使用工作队列48通过通信网络30通信。下面的描述主要将工作队列48称为用于数据传输的发送队列(sq)。替代地,例如,在ib网络中,工作队列48包括队列对(qp),所述队列对(qp)包括发送队列(sq)和接收队列(rq)(未示出)。sq或qp的sq部分存储指定数据传输操作的工作请求(wr),而qp的rq部分存储指定数据接收操作的wr。一些wr可以包括控制wr,例如,用于建立或终止连接。存储在wr中的wr由处理电路46执行。
47.用qp的术语来说,在qp上发布指定数据传输操作的wr,意味着wr将被发布在qp的sq部分上。
48.数据传送操作的wr可以指定例如用作源缓冲器或目的缓冲器的存储器34中的缓冲器52,以及要传送的数据量。在实施方式中,数据传送操作可以包括直接访问存储器34而不涉及cpu 32的远程直接存储器访问(rdma)操作。
49.下面的描述主要集中在主机向目标传输数据的出口方向,例如,经由网络适配器。在出口方向上,要传输的数据可以驻留在缓冲器52中。
50.在一些实施方式中,为了传输数据,处理电路46从相关sq中检索wr,并且执行在wr中指定的数据传输操作。处理电路在一个或多个分组中传输数据,其中目标接收者通过向网络适配器发回ack通知来确认每个分组。当数据传输完成时(例如,当网络适配器接收到最后一个分组的ack时),处理电路在存储器34中的完成队列(cq)58上发布完成队列元素(cqe)。cqe通知主机完成对应wr的执行。在一些实施方式中,单个cqe可以指示一个或多个wr的执行完成。
51.多通道发送队列(mcsq)56接收来自多个进程50的写请求。如下面将要描述的,wr将由网络适配器38检索和执行。尽管图1描绘了单个mcsq,但是在替代实施方式中,也可以使用多个mcsq。
52.在本示例中,sq 48、mcsq 56和cq 58驻留在主机24的存储器34中。然而,这并不是强制性的。在替代实施方式中,sq 48中的一个或多个、mcsq 56中的一个或多个和/或cq 58中的一个或多个可以驻留在另一存储器(诸如网络适配器38的存储器(未示出))中。
53.在cpu 32上运行的客户端进程50(为简洁起见,还简称为“客户端”),诸如由应用软件生成的进程,与在远程网络节点28上运行的对等客户端(未示出)通信。
54.在一些实施方式中,一个或多个mcsq 56用作客户端50的通信接口。客户端50可在对应于多个不同目标的给定mcsq wr上发布,其中每个wr将被发布在连接到对应目标的sq 48上。如下文将详细描述的,处理电路从mcsq检索wr,并且将wr分发到与所述mcsq相关联的sq中。处理电路还处理在cq 58上发布cqe。经由单个mcsq和公共cq对接多通道通信的主机软件比由主机直接管理多个sq和cq要高效得多,并且需要更少的cpu周期。
55.在一些实施方式中,cpu 32包括高速缓冲存储器60,所述高速缓冲存储器60通常用于临时存储cpu所需的数据。处理本地高速缓存中的数据通常比处理驻留在存储器34中的数据快得多。在实施方式中,高速缓存存储一个或多个mcsq,或此类mcsq的相应部分。
56.在一些实施方式中,网络节点24包括协处理器,诸如加速器64。加速器可以包括例如在现场可编程门阵列中实现的硬件装置。加速器可以用于代表cpu快速执行各种数据处理任务,诸如数据压缩/解压缩、数据加密/解密等。在一些实施方式中,客户端50通过在mcsq56上发布wr来与加速器64通信,其中wr将加速器指定为目标。
57.在一些实施方式中,为了在主机上运行的客户端进程和目标上运行的对等进程之间建立连接,主机向目标发送连接分组。建立连接后,在发起者主机侧分配sq(48)和rq,并且在目标侧分配对等rq和sq。要断开连接,发起者主机向目标方发送断开分组。
58.在一些实施方式中,sq 48可以被配置为根据可靠连接(rc)协议或根据动态连接(dc)协议操作。
59.在rc输送服务中,主机和目标之间的连接是持久的,即打算在相对长的时间内保持活动状态。根据rc协议的连接可随时用于通信,因此可在需要时立即使用(或仅使用排序延迟)。因为在rc协议中,即使没有流量交换,连接也保持可用,所以rc会持续消耗两侧的sq和rq的存储空间。因此,rc不能很好地扩展以支持大量同时连接。
60.在dc输送服务中,主机和目标之间的连接是按需建立的。主机(或其网络适配器)可能保持sq池,所述池通常比rc输送服务的sq池小得多。当主机向给定目标传输数据时,会临时分配sq来连接到此目标。传送操作完成后,连接将终止,并且sq在池中变得可用于连接到其他目标。dc输送服务是可扩展的,因为它使用的共享sq数量相对较少。dc输送服务的一个缺点是连接建立和终止所招致的延迟。
61.在所公开的实施方式中,单个工作队列(例如,mcsq)服务于大量rc和dc sq。与mcsq相比,sq消耗的存储空间要少得多,因为它们只需要少量的输送上下文存储空间和少量的存储空间来存储用于访问mcsq中的wr的信息。当可用于wr发起者的存储器和/或高速缓存存储空间有限时,此类配置尤其有益。对接单个mcsq而不是对接许多sq通常也是有利的,并且对于具有有限资源的wr发起者也是如此。具有有限资源的wr发起者的示例包括对等硬件装置(例如,fpga装置或gpu)、soc、嵌入式cpu等。
62.通过网络适配器进行多通道管理
63.图2是示意性地图示了根据本文所描述的实施方式的支持通过多个通道的通信的网络节点100中的数据流的图。
64.将参考图1的网络节点24来描述网络节点100内的数据流。
65.在网络节点100中,多通道通信是通过主机的cpu 32执行的软件和由网络适配器38对多个连接的管理的组合来实现的。在图2中,水平虚线分隔主机软件域和网络适配器域。在本上下文中,软件域和网络适配器域相应地指由cpu 32和网络适配器38执行的相应处理。处理中涉及的数据结构(诸如mcsq、sq和cq)可以驻留在任何合适的存储器(诸如存储器34或网络适配器的存储器(未示出))中。
66.在图2的示例中,软件域的元素(虚线上方)包括mcsq 104,用于将wr对接到网络适配器。尽管图2描绘了单个mcsq,但是在替代实施方式中,可以使用任何其他合适数量的mcsq。
67.mcsq 104从在主机wr上运行的客户端50接收指定数据传输操作。指定数据传输的wr包含指示在其上发布wr的sq的识别符。
68.在rc协议中,单个sq用于连接到单个目标,在这种情况下,分配给sq的编号(例如,或qp编号)可以用作所述目标的sq识别符。在dc协议中,相同的dc sq用于在不同时间连接到不同目标。在此情况下,cpu为每个wr分配流识别符(流id),然后将其发布在为相关流id服务的dc sq上。当没有sq被分配给wr的流id时,可用的dc sq(如果有)将被分配给所述流id,并且wr将被发布在所述dc sq上。如果没有dc sq可以用于发布wr,则分发器将等待,直
到已使用的dc sq中的一个变得可用。指定向给定目标的数据传输的wr将发布在服务于相关流id的dc sq上。如果此dc sq当前正在为另一目标服务,则在为其之前发布的全部wr服务之后,dc sq会重新连接以服务给定目标。
69.请注意,就目标而言,中的每个dc sq都可以连接到任何期望的目标。在流id方面—如果有一个dc sq服务于流id,那么具有此流id的wr会被发布在此dc sq上,以保证与同一流id相关联的不同wr的执行顺序。这适用于目的地为相同或不同目标的wr。
70.cq 112从网络适配器接收指示在mcsq 104上发布的wr的执行完成的cqe。
71.给定的客户端50可以与多个目标通信。客户端通常在mcsq上以某种期望的顺序发布wr。例如,在发布一个或多个用于向相同或另一目标发送数据的另外的wr之前,客户端可以发布用于向目标发送数据的一个或多个wr。
72.网络节点100包括输送引擎118。在本示例中,输送引擎包括在dc模式下操作的dc sq 124的dc sq池120,以及包括在rc模式下操作的rc sq 126的rc sq池122。
73.分发器128从mcsq 104检索wr,并且在适当时将它们发布在dc sq 124和rc sq 126上。在一些实施方式中,mcsq中的每个wr包括指示在其上发布所述wr的dc sq或rc sq的识别符。给定的dc sq可在不同时间为具有相同或不同目标的公共流id的连接服务。给定的rc通常例如通过qp编号与给定sq识别符相关联。
74.在一些实施方式中,对于dc sq,分发器保持流id和相应的活动dc sq之间的映射表。当dc sq完成其全部未决wr的执行时,分发器释放dc sq和流id之间的关联。
75.在一些实施方式中,分发器128在同一dc sq上发布公共流id的目标的wr。类似地,分发器128可在同一rc sq上发布公共识别符(qp编号)的目标的wr。这保证了具有相同识别符的wr将以它们在mcsq上发布的相同顺序依次执行。
76.输送引擎118从dc sq 124和rc sq 126读取wr并且执行它们。在一些实施方式中,输送引擎一次执行一个wr。在此类实施方式中,输送引擎使用任何合适的方法(例如,循环方法或随机)来选择dc sq或rc sq以从中执行wr。替代地,输送引擎支持并行地执行来自多个sq的多个wr。例如,输送引擎可以并行地执行来自dc sq的wr和来自rc sq的wr,和/或并行地执行来自多个dc sq和/或来自多个rc sq的多个wr。
77.在执行wr时,输送引擎118例如从存储器34中的缓冲器52读取要传输的数据,将读取的数据打包成分组序列,并且例如通过通信网络30将分组传输到相关目标。对于发送的每个分组,输送引擎从目标接收ack通知140。在接收到对应于当前wr的最后分组的ack之后,输送引擎生成指示wr执行完成的cqe。输送引擎在cq 112上发布cqe(对于dc sq和rc sq),主机可以访问这些cq。
78.输送引擎以在相关mcsq发布的相同顺序执行发布在dc sq(或rc sq)上的wr,但通常以不同于在mcsq的顺序执行发布在不同dc sq(或不同rc sq)上的wr。此类无序执行可能由于各种原因而发生,诸如需要不同执行时间的wr、经历不同工作负载的sq以及分配给不同sq的不同优先级。
79.在一些实施方式中,输送引擎通过以有序或无序的方式在cq上发布cqe来支持wr的有序或无序执行。
80.如上所述,wr的执行顺序通常不同于wr在mcsq上发布的顺序。在有序模式中,重新排序缓冲器144以与在mcsq上发布对应wr相同的顺序对输送引擎生成的cqe进行排序。在有
序模式下,网络适配器仅在给定wr执行之前在mcsq中发布的wr和在mcsq发布的cqe之后发布对应于给定wr的cqe。在示例实施方式中,cqe重新排序可以基于分配给发布在mcsq上的wr的序列号。在有序模式下,单个cqe可能对应多个wr,这减少了主机处理的cqe数量。例如,考虑在mcsq上发布三个wr,三个连接中的每一个都有一个wr。在有序模式下,网络适配器只能为在mcsq上发布的三个wr中执行的最后一个wr发布cqe。
81.在无序模式下,输送引擎118以wr完成的顺序发布cqe,这通常不同于wr在mcsq上发布的顺序。例如,当主机(例如,客户端50)不期望wr中的任何特定执行顺序时,可以使用无序模式。因此,主机可以处理完成的wr,而不必等待先前较慢的wr完成执行。
82.在dc sq池120中,在任何给定时间,dc sq 124中的每个都可以参与连接或可用于建立新的连接。
83.输送引擎可能会断开在预限定时间内没有提交wr的已参与dc sq,并且断开的dc sq变得可用于其他连接。
84.在rc sq池122中,即使当rc sq没有提交执行的wr时,rc sq 126也长时间连接到相应的目标。
85.当mcsq 56故障时,网络节点100中的多通道通信可能会故障,例如,由于在将wr传递到mcsq或从mcsq传递出去时故障。在此情况下,在实施方式中,经由故障mcsq的全部多通道通信被暂停。
86.当dc sq或rc sq故障时(例如由于连接超时),多通道通信也可能故障。在此情况下,在实施方式中,仅故障的dc sq或rc sq被暂停,而经由其他dc sq和rc sq的通信不间断地继续。
87.请注意,故障sq中的wr不会被执行,并且因此输送引擎不会为这些wr生成cqe。这可能会阻止在mcsq中执行与有效连接相关联的wr。在一些实施方式中,为了允许mcsq的流畅操作,网络适配器生成指示故障的cqe,并且在cq上发布它们。mcsq可以响应此类cqe,就好像对应的wr已经完成一样。
88.在实施方式中,网络适配器为目的地为故障rc sq或dc sq的wr生成指示故障连接的cqe,并且在cq上发布这些cqe。
89.当rc或dc sq故障时,当前与故障sq相关联的识别符被添加到黑名单160。sq识别符可以包括用于rc的qp编号或用于dc的流id。在tcp连接的情况下,sq识别符可以包括五元组,所述五元组包括源地址和目的地地址、源端口号和目的地端口号以及底层协议。当分发器128从mcsq 104读取wr时,黑名单过滤器154检查sq的识别符是否在黑名单160中。如上所述,当识别符不在黑名单中时,分发器将wr发送到相关的sq。当识别符在黑名单中时,黑名单过滤器阻止将wr发送到分发器。相反,网络适配器生成指示故障连接的cqe,并且在cq 112上发布cqe。在适当的稍后时间,例如,当故障被修复时,主机向网络适配器发送从黑名单移除sq识别符的命令。
90.在图2的示例实施方式中,输送引擎118执行sq中的wr。例如,输送引擎包括执行全部wr的单个执行引擎。替代地,输送引擎包括动态分配用于执行wr的多个执行引擎。
91.如上所述,mcsq的数量不一定限于单个mcsq。当有多个mcsq时,连接到给定目标的sq可以为多个mcsq服务。
92.图1示出的计算系统(20)、网络节点(24)和网络适配器(38)配置是示例配置,选择
它们纯粹是为了概念清楚。在替代实施方式中,也可以使用任何其他合适的计算系统、网络节点和网络适配器配置。为了清楚起见,图中省略了对于理解本发明的原理不必要的元素,诸如各种接口、寻址电路、定时和排序电路以及调试电路。
93.网络适配器38的一些元素,诸如处理电路46,可在硬件中(例如,在一个或多个专用集成电路(asic)或fpga中)实现。另外地或替代地,处理电路46可以使用软件或使用硬件和软件元素的组合来实现。存储器34可以包括使用任何合适的存储技术的任何合适类型的存储器,诸如随机存取存储器(ram)、动态ram(dram)、诸如快闪存储器的非易失性存储器,或多种存储器类型的组合。
94.在一些实施方式中,网络适配器38的一些功能,例如处理电路46的功能,可由通用处理器执行,所述通用处理器以软件编程来执行本文所描述的功能。软件可以诸如通过网络以电子形式下载到处理器,或它可以替代地或另外地被提供和/或存储在非暂时性有形介质(诸如磁、光或电子存储器)上。
95.使用dc和rc协议的多通道通信方法
96.图3是示意性地图示了根据本文所描述的实施方式的用于多通道传输的方法的流程图。
97.所述方法将被描述为由图1的网络适配器38(更具体地,由网络适配器的处理电路46)执行,并且参考图2中包括网络适配器域的元素的图。
98.在描述图3的方法时,假设wr包括指示要在其上发布wr的sq的识别符字段。
99.所述方法开始于网络适配器38在sq初始化步骤200将dc sq池120中的全部dc sq 124和rc sq池122中的全部rc sq 126的状态标记为可用。在识别符确定步骤204处,网络适配器从mcsq 104中的第一wr(例如,在头部位置的wr)读取识别符字段。识别符取决于底层协议。例如,当wr指定使用dc协议传输时,识别符可以包括流识别符。替代地,当wr指定使用rc模式传输时,识别符可以包括qp编号。进一步替代地,当底层协议是tcp时,识别符可以包括五元组,所述五元组包括源地址和目的地地址、源端口号和目的地端口号以及底层协议。
100.在关联查询步骤208处,网络适配器检查识别符是否已经与dc sq 124或rc sq 126中的任一个相关联,并且如果是,则在wr检索步骤212处从mcsq检索第一wr。在wr发布步骤216处,网络适配器将wr发布在上面步骤208处确定的服务sq上。在释放检查步骤220处,网络适配器检查是否有任何sq已经被释放,如果是,则将释放的sq的状态标记为可用。在步骤220之后,网络适配器循环回到步骤204以处理mcsq 104中的后续wr。
101.当在步骤208处,识别符在dc sq池或rc sq池中没有关联的sq时,网络适配器进行到sq可用性检查步骤228,以根据需要检查dc sq池中的可用dc sq或rc sq池中的rc sq。当在步骤228没有找到变得可用的sq时,相关池中的全部sq都参与连接,并且网络适配器进行到等待步骤232,以等待dc sq池中的一个(或多个)dc sq或rc sq池中的一个(或多个)rc sq断开并且变得可用,并且循环回到步骤228。
102.当在步骤228找到可用的sq时,网络适配器进行到分配步骤236,以分配找到的sq来服务具有步骤204处的识别符的wr。进一步在步骤236,网络适配器在找到的sq和目标的sq之间建立连接,并且将找到的sq的状态标记为参与。在步骤236之后,网络适配器进行到步骤212,接着是步骤216处,以检索当前的第一wr并且将其发布到在步骤236处分配的sq上。
103.图4是示意性地图示了根据本文所描述的实施方式的在dc和rc连接上来单独管理通信的网络节点300中的数据流的图。
104.在图4中,rc和dc的wr是分开处理的。dc部分包括dc mcsq104a(或多个dc mcsq),保持dc分发器128a在dc sq 124之间分发的wr。经由dc cq 112a报告dcwr的完成。rc部分包括rc mcsq 104b(或多个rcmscq),保持rc分发器128b在rc sq126之间分发的wr。经由rc cq 112b报告rc wr的完成。dc和rc部分包括相应地用于处理dc sq故障和rc sq故障的单独的黑名单160a和160b以及单独的黑名单过滤器164a和164b。dc部分和rc部分中的每一个都包括用于对完成报告进行重新排序的重新排序缓冲器144。
105.dc和rc部分中的数据流使用单独的mcsq,类似于上面图2中描述的功能和数据流,其中dc和rc使用公共mscq处理。
106.在一些实施方式中,主机在相应地与第一sq池和第二sq池相关联的第一mcsq和第二mcsq上发布wr。第一mcsq和第二mcsq中的每一者都可以是dc mcsq或rc mcsq。在此类实施方式中,网络适配器将来自第一mcsq的wr分发到第一池中的sq,并且将来自第二mcsq的wr分发到第二池的sq。在一些实施方式中,至少一个sq在第一池和第二池(例如,两个都是dc sq池或两个都是rc sq池)之间共享,并且网络适配器将来自第一mcsq和第二mcsq两者的wr发布到至少一个sq。
107.以上描述的实施方式是作为示例给出的,并且也可以使用其他合适的实施方式。
108.应理解,以上描述的实施方式是作为示例引用的,并且所附权利要求不限于上文具体示出和描述的内容。相反,所述范围包括上文描述的各种特征的组合和子组合,以及本领域技术人员在阅读前述描述后会想到的并且在现有技术中没有公开的其变化和修改。在本专利申请中通过引用并入的文件被认为是本技术的组成部分,除非在这些并入的文件中以与本说明书中明确或隐含的限定相冲突的方式限定任何术语,否则应仅考虑本说明书中的限定。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献