NDN Codebase and Tools - Named Data Networking (NDN)GUI and experimental framework provided to...

18
NDN Codebase and Tools Alex Afanasyev Florida International University

Transcript of NDN Codebase and Tools - Named Data Networking (NDN)GUI and experimental framework provided to...

Page 1: NDN Codebase and Tools - Named Data Networking (NDN)GUI and experimental framework provided to configure topologies and experiments Mini-NDN v0.3.0 released with cluster edition to

NDNCodebaseandTools

AlexAfanasyevFloridaInternationalUniversity

Page 2: NDN Codebase and Tools - Named Data Networking (NDN)GUI and experimental framework provided to configure topologies and experiments Mini-NDN v0.3.0 released with cluster edition to

StartingPoint:https://named-data.net/➠ Codebase

2

Page 3: NDN Codebase and Tools - Named Data Networking (NDN)GUI and experimental framework provided to configure topologies and experiments Mini-NDN v0.3.0 released with cluster edition to

WheretoFindSourceCodeforNDNCodebase

• Mostlinkedfromhttps://named-data.net➠ Codebase• Github organizations

– https://github.com/named-data• NFD,corelibraries,andothergeneralusesoftware

– https://github.com/named-data-mobile• Androidandrelatedsoftware

– https://github.com/named-data-iot• IoT relatedsoftware

– https://github.com/named-data-ndnsim• ndnSIM core,exampleandrealsimulationscenarios

3

Page 4: NDN Codebase and Tools - Named Data Networking (NDN)GUI and experimental framework provided to configure topologies and experiments Mini-NDN v0.3.0 released with cluster edition to

NDNCodebaseOverview

4

EvaluationFrameworksApps

InfrastructureSoftware

NDNLibraries

ndn-cxx

NDN-CPP

NDN-JS PyNDN jNDN

NFD

NDN-RTC

NFD-android

ndnSIM

ndn-atmos

ChronoChat

ChronoSync

ndns

NdnCon

miniNDN

NLSRNDN-RIOT

Repo-ng,repo-sql

NDNTools

ndncert

Manyothers NDNTestbed

PSyncVectorSync

ndn-flow

ndn-fs

μNFD

NDNControlCenter

Page 5: NDN Codebase and Tools - Named Data Networking (NDN)GUI and experimental framework provided to configure topologies and experiments Mini-NDN v0.3.0 released with cluster edition to

SupportedPlatforms

• DesktopSystems– Ubuntu,OSX,FreeBSDandotherLinuxdistributions

• Homerouters– OpenWRT,DD-WRT

• Mobile:– Android,iOS(libraryonly)

• IoT:– Arduino,ESP8266,RIOT-OS– RaspberryPi(runsNFD,availablebinarypackages)

• Webbrowser– NDN-JSlibrary+microforwarder

5

https://redmine.named-data.net/projects/nfd/wiki

Page 6: NDN Codebase and Tools - Named Data Networking (NDN)GUI and experimental framework provided to configure topologies and experiments Mini-NDN v0.3.0 released with cluster edition to

NDNForwardingDaemon(NFD)

• ThereferenceimplementationofNDNforwarder• https://named-data.net/doc/NFD/current/

– Overview– Gettingstarted– NFDDeveloper’sGuide– Manpages– Wiki– APIdocumentation(doxygen)

• Feedback,suggestions,andcontributionsarewelcome.

6

Page 7: NDN Codebase and Tools - Named Data Networking (NDN)GUI and experimental framework provided to configure topologies and experiments Mini-NDN v0.3.0 released with cluster edition to

NDN-Android:NDNStackforAndroid

7

NDN

Security Tools

NDN Forwarding Daemon

Management GUI

NDN Tools

NDN Certificate Management

WiFi DirectCommunication

Contents

lib

res

classes.dex

AndroidManifest.xml

x86_64

armeabi

libboost_*.solibndn-cxx.so

libnfd-daemon.solibnfd-wrapper.so

anim

color

