IP Library Granted Patent US 7,414,975
Granted Patent B2
US 7,414,975 · App. 11/089,845 · Granted Aug 19, 2008

Protocol stack

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,414,975
App. No.
11/089,845
Granted
Aug 19, 2008
Kind
B2
Abstract

There are disclosed processes and systems relating to protocol stacks. The protocol stack may be run entirely in a single memory space. There may be a communal memory region available to certain layers of the protocol stack. The layers of the protocol stack may form condensed versions of data and headers, and data units may be formed by hardware within the device when needed. After transmission, data units may be immediately deleted but recreated if needed for retransmission.

Claims (96)

1. A process of operating a protocol stack to transmit data, the protocol stack comprising a plurality of interfaced layers including an application layer, a transport layer and a device layer, the device layer having a transmit queue, the process comprising

(a) forming at least a first portion of the data into a data unit

(b) forming a context unit

(c) the transport layer creating a transport header for the data unit

(d) adding a transport context of transport information to the context unit

(f) transmitting the data unit from the device in an open session

(g) removing the data unit from the transmit queue

(h) receiving an acknowledgement that the data unit has been received

(i) removing the context unit from the context buffer

(j) if the acknowledgement is not received, then using the context unit to recreate the data unit and placing the recreated data unit in the transmit queue.

2. The process of operating a protocol stack to transmit data of claim 1 wherein

step (a) includes storing the data unit in a data buffer

step (g) includes removing the data unit from the data buffer.

3. The process of operating a protocol stack to transmit data of claim 2 wherein removing the data unit from the data buffer comprises marking a storage location of the data unit as available.

4. The process of operating a protocol stack to transmit data of claim 1 wherein step (a) comprises using the context unit to form the data unit.

5. The process of operating a protocol stack to transmit data of claim 1 comprising representing the data unit as one or more descriptors.

6. The process of operating a protocol stack to transmit data of claim 5 wherein the descriptors are selected from the group comprising raw data, constant data, null data and random data, wherein

for raw data the descriptor points to a physical buffer that contains session specific data

for constant data the descriptor points to a physical buffer that contains constant data

for null data the descriptor describes a segment containing zeros

for random data the descriptor describes a segment containing random data.

7. The process of operating a protocol stack to transmit data of claim 6 wherein for at least one of constant data and null data, the descriptor includes a pre-calculated checksum.

8. The process of operating a protocol stack to transmit data of claim 1 including

calculating a checksum

adding the checksum to the context unit.

9. The process of operating a protocol stack to transmit data of claim 1 wherein the forming steps are performed concurrently.

10. The process of operating a protocol stack to transmit data of claim 1 wherein the device comprises a memory having a user space and a kernel space, and steps (a), (b), (c), (d) and (e), (h), (i) and (j) are performed entirely in a single memory space selected from the group comprising the user space and the kernel space.

11. The process of operating a protocol stack to transmit data of claim 1 wherein the transport layer uses a transport selected from the group comprising TCP and UDP.

12. The process of operating a protocol stack to transmit data of claim 1 wherein the context unit comprises a condensed version of the data unit.

13. The process of operating a protocol stack to transmit data of claim 1 wherein step (c) includes steps (a) and (b).

14. A storage medium having instructions stored thereon which when executed by a processor cause the processor to perform actions, the instructions comprising a protocol stack comprising a plurality of interfaced layers including an application layer, a transport layer and a device layer, the device layer having a transmit queue, the actions comprising:

(a) forming at least a first portion of data into a data unit

(b) forming a context unit and storing the context unit in a context buffer

(c) the transport layer forming a transport header for the data unit

(d) adding a transport context of transport information to the context unit

(e) placing the data unit in the transmit queue

(f) transmitting the data unit from the device in an open session

(g) removing the data unit from the transmit queue

(h) receiving an acknowledgement that the data unit has been received

(i) removing the context unit from the context buffer

(j) if the acknowledgement is not received, then using the context unit to recreate the data unit and placing the recreated data unit in the transmit queue.

15. The storage medium of claim 14 wherein

step (a) includes storing the data unit in a data buffer

step (g) includes removing the data unit from the data buffer.

16. The storage medium of claim 15 wherein removing the data unit from the data buffer comprises marking a storage location of the data unit as available.

17. The storage medium of claim 14 wherein step (a) comprises using the context unit to form the data unit.

18. The storage medium of claim 14 comprising representing the data unit as one or more descriptors.

19. The storage medium of claim 18 wherein the descriptors are selected from the group comprising raw data, constant data, null data and random data, wherein

