Offset data integrity checks for latency reduction
Data integrity checks for reducing communication latency is described. A transmitting endpoint transmits data to a receiving endpoint by generating an integrity tag for a first subset of data blocks and a second integrity tag for a second subset of data blocks. In implementations, the first and second integrity tags overlap at least one data block and are offset based on computational complexities of generating the integrity tags. A receiving endpoint generates comparison tags for each of the integrity tags and uses the comparison tags to validate an authenticity of received data. In response to validating the first and second integrity tags, data blocks covered by both the first and second integrity tags are released for use. Additional integrity tags are generated and validated for subsequent subsets of data blocks during data communication, thus reducing latency by offsetting times at which comparison tags are generated and validated.
1 . A method comprising:
receiving a request for data from a receiving endpoint; and
transmitting the data to the receiving endpoint as a plurality of data blocks by:
generating a first integrity tag for a first subset of the plurality of data blocks;
generating a second integrity tag for a second subset of the plurality of data blocks, the second subset comprising at least one data block excluded from the first subset and at least one data block included in the first subset, wherein a number of data blocks included in both the first subset and the second subset is based on a data storage format of the data; and
sending the plurality of data blocks, the first integrity tag, and the second integrity tag to the receiving endpoint.
2 . The method of claim 1 , wherein the number of data blocks included in both the first subset and the second subset is further based on a computational complexity of generating the first integrity tag.
3 . The method of claim 1 , wherein the number of data blocks included in both the first subset and the second subset is further based on a computational complexity of generating the second integrity tag.
4 . The method of claim 1 , wherein sending the plurality of data blocks to the receiving endpoint is performed over a plurality of clock cycles and comprises sending one of the plurality of data blocks to the receiving endpoint during each of the plurality of clock cycles.
5 . The method of claim 1 , wherein sending the first integrity tag to the receiving endpoint is performed responsive to generating the first integrity tag.
6 . The method of claim 1 , wherein sending the second integrity tag to the receiving endpoint is performed responsive to generating the second integrity tag and is performed during a different clock cycle than sending the first integrity tag to the receiving endpoint.
7 . The method of claim 1 , wherein generating the first integrity tag is performed using a first data authentication calculation and generating the second integrity tag is performed using a second data authentication calculation that is different than the first data authentication calculation.
8 . The method of claim 1 , further comprising causing the receiving endpoint to generate a first comparison tag for the first subset of the plurality of data blocks upon receiving the first subset of the plurality of data blocks and compare the first integrity tag against the first comparison tag.
9 . The method of claim 8 , wherein the first integrity tag and the first comparison tag are computed using a common data authentication calculation.
10 . The method of claim 1 , further comprising causing the receiving endpoint to generate a second comparison tag for the second subset of the plurality of data blocks upon receiving the second subset of the plurality of data blocks and compare the second integrity tag against the second comparison tag.
11 . The method of claim 10 , wherein the second integrity tag and the second comparison tag are computed using a common data authentication calculation.
12 . The method of claim 1 , further comprising causing the receiving endpoint to release the at least one data block included in both the first subset and the second subset in response to validating both the first integrity tag and the second integrity tag; and maintain the at least one data block included in the second subset and excluded from the first subset in a data buffer in response to validating both the first integrity tag and the second integrity tag.
13 . A method comprising:
receiving a plurality of data blocks from a transmitting endpoint;
receiving a first integrity tag for a first subset of the plurality of data blocks, the first subset of the plurality of data blocks comprising at least one data block excluded from a second subset of the plurality of data blocks;
generating a first comparison tag for the first subset of the plurality of data blocks and validating an authenticity of the first subset of the plurality of data blocks by comparing the first integrity tag with the first comparison tag;
receiving a second integrity tag for the second subset of the plurality of data blocks, the second subset of the plurality of data blocks comprising at least one data block included in the first subset of the plurality of data blocks and at least one data block excluded from the first subset of the plurality of data blocks, wherein a number of data blocks included in both the first subset and the second subset is based on a data storage format of the plurality of data blocks;
generating a second comparison tag for the second subset of the plurality of data blocks and validating an authenticity of the second subset of the plurality of data blocks by comparing the second integrity tag with the second comparison tag; and
releasing the at least one data block included in the first subset and the second subset of the plurality of data blocks responsive to validating the authenticity of the first subset and the second subset of the plurality of data blocks.
14 . The method of claim 13 , wherein receiving the plurality of data blocks is performed over a plurality of clock cycles and comprises receiving one of the plurality of data blocks during each of the plurality of clock cycles.
15 . The method of claim 13 , wherein generating the first comparison tag is performed using a data authentication calculation used by the transmitting endpoint to generate the first integrity tag.
16 . The method of claim 13 , wherein generating the second comparison tag is performed using a data authentication calculation used by the transmitting endpoint to generate the second integrity tag.
17 . The method of claim 13 , wherein generating the first comparison tag is performed using a first data authentication calculation and generating the second comparison tag is performed using a second data authentication calculation that is different than the first data authentication calculation.
18 . The method of claim 13 , further comprising maintaining the at least one data block included in the second subset and excluded from the first subset in a data buffer in response to validating both the first integrity tag and the second integrity tag.
19 . A system comprising:
a transmitting endpoint implemented in hardware and configured to transmit data to a receiving endpoint implemented in hardware as a plurality of data blocks by:
generating a first integrity tag for a first subset of the plurality of data blocks, the first subset of the plurality of data blocks comprising at least one data block excluded from a second subset of the plurality of data blocks;
generating a second integrity tag for the second subset of the plurality of data blocks, the second subset comprising at least one data block included in the first subset and at least one data block excluded from the first subset, wherein a number of data blocks included in both the first subset and the second subset is based on a data storage format of the data; and
sending the plurality of data blocks, the first integrity tag, and the second integrity tag to the receiving endpoint; and
receiving endpoint configured to conditionally release the plurality of data blocks by:
generating a first comparison tag for the first subset of the plurality of data blocks and validating an authenticity of the first subset of the plurality of data blocks by comparing the first integrity tag with the first comparison tag;
generating a second comparison tag for the second subset of the plurality of data blocks and validating an authenticity of the second subset of the plurality of data blocks by comparing the second integrity tag with the second comparison tag; and
releasing the at least one data block included in the first subset and the second subset of the plurality of data blocks responsive to validating the authenticity of the first subset and the second subset of the plurality of data blocks.
20 . The system of claim 19 , wherein the transmitting endpoint is configured to generate the plurality of data blocks such that a number of data blocks included in the first subset and the second subset is further based on at least one of:
a computational complexity of generating the first integrity tag; or
a computational complexity of generating the second integrity tag.