Problem: caching relies on exact Name
• Local router has /repo/file1/version1 in its cache
• Consumer wants /repo/file1/version2
• File contents are similar, but local router can’t find it due to different Names
remote routerlocal routerconsumer
• Publisher segments files using Rabin fingerprints.
• Repository indexes segments by SHA256 hashes.
• Metadata records segment hashes.
• Consumer retrieves metadata, requests segments by hash from neighbors,
and downloads missing segments with application-defined name.
• Benefit: save Internet bandwidth, shorten download completion time
• Suitable scenario: files with similar segments are sitting around neighbors,
such as software updates
Signed by publisher
Content: hashes of segments
• The consumer can trust the file if it trusts the signature on metadata.
• The signatures on segments retrieved by hash are ignored.
Implementation & Testing
• Implementation: modified repo, custom publisher and consumer tools
• Simple test scenario
• Many versions of a software's source code in uncompressed TAR format are stored in
a remote repo. There should be similarities among those versions.
• Several machines in the local area network each retrieves one version of the source
code. Some blocks should be obtained from local area network instead of from the