IP Library Patent Application 11428052
Patent Application
App. No. 11/428,052

VERSIONING SYNCHRONIZATION FOR MASS P2P FILE SHARING

Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US None
App. No.
11/428,052
Abstract

A “Mass File Sharer” (MFS) provides a mass P2P file sharing protocol with optional on-demand file access across a P2P network. Unlike conventional P2P file sharing, the MFS simultaneously asynchronously shares large numbers of files, while providing optional on-demand (synchronous) access to shared files. The MFS uses a unique metadata structure in combination with an inter-peer file/folder version analysis and an inter-peer file/folder availability analysis to share complex directory structures that may include any number of folders, sub-folders, and files. Sharing may be asynchronous and/or synchronous. Specifically, file sharing is generally accomplished as an asynchronous distribution across the network. However, when a particular peer wants direct access particular files, an on-demand access mode is used to enable synchronous delivery of shared files. This combination of asynchronous and synchronous file distribution enables the MFS to support a number of applications, such as on-demand movie viewing, file/folder browsing, etc.

Claims (55)

1 . A computer-readable medium having computer executable instructions for synchronizing versions of content to be shared via a peer-to-peer (P2P) network, said computer executable instructions comprising:

for each of a plurality of peers, identifying a set of one or more objects, held by each peer, that are to be shared with any one or more of the other peers;

wherein each object held by each peer includes one or more descriptions each of which represent either of a creation and a modification history of each object, as known to each peer;

for each description of each object held by each peer, preparing a version identifier which uniquely differentiates each description of each object, such that a same object held by different peers, but created or modified at different times, will have one or more associated version identifiers;

exchanging the most current version identifier of each object prepared by each peer with each other peer, said exchange being accomplished via a P2P network to which each peer is attached; and

for each peer, evaluating the version identifiers received from each other peer to determine whether each peer holds the same version of each object.

2 . The computer-readable medium of claim 1 further comprising:

for each peer, preparing a version chain for each object, said version chain being formed from the one or more version identifiers associated with each object held by each peer; and

exchanging the version chains prepared by each peer with every other peer.

3 . The computer-readable medium of claim 1 wherein each version identifier is a timestamp corresponding to the one of the objects to be shared for identifying the most recent modification time to those objects.

4 . The computer-readable medium of claim 1 wherein each version identifier is a hash of one of the object to be shared.

5 . The computer-readable medium of claim 1 wherein each version identifier is a signature of one of the objects to be shared.

6 . The computer-readable medium of claim 2 wherein each peer compares and synchronizes its own version chain for each object with the version chains received from each other peer such that:

if the received version chain completely contains the peers own version chain, the content description held by the other peer is more recent, and the peers own version chain will be updated to correspond to the received version chain; and

if neither the received version chain and the peers own version chain are contained within each other:

a conflicting object modification has occurred between the peer receiving the version chain and the peer sending the version chain,

each of those peers is notified of the conflict to allow a user to manually identify which one of the two conflicting object descriptions is more recent, and

a merged version chain, representing a superset of the received version chain and the peers own version chain, will be attached the object identified as being more recent.

7 . The computer-readable medium of claim 2 wherein, for each peer, the set of shared objects form a directory tree structure including one or more root folders, subfolders and files;

wherein the corresponding version identifier is attached to each file, subfolder and folder; and

wherein the version identifier attached to each subfolder and folder uniquely differentiates the entire subfolder and folder.

8 . The computer-readable medium of claim 7 wherein for each root folder, each peer compares and synchronizes its own version chain of the root folder with the version chains of the root folders received from each other peer, such that:

if the received version chain completely contains the peers own version chain, the entire root folder (which includes all files and subfolders contained in the root folder) held by the other peer is more recent, and the peers own version chain will be updated to correspond to the received version chain; and

if neither the received version chain and the peers own version chain are contained within each other, a conflicting root folder modification has occurred between the peer receiving the version chain and the peer sending the version chain, and wherein:

the version chains of each subfolder under the root folder are then examined, and each peer compares and synchronizes its own version chain of the subfolder with the version chains of the subfolder received from each other peer, such that:

if the received subfolder version chain completely contains the peers own version chain, the entire subfolder held by the other peer is more recent, and the peers own version chain will be updated to correspond to the received subfolder version chain, and

if the received subfolder version chain is completely contained in the peers own version chain, the entire subfolder held by that peer is more recent, and the peers own subfolder version chain will not be updated to correspond to the received subfolder version chain.

9 . The computer-readable medium of claim 6 wherein recursive examination of root folders, subfolders and files corresponding to the objects being shared is used to identify the more recent versions of all of the shared root folders, subfolders and files among all the sharing peers.

