CN101253745B - 用于透明tcp卸载的方法和系统 - Google Patents
用于透明tcp卸载的方法和系统 Download PDFInfo
- Publication number
- CN101253745B CN101253745B CN2006800262474A CN200680026247A CN101253745B CN 101253745 B CN101253745 B CN 101253745B CN 2006800262474 A CN2006800262474 A CN 2006800262474A CN 200680026247 A CN200680026247 A CN 200680026247A CN 101253745 B CN101253745 B CN 101253745B
- Authority
- CN
- China
- Prior art keywords
- tcp
- tcp segments
- transmission control
- control protocol
- frame
- 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
- 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]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/10—Program control for peripheral devices
- G06F13/12—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
- G06F13/124—Program 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/128—Program 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
-
- 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
-
- 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/19—Flow control; Congestion control at layers above the network layer
- H04L47/193—Flow control; Congestion control at layers above the network layer at the transport layer, e.g. TCP related
-
- 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/2441—Traffic characterised by specific attributes, e.g. priority or QoS relying on flow classification, e.g. using integrated services [IntServ]
-
- 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/27—Evaluation or update of window size, e.g. using information derived from acknowledged [ACK] packets
-
- 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/36—Flow control; Congestion control by determining packet size, e.g. maximum transfer unit [MTU]
-
- 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/41—Flow control; Congestion control by acting on aggregated flows or links
-
- 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/9063—Intermediate storage in different physical parts of a node or terminal
-
- 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/9084—Reactions to storage capacity overflow
- H04L49/9089—Reactions to storage capacity overflow replacing packets in a storage arrangement, e.g. pushout
- H04L49/9094—Arrangements for simultaneous transmit and receive, e.g. simultaneous reading/writing from/to the storage element
-
- 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/12—Protocol engines
-
- 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]
- H04L69/163—In-band adaptation of TCP data exchange; In-band control procedures
-
- 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/166—IP fragmentation; TCP segmentation
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/50—Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate
Abstract
本发明涉及一种透明传输控制协议(TCP)卸载的方法和系统,所述方法的各个方面包括:在网络接口卡处理器中收集TCP段,但不将状态信息转移到主机系统。收集的TCP段缓存在结合器中。结合器可检验与收集的TCP段相关的网络流在流查找表(FLT)中具有入口。当FLT已满时,结合器可关闭当前入口,并将网络流指派到可用入口。结合器也可更新FLT中的信息。当终止TCP段收集的事件发生时,结合器可基于收集的TCP段生成单个聚合的TCP段。可将聚合的TCP段和状态信息传送到主机以进行处理。
Description
技术领域
本发明涉及TCP数据和相关的TCP信息的处理。更具体地说,本发明的实施例涉及用于透明TCP卸载(transparent TCP offload)的方法和系统。
背景技术
当前多种用于降低TCP/IP栈处理功率的方法。在TCP卸载引擎(TOE)中,卸载引擎执行全部或大部分TCP处理,这些TCP处理出现在数据流的上层。这个方法存在各种缺陷。TTOE与操作系统紧密相联,因此其解决方案需要依赖操作系统,并可能需要对操作系统进行改变以实现对其的支持。TTOE可能需要采用某种手动配置的肩并肩的栈处理方案,这可由其应用完成,例如,为加速连接明确地指定套接字地址族。TTOE也可需要某些由IT管理员完成的手动配置,例如,为加速连接明确地指定IP子网络地址以选择卸载哪一个TCP流,并且由于卸载引擎需要执行TCP数据包处理,使得它非常的复杂。
大分段卸载(large-segment-offload,LSO)/传输段卸载(transmit segmentoffload,TSO)可通过减少传输数据包处理来降低所要求的主机处理功率。在这个方法中,主机将比最大传输单元(the maximum transmission unit,MTU)更大的传输单元发送到NIC,且NIC依照MTU将它们切成段。因为主机处理部分与所传输单元的数量线性相关,这将降低所要求的主机处理功率。当其有效地降低传输数据包处理时,LSO并不有助于接收数据包处理。另外,对于由主机发送的每个大传输单元,主机将从远端接收多个ACK,每个ACK用于每个MTU大小的段。所述多个ACK需要消耗有限的且昂贵的带宽,因此将降低吞吐量和效率。
在大接收卸载(large receive offload,LRO)中,在无状态(stateless)接收卸载机制中,可依照哈希函数(hash function)将TCP流划分成多个硬件队列,这个划分将保证特定的TCP流将一直直接流入同一硬件队列。针对每个硬件队列,该机制利用中断结合(interrupt coalescing)来扫描队列并将属于同一TCP流的队列上的后续数据包聚合(aggregate)到单个大接收单元。
虽然该机制并不需要来自NIC的任何附加硬件和多个硬件队列,但是其可能有不同性能限制。例如,如果流数大于硬件队列数,多个流将掉入同一队列,导致没有用于该队列的LRO聚合。如果流数大于硬件队列数的两倍,在任何流上均不执行LRO聚合。该聚合将限于在一个中断周期中主机可用的数据包的数量。如果中断周期短,流数并不小,主机CPU可用于在每个流上聚合的数据包的数量较小,即使硬件队列的数量较大,也将导致LRO聚合受限或不进行聚合。LRO聚合可在主机CPU上执行,这将导致附加处理。驱动器可将TCP栈转交到缓冲器的连接表中,所述缓冲器包括报头缓冲器和紧跟其后的一系列数据缓冲器,与所有的数据均连续地传输到一个缓冲器相比,这将需要更多的处理。
比较本发明后续将要结合附图介绍的系统的各个特征,当前和传统技术的其它局限性和弊端对于本领域的普通技术人员来说是显而易见的。
发明内容
本发明提供了一种用于透明TCP卸载系统和/或方法,结合至少一幅附图进行了充分的展现和描述,并在权利要求中得到了更完整的阐述。
本发明的各种优点、各个方面和创新特征,以及其中所示例的实施例的细节,将在以下的描述和附图中进行详细介绍。
附图说明
图1A是根据本发明实施例的用于透明TCP卸载的典型系统的框图;
图1B是根据本发明实施例的用于透明TCP卸载的又一典型系统的框图;
图1C是根据本发明实施例的用于透明TCP卸载的典型系统的可选实施例的示意图;
图1D是根据本发明实施例的用于处理透明TCP卸载的典型系统的框图;
图1E是根据本发明实施例的用于帧接收和放置(placement)的典型步骤流程图;
图1F示出了根据本发明实施例的即将被聚合和无序接收的TCP/IP帧的典型顺序;
图2A示出了根据本发明实施例的即将被聚合和有序接收的TCP/IP帧的典型顺序;
图2B示出了根据本发明实施例的典型的聚合的TCP/IP帧,所述聚合的TCP/IP帧从按照图2A中的TCP帧的序列信息中生成;
图2C是根据本发明实施例的用于当数据包P3和数据包P4未按照传输顺序到达时,用于处理无序数据的典型步骤示意图;
图2D是根据本发明实施例的典型透明TCP卸载的状态图;
图3是根据本发明实施例的透明TCP卸载的典型步骤流程图。
具体实施方式
本发明公开了一种用于透明TCP卸载的系统和方法。该方法和系统的各个方面可包括:结合器(coalescer),用于收集网络接口卡(NIC)中的一个或多个TCP段,而不将这些TCP段中的每一个的状态信息单独传输到主机系统。可将收集的TCP段临时缓存在结合器中。结合器可校验与收集的TCP段相关的网络流在流查找表中(FLT)有入口(entry)。在FLT已满的例子中,结合器可关闭当前入口,并将该网络流分配到可用入口。结合器可更新FLT中的信息。当发生终止TCP段收集的事件时,结合器可基于收集的TCP段生成单个聚合的TCP段。该单个聚合的TCP段可包括多个TCP段,可看作是大接收段。可将该聚合的TCP段和状态信息传送到主机系统用于进一步处理。
在传统的处理中,所述接收到的多个TCP段中的每一个将由主机系统的中主机处理器单独处理。在接收器侧的协议处理和数据放置方面,TCP处理需要大量的CPU处理功率。当前的处理系统和方法包括将TCP状态转移到专用的硬件(如NIC),其中需要对主机TCP栈和/或底层硬件作重大修改。
图1A是根据本发明实施例的用于透明TCP卸载的典型系统的框图。因此,图1A中的系统可用于处理传输控制协议(TCP)数据报或数据包的透明TCP卸载。参照图1A,该系统可包括:如CPU 102、存储控制器104、主机存储器106、主机接口108、网络子系统110和以太网112。网络子系统110可包括:如透明TCP-激活以太网控制器(TTEEC)或透明TCP卸载引擎(TTOE)114。网络子系统110可包括:如网络接口卡(NIC)。主机接口108可以是,如周边元件扩展接口(peripheral component interconnect,PCI)、PCI-X、PCI-Express、ISA、SCSI或其它类型的总线。存储控制器106可与CPU 104、存储器106和主机接口108相连。主机接口108可通过TTEEC/TTOE114与网络子系统110相连。
图1B是根据本发明实施例的用于透明TCP卸载的又一典型系统的框图。参照图1B,该系统可包括:如CPU 102、主机存储器106、专用存储器116和芯片组118。芯片组118可包括:如网络子系统110和存储控制器104。芯片组118可与CPU 102、主机存储器106、专用存储器116和以太网112相连。芯片组118的网络子系统110可与以太网112相连。网络子系统110可包括:如与以太网112相连的TTEEC/TTOE 114。例如,网络子系统110可通过有线和/或无线连接与以太网112通信。例如,该无线连接可以是由IEEE 802.11标准支持的无线本地局域网(WLAN)连接。网络子系统110可包括:如片上(on-chip)存储器113。专用存储器116可为上下文(context)和/或数据提供缓冲区。
网络子系统110可包括处理器,如结合器111。结合器111可包括合适的逻辑、电路和/或代码,用于处理TCP数据的收集和结合。在这一点上,结合器111可使用流查找表(FLT)以保持与当前网络流相关的信息,为该当前网络流收集TCP段,用于聚合。例如,FLT可存储到网络子系统110中。例如,FLT可包括至少一个:源IP地址、目标IP地址、源TCP地址、目标TCP地址。在本发明的可选实施例中,至少两个不同的表(例如,包括4-元组(tuple)查找的表)可用于根据数据包的流来分类输入数据包。例如,4-元组查找表可包括以下中的至少一个:例如源IP地址、目标IP地址、源TCP地址、目标TCP地址。流上下文表可包括用于聚合的状态变量,如TCP序列数字。
FLT可包括至少一个主机缓冲器或存储器地址,该地址包括:例如,用于非连续存储器的分散集中列表(SGL)、累积确认(cumulativeacknowledgment,ACK)、TCP报头和选项的备份、IP报头和选项的备份、以太网报头的备份、和/或积聚的TCP标记。当发生终止事件时,结合器111可用于从聚合的或收集的TCP段生成单个聚合的TCP段。例如,单个聚合的TCP段可被传递到主机存储器106。
尽管图中示出如CPU和以太网,但本发明并不限于这些例子,并可分别使用任何类型的处理器、任何类型的数据链路层或物理媒介。因此,虽然如图所示,图1A中的TTEC或TTOE 114与以太网112相连,其可适用于任何类型的数据链路层或物理媒介。此外,本发明也可构思图1A-B中示出的元件的不同程度的结合和分割。例如,TTEEC/TTOE 114可以是与嵌在底板上的芯片组118分开的集成芯片,或者嵌置在NIC中。类似地,结合器111可以是与嵌在底板上的芯片组118分开的集成芯片,或者嵌置在NIC中。另外,专用存储器116可集成在图1B中的芯片组118中或网络子系统110中。
图1C是根据本发明实施例的用于透明TCP卸载的典型系统的可选实施例的框图。参照图1C,示出了主机处理器124、主机存储器/缓冲器126、软件算法模块134和NIC模块128。NIC模块128可包括NIC处理器130,如结合器131和简化的NIC存储器/缓冲器模块132之类的处理器。例如,NIC模块128可通过有线和/或无线连接与外部网络通信。例如,无线连接可为由IEE 802.11标准支持的无线局域网(WLAN)连接。
结合器131可为位于数据包接收路径中的专用处理器或硬件状态机。主机TCP栈可包括可用于管理TCO协议处理的软件,并可为操作系统的一部分,该操作系统可以是微软视窗(Microsoft windows)或免费多用户多任务操作系统(Linux)。结合器131可包括合适的逻辑、电路和/或代码,用于累积或结合TCP数据。在这一点上,结合器131可使用流查找表(FLT)以保持与当前网络流相关的信息,为该当前网络流收集TCP段,用于聚合。例如,FLT可存储到简化的BIC存储器/缓冲器模块132。当发生终止事件时,结合器131可用于从聚合的或收集的TCP段生成单个聚合的TCP段。例如,单个聚合的TCP段可被传送到主机存储器/缓冲器126。
根据本发明的某个实施例,为主机提供了用于TCP处理的单个聚合TCP段,显著地降低了主机124的处理开销。此外,因为没有TCP状态信息的转移,专用硬件(如NIC 128)可通过结合或积累多个接收到的TCP段来协助处理接收到的TCP段,以减少每个数据包的处理开销。
在传统的TCP处理系统中,在TCP连接的第一段到来之前,应了解关于该TCP连接的某些信息。根据本发明的各种实施例,并不需要在第一TCP段到来之前了解TCP连接,因为TCP状态或上下文信息还是由主机TCP栈单独管理,且在任何给定时间,在硬件栈和软件栈之间并没有状态信息的转移。
在本发明的一个实施例,可从主机栈方面(perspective)提供无状态卸载机制,同时从卸载设备方面提供有状态(state full)卸载机制。当将所述卸载机制与TTOE进行比较时,达到相当的性能增益(comparable performancegain)。透明TCP卸载(TTO)通过允许主机系统处理大于MTU的接收和发送数据单元,降低了主机的处理功率。在本发明的一个典型实施例中,对64KB的处理数据单元(PDU)而不是1.5KB的PDU进行处理,以显著地降低数据包速率,进而降低用于数据包处理的主机处理功率。
在TTO中,不能在主机操作系统和包括TTO引擎的NIC中使用同步交换(handshake)。在识别新的流并用于卸载的过程中,TTO引擎可自主运行。在发射侧的卸载可与LSO类似,在此主机发送大传输单元,且TTO引擎根据最大段大小(maximum segment size,MSS)将这些大传输单元切割成较小传输数据包。
接收侧的透明TCP卸载可通过以下来完成:聚合同一流的多个接收到的数据包,并将它们传送到主机,就像它们在一个数据包(当接收到的是数据的数据包时,其可为较大的数据包,当接收到的是ACK数据包时,其可为聚合的ACK数据包)中接收一样。主机中的处理可与接收到的较大的数据包的处理类似。在TCP流聚合的情况下,可定义一些规则以确定是否要聚合数据包。可设置聚合规则以在不增加往返行程时间(round trip time)的情况下,允许尽可能多的聚合。这样是否聚合的决定取决于接收到的数据和在没有延时的情况下将该数据传送到主机的重要性。使用用于卸载决定的传输信息,该聚合可与发送-接收耦合一起执行,在此发射器和接收器耦联,且该流可当作双向流处理。可在每个流中获取TTO中的接收卸载中的上下文信息。在这一点上,对于每个接收到的数据包,下一包头(packet header)可用于检测其所属的流,且该数据包更新该流的上下文。
当发射器和接收器耦联时,可搜索发送的网络数据包和接收的网络数据包,以确定这些数据包属于哪一个特定的网络流。发送的网络数据包可用于更新所述流的上下文,这些上下文可用于接收卸载。
图1D是根据本发明实施例的用于处理透明TCP卸载的典型系统的框图。参照图1D,示出了输入数据包帧141、帧解析器143、关联模块149、上下文获取模块151、多个片上高速缓冲存储器147、多个片下(off-chip)存储模块160、多个片上存储模块162、RX处理模块150、帧缓冲器154、DMA引擎163、TCP编码模块157、主机总线165、多个主机缓冲器167。RX处理模块150可包括结合器152。
帧解析器143可包括合适的逻辑、电路和/或代码,可激活L2以太网处理,包括:如输入帧的地址滤波、帧验证和错误检测。不同于普通的以太网控制器,处理的下一步可包括:如帧解析器143中的L3(如IP处理)和L4(如TCP处理)。例如,通过在结合的TCP/IP流上处理通信量,TTEEC 114可降低主机CPU 102的使用和存储器带宽。例如,TTEEC 114可基于数据包解析信息和元组145确定输入数据包所属的协议。如果该协议是TCP,接着TTEEC 114将检测该数据包是否对应卸载TCP流,例如,对于该TCP流,至少一部分TCP状态信息可由TTEEC 114保存。如果该数据包对应卸载连接,接着TTEEC 114可指示该帧的数据有效载荷部分的数据动作。有效载荷数据的目的地由该帧中的流状态信息和方向信息共同确定。例如,该目的地可以是主机存储器106。最后,TTEEC 114可更新其内部TCP和流状态的更高级别,而不需与主机TCP栈的连接状态协调,并可从其内部流状态获得主机缓冲器地址和长度。
接收系统构架可包括:如控制路径处理140和数据动作引擎142。图1D的上部示出的控制路径上的系统元件可设计为处理各种处理过程,这些处理过程用于完成如具备最大灵活性、效率和目标网速的L3/L4或更高级的处理。例如,这些处理过程的结果可包括一个或多个数据包识别卡,这些数据包识别卡可用于提供携带与帧有效载荷数据相关的信息的控制结构。当在不同的模块中处理这些数据包时,可以在TTEEC 114中生成这些结果。数据路径142可在控制处理完成的基础上转移帧的有效载荷数据部分或原始的数据包155,例如从片上数据包帧缓冲器154转移到直接内存存取(DMA)引擎163,接着通过由处理选定的主机总线165转移到主机缓冲器167。数据路径142到DMA引擎可包括数据包数据区和任意包头161。
例如,接收系统可完成下列一个或多个:解析TCP/IP报头145、在关联模块149中关联帧和TCP/IP数据流、在上下文获取模块151中获取TCP流上下文、在RX处理模块150中处理TCP/IP报头、确定报头/数据边界并更新状态153、将数据映射到主机缓冲器、并通过DMA引擎163将数据转移到主机缓冲器167。可通过DMA引擎163在芯片上消耗掉报头或者将其转移到主机缓冲器167。
数据包帧缓冲器154可为接收系统构架中的任意模块。例如,出于同一目的,其可用于在传统的L2 NIC中使用先进先出(FIFO)数据结构,或用于存储针对附加处理的高层通信量。接收系统中的数据包帧缓冲器154并不限于单个示例。当完成控制路径140处理后,数据路径142可在数据处理级中一次或多次存储数据。
在本发明的一个典型实施例中,所述的结合操作的至少一部分针对图1B中的结合器111和/或针对图1C中的结合器131,并可在图1D中的RX处理模块150中的结合器152中执行。在这个例子中,TCP数据的缓冲或存储可由如帧缓冲器154执行。此外,结合器152使用的FLT可使用如片下存储160和/或片上存储162来实现。
在本发明的一个实施例中,在流的生命周期中(lifetime),可在某个点检测到新的流。当新的流被检测到时,其状态是未知的,且第一数据包可用于更新流状态直到已知该流是整齐的。执行TTO的设备也可支持其它的卸载类型,如TOE、RDMA或iSCSI卸载。在这种情况下,可将用于TTO的FLT与用于其它卸载类型的连接搜索共享,在指示流的卸载类型的FLT中,这些卸载类型具有各自的入口。属于其它卸载类型的流的数据包可不属于TTO的可选类型。一旦检测到新的流,该流可始于基本初始化上下文。可在FLT中创建具有流ID的入口。
在本发明的另一实施例中,同一流的多个段可在TTO中聚合以达到接收聚合长度(receive aggregation length),向主机提供用于处理的更大段,如果聚合是被允许的,可将接收到的数据包放置在主机存储器126中,但并不将其传送到主机。可替换地,主机处理器124可更新数据包所属流的上下文。如果没有未传送的在先聚合的数据包,新的输入数据包可直接将该数据包单独传送或可作为表示该数据包和在先接收到的数据包的单个数据包。在本发明的另一实施例中,数据包未被传送但可更新流的上下文。
如果至少一个下列事件在TCP水平发生,可发生终止事件且该数据包可不聚合:(1)当其从接收到的序号(SN)和流的上下文中生成时,该数据不是有序的;(2)检测到至少一个数据包具有TCP标记而不是ACK标记(如PUSH标记);(3)检测到具有选择性确认(SACK)信息的至少一个数据包;或(4)所接收的该ACK SN大于传送的ACK SN,并请求停止聚合。类似地,如果至少一个下列事件在IP水平发生,可发生终止事件且该数据包可不聚合:(1)IP报头中的服务(TOS)域不同于聚合的在先数据包的TOS域;或接收到的数据包是IP分段(fragment)。
当将多个数据包聚合到单个数据包时,聚合的数据包头可包括其包括的所有单个数据包的聚合报头。在本发明的一个典型实施例中,用于聚合的多个TCP规则可如下。例如,(1)在聚合的报头中的SN时第一或最旧的数据包的SN;(2)ACK SN是最后或最新的段的SN;(3)聚合的报头的长度是所有聚合的数据包的长度的总和;(4)聚合的报头中的窗口是在最后或最新聚合的数据包中接收到的窗口;(5)聚合的报头中的时戳(TS)是在第一或最旧聚合的数据包中接收到的TS;(6)聚合的报头中的时戳回波显示(TS-echo)是在第一或最旧聚合的数据包中接收到的TS-echo;且(7)在聚合的报头中接收到的检验和是所有聚合的数据包的聚合检验和。
在本发明的典型实施例中,可提供多个IP域聚合规则。如:(1)聚合的报头中的SN是第一或最旧的数据包的SN;(2)该ACK SN是最后或最新的段的SN;(3)聚合的报头的长度是所有聚合的数据包的长度的总和;(4)聚合的报头中的窗口是在第一或最旧的数据包中接收到的窗口;(5)聚合的报头中的时戳(TS)是在第一或最旧的数据包中接收到的TS;(6)聚合的报头中的时戳禁止(TS-echo)是在第一或最旧的数据包中接收到的TS-echo;且(7)在聚合的报头中接收到的检验和是所有聚合的数据包的检验和的收集。
在本发明的一个典型实施例中,可提供多个IP域聚合规则。例如,(1)聚合的报头的TOS是所有的聚合的数据包的TOS;(2)聚合的报头的生存时间(TTL)是所有输入TTL中的最小值;(3)聚合的报头的长度是聚合的数据包的长度和;(4)对于聚合的数据包,聚合的报头的分段偏移量(fragmentoffset)可为0;且(5)聚合的报头的数据包ID是最后接收到的ID。
可将接收到的数据包聚合,直到由于终止事件发生,使得接收到的数据包不能被聚合,或者该流超时(timeout)届满,或聚合的数据包超过RAL。可这样执行所述超时,当流上的第一数据包用于放置而非发送时,将所述超时设置为一个值,超时聚合值。其后的聚合的数据包可不改变该超时。当由于超时期满将要发送该数据包时,可取消超时并在不会被发送的下一第一数据包中重新设置超时。然而,本发明的其它实施例可通过周期性扫描所有流以提供超时。
在本发明的典型实施例中,接收到的ACK SN可用来确定聚合纯ACK 的规则或确定由于接收到的ACK SN而停止聚合具有数据的数据包的规则。可从不将复制的纯ACK聚合。当复制的纯ACK被接收时,它们可使在先聚合的数据包被发送,且该纯ACK将迅速被分开发送。接收到的ACK SN也可用于停止聚合并将半连接(pending)聚合数据发送到主机TCP/IP栈。
在本发明的典型实施例中,可根据ACK SN提供用于停止聚合的多个规则。例如,(1)如果还没有发送经确认的(ACKed)字节数,则考虑接收到的段和未发送的在先段超过门限值,如在字节中的接收确认字节聚合(ReceiveAckedBytesAggretation);或(2)自第一数据包的到达的时间超过门限值,如超时确认聚合(TimeoutAckAggregation),该数据包可使接收到的ACK SN往前。为了这个目的,每个流可能需要第二计时器或其它的机制,如对这些流执行周期性扫描。
在本发明的又一典型实施例中,如果至少一个下列事件发生,可从主机存储器中移除这些流:(1)在接收侧检测到重设(RST)标记;(2)在接收侧检测到结束(FIN)标记;(3)在预定时间(如终止无活动时间,TerminateNoActivityTime)的流上无接收活动;(4)接收方向的保持活动(KeepAlive)数据包未经确认。可使用最近最少使用(least recently used,LRU)的高速缓冲存储器来替代超时规则,以从主机存储器中移除这些流。
图1E是根据本发明实施例的用于帧接收和放置(placement)的典型步骤流程图。参照图1D和图1E,在步骤180中,网络子系统110可从例如以太网112接收帧。在步骤182中,帧解析器可对该帧进行解析,以找出如L3报头和L4报头。该帧解析器可对L2报头进行处理,以为L3报头(如IP版本4(IPv4)报头或IP版本6(IPv6)报头)处理作准备。IP报头版本域可确定该帧是否携带IPv4数据报或IPv6数据报。
例如,如果IP报头版本域携带值为4,那么该帧可携带IPv4数据报。例如,如果IP报头版本域携带6个值,那么该帧可携带IPv6数据报。可从选取IP报头域,获得如IP源(IP SRC)地址、IP目的地(IP DST)地址和IPv4报头“协议”域或IPv6“下一报头”。如果IPv4“协议”报头域或IPv6“下一报头”报头域携带值为6,那么下一报头可为TCP报头。
接下来发生剩余的IP处理,其方式可类似于在传统的现成(off-the-shelf)软件栈中的处理。该执行可从使用嵌置的处理器上的固件,到使用专用的有限状态机(FAM)或处理器和状态机的混合体。例如,该执行可随着由一个或多个处理器、状态机或它们的混合体进行的处理的多个阶段而改变。IP处理可包括,但不限于:提取关于如长度、有效性和分段的信息。也可对定位TCP报头进行解析和处理。例如,对TCP报头的解析可提取与接收帧相关的特定网络流的源端口和目的端口的信息。
TCP处理可分为多个附加处理阶段。在步骤184中,该帧可与端到端TCP/IP连接相关。在L2处理后,在一个实施例中,本发明可提供经校验的TCP检验和。例如,该流可由下列4-元组中的一部分定义:IP源地址(IP SRCaddr);IP目的地地址(IP DST addr);TCP源端口号(TCP SRC);和TCP目的地端口号(TCP DST)。根据相关的IP地址的选择,该处理可用于IPv4或IPv6。
如步骤812中帧解析的结果,可完全地提取该4-元组。关联硬件(association hardware)可将接收到的4-元组与存储在TTEEC/TTOE中的4-元组清单进行比较。TTEEC/TTOE 114可保存元组清单,该元组可表示如由TTEEC/TTOE 114管理的聚合流或卸载连接。对于片上和片下选项,用于存储关联信息的存储器资源是价格昂贵的。因此,可能并非全部的关联信息都位于芯片上。可采用高速缓冲存储器将最有效的连接存储在芯片上。如果找到匹配的4-元组,TTEEC/TTOE 114可采用匹配的4-元组管理特定的TCP/IP流。
在步骤186中,可获取TCP流上下文。在步骤188中,可对TCP/IP报头进行处理。在步骤192中,可确定报头/数据边界。在步骤192中,结合器可收集或积聚与特定网络流相关的多个帧。例如,与TCP/IP连接相关的收集的TCP段和收集的信息可用于生成TCP/IP帧,该帧包括单个聚合的TCP段。在步骤194中,当发生终止事件时,该处理可进行到步骤196。该终止事件可以是突发事件(incident)、事例(instance)和/或信号,它们可向结合器指示,完成TCP段的收集和积聚以及单个集合的TCP段可传送到主机系统以用于处理。在步骤198中,可将对应于单个集合的TCP段的有效载荷数据映射到主机缓冲器。在步骤198中,可将来自单个集合的TCP段的数据转移到主机缓冲器中。回到步骤194,当并没有终止事件发生时,该处理可进行到步骤180且可对下一接收帧进行处理。
图1F示出了根据本发明实施例的即将被聚合和非顺序接收的TCP/IP帧的典型顺序。参照图1F,示出了第一TCP/IP帧202、第二TCP/IP帧204、第三TCP/IP帧206和第四TCP/IP帧208。示出的每个TCP/IP帧可包括以太网报头200a、IP报头200b、TCP报头200c和TCP选项200d。虽然在图1F中未示出,但是每个TCP/IP帧还可包括有效载荷部分,该有效载荷部分包括TCP段,该TCP段中包括被传输的数据。以太网报头200a具有TCP/IP帧的值enet_hdr。IP报头200b可包括多个域(field)。在这一点上,IP报头200b可包括域IP_LEN,其可用于指示帧中的字节数。在这个例子中,第一TCP/IP帧202、第二TCP/IP帧204、第三TCP/IP帧206和第四TCP/IP帧208中的每一个都具有1448个TCP有效载荷数据包。
IP报头200b也可包括识别域(identification field)ID,其可用于识别帧。在这个例子中,对于第一TCP/IP帧202,ID=100,对于第二TCP/IP帧204,ID=101,对于第三TCP/IP帧206,ID=103,对于第四TCP/IP帧208,ID=102。IP报头200b可包括附加域,如IP报头检验和域ip_csm、源域ip_src、和目的地域ip_dest。在这个例子中,对于所有的帧,ip_src和ip_dest的值可以相同;而对于第一TCP/IP帧202,IP报头检验和域的值为ip_csm0,对于第二TCP/IP帧204,IP报头检验和域的值为ip_csm1,对于第三TCP/IP帧206,IP报头检验和域的值为ip_csm3,对于第四TCP/IP帧208,IP报头检验和域的值为ip_csm2。
TCP报头200c可包括多个域。例如,TCP报头200c可包括源端口域srcprt、目的地端口域dest_prt、TCP序列域SEQ、确认域ACK、标记域FLAG、广播窗口域WIN、和TCP报头检验和域tcp_csm。在这个例子中,对于所有的帧,src_prt、dest_prt、FLAG和WIN的值相同。对于第一TCP/IPC帧202,SEQ=100,ACK=5000且TCP报头检验和域为tcp_csm0。对于第二TCP/IPC帧204,SEQ=1548,ACK=5100且TCP报头检验和域为tcp_csm1。对于第三TCP/IPC帧206,SEQ=4444,ACK=5100且TCP报头检验和域为tcp_csm3。对于第四TCP/IPC帧208,SEQ=2996,ACK=5100且TCP报头检验和域为tcp_csm2。
TCP选项200d可包括多个域。例如,TCP选项200d可包括与TCP帧关联的时戳指示器,也叫做时戳。在这个例子中,对于第一TCP/IP帧202,其时戳指示器的值为timeatamp0,对于第二TCP/IP帧204,其时戳指示器的值为timeatamp1,对于第三TCP/IP帧206,其时戳指示器的值为timeatamp3,且对于第四TCP/IP帧208,其时戳指示器的值为timeatamp2。
图1F中示出的TCP/IP帧的典型序列被无序接收,该无序接收是相对于网络子系统110的传输顺序。IP报头200b中的ID域包括的信息和/或TCP选项200d中的时戳中包括的信息可指示第三TCP/IP帧206和第四TCP/IP帧208可按照与传输顺序不同的顺序被接收。在这个例子中,可在第二TCP/IP帧204之后且在第三TCP/IP帧206之间发送TCP/IP帧208。结合器,如图1B-1E中所示的结合器可获得来自TCP/IP帧的信息,并可通过结合接收到的信息生成单个TCP/IP帧。在这一点上,结合器可使用FLT存储和/或更新从TCP/IP帧接收到的至少一部分信息。该结合器可使用可用存储器以存储或缓存聚合的/IP帧的有效载荷。
图2A示出了根据本发明实施例的即将被聚合和顺序接收的TCP/IP的的典型序列。参照图2A,示出了第一TCP/IP帧202、第二TCP/IP帧204、第三TCP/IP帧206和第四TCP/IP帧208。示出的每个TCP/IP帧可包括以太网报头200a、IP报头200b、TCP报头200c和TCP选项200d。虽然在图2A中未示出,但是每个TCP/IP帧还可包括有效载荷部分,该有效载荷部分包括TCP段,该TCP段中包括将要被传输的数据。以太网报头200a具有TCP/IP帧的值enet_hdr。IP报头200b可包括多个域(field)。在这一点上,IP报头200b可包括域IP_LEN,其可用于指示帧中的字节数。在这个例子中,第一TCP/IP帧202、第二TCP/IP帧204、第三TCP/IP帧206和第四TCP/IP帧208中的每一个都具有1448个TCP有效载荷数据包。
IP报头200b也可包括识别域ID,其可用于识别帧。在这个例子中,对于第一TCP/IP帧202,ID=100,对于第二TCP/IP帧204,ID=101,对于第三TCP/IP帧206,ID=102,对于第四TCP/IP帧208,ID=103。IP报头200b可包括附加域,如IP报头检验和域ip_csm、源域ip_src、和目的地域ip_dest。在这个例子中,对于所有的帧,ip_src和ip_dest的值可以相同;而对于第一TCP/IP帧202,IP报头检验和域的值为ip_csm0,对于第二TCP/IP帧204,IP报头检验和域的值为ip_csm1,对于第三TCP/IP帧206,IP报头检验和域的值为ip_csm2,对于第四TCP/IP帧208,IP报头检验和域的值为ip_csm3。
TCP报头200c可包括多个域。例如,TCP报头200c可包括源端口域srcprt、目的地端口域dest_prt、TCP序列域SEQ、确认域ACK、标记域FLAG、广播窗口域WIN、和TCP报头检验和域tcp_csm。在这个例子中,对于所有的帧,src_prt、dest_prt、FLAG和WIN的值相同。对于第一TCP/IPC帧202,SEQ=100,ACK=5000且TCP报头检验和域为tcp_csm0。对于第二TCP/IPC帧204,SEQ=1548,ACK=5100且TCP报头检验和域为tcp_csm1。对于第三TCP/IPC帧206,SEQ=4444,ACK=5100且TCP报头检验和域为tcp_csm2。对于第四TCP/IPC帧208,SEQ=2996,ACK=5100且TCP报头检验和域为tcp_csm3。
TCP选项200d可包括多个域。例如,TCP选项200d可包括与TCP帧关联的时戳指示器,也叫做时戳。在这个例子中,对于第一TCP/IP帧202,其时戳指示器的值为timeatamp0,对于第二TCP/IP帧204,其时戳指示器的值为timeatamp1,对于第三TCP/IP帧206,其时戳指示器的值为timeatamp2,且对于第四TCP/IP帧208,其时戳指示器的值为timeatamp3。
图2A中示出的TCP/IP帧的典型序列被无序接收,该无序接收是相对于网络子系统110的传输顺序。结合器,如图1B-1E中所示的结合器可获得来自TCP/IP帧的信息,并可通过结合接收到的信息生成单个TCP/IP帧。在这一点上,结合器可使用FLT存储和/或更新从TCP/IP帧接收到的至少一部分信息。该结合器可使用可用存储器以存储或缓存聚合的/IP帧的有效载荷。
图2B示出了根据本发明实施例的典型的聚合的TCP/IP帧,所述聚合的TCP/IP帧从图2A的TCP帧序列中的信息中生成。参照图2B,示出了单个TCP/IP帧210,其是由结合器从图2A中接收到的TCP/IP帧序列中生成的。该TCP/IP帧210可包括以太网报头200a、IP报头200b、TCP报头200c和TCP选项200d。TCP/IP帧210也可包括有效载荷,该有效载荷包括TCP段,该TCP段包括所接收的TCP/IP帧的实际数据(actual data)。TCP/IP帧210中的以太网报头200a、IP报头200b、TCP报头200c和TCP选项200d中的域可与图2A中的TCP/IP帧中的域基本相似。对于TCP/IP帧210,有效载荷中的数据包的总数是IP_LEN=5844,其对应于图2A中的所有的四个TCP/IP帧的数据包数的总和(1448*4+52)。对于TCP/IP帧210,ID值=100,这对应于第一TCP/IP帧202的ID值。此外,时戳指示器的值为timeatamp0,这对应于第一TCP/IP帧202的时戳指示器。例如,可将TCP/IP帧210传输或转移到主机系统用于TCP处理。
图2C是根据本发明实施例的用于当数据包P3和数据包P4未按照传输顺序到达时,用于处理无序数据的典型步骤示意图。参照图2C,如实际接收RX通信量图200所示,在数据包P2到达之前,数据包P3和P4可相对于按彼此顺序到达NIC 128。数据包P3和P4可分别对应于TCP传输序列中的岛(isle)211中的第四和第五数据包。在这种情况下,在实际接收RX通信量图200中,在数据包P1的结束和数据包P3的开始之间存在间隙或时间间隔。如TCP接收序列空间202中所示,TCP传输序列中的第一脱节部分(disjoint portion)可能是由于数据包P3和P4在岛213(包括数据包P0和P1)之后到达。岛211的最右边部分rcv_nxt_R可重新表示为(rcv_nxt_L+(岛的长度)),在此,rcv_nxt_L是岛211的最左边部分,且岛的长度为数据包P3和P4的长度和。
图2D是根据本发明实施例的典型透明TCP卸载的状态图。参照图2D,示出了多个典型流状态,也就是,顺序状态226、无序状态(OOO)224或未知状态222。在过渡状态(transition state)228,可对流进行未知状态222检测,对于该流未检测到3-向同步交换(3-way handshake)或是在该流的生命周期中的除初始化阶段以外的其它时间点检测到3-向同步交换。
TCP 3-向同步交换始于同步(SYN)段,该同步段包括由第一主机选择和发送的初始发送序列号(initial send sequence number)。该序列号可为数据包中起始序列号(starting sequence number),也可是针对该段中的被发送的数据的每个字节的增量。当第二主机接收具有序列号的SYN时,其可在序列号域和确认域发送具有其自身完全独立的ISN号的SYN。确认(ACK)域可告知接收器其数据已经在另一端被接收,且预计数据字节的下一段将要发送,且其可被称做SYN-ACK。当第一主机接收该SYN-ACK段时,其可发送包含下一序列号的ACK段,该ACK段被称为前向确认(forward acknowledgement),并由第二主机接收。该ACK段可由正在设置的ACK域识别。可将在某个时间范围内未被确认的段再次发送。
当流是被透明TCP卸载的时候,其不会从顺序状态226和OOO状态224转移到未知状态222,除非其被清除和检测。在过渡状态230,状态图可追踪无序岛序列号边界,如使用图2C中示出的参数rcv_nxt_R和rcv_nxt_L。第一入口处段(ingress segment)可称做岛,如岛213(图2C)且排序状态可设置为OOO状态224。岛的最右边部分rcv_nxt_R可表示为(rcv_nxt_L+(岛的长度)),在此,rcv_nxt_L是岛的最左边部分,岛的长度是岛中数据包的长度和。
在过渡状态232,当发射器和接收器非耦合时,NIC 128可能不具有本地栈确认信息。只要岛长度大于门限值,排序状态就可从OOO状态224修正到有序状态226。由于在未接收到ACK时,远端不会发送多于这个值的数据,可根据本地主机栈最大接收窗口设置门限值。
在过渡状态234,如果检测到新的流具有TCP 3-向同步交换,可将初始排列状态设置成有序状态226。在过渡状态236,可根据下列算法,将rcv_nxtR用于检查入口处数据包的状态。
if(in_packet_sn==rcv_nxt_R)//当岛是增加的更新的rcv_nxt_L
rcv_nxt_R=in_packet_sn+in_packet_len
在过渡状态238,如果岛的长度不等于rcv_nxt_R,排序状态可从有序状态226修正到OOO状态224。可根据下列算法,将rcv_nxt_R用于检查入口处数据包的状态。
if(in_packet_sn!=rcv_nxt_R)
rcv_nxt_L=in_packet_sn
rcv_nxt_R=in_packet_sn+in_packet_len
change state to OOO 224。
在过渡状态240,可在OOO状态224过程中使用下列典型算法追踪最高OOO岛的边界的每个入口处数据包。
if(in_packet_sn==rcv_nxt_R)//当岛是增加的更新的rcv_nxt_L
rcv_nxt_R=in_packet_sn+in_packet_len
else_if(in_packet_sn>rcv_nxt_R)//当新的更高岛生成时
rcv_nxt_R=in_packetsn+in_packet_len
rcv_nxt_L=in_packet_sn
图3是根据本发明实施例的透明TCP卸载的典型步骤流程图。参照图3,在步骤302中,针对每个接收到的数据包,结合器131可通过检查协议报头,将其分类成非-TCP和TCP数据包。在步骤304中,对于非TCP数据包或不具有正确检验和的数据包,结合器131继续对其进行处理而不发生改变。在步骤306中,结合器131可计算有效载荷的TCP检验和。在步骤308中,对于具有有效检验和的TCP数据包,结合器131先使用元组检索流查找表(FLT),以确定是否该数据包属于结合器131已知的连接,上述元组包括IP源地址、IP目的地地址、源TCP端口和目标TCP端口。
在步骤310中,在该检索失败的例子中,该数据包属于结合器131未知的连接。结合器131可确定是否有TCP有效载荷。如果没有TCP有效载荷(如纯TCP ACK),结合器131可停止进一步的处理,并允许通过常用处理路径处理该数据包,并在FLT中增加入口。在步骤312中,如果没有TCP有效载荷且该连接并未在FLT中,结合器131可在FLT中为该连接创建新的入口。该操作可包括当FLT已满时在FLT中引退入口。FLT引退可迅速停止任何进一步的结合,并向主机TCP栈提供任何聚合TCP段的指示。
在步骤314栈,如果新创建/替换的FLT入口、以及元组、TCP序列号、TCP确认号、TCP有效载荷的长度以及时戳出现,它们将被记录。在步骤316,TCP有效载荷前的任何报头部可放置到缓冲器(报头缓冲器)中,然而该TCP有效载荷将被放置到另一缓冲器(有效载荷缓冲器)中。该信息也可保存在FLT中并起动计时器。在步骤318中,可在结合器131中临时收集报头和有效载荷直到任一下列典型终止事件发生:
a.TCP标记包括PSH(强迫推送)、FIN或RST字节。
b.TCP有效载荷量超过门限值或最大IP数据报大小。
c.计时器期满。
d.FLT表已满且将一个当前网络流入口替换成与新的网络流相关的入口。
e.检测到包括同一元组的第一IP分段。
f.发送窗口大小改变。
g.TCP确认(ACK)号的改变超过ACK门限值。
h.复制ACK的数量超过复制ACK门限值。
i.可选择的TCP确认(SACK)。
在这一点上,可将PSH比特称作控制比特,其可指示包括数据的段必须被推进到接收用户。FIN比特可称作控制比特,其可指示发送器将不再发送更多数据或控制占用序列空间。RST比特可当作控制比特,其可在接收器应删除连接而不进行进一步的交互时,指示重设操作。ACK比特可称作控制比特,其可指示段的确认域指定该段的发送器预计接收的下一序列号,从而确认收到所有在先序列号。
在步骤320中,当这些事件中的任一发生时,结合器131可修正具有TCP有效载荷的新总量的TCP报头,并向普通TCP栈指示较大和单个的TCP段,以及集合的TCP段的总量和/或第一时戳选项。在步骤322中,当较大和单个TCP段到达主机TCP栈,主机TCP栈将其当作任何普通输入帧进行处理。
将要定位在NIC上的硬件栈适合从线路上取走数据包,并独立于在主机处理器上运行的TCO栈将它们积聚或聚合。例如,多个接收到的数据包的数据部分在主机存储器上积聚,直到创造出单个较大的TCP接收数据包(如8K)。一旦这个单个较大的TCO接收数据包生成,其将被转移到主机以进行处理。在这一点上,当该硬件栈承认该接收到的TCP数据包时,其适合建立状态和上下文信息。这显著地降低了与TCP栈处理相关的计算密集型任务。虽然在主机存储器中积聚多个接收到的数据包的数据部分,但是该数据依然受NIC的控制。
虽然示出了单个TCP连接的处理,本发明并不限于此。因此本发明的各种实施例可为在多个物理网络端口上的多个TCP连接提供支持。
本发明的又一实施例可提供一种机器可读存储。其内存储的计算机程序包括至少一个代码段,所示至少一个代码段由机器执行而使得所述机器执行上述步骤,以用于透明TCP卸载。
因此,本发明可以通过硬件、软件,或者软、硬件结合来实现。本发明可以在至少一个计算机系统中以集中方式实现,或者由分布在几个互连的计算机系统中的不同部分以分散方式实现。任何可以实现方法的计算机系统或其它设备都是可适用的。常用软硬件的结合可以是安装有计算机程序的通用计算机系统,通过安装和执行程序控制计算机系统,使其按方法运行。
本发明还可以通过计算机程序产品进行实施,程序包含能够实现本发明方法的全部特征,当其安装到计算机系统中时,可以实现本发明的方法。本文件中的计算机程序所指的是:可以采用任何程序语言、代码或符号编写的一组指令的任何表达式,该指令组使系统具有信息处理能力,以直接实现特定功能,或在进行下述一个或两个步骤之后实现特定功能:a)转换成其它语言、编码或符号;b)以不同的格式再现。
虽然本发明是通过具体实施例进行说明的,本领域技术人员应当明白,在不脱离本发明范围的情况下,还可以对本发明进行各种变换及等同替代。另外,针对特定情形或材料,可以对本发明做各种修改,而不脱离本发明的范围。因此,本发明不局限于所公开的具体实施例,而应当包括落入本发明权利要求范围内的全部实施方式。
Claims (8)
1.一种处理网络信息的网络处理的方法,其特征在于,该方法包括:
通过网络接口卡(NIC)处理器收集接收的用于特定网络流的至少一个传输控制协议(TCP)段,且在每次所述至少一个传输控制协议段被接收时,不将关于所述特定网络流的状态信息转移到主机系统;
在终止事件发生后,生成新的传输控制协议段,所述新的传输控制协议段包括所述收集的至少一个传输控制协议段;以及
将所述生成的新的传输控制协议段和所述新的传输控制协议段的状态信息传送到所述主机系统以进行处理;
所述方法进一步包括通过聚合所述特定网络流的多个所述收集的传输控制协议段的至少一部分,生成所述新的传输控制协议段。
2.根据权利要求1所述的方法,其特征在于,进一步包括为流查找表(FLT)中的所述特定网络流更新生成的流查找表入口中的信息。
3.根据权利要求2所述的方法,其特征在于,所述流查找表入口包括以下中的至少一个:
元组;
传输控制协议序列号;
传输控制协议确认号;以及
传输控制协议有效载荷长度;
所述元组包括:
网络协议(IP)源地址;
网络协议目的地地址;
源传输控制协议端口;以及
目的地传输控制协议端口。
4.根据权利要求1所述的方法,其特征在于,进一步包括生成所述生成的新传输控制协议段的传输控制协议报头,所述传输控制协议报头指示与所述收集的至少一个传输控制协议段相关的传输控制协议有效载荷字节的总数。
5.根据权利要求1所述的方法,其特征在于,进一步包括生成所述生成的新传输控制协议段的传输控制协议报头,所述传输控制协议报头指示所述收集的至少一个传输控制协议段的第一时戳选择。
6.一种处理网络信息的网络处理的系统,其特征在于,该系统包括:
网络接口卡(NIC)处理器,用于收集接收用于特定网络流的至少一个传输控制协议(TCP)段,且在每次所述至少一个传输控制协议段被接收时,不将关于所述特定网络流的状态信息转移到主机系统;
所述网络接口卡处理器,用于在终止事件发生后,生成新的传输控制协议段,所述新的传输控制协议段包括所述收集的至少一个传输控制协议段;以及
所述网络接口卡处理器,用于将所述生成的新的传输控制协议段和所述新的传输控制协议段的状态信息传送到所述主机系统以进行处理;
所述网络接口卡处理器,用于通过聚合所述特定网络流的多个所述收集的传输控制协议段的至少一部分,生成所述新的传输控制协议段。
7.根据权利要求6所述的系统,其特征在于,所述网络接口卡处理器,用于为流查找表(FLT)中的所述特定网络流更新生成的流查找表入口中的信息。
8.根据权利要求7所述的系统,其特征在于,所述流查找表入口包括以下中的至少一个:
元组;
传输控制协议序列号;
传输控制协议确认号;以及
传输控制协议有效载荷长度;
所述元组包括:
网络协议(IP)源地址;
网络协议目的地地址;
源传输控制协议端口;以及
目的地传输控制协议端口。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US70054405P | 2005-07-18 | 2005-07-18 | |
US60/700,544 | 2005-07-18 | ||
PCT/IB2006/004098 WO2007069095A2 (en) | 2005-07-18 | 2006-07-18 | Method and system for transparent tcp offload |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101253745A CN101253745A (zh) | 2008-08-27 |
CN101253745B true CN101253745B (zh) | 2011-06-22 |
Family
ID=38163302
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2006800262474A Expired - Fee Related CN101253745B (zh) | 2005-07-18 | 2006-07-18 | 用于透明tcp卸载的方法和系统 |
Country Status (5)
Country | Link |
---|---|
US (7) | US7684344B2 (zh) |
EP (1) | EP1917782A2 (zh) |
KR (1) | KR100973201B1 (zh) |
CN (1) | CN101253745B (zh) |
WO (1) | WO2007069095A2 (zh) |
Families Citing this family (138)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AU2001288532A1 (en) * | 2000-08-30 | 2002-03-13 | Tiaris, Inc. | A home network system and method |
US8724485B2 (en) | 2000-08-30 | 2014-05-13 | Broadcom Corporation | Home network system and method |
US9094226B2 (en) | 2000-08-30 | 2015-07-28 | Broadcom Corporation | Home network system and method |
US7978598B1 (en) * | 2002-03-01 | 2011-07-12 | Cisco Technology, Inc. | Connection replication |
US7007103B2 (en) * | 2002-04-30 | 2006-02-28 | Microsoft Corporation | Method to offload a network stack |
US7616664B2 (en) * | 2005-02-18 | 2009-11-10 | Hewlett-Packard Development Company, L.P. | System and method of sending video and audio data over a network |
KR100973201B1 (ko) * | 2005-07-18 | 2010-07-30 | 브로드콤 이스라엘 알 앤 디 | 투명 티씨피 오프로드를 위한 방법 및 시스템 |
US7660264B1 (en) | 2005-12-19 | 2010-02-09 | Chelsio Communications, Inc. | Method for traffic schedulign in intelligent network interface circuitry |
US7616563B1 (en) | 2005-08-31 | 2009-11-10 | Chelsio Communications, Inc. | Method to implement an L4-L7 switch using split connections and an offloading NIC |
US7660306B1 (en) | 2006-01-12 | 2010-02-09 | Chelsio Communications, Inc. | Virtualizing the operation of intelligent network interface circuitry |
US7724658B1 (en) | 2005-08-31 | 2010-05-25 | Chelsio Communications, Inc. | Protocol offload transmit traffic management |
US7506080B2 (en) * | 2005-09-16 | 2009-03-17 | Inter Corporation | Parallel processing of frame based data transfers |
US7735099B1 (en) * | 2005-12-23 | 2010-06-08 | Qlogic, Corporation | Method and system for processing network data |
EP1835692B1 (en) * | 2006-03-13 | 2018-08-08 | Telefonaktiebolaget LM Ericsson (publ) | Method and system for distributing service messages from clients to service applications |
EP2007506B1 (en) | 2006-03-31 | 2014-03-19 | Danisco US Inc. | Tangential flow filtration apparatuses, systems, and processes for the separation of compounds |
US9794378B2 (en) * | 2006-11-08 | 2017-10-17 | Standard Microsystems Corporation | Network traffic controller (NTC) |
US20080120426A1 (en) * | 2006-11-17 | 2008-05-22 | International Business Machines Corporation | Selective acceleration of transport control protocol (tcp) connections |
US8090043B2 (en) | 2006-11-20 | 2012-01-03 | Broadcom Corporation | Apparatus and methods for compensating for signal imbalance in a receiver |
US7742495B2 (en) | 2006-11-20 | 2010-06-22 | Broadcom Corporation | System and method for retransmitting packets over a network of communication channels |
US7782850B2 (en) * | 2006-11-20 | 2010-08-24 | Broadcom Corporation | MAC to PHY interface apparatus and methods for transmission of packets through a communications network |
US20080133654A1 (en) * | 2006-12-01 | 2008-06-05 | Chei-Yol Kim | Network block device using network asynchronous i/o |
US7849214B2 (en) * | 2006-12-04 | 2010-12-07 | Electronics And Telecommunications Research Institute | Packet receiving hardware apparatus for TCP offload engine and receiving system and method using the same |
US8161532B2 (en) * | 2007-04-04 | 2012-04-17 | Microsoft Corporation | Operating system independent architecture for subscription computing |
US8935406B1 (en) | 2007-04-16 | 2015-01-13 | Chelsio Communications, Inc. | Network adaptor configured for connection establishment offload |
US8589587B1 (en) | 2007-05-11 | 2013-11-19 | Chelsio Communications, Inc. | Protocol offload in intelligent network adaptor, including application level signalling |
US8060644B1 (en) * | 2007-05-11 | 2011-11-15 | Chelsio Communications, Inc. | Intelligent network adaptor with end-to-end flow control |
US8345553B2 (en) | 2007-05-31 | 2013-01-01 | Broadcom Corporation | Apparatus and methods for reduction of transmission delay in a communication network |
US7715362B1 (en) * | 2007-11-23 | 2010-05-11 | Juniper Networks, Inc. | Identification fragment handling |
KR100936918B1 (ko) * | 2007-12-17 | 2010-01-18 | 한국전자통신연구원 | 정적 파일 전송 시스템콜 처리 toe 장치 및 방법 |
US20100017513A1 (en) * | 2008-07-16 | 2010-01-21 | Cray Inc. | Multiple overlapping block transfers |
US8341286B1 (en) * | 2008-07-31 | 2012-12-25 | Alacritech, Inc. | TCP offload send optimization |
US9112717B2 (en) | 2008-07-31 | 2015-08-18 | Broadcom Corporation | Systems and methods for providing a MoCA power management strategy |
US8254413B2 (en) * | 2008-12-22 | 2012-08-28 | Broadcom Corporation | Systems and methods for physical layer (“PHY”) concatenation in a multimedia over coax alliance network |
US8213309B2 (en) | 2008-12-22 | 2012-07-03 | Broadcom Corporation | Systems and methods for reducing latency and reservation request overhead in a communications network |
US8238227B2 (en) | 2008-12-22 | 2012-08-07 | Broadcom Corporation | Systems and methods for providing a MoCA improved performance for short burst packets |
US20100165838A1 (en) * | 2008-12-30 | 2010-07-01 | Yury Bakshi | Method and apparatus for improving data throughput in a network |
US20100238932A1 (en) * | 2009-03-19 | 2010-09-23 | Broadcom Corporation | Method and apparatus for enhanced packet aggregation |
US8553547B2 (en) * | 2009-03-30 | 2013-10-08 | Broadcom Corporation | Systems and methods for retransmitting packets over a network of communication channels |
US20100254278A1 (en) | 2009-04-07 | 2010-10-07 | Broadcom Corporation | Assessment in an information network |
US8730798B2 (en) | 2009-05-05 | 2014-05-20 | Broadcom Corporation | Transmitter channel throughput in an information network |
US8867355B2 (en) | 2009-07-14 | 2014-10-21 | Broadcom Corporation | MoCA multicast handling |
US8942250B2 (en) | 2009-10-07 | 2015-01-27 | Broadcom Corporation | Systems and methods for providing service (“SRV”) node selection |
US9015318B1 (en) | 2009-11-18 | 2015-04-21 | Cisco Technology, Inc. | System and method for inspecting domain name system flows in a network environment |
US9009293B2 (en) * | 2009-11-18 | 2015-04-14 | Cisco Technology, Inc. | System and method for reporting packet characteristics in a network environment |
US9148380B2 (en) * | 2009-11-23 | 2015-09-29 | Cisco Technology, Inc. | System and method for providing a sequence numbering mechanism in a network environment |
US9535732B2 (en) * | 2009-11-24 | 2017-01-03 | Red Hat Israel, Ltd. | Zero copy transmission in virtualization environment |
US8737262B2 (en) * | 2009-11-24 | 2014-05-27 | Red Hat Israel, Ltd. | Zero copy transmission with raw packets |
JP5720577B2 (ja) * | 2009-12-04 | 2015-05-20 | 日本電気株式会社 | サーバ及びフロー制御プログラム |
US8792495B1 (en) | 2009-12-19 | 2014-07-29 | Cisco Technology, Inc. | System and method for managing out of order packets in a network environment |
US8611327B2 (en) | 2010-02-22 | 2013-12-17 | Broadcom Corporation | Method and apparatus for policing a QoS flow in a MoCA 2.0 network |
US8514860B2 (en) | 2010-02-23 | 2013-08-20 | Broadcom Corporation | Systems and methods for implementing a high throughput mode for a MoCA device |
US8428087B1 (en) * | 2010-09-17 | 2013-04-23 | Amazon Technologies, Inc. | Framework for stateless packet tunneling |
US10284437B2 (en) | 2010-09-30 | 2019-05-07 | Efolder, Inc. | Cloud-based virtual machines and offices |
US9705730B1 (en) | 2013-05-07 | 2017-07-11 | Axcient, Inc. | Cloud storage using Merkle trees |
US8924360B1 (en) | 2010-09-30 | 2014-12-30 | Axcient, Inc. | Systems and methods for restoring a file |
US9235474B1 (en) * | 2011-02-17 | 2016-01-12 | Axcient, Inc. | Systems and methods for maintaining a virtual failover volume of a target computing system |
US8954544B2 (en) | 2010-09-30 | 2015-02-10 | Axcient, Inc. | Cloud-based virtual machines and offices |
US8589350B1 (en) | 2012-04-02 | 2013-11-19 | Axcient, Inc. | Systems, methods, and media for synthesizing views of file system backups |
US8787303B2 (en) | 2010-10-05 | 2014-07-22 | Cisco Technology, Inc. | Methods and apparatus for data traffic offloading at a router |
JP5204195B2 (ja) * | 2010-10-29 | 2013-06-05 | 株式会社東芝 | データ送信システムおよびデータ送信プログラム |
US8495262B2 (en) * | 2010-11-23 | 2013-07-23 | International Business Machines Corporation | Using a table to determine if user buffer is marked copy-on-write |
CN102075416B (zh) * | 2010-12-17 | 2014-07-30 | 曙光信息产业(北京)有限公司 | 一种软硬件结合实现tcp连接数据缓存的方法 |
CN102111403B (zh) * | 2010-12-17 | 2014-05-21 | 曙光信息产业(北京)有限公司 | 一种用于高速获取tcp连接数据的方法和设备 |
CN102082688B (zh) * | 2010-12-17 | 2014-08-13 | 曙光信息产业(北京)有限公司 | 一种软硬件结合实现tcp乱序缓冲区管理的方法 |
US9003057B2 (en) | 2011-01-04 | 2015-04-07 | Cisco Technology, Inc. | System and method for exchanging information in a mobile wireless network environment |
US8891532B1 (en) * | 2011-05-17 | 2014-11-18 | Hitachi Data Systems Engineering UK Limited | System and method for conveying the reason for TCP reset in machine-readable form |
US8490207B2 (en) * | 2011-05-31 | 2013-07-16 | Red Hat, Inc. | Performing zero-copy sends in a networked file system with cryptographic signing |
US8484392B2 (en) | 2011-05-31 | 2013-07-09 | Oracle International Corporation | Method and system for infiniband host channel adaptor quality of service |
US8804752B2 (en) | 2011-05-31 | 2014-08-12 | Oracle International Corporation | Method and system for temporary data unit storage on infiniband host channel adaptor |
US8589610B2 (en) | 2011-05-31 | 2013-11-19 | Oracle International Corporation | Method and system for receiving commands using a scoreboard on an infiniband host channel adaptor |
US8737221B1 (en) * | 2011-06-14 | 2014-05-27 | Cisco Technology, Inc. | Accelerated processing of aggregate data flows in a network environment |
US8948013B1 (en) | 2011-06-14 | 2015-02-03 | Cisco Technology, Inc. | Selective packet sequence acceleration in a network environment |
US8792353B1 (en) | 2011-06-14 | 2014-07-29 | Cisco Technology, Inc. | Preserving sequencing during selective packet acceleration in a network environment |
US8743690B1 (en) * | 2011-06-14 | 2014-06-03 | Cisco Technology, Inc. | Selective packet sequence acceleration in a network environment |
US8688799B2 (en) | 2011-06-30 | 2014-04-01 | Nokia Corporation | Methods, apparatuses and computer program products for reducing memory copy overhead by indicating a location of requested data for direct access |
US9021123B2 (en) | 2011-08-23 | 2015-04-28 | Oracle International Corporation | Method and system for responder side cut through of received data |
US8879579B2 (en) | 2011-08-23 | 2014-11-04 | Oracle International Corporation | Method and system for requester virtual cut through |
US8832216B2 (en) | 2011-08-31 | 2014-09-09 | Oracle International Corporation | Method and system for conditional remote direct memory access write |
EP2595351A1 (de) * | 2011-11-15 | 2013-05-22 | Eaton Industries GmbH | Vorrichtung zur Verwendung in einem digitalen Übertragungssystem, digitales Übertragungssystem und Verfahren zur Datenübertragung |
US8996718B2 (en) * | 2012-02-02 | 2015-03-31 | Apple Inc. | TCP-aware receive side coalescing |
US9155046B2 (en) * | 2012-09-12 | 2015-10-06 | Intel Corporation | Optimizing semi-active workloads |
US20140089467A1 (en) * | 2012-09-27 | 2014-03-27 | Andre Beck | Content stream delivery using pre-loaded segments |
US20140092754A1 (en) * | 2012-09-28 | 2014-04-03 | Fluke Corporation | Packet tagging mechanism |
US9785647B1 (en) | 2012-10-02 | 2017-10-10 | Axcient, Inc. | File system virtualization |
US9852140B1 (en) | 2012-11-07 | 2017-12-26 | Axcient, Inc. | Efficient file replication |
US9069485B2 (en) | 2012-12-20 | 2015-06-30 | Oracle International Corporation | Doorbell backpressure avoidance mechanism on a host channel adapter |
US9384072B2 (en) | 2012-12-20 | 2016-07-05 | Oracle International Corporation | Distributed queue pair state on a host channel adapter |
US8937949B2 (en) | 2012-12-20 | 2015-01-20 | Oracle International Corporation | Method and system for Infiniband host channel adapter multicast packet replication mechanism |
US9069633B2 (en) | 2012-12-20 | 2015-06-30 | Oracle America, Inc. | Proxy queue pair for offloading |
US9148352B2 (en) | 2012-12-20 | 2015-09-29 | Oracle International Corporation | Method and system for dynamic repurposing of payload storage as a trace buffer |
US9256555B2 (en) | 2012-12-20 | 2016-02-09 | Oracle International Corporation | Method and system for queue descriptor cache management for a host channel adapter |
US9191452B2 (en) | 2012-12-20 | 2015-11-17 | Oracle International Corporation | Method and system for an on-chip completion cache for optimized completion building |
US9300578B2 (en) * | 2013-02-21 | 2016-03-29 | Applied Micro Circuits Corporation | Large receive offload functionality for a system on chip |
US8850085B2 (en) | 2013-02-26 | 2014-09-30 | Oracle International Corporation | Bandwidth aware request throttling |
US9069705B2 (en) | 2013-02-26 | 2015-06-30 | Oracle International Corporation | CAM bit error recovery |
US9336158B2 (en) | 2013-02-26 | 2016-05-10 | Oracle International Corporation | Method and system for simplified address translation support for static infiniband host channel adaptor structures |
US9292153B1 (en) | 2013-03-07 | 2016-03-22 | Axcient, Inc. | Systems and methods for providing efficient and focused visualization of data |
US9397907B1 (en) | 2013-03-07 | 2016-07-19 | Axcient, Inc. | Protection status determinations for computing devices |
US9338918B2 (en) | 2013-07-10 | 2016-05-10 | Samsung Electronics Co., Ltd. | Socket interposer and computer system using the socket interposer |
US9385959B2 (en) | 2013-09-26 | 2016-07-05 | Acelio, Inc. | System and method for improving TCP performance in virtualized environments |
US10581687B2 (en) | 2013-09-26 | 2020-03-03 | Appformix Inc. | Real-time cloud-infrastructure policy implementation and management |
US10355997B2 (en) | 2013-09-26 | 2019-07-16 | Appformix Inc. | System and method for improving TCP performance in virtualized environments |
US10291472B2 (en) | 2015-07-29 | 2019-05-14 | AppFormix, Inc. | Assessment of operational states of a computing environment |
GB2519745B (en) * | 2013-10-22 | 2018-04-18 | Canon Kk | Method of processing disordered frame portion data units |
US9742682B2 (en) | 2014-03-11 | 2017-08-22 | Vmware, Inc. | Large receive offload for virtual machines |
US9384033B2 (en) | 2014-03-11 | 2016-07-05 | Vmware, Inc. | Large receive offload for virtual machines |
US9755981B2 (en) * | 2014-03-11 | 2017-09-05 | Vmware, Inc. | Snooping forwarded packets by a virtual machine |
US9906454B2 (en) | 2014-09-17 | 2018-02-27 | AppFormix, Inc. | System and method for providing quality of service to data center applications by controlling the rate at which data packets are transmitted |
CN105578524B (zh) * | 2014-10-07 | 2019-01-25 | 国基电子(上海)有限公司 | 终端设备及封包处理方法 |
US9838498B2 (en) * | 2014-10-30 | 2017-12-05 | ScaleFlux | Remote direct non-volatile cache access |
US10298494B2 (en) | 2014-11-19 | 2019-05-21 | Strato Scale Ltd. | Reducing short-packet overhead in computer clusters |
WO2016079626A1 (en) * | 2014-11-19 | 2016-05-26 | Strato Scale Ltd. | Reducing short-packet overhead in computer clusters |
US10212259B2 (en) | 2014-12-01 | 2019-02-19 | Oracle International Corporation | Management of transmission control blocks (TCBs) supporting TCP connection requests in multiprocessing environments |
US10320918B1 (en) * | 2014-12-17 | 2019-06-11 | Xilinx, Inc. | Data-flow architecture for a TCP offload engine |
US9846657B2 (en) | 2015-02-06 | 2017-12-19 | Mediatek Inc. | Electronic device for packing multiple commands in one compound command frame and electronic device for decoding and executing multiple commands packed in one compound command frame |
US9584628B2 (en) | 2015-03-17 | 2017-02-28 | Freescale Semiconductor, Inc. | Zero-copy data transmission system |
JP2017046325A (ja) * | 2015-08-28 | 2017-03-02 | 株式会社東芝 | 通信装置、通信方法およびプログラム |
US9954979B2 (en) * | 2015-09-21 | 2018-04-24 | International Business Machines Corporation | Protocol selection for transmission control protocol/internet protocol (TCP/IP) |
CN105871739B (zh) * | 2016-06-17 | 2018-12-07 | 华为技术有限公司 | 一种处理报文的方法及计算设备 |
US10237183B2 (en) * | 2016-10-03 | 2019-03-19 | Guavus, Inc. | Detecting tethering in networks |
US10868742B2 (en) | 2017-03-29 | 2020-12-15 | Juniper Networks, Inc. | Multi-cluster dashboard for distributed virtualization infrastructure element monitoring and policy control |
US11068314B2 (en) | 2017-03-29 | 2021-07-20 | Juniper Networks, Inc. | Micro-level monitoring, visibility and control of shared resources internal to a processor of a host machine for a virtual environment |
US11323327B1 (en) | 2017-04-19 | 2022-05-03 | Juniper Networks, Inc. | Virtualization infrastructure element monitoring and policy control in a cloud environment using profiles |
US10313926B2 (en) | 2017-05-31 | 2019-06-04 | Nicira, Inc. | Large receive offload (LRO) processing in virtualized computing environments |
US11855898B1 (en) * | 2018-03-14 | 2023-12-26 | F5, Inc. | Methods for traffic dependent direct memory access optimization and devices thereof |
CN112154633B (zh) * | 2018-05-16 | 2021-12-17 | 华为技术有限公司 | 用于tcp通信的接收装置和传输装置 |
US10862805B1 (en) | 2018-07-31 | 2020-12-08 | Juniper Networks, Inc. | Intelligent offloading of services for a network device |
US10880124B2 (en) * | 2018-12-28 | 2020-12-29 | Alibaba Group Holding Limited | Offload controller control of programmable switch |
US11916840B2 (en) | 2019-02-15 | 2024-02-27 | Qualcomm Incorporated | Methods and apparatus for transport protocol ACK aggregation |
US10798014B1 (en) * | 2019-04-05 | 2020-10-06 | Arista Networks, Inc. | Egress maximum transmission unit (MTU) enforcement |
CN110535827B (zh) * | 2019-07-17 | 2021-08-24 | 华东计算技术研究所(中国电子科技集团公司第三十二研究所) | 实现多连接管理的tcp协议全卸载ip核的方法及系统 |
US11405324B1 (en) * | 2019-12-12 | 2022-08-02 | Amazon Technologies, Inc. | Packet serial number validation |
US11831742B2 (en) * | 2019-12-12 | 2023-11-28 | Intel Corporation | Semi-flexible packet coalescing control path |
EP4131880A4 (en) * | 2020-04-17 | 2023-03-15 | Huawei Technologies Co., Ltd. | METHOD AND APPARATUS FOR PROCESSING A STATEFUL SERVICE |
KR20210137702A (ko) * | 2020-05-11 | 2021-11-18 | 삼성전자주식회사 | 전자 장치 및 전자 장치에서 수신된 데이터 패킷을 처리하는 방법 |
CN112953967A (zh) * | 2021-03-30 | 2021-06-11 | 扬州万方电子技术有限责任公司 | 网络协议卸载装置和数据传输系统 |
US11909851B2 (en) * | 2021-10-04 | 2024-02-20 | Nxp B.V. | Coalescing interrupts based on fragment information in packets and a network controller for coalescing |
CN117354400B (zh) * | 2023-12-06 | 2024-02-02 | 商飞软件有限公司 | 一种用于北斗短报文的采集解析服务系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2003021436A2 (en) * | 2001-09-04 | 2003-03-13 | Archduke Design, Inc. | Selective offloading of protocol processing |
WO2004021150A2 (en) * | 2002-08-30 | 2004-03-11 | Broadcom Corporation | System and method for tpc/ip offload independent of bandwidth delay product |
CN1494293A (zh) * | 2002-10-29 | 2004-05-05 | 华为技术有限公司 | 用随机存储器实现的tcp连接定时器及其实现方法 |
CN1520112A (zh) * | 2002-12-31 | 2004-08-11 | ض� | 网络协议卸载引擎 |
WO2004112350A1 (en) * | 2003-06-11 | 2004-12-23 | Intel Corporation | Network protocol off-load engine memory management |
Family Cites Families (55)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5673031A (en) * | 1988-08-04 | 1997-09-30 | Norand Corporation | Redundant radio frequency network having a roaming terminal communication protocol |
US5727142A (en) * | 1996-05-03 | 1998-03-10 | International Business Machines Corporation | Method for a non-disruptive host connection switch after detection of an error condition or during a host outage or failure |
US5778414A (en) | 1996-06-13 | 1998-07-07 | Racal-Datacom, Inc. | Performance enhancing memory interleaver for data frame processing |
US5940404A (en) * | 1997-04-30 | 1999-08-17 | International Business Machines Corporation | Method and apparatus for enhanced scatter mode allowing user data to be page aligned |
US7174393B2 (en) * | 2000-12-26 | 2007-02-06 | Alacritech, Inc. | TCP/IP offload network interface device |
US6434620B1 (en) * | 1998-08-27 | 2002-08-13 | Alacritech, Inc. | TCP/IP offload network interface device |
US7284070B2 (en) * | 1997-10-14 | 2007-10-16 | Alacritech, Inc. | TCP offload network interface device |
US6157955A (en) * | 1998-06-15 | 2000-12-05 | Intel Corporation | Packet processing system including a policy engine having a classification unit |
US6347364B1 (en) * | 1998-11-20 | 2002-02-12 | International Business Machines Corp. | Schedulable dynamic memory pinning |
US6628617B1 (en) * | 1999-03-03 | 2003-09-30 | Lucent Technologies Inc. | Technique for internetworking traffic on connectionless and connection-oriented networks |
US6952409B2 (en) | 1999-05-17 | 2005-10-04 | Jolitz Lynne G | Accelerator system and method |
JP2000332817A (ja) * | 1999-05-18 | 2000-11-30 | Fujitsu Ltd | パケット処理装置 |
CN1246012A (zh) | 1999-07-14 | 2000-03-01 | 邮电部武汉邮电科学研究院 | 一种用于英特网与同步数字体系融合的适配方法 |
JP2001045061A (ja) * | 1999-08-02 | 2001-02-16 | Hitachi Ltd | 通信ノード装置 |
US6754223B1 (en) | 1999-08-17 | 2004-06-22 | Conexant Systems, Inc. | Integrated circuit that processes communication packets with co-processor circuitry to determine a prioritized processing order for a core processor |
US6799202B1 (en) * | 1999-12-16 | 2004-09-28 | Hachiro Kawaii | Federated operating system for a server |
US7275093B1 (en) * | 2000-04-26 | 2007-09-25 | 3 Com Corporation | Methods and device for managing message size transmitted over a network |
US6535969B1 (en) * | 2000-06-15 | 2003-03-18 | Lsi Logic Corporation | Method and apparatus for allocating free memory |
US6958997B1 (en) * | 2000-07-05 | 2005-10-25 | Cisco Technology, Inc. | TCP fast recovery extended method and apparatus |
US20020038373A1 (en) * | 2000-07-21 | 2002-03-28 | John Border | Method and system for improving network performance enhancing proxy architecture with gateway redundancy |
US20050203927A1 (en) * | 2000-07-24 | 2005-09-15 | Vivcom, Inc. | Fast metadata generation and delivery |
US6961539B2 (en) * | 2001-08-09 | 2005-11-01 | Hughes Electronics Corporation | Low latency handling of transmission control protocol messages in a broadband satellite communications system |
US7111162B1 (en) * | 2001-09-10 | 2006-09-19 | Cisco Technology, Inc. | Load balancing approach for scaling secure sockets layer performance |
US7359326B1 (en) * | 2002-02-05 | 2008-04-15 | 3Com Corporation | Method for splitting data and acknowledgements in a TCP session |
US7237031B2 (en) * | 2002-03-07 | 2007-06-26 | Sun Microsystems, Inc. | Method and apparatus for caching protocol processing data |
JP4406604B2 (ja) * | 2002-06-11 | 2010-02-03 | アシシュ エイ パンドヤ | Tcp/ip、rdma、及びipストレージアプリケーションのための高性能ipプロセッサ |
US7277963B2 (en) * | 2002-06-26 | 2007-10-02 | Sandvine Incorporated | TCP proxy providing application layer modifications |
US7142540B2 (en) * | 2002-07-18 | 2006-11-28 | Sun Microsystems, Inc. | Method and apparatus for zero-copy receive buffer management |
US7346701B2 (en) * | 2002-08-30 | 2008-03-18 | Broadcom Corporation | System and method for TCP offload |
US7397800B2 (en) * | 2002-08-30 | 2008-07-08 | Broadcom Corporation | Method and system for data placement of out-of-order (OOO) TCP segments |
US7299266B2 (en) * | 2002-09-05 | 2007-11-20 | International Business Machines Corporation | Memory management offload for RDMA enabled network adapters |
US8069225B2 (en) * | 2003-04-14 | 2011-11-29 | Riverbed Technology, Inc. | Transparent client-server transaction accelerator |
US7742473B2 (en) * | 2002-11-12 | 2010-06-22 | Mark Adams | Accelerator module |
US7313148B2 (en) * | 2002-11-18 | 2007-12-25 | Sun Microsystems, Inc. | Method and system for TCP large segment offload with ack-based transmit scheduling |
US7330862B1 (en) * | 2003-04-25 | 2008-02-12 | Network Appliance, Inc. | Zero copy write datapath |
WO2004102115A1 (ja) | 2003-05-16 | 2004-11-25 | Fujitsu Limited | 角度測定装置 |
US20050108518A1 (en) * | 2003-06-10 | 2005-05-19 | Pandya Ashish A. | Runtime adaptable security processor |
US7251745B2 (en) * | 2003-06-11 | 2007-07-31 | Availigent, Inc. | Transparent TCP connection failover |
US7359380B1 (en) * | 2003-06-24 | 2008-04-15 | Nvidia Corporation | Network protocol processing for routing and bridging |
US7420991B2 (en) * | 2003-07-15 | 2008-09-02 | Qlogic, Corporation | TCP time stamp processing in hardware based TCP offload |
US8086747B2 (en) * | 2003-09-22 | 2011-12-27 | Anilkumar Dominic | Group-to-group communication over a single connection |
US20050086349A1 (en) * | 2003-10-16 | 2005-04-21 | Nagarajan Subramaniyan | Methods and apparatus for offloading TCP/IP processing using a protocol driver interface filter driver |
US6996070B2 (en) * | 2003-12-05 | 2006-02-07 | Alacritech, Inc. | TCP/IP offload device with reduced sequential processing |
US7383483B2 (en) * | 2003-12-11 | 2008-06-03 | International Business Machines Corporation | Data transfer error checking |
US7441006B2 (en) * | 2003-12-11 | 2008-10-21 | International Business Machines Corporation | Reducing number of write operations relative to delivery of out-of-order RDMA send messages by managing reference counter |
US8195835B2 (en) * | 2004-01-28 | 2012-06-05 | Alcatel Lucent | Endpoint address change in a packet network |
US7826457B2 (en) * | 2004-05-11 | 2010-11-02 | Broadcom Corp. | Method and system for handling out-of-order segments in a wireless system via direct data placement |
US20050286526A1 (en) * | 2004-06-25 | 2005-12-29 | Sood Sanjeev H | Optimized algorithm for stream re-assembly |
US7613813B2 (en) * | 2004-09-10 | 2009-11-03 | Cavium Networks, Inc. | Method and apparatus for reducing host overhead in a socket server implementation |
US7730196B2 (en) * | 2004-12-03 | 2010-06-01 | Microsoft Corporation | Efficient transfer of messages using reliable messaging protocols for web services |
US7509419B2 (en) * | 2005-01-13 | 2009-03-24 | International Business Machines Corporation | Method for providing remote access redirect capability in a channel adapter of a system area network |
US7535907B2 (en) * | 2005-04-08 | 2009-05-19 | Oavium Networks, Inc. | TCP engine |
KR100973201B1 (ko) * | 2005-07-18 | 2010-07-30 | 브로드콤 이스라엘 알 앤 디 | 투명 티씨피 오프로드를 위한 방법 및 시스템 |
CA2514039A1 (en) * | 2005-07-28 | 2007-01-28 | Third Brigade Inc. | Tcp normalization engine |
US7596628B2 (en) * | 2006-05-01 | 2009-09-29 | Broadcom Corporation | Method and system for transparent TCP offload (TTO) with a user space library |
-
2006
- 2006-07-18 KR KR1020087002991A patent/KR100973201B1/ko not_active IP Right Cessation
- 2006-07-18 CN CN2006800262474A patent/CN101253745B/zh not_active Expired - Fee Related
- 2006-07-18 US US11/489,388 patent/US7684344B2/en active Active
- 2006-07-18 EP EP06848596A patent/EP1917782A2/en not_active Withdrawn
- 2006-07-18 US US11/489,389 patent/US7693138B2/en not_active Expired - Fee Related
- 2006-07-18 US US11/489,390 patent/US20070033301A1/en not_active Abandoned
- 2006-07-18 US US11/489,393 patent/US20070014246A1/en not_active Abandoned
- 2006-07-18 US US11/489,078 patent/US8064459B2/en not_active Expired - Fee Related
- 2006-07-18 WO PCT/IB2006/004098 patent/WO2007069095A2/en active Application Filing
-
2010
- 2010-03-22 US US12/728,983 patent/US8274976B2/en not_active Expired - Fee Related
- 2010-04-05 US US12/754,016 patent/US8416768B2/en not_active Expired - Fee Related
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2003021436A2 (en) * | 2001-09-04 | 2003-03-13 | Archduke Design, Inc. | Selective offloading of protocol processing |
WO2004021150A2 (en) * | 2002-08-30 | 2004-03-11 | Broadcom Corporation | System and method for tpc/ip offload independent of bandwidth delay product |
CN1494293A (zh) * | 2002-10-29 | 2004-05-05 | 华为技术有限公司 | 用随机存储器实现的tcp连接定时器及其实现方法 |
CN1520112A (zh) * | 2002-12-31 | 2004-08-11 | ض� | 网络协议卸载引擎 |
WO2004112350A1 (en) * | 2003-06-11 | 2004-12-23 | Intel Corporation | Network protocol off-load engine memory management |
Also Published As
Publication number | Publication date |
---|---|
US20070014246A1 (en) | 2007-01-18 |
US20100198984A1 (en) | 2010-08-05 |
US20070076623A1 (en) | 2007-04-05 |
US20070033301A1 (en) | 2007-02-08 |
CN101253745A (zh) | 2008-08-27 |
US20080310420A1 (en) | 2008-12-18 |
US8064459B2 (en) | 2011-11-22 |
US20070014245A1 (en) | 2007-01-18 |
EP1917782A2 (en) | 2008-05-07 |
KR20080042812A (ko) | 2008-05-15 |
US20100174824A1 (en) | 2010-07-08 |
KR100973201B1 (ko) | 2010-07-30 |
US8416768B2 (en) | 2013-04-09 |
WO2007069095A3 (en) | 2007-12-06 |
US7684344B2 (en) | 2010-03-23 |
US7693138B2 (en) | 2010-04-06 |
WO2007069095A2 (en) | 2007-06-21 |
US8274976B2 (en) | 2012-09-25 |
WO2007069095A8 (en) | 2007-08-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101253745B (zh) | 用于透明tcp卸载的方法和系统 | |
EP1513321B1 (en) | System and method for TCP/IP offload independent of bandwidth delay product | |
US8244906B2 (en) | Method and system for transparent TCP offload (TTO) with a user space library | |
CN1883212B (zh) | 在无线mac处理器中提供通过网络连接的数据流传输的方法和装置 | |
US8402142B2 (en) | System and method for TCP/IP offload independent of bandwidth delay product | |
US7912064B2 (en) | System and method for handling out-of-order frames | |
CN101394400B (zh) | 用于建立避免地址解析协议高速缓冲存储器破坏的网络连接的方法 | |
CN102035751A (zh) | 一种数据的传输方法和设备 | |
CN103795632A (zh) | 一种数据报文传输方法及相关设备、系统 | |
US9584425B2 (en) | Bandwidth optimization using coalesced DUP ACKs | |
US6714541B1 (en) | Method and apparatus for encoding bridging/switching information within a routing information filed in a token ring environment | |
US20070291782A1 (en) | Acknowledgement filtering | |
US20150055482A1 (en) | TCP Extended Fast Recovery and Segment Timing | |
JPH07250100A (ja) | 広域網を用いたlan間の相互通信方式及びこれに用いる相互接続装置 | |
US7535916B2 (en) | Method for sharing a transport connection across a multi-processor platform with limited inter-processor communications | |
CN101883047B (zh) | 多网络接口设备的数据并发传输方法 | |
US7197009B1 (en) | Delay variation based routing in communication systems | |
CN110300064A (zh) | 一种数据流量处理方法、设备及系统 | |
Cisco | Bridging and IBM Networking Command Reference Cisco IOS Release 11.3 | |
Cisco | Cisco IOS Bridging and IBM Networking Command Reference, Volume 1 Release 12.1 | |
Cisco | IBM Network Media Translation Commands | |
Cisco | IBM Network Media Translation Commands | |
CN107094282B (zh) | 自适应流量分配方法及控制系统 | |
Wang et al. | An Optimized RDMA QP Communication Mechanism for Hyperscale AI Infrastructure | |
CN100481760C (zh) | 一种网络封包的校验值运算系统及其运算方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 1126049 Country of ref document: HK |
|
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: WD Ref document number: 1126049 Country of ref document: HK |
|
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20110622 Termination date: 20170718 |