NFD version 0.3.0¶
Release date: February 2, 2015
Changes since version 0.2.0:
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
fromndn-autoconfig-server
(Issue #1954) - Display detailed NFD software verion in
nfd-status-http-server
andnfd-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)
- Publish
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 (Issue #2272, Issue #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/
tocore/
Ignore non-Ethernet
AF_LINK
addresses when enumerating NICs on OSX and other BSD systemsFix 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)
- Updates related to NccStrategy
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
andnfd-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)
- Display face attribute fields instead of FaceFlags in
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