CN101120424A - 在高速网络应用中使用rx fifo缓冲区处理rx信息包的系统与方法 - Google Patents

在高速网络应用中使用rx fifo缓冲区处理rx信息包的系统与方法 Download PDF

Info

Publication number
CN101120424A
CN101120424A CNA2005800357446A CN200580035744A CN101120424A CN 101120424 A CN101120424 A CN 101120424A CN A2005800357446 A CNA2005800357446 A CN A2005800357446A CN 200580035744 A CN200580035744 A CN 200580035744A CN 101120424 A CN101120424 A CN 101120424A
Authority
CN
China
Prior art keywords
information
packets
packet
data
processing
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CNA2005800357446A
Other languages
English (en)
Other versions
CN101120424B (zh
Inventor
约翰·重人·美浪
罗宾·Y·耶西罗
西恩·E·黄
迈克·沃德·约翰逊
姆鲁杜拉·卡努里
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nvidia Corp
iReady Corp
Original Assignee
iReady Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by iReady Corp filed Critical iReady Corp
Publication of CN101120424A publication Critical patent/CN101120424A/zh
Application granted granted Critical
Publication of CN101120424B publication Critical patent/CN101120424B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/12Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
    • G06F13/124Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine
    • G06F13/128Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine for dedicated transfers to a network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/12Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor

Abstract

一种用于处理从网络接收的信息包的系统和方法。使用中,数据包和控制包从网络被接收。而且,对所述数据包的处理与对所述控制包的处理同步进行。

Description

在高速网络应用中使用RX FIFO缓冲区处理RX信息包的系统与方法
技术领域
本发明与网络通信有关,具体而言,与处理接收(RX)的信息包有关。
背景技术
传输减负引擎(TOE)包括在高速系统中优化输入输出量以及降低处理器使用的技术,这种技术正日益受到欢迎。TOE组件经常组合应用于各种类型的印刷电路板,如网络接口卡(NIC)、主机总线适配器(HBA)、主板,或其它任何所需的减负场合。
近年来,系统中通信速度的增加已经超出了处理器的速度。这就产生了输入/输出(I/O)瓶颈。处理器的设计目的主要是为了计算而非输入/输出,所以一般无法跟上网络中的流动数据。因此,数据流的处理速度要落后于网络速度。TOE技术通过从处理器和/或I/O子系统移除负载(即减负),从而解决了这个问题。
一种常向TOE进行减负的处理类型包括传输控制协议(TCP)信息包处理。TCP是同互联网协议(IP)一起使用的、用于在电脑与互联网之间以信息单元形式传送数据的一套规则(协议)。IP负责处理数据的实际传递,而TCP则负责追踪切分过的单个信息包以确保通过互联网进行有效输送。
在高速网络中处理TCP信息包要求进行很多处理步骤。信息包可能不按次序到达,所以如需将数据按次序传输给一个应用,则必须进行储存。此外,对所接收信息包的处理必须能跟上网络连接的线路速度。
因此,需要一种能加速TCP及其它信息包处理的技术。
发明内容
本发明提供了一种用于处理通过网络所接收的信息包的系统与方法。在实际使用中,数据包与控制包通过一个网络被接收。此外,所述数据包与控制包的处理同步进行。
在一个实施例中,所述控制包可通过使用第一处理路径进行处理,而所述数据包可通过使用独立于第一处理路径的第二处理路径进行处理。
在另一实施例中,所述控制包的处理可以包括同步使用一个查询表与一个缓存区,以识别出同所述信息包相关联的正确的接口控制块。类似地,所述数据包的处理可以包括同步使用双重逻辑程序以识别一个同所述信息包相关联的正确的接口控制块。
在另一实例中,同所述信息包相关联的控制块可与其后信息包的处理同步被更新。
作为又一种选择,标签信息可预先附带于所述数据包。此类标签信息还可以在所述数据包在一个接收器(RX)先进先出(FIFO)缓冲区中缓冲的时候预先附带于所述数据包。另外,所述标签信息可包括相应信息包的类型,一个同相应信息包相关联的接口句柄,同相应信息包相关联的状态信息,和/或同相应信息包相关联的控制信息。
在使用中,所述数据包可通过使用一个RX FIFO缓冲区来进行缓冲。
附图说明
图1显示了一个实施例的网络系统。
图2显示了一个可用于执行一个实施例的架构。
图3显示了一个实施例中用于处理所接收信息包的特定架构的例子。
图4显示了一个实施例中用于处理所接收信息包的示范性前端模块。
图5显示了一个实施例中用于处理所接收信息包的示范性接收器后端模块。
图6显示了一个实施例中用于处理所接收信息包的示范性前端方法。
图7显示了一个实施例中用于处理所接收信息包的示范性后端方法。
图8显示了一个实施例中用于处理所接收控制包的示范性控制包处理方法。
具体实施方式
图1显示了一个实施例中的网络系统100。如图所示,提供了一个网络102。在本网络系统100的上下文中,网络102可以采取任何形式,包括但不限于一个局域网(LAN)、一个广域网(WAN)如互联网等。
连接于网络102的包括一个本地主机104,以及一个可通过网络102进行通讯的远端主机106。在本说明书的上下文中,此类主机104和106可以包括一个网络服务器、储存装置或服务器、桌上型电脑、膝上型电脑、手提式电脑、打印机或任何其它类型的软/硬件。应该注意,上述组件中的每一项以及任何其它未说明的装置也可通过一个或更多网络进行相互连接。
图2显示了一个可执行一个实例的示范型架构200。在一个实例中,架构200可代表图1中的主机104、106之一。然而也应注意,架构200可在任何所需的环境中执行。
例如,架构200可在一个通用电脑系统、一个电路板系统、一个专供娱乐的游戏控制台系统、一个机顶盒、一个网络系统、一个存储系统、一个特定的应用系统,或任何与网络102相连接的其它所需系统中执行。
如图所示,架构200包括多个通过一条总线202而互相连接的组件。包括至少一个用于处理数据的处理器204。而所述处理器204可采取任何形式,如在一个实例中,其可以是一个中央处理器(CPU),一个图形模块、一个芯片组(即一组能执行相关功能、可独立运行或出售的集成电路单元)的形式,这些形式的组合,或任何其它形式的集成电路。对于图形模块,此类集成电路可包括一个转换模块、一个照明模块、及一个光栅化模块。每个上述模块可以位于单个的半导体平台上以形成一个图形处理单元(GPU)。
还可包括与处理器204进行通信以储存数据的处理系统存储器206。该处理器系统存储器206可采取机载或离机式随机存储器(RAM)、一个硬盘、一个可移除式存储驱动器(如一个软盘驱动器、一个磁带驱动器、一个致密光盘驱动器等形式),和/或任何所需的、其它类型的可储存数据的存储器。
在使用中,程序或控制逻辑算法可选择性地储存于处理器系统存储器206中。在执行时,此类程序使架构200能执行各种功能。当然,架构200可以简单地直接在硬线连接的逻辑闸层次电路中执行。
此外,还显示了与处理器204互相通信的传输减负引擎212以及网络(如图1中的网络102)。在一个实施例中,所述传送减负引擎212可保持通过总线202与处理器204的通信。然而,所述传输减负引擎212也可通过任何提供两者间通信的机构保持同处理器204的通信。所述传送减负引擎212可包括一个传输(如TCP/IP)减负引擎(TOE),系统,或任何能管理在网络中传输的数据的集成电路。
虽然实例中仅显示了利用单条总线202来提供上述组件之间的通信,应理解,可使用任何数目的总线(或其它通信机构)来提供组件之间的通信。举一个例子,可以使用一条额外的总线来提供处理器204与处理器系统存储器206之间的通信。此外,在一个实例中,任何图2中所示两个或多个的组件可以整合入单块集成电路之中。
在操作中,传输减压引擎212、处理器204和/或软件用于处理通过一个网络(如图1中的网络102)所接收的信息包。根据一个实施例,数据包与控制包通过一个网络接收。此外,所述数据包的处理与所述控制包的处理同步进行。
在本说明书的上下文,“数据包”是指任何用于进行数据通信的信息包,而“控制包”是指任何具有控制网络通信性能的信息包。此外,“同步”是指所述数据包与控制包的任何方面得到处理的步骤,这种处理至少部分同时进行。由此,所收到信息包的处理效率得到了提高。
在另一个实施例中,所述信息包的处理可以包括同步使用双重逻辑和/或多重数据结构(如一个查询表与缓存区等),以识别一个与所述信息包相关联的正确的接口控制块(CB)。作为一种选择,在此类搜寻模式中(如当此类CB得到识别时),如果正确的接口控制块不在缓存区中,正确的接口控制块可从一个主存储器中取回,此时在查询模式下取回的正确接口控制块并不储存于缓存区。在本说明书的上下文种,一个CB可以包括任何能够被用于追踪一个连接尝试和/或连接的信息。
通过使用能首先正确地识别CB的数据结构的识别结果,上述识别过程得到加速。此外,通过使用双重逻辑,可同时对多个信息包执行CB识别过程,由此提供进一步的处理加速。
作为另一种选择,标签信息可以预先附加于信息包(如数据包和/或控制包等)。此类标签信息还可以在所述数据包在一个接收器(RX)先进先出(FIFO)缓冲区中缓冲的时候预先附带于所述数据包。通过预先附加标签信息,当前述CB识别进行的时候,所收到的信息包可以被储存。此外,作为一种选择,可能不需要一个独立的、用于存储标签信息的缓冲区。
在另一个实施例中,随着额外信息包的收取,CB可以进行更新。这样,在使用中,一个同首个信息包相关联的CB可以得到更新。此外,在至少同首个信息包相关联的CB的更新启动之后以及完成更新之前,可以启动第二个信息包的处理,从而提高了性能。这样,信息包的处理可以与CB的更新同步进行,从而降低了在一个过程中出现瓶颈并在另一个中制造瓶颈的可能性。
以下将给出更多关于上述实施例的可选特性与示范实例的细节。应该注意,以下细节仅用于说明,不应被认为起到任何限制作用。
图3显示了一个实施例中用于处理所接收信息包的示范性架构300。作为选择,所述架构300可以在图2的示范架构200的环境下执行。当然,也应该注意架构300可在任何所需的环境下执行。
如图所示,提供了多个介质存取控制(MAC)RX缓冲区302,用以从多个网络102处接收数据包和控制包。应注意,RX缓冲区302对于多个网络102不是必须的。一个实例可能包括用于单个网络的一个缓冲区。此类MAC RX缓冲区302支持一个以太网RX306,而其又反过来支持互联网协议(IP)RX 310和一个异常处理器314。所有的IP信息包都送往IP RX 310,而所有其它信息包都送往异常处理器314。
在IP RX 310之内,信息包IP报头被解析。然后所有互联网协议安全(IPSEC)协议信息包被发送至一个IPSEC RX处理器308并存储于一个IPSEC RX缓冲区304,然后所有的TCP或UDP信息包被发送至TCP RX前端模块316。所有其它信息包都被发送至异常处理器314。一个多路复用器312在来自IP RX310的正常TCP/UDP信息包与来自IPSEC RX处理器308的经处理IPSEC信息包之间做出选择。
在使用中,TCP RX前端模块316对接收到的TCP信息包进行解析以决定一个所接收的信息包是否包含有TCP数据或者是一个TCP控制包。之后每个信息包类型会被提供独立的处理路径。在这里,信息包处理效率得到提升,其方式如上文所述。此外,信息包的处理可以包括同步使用双重逻辑和/或多重数据结构【如一个查询表(参见CB查询表318)及一个CB缓存区(参见CB数据缓存区324),等】,以识别一个与所述信息包相关联的正确接口CB。
然而,由于上述的原因,在寻找与信息包相关联的相应CB的同时,数据包被储存于MAC RX FIFO缓冲区322。在数据包被储存且CB查询完成之后,标签信息可以预先附加于位于MAC RX FIFO缓冲区322的数据包上。TCP RX前端模块316的另一个特性是,它可以更新一个同首个信息包相关联的CB。在至少同首个信息包相关联的CB的更新启动之后,以及在更新完成之前,可以开始第二个信息包的处理,由此处理性能得到了提高。
更多关于TCP RX前端模块316功能及选择性执行细节的信息将结合图4作进一步详细说明。
继续参照图3,TCP RX前端模块316支持一个异常处理器314。所有被识别为导致任何逻辑异常的信息包都被发送至异常处理器314。例如,同一个所接收的过滤设定相匹配的信息包,或包含不支持选项的信息包可能被发送至异常处理器314。如上所述,正常的数据包通过一个RX缓冲控制器320储存于MAC RX FIFO缓冲区322。该RX缓冲控制器320接受来自异常处理器314或TCP RX前端模块316的存储信息包的请求,并在这两个来源之间做出主观选择。更多关于此类的互动信息将在下文作详细说明。
RX缓冲控制器320支持额外的MAC RX FIFO缓冲区322,它又反过来支持RX后端模块326。该MAC RX FIFO缓冲区322由此连接于前端模块与后端模块之间,为两者提供分界并将它们互相隔离。
如图3所示,TCP RX前端模块316向RX后端模块326指示有信息包可以在MAC RXFIFO缓冲区322内进行服务。RX后端模块326负责应用层处理,如互联网小型电脑系统界面(iSCSI)协议或任何其它所需的协议【如RDMA(远端数据记忆存取等)】,这在下文将显而易见。更多关于此类RX后端模块326功能的信息与可选择执行细节将结合图5作进一步详细说明。
最后,RX后端模块326使用分散-收集列表(SGL)334【和/或可能是存储描述符列表(MDL)】,匿名缓冲区列表328,以及直接记忆存取(DMA)逻辑程序330,在主机存储器(例如图2中的处理器系统存储器206、106)中存储收到的信息包。在本说明书的上下文种,一个SGL可以包括任何所提供的数据列表对象,用以说明所收到数据最终存储于存储器中的各种位置。
根据一个实施例,图4显示了用于处理所接收信息包的示范性TCP RX前端模块316。作为选择,TCP RX前端模块316可以在图3的示范架构300的环境下执行。然而也应注意,TCP RX前端模块316可以在任何所需的环境下执行。
如图4所示,TCP RX前端模块316从IP层接收数据(例如通过图3的IP RX 310等),并处理所述信息包或将其当作异常处理。为了达成这一点,提供了一个TCP RX解析器414和接口定位器模块402。作为选择,可以提供多个TCP RX解析器414与接口定位器模块402。为此,此处所公开的任何逻辑模块可以双重甚至是三重方式提供以提升处理效率。
在使用中,TCP RX解析器414负责解析所接收的TCP与数据包协议(UDP)信息包。作为一种选择,所有的UDP信息包可以作为异常送出(例如通过图3中的异常处理模块314等)或可以同TCP数据包类似的方式进行处理。作为另一种选择,一个UDP校验和可以加以核实,如果其已损坏,则该信息包可以被放弃。
对于TCP信息包,所有数据包都储存于一个RX FIFO缓冲区322中,而所有的控制包都被送至一个控制包队列404。这种安排可以通过检查TCP报头中的FLAG比特以及信息包长度来实现。由此,控制包可通过使用第一处理路径进行处理,而数据包则可使用独立于第一处理路径的第二处理路径进行处理。
如果信息包是一个数据包,接口定位器模块402可以计算出一个接口哈希(hash)值。通过背景,每个数据包同一对IP地址和一对TCP或UDP端口相关联。该哈希值可基于该IP地址和端口而生成(例如通过使用“接口4一数组等”)。
该哈希值然后可用于为CB查询表318制定索引。表1给出了一个CB查询表318的范例。
表1
哈希1/(存储器中接口CB1的地址1)
哈希2/(存储器中接口CB2的地址2)
哈希3/(存储器中接口CB3的地址3)
CB地址可用于识别存储器中适当CB的地址,并兼做同CB相关联的接口句柄识别器。CB一般包括此类接口句柄,以及其它信息如接口状态等。在CB结构内有一个指向下一个CB的域,它包含相同的所生成的哈希值。通过这种方式,带有冲突哈希值的接口可以被解决。
然后,根据将接口句柄同与当前信息包相关联的实际接口进行比较,确定同CB相关联的接口是否是正确的接口。例如,如果信息包中的4一数组与接口CB中的参数相匹配,则正确的CB就已经找到。如果不匹配,就从CB读取下一个连接的接口句柄,此接口CB就被调出。
这个取回下一个连接的接口句柄的过程继续进行,直到找到正确的接口CB,或者确定不存在可以同所接收信息包相关联的CB。作为一种选择,CB查询表318的大小可以是所支持接口的最大数量的两倍,以减少哈希冲突的数目,并可定位于外部存储器中。
在使用此种CB查询表318的同时,在CB数据缓存区324内进行了一次查询。CB数据缓存区324包含了最近使用过的“n”接口CB(32左右)。CB数据缓存区324进一步包含一个哈希关联表,它指示了存在于CB数据缓存区324内的每个CB条目所生成的哈希。接口定位器模块402随后可以查询CB数据缓存区324以确定是否一个匹配的CB哈希存在于CB数据缓存区324中。这样,可以在一个预定的时间内(如生成哈希的一个时钟)确定是否有可能的CB匹配存在于CB数据缓冲区324中。
通过使用首次正确识别CB的数据结构的识别结果(即CB查询表318或CB数据缓存区324),上述识别过程得到加速。例如,当CB不在CB数据缓存区324内时,找到正确接口所需的最大存储器读取数可以通过等式#1得出。
等式#1
时钟数#=1+p(n),其中:
首次读数来源于CB查询表318查询
■n是该特定哈希的CB哈希冲突的数目,且
■p是从一个CB条目中读取接口端口与IP地址所需的时钟循环的数目
如果CB位于CB数据缓存区324,则找到CB所需的时钟最大数目由等式#2给出。
等式#2
时钟数#=m,其中:
■m是指具有特定哈希的CB数据缓存区324中CB的数目
由于缓存区总线的宽度尺寸良好(如128比特等),这些参数可以从CB数据缓存区324内快速读取。
作为进一步的特性,当接口定位器模块402正在查找由CB查询表318所参照的CB时,CB数据缓存区324可以允许一个特殊的全程读取模式。在这个特殊的读取模式中,所要求的CB首先被检查,以确定其是否定位于CB数据缓存区324之内。如在,其内容可立即返回。但是,如果其不在CB查询表318中,可从主CB存储器中读取,但在这个模式中,CB不被拖入CB查询表318中。这是因为此时的查询逻辑还在寻找同所接收的信息包相关的CB。一旦正确的CB被定位,同该CB相关联的句柄被传递到TCP RX状态控制器412,由后者通过CB数据缓存区324读取该CB。此时,该CB从主CB存储器中取回,并放入CB数据缓存区324。
在进行CB查询的同时,数据包存入RX FIFO缓冲区中。这样,对于大于预定尺寸的数据包来说(如80字节等),找到合适的CB所需的平均损失时间保持最低。由于找到正确的CB是一项限时任务,这个逻辑(即TCP RX解析器414和/或接口定位器模块402等)可以在TCP RX前端模式316中双重提供(或甚至以三重形式提供),以使从IP层所接收的多重信息包可以被同时处理。
这就允许逻辑程序进行前瞻操作,在第一个信息包仍在处理中时就开始为下一个信息包查询CB。一旦找到CB,并获取其内容,信息包的处理(即决定如何处置信息包等)在几个时钟周期内完成。
回到接收处理,如果正确的CB不在CB数据缓存区324中,则从主CB存储器中对其读取,同时将其放入CB数据缓存区324。如果CB早就在CB数据缓存区324中,它可直接读取。接口状态,控制比特,以及参数(包括SEQ与ACK数目等)都可通过使用CB获得。
一旦所有的CB参数都已取回,根据接口的状态,信息包的处理可在一个预定的时间内完成(如大约2个时钟周期)。因此,对于大于预定尺寸的数据包(例如平均300字节),处理可以在数据被储存于RX FIFO缓冲区322之前就已完成。即使CB需要从CB主存储器中获取,这也可能适用。如果CB早就在CB数据缓存区324之内,即使更小的数据包也可在信息包处理所需的最小额外时间内得到处理。
标签信息被预先附加于RX FIFO缓冲区322的每个信息包中。此标签信息可以包括信息包类型的信息(如异常,TCP数据包等),与此相关的接口句柄,和/或其它控制与状态信息。所述标签信息可以在整个信息包接收完毕并验证为有效后填入。
此类标签信息还可以在信息包在一个RX FIFO缓冲区322中缓冲的时候预先附加于信息包。通过以此方式预先附加标签信息,在进行前述CB识别的同时所接收的信息包可以被储存。此外,作为一种选择,有可能标签信息不需要独立的缓冲区。
TCP解析器的另外一个功能是验证TCP校验和。这是通过当信息包在接受解析以及被储存于RX FIFO缓冲区322(对于数据包)或控制包队列404(用于TCP控制包)时监控信息包来实现的。所得的校验和与由IP层所提供的假报头校验和相结合,产生最终的校验和。此项检查在IP模块的最后语段被读取后一段预定的时间框架内是有效的(即3个时钟)。如果信息包被认为由于TCP校验和错误或通过任何来自更低层的其它错误而损坏,信息包将会从RX FIFO缓冲区322或控制包队列404中去除。
继续参照图4,图中提供了一个TCP RX状态控制器412。TCP RX状态控制器412负责确定所接收的TCP数据包的行动路线。将信息包参数与接口CB内的参数进行核对。这包括检查信息包的序列号,接口的状态等等。
然而,信息包会被当作好信息包来处理。在整个分包被接收后,所有处理早就已经开始,仅需极少的进一步计算。如果信息包被确认为损坏,CB不被更新,且信息包将从RXFIFO缓冲区322或控制包队列404中去除。在这种情况下,每个缓冲区的写入指针都被重置到信息包被接收前的点。
一旦整个数据包都储存于RX FIFO缓冲区322中,TCP RX状态控制器412可通过一个TCP发送器模块(未显示)设定一个ACK。可以支持四种ACK模式:正常即刻ACK,正常延迟ACK,主机模式即刻ACK,以及主机模式延迟ACK。
在正常模式下,当数据包收到后并被认定为有效,ACK或延迟ACK立刻被请求或加入队列。在两个主机模式中,ACK只有在主机已经确认通过RX DMA收到数据后才会被请求或加入队列。
再次回到TCP RX解析器,逻辑块可以将纯TCP控制包(即不包含任何数据的此类信息包)从数据包中分离出来。这是因为纯控制包通常都是较短的信息包,且不对过程具有限时性。这些TCP控制包可以通过TCP报头中的FLAG比特设置并结合信息包的整个长度进行检测。如果信息包不含数据,而推送(PSH)比特不被设定,信息包被认为是一个纯控制包。
这些信息包被转移到图4中的控制包队列404。在信息包被转移时,每个信息包的校验和被计算,损坏的信息包被抛弃。接口哈希也被计算,并预先附加于另一部分的信息包中。然后一个控制包处理器416会从队列中读取信息包并对其进行处理。之后对控制包进行表2所示的操作。
表2
1、接口哈希在CB查询表318中进行查询。同时,哈希被检验以确定CB是否已经在CB数据缓存区324内。
2、假设CB早就在CB数据缓存区324内,读取适用的域。
3、如果CB不在CB数据缓存区324内,则将其从主CB存储器中取回并放置于数据缓存器324中。
4、然后由所接收信息包的类型及接口的当前状态确定所采取的行动。这些行动可以是(但不限于)以下的任意一种:
a、向TCP传输器请求一个响应
b、给主机发送一个状态信息
c、不理会信息包
d、将信息包作为一个异常向上发送
5、在决定所需的行动之后,CB相应地被更新。
接口的查询与读取,信息包的处理,CB的更新都是流水线操作,这样就使得前一个控制包还在处理时,处理器就可以开始寻找下一个接口。
图5显示了一个用于处理所接收信息包的示范性RX后端模块326。作为一种选择,改RX后端模块326可以在图3的示范性架构300中执行。然而也应注意,改RX后端模块326可以在任何所需的环境下执行。
一旦信息包完全储存于RX FIFO缓冲区322中,且信息包缓冲区报头已写满,RX后端模块326就开始对其进行处理。通过使用一个数据排列与RX缓冲区报头解析模块502,RX后端模块326开始解析并剥离数据包缓冲区报头。这向RX后端模块326告知了信息包的类型(即异常或TCP数据包),同信息包相关联的CB句柄,及其它状态与控制信息,如上所述。在一个实施例中,报头的长度可以是256比特。
在信息包缓冲区报头被解析并剥离之后,信息包被重排。这个重排可能是需要的,因为对于正常的TCP(也可是UDP)数据包来说,信息包以太网,IP,以及TCP报头也被剥离。这些报头的剥离可能导致结果数据为非FIFO字符排列,而重排使得其后的逻辑模块对于信息包数据的处理更为容易。
在重新排列后,信息包可以选择性地通过应用特异性处理逻辑程序504。这个逻辑程序包括但不限于:执行iSCSI协议或远端直接记忆存取(RDMA)功能的逻辑程序。对于iSCSI支持来说,这个模块可执行iSCSI循环冗余检查(CRC)验证,iSCSI协议数据单元(PDU)报头解析,以及固定间隔标记(FIM)的移除。
所有异常信息包(来自网络堆栈的每一层)都按照异常缓冲区列表的指示被发送至主机存储器(即临时缓冲区,持有缓冲区,涡流缓冲区等)。这个异常列表(如图3的列表328等)由主机驱动器提供。该列表可随着缓冲区的使用而不断地被主机增加。取回异常缓冲区地址以及管理异常缓冲区列表由SGL处理逻辑506负责。
到达一个接口的定期TCP数据通常使用一个接口特异性SGL,以指定数据应存储于主机存储器中的哪个位置。SGL(即例如图3中的SGL 334等)由主机驱动器提供。列表在使用过程中可以不断地被主机增加。在本说明书的上下文中,一个SGL可以包括任何数据列表对象,这些对象用于说明所收到数据在存储器中最终存储的各种位置。当数据在接口被接收,同该接口相关的SGL不包含任何有效的缓冲地址,所收到的数据也通过使用异常缓冲区列表被发送至主机存储器。SGL的管理也由SGL处理逻辑程序506处理。
对于正常的TCP数据包来说,SGL条目首先从SGL存储器334取回。所接收信息包的序列号指明应在SGL的哪个部位存放该数据。这就能使即便是无序(OOS)的数据也能正确地排列。对于按次序接收的数据,只需从SGL一次读取即可获得用于储存数据的主机地址。
然后可以生成一个DMA请求,将数据加入处理系统存储器。DMA请求得到批准后,该数据从RX FIFO缓冲区322中读取并发送至一个主机DMA界面330(参见图3),在此处数据经过DMA步骤输入处理器系统存储器206内的指定地址。每个接口都可支持多重SGL,这样可以进行来回式操作。这使得主机驱动器能在一个SGL终结时尽快提供下一个SGL,而无需将数据转移至匿名缓冲区。
如果一个单个数据包横跨一个以上的SGL条目,在该信息包的第一个经过DMA处理时,下一个SGL条目可以被调出并处理。这样,在每个请求完成后可立即进行其后的DMA请求。
一旦DMA完成之后,可选择性生成状态信息,通知主机驱动器数据已到达。此时,通过使用一个TCP RX CB更新以及状态信息请求模块508,某些CB参数也被更新。
信息包报头的解析,SGL的获取,数据的DMA处理,以及CB的更新都可以是流水线操作。这就使得RX后端模块326可以开始处理下一个信息包报头,即使对于上一个信息包的DMA进程仍在完成过程中,从而保证了数据的最大通量。同样的,此处所公开的任何逻辑模块可双重或三重提供以提升处理效率。
图6显示了一个实例中用于处理所接收信息包的示范性的前端方法600。作为一种选择,方法600可以在图2所示的示范性架构200的环境下执行,或甚至在图3-5的示范性框架内进行。然而也应注意,方法600可在任何所需的环境下执行。此外,虽然各种不同的功能可以指定给示范性组件(如上文所述),各种不同功能可由任何所需的实体执行,理解这一点很重要。
图6描述了所接收的信息包上传至RX缓冲区(如图3中的RX FIFO缓冲322)的处理流程,然后集中于前端处理。
在操作602,一个互联网协议(IP)层指示一个接收的信息包是否可用。响应这一指示,在决定604,决定是否一个RX解析器(如图4中的RX解析器414)可用。
如果确定RX解析器不可用,方法600将等待一个可用的RX解析器。请注意操作606。如可用,在操作608,所接收的信息包被发送至可用的RX解析器。
如果一个RX解析器可用,则基于该信息包报头624所包含的参数,为该信息包生成一个哈希。然后RX解析器就检查该TCP报头,以确定信息包类型(见决定610),并解析信息包参数。如果该信息包是一个纯TCP控制包(即信息包不包含任何TCP数据),则该信息包将被发送至一个控制包队列(如图4中的控制包队列404)。见操作612。
如果该信息包确实包含TCP数据,在操作616与618中启动一次CB查询。该查询可以通过双重的数据结构同时进行(如CB查询表318与CB数据缓存区324等)。无论哪个路径首先结束,查询过程即告结束。然而,如果查询CB数据缓存区未能找到一个匹配的CB条目,逻辑程序将等待直到CB查询表查询结束,如操作620所示。在一个实施例中,未曾出现CB查询表无法找到CB,而该CB在CB数据缓存区内被找到的情况。
找到CB的同时,TCP数据存储于一个RX缓冲区(如RXFIFO缓冲区322等)。请注意操作614。一旦所有的数据都被写入,在操作622中,一个标签部分被附加于在RXFIFO中的数据部分。该标签包括信息包的参数(例如其是何种类型),以及从CB条目中获得的某些状态信息(如果有)。在标签被写入RX FIFO之后,特定的解析器即被释放以接收另一个收到的信息包。
图7显示了一个实例中的用于处理所接收信息包的示范性后端方法700。作为一种选择,方法700可以在图2中示范性架构200的环境下执行,或甚至在图3-5中的示范性架构中进行。另外,方法700可同图6中的前端方法600一起进行。
当然也应注意,方法700可在任何所需的环境下执行。此外,虽然各种不同的功能可以指定给各类示范性组件(如上文所述),各种不同功能可由任何所需的实体执行,理解这一点很重要。
图7描述了所接收信息包在一个RX缓冲区(如图3中的RX FIFO缓冲322)后的处理流程,然后集中于后端处理。
图7的流程起始于RX FIFO缓冲区(如RX FIFO缓冲322等)输出的数据可用。首先,在操作702与704,如果信息包可用,用于RX FIFO缓冲条目的报头部分被读取。这就向后端逻辑指明了数据包的类型,以及其它状态信息。
在信息包缓冲区报头被解析后,其与以太网、IP及TCP/UDP报头(用于减负连接所接收的信息包)一起被剥离,且该数据被重拍。见操作706。
然后该数据选择性地通过可选的分配特异性处理逻辑程序。见操作708。该逻辑程序即为iSCSI与RDMA支持处理被执行的地方。
如果信息包属于一个减负连接(例如一个CB条目被发现与该信息包参数相匹配),则进行一次检查以确定是否有可用于该数据的SGL缓冲区。请注意决定710。如果没有缓冲区可提供,该数据被DMA处理送至处理器系统存储器的接口缓冲区。这在操作712通过从中接口的一个SGL获得一个主机缓冲地址而实现,此后数据经过DMA处理送入处理器系统存储器。见操作716。
如果无接口缓冲区可提供,通过使用一个来自全域列表的异常缓冲区地址,该数据被DMA处理送至常规异常缓冲区(也位于处理器系统存储器中)。见操作714。然后一个通知被发送至主机,通知其有数据需要处理。
如果一个CB被用于信息包(根据决定718),该CB在操作722被更新。反之则无需额外的操作(如操作720中所示)。同时,后端逻辑程序可以开始处理来自RX FIFO缓冲区的下一个信息包。
图8显示了一个实例中的用于处理所接收信息包的示范性控制处理方法800。作为一种选择,方法800可在图2中示范性架构200的环境下执行,或甚至是在图3-5的示范性框架下执行。另外,方法800也可同图6与7的方法600与700一起执行。
然而也应注意,方法600可以在任何所需的环境下执行。此外,虽然各种不同的功能可指定给各类示范性组件(如上文所述),各种不同功能可由任何所需的实体执行,理解这一点很重要。
图8的方法800起始于一个控制包队列(如图4中的控制包队列404)输出的一个控制包可用。请注意操作802。第一个步骤是信息包缓冲区报头被解析。见操作804。该报头包含所生成的信息包哈希,以及同该控制包相关的其它状态信息。
随后,使用所取回的哈希值启动一次对匹配CB的查询。类似于处理数据包的前端逻辑程序所使用的图6的方法600,双重数据结构(如CB查询表318及CB数据缓存区324等)同时被问询。见操作806与808,然后在操作810等待结果。
如果根据决定812未发现有CB匹配所接收的TCP控制包,则该信息包操作816被预定通过DMA发送至主机,RX控制逻辑程序可以开始处理下一个来自该队列的控制包。在继续作业前,该逻辑程序不必等待控制包在操作824被DMA处理送至主机。
如果根据决定812发现一个能够匹配控制包的CB,则该信息包在操作814被处理。然后进行一次检查,决定是否接口CB需要根据对信息包的处理结果进行更新。见决定818。如该CB不需要更新,则该CB预定于操作820与822中进行更新。然后控制包逻辑程序可以开始处理下一个来自队列的控制包。同时,CB配合当前控制包被更新,此步骤如前所述。
虽然上文已对各种不同的实施例进行了说明,应该理解这些实施例仅是范例,并无任何限制作用。因此,所挑选实施例的广度与范围不应受任何上述示范性实施例所限定,而应仅根据以下各权利要求及其等同物所定义。

Claims (9)

1.一种用于处理从网络接收的信息包的方法,其特征在于包括:
通过一个网络接收的数据包和控制包;及
在处理所述控制包的同时处理所述数据包。
2.如权利要求1所述的方法,其特征在于,所述控制包通过第一处理路径进行处理,而所述数据包则使用独立于所述第一处理路径的第二处理路径进行处理。
3.如权利要求1所述的方法,其特征在于,所述信息包的处理包括同步使用一个查询表和一个缓存区,以识别一个与所述信息包相关联的正确的接口控制块。
4.如权利要求1所述的方法,其特征在于,所述数据包的处理包括同步使用双重逻辑以识别一个与所述信息包相关联的正确的接口控制块。
5.如权利要求1所述的方法,其特征在于,与所述信息包相关联的控制块的更新与其后信息包的处理同步进行。
6.如权利要求1所述的方法,其特征在于,标签信息被预先附加于所述数据包。
7.如权利要求6所述的方法,其特征在于,所述标签信息在数据包在接收器(RX)先进先出(FIFO)缓冲区中缓冲时预先附加于所述数据包。
8.如权利要求6所述的方法,其特征在于,所述标签信息选自:相应信息包的类型,与相应信息包相关联的接口句柄,与相应信息包相关联的状态信息,以及与相应信息包相关联的控制信息。
9.一种用于处理从网络接收的信息包的方法,其特征在于包括:
使用一个前端模块处理收到的信息包;及
使用一个后端模块处理收到的信息包;
其中一个接收器(RX)先进先出(FIFO)缓冲区连接于所述前端模块与后端模块之间,以在两者之间的提供分界。
CN2005800357446A 2004-10-19 2005-10-19 在高速网络应用中使用rx fifo缓冲区处理rx信息包的系统与方法 Active CN101120424B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/969,376 2004-10-19
US10/969,376 US7957379B2 (en) 2004-10-19 2004-10-19 System and method for processing RX packets in high speed network applications using an RX FIFO buffer
PCT/US2005/037941 WO2006045057A2 (en) 2004-10-19 2005-10-19 System and method for processing rx packets in high speed network applications using an rx fifo buffer

Publications (2)

Publication Number Publication Date
CN101120424A true CN101120424A (zh) 2008-02-06
CN101120424B CN101120424B (zh) 2011-09-21

Family

ID=36180692

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2005800357446A Active CN101120424B (zh) 2004-10-19 2005-10-19 在高速网络应用中使用rx fifo缓冲区处理rx信息包的系统与方法

Country Status (6)

Country Link
US (1) US7957379B2 (zh)
JP (1) JP2008517565A (zh)
KR (1) KR101018575B1 (zh)
CN (1) CN101120424B (zh)
TW (1) TWI407733B (zh)
WO (1) WO2006045057A2 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104054067A (zh) * 2011-03-30 2014-09-17 亚马逊技术公司 基于减负装置的数据包处理的框架和接口
CN104657555A (zh) * 2015-02-11 2015-05-27 北京麓柏科技有限公司 一种基于uvm验证方法学的toe的验证方法及平台
US9904568B2 (en) 2011-03-30 2018-02-27 Amazon Technologies, Inc. Frameworks and interfaces for offload device-based packet processing

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8396981B1 (en) * 2005-06-07 2013-03-12 Oracle America, Inc. Gateway for connecting storage clients and storage servers
WO2007006146A1 (en) * 2005-07-12 2007-01-18 Advancedio Systems Inc. System and method of offloading protocol functions
US8621030B2 (en) * 2006-09-28 2013-12-31 Intel Corporation Techniques to copy an operating system
CN101272378B (zh) * 2007-03-23 2011-05-11 国际商业机器公司 用于处理会话启动协议消息的方法和系统
FR2925190B1 (fr) * 2007-12-18 2009-11-20 Alcatel Lucent Procede et dispositif de communication entre plusieurs interfaces de connexion
WO2009093299A1 (ja) * 2008-01-21 2009-07-30 Fujitsu Limited パケット処理装置およびパケット処理プログラム
JP5333200B2 (ja) * 2009-12-25 2013-11-06 富士通株式会社 パケット通信制御装置、メモリアクセス制御装置及び情報処理システム
CN102006283B (zh) * 2010-10-21 2013-07-17 意法·爱立信半导体(北京)有限公司 数据传输的方法和装置
US8462780B2 (en) 2011-03-30 2013-06-11 Amazon Technologies, Inc. Offload device-based stateless packet processing
US20130346274A1 (en) * 2012-06-25 2013-12-26 Liquid Holdings Group, Inc. Electronic financial trading platform with real-time data analysis and reporting
US10057387B2 (en) 2012-12-26 2018-08-21 Realtek Singapore Pte Ltd Communication traffic processing architectures and methods
CN105052081B (zh) * 2012-12-26 2018-11-13 瑞昱新加坡有限公司 通信流量处理架构和方法
KR101854377B1 (ko) 2016-11-10 2018-05-03 고려대학교 산학협력단 고속 패킷 처리 시스템 및 그 제어방법
US11075848B2 (en) 2019-08-21 2021-07-27 Hewlett Packard Enterprise Development Lp Fast path for acknowledgement frames in wireless networks

Family Cites Families (197)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US212889A (en) 1879-03-04 Improvement in road-engines
US4807111A (en) 1987-06-19 1989-02-21 International Business Machines Corporation Dynamic queueing method
US4839851A (en) 1987-07-13 1989-06-13 Idaho Research Foundation, Inc. Programmable data path device
US5012489A (en) 1988-11-07 1991-04-30 Hayes Microcomputer Products, Inc. Method for sending a plurality of data channels over a single communications line
JP2986802B2 (ja) 1989-03-13 1999-12-06 株式会社日立製作所 プロトコル高速処理方法
US5303344A (en) 1989-03-13 1994-04-12 Hitachi, Ltd. Protocol processing apparatus for use in interfacing network connected computer systems utilizing separate paths for control information and data transfer
US5687314A (en) 1989-06-02 1997-11-11 Tele Digital Development, Inc. Method and apparatus for assisting data bus transfer protocol
US5163131A (en) 1989-09-08 1992-11-10 Auspex Systems, Inc. Parallel i/o network file server architecture
US5161193A (en) 1990-06-29 1992-11-03 Digital Equipment Corporation Pipelined cryptography processor and method for its use in communication networks
US5251205A (en) 1990-09-04 1993-10-05 Digital Equipment Corporation Multiple protocol routing
US5367643A (en) 1991-02-06 1994-11-22 International Business Machines Corporation Generic high bandwidth adapter having data packet memory configured in three level hierarchy for temporary storage of variable length data packets
AU1587592A (en) 1991-03-18 1992-10-21 Echelon Corporation Networked variables
US5307413A (en) 1991-07-19 1994-04-26 Process Software Corporation Method and apparatus for adding data compression and other services in a computer network
US6098188A (en) 1992-02-14 2000-08-01 Lucent Technologies Inc. Packet framer
US5742760A (en) 1992-05-12 1998-04-21 Compaq Computer Corporation Network packet switch using shared memory for repeating and bridging packets at media rate
US5877764A (en) 1992-10-23 1999-03-02 International Business Machines Corporation Graphical user interface for managing text i/o between a user and a parallel program
US5696899A (en) 1992-11-18 1997-12-09 Canon Kabushiki Kaisha Method and apparatus for adaptively determining the format of data packets carried on a local area network
EP0672277B1 (en) 1992-12-01 1998-05-13 Microsoft Corporation A method and system for in-place interaction with embedded objects
US5619650A (en) 1992-12-31 1997-04-08 International Business Machines Corporation Network processor for transforming a message transported from an I/O channel to a network by adding a message identifier and then converting the message
JPH0763161B2 (ja) 1993-01-05 1995-07-05 日本電気株式会社 マルチメディアパケット通信方式
WO1994023374A2 (en) 1993-03-30 1994-10-13 Ast Research Inc STROBOSCOPIC LOGIC FOR TRIGGERING SIMULATED BUS CONTROL CYCLES
US5596702A (en) 1993-04-16 1997-01-21 International Business Machines Corporation Method and system for dynamically sharing user interface displays among a plurality of application program
US5495480A (en) 1993-06-21 1996-02-27 Nec Corporation Packet transmission system having timer for circuit disconnection
US5621434A (en) 1993-08-11 1997-04-15 Object Technology Licensing Corp. Cursor manipulation system and method
US5426694A (en) 1993-10-08 1995-06-20 Excel, Inc. Telecommunication switch having programmable network protocols and communications services
US5802287A (en) 1993-10-20 1998-09-01 Lsi Logic Corporation Single chip universal protocol multi-function ATM network interface
US5625825A (en) 1993-10-21 1997-04-29 Lsi Logic Corporation Random number generating apparatus for an interface unit of a carrier sense with multiple access and collision detect (CSMA/CD) ethernet data network
JP3358254B2 (ja) 1993-10-28 2002-12-16 株式会社日立製作所 通信制御装置および通信制御用回路装置
JP3454828B2 (ja) 1993-11-02 2003-10-06 オブジェクト テクノロジー ライセンシング コーポレイション オブジェクト指向グラフィック・システム
BR9407962A (pt) 1993-11-02 1996-12-03 Paracom Corp Aparelho para processamento acelerado de transaçoes com base de dados de computador
US5524110A (en) 1993-11-24 1996-06-04 Intel Corporation Conferencing over multiple transports
WO1995015524A1 (en) 1993-12-02 1995-06-08 Taligent, Inc. Method and apparatus for displaying hardware dependent graphics in an object-oriented operating system
US5485455A (en) 1994-01-28 1996-01-16 Cabletron Systems, Inc. Network having secure fast packet switching and guaranteed quality of service
US5577105A (en) 1994-03-11 1996-11-19 U.S. Robotics, Inc. Telephone call routing and switching techniques for data communications
US6185619B1 (en) 1996-12-09 2001-02-06 Genuity Inc. Method and apparatus for balancing the process load on network servers according to network and serve based policies
US5519704A (en) 1994-04-21 1996-05-21 Cisco Systems, Inc. Reliable transport protocol for internetwork routing
US5650941A (en) 1994-09-07 1997-07-22 Intel Corporation Computer architecture for creating and manipulating displayable objects
US5870549A (en) 1995-04-28 1999-02-09 Bobo, Ii; Charles R. Systems and methods for storing, delivering, and managing messages
US5675507A (en) 1995-04-28 1997-10-07 Bobo, Ii; Charles R. Message storage and delivery system
US5664162A (en) 1994-05-23 1997-09-02 Cirrus Logic, Inc. Graphics accelerator with dual memory controllers
US5577172A (en) 1994-07-01 1996-11-19 Lasermaster Corporation High-capacity protocol for packet-based networks
US5485460A (en) 1994-08-19 1996-01-16 Microsoft Corporation System and method for running multiple incompatible network protocol stacks
US5905582A (en) 1994-11-14 1999-05-18 Canon Kabushiki Kaisha Image processing apparatus for processing image data in response to signals from an external apparatus
US5726769A (en) 1994-11-14 1998-03-10 Canon Kabushiki Kaisha Image processing apparatus capable of connecting external information processing terminal, and including printer unit and data processing unit
US5812951A (en) 1994-11-23 1998-09-22 Hughes Electronics Corporation Wireless personal communication system
JPH08180006A (ja) 1994-12-22 1996-07-12 Hitachi Ltd ネットワークインタフェースおよび計算機ネットワークシステム
US5566170A (en) 1994-12-29 1996-10-15 Storage Technology Corporation Method and apparatus for accelerated packet forwarding
US5598410A (en) 1994-12-29 1997-01-28 Storage Technology Corporation Method and apparatus for accelerated packet processing
US5577237A (en) 1995-01-23 1996-11-19 Tandem Computers, Incorporated Protocol timer and method of using same
US5680605A (en) 1995-02-07 1997-10-21 Torres; Robert J. Method and apparatus for searching a large volume of data with a pointer-based device in a data processing system
US5802278A (en) 1995-05-10 1998-09-01 3Com Corporation Bridge/router architecture for high performance scalable networking
US5625678A (en) 1995-05-24 1997-04-29 Microsoft Corporation Method and system for allowing switched voice and data communication among multiple application programs
US5734865A (en) 1995-06-07 1998-03-31 Bull Hn Information Systems Inc. Virtual local area network well-known port routing mechanism for mult--emulators in an open system environment
US5636371A (en) 1995-06-07 1997-06-03 Bull Hn Information Systems Inc. Virtual network mechanism to access well known port application programs running on a single host system
US5870622A (en) 1995-06-07 1999-02-09 Advanced Micro Devices, Inc. Computer system and method for transferring commands and data to a dedicated multimedia engine
US5754540A (en) 1995-07-18 1998-05-19 Macronix International Co., Ltd. Expandable integrated circuit multiport repeater controller with multiple media independent interfaces and mixed media connections
US5918051A (en) 1995-07-19 1999-06-29 Ricoh Company, Ltd. Object-oriented communication system with support for multiple remote machine types
US5666362A (en) 1995-07-25 1997-09-09 3Com Corporation Method and apparatus for asynchronous PPP and synchronous PPP conversion
US5701316A (en) 1995-08-31 1997-12-23 Unisys Corporation Method for generating an internet protocol suite checksum in a single macro instruction
US5699350A (en) 1995-10-06 1997-12-16 Canon Kabushiki Kaisha Reconfiguration of protocol stacks and/or frame type assignments in a network interface device
US5802306A (en) 1995-10-31 1998-09-01 International Business Machines Corporation Supporting multiple client-server sessions from a protocol stack associated with a single physical adapter through use of a plurality of logical adapters
US5778178A (en) 1995-11-13 1998-07-07 Arunachalam; Lakshmi Method and apparatus for enabling real-time bi-directional transactions on a network
US5826032A (en) 1996-02-12 1998-10-20 University Of Southern California Method and network interface logic for providing embedded checksums
US5909546A (en) 1996-03-08 1999-06-01 Mitsubishi Electric Information Technology Center America, Inc. (Ita) Network interface having support for allowing remote operations with reply that bypass host computer interaction
US5809235A (en) 1996-03-08 1998-09-15 International Business Machines Corporation Object oriented network event management framework
US5894557A (en) 1996-03-29 1999-04-13 International Business Machines Corporation Flexible point-to-point protocol framework
US5901287A (en) 1996-04-01 1999-05-04 The Sabre Group Inc. Information aggregation and synthesization system
US5815516A (en) 1996-04-05 1998-09-29 International Business Machines Corporation Method and apparatus for producing transmission control protocol checksums using internet protocol fragmentation
US5946487A (en) 1996-06-10 1999-08-31 Lsi Logic Corporation Object-oriented multi-media architecture
US5983332A (en) 1996-07-01 1999-11-09 Sun Microsystems, Inc. Asynchronous transfer mode (ATM) segmentation and reassembly unit virtual address translation unit architecture
US5920732A (en) 1996-07-01 1999-07-06 Apple Computer, Inc. System for preallocating additional larger buffer sizes in accordance with packet sizes of discarded packets that can't be stored in existing preallocated buffer sizes
US5754556A (en) 1996-07-18 1998-05-19 Teradyne, Inc. Semiconductor memory tester with hardware accelerators
US5956034A (en) 1996-08-13 1999-09-21 Softbook Press, Inc. Method and apparatus for viewing electronic reading materials
US5968161A (en) 1996-08-29 1999-10-19 Altera Corporation FPGA based configurable CPU additionally including second programmable section for implementation of custom hardware support
US5748905A (en) 1996-08-30 1998-05-05 Fujitsu Network Communications, Inc. Frame classification using classification keys
US5854750A (en) 1996-09-03 1998-12-29 Insession, Inc. System and method for processing transactions in an environment containing a number of object oriented applications
US5847698A (en) 1996-09-17 1998-12-08 Dataventures, Inc. Electronic book device
US5987582A (en) 1996-09-30 1999-11-16 Cirrus Logic, Inc. Method of obtaining a buffer contiguous memory and building a page table that is accessible by a peripheral graphics device
US6092229A (en) 1996-10-09 2000-07-18 Lsi Logic Corporation Single chip systems using general purpose processors
US6101543A (en) 1996-10-25 2000-08-08 Digital Equipment Corporation Pseudo network adapter for frame capture, encapsulation and encryption
US6230193B1 (en) 1996-10-31 2001-05-08 3Com Corporation Method and apparatus supporting network communications
US6034963A (en) 1996-10-31 2000-03-07 Iready Corporation Multiple network protocol encoder/decoder and data processor
US7035291B2 (en) 2001-05-02 2006-04-25 Ron Grinfeld TCP transmission acceleration
US6046980A (en) 1996-12-09 2000-04-04 Packeteer, Inc. System for managing flow bandwidth utilization at network, transport and application layers in store and forward network
US5941988A (en) 1997-01-27 1999-08-24 International Business Machines Corporation Session and transport layer proxies via TCP glue
EP0966815A4 (en) 1997-02-02 2001-12-12 Fonefriend Systems Inc INTERNET SWITCHING BOX, SYSTEM AND METHOD FOR INTERNET TELEPHONY
US6172990B1 (en) 1997-06-19 2001-01-09 Xaqti Corporation Media access control micro-RISC stream processor and method for implementing the same
US6076115A (en) 1997-02-11 2000-06-13 Xaqti Corporation Media access control receiver and network management system
US6247068B1 (en) 1997-03-07 2001-06-12 Advanced Micro Devices Inc. Winsock-data link library transcoder
US5818935A (en) 1997-03-10 1998-10-06 Maa; Chia-Yiu Internet enhanced video system
US6157956A (en) 1997-03-28 2000-12-05 Global Maintech, Inc. Heterogeneous computing interface apparatus and method using a universal character set
US5974518A (en) 1997-04-10 1999-10-26 Milgo Solutions, Inc. Smart buffer size adaptation apparatus and method
US5872919A (en) 1997-05-07 1999-02-16 Advanced Micro Devices, Inc. Computer communication network having a packet processor with an execution unit which is variably configured from a programmable state machine and logic
US5943481A (en) 1997-05-07 1999-08-24 Advanced Micro Devices, Inc. Computer communication network having a packet processor with subsystems that are variably configured for flexible protocol handling
WO1998050852A1 (en) 1997-05-08 1998-11-12 Iready Corporation Hardware accelerator for an object-oriented programming language
US6081846A (en) 1997-05-08 2000-06-27 Microsoft Corporation Method and computer program product for reducing intra-system data copying during network packet processing
US6330659B1 (en) 1997-11-06 2001-12-11 Iready Corporation Hardware accelerator for an object-oriented programming language
US6012961A (en) 1997-05-14 2000-01-11 Design Lab, Llc Electronic toy including a reprogrammable data storage device
US5935268A (en) 1997-06-03 1999-08-10 Bay Networks, Inc. Method and apparatus for generating an error detection code for a modified data packet derived from an original data packet
US6208651B1 (en) 1997-06-10 2001-03-27 Cornell Research Foundation, Inc. Method and system for masking the overhead of protocol layering
US5966534A (en) 1997-06-27 1999-10-12 Cooke; Laurence H. Method for compiling high level programming languages into an integrated processor with reconfigurable logic
US6173333B1 (en) 1997-07-18 2001-01-09 Interprophet Corporation TCP/IP network accelerator system and method which identifies classes of packet traffic for predictable protocols
US6397316B2 (en) 1997-07-24 2002-05-28 Intel Corporation System for reducing bus overhead for communication with a network interface
US6078736A (en) 1997-08-28 2000-06-20 Xilinx, Inc. Method of designing FPGAs for dynamically reconfigurable computing
US5999974A (en) 1997-08-29 1999-12-07 International Business Machines Corporation Internet protocol assists for high performance LAN connections
US6014699A (en) 1997-08-29 2000-01-11 International Business Machines Corporation Internet protocol assists for high performance LAN connections
US6151625A (en) 1997-09-10 2000-11-21 Schneider Automation Inc. Internet web interface including programmable logic controller for controlling output devices based on status of input devices
US5991299A (en) 1997-09-11 1999-11-23 3Com Corporation High speed header translation processing
US6172980B1 (en) 1997-09-11 2001-01-09 3Com Corporation Multiple protocol support
US6094657A (en) 1997-10-01 2000-07-25 International Business Machines Corporation Apparatus and method for dynamic meta-tagging of compound documents
US6061742A (en) 1997-10-10 2000-05-09 Nortel Networks Corporation Computer network adaptor
US7167927B2 (en) 1997-10-14 2007-01-23 Alacritech, Inc. TCP/IP offload device with fast-path TCP ACK generating and transmitting mechanism
US6226680B1 (en) 1997-10-14 2001-05-01 Alacritech, Inc. Intelligent network interface system method for protocol processing
US7133940B2 (en) 1997-10-14 2006-11-07 Alacritech, Inc. Network interface device employing a DMA command queue
US6389479B1 (en) 1997-10-14 2002-05-14 Alacritech, Inc. Intelligent network interface device and system for accelerated communication
US6434620B1 (en) 1998-08-27 2002-08-13 Alacritech, Inc. TCP/IP offload network interface device
US6591302B2 (en) 1997-10-14 2003-07-08 Alacritech, Inc. Fast-path apparatus for receiving data corresponding to a TCP connection
US6757746B2 (en) 1997-10-14 2004-06-29 Alacritech, Inc. Obtaining a destination address so that a network interface device can write network data without headers directly into host memory
US6687758B2 (en) 2001-03-07 2004-02-03 Alacritech, Inc. Port aggregation for network connections that are offloaded to network interface devices
US6092110A (en) 1997-10-23 2000-07-18 At&T Wireless Svcs. Inc. Apparatus for filtering packets using a dedicated processor
US5923892A (en) 1997-10-27 1999-07-13 Levy; Paul S. Host processor and coprocessor arrangement for processing platform-independent code
US5937169A (en) 1997-10-29 1999-08-10 3Com Corporation Offload of TCP segmentation to a smart adapter
US6061368A (en) 1997-11-05 2000-05-09 Xylan Corporation Custom circuitry for adaptive hardware routing engine
JP3042615B2 (ja) 1997-12-09 2000-05-15 瑞麟 蕭 中間ステーション型のマルチメディア情報処理装置と方法
US6567855B1 (en) 1998-01-02 2003-05-20 Intel Corporation Portable processing system with always on, always connected capability
US6058421A (en) 1998-02-04 2000-05-02 3Com Corporation Method and system for addressing network host interfaces from a cable modem using DHCP
JPH11313091A (ja) 1998-02-24 1999-11-09 Canon Inc データ通信システム、装置及び方法並びに記憶媒体
US6341129B1 (en) 1998-04-03 2002-01-22 Alteon Networks, Inc. TCP resegmentation
US6765901B1 (en) 1998-06-11 2004-07-20 Nvidia Corporation TCP/IP/PPP modem
US6480494B1 (en) * 1998-06-15 2002-11-12 Nokia High Speed Access Products, Inc. Switching system data interface
US6157955A (en) 1998-06-15 2000-12-05 Intel Corporation Packet processing system including a policy engine having a classification unit
US6182228B1 (en) 1998-08-17 2001-01-30 International Business Machines Corporation System and method for very fast IP packet filtering
JP3542103B2 (ja) 1998-09-08 2004-07-14 富士通株式会社 ネットワーク制御方式
US6233626B1 (en) 1998-10-06 2001-05-15 Schneider Automation Inc. System for a modular terminal input/output interface for communicating messaging application layer over encoded ethernet to transport layer
US6363418B1 (en) 1998-10-16 2002-03-26 Softbook Press, Inc. On-line image caching control for efficient image display
US6331865B1 (en) 1998-10-16 2001-12-18 Softbook Press, Inc. Method and apparatus for electronically distributing and viewing digital contents
US6430628B1 (en) 1998-12-08 2002-08-06 Intel Corporation Method and apparatus for reducing direct memory access transfers using smart coalescing
US6480852B1 (en) 1998-12-11 2002-11-12 International Business Machines Corporation Method and system for rating bookmarks in a web browser
WO2000035675A1 (en) 1998-12-16 2000-06-22 Silverbrook Research Pty Ltd A printer for incorporation into consumer electronic (ce) systems with limited access
JP2000196669A (ja) 1998-12-25 2000-07-14 Hitachi Ltd 情報中継装置
US6347337B1 (en) 1999-01-08 2002-02-12 Intel Corporation Credit based flow control scheme over virtual interface architecture for system area networks
US6345301B1 (en) 1999-03-30 2002-02-05 Unisys Corporation Split data path distributed network protocol
US6389537B1 (en) 1999-04-23 2002-05-14 Intel Corporation Platform and method for assuring integrity of trusted agent communications
US6510458B1 (en) 1999-07-15 2003-01-21 International Business Machines Corporation Blocking saves to web browser cache based on content rating
US6347347B1 (en) 1999-07-15 2002-02-12 3Com Corporation Multicast direct memory access storing selected ones of data segments into a first-in-first-out buffer and a memory simultaneously when enabled by a processor
US6449656B1 (en) 1999-07-30 2002-09-10 Intel Corporation Storing a frame header
US6427169B1 (en) 1999-07-30 2002-07-30 Intel Corporation Parsing a packet header
TW447205B (en) 1999-11-18 2001-07-21 Iready Corp Multiple network protocol encoder/decoder and date processor
TW448407B (en) 1999-11-18 2001-08-01 Iready Corp Hardware accelerator for an object-oriented programming language
US6327625B1 (en) 1999-11-30 2001-12-04 3Com Corporation FIFO-based network interface supporting out-of-order processing
US6530061B1 (en) 1999-12-23 2003-03-04 Intel Corporation Method and apparatus for offloading checksum
US6773344B1 (en) 2000-03-16 2004-08-10 Creator Ltd. Methods and apparatus for integration of interactive toys with interactive television and cellular communication systems
US6701316B1 (en) * 2000-04-07 2004-03-02 Nec Corporation Method and apparatus for intelligent network bandwidth and system resource utilization for web content fetch and refresh
JP3614082B2 (ja) * 2000-04-12 2005-01-26 日本電気株式会社 通信網接続装置
NL1015702C2 (nl) * 2000-07-13 2002-01-15 Dia Services B V Systeem voor het registreren van een beschrijfbaar medium, systeem voor het authentiseren van een beschrijfbaar medium, alsmede servers en cliÙntsysteem voor dergelijke systemen.
US20020085562A1 (en) 2000-12-13 2002-07-04 International Business Machines Corporation IP headers for remote direct memory access and upper level protocol framing
US6609225B1 (en) 2000-12-21 2003-08-19 Cisco Technology, Inc. Method and apparatus for generating and checking cyclic redundancy code (CRC) values using a multi-byte CRC generator on a variable number of bytes
US7149817B2 (en) 2001-02-15 2006-12-12 Neteffect, Inc. Infiniband TM work queue to TCP/IP translation
GB2372680B (en) 2001-02-27 2003-02-19 3Com Corp Calculation and transmission of error check codes
US7065702B2 (en) 2001-04-12 2006-06-20 Siliquent Technologies Ltd. Out-of-order calculation of error detection codes
US8218555B2 (en) * 2001-04-24 2012-07-10 Nvidia Corporation Gigabit ethernet adapter
WO2002097580A2 (en) 2001-05-31 2002-12-05 Espeed, Inc. Securities trading system with multiple levels-of-interest
CN1198169C (zh) * 2001-06-01 2005-04-20 精工爱普生株式会社 彩色薄膜、显示装置及其制造方法和显示装置的制造装置
JP3749458B2 (ja) 2001-06-06 2006-03-01 コナミ株式会社 遊戯拡張システムと玩具システムとを備えたシステム
US7194766B2 (en) * 2001-06-12 2007-03-20 Corrent Corporation Method and system for high-speed processing IPSec security protocol packets
US20030003117A1 (en) * 2001-06-18 2003-01-02 Michael Marenick Hydrolyzed whole egg products & related methods
US7165112B2 (en) * 2001-06-22 2007-01-16 Motorola, Inc. Method and apparatus for transmitting data in a communication system
WO2003005672A2 (en) 2001-07-06 2003-01-16 Livedevices Limited Improvements relating to reduction of resource usage in tcp/ip implementation
US7426729B2 (en) * 2001-07-11 2008-09-16 Sun Microsystems, Inc. Distributed processing framework system
US6980551B2 (en) 2001-07-12 2005-12-27 International Business Machines Corporation Full transmission control protocol off-load
JP4154874B2 (ja) * 2001-07-30 2008-09-24 カシオ計算機株式会社 指紋読取装置および指紋読取方法
US6760769B2 (en) 2001-08-31 2004-07-06 Adaptec, Inc. Apparatus and methods for transmitting data at high speed using TCP/IP
US7020716B2 (en) 2001-08-31 2006-03-28 Adaptec, Inc. Method and system for verifying the hardware implementation of TCP/IP
DE10143366A1 (de) * 2001-09-04 2003-03-20 Kiekert Ag Kraftfahrzeugtürverschluss
US20030046330A1 (en) 2001-09-04 2003-03-06 Hayes John W. Selective offloading of protocol processing
US8255567B2 (en) 2001-09-06 2012-08-28 Broadcom Corporation Efficient IP datagram reassembly
US7620692B2 (en) 2001-09-06 2009-11-17 Broadcom Corporation iSCSI receiver implementation
US7953093B2 (en) 2001-09-06 2011-05-31 Broadcom Corporation TCP/IP reordering
US6713201B2 (en) 2001-10-29 2004-03-30 Hewlett-Packard Development Company, L.P. Systems including replaceable fuel cell apparatus and methods of using replaceable fuel cell apparatus
US7124198B2 (en) 2001-10-30 2006-10-17 Microsoft Corporation Apparatus and method for scaling TCP off load buffer requirements by segment size
US20030081599A1 (en) * 2001-10-30 2003-05-01 Chui-Tsang Wu System and method for data transmission control
US20030095567A1 (en) 2001-11-20 2003-05-22 Lo Man Kuk Real time protocol packet handler
US20030115350A1 (en) 2001-12-14 2003-06-19 Silverback Systems, Inc. System and method for efficient handling of network data
US6760814B2 (en) 2001-12-17 2004-07-06 Lsi Logic Corporation Methods and apparatus for loading CRC values into a CRC cache in a storage controller
US6800013B2 (en) 2001-12-28 2004-10-05 Shu-Ming Liu Interactive toy system
US7315976B2 (en) 2002-01-31 2008-01-01 Lsi Logic Corporation Method for using CRC as metadata to protect against drive anomaly errors in a storage array
US7535913B2 (en) 2002-03-06 2009-05-19 Nvidia Corporation Gigabit ethernet adapter supporting the iSCSI and IPSEC protocols
US7543087B2 (en) 2002-04-22 2009-06-02 Alacritech, Inc. Freeing transmit memory on a network interface device prior to receiving an acknowledgement that transmit data has been received by a remote device
JP4004389B2 (ja) * 2002-11-27 2007-11-07 富士通株式会社 バッファメモリ管理方法及びシステム
US8477780B2 (en) * 2003-03-26 2013-07-02 Alcatel Lucent Processing packet information using an array of processing elements
KR100490433B1 (ko) 2003-06-10 2005-05-17 삼성전자주식회사 광주사장치의 에프쎄타 렌즈 및 광주사장치
US7287092B2 (en) * 2003-08-11 2007-10-23 Sharp Colin C Generating a hash for a TCP/IP offload device
JP4269176B2 (ja) * 2003-08-20 2009-05-27 日本電気株式会社 セッション中継装置及び中継方法
US7483434B2 (en) 2003-12-01 2009-01-27 International Business Machines Corporation Parallel TCP sender implementation
US6996070B2 (en) * 2003-12-05 2006-02-07 Alacritech, Inc. TCP/IP offload device with reduced sequential processing
US20050223110A1 (en) 2004-03-30 2005-10-06 Intel Corporation Heterogeneous building block scalability
JP4058014B2 (ja) 2004-04-08 2008-03-05 株式会社日立製作所 パケット転送装置

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104054067A (zh) * 2011-03-30 2014-09-17 亚马逊技术公司 基于减负装置的数据包处理的框架和接口
CN104054067B (zh) * 2011-03-30 2017-09-08 亚马逊技术公司 基于减负装置的数据包处理的框架和接口
CN107450966A (zh) * 2011-03-30 2017-12-08 亚马逊技术公司 基于减负装置的数据包处理的框架和接口
US9904568B2 (en) 2011-03-30 2018-02-27 Amazon Technologies, Inc. Frameworks and interfaces for offload device-based packet processing
US10565002B2 (en) 2011-03-30 2020-02-18 Amazon Technologies, Inc. Frameworks and interfaces for offload device-based packet processing
US11099885B2 (en) 2011-03-30 2021-08-24 Amazon Technologies, Inc. Frameworks and interfaces for offload device-based packet processing
US11656900B2 (en) 2011-03-30 2023-05-23 Amazon Technologies, Inc. Frameworks and interfaces for offload device-based packet processing
US11941427B2 (en) 2011-03-30 2024-03-26 Amazon Technologies, Inc. Frameworks and interfaces for offload device-based packet processing
CN104657555A (zh) * 2015-02-11 2015-05-27 北京麓柏科技有限公司 一种基于uvm验证方法学的toe的验证方法及平台

Also Published As

Publication number Publication date
US7957379B2 (en) 2011-06-07
KR101018575B1 (ko) 2011-03-03
WO2006045057A3 (en) 2006-11-30
KR20070085272A (ko) 2007-08-27
TWI407733B (zh) 2013-09-01
CN101120424B (zh) 2011-09-21
WO2006045057A2 (en) 2006-04-27
TW200629819A (en) 2006-08-16
US20060083246A1 (en) 2006-04-20
JP2008517565A (ja) 2008-05-22

Similar Documents

Publication Publication Date Title
CN101120424B (zh) 在高速网络应用中使用rx fifo缓冲区处理rx信息包的系统与方法
CN101102305B (zh) 管理网络信息处理的系统和方法
CN101276258B (zh) 存储设备及其控制方法
US7941569B2 (en) Input/output tracing in a protocol offload system
CN1608255B (zh) 使用包括扩展类型/扩展长度字段的分组头部的计算机系统中的代理之间的通信事务类型
CN101095125A (zh) 基于RNIC的iSCSI目标方数据移动功能卸载
WO2006011963A1 (en) Processing receive protocol data units
US7450588B2 (en) Storage network out of order packet reordering mechanism
US7460531B2 (en) Method, system, and program for constructing a packet
US7404040B2 (en) Packet data placement in a processor cache
US20160205013A1 (en) Transmission and Reception Devices
CN101410804A (zh) 管理多个接口的方法和数据处理系统
US7539204B2 (en) Data and context memory sharing
US7549088B2 (en) Communication apparatus and program provided with failure determining method and function
CN110958216B (zh) 安全的在线网络分组传输
US7814219B2 (en) Method, apparatus, system, and article of manufacture for grouping packets
US20090282175A1 (en) System and Method for Enabling Multiple Processors to Share Multiple SAS Wide Ports
CN1578267B (zh) 处理分组以在主机系统的网络上传送的方法、系统及装置
US7284075B2 (en) Inbound packet placement in host memory
US20070297341A1 (en) Data transmission system and method
US7231581B2 (en) Communicating using a partial block in a frame
KR100445918B1 (ko) 크로스바스위치 시스템의 상호연결스위치와입력버퍼스위치 간의 프로세서 통신 방법 및 장치
CN101714988A (zh) 一种处理业务数据的方法和卡服务器
JPH0926911A (ja) ページ情報転送処理装置
JP2000293454A (ja) データ通信装置、データ通信方法、および記録媒体

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant