throbber

`
`[MS-RDC]:
`Remote Differential Compression Algorithm Specification
`
`
`
`Intellectual Property Rights Notice for Open Specifications Documentation
`
`ƒ Technical Documentation. Microsoft publishes Open Specifications documentation for
`protocols, file formats, languages, standards as well as overviews of the interaction among each
`of these technologies.
`
`ƒ Copyrights. This documentation is covered by Microsoft copyrights. Regardless of any other
`terms that are contained in the terms of use for the Microsoft website that hosts this
`documentation, you may make copies of it in order to develop implementations of the
`technologies described in the Open Specifications and may distribute portions of it in your
`implementations using these technologies or your documentation as necessary to properly
`document the implementation. You may also distribute in your implementation, with or without
`modification, any schema, IDL’s, or code samples that are included in the documentation. This
`permission also applies to any documents that are referenced in the Open Specifications.
`
`ƒ No Trade Secrets. Microsoft does not claim any trade secret rights in this documentation.
`
`ƒ Patents. Microsoft has patents that may cover your implementations of the technologies
`described in the Open Specifications. Neither this notice nor Microsoft's delivery of the
`documentation grants any licenses under those or any other Microsoft patents. However, a given
`Open Specification may be covered by Microsoft Open Specification Promise or the Community
`Promise. If you would prefer a written license, or if the technologies described in the Open
`Specifications are not covered by the Open Specifications Promise or Community Promise, as
`applicable, patent licenses are available by contacting iplg@microsoft.com.
`
`ƒ Trademarks. The names of companies and products contained in this documentation may be
`covered by trademarks or similar intellectual property rights. This notice does not grant any
`licenses under those rights.
`
`ƒ Fictitious Names. The example companies, organizations, products, domain names, e-mail
`addresses, logos, people, places, and events depicted in this documentation are fictitious. No
`association with any real company, organization, product, domain name, email address, logo,
`person, place, or event is intended or should be inferred.
`
`Reservation of Rights. All other rights are reserved, and this notice does not grant any rights
`other than specifically described above, whether by implication, estoppel, or otherwise.
`
`Tools. The Open Specifications do not require the use of Microsoft programming tools or
`programming environments in order for you to develop an implementation. If you have access to
`Microsoft programming tools and environments you are free to take advantage of them. Certain
`
`Open Specifications are intended for use in conjunction with publicly available standard
`specifications and network programming art, and assumes that the reader either is familiar with the
`aforementioned material or has immediate access to it.
`
`[MS-RDC] — v20120705
` Remote Differential Compression Algorithm Specification
`
` Copyright © 2012 Microsoft Corporation.
`
` Release: Thursday, July 5, 2012
`
`1 / 76
`
`MICROSOFT
`
`EXHIBIT 1008
`
`Page 1 of 76
`
`

`

`
`
`Revision Summary
`
`Date
`
`Revision
`History
`
`Revision
`Class
`
`Comments
`
`03/14/2007
`
`1.0
`
`04/10/2007
`
`1.1
`
`05/18/2007
`
`1.2
`
`
`
`
`
`
`
`Version 1.0 release
`
`Version 1.1 release
`
`Version 1.2 release
`
`06/08/2007
`
`1.2.1
`
`Editorial
`
`Revised and edited the technical content.
`
`07/10/2007
`
`1.2.2
`
`Editorial
`
`Revised and edited the technical content.
`
`08/17/2007
`
`1.2.3
`
`Editorial
`
`Revised and edited the technical content.
`
`09/21/2007
`
`1.2.4
`
`Editorial
`
`Revised and edited the technical content.
`
`10/26/2007
`
`1.2.5
`
`Editorial
`
`Revised and edited the technical content.
`
`01/25/2008
`
`1.2.6
`
`Editorial
`
`Revised and edited the technical content.
`
`03/14/2008
`
`1.2.7
`
`Editorial
`
`Revised and edited the technical content.
`
`06/20/2008
`
`1.3
`
`Minor
`
`Updated the technical content.
`
`07/25/2008
`
`1.3.1
`
`Editorial
`
`Revised and edited the technical content.
`
`2.0
`
`Major
`
`Updated and revised the technical content.
`
`08/29/2008
`
`10/24/2008
`
`2.0.1
`
`Editorial
`
`Revised and edited the technical content.
`
`12/05/2008
`
`3.0
`
`Major
`
`Updated and revised the technical content.
`
`01/16/2009
`
`3.0.1
`
`Editorial
`
`Revised and edited the technical content.
`
`02/27/2009
`
`3.0.2
`
`Editorial
`
`Revised and edited the technical content.
`
`04/10/2009
`
`3.0.3
`
`Editorial
`
`Revised and edited the technical content.
`
`05/22/2009
`
`3.0.4
`
`Editorial
`
`Revised and edited the technical content.
`
`07/02/2009
`
`3.0.5
`
`Editorial
`
`Revised and edited the technical content.
`
`08/14/2009
`
`3.0.6
`
`Editorial
`
`Revised and edited the technical content.
`
`09/25/2009
`
`3.0.7
`
`Editorial
`
`Revised and edited the technical content.
`
`11/06/2009
`
`3.0.8
`
`Editorial
`
`Revised and edited the technical content.
`
`12/18/2009
`
`3.0.9
`
`Editorial
`
`Revised and edited the technical content.
`
`01/29/2010
`
`3.0.10
`
`Editorial
`
`Revised and edited the technical content.
`
`03/12/2010
`
`4.0
`
`Major
`
`Updated and revised the technical content.
`
`[MS-RDC] — v20120705
` Remote Differential Compression Algorithm Specification
`
` Copyright © 2012 Microsoft Corporation.
`
` Release: Thursday, July 5, 2012
`
`2 / 76
`
`Page 2 of 76
`
`

`

`
`
`Date
`
`Revision
`History
`
`Revision
`Class
`
`Comments
`
`04/23/2010
`
`5.0
`
`Major
`
`Updated and revised the technical content.
`
`06/04/2010
`
`5.0.1
`
`Editorial
`
`Revised and edited the technical content.
`
`07/16/2010
`
`5.0.1
`
`No change
`
`No changes to the meaning, language, or formatting of
`the technical content.
`
`08/27/2010
`
`5.0.1
`
`No change
`
`No changes to the meaning, language, or formatting of
`the technical content.
`
`10/08/2010
`
`5.0.1
`
`No change
`
`No changes to the meaning, language, or formatting of
`the technical content.
`
`11/19/2010
`
`5.1
`
`Minor
`
`Clarified the meaning of the technical content.
`
`01/07/2011
`
`5.1
`
`No change
`
`No changes to the meaning, language, or formatting of
`the technical content.
`
`02/11/2011
`
`5.1
`
`No change
`
`No changes to the meaning, language, or formatting of
`the technical content.
`
`03/25/2011
`
`5.1
`
`No change
`
`No changes to the meaning, language, or formatting of
`the technical content.
`
`05/06/2011
`
`5.1
`
`No change
`
`No changes to the meaning, language, or formatting of
`the technical content.
`
`06/17/2011
`
`5.2
`
`Minor
`
`Clarified the meaning of the technical content.
`
`09/23/2011
`
`5.2
`
`No change
`
`No changes to the meaning, language, or formatting of
`the technical content.
`
`12/16/2011
`
`5.2
`
`No change
`
`No changes to the meaning, language, or formatting of
`the technical content.
`
`03/30/2012
`
`5.2
`
`No change
`
`No changes to the meaning, language, or formatting of
`the technical content.
`
`07/12/2012
`
`5.3
`
`Minor
`
`Clarified the meaning of the technical content.
`
`
`
`[MS-RDC] — v20120705
` Remote Differential Compression Algorithm Specification
`
` Copyright © 2012 Microsoft Corporation.
`
` Release: Thursday, July 5, 2012
`
`3 / 76
`
`Page 3 of 76
`
`

`

`
`
`Contents
`
`1 Introduction ............................................................................................................. 6
`1.1 Glossary ............................................................................................................... 6
`1.2 References ............................................................................................................ 8
`1.2.1 Normative References ....................................................................................... 8
`1.2.2 Informative References ..................................................................................... 8
`1.3 Overview .............................................................................................................. 9
`1.4 Relationship to Other Protocols .............................................................................. 10
`1.5 Prerequisites/Preconditions ................................................................................... 10
`1.6 Applicability Statement ......................................................................................... 10
`1.7 Versioning and Capability Negotiation ..................................................................... 10
`1.8 Vendor-Extensible Fields ....................................................................................... 11
`1.9 Standards Assignments ........................................................................................ 11
`
`2 Messages................................................................................................................ 12
`2.1 Transport ............................................................................................................ 12
`2.2 Message Syntax .................................................................................................. 12
`2.2.1 Common Data Types ...................................................................................... 12
`2.2.1.1 RdcVersion .............................................................................................. 12
`2.2.1.2 FileHeader ............................................................................................... 12
`2.2.2 Signature Files ............................................................................................... 13
`2.2.2.1 ChunkSignature ........................................................................................ 13
`2.2.3 Similarity Data ............................................................................................... 14
`
`3 Protocol Details ...................................................................................................... 15
`3.1 Common Details .................................................................................................. 15
`3.1.1 Abstract Data Model ....................................................................................... 15
`3.1.2 Timers .......................................................................................................... 15
`3.1.3 Initialization .................................................................................................. 15
`3.1.4 Higher-Layer Triggered Events ......................................................................... 17
`3.1.5 Message Processing Events and Sequencing Rules .............................................. 18
`3.1.5.1 Chunk Generation ..................................................................................... 18
`3.1.5.1.1 H3 Hash ............................................................................................. 19
`3.1.5.1.2 Finding Chunk Boundaries .................................................................... 20
`3.1.5.2 Signature Computation .............................................................................. 21
`3.1.5.3 Recursion ................................................................................................ 22
`3.1.5.3.1 Recursion Depth.................................................................................. 22
`3.1.5.4 Similarity ................................................................................................. 22
`3.1.5.4.1 Similarity Data Calculation ................................................................... 23
`3.1.5.4.2 Finding Seed Files ............................................................................... 24
`3.1.5.5 Generating the Target File ......................................................................... 25
`3.1.6 Timer Events ................................................................................................. 26
`3.1.7 Other Local Events ......................................................................................... 26
`
`4 Protocol Examples .................................................................................................. 27
`4.1 Example System Architecture ................................................................................ 27
`4.2 H3 ..................................................................................................................... 28
`4.3 FilterMax ............................................................................................................ 29
`4.4 Sample Recursive Client Transfer ........................................................................... 30
`4.5 Sample Input and Generated Signature File ............................................................ 32
`4.6 Sample Similarity Calculation ................................................................................ 70
`
`[MS-RDC] — v20120705
` Remote Differential Compression Algorithm Specification
`
` Copyright © 2012 Microsoft Corporation.
`
` Release: Thursday, July 5, 2012
`
`4 / 76
`
`Page 4 of 76
`
`

`

`
`
`4.7 Other Considerations ............................................................................................ 70
`
`5 Security .................................................................................................................. 72
`5.1 Security Considerations for Implementers ............................................................... 72
`5.2 Index of Security Parameters ................................................................................ 72
`
`6 Appendix A: Product Behavior ................................................................................ 73
`
`7 Change Tracking..................................................................................................... 74
`
`8 Index ..................................................................................................................... 76
`
`[MS-RDC] — v20120705
` Remote Differential Compression Algorithm Specification
`
` Copyright © 2012 Microsoft Corporation.
`
` Release: Thursday, July 5, 2012
`
`5 / 76
`
`Page 5 of 76
`
`

`

`
`
`1 Introduction
`
`Remote differential compression (RDC), a compression algorithm, enables efficient
`synchronization of files with a remote source by using compression techniques to minimize the
`amount of data sent between a source location and a target location. The data is usually, though
`not always, in the form of a file stored on a file system. Unlike more traditional compression
`algorithms that rely on some regularity in the data to be compressed, RDC breaks a file into
`chunks. The chunks not already present on the target location can be identified by the application
`transferring the data stream. The application can then transfer the missing chunks from the source
`location.
`
`Section 2 of this specification is normative and can contain the terms MAY, SHOULD, MUST, MUST
`NOT, and SHOULD NOT as defined in RFC 2119. Section 1.6 is also normative but cannot contain
`those terms. All other sections and examples in this specification are informative.
`
`
`
`
`
`1.1 Glossary
`
`The following terms are defined in [MS-GLOS]:
`
`hash function
`
`The following terms are specific to this document:
`
`chunks: The pieces of a file defined by the cut points.
`
`client: For the purposes of this document only, the client is the target location machine.
`
`collision-resistant hash function: A hash function having the property that (in practice)
`differing inputs do not produce the same hash (or collide).
`
`cut points: The locations in a file where RDC has determined boundary points between blocks
`(or chunks). The cut points for a particular file depend on the content of the file and the
`parameters with which RDC is running.
`
`file: A file is a typed data stream. For the purposes of this document only, file does not imply
`storage of the data stream in any particular medium or with any particular organization, or,
`for example, in a file system (italic is used when referring to traditional files).
`
`hash window: The length, in bytes, of the domain of the rolling hash function. That is, the
`parameter n in the definition of rolling hash function.
`
`horizon: An integer parameter of the RDC FilterMax algorithm. It refers to the number of
`consecutive hash values on both sides of a file offset.
`
`local maximum: A pair consisting of an offset i in a file and the hash value h(bi-Hash Window .. bi)
`that has the property that for all j ≥ 0, such that i - horizon ≤ j ≤ i + horizon, j = i OR h(bj-
`Hash Window .. bj) < h(bi-Hash Window .. bi), where for all k < 0, bk is defined to be 0. Local maxima
`are used to find cut points by the RDC FilterMax algorithm.
`
`MD4: Message Digest 4, as defined in [RFC1320]. MD4 is a collision-resistant, non-rolling hash
`function that produces a 16-byte hash. While MD4 is no longer considered to be
`cryptographically secure, RDC does not rely on cryptographic security in its hash function.
`
`[MS-RDC] — v20120705
` Remote Differential Compression Algorithm Specification
`
` Copyright © 2012 Microsoft Corporation.
`
` Release: Thursday, July 5, 2012
`
`6 / 76
`
`Page 6 of 76
`
`

