Differential data transfer using congestion control
AssigneeNVIDIA Corporation
InventorFrank James Spitulski
Life of this patent
Estimating the term…
Abstract
Systems and methods related to transferring (e.g., large) files over a network are disclosed. In at least one embodiment, a client-server framework establishes a QUIC connection between a server application and a client application. Source files are processed by the server application to divide the source files into a number of chunks. Differential file transfer can be implemented between the client application and the server application by comparing metadata for chunks of the source file with metadata of local chunks of a destination file already stored in a local storage associated with the client application. Missing chunks can be requested from the server application and transferred to the client application using HTTP/3 messages.
Claims22
A computer-implemented method, comprising:
- dividing, using a server device, a source file into a plurality of chunks, at least one chunk of the plurality of chunks comprising one or more bytes of the source file;
- generating, using the server device, first metadata for the at least one chunk, wherein the first metadata includes at least:
- a hash value corresponding to contents of the at least one chunk;
- and location information indicating an order of the at least one chunk in the source file, wherein the location information comprises at least one of a sequence number or a chunk offset value;
- sending, using the server device, the first metadata for the at least one chunk to a client device;
- receiving, at the server device and based at least in part on a comparison of the first metadata and second metadata corresponding to one or more local chunks of a destination file performed using the client device, a request from the client device to transfer the at least one chunk to the client device, wherein the comparison of the first metadata and the second metadata is based at least on determining whether both the hash value and location information for the at least one chunk match corresponding hash value and location information pairs of the one or more local chunks;
- and
- sending, using the server device, the at least one chunk to the client device.
A server device comprising:
- one or more processors to:
- divide a source file into a plurality of chunks, at least one chunk of the plurality of chunks comprising one or more bytes of the source file;
- generate first metadata for the at least one chunk, wherein the first metadata includes at least:
- a hash value corresponding to contents of the at least one chunk;
- and location information indicating an order of the at least one chunk in the source file, wherein the location information comprises at least one of a sequence number or a chunk offset value;
- send the first metadata for the at least one chunk to a client device;
- based at least in part on a comparison of the first metadata and second metadata corresponding to one or more local chunks of a destination file at the client device, receive a request from the client device to transfer the at least one chunk to the client device, wherein the comparison of the first metadata and the second metadata is based at least on determining whether both the hash value and location information for the at least one chunk match corresponding hash value and location information pairs of the one or more local chunks;
- and
- send the at least one chunk to the client device.
A client device, comprising:
- one or more processors to:
- receive, from a server device, first metadata of a source file, the source file being divided into a plurality of chunks comprising at least one chunk, wherein the first metadata corresponds to the at least one chunk and includes at least:
- a hash value corresponding to contents of the at least one chunk;
- and location information indicating an order of the at least one chunk in the source file, wherein the location information comprises at least one of a sequence number or a chunk offset value;
- compare the first metadata to second metadata corresponding to one or more local chunks of a destination file, wherein the comparison of the first metadata to the second metadata is based at least on determining whether both the hash value and location information for the at least one chunk match corresponding hash value and location information pairs of the one or more local chunks;
- generate, based at least in part on the comparison, at least one request to transfer the at least one chunk of the source file to client device;
- and
- send the at least one request to the server device.
Dependencies are inferred from the claim text.