Skip Navigation LinksHome > Company > Patents & Licensing
Patents

Alacritech has twenty four issued U.S. patents, and numerous other US and international applications are pending. Highlighted below are examples of Alacritech's issued U.S. patent claims.

Alacritech maintains an Intellectual Property Licensing Group responsible for IP Licensing.

Further information on Alacritech's patents and published applications can be found by following the links in this page or searching the United States Patent and Trademark Office web site.


U.S. Pat. No. 6,996,070
TCP/IP offload device with reduced sequential processing

1. A TCP offload engine (TOE) capable of offloading, from a host, TCP protocol processing tasks that are associated with a TCP connection, the TOE comprising:

  • a first memory that stores and simultaneously outputs at least two TCP state values associated with the TCP connection, wherein the at least two TCP state values are taken from the group consisting of: a receive packet sequence limit, an expected receive packet sequence number, a transmit sequence limit, a transmit acknowledge number, and a transmit sequence number;
  • a second memory that stores and simultaneously outputs at least two packet header values of a packet communicated over the TCP connection, wherein the at least two packet header values are taken from the group consisting of: a receive packet sequence number, a packet payload size, a packet acknowledge number, and a packet transmit window value;
  • and combinatorial logic that receives said at least two TCP state values and said at least two packet header values and generates therefrom a flush detect signal indicative of whether an error condition has occurred, the two TCP state values and the two packet header values all being supplied to the combinatorial logic simultaneously.

U.S. Pat. No. 6,697,868
Protocol processing stack for use with intelligent network interface device

1. A set of instructions executable on a processor, the set of instructions being for performing steps comprising:

  • establishing a TCP connection, the TCP connection being at least in part identified by a TCP source port, TCP destination port, IP source address, and IP destination address;
  • and offloading the TCP connection from the processor to a TCP offload mechanism.

21. An operating system that passes control of a TCP connection from a host computer to a TCP offload device coupled to the host computer, wherein after said control of the TCP connection is passed to the TCP offload device the TCP offload device performs all or substantially all TCP protocol processing on network frames received onto the TCP offload device for the TCP connection such that the operating system and the host computer perform no or substantially no TCP protocol processing on the network frames after said control is passed.

U.S. Pat. No. 7,042,898
Reducing delays associated with inserting a checksum into a network message

1. A method, comprising:

  • (a) transferring a data payload from a host memory to a first memory of a network interface device;
  • (b) on the network interface device and before the transferring of (a) is complete creating a pseudoheader and storing the pseudoheader in a second memory of the network interface device, the pseudoheader containing a header portion and a checksum portion, the checksum portion being a checksum of the header portion and not a checksum of the data payload;
  • (c) on the network interface device and before the transferring of (a) is complete transferring the pseudoheader from the second memory to the first memory;
  • (d) after (c) generating on the network interface device a checksum for the data payload; wherein the pseudoheader and the data payload together comprise a pseudopacket; and
  • (e) reading the pseudoheader and at least a portion of the data payload from the first memory and combining the checksum for the header portion with the checksum for the data payload to generate a final checksum, the final checksum being inserted into the pseudopacket to form a complete TCP packet, the complete TCP packet being output from the network interface device to a network.

U.S. Pat. No. 6,807,581
Intelligent network storage interface system

12. An apparatus for transferring information between a network and a storage unit, the apparatus comprising:

  • a host computer having a processor connected to a host memory by a host memory bus, said host memory containing a protocol stack operable by the processor to create a communication control block defining a network connection, and
  • an interface device connected to said host computer and coupled between the network and the storage unit, said interface device including an interface memory adapted to store said communication control block and a mechanism configured to associate data with said communication control block such that said data is communicated between the network and the storage unit without encountering said host computer.

21. A server connectable to a network and a storage unit, the server comprising:

  • a host computer,
  • a network interface device coupled to said host computer, and
  • a first storage unit coupled to said network interface device by an input/output controller,
  • wherein said host computer chooses whether to move data between the network and the storage unit via said host computer or to bypass said host computer and move data directly between the network and the storage unit.

U.S. Pat. No. 6,751,665
Providing window updates from a computer to a network interface device

