IP Library Granted Patent US 7,924,719
Granted Patent B2
US 7,924,719 · App. 11/869,858 · Granted Apr 12, 2011

Parallelizing the TCP behavior of a network connection

Assignee: Oracle America, 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,924,719
App. No.
11/869,858
Granted
Apr 12, 2011
Kind
B2
Abstract

One embodiment of the present invention provides a system that parallelizes the TCP-related actions of a network connection between two computer systems during a data transfer between the two computer systems. During operation, the first computer system partitions the data into two or more data segments, and assigns the data segments to multiple processing elements. These multiple processing elements subsequently prepare and send their assigned data segments to the second computer system in parallel using TCP.

Claims (48)

1. A method for parallelizing the transmission-control protocol (TCP)-related actions of a network connection, wherein the network connection facilitates communication between a first computer system and a second computer system during a data transfer between the first computer system and the second computer system, and wherein the first computer system includes a send window that is used to control the transmission of data on the network connection, wherein a size of the send window can be adjusted based on one or more properties of the first computer system, comprising:

partitioning the data to be transferred into two or more data segments on the first computer system, wherein a size of the data segments is determined based on the size of the send window and a number of available processing elements in the first computer system;

assigning the data segments to multiple processing elements within the first computer system; and

using the multiple processing elements to prepare and send their assigned data segments over the network connection to the second computer system in parallel using TCP;

wherein the network connection comprises a single physical network link.

2. The method of claim 1 ,

wherein partitioning the data to be transferred and sending the partitioned data segments in parallel using the multiple processing elements does not involve changing TCP; and

wherein partitioning the data to be transferred and sending the partitioned data segments in parallel using the multiple processing elements is transparent to the application layer.

3. The method of claim 1 ,

wherein the network connection is bi-directional;

wherein the second computer system sends data to the first computer system in the same timeframe that the first computer system sends data to the second computer system;

wherein the first computer system and the second computer system can both simultaneously partition and send data segments to each other in parallel over the bi-directional network connection; and

wherein one or both of the first computer system and the second computer system can partition received data and process the received, partitioned data in parallel using the multiple processing units.

4. The method of claim 1 , wherein the minimum partition size is the larger of:

a virtual memory page size for the first computer system; and

a TCP maximum segment size.

5. The method of claim 4 , wherein the virtual memory page size for the first computer system is variable, which facilitates finer data segment sizes and thereby potentially increases the parallelization of data transfers.

6. The method of claim 1 , wherein the multiple processing elements include two or more central-processing units that can execute independent operations in parallel.

7. The method of claim 1 wherein, upon detecting from the received data that the first computer system is sending two or more data segments in parallel, the second computer system configures itself to receive the two or more segments in parallel.

8. A method for parallelizing the TCP-related actions of a network connection, wherein the network connection facilitates communication between a first computer system and a second computer system, and wherein the first computer system includes a send window that is used to control the transmission of data on the network connection, wherein a size of the send window can be adjusted based on one or more properties of the first computer system, comprising:

receiving TCP packets sent over the network connection from the first computer system on the second computer system, wherein a size of a data segment in each TCP packet is determined based on the size of the send window and a number of available processing elements in the first computer system;

partitioning the received TCP packets into data segments;

assigning the received data segments to multiple processing elements on the second computer system; and

using the multiple processing elements to process the data from the received TCP packets in parallel;

wherein the network connection comprises a single physical network link.

9. A non-transitory computer-readable storage medium storing instructions that when executed by a computer cause the computer to perform a method for parallelizing the TCP-related actions of a network connection, wherein the network connection facilitates communication between a first computer system and a second computer system during a data transfer between the first computer system and the second computer system, and wherein the first computer system includes a send window that is used to control the transmission of data on the network connection, wherein a size of the send window can be adjusted based on one or more properties of the first computer system, the method comprising:

partitioning the data to be transferred into two or more data segments on the first computer system, wherein a size of the data segments is determined based on the size of the send window and a number of available processing elements in the first computer system;

assigning the data segments to multiple processing elements within the first computer system; and

using the multiple processing elements to prepare and send their assigned data segments over the network connection to the second computer system in parallel using TCP;

wherein the network connection comprises a single physical network link.

10. The non-transitory computer-readable storage medium of claim 9 ,

wherein partitioning the data to be transferred and sending the partitioned data segments in parallel using the multiple processing elements does not involve changing TCP; and

wherein partitioning the data to be transferred and sending the partitioned data segments in parallel using the multiple processing elements is transparent to the application layer.

11. The non-transitory computer-readable storage medium of claim 9 ,

wherein the network connection is bi-directional;

wherein the second computer system sends data to the first computer system in the same timeframe that the first computer system sends data to the second computer system;

wherein the first computer system and the second computer system can both simultaneously partition and send data segments to each other in parallel over the bi-directional network connection; and

wherein one or both of the first computer system and the second computer system can partition received data and process the received, partitioned data in parallel using the multiple processing units.

12. The non-transitory computer-readable storage medium of claim 9 , wherein the minimum partition size is the larger of:

a virtual memory page size for the first computer system; and

a TCP maximum segment size.

13. The non-transitory computer-readable storage medium of claim 12 , wherein the virtual memory page size for the first computer system is variable, which facilitates finer data segment sizes and thereby potentially increases the parallelization of data transfers.

14. An apparatus that parallelizes TCP-related actions of a network connection, wherein the network connection facilitates communication between a first computer system and a second computer system during a data transfer between the first computer system and the second computer system, and wherein the first computer system includes a send window that is used to control the transmission of data on the network connection, wherein a size of the send window can be adjusted based on one or more properties of the first computer system, comprising:

a partitioning mechanism configured to partition the data to be transferred into two or more data segments on the first computer system, wherein the partitioning mechanism is configured to determine a size of the data segments based on the size of the send window and a number of available processing elements in the first computer system; and

an assigning mechanism configured to assign the data segments to multiple processing elements within the first computer system;

wherein the multiple processing elements are configured to prepare and send their assigned data segments over the network connection to the second computer system in parallel using TCP; and

wherein the network connection comprises a single physical network link.

15. The method of claim 1 , wherein the data segments sent by the multiple processing elements are sent in parallel using a single TCP connection.

Assignments (2)
MERGER AND CHANGE OF NAME Recorded Dec 16, 2015
From: ORACLE USA, INC.; SUN MICROSYSTEMS, INC.; ORACLE AMERICA, INC.
To: ORACLE AMERICA, INC.
Reel/Frame 037311/0056 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 15, 2007
From: CURTIS, BRUCE W.; JOHNSON, DARRIN P.; HUGHES, JAMES P.
To: SUN MICROSYSTEMS, INC.
Reel/Frame 020116/0306 →
Continuity (1)
Related Publication 20090097480A1 · Apr 16, 2009