`

`
`
`min-wise independent hash functions: A set H = { H1, H2, … , Hn } of hash functions is said
`to be min-wise independent if, for any input D and for any subset X of {1, … , n}, any index i
`of X has an equal probability of yielding the smallest value Hi(D) of the values Hj(D) for j in X.
`
`RDC FilterMax algorithm: The algorithm that RDC uses to determine the cut points in a file.
`The RDC FilterMax algorithm has the property that it will often find cut points that result
`in identical chunks being found in differing files, even when the files differ by insertions and
`deletions of bytes, not simply by length-preserving byte modifications. See section 3.1.5.1.
`
`recursion level: For very large files, even the signature file may be large. To reduce the
`bandwidth required to transfer signature files, RDC may be used to reduce the number of
`bytes that must be moved from source location to target location to transfer the
`signature file. This process may be repeated a number of times, producing successively
`smaller signature files. The recursion level is the number of times it is repeated. The first
`signature file is recursion level 1. The source file is referred to as being at recursion
`level 0.
`
`remote differential compression (RDC): In general, the term RDC may refer to any of a class
`of compression algorithms designed to compare two files residing at different locations
`without requiring one of the files to be transferred in its entirety to the other location. In this
`document, unless otherwise noted, the terms remote differential compression and RDC
`always refer to the RDC algorithm developed by Microsoft.
`
`rolling hash function: A hash function that can be computed incrementally over a set of data.
`Given an arbitrary integer n ≥ 0, some bytes b0 .. bn-1, and their hash h(b0 .. bn-1), a hash
`function h is a rolling hash function if one can compute h(b1 .. bn) in time that does not
`depend on n.
`
`seed data: See seed file.
`
`seed file: A file or files at the target location used to supply data used in reconstructing the
`source file. RDC may use an arbitrary number of seed files in the process of copying a
`single source file. Selecting seed files can be guided by using similarity traits (see section
`3.1.5.4.2).
`
`server: For the purposes of this document only, the server is the source location.
`
`signature: A structure containing a hash and block chunk size. The hash field is 16 bytes, and
`the chunk size field is a 2-byte unsigned integer. See section 2.2.2.1.
`
`signature file: A file containing the signatures of another (source) file. There is a simple
`header that identifies the type of the file as a signature file, the size of the header itself,
`and the RDC library version number. Following the header are the signatures from the
`source file in the order they are generated from the chunks. See section 2.2.2.
`
`similarity data: Information on a file that can be used to determine an appropriate seed file to
`select to reduce the amount of data transferred. Similarity data consists of one or more
`similarity traits.
`
`similarity trait: A trait that summarizes an independent feature of a file. The features are
`computed by taking min-wise independent hash functions of a file's signatures. For
`information about how traits are computed, see section 3.1.5.4. Similarity traits are used in
`selecting seed files.
`
`source data: See source file.
`
`[MS-RDC] — v20120705
` Remote Differential Compression Algorithm Specification
`
` Copyright © 2012 Microsoft Corporation.
`
` Release: Thursday, July 5, 2012
`
`7 / 76
`
`Page 7 of 76
`
`

`

`
`
`source file: A file on a source location that is to be copied by RDC. Sometimes referred to as
`source.
`
`source location: The source location is the location from which a file is being transferred after
`it has been compressed with RDC.
`
`target file: A file on the target location that is the destination of an RDC copy.
`
`target location: The target location is the destination location of a file that has been
`compressed by RDC.
`
`MAY, SHOULD, MUST, SHOULD NOT, MUST NOT: These terms (in all caps) are used as
`described in [RFC2119]. All statements of optional behavior use either MAY, SHOULD, or
`SHOULD NOT.
`
`1.2 References
`
`References to Microsoft Open Specifications documentation do not include a publishing year because
`links are to the latest version of the documents, which are updated frequently. References to other
`documents include a publishing year when one is available.
`
`1.2.1 Normative References
`
`We conduct frequent surveys of the normative references to assure their continued availability. If
`you have any issue with finding a normative reference, please contact dochelp@microsoft.com. We
`will assist you in finding the relevant information. Please check the archive site,
`http://msdn2.microsoft.com/en-us/library/E4BD6494-06AD-4aed-9823-445E921C9624, as an
`additional source.
`
`[RFC1320] Rivest, R., "The MD4 Message-Digest Algorithm", RFC 1320, April 1992,
`http://www.ietf.org/rfc/rfc1320.txt
`
`[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC
`2119, March 1997, http://www.rfc-editor.org/rfc/rfc2119.txt
`
`1.2.2 Informative References
`
`[FIPS180-2] Federal Information Processing Standards Publication, "Secure Hash Standard", FIPS
`PUB 180-2, August 2002, http://csrc.nist.gov/publications/fips/fips180-2/fips180-2.pdf
`
`[LBFS] Muthitacharoen, A., Chen, B., and Mazieres, D., "A Low-Bandwidth Network File System",
`October 2001, http://www.sosp.org/2001/papers/mazieres.pdf
`
`[MS-FRS2] Microsoft Corporation, "Distributed File System Replication Protocol Specification".
`
`[MSDN-RDCAPI] Microsoft Corporation, "Remote Differential Compression",
`http://msdn.microsoft.com/en-us/library/aa373254.aspx
`
`[MS-GLOS] Microsoft Corporation, "Windows Protocols Master Glossary".
`
`[UASDC] Ziv, J. and Lempel, A., "A Universal Algorithm for Sequential Data Compression", May
`1977, http://ieeexplore.ieee.org/iel5/18/22696/01055714.pdf
`
`[MS-RDC] — v20120705
` Remote Differential Compression Algorithm Specification
`
` Copyright © 2012 Microsoft Corporation.
`
` Release: Thursday, July 5, 2012
`
`8 / 76
`
`Page 8 of 76
`
`

`

`1.3 Overview
`
`
`
`Remote differential compression (RDC) is a compression algorithm that is used in other protocols,
`but it is not a protocol itself. For example, it is used by the SD Microsoft Distributed File System
`Replication Protocol [MS-FRS2].
`
`Traditional compression algorithms operate by finding some kind of redundancy in the file to be
`compressed, and then represent it more compactly. For example, the Lempel-Ziv algorithm (for
`more information, see [UASDC]) finds repeated substrings in the source file and replaces second
`and successive instances of them with references to the initial string in the compressed file. By
`contrast, RDC tries to find blocks of data that are identical between the source file (on the source
`location) and a set of seed files (on the target location). This makes it possible for the protocol that
`is transferring the file between two locations to reduce the number of bytes transferred between the
`source location and target location when reconstructing the source file on the target location.
`
`The fundamental observation that drives RDC is this: By dividing a file into chunks and determining
`what chunks are already present at the target location, a correct copy of a source file can be
`constructed at the target location. To accomplish this, it is only necessary to transfer those chunks
`not already present at the target location, and combine them in the proper order with those chunks
`that are already present at the target location. If many chunks of the source file are already present
`at the target location, this technique can greatly reduce the amount of data that is required to be
`transferred compared to transferring the entire source file from the source location.
`
`The set of chunks that make up a file can be expressed in far fewer bytes than the entire file by
`means of a signature file. The signature of a chunk is its length and a collision-resistant hash of
`its contents. Because hashes produce small, fixed-size outputs, for even modest-size chunks, the
`signature will be much smaller than the chunk.
`
`Any method of determining chunk boundaries will suffice to produce correct behavior. However,
`because it is common to create a file by inserting or deleting bytes from a previously existing file, or
`by combining several previously existing files, it is advantageous to have a chunking method that
`can find equal chunks at some point after the insertion or deletion. A necessary consequence of this
`property is that the chunking method is required to be data dependent. It cannot simply use fixed
`offsets.
`
`The RDC chunking method computes a rolling hash over the data using the H3 hash function, as
`described in section 3.1.5.1.1, and selects as chunk boundaries the offsets that have the largest
`value of H3 within a given horizon. Because this computation depends only on the bytes within the
`horizon (plus possibly one hash window size of bytes before the horizon), any change outside of
`the horizon will not affect the chunk boundaries. Thus, the chunking will produce identical chunks
`sufficiently far away from the change, including insertions and deletions.
`
`This idea was the basis of MIT's Low-Bandwidth Network File System (LBFS) (for more information,
`see [LBFS]), although LBFS differs from RDC in many details.
`
`RDC can be used within a single machine or to optimize transfer between two machines. For
`example, RDC can be used as part of a network protocol that engages in a handshake of the form:
`
`1. Machine A sends Machine B a request to transfer file fB.
`
`2. Machine B partitions file fB into chunks and computes the signature for each of the chunks.
`Machine B sends its list of chunk signatures, SigB1 ... SigBn, to Machine A. This list provides the
`basis for Machine A being able to reconstruct file fB.
`
`[MS-RDC] — v20120705
` Remote Differential Compression Algorithm Specification
`
` Copyright © 2012 Microsoft Corporation.
`
` Release: Thursday, July 5, 2012
`
`9 / 76
`
`Page 9 of 76
`
`

