[Nfd-dev] ndn-cxx devguide outline

Junxiao Shi shijunxiao at email.arizona.edu
Tue Sep 9 13:45:19 PDT 2014


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.
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

Consumer

   - Interest pipeling for segmented dataset
   - retransmissions

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

Security

This section explains more about security features.
Concepts

   - identity, public key, certificate
   - TPM
   - PIB and PIB service
   - KeyChain
   - Validator

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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.lists.cs.ucla.edu/pipermail/nfd-dev/attachments/20140909/5fb6183a/attachment.html>


More information about the Nfd-dev mailing list