IP Library Granted Patent US 8,949,471
Granted Patent B2
US 8,949,471 · App. 10/415,330 · Granted Feb 3, 2015

TCP/UDP acceleration

Inventors: Howard Hall (Groton, MA); Ilia Sokolinski (Brighton, MA); Milan Merhar (Brookline, MA)
Assignee: Oracle America, Inc.
H04L29/06H04L69/10H04L69/165H04L69/16
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 8,949,471
App. No.
10/415,330
Granted
Feb 3, 2015
Kind
B2
Abstract

A method for accelerating TCP/UDP packet switching. The method involves determining whether exception processing is necessary; if not, the packet is forwarded to a special stack for expedited processing. Packets requiring exception processing are forwarded to the conventional stack.

Claims (41)

1. In a digital processing system, a method of accelerating processing of packets in a series of packets, the method comprising:

establishing, within the system, a first protocol stack for processing packets requiring exception processing, and a second protocol stack for simplified processing of packets not requiring exception processing,

testing each packet in the series of packets to determine whether a given packet requires exception processing,

forwarding to the second protocol stack, as a function of the testing, packets not requiring exception processing,

forwarding to the first protocol stack, as a function of the testing, packets requiring exception processing,

maintaining state synchronization between the first and second protocol stacks by exchanging control messages between a fast path processing engine processing packets in the second protocol stack and a slow-path processing engine processing packets in the first protocol stack, and

reducing processing volume or time in the slow-path processing engine in response to the maintaining of state synchronization.

2. The method of claim 1 wherein the maintaining of state synchronization comprises the exchange of state information between respective processing modules associated with the first and second stacks.

3. The method of claim 1 wherein the first and second stacks are configured for TCP packet processing, and the testing comprises testing, for each packet, that the packet has been received in sequence.

4. The method claim 1 wherein the testing step includes testing, for each packet, that the packet has no associated retransmission requirement.

5. The method of claim 1 wherein the testing step includes testing, for each packet, that there is no data queued in an associated socket's Send buffer.

6. The method of claim 1 wherein the testing step comprises testing, for each packet, that there are no TCP-atypical flags set for the packet.

7. The method of claim 1 wherein the testing step comprises testing, for each packet, that no associated options are set other than timestamp.

8. The method of claim 1 wherein the testing step comprises testing, for each packet, that the associated timestamp is correct.

9. The method of claim 2 wherein the maintaining of state synchronization comprises maintaining state synchronization between and among the first, second, and at least a third stack.

10. The method of claim 9 wherein the maintaining of state synchronization comprises the exchange of state information between respective processing modules associated with each stack.

11. The method of claim 2 wherein state lost in one stack due to at least one system error and failure can be restored through resynchronization with an undisrupted stack.

12. In a digital network comprising at least a first client, a storage resource, and a switch element operable to direct a series of packets between the client and the storage resource, a method of accelerating processing of packets in a series of packets, the method comprising:

providing, within the switch element,

a first configurable set of processor elements to process storage resource connection requests,

a second configurable set of processor elements capable of communications with the first configurable set of processor elements to receive, from the first configurable set of processor elements, storage resource connection requests representative of client requests, and to route the requests to elements of the storage resource, and

a configurable switching fabric interconnected between the first and second sets of processor elements, for

receiving at least a first storage resource connection request from one of the first set of processor elements,

determining an appropriate one of the second set of processors for processing the storage resource connection-request,

automatically configuring the storage resource connection request in accordance with a protocol utilized by the selected one of the second set of processors, and

forwarding the request for storage resource connection to the selected one of the second set of processors for routing to elements of the storage resource,

establishing, in the switch element, a first protocol stack for processing packets requiring exception processing, and a second protocol stack for simplified processing of packets not requiring exception processing,

receiving, in the switch element, the series of packets for processing,

testing, in the switch element, each packet in the series of packets to determine whether a given packet requires exception processing,

forwarding to the second protocol stack, as a function of the testing, packets not requiring exception processing,

forwarding to the first protocol stack, as a function of the testing, packets requiring exception processing,

maintaining state synchronization between the first and second protocol stacks by exchanging control messages between a fast path processing engine processing packets in the second protocol stack and a slow-path processing engine processing packets in the first protocol stack, and

reducing processing volume or time in the slow-path processing engine in response to the maintaining of state synchronization.

13. The method of claim 12 wherein the maintaining of state synchronization comprises the exchange of state information between respective processor elements, in the switch element, associated with the first and second stacks.

14. The method of claim 12 or 13 wherein the first and second stacks are configured for TOP packet processing, and the testing step comprises testing, for each packet, that the packet has been received in sequence.

15. The method of claim 12 wherein the testing step comprises testing, for each packet, that the packet has no associated retransmission requirement.

16. The method of claim 12 wherein the testing step comprises testing, for each packet, that there is no data queued in an associated socket's Send buffer.

17. The method of claim 12 wherein the testing step comprises testing, for each packet, that there are no TOP-atypical flags set for the packet.

18. The method of claim 12 wherein the testing step comprises testing, for each packet, that no associated options are set other than timestamp.

19. The method of claim 12 wherein the testing step comprises testing, for each packet, that the associated timestamp is correct.

20. The method of claim 13 wherein state lost in one stack due to at least one of system error and failure can be restored, in the switch element, through resynchronization with an undisrupted stack.

Assignments (2)
MERGER Recorded May 26, 2016
From: SUN MICROSYSTEMS, INC.
To: ORACLE AMERICA, INC.
Reel/Frame 038725/0862 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 29, 2003
From: PIRUS NETWORKS, INC.
To: SUN MICROSYSTEMS
Reel/Frame 014213/0792 →
Continuity (3)
Provisional Application 60245295 · Nov 2, 2000
Provisional Application 60301378 · Jun 27, 2001
Related Publication 20040111523A1 · Jun 10, 2004