IP Library Granted Patent US 9,043,489
Granted Patent B2
US 9,043,489 · App. 12/850,610 · Granted May 26, 2015

Router-based dispersed storage network method and apparatus

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,043,489
App. No.
12/850,610
Granted
May 26, 2015
Kind
B2
Abstract

A method begins by a router receiving data for storage and interpreting the data to determine whether the data is to be forwarded or error encoded. The method continues with the router obtaining a routing table when the data is to be error encoded. Next, the method continues with the router selecting a routing option from the plurality of routing options and determining error coding dispersal storage function parameters based on the routing option. Next, the method continues with the router encoding the data based on the error coding dispersal storage function parameters to produce a plurality of sets of encoded data slices. Next, the method continues with the router outputting at least some of the encoded data slices of a set of the plurality of sets of encoded data slices to an entry point of the routing option.

Claims (68)

1. A method comprises:

disperse storage error encoding, by a processing module, a data segment of data to produce a set of encoded data slices:

determining, by the processing module, a storage location for each encoded data slice of the set of encoded data slices to be within one of a router of a routing storage layer and a storage unit of a distributed storage network (DSN) memory;

generating, by the processing module, a DSN address for each encoded data slice of the set of encoded data slices based on the determined storage location;

sending, by the processing module, the set of encoded data slices and the corresponding set of DSN addresses to at least one entry point router of the routing storage layer;

on an encoded data slice by encoded data slice basis:

determining, by the at least one entry point router, whether an encoded data slice of the set of encoded data slices is to be stored in the routing storage layer or in the DSN memory based on the DSN address of the encoded data slice;

when the encoded data slice is to be stored in the routing storage layer:

determining, by the at least one entry point router, whether the encoded data slice is to be locally stored or forwarded within the routing storage layer;

when the encoded data slice is to be forwarded, forwarding, by the at least one entry point router, the encoded data slice to another router of the routing storage layer in accordance with a routing table; and

when the encoded data slice is to be stored in the DSN memory:

determining, by the at least one entry point router, a routing path within the routing storage layer based on the routing table; and

sending, by the at least one entry point router, the encoded data slice to a first router of the routing path for routing to the DSN memory via the routing path.

2. The method of claim 1 , wherein the sending the set of encoded data slices and the corresponding set of DSN addresses further comprises:

sending a first sub-set of the set of encoded data slices and a corresponding first sub-set of the set of DSN addresses to a first entry point router of the at least one entry point router; and

sending a second sub-set of the set of encoded data slices and a corresponding second sub-set of the set of DSN addresses to a second entry point router of the at least one entry point router.

3. The method of claim 1 further comprises:

obtaining the routing table by at least one of:

receiving the routing table in response to a request message;

retrieving the routing table from a routing table database; and

receiving the routing table in conjunction with receiving the data.

4. The method of claim 1 , wherein the determining the routing path within the routing storage layer based on the routing table comprises:

selecting a routing option that includes at least one of:

a source associated with the source ID;

a destination associated with the destination ID;

routing ID;

a routing path priority; and

a routing path of routers.

5. The method of claim 1 further comprises:

receiving, by the entry point router, metadata associated with the data segment; and

utilizing, by the entry point router, the metadata to obtain the routing table.

6. The method of claim 1 , further comprises:

receiving, by the other router of the routing storage layer, the forwarded encoded data slice;

determining, by the other router, whether the forwarded encoded data slice is to be locally stored or forwarded to yet another router of the routing storage layer based on the corresponding DSN address of the forwarded encoded data slice; and

when the forwarded encoded data slice is to be locally stored, storing, by the other router, the forwarded encoded data slice.

7. A router for use in a routing storage network comprises:

an interface;

memory; and

a processing module operable to:

receive, via the interface and when operable in an entry point router mode, at least some encoded data slices of a set of encoded data slices, wherein a data segment of data was disperse storage error encoded to produce the set of encoded data slices, wherein each of the at least some of the encoded data slices has a corresponding distributed storage network (DSN) address that includes whether the encoded data slice is to be stored in a storage unit of DSN memory or in a router of a routing storage layer; and

on an encoded data slice by encoded data slice basis:

determine whether an encoded data slice of the at least some of the set of encoded data slices is to be stored in the routing storage layer or in the DSN memory based on the DSN address of the encoded data slice;

when the encoded data slice is to be stored in the routing storage layer:

determine whether the encoded data slice is to be locally stored or forwarded within the routing storage layer;

when the encoded data slice is to be forwarded, forward the encoded data slice to another router of the routing storage layer in accordance with a routing table; and

when the encoded data slice is to be stored in the DSN memory:

determine a routing path within the routing storage layer based on the routing table; and

send, via the interface, the encoded data slice to a first router of the routing path for routing to the DSN memory via the routing path.

8. The router of claim 7 , wherein the processing module is further operable to:

when the encoded data slice is to be locally stored, store the encoded data in the memory.

9. The router of claim 7 , wherein the processing module further functions to:

receive, via the interface, the routing table in response to a request message;

retrieve the routing table from a routing table database; and

receive, via the interface, the routing table in conjunction with receiving the at least some of the set of encoded data slices.

10. The router of claim 7 , wherein the processing module further functions to:

select a routing option that includes at least one of:

a source associated with the source ID;

a destination associated with the destination ID;

routing ID;

a routing path priority; and

a routing path of routers.

11. The router of claim 7 , wherein the processing module is further operable to:

receive, via the interface, metadata associated with the data segment; and

utilize the metadata to obtain the routing table.

12. The router of claim 7 , wherein the processing module further functions to:

receive, when not in the entry point mode, a forwarded encoded data slice;

determine whether the forwarded encoded data slice is to be locally stored or forwarded to another router of the routing storage layer based on the corresponding DSN address of the forwarded encoded data slice; and

when the forwarded encoded data slice is to be locally stored, store the forwarded encoded data slice in the memory.

Assignments (4)
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 13, 2016
From: CLEVERSAFE, INC.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 038687/0596 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 10, 2011
From: GRUBE, GARY W.; MARKISON, TIMOTHY W.
To: CLEVERSAFE, INC.
Reel/Frame 025793/0865 →