CN100479437C - 解析分组头标的方法和计算机系统 - Google Patents
解析分组头标的方法和计算机系统 Download PDFInfo
- Publication number
- CN100479437C CN100479437C CNB2006100090573A CN200610009057A CN100479437C CN 100479437 C CN100479437 C CN 100479437C CN B2006100090573 A CNB2006100090573 A CN B2006100090573A CN 200610009057 A CN200610009057 A CN 200610009057A CN 100479437 C CN100479437 C CN 100479437C
- Authority
- CN
- China
- Prior art keywords
- grouping
- characteristic
- resolver
- computer system
- zero
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/24—Traffic characterised by specific attributes, e.g. priority or QoS
- H04L47/2475—Traffic characterised by specific attributes, e.g. priority or QoS for supporting traffic characterised by the type of applications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/40—Network security protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/901—Buffering arrangements using storage descriptor, e.g. read or write pointers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/161—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/30—Definitions, standards or architectural aspects of layered protocol stacks
- H04L69/32—Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/30—Definitions, standards or architectural aspects of layered protocol stacks
- H04L69/32—Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
- H04L69/322—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
- H04L69/326—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the transport layer [OSI layer 4]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Communication Control (AREA)
- Computer And Data Communications (AREA)
Abstract
接收含有头标的分组(140)。头标指示至少一个与协议栈的层相关的特性。利用网络控制器(52)解析分组以提取该特性,并由网络控制器(52)将一个句柄传给该协议栈以指示特性。计算机系统(50)能够执行协议栈软件来提取分组特性,且设备(50)可包含接口(90)和电路(98)。接口(90)能适于接收分组,电路(98)能适于解析头标来提取特性而不必引起计算机(50)执行软件,并基于提取特性处理分组。
Description
本申请是申请日为2000年6月16日、申请号为00813564.9、发明名称为“解析分组头标”的申请的分案申请。
技术领域
本发明涉及解析分组头标。
背景技术
参考图1,服务器12通过在依据网络协议的网络18上传输信息分组8或信息帧而与客户机10通信。例如,网络协议可以是传输控制协议/互联网协议(TCP/IP),因此,客户机10和服务器12能够分别实现例如象TCP/IP栈17和19这样的协议栈。对于客户机10(举例),TCP/IP栈17概念性地将客户机的软件和硬件协议功能划分成5个分级的层16(按分级的顺序列出):应用层16a(最高层)、传输层16b、网络层16c、数据链路层16d和物理层16e(最低层)。
更具体而言,物理层16e典型包括通过产生和接收指示组成分组8的比特的信号(在网线9上)来建立与网络18的物理通信的硬件(如网络控制器)。物理层16e识别比特而不识别分组,因为数据链路层16d完成了后一功能。按照这种方式,数据链路层16d就传输目的而言通常既是软件层也是硬件层,它能使客户机10把要传输的数据打包成分组8。再例如,为了接收分组8,数据链路层16d可以使客户机10通过测定入分组8是否基本符合预定格式,以及分组数据是否遵循循环冗余校验(CRC)码或分组的其他纠错码来确定入分组8的完整性。数据链路层16d还能实现地址过滤。
网络层16c典型为软件层,其负责分组8在网络18上的路由。按照这种方式,网络层16c典型地使客户机10来分配和解码互联网协议(IP)地址,该地址标识了耦合于网络18的实体,如客户机10和服务器12。传输层16b典型为软件层,其负责象两端点间可靠的数据传输这种工作,并能使用分组8的序列化、差错控制和一般流量控制来实现它。传输层16b可以使客户机10实现例如象TCP协议或用户数据报协议(UDP)这类特定的协议。应用层16a典型包含在执行时引起客户机10产生和接收分组8数据的网络应用。
参考图2,典型分组8可包含一个IP头标20,其指示了例如象分组8的源和目的IP地址这类信息。分组8可包含一个安全头标22,其指示分组8的安全协议(如IPSec协议)及其属性,分组8还可包含一个具体针对所用传输协议的传输协议头标23(如TCP或UDP协议头标)。例如,TCP协议头标可指出一个TCP目的端口和一个TCP源端口,它们唯一标识用于引起客户机10和服务器12传输并接收分组8的应用。分组8还可包含一个数据部分24,其内容由源应用提供;还可包含一个用于加密目的的尾部。
参考图3,例如,TCP协议头标22a可包含一个指示TCP源端口地址的字段30和一个指示TCP目的端口地址的字段32。TCP协议头标22a的另一个字段34可指示一个用于将收到的相关流的分组连接在一起的序号。具有相同IP地址、传输层端口地址和安全属性的分组8都是同一个流的组成部分,而序号(下文所述的)则指出了某一个分组8在流中的次序。
按照这种方式,即使流的数据字节被分成流的不同分组8,该数据字节也能按顺序被进行编号。为了实现这一点,TCP协议头标22a的字段34可指示一个用以标识下一分组8的第一个字节号的序号。因此,如果某个分组8中最后一个数据字节具有的字节号为“1000”,那么此分组8的序号就是“1001”,由此指出流的下一个分组8的第一个字节。
TCP协议头标22a可包含一个指示头标22a长度的字段38、一个
指示头标22a中字节校验和的字段44和一个指示控制与状态标志的字段40。例如,字段40可指出分组8是某个流的第一个还是最后一个分组8。再例如,字段40能够指出某个分组8是否携带了用于“握手”目的的确认信息。按照这种方式,确认分组典型地不(但可以)包含数据,并且流的接收端在其收到来自发送端的预定数目分组(例如2)之后发送一个确认分组。按照这种方式,发送端对确认分组的接收表示预定数目的分组被成功发送。TCP协议头标22a还可包含一个用以指示发送端在收到确认分组前所发送的最大字节数(被称为“窗口”)的字段43,该确认分组至少指出其中某些字节是被成功接收的。还可能存在其他字段,如校验和字段44和紧急指针字段42。紧急指针字段42指出从放置紧急数据的当前序号开始的偏移量。
例如,当客户机10的处理器执行有关传输层16b和网络层16c的软件时,该软件典型引起客户机10对协议头标22所指示的信息进行解析以便于分组8的额外处理。不过,软件的执行可能会引入阻碍分组8在客户机10和服务器12之间通信的时延。
因此不断存在解决上述一个或多个问题的需要。
发明内容
在本发明的一种实施方案中,一种供计算机系统使用的方法包括接收含有头标的分组。头标指示至少一种与协议栈的层相关的特性。利用网络控制器解析分组以提取该特性,并将此句柄(handle)从网络控制器开始进行传递以指示该特性。
在另一种实施方案中,采用了一种供计算机系统使用的设备,该计算机系统能执行协议栈软件以提取至少一个分组特性。该设备包括一个接口和一个电路。接口适于接收分组,且分组包含一个指明特性的头标。电路适于解析头标以提取分组特性而不必使计算机执行软件,并基于提取特性处理分组。
仍根据另一种实施方案,计算机系统包括一个处理器和一个外围设备。处理器适于执行网络堆栈的软件以提取分组的至少一个特性。分组含有指明此特性的头标。外围设备适于接收分组并对头标加以解析以提取特性。外围设备还适于基于提取特性至少局部地处理分组。
附图说明
图1是依据现有技术的一种计算机网络的示意图。
图2是图1所示网络上所传输的分组的示意图。
图3是关于图2分组协议头标的举例说明。
图4是依据本发明一种实施方案的计算机系统的示意图。
图5是图4网络控制器的示意图。
图6是对存储于图5网络控制器存储器中的流多元组的举例说明。
图7是依据本发明一种实施方案来说明分组数据传送的示意图。
图8是依据现有技术来说明分组数据在网络堆栈的层之间传送的示意图。
图9是说明通过图5网络控制器的接收解析器来解析分组数据的流程图。
图10和12是依据本发明的一种实施方案来说明图5网络控制器的零复制解析器操作的流程图。
图11是说明依据本发明一种实施方案的图5网络控制器操作的状态图。
具体实施方式
参考图4,按照本发明的一种计算机系统的实施方案50包含一个网络控制器52(如局域网(LAN)控制器),其通过至少一条网线53与其他网络计算机系统传送信息分组。与传统网络控制器不同的是,网络控制器52适合执行那些由处理器54(如中央处理单元(CPU))典型实现的功能,该处理器执行网络协议栈(如TCP/IP栈)中的一个或多个软件层(如网络层和传输层)。例如,这些功能可包括解析入分组头标以获取通过软件层的执行而被典型提取的(分组的)特性。
这些特性可依次标识一个将接收分组数据的应用。在这一语境下,术语“应用”通常指的是其中一个协议层(例如层1、2、3或4)上的某个用户。由于此标识是通过网络控制器52完成的,所以网络控制器52(而不是堆栈的软件层)能直接控制分组数据向有关该应用的某个缓冲器(在系统存储器56中)的传输。这样安排的结果是,网络控制器52和系统存储器56之间的数据传输可花费更少的时间并更有效地利用存储器空间,如下文进一步所述。
参考图5,网络控制器52可包含例如象接收路径92这种硬件来执行处理从网络接收的分组的功能。例如,接收路径92可包含一个接收解析器98,其用来解析每个分组的头标以提取该分组的特性,例如把某个流与该分组联系起来的特性。由于接收路径92可接收来自许多不同流的入分组,因此接收路径92可以包含一个存储器100,其存储着被称为流多元组140的条目。每个流多元组140唯一地标识一个将被网络控制器52解析的流。如下文进一步所述,可通过处理器执行驱动程序57来改变流多元组140所标识的流。
接收解析器98可按以下方式使用这个存储的流多元组140。首先,接收解析器98可与存储器100交互来对来自入分组的解析信息和流多元组140进行比较,以确定此进入流是否为流多元组140所标识的其中一个流,即接收解析器98确定是否出现“流多元组命中”。如果出现流多元组命中,接收解析器98便可以解析有关这个流的分组,并且(控制器52的)其他电路也可以基于这个被检测的流处理分组,如下文进一步所述。
还参考图6,每个流多元组140可含有标识某个流特性的字段。例如,在某些实施方案中,至少其中一个流多元组140能够和例如传输控制协议(TCP)、用户数据报协议(UDP)或实时传输协议相关联。流多元组140可包含一个指出互联网协议(IP)目的地址(即用来接收分组的计算机系统地址)的字段142;一个指出IP源地址(即用来发送分组的计算机系统地址)的字段144;一个指出TCP目的端口(即引起分组产生的应用地址)的字段146;一个指出TCP源端口(即接收分组的应用地址)的字段148;一个指出分组的安全/认证属性的字段150;以及一个安全参数索引(SPI)字段152,其可被计算机系统50用来标识一个安全的流。其他流多元组140可相关于其他网络协议,例如象用户数据报协议(UDP)。
在某些实施方案中,接收解析器98可使用流多元组140的一个子集来标识某个流。例如,在某些实施方案中,接收解析器98可以用字段142、150和152来标识流多元组命中。如下文进一步所述,字段142、144、146和148可被用来标识特殊类型的流,如零复制流。
以上对特殊网络协议的参考仅是作为示例,并非想限制本发明的范围。额外的流多元组140可被存储在存储器100中,而现有的流多元组140可通过处理器54执行驱动程序57而被从存储器100中删除。在某些实施方案中,存储器100还可存储信息字段141。每个字段141可相关于某个流多元组140,并能指出例如(为网络协议栈)对流进行标识的处理器和指向系统存储器56中某个缓冲器的指针,如下文进一步所述。
如果接收解析器98识别相关于入分组的流(通过流多元组140),则接收路径92可进一步处理该分组。在某些实施方案中,接收解析器98能够(向网络控制器52的其它电路,以及最终向网络协议栈)指示对相关于某个分组的流的识别及其他所检测的关于该分组的属性。
如果接收解析器98未识别流,则接收路径92通过外部元件互联(PCI)接口130将入分组传给计算机系统50的网络协议栈(如TCP/IP栈)的软件层进行处理。PCI规范可从The PCI Speical InterestGroup,Portland,Oregon 97214(PCI专业组,波特兰,俄勒冈97214)获得。可使用其他总线接口代替PCI接口130来将网络控制器52接口到PCI总线以外的其他总线上。在某些实施方案中,计算机系统50可执行一种提供至少部分协议栈的某些层(如网络和传输层)的操作系统。
在某些实施方案中,即使接收解析器98识别流,在接收路径92进一步处理入分组52之前还需要额外信息。例如,认证/加密引擎102可以基于由入分组的IP安全头标所指示的信息对该分组的数据部分进行认证和/或解密。按照这种方式,如果IP安全头标指出入分组的数据部分已被加密,那么引擎102可能需要密钥来对数据部分进行解密。
为了向引擎102提供密钥,网络控制器52可包含一个密钥存储器104,其存储着例如可能由不同相关的流索引的不同密钥。额外密钥可通过处理器执行驱动程序57而被存储在密钥存储器104中,现有密钥可通过处理器执行驱动程序57而被从密钥存储器104中删除。按照这种方式,如果引擎102确定某一解密密钥没有存储在密钥存储器104中,则该引擎102可以为该密钥向驱动程序57(见图4)提交一个请求(通过PCI接口130)。按照这种方式,当处理器54执行驱动程序57时就能引起处理器54提供密钥以响应请求,并与PCI接口130交互以将此密钥存入密钥存储器104中。在某些实施方案中,如果密钥无法获得(即密钥无法通过驱动程序57获得或者没有存在密钥存储器104中),则引擎102不对分组的数据部分进行解密。作为替换,PCI接口130将加密的数据存在系统存储器56的预定位置上(见图4),以便协议栈中的一层或多层软件能被执行用来解密入分组的数据部分。
解析完以后,网络控制器52对分组的处理可包括旁路执行与网络协议栈相关的一个或多个软件层。例如,接收路径92可包含一个零复制解析器110,其通过PCI接口130能够将有关分组的数据复制到与应用层相关的存储缓冲器304中(见图7)。按照这种方式,一个应用可以有一个或多个用于接收分组数据的相关缓冲器。操作系统在虚拟地址空间中产生和维护缓冲器304,并且操作系统为每个缓冲器304保留了多个4千字节(KB)的物理页面。操作系统还将每个缓冲器304与某个应用联系起来,以便该应用能够使用存在缓冲器304中的数据。
如下文所述,为实现分组数据从网络控制器52向缓冲器304的直接传输,操作系统使得处理器54(向网络控制器52)提供一个指向其中某一缓冲器304的指针。被指示的缓冲器304可以是应用为其专用而分配的缓冲器,或者是由操作系统传给网络控制器52用来和其中一个预定的、将被提供零复制服务的流联系起来的缓冲器。在后一种情况下,操作系统随后将缓冲器重新映射成应用的虚拟地址空间。零复制解析器110利用这种流句柄将帧与零复制缓冲器联系起来,并将数据直接复制到那个缓冲器中。上述关于将数据传至缓冲器304的安排可与利用中间缓冲器(相关于数据链路和/或传输层的)来从网络控制器向应用层缓冲器传送分组数据的传统安排相对照,正如下文所述的。
参考图8,例如,典型网络控制器300不直接将分组数据传至缓冲器304,因为典型网络控制器300不对入分组进行解析以获取标识流或目的应用的信息。作为替换,典型网络控制器300将分组的数据部分传给与数据链路层相关的分组缓冲器302。与缓冲器304相比,每个缓冲器302可具有近似(例如)1518字节的大小范围,也就是近似某个分组数据的大小范围。接下来,传输层的执行(由处理器54进行)将数据与适当的应用联系起来,并使数据从缓冲器302被传到缓冲器304。
回过来参考图7,与上述传统安排相比,网络控制器52可使用零复制解析器110来旁路缓冲器302,并将分组的数据部分直接复制到适当的缓冲器304中。要实现这一点,零复制解析器110(见图5)可以接收来自上述从头标提取TCP目的端口信息的接收解析器98的、一个关于(例如)TCP目的端口的指示。TCP(或其他层4协议,如RTP)目的端口唯一地标识了将要接收数据的应用,并因此为分组数据标识了适当的缓冲器304。除了向缓冲器304传送数据部分以外,零复制解析器110能够处理网络控制器52和协议栈之间的控制问题,并能处理入分组丢失的情况,如下所述。
零复制解析器可以使用流语境存储器112来存储流语境字段113,该字段指出了某个将在其中执行零复制的流。每个语境字段113可以和一个信息字段115(也存储在流语境存储器112中)联系起来,该字段指示了例如有关由流语境字段113指出的各种流的句柄以及其他信息,例如象地址信息。
参考图5,除上述组件以外,接收路径92还可包含一个或多个先入先出(FIFO)存储器106来临时存储通过接收路径92的入分组。校验和引擎108(属于接收路径92)可耦合于FIFO存储器106和PCI接口130之间以验证含在分组中的校验和。
可通过PCI接口130将接收路径92接口到PCI总线72上。PCI接口130可包含一个模拟的直接存储器存取(DMA)引擎131,其目的是用来将分组的数据部分直接传至缓冲器304或302(当未使用零复制时)。按照这种方式,零复制解析器110可用由DMA引擎131模拟的预定数目(例如16)的DMA通道之一将数据传到适当的缓冲器304中。在某些实施方案中,每个通道都可能相关于某个特定的缓冲器304。然而在某些实施方案中,当协议栈(而不是零复制解析器110)被用于传送分组的数据部分时,DMA引擎131可使用较小数目的通道(例如1)来进行这些传输。
在某些实施方案中,接收路径92可包含额外电路,如串行到并行转换电路96,当从网线53收到分组时,其可以接收来自网络接口90的串行比特流。按照这种方式,转换电路96将比特组成字节并将这些字节提供给接收解析器98。网络接口90可被耦合用来产生并接收去往/来自网线53的信号。
除了接收路径92以外,网络控制器52可包含其他的例如象传输路径94这样的硬件电路来向网络发送外出分组。在传输路径94中,网络控制器52可包含一个传输解析器114,其被耦合到PCI接口130上用来接收来自计算机系统50的出分组数据并形成分组上的头标。为了实现这一点,在某些实施方案中,传输解析器114在头标存储器116中存储着预定流的头标。由于某个流的头标可能指示相当多数量的相同信息(如端口和IP地址),因此传输解析器114可为每个出分组略加修改所存储的头标,并将修改后的头标组装到出分组中。例如,传输解析器114可以从头标存储器116中取回属于某个流的头标,然后对头标进行解析以便将(例如)序号和确认号这样的信息添加到出分组的头标中。校验和引擎120可以为出分组的IP和网络头标计算校验和并将此校验和加到分组中。
传输路径94还可包含一个认证与加密引擎126,其可以对出分组的数据进行加密和/或认证。按照这种方式,通过相关于某个流的密钥可以对该流的所有分组进行加密和/或认证,不同流的密钥可存储在密钥存储器124中。在某些实施方案中,新的密钥添加到密钥存储器124中,而现有密钥则可借助于控制分组字段,利用通过传输路径94传送的信息被修改或删除。传输路径94还可包含一个或多个FIFO存储器122用以同步通过传输路径94的分组流。为了对出分组数据进行串行传输,可以将并行到串行转换电路128耦合到FIFO存储器122上以取回准备要传输的分组。一旦被串行化,电路128便可将数据传给网络接口90以便经网线53直行传输。
在某些实施方案中,接收解析器98和零复制解析器110例如可包含一个或多个状态机、计数器和定时器来为每个入分组执行下列功能。在下文中,假设所描述的某个流是一个零复制流。不过在某些实施方案中,该流可以是也可以不是零复制流。参考图9,接收解析器98能够解析(方块200)每个入分组的头标。根据所解析的信息,接收解析器98能够确定此分组是否需要认证或解密,如菱形块201中所示。
如果需要认证或加密,那么接收解析器98可利用关于头标的解析信息来确定(菱形块216)是否出现了流多元组命中。如果没有发生,接收解析器98将控制传给完成分组结尾校验的零复制解析器110,如方块202中所述。否则,接收解析器98确定密钥存储器104中的相关密钥是否可用,如菱形块220所述。如果该密钥可用,则接收解析器98在向可执行分组零复制(如方块202中所示)的零复制解析器110传递控制之前便可开始进行如方块218中所示的分组认证和/或解密。如果密钥不可用,则接收解析器98可将控制传给零复制解析器110以执行零复制操作,如方块202中所示。
执行完零复制操作(方块202)以后,零复制解析器110可执行分组结尾校验,如方块204所示。在这些校验中,接收解析器98可执行与数据链路层典型相关的校验。例如,接收解析器98能够保证分组指示正确的以太网MAC地址、无循环冗余校验(CRC)错误发生、无接收状态错误(如冲突、超速、最小/最大帧长错误)发生,并且帧长大于最小字节数(如64)。接收解析器98可执行与网络层典型相关的校验。例如,接收解析器98能够校验IP分组头标的大小、计算IP头标的校验和、确定所计算的IP头标的校验和是否与IP头标所指示的校验和一致、确保分组指示正确的IP目的地址并确定此IP是否指明了所识别的网络协议(如TCP或UDP协议)。接收解析器98还可执行与通过处理器执行软件所实现的有关传输层的功能典型相关的校验。例如,接收解析器98能够确定协议头标的大小是否在预先规定的范围之内,能够计算协议头标的校验和,并且能够决定是否设置被称为ACK、URG、PSH、RST、FIN的标记和/或SYN标记。如果设置了PSH标记,则接收解析器98可将此事件指示给驱动程序。如果设置了RST、FIN或SYN标记,则接收解析器98可以将控制交给传输层。如果是发出ACK标记,则接收解析器98可与驱动程序57或传输路径94交互来传输确认分组,如下文进一步所述。
完成校验以后,零复制解析器110便能够确定(菱形块205)数据链路层是否发生了可导致分组不能用的错误。如果是这种情况,则零复制解析器110可以收回(方块205)驱动程序为分组分配的存储器,收回(方块207)为分组的零复制分配的存储器,并重新设置(方块209)与该分组有关的DMA通道(由DMA引擎131模拟的)。否则,零复制解析器110将为该协议栈来编辑一个错误统计堆栈。
参考图10,零复制解析器110可执行下列功能来执行零复制操作。首先,零复制解析器110可以确定存储数据的存储器地址,如下文进一步所述。然后,零复制解析器110可以确定(菱形块258)分组是否丢失,若是,则零复制解析器110为丢失的分组保留(菱形块260)存储器空间。随后,零复制解析器110执行(方块262)零复制操作将分组复制到存储器56中。
其次,零复制解析器110可更新对该流的接收分组计数(方块264)。然后零复制解析器110根据流中被接收的分组数决定是否到了向分组发送端回传确认分组的时间(菱形块266)。按照这种方式,如果该计数超过了预定的数目,则接收解析器98可以(依赖于某种实施方案)通知(方块268)驱动程序57(见图4)或通知(方块270)传输解析器114需要传输一个确认分组。因此,在后一种情况中,由于不需要来自应用层中数据部分的数据,所以传输解析器114适于产生确认分组。接收解析器98从方块268或270迁移至菱形块200(见图9)以检验另一个接收的分组。在确认分组被传输之后,接收解析器98可以将对于该流的已接收分组计数清零。
图11说明了接收路径92的按每个流的状态图,该图说明以同步方式进行的从堆栈到网络控制器52的控制传递。在网络协议栈相关的软件掌控对分组进行的解析和处理时,接收路径92处于空闲状态。不过,在某些实施方案中,尽管传输层能够通过处理器54执行对分组进行最初处理,但随后处理的控制可被传递给网络控制器52。按照这种方式,通过驱动程序57的执行,处理器54可与PCI接口130交互用以将接收路径92置于监视状态。
在监视状态下,接收解析器98检验与预定流相关的入分组的完整性(如流多元组140所示)并如上所述,指示检验结果。对于每个需要监视的预定流,存储器100可以存储一个有关这个流的信息字段141。例如,信息141能够指出向该网络堆栈指示某流的句柄、TCP序列号(例如)和到适当的网络层缓冲器302的指针(当未使用零复制时)。如果接收解析器98需要到另一缓冲器302的指针,那么接收解析器98可通知驱动程序57(处于获取下一个缓冲器1状态),该驱动程序进而提供到下一个缓冲器302的指针,作为响应,接收解析器98可以更新相关字段141。获取下一个缓冲器1状态与缓冲器304有关,且被用于当使用零复制时的情况。这种状态机和这种特殊的状态迁移在某些实施方案中不能使用。堆栈还可以告诉网络控制器52从序号X或大于X和从相应于该X的存储器地址Y开始进行零复制,从而取消了此同步过程。
如果零复制解析器98(通过使用流语境指示113)检测到来自某个流的分组将要进行零复制,网络控制器52则迁移到零复制状态。在零复制状态下,零复制解析器98利用与每个零复制流相关的信息字段115来标识信息,例如传给网络堆栈的句柄(用于标识流)和到适当的应用缓冲器304的指针。如果需要到另一缓冲器304的指针,那么零复制解析器98从驱动程序57那里请求另一个指针。作为响应,驱动程序57(处于获取下一个缓冲器2状态)将指针的表示传给网络控制器52以便为零复制解析器110所用。在其他实施方案中,应用或堆栈的职责是为零复制流提供足够的缓冲器。在某些实施方案中,倘若网络控制器52用尽缓冲器,那么网络控制器52使用基于软件的接收程序。零复制解析器110作为响应可以更新信息字段115。
在某些实施方案中,驱动程序57能够引起处理器54退出监视状态或零复制状态而返回到空闲状态。驱动程序57能够引起处理器54与PCI接口131交互以向/从存储器112中添加/删除某个流语境指示113,还能使处理器54向/从流存储器100中添加/删除某个流多元组140。
参考图12,在执行零复制操作过程中,零复制解析器可执行下列功能将分组数据直接传送给缓冲器304。首先,零复制解析器110能够确定是否需要在零复制解析器110和与网络协议栈的层(如数据链路层和传输层)相关的软件执行之间同步传输控制。在这种语境中,术语“同步”通常是指为了确定其中一个实体(堆栈或零复制解析器110)从另一个实体取回控制并开始将数据传至缓冲器304处的一个迁移点而在堆栈和零复制解析器110之间进行的通信。不进行同步就不能检测到丢失的分组。因此,当控制从堆栈传到解析器110时(反之亦然),可能需要发生同步,如方块254所述。
因此,一种可能需要同步的情况是在零复制解析器110最初接管直接将数据部分传至缓冲器304功能的时候。按照这种方式,如果零复制解析器110确定(菱形块250)当前分组是零复制解析器110处理的第一个分组,则解析器110对分组存储进行同步,如方块254所述。否则,零复制解析器110将确定(菱形块252)是否有错误发生,如下所述。例如,为了确定迁移发生的时间,零复制解析器110可不断监视由驱动程序57有选择地设置的比特的状态。另一种需要同步的情况是在零复制解析器110将分组数据复制到缓冲器304时有错误发生的时候。例如,由于这个错误,堆栈可在零复制解析器110收回控制前临时恢复对传输的控制。因此,如果零复制解析器110确定(菱形块252)有错误发生,则零复制解析器110可迁移到方块254。
同步可以以多种方式发生。例如,零复制解析器110可将预定的代码插入到某个分组状态信息内,用以向堆栈指明由零复制解析器110处理后续分组的传输。堆栈可以完成同样的操作。
某个流的入分组有时可被无顺序地接收。这可能会产生问题,因为零复制解析器110能够将来自顺序分组的数据一个接一个地存入某个缓冲器304中。例如,分组号“267”可能在分组号“266”之前被接收,如果分组号“267”的数据在分组号“265”的数据之后被立即存储,这就可能会引起问题。为了避免这种情况发生,在某些实施方案中,零复制解析器110可以在某个缓冲器304中为丢失的分组数据保留一块区域308(见图7),如方块260所示(见图11)。为了确定丢失分组的大小(由此确定要保留的存储器空间的量),零复制解析器110可以使用由序列中相邻分组所指明的序号。按照这种方式,该序号指出下一个连续分组的字节号。因此,对于上述实例,分组号“265”和“267”所指示的确认号可被用来确定区域308的边界。
零复制解析器110随后与PCI接口130交互来建立适当的DMA通道,以执行分组数据到适当缓冲器304的零复制(步骤262)。零复制解析器110通过接收解析器98提供的目的端口来确定适当的缓冲器304。
回过来参考图4,除网络控制器52以外,计算机系统50可包含一个耦合于主机总线58的处理器54。在这个语境中,术语“处理器”例如通常可以表示一个或多个中央处理单元(CPU)、微控制器或微处理器(如X86微处理器、奔腾微处理器或高级RISC控制器(ARM))。此外,短语“计算机系统”可以表示任何类型的基于处理器的系统,例如该系统可包括台式计算机、膝上型计算机、仪表或机顶盒。因此,本发明并不受限于所描述的计算机系统50,而是计算机系统50只是本发明众多实施方案中其中一种实施方案的一个实例。
主机总线58可通过桥或存储集线器60耦合到加速图形端口(AGP)总线62上。在Accelerated Graphics Port InterfaceSpecification,Revision 1.0,published in July 31,1996,by IntelCorporation of Santa Clara,California(加速图形端口接口规范,版本1.0,1996年7月31日出版,英特尔公司,Santa Clara,加利福尼亚)中对AGP作了详细描述。例如,AGP总线62可被耦合到控制指示器65的视频控制器64上。存储集线器60还可将AGP总线62和主机总线58耦合到存储总线61上。存储总线61又可被耦合到系统存储器56上,该系统存储器例如可存储缓冲器304和驱动程序57的一个副本。
存储集线器60还可被耦合到(通过集线器链路66)另一个桥,或者说是输入/输出(I/O)集线器68上,该集线器68耦合于I/O扩展总线70和PCI总线72。I/O集线器68还可耦合到如CD-ROM驱动器82和硬盘驱动器84。例如,I/O扩展总线70可耦合到I/O控制器74上,该控制器控制着软盘驱动器76的操作并接收来自键盘78和鼠标80的输入数据。
其他实施方案也在下列权利要求的范围之内。例如,除网络控制器以外的外围设备也能实现上述技术。还可以使用其他的网络协议和其他协议栈。
尽管本发明只相对有限数量的实施方案公开,但本领域中那些得益于本公开内容的技术人员将会理解还存在大量的改进方案和由此而改变的方案。希望附加的权利要求能覆盖在本发明的精神与范围之内的所有改进和变化。
Claims (18)
1.一种供计算机系统使用的方法,包括:
接收含有头标的分组,该头标包括标识一个应用的至少一种特性;
使用网络控制器解析该分组以提取上述至少一个特性;
传递一个句柄以指示上述至少一个特性;以及
使得所述网络控制器能够将分组数据传送到要由所述应用直接访问的一个缓冲器。
2.权利要求1的方法,其中传递动作包括:
向协议栈的另一个层传递该句柄。
3.权利要求1的方法,其中所述的至少一个特性包括:
相关于某个应用程序的端口号。
4.权利要求1的方法,其中该计算机系统包括数据链路层。
5.权利要求1的方法,其中所述的至少一个特性包括:
该分组的类型。
6.权利要求1的方法,其中该句柄将该分组和一个流联系起来。
7.权利要求1的方法,进一步包括:
根据上述至少一个特性有选择地传输确认分组。
8.权利要求1的方法,进一步包括:
根据上述至少一个特性把与分组有关的数据存入应用执行所使用的存储器区域中。
9.权利要求1的方法,其中该计算机系统包括传输层。
10.权利要求1的方法,其中接收动作包括:
接收来自网络的分组。
11.权利要求1的方法,进一步包括:
判定对于该分组某个安全密钥是否可用;以及
根据此判定处理分组。
12.权利要求11的方法,其中处理动作包括:
解密分组数据。
13.权利要求11的方法,其中处理动作包括:
加密分组数据。
14.权利要求11的方法,进一步包括:
使用上述至少一个特性来检验该分组的完整性。
15.一种计算机系统,包括:
一个处理器,该处理器适于执行网络栈的软件以提取标识一个应用的分组的至少一个特性;
一个外围设备,其适于接收该分组,该分组含有一个包括至少一个特性的头标;
一个解析器,其解析该头标以提取上述至少一个特性并传递一个句柄以指示所述至少一个特性;以及
一个缓冲器,其与该解析器相耦合,以便接收与所述分组关联的分组数据,所述缓冲器是所述应用能直接访问的。
16.权利要求15的计算机系统,其中所述的至少一个特性包括:
相关于某个应用程序的端口号。
17.权利要求15的计算机系统,其中所述的至少一个特性包括:
相关于该分组的安全属性。
18.权利要求15的计算机系统,其中所述的至少一个特性包括:
该分组的类型。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/364,096 US6427169B1 (en) | 1999-07-30 | 1999-07-30 | Parsing a packet header |
US09/364096 | 1999-07-30 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN00813564A Division CN1377548A (zh) | 1999-07-30 | 2000-06-16 | 解析分组头标 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1819555A CN1819555A (zh) | 2006-08-16 |
CN100479437C true CN100479437C (zh) | 2009-04-15 |
Family
ID=23432993
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2006100090573A Expired - Fee Related CN100479437C (zh) | 1999-07-30 | 2000-06-16 | 解析分组头标的方法和计算机系统 |
CN00813564A Pending CN1377548A (zh) | 1999-07-30 | 2000-06-16 | 解析分组头标 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN00813564A Pending CN1377548A (zh) | 1999-07-30 | 2000-06-16 | 解析分组头标 |
Country Status (6)
Country | Link |
---|---|
US (1) | US6427169B1 (zh) |
EP (1) | EP1203478A2 (zh) |
CN (2) | CN100479437C (zh) |
AU (1) | AU5746600A (zh) |
CA (1) | CA2380319C (zh) |
WO (1) | WO2001010096A2 (zh) |
Families Citing this family (115)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6658480B2 (en) | 1997-10-14 | 2003-12-02 | Alacritech, Inc. | Intelligent network interface system and method for accelerated protocol processing |
US7174393B2 (en) | 2000-12-26 | 2007-02-06 | Alacritech, Inc. | TCP/IP offload network interface device |
US6687758B2 (en) * | 2001-03-07 | 2004-02-03 | Alacritech, Inc. | Port aggregation for network connections that are offloaded to network interface devices |
US6434620B1 (en) | 1998-08-27 | 2002-08-13 | Alacritech, Inc. | TCP/IP offload network interface device |
US7042898B2 (en) | 1997-10-14 | 2006-05-09 | Alacritech, Inc. | Reducing delays associated with inserting a checksum into a network message |
US8621101B1 (en) * | 2000-09-29 | 2013-12-31 | Alacritech, Inc. | Intelligent network storage interface device |
US7237036B2 (en) * | 1997-10-14 | 2007-06-26 | Alacritech, Inc. | Fast-path apparatus for receiving data corresponding a TCP connection |
US8782199B2 (en) | 1997-10-14 | 2014-07-15 | A-Tech Llc | Parsing a packet header |
US7133940B2 (en) * | 1997-10-14 | 2006-11-07 | Alacritech, Inc. | Network interface device employing a DMA command queue |
US7167927B2 (en) * | 1997-10-14 | 2007-01-23 | Alacritech, Inc. | TCP/IP offload device with fast-path TCP ACK generating and transmitting mechanism |
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 |
US7185266B2 (en) | 2003-02-12 | 2007-02-27 | Alacritech, Inc. | Network interface device for error detection using partial CRCS of variable length message portions |
US7076568B2 (en) * | 1997-10-14 | 2006-07-11 | Alacritech, Inc. | Data communication apparatus for computer intelligent network interface card which transfers data between a network and a storage device according designated uniform datagram protocol socket |
US6807581B1 (en) | 2000-09-29 | 2004-10-19 | Alacritech, Inc. | Intelligent network storage interface system |
US6697868B2 (en) * | 2000-02-28 | 2004-02-24 | Alacritech, Inc. | Protocol processing stack for use with intelligent network interface device |
US6226680B1 (en) * | 1997-10-14 | 2001-05-01 | Alacritech, Inc. | Intelligent network interface system method for protocol processing |
US7089326B2 (en) * | 1997-10-14 | 2006-08-08 | Alacritech, Inc. | Fast-path processing for receiving data on TCP connection offload devices |
US8539112B2 (en) | 1997-10-14 | 2013-09-17 | Alacritech, Inc. | TCP/IP offload device |
US6298356B1 (en) * | 1998-01-16 | 2001-10-02 | Aspect Communications Corp. | Methods and apparatus for enabling dynamic resource collaboration |
US6256620B1 (en) * | 1998-01-16 | 2001-07-03 | Aspect Communications | Method and apparatus for monitoring information access |
US7664883B2 (en) | 1998-08-28 | 2010-02-16 | Alacritech, Inc. | Network interface device that fast-path processes solicited session layer read commands |
WO2001013583A2 (en) | 1999-08-16 | 2001-02-22 | Iready Corporation | Internet jack |
US6714964B1 (en) * | 1999-11-12 | 2004-03-30 | Mimeo.Com | System, method and recordable medium for printing services over a network |
US8281237B1 (en) | 1999-11-12 | 2012-10-02 | Mimeo.Com, Inc. | System, method and recordable medium for printing services over a network and graphical user interface |
US7095519B1 (en) * | 1999-11-12 | 2006-08-22 | Mimeo.Com, Inc. | System, method and recordable medium for uploading documents over a network |
US6778533B1 (en) | 2000-01-24 | 2004-08-17 | Ati Technologies, Inc. | Method and system for accessing packetized elementary stream data |
US6785336B1 (en) | 2000-01-24 | 2004-08-31 | Ati Technologies, Inc. | Method and system for retrieving adaptation field data associated with a transport packet |
US6999424B1 (en) | 2000-01-24 | 2006-02-14 | Ati Technologies, Inc. | Method for displaying data |
US6885680B1 (en) | 2000-01-24 | 2005-04-26 | Ati International Srl | Method for synchronizing to a data stream |
US8284845B1 (en) | 2000-01-24 | 2012-10-09 | Ati Technologies Ulc | Method and system for handling data |
US6763390B1 (en) | 2000-01-24 | 2004-07-13 | Ati Technologies, Inc. | Method and system for receiving and framing packetized data |
US7366961B1 (en) | 2000-01-24 | 2008-04-29 | Ati Technologies, Inc. | Method and system for handling errors |
US6988238B1 (en) | 2000-01-24 | 2006-01-17 | Ati Technologies, Inc. | Method and system for handling errors and a system for receiving packet stream data |
US6804266B1 (en) | 2000-01-24 | 2004-10-12 | Ati Technologies, Inc. | Method and apparatus for handling private data from transport stream packets |
US7437428B1 (en) * | 2000-02-16 | 2008-10-14 | Microsoft Corporation | System and method for transferring data over a network |
US6920110B2 (en) * | 2001-02-14 | 2005-07-19 | Microsoft Corporation | System and method for transferring data over a network |
US6988235B2 (en) * | 2000-03-02 | 2006-01-17 | Agere Systems Inc. | Checksum engine and a method of operation thereof |
US7000034B2 (en) * | 2000-03-02 | 2006-02-14 | Agere Systems Inc. | Function interface system and method of processing issued functions between co-processors |
JP2001285400A (ja) * | 2000-03-29 | 2001-10-12 | Kddi Corp | トラヒック統計情報収集方法 |
US6898204B2 (en) * | 2000-04-07 | 2005-05-24 | Broadcom Corporation | Method of determining a collision between a plurality of transmitting stations in a frame-based communications network |
US6674805B1 (en) | 2000-05-02 | 2004-01-06 | Ati Technologies, Inc. | System for controlling a clock signal for synchronizing a counter to a received value and method thereof |
KR100358518B1 (ko) * | 2000-07-03 | 2002-10-30 | 주식회사 지모컴 | 임베디드 하드웨어와 범용 컴퓨터가 결합된 방화벽 시스템 |
US7165175B1 (en) * | 2000-09-06 | 2007-01-16 | Widevine Technologies, Inc. | Apparatus, system and method for selectively encrypting different portions of data sent over a network |
US8019901B2 (en) | 2000-09-29 | 2011-09-13 | Alacritech, Inc. | Intelligent network storage interface system |
US6720074B2 (en) * | 2000-10-26 | 2004-04-13 | Inframat Corporation | Insulator coated magnetic nanoparticulate composites with reduced core loss and method of manufacture thereof |
US7095945B1 (en) | 2000-11-06 | 2006-08-22 | Ati Technologies, Inc. | System for digital time shifting and method thereof |
US7039717B2 (en) * | 2000-11-10 | 2006-05-02 | Nvidia Corporation | Internet modem streaming socket method |
US20020107910A1 (en) * | 2001-02-02 | 2002-08-08 | Yan Zhao | Client/server two-way communication system framework under HTTP protocol |
EP1233346A1 (de) * | 2001-02-14 | 2002-08-21 | Micronas GmbH | Netzwerk-Co-Prozessor für Kraftfahrzeuge |
US20020181507A1 (en) * | 2001-06-01 | 2002-12-05 | Jones Clifton T. | System and method of incremental parsing |
US7860120B1 (en) | 2001-07-27 | 2010-12-28 | Hewlett-Packard Company | Network interface supporting of virtual paths for quality of service with dynamic buffer allocation |
US20030023739A1 (en) * | 2001-07-28 | 2003-01-30 | Lan Ngoc Vu | System and method for multi-tier multi-casting over the Internet |
US20030121835A1 (en) * | 2001-12-31 | 2003-07-03 | Peter Quartararo | Apparatus for and method of sieving biocompatible adsorbent beaded polymers |
US7421515B2 (en) * | 2002-01-17 | 2008-09-02 | Hewlett-Packard Development Company, L.P. | Method and system for communications network |
US7295555B2 (en) | 2002-03-08 | 2007-11-13 | Broadcom Corporation | System and method for identifying upper layer protocol message boundaries |
US20030185220A1 (en) * | 2002-03-27 | 2003-10-02 | Moshe Valenci | Dynamically loading parsing capabilities |
US20030195973A1 (en) * | 2002-04-11 | 2003-10-16 | Raymond Savarda | Methods, systems, and computer program products for processing a packet with layered headers using a data structure that positionally relates the layered headers |
WO2003088081A1 (en) * | 2002-04-17 | 2003-10-23 | Nokia Corporation | Method and network device for synchronization of database data routed through a router |
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 |
US7894480B1 (en) * | 2002-08-27 | 2011-02-22 | Hewlett-Packard Company | Computer system and network interface with hardware based rule checking for embedded firewall |
US9479464B1 (en) * | 2002-08-27 | 2016-10-25 | Hewlett Packard Enterprise Development Lp | Computer system and network interface with hardware based packet filtering and classification |
US7724740B1 (en) * | 2002-08-27 | 2010-05-25 | 3Com Corporation | Computer system and network interface supporting class of service queues |
US7346701B2 (en) | 2002-08-30 | 2008-03-18 | Broadcom Corporation | System and method for TCP offload |
WO2004021626A2 (en) * | 2002-08-30 | 2004-03-11 | Broadcom Corporation | System and method for handling out-of-order frames |
US7551575B1 (en) | 2002-11-05 | 2009-06-23 | Marvell Israel (M.I.S.L.) Ltd. | Context-switching multi channel programmable stream parser |
US20040088262A1 (en) * | 2002-11-06 | 2004-05-06 | Alacritech, Inc. | Enabling an enhanced function of an electronic device |
US20050060420A1 (en) * | 2003-09-11 | 2005-03-17 | Kovacevic Branko D. | System for decoding multimedia data and method thereof |
US6996070B2 (en) * | 2003-12-05 | 2006-02-07 | Alacritech, Inc. | TCP/IP offload device with reduced sequential processing |
US8176545B1 (en) | 2003-12-19 | 2012-05-08 | Nvidia Corporation | Integrated policy checking system and method |
US8065439B1 (en) | 2003-12-19 | 2011-11-22 | Nvidia Corporation | System and method for using metadata in the context of a transport offload engine |
US7814219B2 (en) * | 2003-12-19 | 2010-10-12 | Intel Corporation | Method, apparatus, system, and article of manufacture for grouping packets |
US8549170B2 (en) * | 2003-12-19 | 2013-10-01 | Nvidia Corporation | Retransmission system and method for a transport offload engine |
US7899913B2 (en) | 2003-12-19 | 2011-03-01 | Nvidia Corporation | Connection management system and method for a transport offload engine |
US7206872B2 (en) * | 2004-02-20 | 2007-04-17 | Nvidia Corporation | System and method for insertion of markers into a data stream |
US7698413B1 (en) | 2004-04-12 | 2010-04-13 | Nvidia Corporation | Method and apparatus for accessing and maintaining socket control information for high speed network connections |
US8248939B1 (en) | 2004-10-08 | 2012-08-21 | Alacritech, Inc. | Transferring control of TCP connections between hierarchy of processing mechanisms |
US7957379B2 (en) | 2004-10-19 | 2011-06-07 | Nvidia Corporation | System and method for processing RX packets in high speed network applications using an RX FIFO buffer |
US7620071B2 (en) | 2004-11-16 | 2009-11-17 | Intel Corporation | Packet coalescing |
US7508771B2 (en) * | 2005-04-01 | 2009-03-24 | International Business Machines Corporation | Method for reducing latency in a host ethernet adapter (HEA) |
US7606166B2 (en) * | 2005-04-01 | 2009-10-20 | International Business Machines Corporation | System and method for computing a blind checksum in a host ethernet adapter (HEA) |
US7903687B2 (en) | 2005-04-01 | 2011-03-08 | International Business Machines Corporation | Method for scheduling, writing, and reading data inside the partitioned buffer of a switch, router or packet processing device |
US7577151B2 (en) * | 2005-04-01 | 2009-08-18 | International Business Machines Corporation | Method and apparatus for providing a network connection table |
US20060221953A1 (en) * | 2005-04-01 | 2006-10-05 | Claude Basso | Method and apparatus for blind checksum and correction for network transmissions |
US7706409B2 (en) | 2005-04-01 | 2010-04-27 | International Business Machines Corporation | System and method for parsing, filtering, and computing the checksum in a host Ethernet adapter (HEA) |
US7881332B2 (en) | 2005-04-01 | 2011-02-01 | International Business Machines Corporation | Configurable ports for a host ethernet adapter |
US7586936B2 (en) | 2005-04-01 | 2009-09-08 | International Business Machines Corporation | Host Ethernet adapter for networking offload in server environment |
US7492771B2 (en) | 2005-04-01 | 2009-02-17 | International Business Machines Corporation | Method for performing a packet header lookup |
US7697536B2 (en) * | 2005-04-01 | 2010-04-13 | International Business Machines Corporation | Network communications for operating system partitions |
CN100369012C (zh) * | 2005-08-19 | 2008-02-13 | 英业达股份有限公司 | 计算机通信接口传输控制码解析方法及系统 |
US7738500B1 (en) | 2005-12-14 | 2010-06-15 | Alacritech, Inc. | TCP timestamp synchronization for network connections that are offloaded to network interface devices |
TWI283977B (en) * | 2005-12-16 | 2007-07-11 | Ind Tech Res Inst | Adaptive interrupts coalescing system with recognizing minimum delay packets |
CN100576822C (zh) | 2006-08-23 | 2009-12-30 | 上海贝尔阿尔卡特股份有限公司 | 无线通信网络中的数据传输及解析方法及其装置 |
WO2008057974A2 (en) * | 2006-11-02 | 2008-05-15 | Ocean Broadband Networks, Inc. | Passive optical network system management |
US7843919B2 (en) * | 2008-03-20 | 2010-11-30 | International Business Machines Corporation | Ethernet virtualization using a network packet alteration |
US8539513B1 (en) | 2008-04-01 | 2013-09-17 | Alacritech, Inc. | Accelerating data transfer in a virtual computer system with tightly coupled TCP connections |
US9008090B2 (en) * | 2008-04-25 | 2015-04-14 | Panasonic Intellectual Property Management Co.,Ltd. | Communication apparatus and communication method |
US8341286B1 (en) | 2008-07-31 | 2012-12-25 | Alacritech, Inc. | TCP offload send optimization |
US9306793B1 (en) | 2008-10-22 | 2016-04-05 | Alacritech, Inc. | TCP offload device that batches session layer headers to reduce interrupts as well as CPU copies |
CN101958838B (zh) * | 2010-10-14 | 2012-08-22 | 联动优势科技有限公司 | 数据访问方法及装置 |
US8930602B2 (en) | 2011-08-31 | 2015-01-06 | Intel Corporation | Providing adaptive bandwidth allocation for a fixed priority arbiter |
US9021156B2 (en) | 2011-08-31 | 2015-04-28 | Prashanth Nimmala | Integrating intellectual property (IP) blocks into a processor |
US8874976B2 (en) | 2011-09-29 | 2014-10-28 | Intel Corporation | Providing error handling support to legacy devices |
US8929373B2 (en) * | 2011-09-29 | 2015-01-06 | Intel Corporation | Sending packets with expanded headers |
US8775700B2 (en) | 2011-09-29 | 2014-07-08 | Intel Corporation | Issuing requests to a fabric |
US8805926B2 (en) | 2011-09-29 | 2014-08-12 | Intel Corporation | Common idle state, active state and credit management for an interface |
US8713234B2 (en) | 2011-09-29 | 2014-04-29 | Intel Corporation | Supporting multiple channels of a single interface |
US8711875B2 (en) | 2011-09-29 | 2014-04-29 | Intel Corporation | Aggregating completion messages in a sideband interface |
US8713240B2 (en) | 2011-09-29 | 2014-04-29 | Intel Corporation | Providing multiple decode options for a system-on-chip (SoC) fabric |
US9053251B2 (en) | 2011-11-29 | 2015-06-09 | Intel Corporation | Providing a sideband message interface for system on a chip (SoC) |
US9282173B2 (en) | 2012-02-17 | 2016-03-08 | Viavi Solutions Inc. | Reconfigurable packet header parsing |
CZ303954B6 (cs) * | 2012-04-17 | 2013-07-10 | CESNET, zájmové sdruzení právnických osob | Zapojení pro rychlou analýzu hlavicek paketu prenásených po datové sbernici |
US9614891B1 (en) * | 2013-09-23 | 2017-04-04 | Amazon Technologies, Inc. | Assembling communications based on captured packets |
US20170099119A1 (en) * | 2015-10-02 | 2017-04-06 | Samsung Electronics Co., Ltd. | Signalling of checksum for 802.11 mac headers |
US10911261B2 (en) | 2016-12-19 | 2021-02-02 | Intel Corporation | Method, apparatus and system for hierarchical network on chip routing |
US10846126B2 (en) | 2016-12-28 | 2020-11-24 | Intel Corporation | Method, apparatus and system for handling non-posted memory write transactions in a fabric |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5058110A (en) * | 1989-05-03 | 1991-10-15 | Ultra Network Technologies | Protocol processor |
EP0464562B1 (en) * | 1990-06-29 | 1997-04-23 | Digital Equipment Corporation | Method and apparatus for decryption of an information packet having a format subject to modification |
US5235644A (en) * | 1990-06-29 | 1993-08-10 | Digital Equipment Corporation | Probabilistic cryptographic processing method |
US5500860A (en) * | 1991-06-14 | 1996-03-19 | Digital Equipment Corporation | Router using multiple hop redirect messages to enable bridge like data forwarding |
US5228083A (en) * | 1991-06-28 | 1993-07-13 | Digital Equipment Corporation | Cryptographic processing in a communication network, using a single cryptographic engine |
GB9326476D0 (en) * | 1993-12-24 | 1994-02-23 | Newbridge Networks Corp | Network |
-
1999
- 1999-07-30 US US09/364,096 patent/US6427169B1/en not_active Expired - Lifetime
-
2000
- 2000-06-16 EP EP00942913A patent/EP1203478A2/en not_active Withdrawn
- 2000-06-16 CN CNB2006100090573A patent/CN100479437C/zh not_active Expired - Fee Related
- 2000-06-16 CN CN00813564A patent/CN1377548A/zh active Pending
- 2000-06-16 CA CA002380319A patent/CA2380319C/en not_active Expired - Fee Related
- 2000-06-16 WO PCT/US2000/016762 patent/WO2001010096A2/en active Application Filing
- 2000-06-16 AU AU57466/00A patent/AU5746600A/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
CN1377548A (zh) | 2002-10-30 |
EP1203478A2 (en) | 2002-05-08 |
CA2380319A1 (en) | 2001-02-08 |
WO2001010096A3 (en) | 2001-08-30 |
CA2380319C (en) | 2005-11-01 |
AU5746600A (en) | 2001-02-19 |
CN1819555A (zh) | 2006-08-16 |
WO2001010096A2 (en) | 2001-02-08 |
US6427169B1 (en) | 2002-07-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100479437C (zh) | 解析分组头标的方法和计算机系统 | |
US20070086480A1 (en) | Associating a packet with a flow | |
US6728929B1 (en) | System and method to insert a TCP checksum in a protocol neutral manner | |
US6289023B1 (en) | Hardware checksum assist for network protocol stacks | |
Clark et al. | An analysis of TCP processing overhead | |
US6449656B1 (en) | Storing a frame header | |
US8495257B2 (en) | Network direct memory access | |
US7653754B2 (en) | Method, system and protocol that enable unrestricted user-level access to a network interface adapter | |
US8255600B2 (en) | Method and system for interlocking data integrity for network adapters | |
CN101053234B (zh) | 用于越过具有进入的分组数据的dfa图像的方法和装置 | |
US20130208630A1 (en) | Avionics full-duplex switched ethernet network | |
CN101043454B (zh) | 用于在传输数据分组时提高安全性的方法、设备和系统 | |
CN102427446A (zh) | 分组合并 | |
WO2000060793A2 (en) | Firewall including local bus | |
JP2006325054A (ja) | Tcp/ip受信処理回路及びそれを具備する半導体集積回路 | |
CA2687695A1 (en) | Method and system for detecting data modification within computing device | |
US20070242682A1 (en) | Information processing device, information processing method, program, and recording medium | |
RU2708031C1 (ru) | Способ отправки передаваемых данных от передающего устройства к приемному устройству для обработки передаваемых данных, а также средство для осуществления способа | |
WO2005104478A2 (en) | Network interface card with rdma capability | |
US20200220952A1 (en) | System and method for accelerating iscsi command processing | |
US20110258444A1 (en) | Network Controller Decryption | |
US8737431B2 (en) | Checking data integrity | |
US11599649B2 (en) | Method and apparatus for managing transmission of secure data packets | |
JP2015216450A (ja) | 情報処理装置、情報処理システム及び中継プログラム | |
EP1049292A2 (en) | System and method for network monitoring |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20090415 Termination date: 20170616 |
|
CF01 | Termination of patent right due to non-payment of annual fee |