NDN-RTC and Experimental Library Func:onality Peter Gusev NDNComm, March 2017
Flume Slack channels + Skype with DVR • Conversa:onal group channels • Publish audio/video within the text chat context • Seamless DVR-like playback and access to historical data
Another app? • Con:nua:on of NDN- RTC/ ndncon work • Useful tool • Focusing on: – peer-to-peer scenarios – mundane resilience – data mules – mobile producers
Applica:on iden:ty setup
Incorpora:ng schema:zed trust • Namespace update • Hierarchical verifica:on • Using short-lived (1h) keys for actual data
NDN applica:ons ecosystem App1 App2 App3 • NFD Control Center Instance Key Instance Key Instance Key – required plaZorm for NDN applica:ons – stores and serves applica:on NFD Control Center cer:ficates App1 Signing Key App2 Signing Key – provides API for applica:ons: App3 Signing Key • to request signing iden:ty App1 Key App1 Key App1 Key • to store applica:on iden:ty • connec:vity check NDN
Local connec:vity • Goal: enable NDN apps to operate locally, without requiring testbed connec8on • Establishing local peer-to-peer connec:vity in common adhoc scenarios: Local WiFi, LAN • Two modules: – Discover: discovering nearby peers (WiFi direct, Bonjour, Bluetooth, … ) – Routes management: establish NDN routes between discovered peers
Experimental Library Func:onality • Shim between NDN-CPP and applica:on (Flume) • Experimental concepts and ideas, poten:ally can be generalized for common use in NDN- CPP or NDN-CNL
Channel discovery • Global “discovery” sync object ../hosted/0 User B • User publishes list of sync /ndn/broadcast/flume channel IDs sync sync discovery User A User C • Channel ID list ../hosted/< seqNo > ../hosted/< seqNo > numbered sequen:ally channel 1 channel 1 channel 2 channel 2 channel 3 (ChronoChat message)
Generalized object fetching • _meta describes the object: – MIME content type – :mestamp – content size _meta _manifest %00%00 %00%01 ... %00%NN – other NDN Data Packets Payload Content-Type • payload is segmented Timestamp Manifest 1 2 ... N Content-Size Other • _manifest for verifica:on
Abstrac:ng Interest/Data exchange • Asynchronous callback-based API LocalNamespace n(appPrefix, face, keyChain); Namespace profile = n.scope(“profile”); NamespaceObject o(“data”); Sync object into a namespace: • o.setPayload(“{ username: Peter; bio: ‘UCLA REMAP’; }”); – publish , if namespace is local profile.sync(o, []( NamespaceObject& o){ – fetch, if namespace is remote // published "<appPrefix>/profile/data" }, Namespace scoping • []( NamespaceObject& o, std::string errMsg){ // handle error }); Namespace subtrees • ... RemoteNamespace n(appPrefix, face, keyChain); Namespace profile = n.scope(“profile”); NamespaceObject o(“data”); profile.sync(o, []( NamespaceObject& o){ // fetched "<appPrefix>/profile/data" }, []( NamespaceObject& o, std::string errMsg){ // handle error });
Routable prefix exchange • Using ChronoSync for prefix exchange /ndn/broadcast/ RPE • Happens in background Caida /ndn/org/caida 2. announce 3. attach • Discovered prefixes Interest: /ndn/edu/ucla/remap/peter/data 1. routable prefix 4. express interest LINK: /ndn/org/caida a`ached as LINK objects /ndn/org/caida Peter to Interests Jeff /ndn/edu/ucla/remap/peter
Storage • Persistence across mul:ple app launches • Storage rota:on scheme • Handles high frequency interests (real-:me requirement) • Store other peer’s data
Storage. Serving data App Persistent Storage ✘ ✓ Local NFD data ? Business Logic store ✘ Memory Content Cache NDN ? ? interest data ✘ Content Cache ✓ ✓ data data
Storage. Reques:ng data App Persistent Storage ✓ ✘ data Local NFD ? Business Logic ✘ ✓ data Memory Content Cache NDN ? interest ✘ Content Cache ✓ ✓ data data
Data mules Zoe /flume/user/zoe /flume/user/zoe/channel-A channel-A /flume/user/zoe/channel-A about text audio video announcement - channel name - description - … Peter /flume/user/peter /flume/user/zoe channel-A channel-A Zhehao text audio video about text audio video /flume/user/zhehao /flume/user/zoe announcement channel-A channel-A text audio video about text audio video announcement
Roadmap NFDcc scope NFD 1.1 NFDcc status check NFD 5. Testbed connectivity: routes re-advertisement NFD 6.2. Local connectivity: routes management NFD 6.1. Local connectivity: discovery NFD 2.1.1 Request existing identity NFD 3.2 Testbed Connectivity NFD 3.1 Routable prefixes 2.1.2 Request new identity NFD APP 2. Namespace design APP 4.4. Channel API: historical retrieval APP 4.1. Channel API: create channel App scope APP 5.1. New UI: live APP 5.2. New UI: historical APP 9. User profile APP 9. Release APP 4.2. Channel API: messaging APP 1. Live streaming APP 7. Historical streaming APP 8. Data muling APP 3. Channel discovery 4.3. Channel API: updates 6. Storage 6.1. Storage rotation scheme APP APP APP APP 10. Online members list Library scope LIB 3.1. MC ChronoChat: discovery LIB 1. RPE LIB 3.3. ChronoChat: optional app info LIB 2. Data encapsulation LIB 4. Generalized NDN-object fetching Milestone 1 Milestone 2 Milestone 3 Historical playback: Release: New UI with current functionality (extended): - channels: text, tags, signaling, streams - local storage (own data) - data muling (other peer’s data) - storage rotation scheme - local connectivity - channel discovery - live streaming - file attachments - testbed connectivity: readv. - testbed connectivity - NFDcc identity management API
TBD NFD scope • Iden:ty management API – To Be Implemented – Testbed connec:vity status – To Be Implemented – Cer:ficate bundle/NFD RIB direct cert fetch – To Be Implemented – Routes re-adver:sement – Feedback (#3818) – Local connec:vity – To Be Implemented – Library scope • Routable prefix exchange – To Be Implemented – Persistent storage – To Be Implemented – App scope ( To Be Implemented ) • Storage – Channel API: historical playback – Data mules (mul:-producer) – UI –
THANK YOU
Recommend
More recommend