Remote Differential Compression

Remote Differential Compression (RDC) is a client–server synchronization algorithm that allows the contents of two files to be synchronized by communicating only the differences between them. It was introduced with Microsoft Windows Server 2003 R2, is included with later Windows client and server operating systems, but by 2019 is not being developed and is not used by any Microsoft product.

Unlike Binary Delta Compression (BDC), which is designed to operate only on known versions of a single file, RDC does not make assumptions about file similarity or versioning. The differences between files are computed on the fly, therefore RDC is suitable for efficient synchronization of files that have been updated independently, where network bandwidth is small, or where the files are large but the differences between them are small.

The algorithm used is based on fingerprinting blocks on each file locally at both ends of the replication partners. Since many types of file changes can cause the file contents to move without other significant change (for example, a small insertion or deletion at the beginning of a file can cause the rest of the file to become misaligned to the original content) the blocks used for comparison are not based on static arbitrary cut points but on cut points defined by the contents of each file segment. This means that if a part of a file changes in length, or blocks of the contents get moved to other parts of the file, the block boundaries for the parts that have not changed remain fixed related to the contents, and thus the series of fingerprints for those blocks do not change, they just change position. By comparing all hashes in a file to the hashes for the same file at the other end of the replication pair, RDC is able to identify which blocks of the file have changed and which have not, even if the contents of the file have been significantly reshuffled. Since comparing large files could imply making large numbers of signature comparisons, the algorithm is recursively applied to the hash sets to detect which blocks of hashes have changed or moved around, significantly reducing the amount of data that needs to be transmitted for comparing files.

Later versions of Windows support cross-file RDC, which finds files similar to the one being replicated, and uses blocks of the similar files that are identical to the replicating file to minimize data transferred over the WAN. Cross-file RDC can use blocks of up to five similar files.[1]

RDC is similar in many ways to the older (1996) rsync protocol, but with some useful innovations, in particular the recursive algorithm and cross-file RDC.[2]

RDC is implemented in Windows operating systems by a DLL file, MSRDC.DLL, which will be present in the %SYSTEMROOT%\System32 directory if and only if RDC is enabled. Very little software is available which makes use of it, particularly on non-server systems. According to Internet rumor, enabling RDC significantly slows local file transfers, and it should not be enabled; a Microsoft TechNet web page disputes this in great detail,[3] despite frequent anecdotal posts of its removal having worked to restore transfer speeds.[citation needed]

Discontinuation

edit

With the release of Microsoft's Windows Server 2019, RDC support was included in the section Features we’re no longer developing (which may be removed from a future update), with the comment "This support isn’t currently used by any Microsoft product".[4]

See also

edit

References

edit
  1. ^ Microsoft TechNet: DFS Replication: Frequently Asked Questions, section "What is cross-file RDC?", pub. 16 October 2006, updated 30 January 2013
  2. ^ Remote Differential Compression (aka rsync algorithm for Windows), David Jade, Programming, 15 February 2013
  3. ^ Ned Pyle (26 June 2009). "Debunking the Vista Remote Differential Compression Myth". Microsoft Technet blogs. Retrieved 2 June 2019.
  4. ^ "Features removed or planned for removal in Windows Server 2019". Microsoft Windows IT Pro Center. 21 May 2019. Retrieved 2 June 2019.
edit