commit | d83af5255db9c4a557264542647f7ccb281e6840 | [log] [tgz] |
---|---|---|
author | Ashlesh Gawande <agawande@memphis.edu> | Fri Jul 14 14:37:18 2023 -0500 |
committer | awlane <awlane@memphis.edu> | Tue Apr 09 11:21:19 2024 -0500 |
tree | 6f9968d034b7382fda8d7cb8adaa475b8e5facf6 | |
parent | 8c7c22804c2437166af14156b6681a245e8724fa [diff] |
Replace FullSync algorithm and fix bugs to lower delay and overhead 1) During high update frequency PSync nodes can send data that contain nothing new. This blocks the receiver nodes from syncing leading to high delays. To fix this, Sync interests now include the cumulative number of elements inserted into the IBF. This is used as an heuristic to guide PSync on decode failures to minimize the chance of sending of such data packets. Sync data freshness for entire dataset is also reduced. If a no new update still happens, introduce some safeguards in the code. 2) Fast reaction upon negative set being detected is introduced. Timed processing for interests is also introduced. 3) Fix satisfyPendingInterests to send the new update on publish even if pending IBF decode fails, since we have something to send. 4) For interests which request segments, only respond with segments already contained in in-memory storage. refs: [solution II] in Thesis: "Improvements to PSync: Distributed Full Dataset Synchronization in Named-Data Networking" https://digitalcommons.memphis.edu/cgi/viewcontent.cgi?article=3162&context=etd Change-Id: Ie235b4fb56fcb7de21068511205e407006292b23
The PSync library implements the PSync protocol. 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 list of the consumer.
PSync uses the ndn-cxx library.
To build PSync from source:
./waf configure ./waf sudo ./waf install
To build on memory constrained systems, please use ./waf -j1
instead of ./waf
. This will disable parallel compilation.
If configured with tests (./waf configure --with-tests
), the above commands will also build a suite of unit tests that can be run with ./build/unit-tests
.
Please submit any bug reports or feature requests to the PSync issue tracker.
Contributions to PSync are greatly appreciated and can be made through our Gerrit code review site. If you are new to the NDN software community, please read our Contributor's Guide to get started.
PSync is free software distributed under the GNU Lesser General Public License version 3. See COPYING.md
for details.