16. A method for communication between a computer having a memory, a network, and a network interface device that is coupled between the computer and the network, the method comprising:

  • running an application on the computer corresponding to a Transport Control Protocol (TCP) connection maintained by the network interface device; and
  • transmitting, from the computer to the network interface device, update information for a receive window of space in the memory that corresponds to the TCP connection and is available to store data received from the network for the application.

U.S. Pat. No. 6,757,746
Obtaining a destination address so that a network interface device can write network data without headers directly into host memory

15. A system, comprising:

  • a host computer comprising: host memory, an operating system and an application program, the application program identifying a destination in the host memory where data from a message is to be placed, and
  • a network interface device coupled to a packet-switched network and coupled to the host computer, the network interface device being coupled to the host computer by a parallel bus, the network interface device receiving the packets of the message and placing the data portions of the packets of the message into the destination in host memory, the network interface device placing the data portions into the destination without placing any of the header portions into the destination.

U.S. Pat. No. 6,427,171
Protocol processing stack for use with intelligent network interface device

1. A set of computer-executable instructions stored on a computer-readable medium of a computer connectable to a network, the set of instructions comprising:

  • a stack of protocol processing layers configured for establishing a TCP connection for a network message having data and headers corresponding to several protocol layers, and
  • directions for transferring control of said TCP connection from said stack of protocol processing layers to an intelligent network interface device.

7. A method for receiving a network message by a device having a processor and specialized protocol processing hardware, the processor running a stack of protocol processing layers, the network message containing data and protocol headers, the method comprising:

  • establishing, by the stack of protocol processing layers, a TCP connection corresponding to the network message; and
  • transferring control of the TCP connection from the stack of protocol processing layers to the specialized protocol processing hardware.

U.S. Pat. No. 6,334,153
Passing a communication control block from host to a local device such that a message is processed on the device

1. A system for communication between a local host and a remote host that are connected by a network, the system comprising:

  • a device connected to the network and to the local host, said device including hardware logic for processing data packets,
  • a protocol processing stack disposed in the local host and configured for passing a communication control block to said device, with said communication control block defining a connection between the local host and the remote host,
  • wherein said device and said protocol processing stack are arranged such that a message transferred between said network and said local host is generally processed by said device instead of said protocol processing stack when said device is holding said communication control block.


U.S. Pat. No. 6,591,302
Fast-Path apparatus for receiving data corresponding to a TCP connection

1. An apparatus that communicates over a network, the apparatus comprising:

  • a processor executing a protocol processing stack to establish a TCP connection, the protocol processing stack including a TCP layer; and
  • a device that is coupled to the processor to receive a packet from the network, the device including a hardware processing mechanism to analyze at least a TCP header of the packet and determine TCP source and destination ports for the packet, the device using the TCP source and destination ports to determine whether the packet corresponds to the TCP connection.

2. The apparatus of claim 1, wherein control of the TCP connection is held by the device.

3. The apparatus of claim 1, wherein control of the TCP connection is held by the processor.

8. An apparatus that communicates over a network, the apparatus comprising:

  • a processor that executes a protocol processing stack and establishes a TCP connection, the protocol processing stack including a TCP layer; and
  • a device coupled to the processor and including a processing mechanism that classifies a packet received by the device from the network, the packet containing control information including at least a transport layer header and a network layer header, the processing mechanism analyzing the control information without interruption between the transport layer header and the network layer header, to determine whether the packet corresponds to the TCP connection.


U.S. Pat. No. 6,687,758

Port aggregation for network connections that are offloaded to network interface devices

17. A method for communication of a host having first and second network interface devices coupled to at least one packet-switched network, the method comprising: storing a block of information describing a network connection the first network interface device, such that a first packet corresponding to said network connection is processed by said first network interface device, and transferring said block of information to the second network interface device, such that a second packet corresponding to said network connection is processed by said second network interface device.

20. The method of claim 17, wherein said first and second network interface devices are coupled to said one packet-switched network by a switch, and said transferring is initiated by said switch.


U.S. Pat. No. 6,434,620

TCP/IP offload network interface device

