[Nfd-dev] ndn-cxx devguide outline
Burke, Jeff
jburke at remap.ucla.edu
Tue Sep 9 15:17:57 PDT 2014
Hi Junxiao,
Thanks for this.
I'd propose that the specification of how all libraries must/should operate be separated from the specifics of developing using ndn-cxx. This would help immensely in NDN-CCL development, for example, where APIs, data types, and even application interaction may differ from ndn-cxx, but certain important functionality must be the same.
I'm not exactly sure where the line should be drawn between spec and ndn-cxx approach, but have highlighted a few things below that I'd suggest could mostly described in a spec and then referenced / expanded upon in the developer guide.
As an aside, now that NFD has reached its first major milestone, I'd also like to encourage the many developers engaged for that effort to consider contributing functionality and documentation to NDN-CCL as well.
Jeff
From: Junxiao Shi <shijunxiao at email.arizona.edu<mailto:shijunxiao at email.arizona.edu>>
Date: Tue, 9 Sep 2014 13:45:19 -0700
To: "<nfd-dev at lists.cs.ucla.edu<mailto:nfd-dev at lists.cs.ucla.edu>>" <nfd-dev at lists.cs.ucla.edu<mailto:nfd-dev at lists.cs.ucla.edu>>
Subject: [Nfd-dev] ndn-cxx devguide outline
Dear folks
Here is a draft outline for ndn-cxx Application Developer Guide.
The target audience is developers who intend to develop NDN applications with ndn-cxx library.
The document should briefly explain ndn-cxx architecture, and provide some guidance of designing producer and consumer applications.
Please provide your comments on what should go into the document, and what should be emphasized.
You may reply-all to this message, or post a note on ndn-cxx Task 1581<http://redmine.named-data.net/issues/1581>.
Markdown source file can be found on ndn-cxx Task 1581<http://redmine.named-data.net/issues/1581> attachment.
Yours, Junxiao
ndn-cxx Application Developer Guide
This document describes ndn-cxx: NDN C++ library with eXperimental eXtensions, and how to develop an NDN application using the ndn-cxx library.
Introduction
* history of ndn-cxx, comparison with ndn-ccl-api
* what should be included in ndn-cxx
* what should not be included in ndn-cxx
Application Design
This section describes how to design an application that can work well with NDN architecture and ndn-cxx library.
None of these sections are specific to ndn-cxx, and should probably not be written in a library specific manner.
Data Naming
* fundamental difference between NDN content distribution model and IP communication model
* same content should have same Name
* Data is immutable: version component
* segmenting
Interests
* how Interest matches Data
* discover names with Interest Selectors, then retrieve with predictable names
* avoid abusing Selectors
Security
* Data carries signature
* signed Interest for command
* communication channel is not secured: secrets should be protected by encryption (not signed Interest)
* trust management: identity, public key, certificate (more details in Security section)
Application Implementation
This section describes how to implement an application with ndn-cxx library.
Basics
* start a project: obtain build flags with pkg-config, include ndn-cxx headers, C++ namespace consideration
* Name, Interest, Data classes
* Face class, asynchronous operation, event loop
Producer
* prefix registration and Interest filter
* in-app storage and its difference from ContentStore
The techniques here could be in a recommendations sections of a spec or some other type of design focused document?
Consumer
* Interest pipeling for segmented dataset
* retransmissions
The techniques here could be in a recommendations sections of a spec or some other type of design focused document?
Security
* signing with KeyChain
* verification with ValidatorConfig (more details in Security section)
Integration with Other Components
* Boost.Asio event loop
* scheduler
Interacting with NFD Management
* nfd::Controller class and control commands
* status dataset
* notification stream
* local control header
The APIs to NFD should be documented separately in a specification for any library to be written to.
Security
This section explains more about security features.
Concepts
* identity, public key, certificate
* TPM
* PIB and PIB service
* KeyChain
* Validator
I could go both ways on these – if these are considered "architectural" components, they need to be in a spec that is not ndn-cxx specific.
Credential Management
* select PIB and TPM with client.conf
* ndnsec commands
* publish certificates using PIB service
Trust Model
* hierarchical trust model, and how to validate with ValidatorConfig
* web-of-trust trust model, and how to validate with ValidatorConfig
* considerations on designing a custom trust model
Library Internals
This section describes internals of the ndn-cxx library, useful for those who want to extend the library.
TLV encoding
* constants in ndn::tlv namespace
* Block and Buffer
* EncodingBuffer and EncodingEstimator
* how to implement a TLV abstraction type
Transport
* interface between Face and Transport
* select transport with Face constructor
* select transport with client.conf
* how to implement a transport
_______________________________________________ Nfd-dev mailing list Nfd-dev at lists.cs.ucla.edu<mailto:Nfd-dev at lists.cs.ucla.edu> http://www.lists.cs.ucla.edu/mailman/listinfo/nfd-dev
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.lists.cs.ucla.edu/pipermail/nfd-dev/attachments/20140909/430862df/attachment.html>
More information about the Nfd-dev
mailing list