IP Library Granted Patent US 9,843,412
Granted Patent B2
US 9,843,412 · App. 14/615,655 · Granted Dec 12, 2017

Optimizing routing of data across a communications network

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 9,843,412
App. No.
14/615,655
Granted
Dec 12, 2017
Kind
B2
Abstract

A method begins by a first computing device determining a routing plan to route a set of encoded data slices from the first computing device to a second computing device via a plurality of network paths of a communications network. The method continues with the second computing device receiving encoded data slices via one or more network paths. When the second computing device receives a decode threshold number of encoded data slices, the method continues with the second computing device sending a message to the communications network indicating receipt of the decode threshold number of encoded data slices. The method continues with a relay unit determining whether the relay unit is in possession of a not-yet delivered encoded data slice. When the relay unit is in possession of the not-yet delivered encoded data slice, the method continues with the relay unit ceasing forwarding of the not-yet delivered encoded data slice.

Claims (67)

1. A method comprises:

determining, by a first computing device, a routing plan to route a set of encoded data slices from the first computing device to a second computing device via a plurality of network paths within a communications network, wherein a data segment was dispersed storage error encoded to produce the set of encoded data slices, wherein a decode threshold number of encoded data slices of the set of encoded data slices is needed to recover the data segment, wherein the first and second computing devices are operably coupled to the communications network, and wherein each network path of the plurality of network paths includes one or more relay units;

receiving, by the second computing device, encoded data slices of the set of encoded data slices via one or more network paths of the plurality of network paths;

when the second computing device receives the decode threshold number of encoded data slices, sending, by the second computing device, a message to the communications network; and

when the message indicates receipt of the decode threshold number of encoded data slices:

determining, by a relay unit of the one or more relay units of a corresponding network path of the plurality of network paths, whether the relay unit is in possession of a not-yet delivered encoded data slice of the set of encoded data slices; and

when the relay unit is in possession of the not-yet delivered encoded data slice, ceasing, by the relay unit, forwarding of the not-yet delivered encoded data slice along the corresponding network path.

2. The method of claim 1 further comprises:

determining, by the relay unit, that the relay unit is not in possession of the not-yet delivered encoded data slice;

determining, by the relay unit, whether the corresponding network path is assigned to the not-yet delivered encoded data slice; and

when the corresponding network path is assigned to the not-yet delivered encoded data slice, forwarding, by the relay unit, the message upstream along the corresponding network path.

3. The method of claim 1 further comprises:

when the message indicates receipt of the decode threshold number of encoded data slices and the message is indicative of a pause message, the ceasing, by the relay unit, forwarding of the not-yet delivered encoded data slice along the corresponding network path includes temporarily storing the not-yet delivered encoded data slice; and

continuing, by the relay unit, to temporarily store the not-yet delivered encoded data slice until a further processing event occurs.

4. The method of claim 3 , wherein the further processing event comprises one or more:

deleting the not-yet delivered encoded data slice after expiration of a pause time period;

receiving a second message indicating deletion of the not-yet delivered encoded data slice; and

receiving a third message indicating forwarding of the not-yet delivered encoded data slice downstream along the corresponding network path.

5. The method of claim 1 further comprises:

interpreting, by the relay unit, that the message indicates receipt of the decode threshold number of encoded data slices and the message is a delete command regarding the not-yet delivered encoded data slice; and

ceasing, by the relay unit, the forwarding of the not-yet delivered encoded data slice by deleting the not-yet delivered encoded data slice.

6. The method of claim 1 further comprises:

decoding, by the second computing device, the decode threshold number of encoded data slices to produce a decoded data segment; and

when the decoded data segment is validated, sending a second message indicating deletion of the not-yet delivered encoded data slice and other not-yet delivered encoded data slices.

7. The method of claim 1 further comprises:

decoding, by the second computing device, the decode threshold number of encoded data slices to produce a decoded data segment; and

when the decoded data segment is not validated, sending a second message indicating a request for delivery of the not-yet delivered encoded data slice.

8. The method of claim 1 further comprises:

determining, by the relay unit, whether delivery of a sub-set of encoded data slices of the set of encoded data slices allocated for delivery via the corresponding network path have been delivered to the second computing device; and

when delivery of the sub-set of encoded data slices of the set of encoded data slices allocated for delivery via the corresponding network path have been delivered to the second computing device, ignoring, by the relay unit, the message.

9. A non-transitory computer readable storage medium comprises:

at least one memory section that stores operational instructions that, when executed by one or more processing modules of one or more computing devices, causes the one or more computing devices to:

determine, by a first computing device of the one or more computing devices, a routing plan to route a set of encoded data slices from the first computing device to a second computing device of the one or more computing devices via a plurality of network paths within a communications network, wherein a data segment was dispersed storage error encoded to produce the set of encoded data slices, wherein a decode threshold number of encoded data slices of the set of encoded data slices is needed to recover the data segment, wherein the first and second computing devices are operably coupled to the communications network, and wherein each network path of the plurality of network paths includes one or more relay units of the one or more computing devices;

receive, by the second computing device, encoded data slices of the set of encoded data slices via one or more network paths of the plurality of network paths;

