IP Library Granted Patent US 7,283,522
Granted Patent B2
US 7,283,522 · App. 10/256,611 · Granted Oct 16, 2007

Method and apparatus for offloading message segmentation to a network interface card

Assignee: Sun Microsystems, 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,283,522
App. No.
10/256,611
Granted
Oct 16, 2007
Kind
B2
Abstract

One embodiment of the present invention provides a system that facilitates offloading message segmentation from a central processing unit onto a network interface card. The system operates by first receiving a TSO-send message at the network interface card, wherein the TSO-send message contains information about the message to be sent. Next, the system uses a header address from the TSO-send message to access a message header from memory using remote direct memory access. The system then uses a payload address from the TSO-send message to access a payload from memory that contains message data using remote direct memory access. Finally, the network interface card segments the payload into a set of maximum segment size (mss) segments and transmits the set of mss segments on the network.

Claims (39)

1. A method for offloading message segmentation from a central processing unit to a network interface card, comprising:

receiving a Message send packet at the network interface card from the central processing unit, wherein the Message send packet contains information about a message to be sent, and wherein the information about the message to be sent includes an address to a message header, an address to a message data block to be transmitted, and a maximum segment size;

using the header address from the Message send packet to access the message header from memory using remote direct memory access;

using the address to the message data block from the Message send packet to access a payload containing message data from memory using remote direct memory access;

segmenting the payload into a set of maximum segment size segments; and

transmitting the payload on a network by transmitting the set of maximum segment size segments.

2. The method of claim 1 , wherein the Message send packet includes a maximum segment size that has been negotiated by a Transmission Control Protocol (TCP) stack.

3. The method of claim 1 , wherein segmenting the payload involves updating Internet Protocol (IP) parameters and Transmission Control Protocol (TCP) parameters for each segment.

4. The method of claim 1 , wherein the Message send packet includes a data length for the payload.

5. The method of claim 1 , wherein if a last segment of the payload is less than a specified minimum size, the method further comprises padding the last segment with bytes until it is at least the specified minimum size.

6. The method of claim 1 , further comprising processing a segment acknowledge message for each segment.

7. The method of claim 6 , further comprising sending an acknowledge message to a Transmission Control Protocol (TCP) stack that originated the Message send packet after receiving the segment acknowledge message for each segment.

8. The method of claim 1 , wherein the message header includes an Ethernet header, an Internet Protocol (IP) header, and a Transmission Control Protocol (TCP) header for the message.

9. A computer-readable storage medium storing instructions that when executed by a computer cause the computer to perform a method for offloading message segmentation from a central processing unit to a network interface card, the method comprising:

receiving a Message send packet at the network interface card from the central processing unit, wherein the Message send packet contains information about a message to be sent, and wherein the information about the message to be sent includes an address to a message header, an address to a message data block to be transmitted, and a maximum segment size;

using the header address from the Message send packet to access the message header from memory using remote direct memory access;

using the address to the message data block from the Message send packet to access a payload containing message data from memory using remote direct memory access;

segmenting the payload into a set of maximum segment size segments; and

transmitting the payload on a network by transmitting the set of maximum segment size segments.

10. The computer-readable storage medium of claim 9 , wherein the Message send packet includes a maximum segment size that has been negotiated by a Transmission Control Protocol (TCP) stack.

11. The computer-readable storage medium of claim 9 , wherein segmenting the payload involves updating Internet Protocol (IP) parameters and Transmission Control Protocol (TCP) parameters for each segment.

12. The computer-readable storage medium of claim 9 , wherein the Message send packet includes a data length for the payload.

13. The computer-readable storage medium of claim 9 , wherein if a last segment of the payload is less than a specified minimum size, the method further comprises padding the last segment with bytes until it is at least the specified minimum size.

14. The computer-readable storage medium of claim 9 , the method further comprising processing a segment acknowledge message for each segment.

15. The computer-readable storage medium of claim 14 , the method further comprising sending an acknowledge message to a Transmission Control Protocol (TCP) stack that originated the Message send packet after receiving the segment acknowledge message for each segment.

16. The computer-readable storage medium of claim 9 , wherein the message header includes an Ethernet header, an Internet Protocol (IP) header, and a Transmission Control Protocol (TCP) header for the message.

17. An apparatus for offloading message segmentation from a central processing unit to a network interface card, comprising:

a receiving mechanism that is configured to receive a Message send packet at the network interface card from the central processing unit, wherein the Message send packet contains information about a message to be sent, and wherein the information about the message to be sent includes an address to a message header, an address to a message data block to be transmitted, and a maximum segment size;

an accessing mechanism that is configured to use the header address from the Message send packet to access the message header from memory using remote direct memory access;

wherein the accessing mechanism is further configured to use address to the message data block from the Message send packet to access a payload containing message data from memory using remote direct memory access;

a segmenting mechanism that is configured to segment the payload into a set of maximum segment size segments; and

a transmitting mechanism that is configured to transmit the payload on a network by transmitting the set of maximum segment size segments.

18. The apparatus of claim 17 , wherein the Message send packet includes a maximum segment size that has been negotiated by a Transmission Control Protocol (TCP) stack.

19. The apparatus of claim 17 , wherein the segmenting mechanism is further configured to update Internet Protocol (IP) parameters and Transmission Control Protocol (TCP) parameters for each segment.

20. The apparatus of claim 17 , wherein the Message send packet includes a data length for the payload.

21. The apparatus of claim 17 , further comprising a padding mechanism that is configured to pad a last segment with bytes until it is at least a specified minimum size.

22. The apparatus of claim 17 , further comprising a processing mechanism that is configured to process a segment acknowledge message for each segment.

23. The apparatus of claim 22 , further comprising a sending mechanism that is configured to send an acknowledge message to a Transmission Control Protocol (TCP) stack that originated the Message send packet after receiving the segment acknowledge message for each segment.

24. The apparatus of claim 17 , wherein the message header includes an Ethernet header, an Internet Protocol (IP) header, and a Transmission Control Protocol (TCP) header for the message.

Assignments (2)
MERGER AND CHANGE OF NAME Recorded Aug 31, 2016
From: ORACLE USA, INC.; SUN MICROSYSTEMS, INC.; ORACLE AMERICA, INC.
To: ORACLE AMERICA, INC.
Reel/Frame 039604/0471 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 27, 2002
From: SIDDABATHUNI, AJOY C.
To: SUN MIRCROSYSTEMS, INC.
Reel/Frame 013338/0112 →
Continuity (1)
Related Publication 20040062275A1 · Apr 1, 2004