ACM ICN 2015, September, 2015, San Francisco, USA
Site Menu

2nd ACM Conference on Information-Centric Networking (ICN 2015), Sep. 30 - Oct. 2, 2015

Tutorial CCN: Practical CCNx - Protocol and Code


  • Ignacio Solis - Principal Scientist, PARC
  • Marc Mosko - Principal Scientist, PARC
  • Glenn Scott - Principal Engineer, PARC
  • Alan Walendowski - Principal Engineer, PARC


ICN has been gaining quite a bit of traction in the research community. CCN has been at the core of the surge in interest. The CCN protocol has become the basis of comparison to the various ICN architectures.

The original CCNx codebase (0.x) acted as the first playground for developing and evaluating ICN. It became the base of various projects enabling a large number of research projects.

With time CCN has grown throughout the past few years. The protocol has changed and the codebase has been rewritten to reflect the new functionality.

A binary version of CCNx (compatible with the 1.0 protocol spec) was released at ICN 2014 for early experimentation. A source release of CCNx was made available this year under a technology evaluation program for both academia and universities as well as commercially interested entities.

ICN 2015 is the perfect venue to give an overview of the CCN protocol and CCNx code base. The protocol has added a few features (like manifests) and the code has been updated with the new functionality. A CCNx tutorial would cover both the protocol changes as well as the code (in both binary and source form).


CCNx has changed a lot in the last year and this tutorial covers all the changes, updates and new code availability.

In ICN 2014 (September) a half day CCNx tutorial presented the base architecture of CCN 1.0. Due to time constraints there was no room for a hands-on practical experience. Over 100 people attended the tutorial.

In CCNxCon 2015 (May) over 30 people had a chance to do some coding with the latest CCNx binary release. We did a successful interop test at the end with 3 compatible implementations.

A source release of CCNx was announced late May and this is a great opportunity to learn more about developing with the code.

Type of Tutorial

Full day hands-on tutorial with a lecture.

Content Outline

  1. CCN 1.0 Protocol Introduction. This is an introduction to the CCN 1.0 protocol. It will go through the basic concepts:
    • Naming
    • Messages
    • Matching and forwarding
    • Manifests
    • Transport
    • Routing
    • Trust
    • PIT
    • FIB
    • Framing headers
    • Encoding / TLV
    • Validation
  2. CCN 1.0 Protocol Introduction. This is an introduction to the CCN 1.0 protocol. It will go through the basic concepts:
    • Forwarder
    • Transport Framework
    • Assembly Framework
    • APIs
    • Installing and running the software
  3. CCNx Distillery Distribution. This is an introduction to the CCNx Distillery Software Suite. It will cover all the library components:
    • LongBow: Programing and Runtime utilities
    • Libparc: Data structures and algorithms
    • ccnx-common: CCNx data structures
    • APIs: Basic CCNx APIs
    • RTA-transport: Transport and Assembly Framework
    • Metis: Forwarder
  4. Code walk through. We will go over the code and structure of CCNx Distillery. This includes:
    • coding style and conventions
    • PARC Object
    • CCNx Dictionary
    • memory system
  5. Code example. We will go over a coding example and write a simple application to exercise:
    • code and libraries
    • programming environment
    • debugging
  6. Projects / Exercises. A few projects and exercises will be presented. People will be able to choose one of the options or make up their own.
  7. Coding and Interop. Attendees will be able to work on the sample projects or their own ideas. Tutoring will be available. Code will be shared via github. We will also give participants an opportunity to do inter testing between CCNx implementations.

Requirements for the Attendees

None for protocol, laptop for hands-on coding (Linux, Linux VM, Mac, Docker recommended)

The ACM ICN 2015 Website is based on source code which is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License and is available at
The logo of ACM ICN 2015 was provided by David Dormagen.