https://redmine.named-data.net/https://redmine.named-data.net/favicon.ico?14759811232018-01-02T12:54:11ZNDN project issue tracking systemNLSR - Task #4127: Rebuild the LSDBhttps://redmine.named-data.net/issues/4127?journal_id=216062018-01-02T12:54:11ZNicholas Gordonnmgordon@memphis.edu
<ul><li><strong>Target version</strong> changed from <i>v0.5.0</i> to <i>Minor release 0.4.1</i></li><li><strong>Parent task</strong> deleted (<del><i>#2741</i></del>)</li></ul> NLSR - Task #4127: Rebuild the LSDBhttps://redmine.named-data.net/issues/4127?journal_id=216082018-01-02T12:54:51ZNicholas Gordonnmgordon@memphis.edu
<ul><li><strong>Blocked by</strong> <i><a class="issue tracker-3 status-5 priority-2 priority-default closed" href="/issues/2741">Task #2741</a>: Create proposal to redesign a more generic LSDB</i> added</li></ul> NLSR - Task #4127: Rebuild the LSDBhttps://redmine.named-data.net/issues/4127?journal_id=219722018-01-23T09:17:30ZJunxiao Shi
<ul><li><strong>File</strong> <a href="/attachments/789">list-sort-set-benchmark.cpp</a> <a class="icon-only icon-download" title="Download" href="/attachments/download/789/list-sort-set-benchmark.cpp">list-sort-set-benchmark.cpp</a> added</li></ul> NLSR - Task #4127: Rebuild the LSDBhttps://redmine.named-data.net/issues/4127?journal_id=224752018-02-22T10:35:32ZAshlesh Gawande
<ul><li><strong>Target version</strong> changed from <i>Minor release 0.4.1</i> to <i>v0.5.0</i></li></ul> NLSR - Task #4127: Rebuild the LSDBhttps://redmine.named-data.net/issues/4127?journal_id=244762018-12-21T12:13:56ZAshlesh Gawande
<ul><li><strong>Assignee</strong> changed from <i>Nicholas Gordon</i> to <i>Saurab Dulal</i></li><li><strong>Target version</strong> changed from <i>v0.5.0</i> to <i>v0.6.0</i></li></ul> NLSR - Task #4127: Rebuild the LSDBhttps://redmine.named-data.net/issues/4127?journal_id=267412020-05-31T10:18:42ZAshlesh Gawande
<ul><li><strong>Assignee</strong> changed from <i>Saurab Dulal</i> to <i>Ashlesh Gawande</i></li></ul><p><a href="https://gerrit.named-data.net/c/NLSR/+/4749">https://gerrit.named-data.net/c/NLSR/+/4749</a> patch-set 11 makes minimum changes to replace the three std::list used for Lsas with the proposed boost::multi_index container in previous patch-sets. Although it does not separate LsaFetcher and LsaPublisher as the previous patch-sets, it still reduces the Lsdb from ~1300 lines to ~630 lines with templating and polymorphism. Changes outside the Lsdb are kept to a minimum for easier review and have all the tests be passed w/ minimum modifications.<br>
Other refactoring can follow as desired after the basic premise of this change of using a single multi_index container for Lsdb is achieved.</p>
<p>Some highlights that may need explicit review:</p>
<ul>
<li>Block m_wire is eliminated from child LSA classes and now resides in LSA base class (replacing the m_baseWire). These were introduced in <a class="issue tracker-3 status-5 priority-2 priority-default closed" title="Task: Consolidate src/tlv/**lsa** into src/**lsa** (Closed)" href="https://redmine.named-data.net/issues/4787">#4787</a></li>
<li>LSA base class has a public pure virtual wireEncode() - this maybe not desired in a library, but I think having it in NLSR is perfectly fine. wireEncode(block) and wireDecode(block) are protected, to be used by child classes.</li>
</ul>
NLSR - Task #4127: Rebuild the LSDBhttps://redmine.named-data.net/issues/4127?journal_id=271052020-12-29T18:59:17ZSaurab Dulal
<ul><li><strong>Target version</strong> changed from <i>v0.6.0</i> to <i>0.7.0</i></li></ul> NLSR - Task #4127: Rebuild the LSDBhttps://redmine.named-data.net/issues/4127?journal_id=271662021-01-31T09:34:05ZAshlesh Gawande
<ul></ul><p><a href="https://gerrit.named-data.net/c/NLSR/+/6217">https://gerrit.named-data.net/c/NLSR/+/6217</a> makes the following changes to simplify Lsdb further:</p>
<ul>
<li>Lsdb emits a signal containing a pointer to Lsa, an update type (Inserted, Updated, Removed), and two lists of Names
<ul>
<li>List of Names are only relevant to NameLsa update - Names to be removed and Names to be added.</li>
<li>Lsa base class now has a pure virtual update function so that Lsdb does not need to cast the pointer and then call functions according to each Lsa</li>
</ul></li>
<li>RoutingTable consumes the Lsdb signal
<ul>
<li>Behaviours which were in Lsdb such as removing routing table if own Adjacency Lsa is removed are moved to RoutingTable</li>
<li><strong>Resets wire when routing table is updated (seems like current code does not - so will return old routing table once calculated)</strong></li>
<li>calculate function in RoutingTable is simplified</li>
</ul></li>
<li>NamePrefixTable consumes the Lsdb signal
<ul>
<li>Adds/Removes origin router of LSAs</li>
<li>Adds/Removes updates from NameLsa</li>
</ul></li>
</ul>
<p>Unit tests are added to test that the behavior upon signal emission/consumption is correct in Lsdb, RoutingTable and NamePrefixTable</p>