10 . A method for synchronizing versions of data to be shared between peers in a peer-to peer (P2P) network, comprising using each of a plurality of peer computing devices to perform steps for:

identifying matching data sharing interests between each of a plurality of peer computing devices;

wherein the matching data sharing interests of each peer computing device correspond to objects that include a root folder which further includes one or more of subfolders and files to be shared;

wherein, for each peer computing device, each object, including the root folder and any included subfolders and files, has a set of associated version identifiers each of which represents a historical description of a known version of each particular object, including a current version of each particular object, as currently held by each of the peer computing devices;

for each peer computing device, exchanging a most current version identifier associated with the root folder of each peer computing device with each other peer computing device via the P2P network; and

locally comparing the version identifiers of each root folder received from each other peer computing device with the most current version identifier associated with the root folder held by each peer computing device to determine whether each peer computing device holds a most current version of the root folder among the plurality of peer computing devices.

11 . The method of claim 10 wherein each version identifier is represented by one or more of a timestamp, a unique signature, a unique hash and a random number.

12 . The method of claim 10 further comprising, for each peer computing device, forming a version chain for each object, wherein each peer computing device forms each version chain of each object from that peers historical set of associated version identifiers for each object.

13 . The method of claim 12 further comprising, for each peer computing device, exchanging the version chains of the root folder of each peer computing device with every other peer computing device in the case where the exchanged most current version identifiers associated with the root folder held by each peer computing device are not the same.

14 . The method of claim 13 wherein each peer computing device compares and synchronizes its own local root folder version chain with each received root folder version chains sent from each other peer computing device, such that:

if one of the received root folder version chains completely contains the local root folder version chain, the local root folder version chain is updated to correspond to the received root folder version chain before being compared and synchronized to the next received root folder version chain.

15 . The method of claim 14 wherein if neither one of the received root folder version chain and the local root folder version chain are contained within each other:

the version chains of each included subfolders and file of the root folder are exchanged between the peer computing devices; and

each peer computing device then compares and synchronizes its own local version chains of those subfolders and files with the received version chains of the subfolders and files of each other peer computing device, such that:

if one of the received subfolder and file version chains completely contain the local subfolder and file version chains, the corresponding local subfolder or file version chain is updated to correspond to the received subfolder or file version chain, respectively, before being compared and synchronized to the next received subfolder or file version chain.

16 . A system for coordinating content sharing interests between peers in a peer-to-peer (P2P) network, comprising:

for each of a plurality of peers attached to a P2P network, identifying one or more matching peers in a P2P network that have corresponding content sharing interests corresponding to a root share folder of each peer;

wherein the root share folder of each matching peer represents a directory tree structure of folders and files contained with the root share folder;

locally preparing a set of version data for each of the root share folder and each of the folders and files contained within the root share folder, each set of version data describing any of a creation and modification history of each corresponding root share folder and each of the folders and files contained within the root share folder;

exchanging the version data for each root share folder prepared by each matching peer with every other matching peer via the P2P network;

for each matching peer, locally comparing the version data received from every other matching peer with the locally prepared version data to determine whether each matching peer holds the same version of the root share folder.

17 . The system of claim 16 wherein each data point in the set of version data for each of the root share folder and each of the folders and files contained within the root share folder is represented by one or more of a timestamp, a unique signature, a unique hash and a random number.

18 . The system of claim 16 wherein each matching peer recursively compares and synchronizes its own local set of version data of the root share folder with each received set of version data of the root share folder of the other matching peers, such that:

if one of the received sets of version data of the root share folder completely contains the local set of version data of the root share folder, the local set of version data of the root share folder is updated to correspond to the received set of version data of the root share folder before being compared and synchronized to the next received set of version data of the root share folder from another matching peer.

19 . The system of claim 18 wherein if neither one of the received set of version data of the root share folder and the local set of version data of the root share folder are contained within each other, then the sets of version data of each included subfolders and file of the root share folder are exchanged between the matching peers.

20 . The system of claim 19 wherein each matching peer recursively compares and synchronizes its own local sets of version data of the subfolders and files with the received sets of version data of the subfolders and files of each other matching peer, such that:

if one of the received sets of version data completely contain a corresponding local set of version data, the corresponding local set of version data is updated to correspond to the received subfolder or file version chain, respectively, before being compared and synchronized to the next received set of version data.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 15, 2015
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 034766/0509 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 10, 2006
From: LI, JIN
To: MICROSOFT CORPORATION
Reel/Frame 017902/0054 →