Ashlesh Gawande | 465d149 | 2019-01-10 15:12:01 -0600 | [diff] [blame] | 1 | PSync version 0.1.0 |
| 2 | ------------------- |
| 3 | |
Davide Pesavento | 5118959 | 2021-10-02 22:34:34 -0400 | [diff] [blame] | 4 | *Release date: January 25, 2019* |
Ashlesh Gawande | 465d149 | 2019-01-10 15:12:01 -0600 | [diff] [blame] | 5 | |
Davide Pesavento | 5118959 | 2021-10-02 22:34:34 -0400 | [diff] [blame] | 6 | Version 0.1.0 is the initial release of PSync. The PSync library implements the `PSync protocol |
Davide Pesavento | 36651f1 | 2023-01-02 17:07:21 -0500 | [diff] [blame] | 7 | <https://named-data.net/wp-content/uploads/2017/05/scalable_name-based_data_synchronization.pdf>`__. |
Davide Pesavento | 5118959 | 2021-10-02 22:34:34 -0400 | [diff] [blame] | 8 | It uses Invertible Bloom Lookup Table (IBLT), also known as Invertible Bloom Filter (IBF), to represent |
| 9 | the state of a producer in partial sync mode and the state of a node in full sync mode. An IBF is a |
| 10 | compact data structure where difference of two IBFs can be computed efficiently. |
Ashlesh Gawande | 465d149 | 2019-01-10 15:12:01 -0600 | [diff] [blame] | 11 | In partial sync, PSync uses a Bloom Filter to represent the subscription of list of the consumer. |
Davide Pesavento | 36651f1 | 2023-01-02 17:07:21 -0500 | [diff] [blame] | 12 | PSync uses the `ndn-cxx <https://github.com/named-data/ndn-cxx>`__ library as NDN development |
Ashlesh Gawande | 465d149 | 2019-01-10 15:12:01 -0600 | [diff] [blame] | 13 | library. |
| 14 | |
| 15 | PSync 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 | |
| 17 | PSync 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 Pesavento | 36651f1 | 2023-01-02 17:07:21 -0500 | [diff] [blame] | 33 | + Uses ndn-cxx ``SegmentFetcher`` to segment hello and sync data. |
Ashlesh Gawande | 465d149 | 2019-01-10 15:12:01 -0600 | [diff] [blame] | 34 | + Provide a SegmentPublisher that can be used by other NDN applications. |
Davide Pesavento | 36651f1 | 2023-01-02 17:07:21 -0500 | [diff] [blame] | 35 | + Examples are provided in ``examples`` folder to show how to use the library. |