for raw data the descriptor points to a physical buffer that contains session specific data

for constant data the descriptor points to a physical buffer that contains constant data

for null data the descriptor describes a segment containing zeros

for random data the descriptor describes a segment containing random data.

20. The storage medium of claim 19 wherein for at least one of constant data and null data, the descriptor includes a pre-calculated checksum.

21. The storage medium of claim 14 including

calculating a checksum

adding the checksum to the context unit.

22. The storage medium of claim 14 wherein the forming steps are performed concurrently.

23. The storage medium of claim 14 wherein the device comprises a memory having a user space and a kernel space, and steps (a), (b), (c), (d) and (e), (h), (i) and (j) are performed entirely in a single memory space selected from the group comprising the user space and the kernel space.

24. The storage medium of claim 14 wherein the transport layer uses a transport selected from the group comprising TCP and UDP.

25. The storage medium of claim 14 wherein the context unit comprises a condensed version of the data unit.

26. The storage medium of claim 14 wherein step (c) includes steps (a) and (b).

27. A computing device to transmit data, the computing device comprising:

a processor

a protocol stack comprising a plurality of interfaced layers including an application layer, a transport layer and a device layer, the device layer having a transmit queue

a memory coupled with the processor

wherein the processor and the memory comprise circuits and software for

(a) forming at least a first portion of the data into a data unit

(b) forming a context unit and storing the context unit in a context buffer

(c) the transport layer forming a transport header for the data unit

(d) adding a transport context of transport information to the context unit

(e) placing the data unit in the transmit queue

(f) transmitting the data unit from the device in an open session

(g) removing the data unit from the transmit queue

(h) receiving an acknowledgement that the data unit has been received

(i) removing the context unit from the context buffer

(j) if the acknowledgement is not received, then using the context unit to recreate the data unit and placing the recreated data unit in the transmit queue.

28. The computing device of claim 27 wherein

step (a) includes storing the data unit in a data buffer

step (g) includes removing the data unit from the data buffer.

29. The computing device of claim 28 wherein removing the data unit from the data buffer comprises marking a storage location of the data unit as available.

30. The computing device of claim 27 wherein step (a) comprises using the context unit to form the data unit.

31. The computing device of claim 27 comprising representing the data unit as one or more descriptors.

32. The computing device of claim 31 wherein the descriptors are selected from the group comprising raw data, constant data, null data and random data, wherein

for raw data the descriptor points to a physical buffer that contains session specific data

for constant data the descriptor points to a physical buffer that contains constant data

for null data the descriptor describes a segment containing zeros

for random data the descriptor describes a segment containing random data.

33. The computing device of claim 32 wherein for at least one of constant data and null data, the descriptor includes a pre-calculated checksum.

34. The computing device of claim 27 including

calculating a checksum

adding the checksum to the context unit.

35. The computing device of claim 27 wherein the forming steps are performed concurrently.

36. The computing device of claim 27 wherein the device comprises a memory having a user space and a kernel space, and steps (a), (b), (c), (d) and (e), (h), (i) and (j) are performed entirely in a single memory space selected from the group comprising the user space and the kernel space.

37. The computing device of claim 27 wherein the transport layer uses a transport selected from the group comprising TCP and UDP.

38. The computing device of claim 27 wherein the context unit comprises a condensed version of the data unit.

39. The computing device of claim 27 wherein step (c) includes steps (a) and (b).

Assignments (5)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 19, 2018
From: KEYSIGHT TECHNOLOGIES SINGAPORE (HOLDINGS) PTE. LTD.
To: KEYSIGHT TECHNOLOGIES SINGAPORE (SALES) PTE. LTD.
Reel/Frame 048225/0065 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 18, 2017
From: IXIA
To: KEYSIGHT TECHNOLOGIES SINGAPORE (HOLDINGS) PTE. LTD.
Reel/Frame 044222/0695 →
RELEASE OF SECURITY INTEREST Recorded Apr 26, 2017
From: SILICON VALLEY BANK, AS SUCCESSOR ADMINISTRATIVE AGENT
To: IXIA
Reel/Frame 042335/0465 →
NOTICE OF SUBSTITUTION OF ADMINISTRATIVE AGENT Recorded Feb 2, 2015
From: BANK OF AMERICA, N.A., RESIGNING ADMINISTRATIVE AGENT
To: SILICON VALLEY BANK, AS SUCCESSOR ADMINISTRATIVE AGENT
Reel/Frame 034870/0598 →
SECURITY AGREEMENT Recorded Jan 25, 2013
From: IXIA
To: BANK OF AMERICA, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 029698/0060 →