`

`
`
`3. Using similarity data, as described in section 3.1.5.4, Machine A selects a file fA as a seed file
`and partitions it into chunks. It computes a signature for each chunk, as described in section
`3.1.5.2.
`
`4. As Machine A receives the chunk signatures from Machine B, it compares the received signatures
`against the set of signatures SigA1, ..., SigAm that it has computed on its seed file (that is, file fA)
`in step 2. As part of this comparison, Machine A records every distinct signature value it received
`from Machine B that does not match one of its own signatures SigAk computed on the chunks of
`file fA.
`
`5. Machine A sends a request to Machine B for all the chunks whose signatures were received in the
`previous step from Machine B, but that did not have a matching signature on Machine A. The
`chunks are requested by offset and length in file fB based on corresponding information that was
`sent in step 2.
`
`6. Machine B sends the contents of the requested chunks to Machine A.
`
`7. Machine A reconstructs file fB by using the chunks received in step 6 from Machine B, as well as
`its own chunks of file fA that matched signatures sent by Machine B in step 4. After this
`reconstruction step is complete, Machine A has completed the transfer of fB.
`
`RDC takes advantage of the fact that a list of signatures can be treated as a binary large object
`(BLOB), and therefore can be treated as a signature file, which is amenable to RDC. Thus, a
`recursive application of RDC is possible by feeding the signature file obtained in step 2 to RDC. This
`is useful in cases in which the file to be transferred is so large that even its signature file is large
`relative to the set of bytes that have changed.
`
`1.4 Relationship to Other Protocols
`
`RDC is not a protocol, but provides a way for other protocols to increase their efficiency when these
`protocols are involved in moving files from one machine to another. The Distributed File System
`(DFS) replication system [MS-FRS2] is the only application that currently uses RDC.
`
`1.5 Prerequisites/Preconditions
`
`None.
`
`1.6 Applicability Statement
`
`RDC can be used any time it would be helpful to store or transfer the differences between a source
`and a set of seeds instead of storing or transferring the source file in its entirety. RDC is only useful
`when there is data in common between the files being compared. However, RDC is the compression
`and differencing algorithm and is in no way involved with the actual data transfer.
`
`An example of when it may be helpful to use RDC is when individuals collaborate on shared
`documents over a wide-area, low-bandwidth network. During a round of edits, it is advantageous to
`work on a local copy of the shared document. Thus, the shared document should be copied between
`the involved sites when a different editor takes over. Instead of copying over the entire contents of
`the document, it might be beneficial to copy over only what has been edited.
`
`1.7 Versioning and Capability Negotiation
`
`RDC supports versioning through a version number in the signature header. See section 2.2.1.1.
`
`[MS-RDC] — v20120705
` Remote Differential Compression Algorithm Specification
`
` Copyright © 2012 Microsoft Corporation.
`
` Release: Thursday, July 5, 2012
`
`10 / 76
`
`Page 10 of 76
`
`

`

