blob: 5b1ad727f02ca9f1ad7832d39d151ac933f11bda [file] [log] [blame]
Ashlesh Gawande465d1492019-01-10 15:12:01 -06001PSync version 0.1.0
2-------------------
3
Davide Pesavento51189592021-10-02 22:34:34 -04004*Release date: January 25, 2019*
Ashlesh Gawande465d1492019-01-10 15:12:01 -06005
Davide Pesavento51189592021-10-02 22:34:34 -04006Version 0.1.0 is the initial release of PSync. The PSync library implements the `PSync protocol
Davide Pesavento36651f12023-01-02 17:07:21 -05007<https://named-data.net/wp-content/uploads/2017/05/scalable_name-based_data_synchronization.pdf>`__.
Davide Pesavento51189592021-10-02 22:34:34 -04008It uses Invertible Bloom Lookup Table (IBLT), also known as Invertible Bloom Filter (IBF), to represent
9the state of a producer in partial sync mode and the state of a node in full sync mode. An IBF is a
10compact data structure where difference of two IBFs can be computed efficiently.
Ashlesh Gawande465d1492019-01-10 15:12:01 -060011In partial sync, PSync uses a Bloom Filter to represent the subscription of list of the consumer.
Davide Pesavento36651f12023-01-02 17:07:21 -050012PSync uses the `ndn-cxx <https://github.com/named-data/ndn-cxx>`__ library as NDN development
Ashlesh Gawande465d1492019-01-10 15:12:01 -060013library.
14
15PSync is an open source project licensed under LGPL 3.0. We highly welcome all contributions to the PSync code base, provided that they can be licensed under LGPL 3.0+ or other compatible license.
16
17PSync supports the following features:
18
19- **Partial Synchronization**
20
21 + Allows consumers to subscribe to a subset of a producer's offered prefixes.
22 + Consumer can sync with any replicated producer in the same sync group.
23 + A PartialProducer class to publish prefixes and updates.
24 + A Consumer class to subscribe to the producer (hello) and listen for updates (sync).
25
26- **Full Synchronization**
27
28 + Similar to ChronoSync, allows full synchronization of names amongst all the nodes in the sync group.
29 + FullProducer class can be used start syncing with a sync group.
30
31- **Miscellaneous**
32
Davide Pesavento36651f12023-01-02 17:07:21 -050033 + Uses ndn-cxx ``SegmentFetcher`` to segment hello and sync data.
Ashlesh Gawande465d1492019-01-10 15:12:01 -060034 + Provide a SegmentPublisher that can be used by other NDN applications.
Davide Pesavento36651f12023-01-02 17:07:21 -050035 + Examples are provided in ``examples`` folder to show how to use the library.