blob: 528f04eecf244c016c8aad793dc1b6817775bf6c [file] [log] [blame]
PSync version 0.1.0
-------------------
Release date: January 25, 2019
Version 0.1.0 is the initial release of PSyncPSync library implements the `PSync protocol <https://named-data.net/wp-content/uploads/2017/05/scalable_name-based_data_synchronization.pdf>`_. It uses Invertible
Bloom Lookup Table (IBLT), also known as Invertible Bloom Filter (IBF), to represent the state
of a producer in partial sync mode and the state of a node in full sync mode. An IBF is a compact data
structure where difference of two IBFs can be computed efficiently.
In partial sync, PSync uses a Bloom Filter to represent the subscription of list of the consumer.
PSync uses `ndn-cxx <https://github.com/named-data/ndn-cxx>`_ library as NDN development
library.
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.
PSync supports the following features:
- **Partial Synchronization**
+ Allows consumers to subscribe to a subset of a producer's offered prefixes.
+ Consumer can sync with any replicated producer in the same sync group.
+ A PartialProducer class to publish prefixes and updates.
+ A Consumer class to subscribe to the producer (hello) and listen for updates (sync).
- **Full Synchronization**
+ Similar to ChronoSync, allows full synchronization of names amongst all the nodes in the sync group.
+ FullProducer class can be used start syncing with a sync group.
- **Miscellaneous**
+ Uses ndn-cxx **SegmentFetcher** to segment hello and sync data.
+ Provide a SegmentPublisher that can be used by other NDN applications.
+ Examples are provided in `examples` folder to show how to use the library.