Release Notes

NLSR version 0.2.1 (changes since version 0.2.0)

Release date: June 30, 2015

Code changes:

  • Using a configuration file without prefix-update-validator disables runtime advertise/withdraw instead of exiting (Issue #2814)

Bug fixes:

  • Prevent incomplete removal of NPT entry (Issue #2785)
  • Correct bidirectional links with differing costs (Issue #2801)
  • Fix non-incrementing Adjacency number in AdjLsa::writeLog (Issue #2594)
  • Remove FaceDestroyEvent test’s reliance on nlsrSeqNo.txt (Issue #2881)
  • Test ACTIVE/INACTIVE Adjacencies in LSA construction (Issue #2735)

NLSR version 0.2.0 (changes since version 0.1.0)

Release date: April 30, 2015


  • The code now requires C++11. The minimum supported gcc version is 4.6, as earlier versions do not have proper support for C++11 features. (Issue #1930)
  • Require OpenSSL (Issue #2375)

New features:

  • Add nlsrc command-line tool (Issue #1834)
  • Advertise/Withdraw name prefixes at runtime (Issue #1834)
  • Assign zero cost to hyperbolic direct neighbors (Issue #1975)
  • Only hyperbolic costs are adjusted before registering (Issue #1974)
  • Add ability to specify different logging levels (Issue #1935)
  • Add LSDB dataset publishers (Issue #2280)
  • Add LSDB dataset tlv abstractions (Issue #2280)
  • Allow zero cost neighbors for hyperbolic routing table calculation (Issue #1982)
  • Faces are now created with canonical Face URI (Issue #1911)
  • Add configurable router event intervals (Issue #2071)
  • Add router-dead-interval configuration setting (Issue #1878)
  • Add log formatting specified by log4cxx configuration file (Issue #1950)
  • Face URIs in configuration file are checked for validity on load (Issue #2070)
  • Configuration variables with default values are now optional (Issue #1949)
  • Recalculate routing table after face destroy event (Issue #2635)
  • Add Travis-CI build script

Code changes:

  • Change adjacency status from uint32_t to enum (Issue #1946)
  • Remove scheduler from NLSR class (Issue #1981)
  • Change hyperbolic cost adjustment factor from 100 to 1000 (Issue #1974)
  • Remove use of outdated namespace ndn::Tlv (Issue #2079)
  • Remove use of deprecated ndn::nfd::Controller(Face&) constructor (Issue #2133)
  • Routing update publishing is abstracted to SyncLogicHandler (Issue #2289)
  • Make ConfParameter variable types consistent with min and max values (Issue #2084)
  • Replace LSA string literals with constants (Issue #2310)
  • Subscribe to FaceMonitor notifications using connect (Issue #2350)
  • Log exceptions thrown in event loop
  • Change ndn::ptr_lib::shared_ptr to std::shared_ptr (Issue #2110)
  • Avoid deprecated ndn::Name::set method (Issue #2505)
  • Update waf to version 1.8.8-dev
  • Add sorting tiebreaker to NexthopList (Issue #2715)
  • Update Jenkins-CI build scripts

Bug fixes:

  • Fix python3 build error (Issue #1956)
  • Fix typos in nlsr.conf security section (Issue #1985)
  • Stop SyncLogicHandler from fetching a router’s own LSAs (Issue #2005)
  • Fix Name LSA comparison which could cause incorrect advertised names to be removed (Issue #2029)
  • Fix issue where more faces than max-faces-per-prefix could be applied to a prefix (Issue #2018)
  • Stop LSDB from retrieving and out of date LSA when a new one is detected (Issue #1987)
  • Correct mistakes in documentation
  • Correct bitmask used to copy Name LSA sequence number (Issue #2323)

NLSR version 0.1.0 (initial release)

Release date: August 25, 2014

The main design goal of NLSR is to provide a routing protocol to populate NFD’s RIB. NLSR calculates the routing table using link-state or hyperbolic routing and produces multiple faces for each reachable name prefix in a single authoritative domain.

Included features:

  • Advertise availability of content through the configured router
  • Use ChronoSync to synchronize routers’ LSA sequence numbers and Interest/Data to retrieve LSAs
  • Produce a list of ranked forwarding options for each name prefix to facilitate NDN’s adaptive forwarding strategies
  • Configure maximum number of faces per prefix in NFD’s RIB
  • Set up NFD tunnels to neighbors automatically and maintain the tunnels to neighbors
  • Provide two routing protocols:
    • Link State routing: calculate route cost based on link costs
    • Hyperbolic routing: calculate route cost based on hyperbolic coordinates
  • Use a hierarchical trust model for routing within a single administrative domain
  • Keep NFD’s RIB updated on failure and recovery