IP Library Granted Patent US 7,945,699
Granted Patent B2
US 7,945,699 · App. 12/325,941 · Granted May 17, 2011

Obtaining a destination address so that a network interface device can write network data without headers directly into host memory

Assignee: Alacritech, Inc.
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 7,945,699
App. No.
12/325,941
Granted
May 17, 2011
Kind
B2
Abstract

A Network Interface device (NI device) coupled to a host computer receives a multi-packet message from a network (for example, the Internet) and DMAs the data portions of the various packets directly into a destination in application memory on the host computer. The address of the destination is determined by supplying a first part of the first packet to an application program such that the application program returns the address of the destination. The address is supplied by the host computer to the NI device so that the NI device can DMA the data portions of the various packets directly into the destination. In some embodiments the NI device is an expansion card added to the host computer, whereas in other embodiments the NI device is a part of the host computer.

Claims (32)

1. A method comprising:

receiving, by a network interface that is coupled to a computer, a plurality of packets each containing data, a network layer header and a transport layer header;

obtaining a destination for the data in a memory of the computer, such that information that is later stored in the destination will be controlled by an application running on the computer that is above the transport layer;

providing an indication of the destination from the computer to the network interface; and

transferring the data to the destination, without transferring the network layer headers or the transport layer headers of the plurality of packets to the destination, and without processing the network layer headers or the transport layer headers by the computer.

2. The method of claim 1 , wherein obtaining the destination for the data in the memory of the computer includes providing, by the network interface to the computer, a session layer header from one of the packets.

3. The method of claim 1 , wherein the application is denoted by a port number in the transport layer header of the packets.

4. The method of claim 1 , further comprising storing, by the network interface, the data from the packets as a contiguous block prior to transferring, by the network interface, the data to the destination.

5. The method of claim 1 , wherein transferring, by the network interface, the data to the destination includes transferring the data as a contiguous block.

6. The method of claim 1 , wherein transferring the data to the destination is performed by the network interface.

7. A method comprising:

receiving, by a network interface that is coupled to a computer, a plurality of packets each containing data, a network layer header and a transport layer header, wherein the data is for an application running on the computer;

providing, by the network interface to the computer, a session layer header from one of the packets;

analyzing, by the computer, the session layer header, including obtaining a destination for the data in a memory of the computer, such that information that is later stored in the destination will be controlled by the application; and

transferring the data to the destination, without transferring the network layer headers or the transport layer headers of the plurality of packets to the destination, and without processing the network layer headers or the transport layer headers by the computer.

8. The method of claim 7 , further comprising storing, by the network interface, the data from the packets as a contiguous block prior to transferring, by the network interface, the data to the destination.

9. The method of claim 7 , wherein transferring, by the network interface, the data to the destination includes transferring the data as a contiguous block.

10. The method of claim 7 , wherein the application is denoted by a port number in the transport layer header of the packets.

11. The method of claim 7 , wherein transferring the data to the destination is performed by the network interface.

12. The method of claim 7 , wherein the packets correspond to a TCP connection identified by source and destination IP addresses and source and destination TCP ports.

13. A method comprising:

receiving, by a network interface that is coupled to a computer, a plurality of packets each containing data, a network layer header and a transport layer header, wherein the data is for an application running on the computer;

providing, by the network interface to the computer, a header portion of one of the packets;

analyzing, by the computer, the header portion, including obtaining a destination for the data in a memory of the computer, such that information that is later stored in the destination will be controlled by the application; and

transferring the data to the destination, without transferring the network layer headers or the transport layer headers of the plurality of packets to the destination, and without processing the network layer headers or the transport layer headers by the computer.

14. The method of claim 13 , further comprising storing, by the network interface, the data from the packets as a contiguous block prior to transferring, by the network interface, the data to the destination.

15. The method of claim 13 , wherein transferring, by the network interface, the data to the destination includes transferring the data as a contiguous block.

16. The method of claim 13 , wherein the application is denoted by a port number in the transport layer header of the packets.

17. The method of claim 13 , wherein transferring the data to the destination is performed by the network interface.

18. The method of claim 13 , wherein the packets correspond to a TCP connection identified by source and destination IP addresses and source and destination TCP ports.

19. The method of claim 13 , wherein the header portion includes a session layer header.

20. The method of claim 1 , wherein obtaining the destination for the data in the memory of the computer includes providing, by the network interface to the computer, a session layer header from one of the packets.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 22, 2016
From: A-TECH LLC
To: ALACRITECH, INC.
Reel/Frame 039068/0884 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 15, 2013
From: ALACRITECH INC.
To: A-TECH LLC
Reel/Frame 031644/0783 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 22, 2010
From: BOUCHER, LAURENCE B.; BLIGHTMAN, STEPHEN E.J.; CRAFT, PETER K.; HIGGEN, DAVID A.; PHILBRICK, CLIVE M.; STARR, DARYL D.
To: ALACRITECH, INC.
Reel/Frame 024676/0590 →
Continuity (16)
Continuation 10881271 · Jun 29, 2004
Continuation 09789366 · Feb 20, 2001
Continuation In Part 09464283 · Dec 15, 1999
Continuation 09439603 · Nov 12, 1999
Continuation 09067544 · Apr 27, 1998
Continuation In Part 09748936 · Dec 26, 2000
Continuation In Part 09692561 · Oct 18, 2000
Continuation In Part 09675700 · Sep 29, 2000
Continuation In Part 09675484 · Sep 29, 2000
Continuation In Part 09514425 · Feb 28, 2000
Continuation In Part 09416925 · Oct 13, 1999
Continuation In Part 09141713 · Aug 28, 1998
Continuation In Part 09384792 · Aug 27, 1999
Provisional Application 60061809 · Oct 14, 1997
Provisional Application 60098296 · Aug 27, 1998
Related Publication 20090086732A1 · Apr 2, 2009