• Embeds actual NFD, compiled using NDK

• Works with all (non-rooted) Android devices

https://play.google.com/store/apps/details?id=net.named_data.nfd&hl=enhttps://github.com/named-data-mobile

Page 8: NDN Codebase and Tools - Named Data Networking (NDN)GUI and experimental framework provided to configure topologies and experiments Mini-NDN v0.3.0 released with cluster edition to

NDN-RIOT:NDNforRIOT-OS

• OptimizedforIoTapps• Support

– Data-centricsecurity– StatefulNDNpacketforwarding– Replaceableforwardingstrategies– 802.15.4andEthernet

• SimpleapplicationAPIs• Severalsimpleexamplestogetstarted

8

NDNapp

NDN-RIOT

module

NetDeviceDriver

Sched InterruptHandlerIPC

CPU Timer NIC Peripherals

IPC IPCThreads

RIOT-OS Core

Hardware

https://github.com/named-data-iot

Page 9: NDN Codebase and Tools - Named Data Networking (NDN)GUI and experimental framework provided to configure topologies and experiments Mini-NDN v0.3.0 released with cluster edition to

GettingStartedwithNDN-RIOTExamples

• Downloading– mkdir riot– cd riot– git clone https://github.com/named-data-iot/RIOT– git clone https://github.com/named-data-iot/ndn-riot– git clone https://github.com/named-data-iot/ndn-riot-examples

• Compilinganexample– cdndn-riot-examples/<APP>– Forhostarchitecture(fordebugging)

• make– ForaspecificRIOTboard

• makeBOARD=samr21-xpro• makeflashBOARD=samr21-xpro#toflashfirmware• maketermBOARD=samr21-xpro#toaccessboardviaserialinterface

9

ndn-benchmark

ndn-consumer

ndn-ping

ndn-producer

ndn-rtt

ndn-template

Page 10: NDN Codebase and Tools - Named Data Networking (NDN)GUI and experimental framework provided to configure topologies and experiments Mini-NDN v0.3.0 released with cluster edition to

NDNTools

• ndnping,ndnpingserver– Rechability testingtools

• ndncatchunks,ndnputchunks– Segmentedfiletransferbetweenaconsumerandproducer

• ndnpeek,ndnpoke– Transmitasinglepacketbetweenaconsumerandaproducer

• ndndump,dissect,wireshark-dissect– DebugNDNpacketflow

• repo-ng,repo-sql:NDNrepositoriesprovidingmanagedpersistentstorage

10

Page 11: NDN Codebase and Tools - Named Data Networking (NDN)GUI and experimental framework provided to configure topologies and experiments Mini-NDN v0.3.0 released with cluster edition to

LIBRARIES

11

Page 12: NDN Codebase and Tools - Named Data Networking (NDN)GUI and experimental framework provided to configure topologies and experiments Mini-NDN v0.3.0 released with cluster edition to

ndn-cxx:NDNC++librarywitheXperimentaleXtensions

• C++11• Thereferencelibraryandsecuritylibraryimplementation• Usedin:NFD,NLSR,ndn-tools,ChronoChat,etc.• https://named-data.net/doc/ndn-cxx/current/

– Overview– Gettingstarted– Trivialapplications– Tutorials– Specifications– Manpages– APIdocumentation(doxygen)

• Feedback,suggestions,andcontributionsarewelcome.

12

Page 13: NDN Codebase and Tools - Named Data Networking (NDN)GUI and experimental framework provided to configure topologies and experiments Mini-NDN v0.3.0 released with cluster edition to

NDNCommonClientLibraries(NDN-CPP,NDN-JS,jNDN,PyNDN)

• C++,Java,Python,JavaScript,C#,Squirrel• Usedin:NDN-RTC,NdnCon,NFD-Android,etc.• https://named-

data.net/codebase/platform/ndn-ccl/– NDNCommonClientLibrariesAPI– NDN-CPPAPI– PyNDN API– NDN-JSAPI– jNDN API

13

