Changes since version 0.2.0 Release date: February 2, 2015 New features: - Build - 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. - Faces - Enable detection of WebSocket connection failures using ping/pong messages (Issue 1903) - In EthernetFace: - Avoid putting the NIC in promiscuous mode if possible (Issue 1278) - Report packets dropped by the kernel if debug is enabled (Issue 2441) - Integrate NDNLP fragmentation (Issue 1209) - Forwarding - Strategy versioning (Issue 1893) - New Dead Nonce List table to supplement PIT for loop detection (Issue 1953) - Abstract retransmission suppression logic (Issue 2377) - New forwarding strategy for access router (Issue 1999) - Management - Add config file-based strategy selection (Issue 2053) The sample config file now includes strategy selection for /, /localhost, /localhost/nfd, and /ndn/broadcast namespaces as follows: tables { ... strategy_choice { / /localhost/nfd/strategy/best-route /localhost /localhost/nfd/strategy/broadcast /localhost/nfd /localhost/nfd/strategy/best-route /ndn/broadcast /localhost/nfd/strategy/broadcast } } - Implement Query Operation in FaceManager (Issue 1993) - FaceManager now responds with producer-generated NACK when query is invalid (Issue 1993) - Add functionality for automatic remote prefix registration (Issue 2056) - Only canonical FaceUri are allowed in faces/create commands (Issue 1910) - Tables - StrategyInfoHost can now store multiple StrategyInfo of distinct types (Issue 2240) - Enable iteration over PIT and CS entries (Issue 2339) - Allow predicate to be specified in Measurements::findLongestPrefixMatch (Issue 2314) - Calculate the implicit digest of Data packets in CS only when necessary (Issue 1706) - Tools - Publish /localhop/ndn-autoconf/routable-prefixes from ndn-autoconfig-server (Issue 1954) - Display detailed NFD software verion in nfd-status-http-server and nfd-status (Issue 1916) - nfdc now accepts FaceUri in all commands (Issue 1995) - Add daemon mode for ndn-autoconfig to re-run detection when connectivity changes (Issue 2417) - Core - New scheduler::ScopedEventId class to automatically handle scheduled event lifetime (Issue 2295) Updates and bug fixes: - Documentation - NFD Developer's guide has been updated to reflect changes in the codebase - Installation instruction updates - Update of config file instructions for disabling unix sockets (Issue 2190) - Core - Use implementations moved to ndn-cxx library - Use Signal from ndn-cxx (Issues 2272 and 2300) - use ethernet::Address from ndn-cxx (Issue 2142) - Use MAX_NDN_PACKET_SIZE constant from ndn-cxx (Issue 2099) - Use DEFAULT_INTEREST_LIFETIME from ndn-cxx (Issue 2202) - Use FaceUri from ndn-cxx (Issue 2143) - Use DummyClientFace from ndn-cxx (Issue 2186) - Use ndn::dns from ndn-cxx (Issue 2207) - Move Network class implementation from tools/ to core/ - Ignore non-Ethernet AF_LINK addresses when enumerating NICs on OSX and other BSD systems - Fix bug on not properly setting FreshnessPeriod inside SegmentPublisher (Issue 2438) - Faces - Fix spurious assertion failure in StreamFace (Issue 1856) - Update websocketpp submodule (Issue 1903) - Replace FaceFlags with individual fields (Issue 1992) - Drop WebSocket message if the size is larger than maximum NDN packet size (Issue 2081) - Make EthernetFace more robust against errors (Issue 1984) - Prevent potential infinite loop in TcpFactory and UdpFactory (Issue 2292) - Prevent crashes when attempting to create a UdpFace over a half-working connection (Issue 2311) - Support MTU larger than 1500 in EthernetFace (for jumbo frames) (Issue 2305) - Re-enable EthernetFace on OS X platform with boost >=1.57.0 (Issue 1922) - Fix ioctl() calls on platforms where libpcap uses /dev/bpf* (Issue 2327) - Fix overhead estimation in NDNLP slicer (Issue 2317) - Replace usage of deprecated EventEmitter with Signal in Face abstractions (Issue 2300) - Fix NDNLP PartialMessage cleanup scheduling (Issue 2414) - Remove unnecessary use of DNS resolver in (Udp|Tcp|WebSocket)Factory (Issue 2422) - Forwarding - Updates related to NccStrategy - Fix to prevent remembering of suboptimal upstreams (Issue 1961) - Optimizing FwNccStrategy/FavorRespondingUpstream test case (Issue 2037) - Proper detection for new PIT entry (Issue 1971) - Use UnitTestTimeFixture in NCC test case (Issue 2163) - Fix loop back to sole downstream (Issue 1998) - Updates related to BestRoute strategy - Redesign best-route v2 strategy test case (Issue 2126) - Fix clang compilation error in best-route v2 test case (Issue 2179) - Use UnitTestClock in BestRouteStrategy2 test (Issue 2160) - Allow strategies limited access to FaceTable (Issue 2272) - Tables - Ensure that eviction of unsolicited Data is done in FIFO order (Issue 2043) - Simplify table implementations with C++11 features (Issue 2100) - Fix issue with Fib::removeNextHopFromAllEntries invalidating NameTree iterator (Issue 2177) - Replace deprecated EventEmitter with Signal in FaceTable (Issue 2272) - Refactored implementation of ContentStore based on std::set (Issue 2254) - Management - Allow omitted FaceId in faces/create command (Issue 2031) - Avoid deprecated ndn::nfd::Controller(Face&) constructor (Issue 2039) - Enable check of command length before accessing verb (Issue 2151) - Rename FaceEntry to Route (Issue 2159) - Insert RIB command prefixes into RIB (Issue 2312) - Tools - Display face attribute fields instead of FaceFlags in nfd-status and nfd-status-http-server output (Issue 1991) - Fix nfd-status-http-server hanging when nfd-status output is >64k (Issue 2121) - Ensure that ndn-autoconfig canonizes FaceUri before sending commands to NFD (Issue 2387) - Refactored ndn-autoconfig implementation (Issue 2421) - ndn-autoconfig will now register also /localhop/nfd prefix towards the hub (Issue 2416) - Tests - Use UnitTestClock in Forwarder persistent loop test case (Issue 2162) - Use LimitedIo in FwForwarder/SimpleExchange test case (Issue 2161) - Build - Fix build error with python3 (Issue 1302) - Embed CI build and test running script - Properly disable assertions in release builds (Issue 2139) - Embed setting of PKG_CONFIG_PATH variable to commonly used values (Issue 2178) - Add conditional compilation for NetworkInterface and PrivilegeHelper - Support tools with multiple translation units (Issue 2344) Removals - Remove listen option from unix channel configuration (Issue 2188) - Remove usage of deprecated MetaInfo::TYPE_* constants (Issue 2128) - Eliminate MapValueIterator in favor of boost::adaptors::map_values