NDN Codebase and Tools
ALEX AFANASYEV
Florida International University aa@cs.fiu.edu
Introduction and getting started info
NDN Codebase and Tools Introduction and getting started info A LEX A - - PowerPoint PPT Presentation
NDN Codebase and Tools Introduction and getting started info A LEX A FANASYEV Florida International University aa@cs.fiu.edu Starting Point: https://named-data.net/ Codebase 2 NDN Tutorial ACM SIGCOMM 2017 NDN Codebase Overview
ALEX AFANASYEV
Florida International University aa@cs.fiu.edu
Introduction and getting started info
NDN Tutorial – ACM SIGCOMM 2017
2
Evaluation Frameworks
NDN Tutorial – ACM SIGCOMM 2017
3
Apps Infrastructure Software NDN Libraries
ndn- cxx NDN- CPP NDN- JS PyNDN jNDN NFD NDN- RTC NFD- android ndnSIM ndn- atmos ChronoChat Chrono Sync ndns NdnCon miniNDN NLSR NDN- RIOT Repo-ng, repo-sql NDN Tools ndncert Many
NDN Testbed PSync Vector Sync ndn- flow ndn-fs μNFD NDN Control Center
NDN Tutorial – ACM SIGCOMM 2017
4
distributions
packages)
NDN Tutorial – ACM SIGCOMM 2017
5 https://redmine.named-data.net/projects/nfd/wiki
forwarder
NDN Tutorial – ACM SIGCOMM 2017
6
Linux:
data/ppa
generation of networking on your machine
security
networking)
NDN Tutorial – ACM SIGCOMM 2017
7
8/20/2017 Issue Your Own NDN Certificates https://yoursunny.com/t/2016/ndncert/ 2/7
You as an Intermediate CA
Unlike in PKI where intermediate CAs are some "big corporations" and they usually charge you money to obtain a certificate, every NDN certificate can act as an intermediate CA and sign other certificates. This means, as soon as you obtain a trusted certificate on ndncert system, you can issue as many certificates as you need. You can issue a certificate for each of your end hosts, and use those certificates for Automatic Prefix Propagation. Let's put it to work! I have already requested a trusted certificate from ndncert and installed it on my machine vps3: I want to issue a certificate to my other machine, sunnyq. To do that, I first generate a certificate request on sunnyq: sunnyq $ ndnsec key‐gen ‐tr /ndn/edu/arizona/cs/shijunxiao/sunnyq > sunnyq.ndncertreq Then I copy the certificate request file to vps3, and issue the certificate by signing it with my existing trusted certificate: Finally, I copy the signed certificate back to sunnyq, and install the new certificate: vps3 $ ndnsec list ‐c * /ndn/edu/arizona/cs/shijunxiao +‐>* /ndn/edu/arizona/cs/shijunxiao/ksk‐1457557007329 +‐>* /ndn/edu/arizona/KEY/cs/shijunxiao/ksk‐1457557007329/ID‐CERT/%FD%00%00%01S%5D+%B3B vps3 $ ndnsec cert‐gen ‐N '' ‐s /ndn/edu/arizona/cs/shijunxiao ‐ < sunnyq.ndncertreq > sunnyq.ndncert
8
NDN Security Tools NDN Forwarding Daemon Management GUI NDN Tools NDN Certificate Management WiFi Direct Communication
Contents lib
classes.dex AndroidManifest.xml
x86_64 armeabi
libboost_*.so libndn-cxx.so … libnfd-daemon.so libnfd-wrapper.so …
compiled using NDK
rooted) Android devices https://play.google.com/store/apps/details?id=net.named_dat a.nfd&hl=en https://github.com/named-data-mobile
NDN Tutorial – ACM SIGCOMM 2017
NDN Tutorial – ACM SIGCOMM 2017
9
NDN app NDN- RIOT module Net Device Driver Sched Interrupt Handler IPC CPU Timer NIC Peripherals
IPC IPC
Threads RIOT-OS Core Hardware
https://github.com/named-data-iot
NDN Tutorial – ACM SIGCOMM 2017
10
ndn-benchmark ndn-consumer ndn-ping ndn-producer ndn-rtt ndn-template
Firefox/Chrome extension, written in JavaScript
upon NDN.JS and the WebExtensions API) provides shared connectivity to remote forwarders and enables shared data cache
communicate with each other through a local channel even when remote connectivity is lost
NDN Tutorial – ACM SIGCOMM 2017
11 Browser
Background Script
Remote Forwarder
JSON Messaging MicroForwarder Configuration Interface PIT FIB CS Faces
Tab
Content Script App Code Port Face
Tab
Content Script App Code Port Face WebSocket
https://github.com/named-data/ndn- js/tree/master/tools/micro-forwarder
persistent storage
NDN Tutorial – ACM SIGCOMM 2017
12
13
Stack Disabled (NFD off) Stack Enabled (NFD on) Has route to NDN hub (e.g., NDN testbed)
An app that provides a simple way to start playing with NDN apps
NDN Tutorial – ACM SIGCOMM 2017
NDN Control Center Security Tools NDN Forwarding Daemon Management GUI NDN Tools NDN Certificate Management WiFi Ad Hoc Communication
https://named-data.net/codebase/applications/ndn-control-center/
NDN Tutorial – ACM SIGCOMM 2017
14
implementation
etc.
welcome.
NDN Tutorial – ACM SIGCOMM 2017
15
configuration
NDN Tutorial – ACM SIGCOMM 2017
16
/camera / Global NDN network
Packet Packet
Interest(“/some/name”). setMustBeFresh(true), onData, onNack,
, onInterest,, onSuccess, onFailure);
NDN Tutorial – ACM SIGCOMM 2017
17
https://github.com/cawka/ndn-skeleton-apps/tree/master/ndn-cxx-makefile
Android, etc.
data.net/codebase/platform/ndn-ccl/
NDN Tutorial – ACM SIGCOMM 2017
18
me(“/some/name”)), onData, onNack,
, onInterest, onFailure)
NDN Tutorial – ACM SIGCOMM 2017
19
https://github.com/cawka/ndn-skeleton-apps/tree/master/PyNDN
streaming over NDN
NDN Tutorial – ACM SIGCOMM 2017
20
development across the world
quality coding training
announcements
NDN Tutorial – ACM SIGCOMM 2017
21 https://named- data.net/codebase/platform/support/mailing-lists/
Cod e Revi ew Continuous integration
Codi ng…
Bug Feature Task Redmine issue Codin g…Co ding… Code review Code is merged
NDN Tutorial – ACM SIGCOMM 2017
22 http://redmine.named-data.net http://gerrit.named-data.net https://github.com/named-data http://jenkins.named-data.net
NDN Tutorial – ACM SIGCOMM 2017
23
NDN Tutorial – ACM SIGCOMM 2017
24
continents, 14 countries Open to join and use https://named-data.net/ndn- testbed/policies-connecting-nodes- ndn-testbed/
experiments: videoconferencing, network management, virtual machine migration, strategies, nT
Computer Science and Engineering at Washington University in St. Louis
estbed Emulation to test new releases
NDN Tutorial – ACM SIGCOMM 2017
25
NDN Tutorial – ACM SIGCOMM 2017
26
(100 nodes)
50 nodes 50 nodes 50 nodes
Runs actual instances of NFD, NLSR Medium-scale evaluations
emulation
∝CPU power
scale emulations
https://github.com/named-data/mini-ndn
NDN Tutorial – ACM SIGCOMM 2017
27 https://www.youtube.com/watch?v=Da7t8yBWzv0
NDN Tutorial – ACM SIGCOMM 2017
28
ndnSIM Utilities NS-3 NFD ndn-cxx
NDN Packet Encoding Content Store
PIT FIB Forwarding Strategy Face LinkService
ndnSIM Core
NDN Protocol Stack Application LinkService Network Device Transport
ndnSIM-Specific Applications
Transport ndnSIM-specific ndn-cxx Face Packet Signing Mechanisms Security Mechanisms
Real-World Applications ndnSIM Helpers
Global Router
Plug-N-Play Simulation Scenarios NDN Simulation Layer NDN Prototypes
Modules Models Visualizer NetDevice Node Application Channel Packet
Fully integrated with NDN prototype implementations: NFD & ndn-cxx Large scale evaluations
simulation and prototyping
experimentation and evaluation
simulations
the evaluation of NDN for vehicular networking
Define topology
Read from file Define manually
Configure CS Visualizing
NFD’s CS ndnSIM 1.0 CS MaxSize MaxSize LRU LFU Random FIFO NoCache
Install NDN stack Configure FIB Set Forwarding Strategies
Using GlobalRoutingHelper Manually using FibHelper Configure strategy selection per namespace Install new strategy
Run simulation Collect metrics using installed tracers 29
NDN Tutorial – ACM SIGCOMM 2017
NDN Tutorial – ACM SIGCOMM 2017
30
ndn::GlobalRoutingHelper ndnGlobalRoutingHelper; ndnGlobalRoutingHelper.InstallAll(); ndnGlobalRoutingHelper.AddOrigins(“/prefix”, producer); ndnGlobalRoutingHelper.CalculateRoutes(); ndn::StackHelper ndnHelper; ndnHelper.InstallAll();
Install NDN stack
NodeContainer consumerNodes; consumerNodes.Add(grid.GetNode (0,0)); ndn::AppHelper cHelper("ns3::ndn::ConsumerCbr"); cHelper.SetPrefix("/prefix"); cHelper.SetAttribute("Frequency", StringValue("10")); cHelper.Install(consumerNodes);
Install consumer app(s)
Ptr<Node> producer = grid.GetNode(2, 2); ndn::AppHelper pHelper("ns3::ndn::Producer"); pHelper.SetPrefix("/prefix"); pHelper.SetAttribute("PayloadSize", StringValue("1024")); pHelper.Install(producer);
Install producer app(s) Configure FIB (manually or like here using the helper) https://github.com/named-data-ndnSIM/scenario-template