ACM ICN 2019, Hong Kong, CHINA

Half-day Tutorial: Building IoT Systems over Named Data Networking - NDN IoT Programming Platform

This half-day tutorial on IoT support over Named Data Networking (NDN) aims to provide an overview of NDN-Lite, an NDN Internet-of-Things programming platform, as well as hands-on exercises of developing simple IoT applications over such a platform. The tutorial will cover the basic components of NDN-Lite and how these components function together to enhance IoT usability and security, as well as to simplify IoT development. This will help the audience to get a quick start with NDN-Lite and gain hand-on experiences of NDN IoT development. We will also introduce open issues and how one can explore new research questions in NDN and IoT.

Tutorial Overview


  • Zhiyi Zhang


    • Zhiyi Zhang is a Ph.D. candidate in the Computer Science Department of UCLA, under the supervision of Prof. Lixia Zhang. His main research interests are Named Data Networking and Network Security. His previous work done in NDN includes Name-based Access Control, NDNCERT, and DDoS Defense with NDN. He is also contributing to the development of the core NDN software, including NFD and ndn-cxx library.


  • Yanbiao Li


    • Yanbiao Li received his Ph.D. degree in Hunan University, China and was a Postdoc at Internet Research Lab at UCLA from 2017 to 2018. His research focus is on the nextgeneration Internet architecture and high performance networked systems. He is also contributing to the development of the core NDN software, including NFD and ndn-cxx library.


  • Alex Afanasyev

    Florida International University

    • Alex Afanasyev is an Assistant Professor in Florida International University, Miami. He received his Ph.D. degree in computer science from UCLA in 2013. His research focus is on the next-generation Internet architecture as part of the Named Data Networking (NDN) project. His research interests include a variety of topics that are vital for the success of NDN, including scalability of name-based routing, autoconfiguration, distributed data synchronization, application and network security. Dr. Afanasyev is also leading the development effort of the overall NDN codebase.


  • Lixia Zhang


    • Lixia Zhang is a Professor in the Computer Science Department of UCLA. She received her Ph.D in computer science from MIT and was a member of the research staff at Xerox PARC before joining UCLA. She is a fellow of ACM and IEEE, the recipient of IEEE Internet Award, and the holder of UCLA Postel Chair in Computer Science. Since 2010 she has been leading the effort on the design and development of the NDN architecture.



With its built-in security and content-centric communication model, Named Data Networking (NDN) provides a great potential to enable future Internet of Things (IoT) applications. A number of publications [1–3] have examined NDN’s desired properties and explored how NDN’s architectural properties can be utilized.

NDN-Lite, a programming framework designed for IoT support over NDN, was released at end of 2018. Since then, we have gained further first-hand experience on developing IoT systems over NDN. We will share our experiences and hope they can help others clarify and deepen the conceptual understanding about this new framework, offering a jump start for people who plan to conduct research on NDN IoT. Furthermore, by understanding the NDN-Lite, it becomes easier for one to see its advantages, appreciate the difference between NDN and the existing ways of IoT, as well as identify new research challenges.

The tutorial would be most beneficial for those who want to gain further understanding of NDN IoT beyond reading the literature, and those who are looking for interesting research topics to work on. The main goal of the tutorial is to offer a booster to get one started through interactive and fun mental exercises together with hands-on experiences.

Type of the Tutorial

After a short overview of the NDN-Lite framework, the lecture part of the tutorial will be focused on description of the design of each component of NDN-Lite, their features and differences from the standard NDN libraries, and how to get started to use them. In parallel, we will run hands-on tasks implementing simple applications with NDN-Lite (data authentication, confidentiality). We are hoping for an active engagement with the tutorial participants, answering questions from the participants on how NDN-Lite works, how it may help meeting their own applications needs, showing and writing of real examples of code development in real-time.

Outline of the Tutorial

1) NDN-Lite Overview (20 minutes)

We plan to illustrate the basic framework of NDN-Lite to help create a clear overall picture and demonstrate the key concepts in NDN-Lite. In this part, we will help audience to obtain a first impression on how NDN-Lite provide

  • basic NDN network functionalities,
  • NDN security support,
  • application-layer support, including security bootstrapping, service discovery, access control, and trust management.