`1.8 Vendor-Extensible Fields
`
`None.
`
`1.9 Standards Assignments
`
`None.
`
`
`
`[MS-RDC] — v20120705
` Remote Differential Compression Algorithm Specification
`
` Copyright © 2012 Microsoft Corporation.
`
` Release: Thursday, July 5, 2012
`
`11 / 76
`
`Page 11 of 76
`
`

`

`
`
`2 Messages
`
`2.1 Transport
`
`Because RDC is an algorithm, it does not have a defined transport. It is entirely up to the application
`using RDC to define a transport mechanism, if required.
`
`2.2 Message Syntax
`
`This section defines the format of the files that RDC uses between the target location and source
`location.
`
`All multibyte integers represented in this document are in least-significant-byte-first order,
`colloquially called little-endian.
`
`All integer constants that appear are in decimal, unless otherwise noted.
`
`2.2.1 Common Data Types
`
`2.2.1.1 RdcVersion
`
`RdcVersion represents a version of RDC and is used to determine whether two versions of RDC,
`possibly on different machines, can interoperate.
`
`The RdcVersion structure is defined as follows.
`
` 1
`
`
`
`3
`0
`
` 9
`
`
`
` 8
`
`
`
` 7
`
`
`
` 6
`
`
`
` 5
`
`
`
` 4
`
`
`
` 3
`
`
`
` 2
`
`
`
` 1
`
`
`
`2
`0
`
` 9
`
`
`
` 8
`
`
`
` 7
`
`
`
` 6
`
`
`
` 5
`
`
`
` 4
`
`
`
` 3
`
`
`
` 2
`
`
`
` 1
`
`
`
`1
`0
`
` 9
`
`
`
` 8
`
`
`
` 7
`
`
`
` 6
`
`
`
` 5
`
`
`
` 4
`
`
`
` 3
`
`
`
` 2
`
`
`
` 1
`
`
`
` 0
`
`
`
`BuildNumber
`
`LibraryVersion
`
`LibraryVersion: A 16-bit unsigned integer that indicates the version of the RDC implementation.
`The value of LibraryVersion MUST be set to 0x0001.
`
`BuildNumber: A 16-bit unsigned integer that indicates the version of the software implementing
`the algorithm. The value of BuildNumber MUST be set to 0x0001.
`
`2.2.1.2 FileHeader
`
`The FileHeader structure represents the header of a signature file, which is defined in section 2.2.2.
`
`The FileHeader structure is defined as follows.
`
` 1
`
`
`
`3
`0
`
` 9
`
`
`
` 8
`
`
`
` 7
`
`
`
` 6
`
`
`
` 5
`
`
`
` 4
`
`
`
` 3
`
`
`
` 2
`
`
`
` 1
`
`
`
`2
`0
`
` 9
`
`
`
`

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket