IP Library Granted Patent US 10,042,705
Granted Patent B2
US 10,042,705 · App. 15/347,605 · Granted Aug 7, 2018

Robust transmission of data utilizing encoded data slices

Inventors: Ahmad Alnafoosi (Streamwood, IL); Jason K. Resch (Chicago, IL)
Assignee: International Business Machines Corporation
G06F11/108G06F9/5027G06F21/64H04L47/70H04L67/10H04L67/1097
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 10,042,705
App. No.
15/347,605
Granted
Aug 7, 2018
Kind
B2
Abstract

A method includes receiving a random order of encoded data slices, and de-randomizing the random order of encoded data slices to produce a plurality of sets of a transmit number of encoded data slices. The method further includes dividing the plurality of sets of transmit number of encoded data slices into collections of sets of the transmit number of encoded data slices. For a collection of sets of transmit number of encoded data slices of the collections of sets of the transmit number of encoded data slices, the method further includes concurrently decoding the sets of the transmit number of encoded data slices of the collection of sets of transmit number of encoded data slices to produce a collection of data segments and combining the collection of data segments into the one or more data partitions. The method further includes combining the plurality of data partitions into the data object.

Claims (57)

1. A method for execution by a computing device of a dispersed storage network (DSN), the method comprises:

receiving a random order of encoded data slices;

de-randomizing the random order of encoded data slices to produce a plurality of sets of a transmit number of encoded data slices, wherein the transmit number is within a range of a decode threshold number and a total number;

dividing the plurality of sets of transmit number of encoded data slices into collections of sets of the transmit number of encoded data slices;

for a collection of sets of transmit number of encoded data slices of the collections of sets of the transmit number of encoded data slices:

concurrently decoding, in accordance with a dispersed storage error encoding function, the sets of the transmit number of encoded data slices of the collection of sets of transmit number of encoded data slices to produce a collection of data segments, wherein the collection of data segments includes one or more data segments of a plurality of data segments from one or more data partitions of a plurality of data partitions of a data object; and

combining the collection of data segments into the one or more data partitions; and

combining the plurality of data partitions into the data object.

2. The method of claim 1 , wherein the collection of data segments comprises one of:

the plurality of data segments of one of the plurality of data partitions;

first data segments of the plurality of data segments of a given number of data partitions of the plurality of data partitions;

second data segments of the plurality of data segments of the given number of data partitions; and

a data segment of a given number of data segments of the plurality of data segments of the given number of data partitions.

3. The method of claim 1 further comprises:

receiving an encoded data slice error rate that indicates a number of consecutive encoded data slices of the random order of encoded data slices that can be lost without compromising the concurrently decoding of the sets of the transmit number of encoded data slices for the collection of the sets of transmit number of encoded data slices; and

when the encoded data slice error rate has been exceeded, sending a request to increase the transmit number.

4. The method of claim 1 further comprises:

receiving an encoded data slice error rate that indicates a number of consecutive encoded data slices of the random order of encoded data slices that can be lost without compromising the concurrent decoding of the sets of the transmit number of encoded data slices for the collection of sets of transmit number of encoded data slices; and

when, from collection of sets of transmit number of encoded data slices to collection of sets of transmit number of encoded data slices, the number of consecutive encoded data slices of the random order of encoded data slices that are lost is less than the encoded data slice error rate, sending a request to decrease the transmit number.

5. The method of claim 1 further comprises:

receiving, in an order corresponding to the randomized ordering, a plurality of sets of slice names with the random order of encoded data slices, wherein a plurality of sets of slices names is generated for a plurality of sets of encoded data slices of the collection of data segments.

6. The method of claim 1 further comprises:

while decoding a set of the transmit number of encoded data slices of the collection of sets of transmit number of encoded data slices, determining that a decoded threshold number of encoded data slices of the transmit number of encoded data slices is not received; and

when determined that the decoded threshold number of encoded data slices of the transmit number of encoded data slices is not received, requesting another encoded data slices of remaining encoded data slices of a set of encoded data slices from which the set of the transmit number of encoded data slices was derived.

7. The method of claim 1 further comprises:

while decoding a set of the transmit number of encoded data slices of the collection of sets of transmit number of encoded data slices, determining that a decoded threshold number of encoded data slices of the set of the transmit number of encoded data slices have been received prior to receiving all encoded data slices of the set of the transmit number of encoded data slices; and

when determined that decoded threshold number of encoded data slices of the set of the transmit number of encoded data slices have been received prior to receiving all encoded data slices of the set of the transmit number of encoded data slices, sending a message indicating that remaining encoded data slices of the set of transmit number of encoded data slices are not to be transmitted to the computing device.

8. A computing device of a dispersed storage network (DSN), the computing device comprises:

an interface;

memory; and

a processing module operably coupled to the memory and the interface, wherein the processing module is operable to:

receive a random order of encoded data slices;

de-randomize the random order of encoded data slices to produce a plurality of sets of a transmit number of encoded data slices, wherein the transmit number is within a range of a decode threshold number and a total number;

divide the plurality of sets of transmit number of encoded data slices into collections of sets of the transmit number of encoded data slices;

for a collection of sets of transmit number of encoded data slices of the collections of sets of the transmit number of encoded data slices:

concurrently decode, in accordance with a dispersed storage error encoding function, the sets of the transmit number of encoded data slices of the collection of sets of transmit number of encoded data slices to produce a collection of data segments, wherein the collection of data segments includes one or more data segments of a plurality of data segments from one or more data partitions of a plurality of data partitions of a data object; and

combine the collection of data segments into the one or more data partitions; and

combine the plurality of data partitions into the data object.

9. The computing device of claim 8 , wherein the collection of data segments comprises one of:

the plurality of data segments of one of the plurality of data partitions;

first data segments of the plurality of data segments of a given number of data partitions of the plurality of data partitions;

second data segments of the plurality of data segments of the given number of data partitions; and

a data segment of a given number of data segments of the plurality of data segments of the given number of data partitions.

10. The computing device of claim 8 , wherein the processing module is further operable to:

receive an encoded data slice error rate that indicates a number of consecutive encoded data slices of the random order of encoded data slices that can be lost without compromising the concurrently decoding of the sets of the transmit number of encoded data slices for the collection of the sets of transmit number of encoded data slices; and

when the encoded data slice error rate has been exceeded, send a request to increase the transmit number.

11. The computing device of claim 8 , wherein the processing module is further operable to:

receive an encoded data slice error rate that indicates a number of consecutive encoded data slices of the random order of encoded data slices that can be lost without compromising the concurrent decoding of the sets of the transmit number of encoded data slices for the collection of sets of transmit number of encoded data slices; and

when, from collection of sets of transmit number of encoded data slices to collection of sets of transmit number of encoded data slices, the number of consecutive encoded data slices of the random order of encoded data slices that are lost is less than the encoded data slice error rate, send a request to decrease the transmit number.

12. The computing device of claim 8 , wherein the processing module is further operable to:

receive, in an order corresponding to the randomized ordering, a plurality of sets of slice names with the random order of encoded data slices, wherein a plurality of sets of slices names is generated for a plurality of sets of encoded data slices of the collection of data segments.

13. The computing device of claim 8 , wherein the processing module is further operable to:

while decoding a set of the transmit number of encoded data slices of the collection of sets of transmit number of encoded data slices, determine that a decoded threshold number of encoded data slices of the transmit number of encoded data slices is not received; and

when determined that the decoded threshold number of encoded data slices of the transmit number of encoded data slices is not received, request another encoded data slices of remaining encoded data slices of a set of encoded data slices from which the set of the transmit number of encoded data slices was derived.

14. The computing device of claim 8 , wherein the processing module is further operable to:

while decoding a set of the transmit number of encoded data slices of the collection of sets of transmit number of encoded data slices, determine that a decoded threshold number of encoded data slices of the set of the transmit number of encoded data slices have been received prior to receiving all encoded data slices of the set of the transmit number of encoded data slices; and

when determined that decoded threshold number of encoded data slices of the set of the transmit number of encoded data slices have been received prior to receiving all encoded data slices of the set of the transmit number of encoded data slices, send a message indicating that remaining encoded data slices of the set of transmit number of encoded data slices are not to be transmitted to the computing device.

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 Jan 20, 2017
From: ALNAFOOSI, AHMAD; RESCH, JASON K.
To: CLEVERSAFE, INC.
Reel/Frame 041029/0482 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 20, 2017
From: CLEVERSAFE, INC.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 041459/0001 →
Continuity (3)
Continuation 13959077 · Aug 5, 2013
Provisional Application 61711106 · Oct 8, 2012
Related Publication 20170060675A1 · Mar 2, 2017