Moreover, we will briefly introduce how NDN-Lite copes with different IoT hardware/software platforms and provide unified framework for IoT applications.

2) NDN-Lite Network Functionalities (20 minutes)

We plan to provide a brief introduction of NDN network functionalities provided in NDN-Lite. Specifically, we want to illustrate how NDN-Lite’s packet encoding/decoding and forwarding differ from the existing NDN Forwarding Daemon (NFD) to work with resource constrained devices. We will also open a discussion on some under-developing features and future directions.

3) Security support from NDN-Lite (20 minutes)

We plan to first discuss the security requirements and challenges raised in IoT, and then shed light on NDN-Lite’s security support. To be more specific, we will describe the current security designs and the functions provided in NDNLite. Moreover, we will discuss how NDN-Lite works with different hardware/software crypto support backends.

4) Application Support in NDN-Lite (20 minutes)

We will introduce a few fundamental building blocks to IoT applications over NDN-Lite, which facilitate security and usability of the IoT system, and simplify the development of IoT applications. In detail, we will cover the security bootstrapping protocol, the service discovery protocol, the trust management protocol, and the access control protocol that are already realized within NDN-Lite.

Break (30 minutes)

5) Hands-on Exercise: simple consumer/producer application (45 minutes)

Following the introduction of application support in NDNLite, we will guide the participants to develop a simple consumer/producer application over NDN-Lite . This includes exercises on how to use the library, how to compile the code, how to deploy the binary to the device, as well as a test with real IoT devices.

Additional hands-on exercises include the development of a simple functional module, to help the audience learn how to add new functionalities or customize existing ones, and how to contribute to the NDN-Lite development. In the anticipation of time shortage, we plan to make a pre-record video for this part.

6) New Platform Adaptations and Customized Functionalities (20 minutes)

In case one wants to port NDN-Lite onto a new hardware platform or a new software framework, he will find this section very useful. With modularity being its basic design principle, NDN-Lite facilitates cross-platform development by allowing developers to add their adaptation layer implementations to new platforms. In addition, developers are free to customize applications support modules to their requests.

7) Q & A (30 minutes)

During the tutorial, we will set up an online board to collect questions about the basic NDN-Lite concepts and the programming exercises.

Requirements for Attendees

We assume that all tutorial attendees will bring a laptop. We expect that some people will want to follow up the coding exercise; some others may not. Even for those people who do not plan to participate in hands-on exercise, they should still be able to participate in Q&A section of the tutorial.

Those who plan to participate in coding exercise should bring a laptop capable of running Docker platform. The NDN team will prepare a set of docker environments (with online and handout instructions) to create a unified development environment. The participants may also use local or cloud- based VM or directly install tools on their laptops (only for those running Linux and macOS).

In the weeks leading up to the tutorial, we will provide limited email support for those participants who are willing to prepared the development environment before the tutorial starts. No time will be allocated for troubleshooting participants’ installations during the tutorial.

The developed examples will use a variety of programming languages, including C++ (C++14), C (C99), JavaScript, Python. Participants are expected to be proficient at least in one of the listed languages and general understanding of today’s TCP/IP protocol architecture.


[1] Wentao Shang, Alex Afanasyev, and Lixia Zhang. 2016. The design and implementation of the NDN protocol stack for RIOT-OS. In 2016 IEEE Globecom Workshops (GC Wkshps). IEEE, 1–6.

[2] Wentao Shang, Adeola Bannis, Teng Liang, Zhehao Wang, Yingdi Yu, Alexander Afanasyev, Jeff Thompson, Jeff Burke, Beichuan Zhang, and Lixia Zhang. 2016. Named data networking of things. In 2016 IEEE first international conference on internet-of-things design and implementation (IoTDI). IEEE, 117–128.

[3] Wentao Shang, Zhehao Wang, Alexander Afanasyev, Jeff Burke, and Lixia Zhang. 2017. Breaking out of the cloud: Local trust management and rendezvous in Named Data Networking of Things. In Proceedings of the Second International Conference on Internet-of-Things Design and Implementation. ACM, 3–13.