<<

NDN ON RIOT-OS {WENTAO SHANG,ALEX AFANASYEV, AND LIXIA ZHANG }UCLA

MOTIVATION RIOT-OS FEATURES DEMO APPLICATION: NDN-PING • Named Data Networking (NDN) has shown • Common OS abstraction across multiple plat- This demo application shows two RIOT-OS nodes great potential in supporting network applica- forms (ARM, , MSP430) running NDN-Ping client and servers respectively tions in the IoT environments [1]. • Multi-threading + IPC in a emulated network environment on a Ubuntu • The goal of this project is to bring NDN proto- • Custom network stack 15.10 machine. NDN packets are sent over Ether- col support to the constrained IoT devices with • /C++ programming environment net directly. 100s of KB memory and low-power CPU. • Standard build tools (gcc, make) • We build on top of a popular IoT plat- Interest • Simulator for testing on PCs Client Server form called RIOT-OS [2]. Data Ethernet SYSTEM DESIGN APPLICATION INTERFACE Emulated testbed NDN-Ping client The NDN code on RIOT-OS is C99-compatible. Net Object Interface Threads APP IPC NDN IPC Device Name ndn_name_from_uri, ndn_name_append, Driver ndn_name_print, ndn_name_compare_block, ndn_name_get_component_from_block

Interest ndn_interest_create, ndn_interest_get_name, ndn_interest_get_nonce, OS core Sched IPC Soft_IRQ ndn_interest_get_lifetime Data ndn_data_create, ndn_data_get_name, ndn_data_get_content, ndn_data_get_metainfo, Hardware CPU Timer Net Device ndn_data_verify_signature APP Handle ndn_app_create, ndn_app_run, ndn_app_destroy, ndn_app_schedule, Software architecture of NDN on RIOT-OS ndn_app_express_interest, NDN-Ping server Tcpdump output of network packets ndn_app_register_prefix, ndn_app_put_data The NDN protocol is implemented as a kernel . The IPC channel is used for: List of API for NDN APP on RIOT-OS text data bss dec hex file name • Passing NDN packets from & to APP and network 39636 228 11204 51068 c77c ndn_ping.elf device driver threads • Sending configuration commands (e.g., add faces, Code size & static memory usage (compiled for SAM R21 IoT board) register prefixes) Currently implemented features: LIMITATIONS &FUTURE WORK • Basic packet forwarding logic (PIT, FIB, CS) • Support for Ethernet and 802.15.4 • Currently the code is only tested in emulated NDN-IoT networks. • Memory efficient packet encoding & decoding environments. The next step is to try it out • The current implementation does not in- • HMAC-SHA256 data signing and verification on a real IoT device. clude advanced NDN features such as for- • The current implementation does not have warding strategies or cache management routing support or FIB/RIB management. policies. It is yet unclear whether it is nec- REFERENCES An interesting research direction is to pro- essary to support those features on con- [1] W. Shang, A. Bannis, T. Liang, Z. Wang, Y. Yu, vide routing functionality for constrained strained devices. A. Afanasyev, J. Thompson, J. Burke, B. Zhang, and L. Zhang. Named Data Networking of OURCE ODE CKNOWLEDGMENT Things. In Proceedings of 1st IEEE International Con- S C A ference on Internet-of-Things Design and Implementa- The source code of this work is available at This work has been supported by the National tion (IoTDI’2016). (Invited paper). https://github.com/wentaoshang/RIOT/ Science Foundation under award CNS-1345318, [2] RIOT - The friendly for the Inter- tree/ndn/. It is currently released under LGPL CNS-1345142, CNS-1455794, and CNS-1455850. net of Things. http://www.riot-os.org/. Simple NDN consumer on RIOT-OS v2.1, the same license used by RIOT-OS itself.