# US 2019/0173941 A1 · Point of presence based data uploading

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 2019/0173941 A1
- Document ID: US20190173941A1
- Status: Published application
- Kind: A1
- Application number: 16/267,263
- Filed: 2019-02-04
- Published: 2019-06-06
- Earliest claimed: 2015-03-23
- Assignees: Amazon Technologies, Inc.
- Applicants: Amazon Technologies, Inc.
- Inventors: Katarzyna Anna Puchala; Anton Stephen Radlein; David Alexander Dunlap
- Web page: https://patentgrep.com/patent/US20190173941A1

## CPC

- H04L 67/1097: for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
- H04L 12/5691: {Access to open networks; Ingress point selection, e.g. ISP selection}
- H04L 47/125: by balancing the load, e.g. traffic engineering
- H04L 67/06: specially adapted for file transfer, e.g. file transfer protocol [FTP]
- H04L 69/18: Multiprotocol handlers, e.g. single devices capable of handling multiple protocols
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

A system, method and computer-readable medium for data uploading based on points of presence (POPs) are provided. In response to a client's request for data uploading, the system provides routing information for POPs that may facilitate data communications between the client and a data storage service provider. The client may fragment the upload data and transmit the data fragments via data connections to POPs, which in turn may relay the received fragments to the data storage service provider. Upon receipt of necessary data fragments, the data storage service provider may merge the data fragments to reconstruct a copy of the upload data for storage.

## Claims

### Claim 1

A computer-implemented method comprising:
under control of a client computing device configured with specific computer executable instructions:
transmitting, to one or more computing devices, a request to upload target data from the client computing device to the one or more computing devices;
receiving routing information corresponding to a set of intermediate devices selected by the one or more computing devices to facilitate uploading of the target data from the client computing device to the one or more computing devices;
transmitting a first fragment of the target data to a first intermediate device in the set of intermediate devices and a second fragment of the target data to a second intermediate device in the set of intermediate devices; and
transmitting a third fragment of the target data to a third intermediate device not in the set of intermediate devices instead of to the second intermediate device in response to a service interruption between the client computing device and the second intermediate device.

### Claim 2 (depends on 1)

The computer-implemented method of claim 1, further comprising generating the first fragment in accordance with a data fragmentation encoding.

### Claim 3 (depends on 2)

The computer-implemented method of claim 2, wherein the data fragmentation encoding comprises forward error correction code.

### Claim 4 (depends on 1)

The computer-implemented method of claim 1, wherein transmitting the first fragment further comprises transmitting the first fragment via a first network path, wherein the first intermediate device corresponds to a destination of the first network path.

### Claim 5 (depends on 4)

The computer-implemented method of claim 4, wherein the first intermediate device transmits the first fragment to the one or more computing devices via a second network path, wherein the first intermediate device corresponds to a source of the second network path.

### Claim 6 (depends on 5)

The computer-implemented method of claim 5, wherein the one or more computing devices receives the second fragment from the second intermediate device, and wherein the one or more computing devices merges the first fragment and the second fragment to form at least part of a copy of the target data.

### Claim 7 (depends on 1)

The computer-implemented method of claim 1, wherein the request to upload target data includes at least one of a size, type, or priority associated with the target data.

### Claim 8 (depends on 1)

The computer-implemented method of claim 1, wherein the set of intermediate devices are selected based on performance information associated with at least one of the intermediate devices in the set of intermediate devices.

### Claim 9 (depends on 8)

The computer-implemented method of claim 8, wherein the performance information corresponds to at least one of latency, geographic proximity, bandwidth, throughput, capacity, cost, load, or availability.

### Claim 10

A non-transitory computer readable storage medium storing computer executable instructions that when executed by one or more processors of a client computing device perform operations comprising:
transmitting, to a data storage system, a request to upload target data;
processing routing information received for a set of intermediate devices;
transmitting a first fragment of the target data to a first intermediate device in a first subset of intermediate devices of the set of intermediate devices, the first subset of intermediate devices selected to facilitate the target data upload;
identifying a connectivity issue between the client computing device and the first intermediate device; and
transmitting a second fragment to a second intermediate device in the set of intermediate devices instead of to the first intermediate device, wherein the second intermediate device is not in the first subset of intermediate devices.

### Claim 11 (depends on 10)

The non-transitory computer readable storage medium of claim 10, wherein the operations further comprise transmitting the first fragment to the first intermediate device in accordance with a first network protocol, and wherein the first intermediate device transmits the first fragment to the data storage system in accordance with a second network protocol.

### Claim 12 (depends on 11)

The non-transitory computer readable storage medium of claim 11, wherein the data storage system reconstructs the target data using at least the first fragment and the second fragment.

### Claim 13 (depends on 10)

The non-transitory computer readable storage medium of claim 10, wherein the routing information comprises performance information corresponding to the first intermediate device.

### Claim 14 (depends on 13)

The non-transitory computer readable storage medium of claim 13, wherein the operations further comprise selecting the first subset of intermediate devices based, at least in part, on the performance information.

### Claim 15 (depends on 13)

The non-transitory computer readable storage medium of claim 13, wherein the performance information corresponds to at least one of latency, geographic proximity, bandwidth, throughput, capacity, cost, load, or availability.

### Claim 16 (depends on 10)

The non-transitory computer readable storage medium of claim 10, wherein the request to upload target data includes at least one of a size, type, or priority associated with the target data.

### Claim 17

A system comprising:
a data store configured to at least store computer-executable instructions; and
a processor in communication with the data store, the processor configured to execute the computer-executable instructions to at least:
transmit, to a data storage system, a request to upload data;
in response to the request, process routing information received for a set of intermediate devices;
transmit a first portion of the data to a first intermediate device in a first subset of intermediate devices of the set of intermediate devices, the first subset of intermediate devices selected to facilitate the data upload;
identify a connectivity issue between the system and the first intermediate device; and
transmit a second portion of the data to a second intermediate device in the set of intermediate devices instead of to the first intermediate device, wherein the second intermediate device is not a member of the first subset of intermediate devices.

### Claim 18 (depends on 17)

The system of claim 17, wherein the first subset of intermediate devices are selected by the processor to facilitate an upload of the data.

### Claim 19 (depends on 17)

The system of claim 17, wherein the processor is further configured to execute the computer-executable instructions to at least generate the first portion of the data and the second portion of the data based on at least one of a horizontal, vertical, sequential, or randomized scheme applied to the data.

### Claim 20 (depends on 17)

The system of claim 17, wherein the data storage system reconstructs the data using at least the first portion and the second portion.
