用于分布式信息技术体系结构的通信传输协议的制作方法
【专利摘要】在层二(L2)网络交换机中的通信协议包括,响应于源节点的服务请求,注册所述源节点用于分组通信服务。所述协议还包括把来自注册的源节点的一个或多个分组转发到一个或多个目的节点。所述协议还包括从一个或多个目的节点接收分组并且把每个接收到的分组转发到相应的注册的节点。
【专利说明】用于分布式信息技术体系结构的通信传输协议
【技术领域】
[0001]本发明一般而言涉及数据通信,特别地,涉及用于分布式信息系统的数据通信协议。
【背景技术】
[0002]网络交换设备被利用来连接网络中的计算系统。这种网络交换机通常工作在OSI模型的数据链路层(层2),并且在网络中把分组从源节点(设备)转发到目的节点。
【发明内容】
[0003]本发明的实施例涉及一种用于分布式系统信息技术体系结构的通信传输协议和系统。一种实施例提供了在网络中的节点之间进行数据通信的方法。在一种实施例中,网络包括分布式架构协议系统。
[0004]所述方法包括,在层2 (L2)的网络交换系统中,响应于源节点的服务请求,注册源节点用于分组通信服务。所述方法还包括把一个或多个分组从注册的源节点转发到一个或多个目的节点。所述方法还包括从一个或多个目的节点接收分组并且把每个接收到的分组转发到相应的注册的节点。
[0005]注册源节点用于分组通信服务包括通过在客户端列表中维护用于所述源节点的客户端条目来维护事务跟踪数据结构。对于每个客户端条目,在目的节点列表中维护一个或多个目的条目,其中每个目的条目对应于用于所述源节点的目的节点。对于每个目的条目,维护对应于在所述源节点与对应于所述目的条目的目的节点之间的待发分组通信的分组事务列表。
[0006]所述方法还包括维护传送队列,用于使来自相应的注册的源节点的分组排队用于传送;向用于传送的每个分组附加报头,其中报头包括通信协议信息;以及基于分组通信状态更新事务跟踪数据结构。
[0007]所述方法还包括维护接收队列,用于使来自相应于注册的源节点的目的节点的分组排队,以及基于接收到的分组通信状态更新事务跟踪数据结构。
[0008]所述方法还包括:响应于来自源节点的服务注册请求,注册由源节点提供的用于从系统中接收传送状态信息的回调函数。利用由注册的源节点提供的回调函数提供对应于注册的源节点的分组的传送状态。
[0009]所述方法还包括选择与目的节点相关联的接口端口,用于利用所选的接口端口经通信链路把分组从相应的源节点传送到目的节点。所述方法还包括从目的节点接收分组并且使该分组在用于相应的源节点的接收队列中排队。
[0010]本发明的这些和其它方面、特征及优点将通过参考附图和本文的详细描述得到理解,并且将利用尤其在所附权利要求中指出的各种元素和组合来实现。应当理解,如所要求的,前面的一般性描述和后面的附图简要说明以及本发明的详细描述是本发明的优选实施例的示例和解释,而不是本发明的限制。
【专利附图】
【附图说明】
[0011]被认为是本发明的主题在本说明书结论部分的权利要求中特别指出并明确地要求保护。结合附图进行的以下具体描述,本方面的上述及其它目的、特征和优点是显然的,其中:
[0012]图1根据本发明的实施例,说明利用通信传输协议的信息技术系统10的基本组件的例子;
[0013]图2是根据本发明的实施例展示如图1中所示的利用通信传输协议系统的计算机网络设备的例子的框图;
[0014]图3根据本发明的实施例,示出了用于在DFP网络的节点之间进行数据通信的过程的流程图;
[0015]图4根据本发明的实施例,示出了在包括多个功能层的通信栈中的通信协议体系结构;以及
[0016]图5根据实施例发明示出了用于通信协议的执行和数据模型。
【具体实施方式】
[0017]通过参考以下本发明结合附图的详细描述可以更容易地理解本发明,其中附图构成本公开内容的一部分。应当理解,本发明不限于在本文中所描述和/或所示出的具体设备、方法、条件或参数,并且本文所使用的术语只是为了通过例子描述特定的实施例,并不是要限制所要求的发明。
[0018]本发明的实施例提供了用于分布式系统信息技术体系结构的通信传输协议和系统。一种实施例提供了在网络中的节点之间进行数据通信的方法。在一种实施例中,网络包括分布式架构协议系统。
[0019]所述方法包括,在层二(L2)网络交换系统中,响应于源节点的服务请求,注册源节点用于分组通信服务。所述方法还包括把一个或多个分组从注册的源节点转发到一个或多个目的节点。所述方法还包括从一个或多个目的节点接收分组并且把每个接收到的分组转发到相应的注册的节点。协议分组在L2的域中转发并且网络交换机系统是具有L2或层3(L3)能力的网络设备。
[0020]注册源节点用于分组通信服务包括通过在客户端列表中维护用于所述源节点的客户端条目来维护事务跟踪数据结构。对于每个客户端条目,在目的节点列表中维护一个或多个目的条目,其中每个目的条目对应于用于所述源节点的目的节点。对于每个目的条目,维护对应于在所述源节点与对应于所述目的条目的目的节点之间的待发分组通信的分组事务列表。
[0021]所述方法还包括维护传送队列,用于使来自相应的注册的源节点的分组排队用于传送;向用于传送的每个分组附加报头,其中报头包括通信协议信息;以及基于分组通信状态更新事务跟踪数据结构。
[0022]所述方法还包括维护接收队列,用于使来自相应于注册的源节点的目的节点的分组排队,以及基于接收到的分组通信状态更新事务跟踪数据结构。
[0023]所述方法还包括,响应于来自源节点的服务注册请求,注册由源节点提供的回调函数,当接收到用于这个源节点的分组时,所述回调函数被调用。利用由注册的源节点提供的回调函数,用于处理为所述源节点接收到的分组。
[0024]所述方法还包括选择与目的节点相关联的接口端口,用于利用所选的接口端口经通信链路把分组从相应的源节点传送到目的节点。所述方法还包括从目的节点接收分组并且使该分组在用于相应的源节点的接收队列中排队。本文以下关于附图描述根据本发明的通信传输协议系统的示例性实施例。在一种实施例中,通信传输协议系统包括连接计算系统或诸如不同类型网络的网络段的计算机网络设备(网络交换机)。实施例包括在数据链路层(0SI模型的层2)处理并路由数据的多端口网络设备。
[0025]参考附图,其中相同的标号贯穿几个附图都说明相同的元件,图1根据本发明的实施例说明利用通信传输协议的信息技术系统10的基本组件的例子。根据本发明的实施例,系统10包括计算机网络设备11及利用实现通信传输协议的计算机网络设备11的通信传输协议系统100 (图2)的远程设备15和17-20。
[0026]远程设备15和17-20中的每一个都具有应用并且可以具有本地数据库16。计算机网络设备11包括通信传输协议。在一种实施例中,服务器11执行用于计算机网络的软件。在一种实施例中,计算机网络设备11连接网络段13和13A。
[0027]数据库12可被远程设备15和17-20分别经连接14(A_F)通过网络13进行访问。远程设备15和17-20可通过网络13访问数据库12,网络13诸如是但不限于:因特网、局域网(LAN)、广域网(WAN)、经利用调制解调器的电话线(POTS)、蓝牙、WiF1、WiMAX、蜂窝、光纤、卫星、射频(RF)、以太网、磁感应、同轴电缆、RS-485等或其它类似的网络。计算机网络设备11还可连接到组织内的LAN。
[0028]远程设备15和17-20每一个都可以位于远程站点。远程设备15和17_20包括但不限于PC、工作站、膝上电脑、手持计算机、袖珍PC、PDA、寻呼机、WAP设备、非WAP设备、蜂窝电话、掌上设备、打印设备等。当在远程设备15和17-20中的一个设备处的用户想要从数据库12访问数据时,远程设备15和17-20通过网络13通信以访问数据库12。
[0029]从第三方计算机系统21和数据库22中获得的数据可以存储在数据库12,以便向远程设备15和17-20上的用户提供以后的访问。也可以预期,对于某种类型的数据,远程设备15和17-20可利用网络13直接访问第三方计算机系统21和数据库22。
[0030]图2中所说明的是根据本发明的实施例展示如图1所示的利用通信传输协议系统100的计算机网络设备11的例子的框图。
[0031]在一个例子中,如图2中所示出的,按照硬件体系结构,计算机网络设备11包括处理器41、诸如存储器42的计算机可读介质、经本地接口 43通信耦合的一个或多个输入和/或输出(I/O)设备(或外围设备)。本地接口 43可以是例如但不限于如本领域已知的一条或多条总线或其它有线或无线连接。本地接口 43可以具有附加的元件以启用通信,附加的元件诸如控制器、缓冲区(高速缓存存储器)、驱动器、中继器及接收器,为简洁起见这些元件被省略。而且,本地接口 43可以包括地址、控制、和/或数据连接以在上述组件之间启用适当的通信。
[0032]处理器41是用于执行可存储在存储器42中的软件的硬件设备。处理器41几乎可以是任何客户定制的或商用的处理器、中央处理单元(CPU)、数字信号处理器(DSP)或在与计算机网络设备11相关联的几个处理器中的辅助处理器、以及基于半导体的微处理器(以微芯片的形式)或微处理器。
[0033]存储器42可以包括易失性存储器元件(例如,随机存取存储器(RAM),诸如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)等)和非易失性存储器元件(例如,只读存储器(ROM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁带、光盘只读存储器(CD-ROM)、磁盘、软磁盘、盒式磁带、卡型盒式磁带等)的任意一种或组合。而且,存储器42可以结合电、磁、光和/或其它类型的存储介质。应当指出,存储器42可以具有分布式体系结构,其中各种组件位于彼此远离的位置,但是可被处理器41访问。
[0034]存储器42中的软件可以包括一个或多个单独的程序,每个程序都包括用于实现逻辑功能的可执行指令的有序列表。在图2中说明的例子中,存储器42中的软件包括合适的操作系统(0/S)51和本发明的系统100。系统100包括以下进一步描述的功能组件和处理块。
[0035]0/S 51实质上控制其它计算机程序的执行,诸如包括通信传输协议系统100的通信栈,并且提供调度、I/o控制、文件与数据管理、内存管理、以及通信控制与相关的服务。但是,本发明的通信传输协议系统100可应用在其它操作系统上。
[0036]通信栈包括多个层,包括诸如在层2之上的任何层的上层协议(ULP)99、诸如在层2之下的任何层的通信传输协议层100和更低的层98。
[0037]通信传输协议系统100可以包括源程序、可执行程序(目标代码)、脚本或者包括要执行的一组计算机程序指令的任何其它实体。当通信传输协议系统100是源程序时,则该程序通常经编译器、汇编器、解释器等转换,以便与0/S 51 一起正确地工作,其中编译器、汇编器、解释器等可以包含或不包含在存储器42中。而且,通信传输协议系统100可以由以下写成:(a)面向对象的编程语言,其具有数据和方法的类、或(b)过程编程语言,其具有例程、子例程、和/或函数。
[0038]也可以把这些计算机程序指令存储在计算机可读介质中,这些指令使得计算机、其它可编程数据处理装置、或其它设备以特定方式工作,从而,存储在计算机可读介质中的指令就产生出包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的指令的制造品(article of manufacture)。
[0039]计算机程序指令也可以加载到计算机、其它可编程数据处理装置或者其它设备上,使得一系列操作步骤在计算机、其它可编程装置或者其它设备上执行,以产生一种计算机实现的过程,使得在所述计算机或者其它可编程装置上执行的指令提供用于实现在流程图和/或框图中的一个或多个方框中规定的功能/动作的过程。
[0040]I/O设备可以包括输入设备,例如但不限于,鼠标44、键盘45、扫描仪(未不出)、麦克风(未示出)等。而且,I/O设备还可以包括输出设备,例如但不限于,打印机(未示出)、显示器46等。最后,I/O设备还可以包括与输入和输出进行通信的设备,例如但不限于,NIC或调制器/解调器47 (用于访问远程设备、其它文件、设备、系统或网络)、RF或其它收发器(未示出)、电话接口(未示出)、桥接器(未示出)、路由器(未示出)等。
[0041]如果计算机网络设备11是PC、工作站、智能设备等,则在存储器42中的软件还可以包括基本输入输出系统(B1S)(为简洁起见被省略)。B1S是在启动时初始化并测试硬件、启动0/S 51并且支持硬件设备之间的数据传输的一组核心软件例程。B1S存储在某种类型的只读存储器中,诸如ROM、PROM、EPROM、EEPROM等,使得当计算机网络设备11被激活时能够执行B1S。
[0042]当计算机网络设备11在工作中时,处理器41配置成执行在存储器42中存储的软件,以把数据传递到存储器42和从存储器42中传递数据,并且一般地根据软件控制计算机网络设备11的操作。系统100和0/S 51被处理器41全部或部分地读取,可能在处理器41中缓冲,然后执行。
[0043]如在图2中所示出的,当通信传输协议系统100用软件实现时,应当注意,通信传输协议系统100可以包含在任何计算机可读介质中用于被指令执行系统、装置或者设备使用或者与其结合使用,诸如基于计算机的系统、包含处理器的系统、或可以从指令执行系统、装置或设备中获取指令并且执行这些指令的其它系统。
[0044]如本领域技术人员将理解的,本发明的各个方面可以实现为系统、方法或计算机程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、驻留软件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。此外,本发明的各个方面可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,所述计算机可读介质中包含计算机可读的程序代码。
[0045]在本文件的上下文中,“计算机可读介质”可以是任何可以存储、传递、传播或者传输用于由指令执行系统、装置或设备使用或者与其结合使用的程序的手段。计算机可读介质可以是例如但不限于电、磁、光、电磁、红外线、或半导体系统、装置、设备、传播介质、或可以包含或存储计算机程序用于由计算机相关的系统或方法使用或与其结合使用的其它物理设备或手段。
[0046]计算机可读介质的更具体的例子(非穷举的列表)包括以下:具有一个或多个导线的电连接(电子)、便携式计算机盘(磁或光)、RAM (电子)、R0M (电子)、EPR0M、EEPROM或闪存(电子)、光纤(光)、便携式CD-R0M、CD R/W(光)。应注意的是,计算机可读介质甚至可以是纸张或其它合适的介质,其中程序在其上打印或打孔(如在纸带、打孔卡中等),这是因为程序可通过例如对纸张或其它介质的光学扫描以电子方式捕获,然后加以编译、解释、或者如果需要以其他合适的方式进行处理,然后存储在计算机存储器中。
[0047]计算机可读的信号介质可以包括例如在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式的任意一种,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,所述计算机可读介质可以传递、传播或者传输用于由指令执行系统、装置或者设备使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光纤电缆、RF等,或者上述的任意合适的组合。
[0048]在可替换的实施例中,其中通信传输协议系统100用硬件实现,通信传输协议系统100可以用以下技术中的任何一种或组合实现,这些技术中的每一种在本领域中都是众所周知的:具有用于在数据信号上实现逻辑功能的逻辑门的离散逻辑电路、具有合适的组合逻辑门的专用集成电路(ASIC)、可编程门阵列(PGA)、现场可编程门阵列(FPGA)等。
[0049]下面将参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明的各方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些计算机程序指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。
[0050]如所指出的,根据本发明的实施例,计算机网络设备11的实施例包括利用层2(L2)传输协议和机制在数据链路层(0SI模型的层2)处理和路由数据的多端口网络设备。系统100在设备11中的一种实现包括用于诸如分布式架构协议(DFP)系统的分布式系统体系结构的基于以太网的L2传输(EL2T)通信协议系统(在一个例子中,系统10包括DFP系统)。在一种实施例中,EL2T系统充当传输协议模块的逻辑替换,其中利用EL2T系统的系统(节点)可以与其它系统进行通信而不必担心实际的通信细节,诸如在传送中使用的分组结构。
[0051]在包括计算机网络设备11的DFP系统中,连接到DFP系统的所有节点都利用EL2T系统,其提供包括传送失败检测和重传的通信服务。EL2T系统向上层协议(例如,ULP 99)提供与其它节点通信的有效机制。此类ULP向EL2T系统注册以获得服务,并且请求如本文所述的EL2T系统处理的通信服务。
[0052]图3根据本发明的实施例示出了用于在DFP网络中的节点之间进行数据通信的过程50的流程图。根据处理块51,在层二(L2)网络设备中,从源节点接收分组通信服务请求。
[0053]根据处理块52,响应于该请求,注册所述源节点为用于分组通信服务的客户端节点(由源节点提供的回调函数被注册用于接收来自系统的传送状态信息)。在一种实施例中,根据处理块53,注册源节点用于分组通信服务还包括维护事务跟踪数据结构,其包括在客户端列表中用于所述源节点的客户端条目。对于每个客户端条目,在目的节点列表中有一个或多个目的条目,其中每个目的条目对应于用于所述源节点的目的节点。对于每个目的条目,有对应于在所述源节点与对应于所述目的条目的目的节点之间的待发分组通信的分组事务列表。
[0054]根据处理块54,使用传送队列,用于使来自相应的注册的源节点(S卩,客户端节点)的分组排队用于传送。
[0055]根据处理块55,对于分组传送,向用于传送的每个分组附加报头,其中报头包括通信协议信息(基于分组通信状态更新事务跟踪数据结构)。
[0056]根据处理块56,选择与目的节点相关联的接口端口用于利用所选的接口端口经通信链路把分组从相应的源节点传送到目的节点。
[0057]根据处理块57,经所选的接口把一个或多个分组从队列中传送到一个或多个目的节点。
[0058]根据处理块58,在分组接收中,从一个或多个目的节点接收分组。使用接收队列,用于使来自相应于注册的源节点的目的节点的分组排队。基于接收到的分组通信状态更新事务跟踪数据结构。
[0059]根据处理块59,从目的节点接收到的分组在用于相应的源节点的接收队列中排队。
[0060]根据处理块60,每个接收到的分组被转发到相应的注册的节点(使用由注册的源节点提供的回调函数为对应于注册的源节点的分组提供传送信息)。
[0061]图4根据本发明的实施例示出了在包括多个功能层的通信栈中用于EL2T系统100的通信协议体系结构。图5根据实施例发明示出了用于EL2T系统100的执行和数据模型。EL2T系统包括两个主通信模块,一个用于数据传送(TX层101)并且另一个用于数据接收(RX层102)。每次ULP 99向EL2T系统100注册服务时,EL2T系统100就创建客户端节点151。每个客户端节点151对应于向EL2T系统100注册服务的ULP 99。
[0062]每个客户端节点(客户端节点)151具有一个或多个与其相关联的cpu节点(Cpu-节点)152。Cpu节点152指定一个目的节点用于与客户端节点151 (对应于注册的ULP)进行通信。一个客户端节点151可能需要同时与系统10中的多个目的节点通信。因此,EL2T系统为每个目的节点创建Cpu节点152。为了为每个Cpu节点152跟踪传送(TX)和接收(RX)事务,EL2T系统分别利用TX事务列表(TX-事务列表)152T和RX事务列表(RX-事务列表)152R。
[0063]在处理过程中,TX层101的TX线程(进程)解析所有cpu节点的所有TX事务列表,并且RX层102的RX线程处理所有cpu节点的所有RX事务列表。TX和RX线程代表注册的ULP检查分组传送的状态、超时、和按需重传。如果重传的数量超过阈值,则向在EL2T系统注册服务的相应的ULP报告传送失败。
[0064]在一种实施例中,EL2T系统提供用于DFP系统的、具有高效率、低开销、低延迟的传输协议,并且作为在诸如刀片交换机应用的分布式系统体系结构中的可靠的层2通信传输协议。在一个例子中,EL2T协议提供用于DFP实现的传输协议,把分组当作字符缓冲区而无需用于通信的任何分组结构的知识。因此,根据本发明的实施例,EL2T系统充当用作在通信栈中与多个设备进行通信的传输工具的传统通信层的逻辑替代。EL2T系统掩盖了实际的通信如何从所述多个设备中发生的细节(accounting)。
[0065]执行模型
[0066]需要EL2T服务的ULP ( S卩,客户端)通过诸如调用注册模块120的el2t_register O函数向EL2T系统100的服务注册模块120注册以获得所述服务。客户端传递clientld和用于该客户端的回调例程(客户端节点在注册时被创建(图5))。在注册之后,客户端可以开始发送和接收EL2T分组。用NULL回调例程注册的客户端不能接收EL2T分组,因为回调例程是将负责处理那些接收到的分组的例程。
[0067]如所指出的,在一种实施例中,EL2T系统的EL2T协议在通信操作中利用两个通信模块(TX层101和RX层102)。TX层101实现传送进程(TX线程)并且RX层102实现接收进程(RX线程)。在一个例子中,TX线程包括pthread EL2T_TX,并且RX线程包括pthreadEL2T_RX。当系统启动时,所述进程被静态地创建。
[0068]TX线程负责在通信链路上把消息(例如,分组)从ULP 99 ( S卩,客户端节点151)传送到目的节点105、启动计时器以等待ACK(确认)消息并且如果没有及时收到ACK则重传该消息。在一个例子中,目的节点105包括图1中的系统15。RX线程负责从目的节点105接收消息并且继续把它转发到为了获得那个消息的各个客户端节点151。当RX线程接收到客户端节点151响应于转发消息的ACK时,RX线程取消所述的计时器并且利用唤醒(wake-up)消息(例如,ST_MSGCMD_WAKEUP)唤醒发起分组传送的相应的线程。该唤醒消息指示消息通信操作是失败还是成功。
[0069]在一个例子中,EL2T系统100基于优先级维护排序的注册的客户端151列表150,以及用于每个客户端151的Cpu节点152列表。Cpu节点列表作为用于客户端的client_cpu数据结构的阵列维护。用于每个阵列条目的Cpu-相关的信息包括标识Cpuld,这是指示它当前是否是有效条目的标志;RX事务队列(RX队列)106和TX事务队列(TX队列)107。CpuId和相应的关键字在由诸如交换机发现协议(SDP)的较高层协议管理的Cpu-数据库中维护。
[0070]RX队列对应于RX线程,并且TX队列对应于TX线程。RX线程和TX线程始终准备好执行它们的功能,但不处于忙等待。RX线程和TX线程中的每一个都等待其各自的计数信号,其中计数信号每当消息排到其队列(即,分别为RX队列和TX队列)时递增并且相应地当消息从队列移出并处理后递减。
[0071]根据本发明的路径选择层(PSL) 109从目的节点接收分组。从PSL 109接收的EL2T分组在相应的RX队列106中排队,其中该分组依次被RX线程处理。
[0072]利用ClientId和CpuId确定用于要传送的分组的合适的TX队列和用于接收到的分组的合适的RX队列,其中ClientId和CpuId可以从用于数据传送(TX)的调用进程或用于数据接收(RX)的分组中得到。
[0073]TX线程通过执行分组传送(即,派发给合适的PSL应用编程接口(API))处理分组事务,并且按需重传。在一个例子中,在相应的ULP收到失败声明之前尝试三次重传。重传包括当传送时启动定时器,其中如果在时间限制内从目的节点接收到ACK,则RX线程取消该定时器。否则的话,定时器到期再次通过TX线程触发重传。
[0074]对于给定的(Clientld, CpuId)对,只能有一个分组传送待完成。因此,对于下一个分组的传送,当已传送的分组还没有确认或声明为失败时,即使下一个分组可能已被排在TX队列中,也不进行尝试。
[0075]分组传送
[0076]通过为所有客户端节点151检查队列107寻找需要被传送的事务,TX线程选择下一步需要处理哪个分组事务。在把所选的事务继续进行传送之前,TX线程等待诸如tx_cnt_semaphore的计数信号。当计数信号指示TX线程可以继续进行时,TX线程利用存储在minClientld中的clientld使所选的事务以被处理,其中minClientld按优先级的顺序维护第一 clientld。
[0077]对于分组事务,TX线程向来自客户端节点151的到来分组110附加EL2T报头(Hdr),其中EL2T报头包括用于EL2T的协议类型-长度-值(type-length-value) (TLV),以及跟踪clientld、事务号等的进一步的信息。结果产生的EL2T分组IlOE包括所述报头和来自到来分组的有效载荷信息。在数据通信协议中,可选的信息可被编码为协议中的TLV元素。
[0078]TX线程利用诸如PSL_tx API的PSL 109的应用接口传送EL2T分组110E、启动所述定时器、把事务状态改变成IN_PR0GRESS并且维护计数信号。如果事务处于COMPLETED状态,则TX线程唤醒由客户端151传递的注册用于分组IlOE的分组传送的调用线程(即,回调例程)。然后,TX线程从用于客户端节点151的事务列表152T中删除该事务(并且从队列中移除传送的分组)。
[0079]在定时器到期时,如果所述计数信号没有超过诸如MAX_RETRY的阈值,则当定时器启动时传递的定时器回调例程触发下一个条目并且如果需要则重启定时器。
[0080]一旦所选的事务被处理,TX线程就为了下一个事务按优先级顺序前进到下一个客户端节点151 (如果minClientld没改变)或者前进到改变的minClientld。以此类推。
[0081]分组接收
[0082]PSL层109使用分组信息(例如,来自接收到的分组111)以使分组经回调例程排队到合适的RX队列106中,其中回调例程是当为获得EL2T服务向EL2T系统100注册时由客户端节点151提供的。
[0083]RX线程检查RX队列106并且一个接一个地处理它们中的RX事务。RX线程通过从RX队列106中选择分组,遵循与TX线程中类似的步骤来确定首先处理哪个客户端节点151。如果所选的分组是ACK请求,则RX线程取消由TX线程设置的相应的传送计时器,并且把相应的TX事务标记成COMPLETED。如果所选的分组不是ACK请求,则RX线程使相应的ACK分组排在用于相关联客户端节点151的TX队列107中并且调用由相关联的客户端节点151提供的回调例程(这个回调例程是当客户端为获得EL2T服务注册时传递的)。
[0084]分组分配
[0085]EL2T系统100还包括提供存储器管理API用于存储器分配函数(例如,EL2T_alloc O)和重新分配(de-allocat1n)函数(例如,EL2T_free O)的存储器管理模块130。因此,EL2T系统管理它的缓冲区存储池131。分配函数用于ULP来要求为分组传送分配缓冲区。分配函数返回指向存储器块131B的缓冲区指针,其中ULP可以放置它的有效载荷。分配函数在缓冲区的前面为EL2T分组报头保留空间,其中只要ULP调用重新分配函数,ULP就不需要管理分配的空间。在一个例子中,EL2T系统100预分配多个要管理的存储器块。ULP使用重新分配函数释放分配的缓冲区。
[0086]与ULP通信
[0087]ULP为分组传送(B卩,TX层)经EL2T API层并且当接收到用于ULP的分组110时经回调函数(即,RX层)与EL2T系统通信。传送的完成由发送到调用线程的消息来指示。
[0088]ULP 还经 el2t_register O 和 el2t_unregister O 函数调用与 EL2T 系统 100 进行通信,其中这两个函数提供上述用于图4中服务注册模块的注册和取消注册服务。
[0089]ULP 还使用由 EL2T 提供的 el2t_pkt_malloc O 和 el2t_pkt_free O API,其提供上述与图4中的存储器管理模块相关的存储器分配和重新分配函数。
[0090]与PSL通信
[0091]EL2T系统100通过注册用于PSL层服务与PSL层109进行通信。EL2T系统100分别经由 PSL 层 109 提供的 psl_register O 和 psl_unregister O API 调用向 PSL 109 注册和取消注册。一般地,PSL层109帮助EL2T系统100确定当发出分组时,使用多个接口140中的哪一个,以及当分组到达时,向哪个客户端节点151发送分组。因此,ULP不需要关心使用哪个接口。所述接口的例子包括管理端口接口和数据端口接口(数据端口具有它自己的驱动程序并且管理端口具有它自己的驱动程序)。取决于目的地址,PSL层109确定采用哪条路径(例如,管理端口接口还是数据端口接口)。
[0092]对于向PSL层109注册而言,当向PSL层注册时,EL2T系统100传递它的协议类型,并且传递回调函数用于其自己接收消息。对于传送而言,EL2T系统100使用诸如psl_txO的函数。对于接收而言,EL2T系统100经由注册提供的回调函数通信。类似于EL2T,PSL是基于注册的服务。因此,EL2T是PSL的其中一个客户端,其中PSL通过协议标识符识别它的客户端。
[0093]状态机
[0094]对于事务列表152T、152R中的TX和RX事务,在一种实施例中,EL2T系统100利用状态机模型。当事务被建立时,事务排队并被标记为ENQUEUED状态。当事务正在被处理时,事务转移到IN_PR0GRESS状态。当等待-ACK/重传还在进行中时,该事务保持在那个状态。当执行完后(或达到最多尝试)时,该事务变成COMPLETED状态并且在下一轮中被删除。在一种实施例中,EL2T系统100维护每客户端节点151每Cpu节点152接收到的和传送的所有分组的统计。
[0095]数据结构
[0096]以下表1-7根据本发明的实施例说明被EL2T系统100和协议层(例如,图3_4)采用的示例数据结构和函数。表I示出了用于由EL2T系统管理的客户端节点的示例数据结构。
[0097]
typcdcf struct cI2t_clicnt J
intclient_id; /* 静态分配的 id*/
unsigned ini clicnt llags; /* 各 J1 端特>1^4件
例如:是还是不是pthread? */
int pr1rity;
cl2l_cpu_lcl2l_cpu[CPUDB_CPU_MAX]; /* W个 CPUlWd*/
el2t_client_cb ulp cb; /*用于该客户端的回调函数*/
void *eb—args;/*传递给回调函数*/
struct el2t—client ^ncxt, *prev; /* 容J1 端列灰*/
} el2t—client—t;
[0098]表1.
[0099]表2示出了用于与客户端相关联的CPU特定信息的示例数据结构。
[0100]
【权利要求】
1.一种用于在网络中的节点之间进行数据通信的网络交换系统,包括: 注册一个或多个源节点用于分组通信服务的服务注册模块; 把一个或多个分组从注册的源节点转发到一个或多个目的节点的传送模块;以及 从一个或多个目的节点路由一个或多个分组到注册的源节点的接收模块; 其中协议分组在层二(L2)的域中转发并且所述网络交换系统是具有L2或层3 (L3)能力的网络设备。
2.如权利要求1所述的系统,其中: 传送模块维护传送队列,用于使来自相应注册的源节点的分组排队用于传送;以及 传送模块向用于传送的每个分组附加报头,其中报头包括通信协议信息。
3.如权利要求2所述的系统,其中: 接收模块维护接收队列,用于使来自对应于注册的源节点的目的节点的分组排队。
4.如权利要求3所述的系统,其中: 当没有来自目的节点的回应分组传送的确认时,传送模块在向相应的注册的源节点声明传送失败之前至少重传一次分组。
5.如权利要求3所述的系统,其中: 响应于来自源节点的服务注册请求,服务注册模块注册由源节点提供的用于从所述系统中接收传送信息的回调函数。
6.如权利要求5所述的系统,其中: 传送模块利用由注册的源节点提供的回调函数提供对应于注册的源节点的分组的传送状态。
7.如权利要求3所述的系统,还包括: 选择与目的节点相关联的接口端口的选择模块,其中传送模块利用所选的接口端口经通信链路把来自相应的源节点的分组传送到目的节点。
8.如权利要求7所述的系统,其中选择模块接收来自目的节点的分组并且使该分组在用于相应的源节点的接收队列中排队。
9.一种在网络中的节点之间进行数据通信的方法,包括: 在网络交换系统中,响应于源节点的服务请求,注册所述源节点用于分组通信服务; 把一个或多个分组从注册的源节点转发到一个或多个目的节点;以及 从一个或多个目的节点接收分组并且把每个接收到的分组转发给相应的注册的节占.其中分组在层2的域中转发并且网络交换系统能够是层二(L2)或层三(L3)的网络设备。
10.如权利要求9所述的方法,其中注册源节点用于分组通信服务包括: 通过以下维护事务跟踪数据结构: 在客户端列表中维护用于所述源节点的客户端条目; 对于每个客户端条目,在目的节点列表中维护一个或多个目的条目,其中每个目的条目对应于用于所述源节点的目的节点;以及 对于每个目的条目,维护对应于在所述源节点和对应于所述目的条目的目的节点之间的待发分组通信的分组事务列表。
11.如权利要求10所述的方法,还包括: 维护传送队列,用于使来自相应的注册的源节点的分组排队用于传送; 向用于传送的每个分组附加报头,其中报头包括通信协议信息;以及 基于分组通信状态更新事务跟踪数据结构。
12.如权利要求11所述的方法,还包括: 维护接收队列,用于使来自相应于注册的源节点的目的节点的分组排队;以及 基于接收到的分组通信状态更新事务跟踪数据结构。
13.如权利要求12所述的方法,还包括: 响应于来自源节点的服务注册请求,注册由源节点提供的用于从系统中接收传送状态信息的回调函数。
14.如权利要求12所述的方法,还包括: 利用由注册的源节点提供的回调函数提供对应于注册的源节点的分组的传送状态。
15.如权利要求11所述的方法,还包括: 选择与目的节点相关联的接口端口,用于利用所选的接口端口经通信链路把分组从相应的源节点传送到目的节点。
16.如权利要求15所述的方法,还包括: 从目的节点接收分组并且使所述分组在用于相应的源节点的接收队列中排队。
17.如权利要求16所述的方法,其中: 网络包括分布式架构协议系统;以及 所述方法还包括为了低的分组处理开销及可靠性,为L2分组执行重传和确认。
18.一种用于在网络中的节点之间进行数据通信的计算机程序产品,包括: 具有计算机可读程序代码包含其中的计算机可用介质,其中当计算机可读程序代码在计算机上执行时,使得计算机执行的操作包括: 在网络交换系统中,响应于源节点的服务请求,注册所述源节点用于分组通信服务; 把一个或多个分组从注册的源节点转发到一个或多个目的节点;以及 从一个或多个目的节点接收分组并且把每个接收到的分组转发到相应的注册的节占.其中分组在层2(L2)的域中转发并且网络交换系统能够是L2或层三(L3)的网络设备。
19.如权利要求18所述的计算机程序产品,其中程序代码进一步使得计算机执行的操作还包括: 通过以下维护事务跟踪数据结构: 维护用于所述源节点的客户端列表中的客户端条目; 对于每个客户端条目,在目的节点列表中维护一个或多个目的条目,其中每个目的条目对应于用于所述源节点的目的节点; 对于每个目的条目,维护对应于在所述源节点与对应于所述目的条目的目的节点之间的待发分组通信的分组事务列表。 维护传送队列,用于使来自相应的注册的源节点的分组排队用于传送; 向用于传送的每个分组附加报头,其中报头包括通信协议信息;及 基于分组通信状态更新事务跟踪数据结构。
20.如权利要求19所述的计算机程序产品,其中程序代码进一步使得计算机执行的操作还包括: 选择与目的节点相关联的接口端口,用于利用所选的接口端口经通信链路把来自相应的源节点的分组传送到目的节点; 维护接收队列,用于使来自相应于注册的源节点的目的节点的分组排队; 接收来自目的节点的分组并且使所述分组在用于相应的源节点的接收队列中排队; 基于接收到的分组通信状态更新事务跟踪数据结构; 注册由源节点提供的用于接收来自系统的传送状态信息的回调函数;以及 利用由注册的源节点提供的回调函数提供对应于注册的源节点的传送信息。
【文档编号】H04L12/28GK104205735SQ201380017260
【公开日】2014年12月10日 申请日期:2013年3月27日 优先权日:2012年3月29日
【发明者】K·G·坎贝尔, N·戈什, 吕达人, D·G·卡马什, N·穆克和吉, V·潘迪, S·安安沙兰, N·皮撒姆巴兰, C·门敦, S·班尼 申请人:国际商业机器公司