when the second computing device receives the decode threshold number of encoded data slices, send, by the second computing device, a message to the communications network; and

when the message indicates receipt of the decode threshold number of encoded data slices:

determine, by a relay unit of the one or more relay units of a corresponding network path of the plurality of network paths, whether the relay unit is in possession of a not-yet delivered encoded data slice of the set of encoded data slices; and

when the relay unit is in possession of the not-yet delivered encoded data slice, cease, by the relay unit, forwarding of the not-yet delivered encoded data slice along the corresponding network path.

10. The non-transitory computer readable storage medium of claim 9 further comprises:

the at least one memory section stores further operational instructions that, when executed by the one or more processing modules, causes the one or more computing devices to:

determine, by the relay unit, that the relay unit is not in possession of the not-yet delivered encoded data slice;

determine, by the relay unit, whether the corresponding network path is assigned to the not-yet delivered encoded data slice; and

when the corresponding network path is assigned to the not-yet delivered encoded data slice, forward, by the relay unit, the message upstream along the corresponding network path.

11. The non-transitory computer readable storage medium of claim 9 further comprises:

the at least one memory section stores further operational instructions that, when executed by the one or more processing modules, causes the one or more computing devices to:

when the message indicates receipt of the decode threshold number of encoded data slices and the message is indicative of a pause message, cease, by the relay unit, forwarding of the not-yet delivered encoded data slice along the corresponding network path by temporarily storing the not-yet delivered encoded data slice; and

continue, by the relay unit, to temporarily store the not-yet delivered encoded data slice until a further processing event occurs.

12. The non-transitory computer readable storage medium of claim 11 , wherein the further processing event comprises the one or more processing modules functioning to execute the operational instructions stored by the at least one memory section causing the one or more computing devices to:

delete the not-yet delivered encoded data slice after expiration of a pause time period; or

receive a second message indicating deletion of the not-yet delivered encoded data slice; or

receive a third message indicating forwarding of the not-yet delivered encoded data slice downstream along the corresponding network path.

13. The non-transitory computer readable storage medium of claim 9 further comprises:

the at least one memory section stores further operational instructions that, when executed by the one or more processing modules, causes the one or more computing devices to:

interpret, by the relay unit, that the message indicates receipt of the decode threshold number of encoded data slices and the message is to be a delete command regarding the not-yet delivered encoded data slice; and

cease, by the relay unit, the forwarding of the not-yet delivered encoded data slice by deleting the not-yet delivered encoded data slice.

14. The non-transitory computer readable storage medium of claim 9 further comprises:

the at least one memory section stores further operational instructions that, when executed by the one or more processing modules, causes the one or more computing devices to:

decode, by the second computing device, the decode threshold number of encoded data slices to produce a decoded data segment; and

when the decoded data segment is validated, send a second message indicating deletion of the not-yet delivered encoded data slice and other not-yet delivered encoded data slices.

15. The non-transitory computer readable storage medium of claim 9 further comprises:

the at least one memory section stores further operational instructions that, when executed by the one or more processing modules, causes the one or more computing devices to:

decode, by the second computing device, the decode threshold number of encoded data slices to produce a decoded data segment; and

when the decoded data segment is not validated, send a second message indicating a request for delivery of the not-yet delivered encoded data slice.

16. The non-transitory computer readable storage medium of claim 9 further comprises:

the at least one memory section stores further operational instructions that, when executed by the one or more processing modules, causes the one or more computing devices to:

determine, by the relay unit, whether delivery of a sub-set of encoded data slices of the set of encoded data slices allocated for delivery via the corresponding network path have been delivered to the second computing device; and

when delivery of the sub-set of encoded data slices of the set of encoded data slices allocated for delivery via the corresponding network path have been delivered to the second computing device, ignore, by the relay unit, the message.

Assignments (6)
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENT RIGHTS Recorded Jun 11, 2025
From: BARCLAYS BANK PLC, AS ADMINISTRATIVE AGENT
To: PURE STORAGE, INC.
Reel/Frame 071558/0523 →
SECURITY INTEREST Recorded Aug 26, 2020
From: PURE STORAGE, INC.
To: BARCLAYS BANK PLC AS ADMINISTRATIVE AGENT
Reel/Frame 053867/0581 →
CORRECTIVE ASSIGNMENT TO CORRECT THE 9992063 AND 10334045 LISTED IN ERROR PREVIOUSLY RECORDED ON REEL 049556 FRAME 0012. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNOR HEREBY CONFIRMS THE ASSIGNMENT. Recorded Jan 14, 2020
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: PURE STORAGE, INC.
Reel/Frame 052205/0705 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 21, 2019
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: PURE STORAGE, INC.
Reel/Frame 049556/0012 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 6, 2016
From: CLEVERSAFE, INC.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 038629/0015 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 6, 2015
From: GRUBE, GARY W.; MARKISON, TIMOTHY W.; GLADWIN, S. CHRISTOPHER; DHUSE, GREG; BAPTIST, ANDREW; VOLVOVSKI, ILYA; RESCH, JASON K.
To: CLEVERSAFE, INC.
Reel/Frame 034905/0271 →