1. A system, comprising:

  • a processor that performs slow-path network protocol processing, the slow-path network protocol processing being performed substantially in software; and
  • network protocol accelerator circuitry, the network protocol accelerator circuitry receiving a first network communication, the first network communication including a TCP header, the network protocol accelerator circuitry performing fast-path network processing on the first network communication such that the processor performs substantially no TCP protocol processing on the first network communication, the network protocol accelerator circuitry receiving a second network communication, the second network communication including a TCP header, the second network communication being associated with a connection, wherein the processor assumes control of the connection from the network protocol accelerator circuitry, the processor then performing slow-path network protocol processing on the second network communication.

5. A protocol accelerator integrated circuit that operates in conjunction with a processor, the processor executing a network protocol stack, the protocol accelerator integrated circuit receiving a first network communication from a network at substantially the same time that it outputs a second network communication to the network, the first network communication including a TCP header and an IP header, the second network communication including a TCP header and an IP header, the protocol accelerator integrated circuit comprising a pipeline of processors, the pipeline of processors including a receive processor and a transmit processor, the receive processor performing protocol processing on the first network communication such that the network protocol stack performs substantially no TCP protocol processing on the first network communication and such that the network protocol stack performs substantially no IP protocol processing on the first network communication, the transmit processor performing protocol processing on the second network communication such that the network protocol stack performs substantially no TCP protocol processing on the second network communication and such that the network protocol stack performs substantially no IP protocol processing on the second network communication.


U.S. Pat. No. 6,427,173
Intelligent network interfaced device and system for accelerated communication

1. A device for communication between a network and a host computer, the device being coupled to the network and being coupled to the host computer, the host computer having a protocol stack, the device comprising:

  • a receive sequencer that analyzes headers of packets received onto the device from the network, the receive sequencer generating for each of the packets an associated summary, each of the summaries being indicative of whether the associated packet is a fast-path candidate;
  • a memory that stores the summaries; and
  • a processor that obtains the summaries from the memory and determines, for each summary indicating that the associated packet is a fast-path candidate, whether the associated packet meets a plurality of fast-path criteria, and wherein if the processor determines that a packet meets the plurality of fast-path criteria then the processor performs transport and network layer processing of the packet on the device such that the protocol stack of the host computer does not perform the transport or network layer processing of the packet, whereas if the processor determines that the packet does not meet the plurality of fast-path criteria then the processor does not perform the transport and network layer processing such that the transport and network layer processing is done by the protocol stack of the host computer.

15. A system for communicating a TCP data packet through a network from a first computer to a second computer, the TCP data packet being communicated from the first computer to the second computer via a TCP/IP connection, the system comprising:

  • a device coupled to the network, the device comprising a first portion and a second portion, the first portion performing initial TCP processing on the TCP data packet as the TCP data packet is received onto the device from the network, the second portion being a processor that performs subsequent TCP processing on the TCP data packet; and
  • a protocol processing stack disposed in the second computer and configured for passing control of the TCP/IP connection to the device, the control being passed from the protocol processing stack to the device, the TCP data packet being generally processed by the device instead of the protocol processing stack when the device is controlling the TCP/IP connection.


U.S. Pat. No. 6,393,487
Passing a communication control block to a local device such that a message is processed on the device

1. A system for communication between a first computer and a second computer that are connected by a network, the system comprising:

  • a device connected to the network, said device including hardware logic for processing data packets,
  • a protocol processing stack disposed in the second computer and configured for passing control of a communication control block to said device, with said communication control block defining a connection between the second computer and the first computer,
  • wherein said device and said protocol processing stack are arranged such that a message transferred between said network and said second computer is generally processed by said device instead of said protocol processing stack when said device is controlling said communication control block.

3. The System of claim 1, wherein the device is a communication processing device (CPD) integrated into the second computer.


U.S. Pat. No. 6,658,480
Intelligent network interface system and method for accelerated protocol processing

