Beichuan Zhang | 55b8ed4 | 2014-04-26 22:25:44 -0700 | [diff] [blame] | 1 | .. _NFD v0.1.0 Release Notes: |
| 2 | |
| 3 | NFD v0.1.0 Release Notes |
| 4 | ======================== |
| 5 | |
| 6 | Major Modules of NFD |
| 7 | -------------------- |
| 8 | |
| 9 | NFD has the following major modules: |
| 10 | |
| 11 | - Core |
| 12 | Provides various common services shared between different NFD modules. These include |
| 13 | hash computation routines, DNS resolver, config file, face monitoring, and |
| 14 | several other modules. |
| 15 | |
| 16 | - Faces |
| 17 | Implements the NDN face abstraction on top of different lower level transport |
| 18 | mechanisms. |
| 19 | |
| 20 | - Tables |
| 21 | Implements the Content Store (CS), the Pending Interest Table (PIT), the Forwarding |
| 22 | Information Base (FIB), and other data structures to support forwarding of NDN Data |
| 23 | and Interest packets. |
| 24 | |
| 25 | - Forwarding |
| 26 | Implements basic packet processing pathways, which interact with Faces, Tables, |
| 27 | and Strategies. |
| 28 | |
| 29 | + **Strategy Support**, a major part of the forwarding module |
| 30 | Implements a framework to support different forwarding strategies. It includes |
| 31 | StrategyChoice, Measurements, Strategies, and hooks in the forwarding pipelines. The |
| 32 | StrategyChoice records the choice of the strategy for a namespace, and Measurement |
| 33 | records are used by strategies to store past performance results for namespaces. |
| 34 | |
| 35 | - Management |
| 36 | Implements the `NFD Management Protocol |
| 37 | <http://redmine.named-data.net/projects/nfd/wiki/Management>`_, which allows |
| 38 | applications to configure NFD and set/query NFD's internal states. Protocol interaction |
| 39 | is done via NDN's Interest/Data exchange between applications and NFD. |
| 40 | |
| 41 | - RIB Management |
| 42 | Manages the routing information base (RIB). The RIB may be updated by different parties |
| 43 | in different ways, including various routing protocols, application's prefix |
| 44 | registrations, and command-line manipulation by sysadmins. The RIB management module |
| 45 | processes all these requests to generate a consistent forwarding table, and then syncs |
| 46 | it up with the NFD's FIB, which contains only the minimal information needed for |
| 47 | forwarding decisions. Strictly speaking RIB management is part of the NFD management |
| 48 | module. However, due to its importance to the overall operations and its more complex |
| 49 | processing, we make it a separate module. |
| 50 | |
| 51 | Features in Version 0.1.0 |
| 52 | ------------------------- |
| 53 | |
| 54 | This is an incomplete list of features that are implemented in NFD version 0.1.0. |
| 55 | |
| 56 | - Packet Format |
| 57 | |
| 58 | + `NDN-TLV <http://named-data.net/doc/ndn-tlv/>`_ |
| 59 | + LocalControlHeader, to allow apps to set outgoing face and learn incoming face. |
| 60 | |
| 61 | - Faces |
| 62 | |
| 63 | + Unix stream socket |
| 64 | + UDP unicast |
| 65 | + UDP multicast |
| 66 | + TCP |
| 67 | + Ethernet, currently without fragmentation. |
| 68 | |
| 69 | .. note:: |
| 70 | Ethernet support will not work properly on Linux kernels with TPACKET_V3 flexible |
| 71 | buffer implementation (>= 3.2.0) and libpcap >= 1.5.0 (e.g., Ubuntu Linux 14.04). |
| 72 | Refer to `Issue 1551 <http://redmine.named-data.net/issues/1511>`_ for more |
| 73 | detail and implementation progress. |
| 74 | |
| 75 | - Management |
| 76 | |
| 77 | + Use of signed Interests as commands, with authentication and authorization. |
| 78 | + Face management |
| 79 | + FIB management |
| 80 | + Per-namespace strategy selection |
| 81 | + NFD status publishing |
| 82 | + Notification to authorized apps of internal events, including Face creation and destruction. |
| 83 | |
| 84 | - Tables and forwarding pipelines support most Interest/Data processing, including |
| 85 | selectors. |
| 86 | |
| 87 | - RIB Management that runs as a separate process, ``nrd``. It supports basic prefix |
| 88 | registration by applications, but no flags yet. |
| 89 | |
| 90 | - Strategies |
| 91 | |
| 92 | + ``broadcast`` |
| 93 | + ``best-route`` |
| 94 | + ``ncc``: based on ccnx 0.7 for experimentation |
| 95 | + ``client-control``: authorized application can directly control Interest forwarding |
| 96 | |
| 97 | - Name-based scoping |
| 98 | |
| 99 | + ``/localhost``: communication only within localhost using "local" Faces |
| 100 | (UnixStreamFace, LocalTcpFace). NFD will strictly enforce this scope for Interests |
| 101 | and Data packets |
| 102 | + ``/localhop``: one-hop communication (e.g., if at least one incoming or outgoing Face |
| 103 | in PIT entry is non-local, the Interest cannot be forwarded to any non-local Face) |
| 104 | |
| 105 | - Support configuration file, which is in the Boost INFO format. |
| 106 | |
| 107 | - Applications |
| 108 | |
| 109 | + Tools to discover hubs on NDN testbed. |
| 110 | + peek/poke and traffic generators for testing and debugging. |
| 111 | + ``nfdc``, a command-line tool to configure NFD. |
| 112 | + ``nfd-status``, a command-line tool to query NFD status. |
| 113 | + ``nfd-status-http-server``, which reads the NFD status and publishes over HTTP. |
| 114 | |
| 115 | |
| 116 | Planned Functions and Features for Next Releases |
| 117 | ------------------------------------------------ |
| 118 | |
| 119 | - NACK |
| 120 | A packet sent back by a producer or a router to signal the unavailability of a requested |
| 121 | Data packet. The protocol specification for NACK is in progress. |
| 122 | |
| 123 | - New strategies |
| 124 | Additional strategies, including self-learning that populates the FIB by observing |
| 125 | Interest and Data exchange. |
| 126 | |
| 127 | - Hop-by-hop Interest limit mechanism for congestion control. |
| 128 | |
| 129 | - Face enhancements |
| 130 | Add fragmentation support for Ethernet face, may add support for new types such as |
| 131 | WiFi direct and WebSockets. |
| 132 | |
| 133 | - Tables |
| 134 | Experiment and evaluate different data structures and algorithms. |
| 135 | |
| 136 | - RIB management |
| 137 | Move to more scalable data structures and support all flags in prefix registrations. |
| 138 | |
| 139 | - Tunnel management |
| 140 | For hub nodes to authenticate incoming tunnel requests and maintain the tunnels. |
| 141 | |
| 142 | - Extensible name-based scoping |
| 143 | |
| 144 | + configurable organization-based scoping |