|
Home > 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.
|
|