1. An apparatus configured for communicating packets over a network, the packets having data and headers, the apparatus comprising:

  • a memory adapted to store a protocol processing stack,
  • a CPU configured to operate said protocol processing stack to process packets corresponding to a first set of protocols, and
  • a communication processing device adapted to communicate with the network, said communication processing device including hardware logic configured to receive the packets from the network and categorize the received packets as fast-path packets or slow-path packets, said communication processing device including a mechanism configured to transfer to said memory said slow-path packets and at least the data of said fast-path packets,
  • wherein said slow-path packets are processed by said CPU running said protocol processing stack, and said fast-path packets are not processed by said CPU running said protocol processing stack.

4. The apparatus of claim 1, wherein said communication processing device is integrated with said CPU.


U.S. Pat. No. 6,389,479
Intelligent network interface device and system for accelerated communication

1. A device for use with a local host that is connectable to a remote host via a network, the local host containing a CPU operating a stack of protocol processing layers that define a connection context between an application of the local host and an application of the remote host, the device comprising:

  • a communication processing mechanism connected to the CPU and to the network and containing a processor configured for choosing, by referencing the context, whether to process a network message by the protocol processing layers or to avoid the protocol processing layers and employ the context for transferring data contained in said message between the network and the local host application.

4. The device of claim 1, wherein said processor is adapted for creating a header corresponding to said context and including control information corresponding to several of the protocol processing layers, and prepending said header to said data for transmission of said message from the host to the remote host.

27. A device for communication between a network and a host computer having a processor and a sequential stack of protocol layers, the device comprising:

  • means for receiving, by said host from said network, a message packet including data and a plurality of headers corresponding to said stack of protocol layers, said data intended for placement in a destination of said host according to protocol processing of said headers,
  • means for processing said plurality of headers, including creating a summary of said group of headers, and
  • means for sending said data to said destination according to said summary of said group of headers, whereby sequential processing of said packet by said stack of protocol layers is avoided.


U.S. Pat. No. 6,247,060
Passing a communication control block from host to a local device such that a message is processed on the device

1. A system for communication between a local host and a remote host that are connected by a network, the system comprising:

  • a device connected to the network and to the local host, said device including hardware logic for processing data packets,
  • a protocol processing stack disposed in the local host and configured for creating a communication control block and passing said communication control block to said device, with said communication control block defining a connection between the local host and the remote host,
  • wherein said device and said protocol processing stack are arranged such that a message transferred between said network and said local host is generally processed by said device instead of said protocol processing stack when said device is holding said communication control block.

2. The system of claim 1, wherein the device comprises means for processing TCP data packets.


U.S. Pat. No. 6,226,680
Intelligent network interface system method for protocol processing

1. A method for communication between a network and a host computer having a processor and a sequential stack of protocol layers, the method comprising:

  • receiving, by said host from said network, a message packet including data and a plurality of headers corresponding to said stack of protocol layers, said data intended for placement in said host according to protocol processing of said headers,
  • processing, sequentially as a group, said plurality of headers, including creating a summary of said group of headers, and
  • choosing, dependent upon said summary, whether to process said packet by said protocol layers or to avoid processing by said protocol layers, for storing said data in a destination in said host.

19. A method for communication between a network and a host computer having a processor and a stack of protocol layers, the method comprising:

  • a step for receiving, by said host from said network, a message packet including data and a plurality of headers corresponding to said stack of protocol layers, wherein said data has been sent to the host for placement in the host according to protocol processing of said headers, and said headers are made of a series of bytes,
  • a step for categorizing said series of bytes to obtain a status of said packet, and
  • a step for choosing whether to process said packet by said protocol layers, said step for choosing dependent on said status.


U.S. Pat. No. 6,470,415
Queue system involving SRAM head, SRAM tail and DRAM body

1. An information storage device comprising:

  • a hardware storage queue configured for storage of data in a sequential order, said queue containing an SRAM storage mechanism coupled to a DRAM storage mechanism such that said data is retrieved from said queue in said sequential order, wherein said queue has a head and a tail formed of said SRAM storage mechanism and a body formed of said DRAM storage mechanism.

9. A system for arranging information for a device, the system comprising:

  • a DRAM array including a number of buffers for storing data, and
  • an information storage queue containing pointers to said buffers, said queue having a body disposed in said DRAM array, said queue having a head disposed in an SRAM memory, said queue having a tail disposed in said SRAM memory.