Page 14: NDN Codebase and Tools - Named Data Networking (NDN)GUI and experimental framework provided to configure topologies and experiments Mini-NDN v0.3.0 released with cluster edition to

EVALUATIONTOOLSATDIFFERENTSCALES

14

Page 15: NDN Codebase and Tools - Named Data Networking (NDN)GUI and experimental framework provided to configure topologies and experiments Mini-NDN v0.3.0 released with cluster edition to

NDNTestbed

• Networkof37sitesacross4continents,14countries

Opentojoinandusehttps://named-data.net/ndn-testbed/policies-

connecting-nodes-ndn-testbed/

• Examplesapplicationsandexperiments:videoconferencing,networkmanagement,virtualmachinemigration,strategies,nTorrent,etc.

• Smallscaleevaluations

15

Page 16: NDN Codebase and Tools - Named Data Networking (NDN)GUI and experimental framework provided to configure topologies and experiments Mini-NDN v0.3.0 released with cluster edition to

OpenNetworkLab(ONL)

• Remotelyaccessiblenetworktestbed– OperatedandmaintainedbyAppliedResearchLabinDepartmentofComputer

ScienceandEngineeringatWashingtonUniversityinSt.Louis– RealHardwareforrunningrepeatablenetworkexperimentswithtrustedresults.(NOT

simulations)• UseforNDN

– NDNinstalledoneachhost/VM– NFDperformancestudy– NDNTestbedEmulation totestnewreleases

• Howtojoin?– https://onl.wustl.edu/

• And“Getanaccount”

16

Page 17: NDN Codebase and Tools - Named Data Networking (NDN)GUI and experimental framework provided to configure topologies and experiments Mini-NDN v0.3.0 released with cluster edition to

MiniNDN:NDNEmulationFramework(BasedonMiniNet)

17

Features

● GUI and experimental framework provided to configure topologies and experiments

● Mini-NDN v0.3.0 released with cluster edition to improve scalability

Mini-NDN (100

nodes)

50 nodes

50 nodes

50 nodes

Need for Mini-NDN● Shared emulation environment (ex: Emulab)

○ Problems with many users, long wait time● Simulation environments (ex: ndnSIM)

○ Real world applications may need to be modified○ NFD version may not be the very latest commit on Github○ Cannot interact directly in real time (visualization is

possible)● Introducing Mini-NDN, Mininet based network emulator

RunsactualinstancesofNFD,NLSR

Medium-scaleevaluations

• Easytoconfigurenetworkemulation

• Runsanyrealapplication• Numberofemulatednodes∝CPUpower

• Clustereditioncanbeusedtoscaleemulations

http://minindn.memphis.edu/

Page 18: NDN Codebase and Tools - Named Data Networking (NDN)GUI and experimental framework provided to configure topologies and experiments Mini-NDN v0.3.0 released with cluster edition to

ndnSIM:NDNSimulationFramework(BasedonNS-3)

18

ndnSIM Utilities

NS-3

NFD ndn-cxx

NDN Packet Encoding

Content StorePIT FIB Forwarding

Strategy

Face

LinkService

ndnSIM CoreNDN Protocol

Stack

Application LinkService

Network Device

Transport

ndnSIM-SpecificApplications

Transport

ndnSIM-specific ndn-cxx Face

Packet Signing

MechanismsSecurity

Mechanisms

Real-WorldApplications

ndnSIM Helpers

Global Router

Plug-N-Play Simulation Scenarios

ND

N

Sim

ulat

ion

Laye

rN

DN

Pr

otot

ypes

Modules Models VisualizerNetDeviceNodeApplication ChannelPacket

FullyintegratedwithNDNprototypeimplementations:NFD&ndn-cxx

Largescaleevaluations

• Provideinteroperabilitybetweensimulationandprototyping

• Enableatwo-wayofexperimentationandevaluation

• Enablehigh-fidelityNDNsimulations

• 1500+nodeswithWiFi channelsintheevaluationofNDNforvehicularnetworking

https://ndnsim.net/