{"id":34259562,"url":"https://github.com/cn-uofbasel/ccn-lite","last_synced_at":"2026-03-13T10:33:16.984Z","repository":{"id":7613494,"uuid":"8971938","full_name":"cn-uofbasel/ccn-lite","owner":"cn-uofbasel","description":"CCN-lite, a lightweight implementation of the CCNx protocol and its variations","archived":false,"fork":false,"pushed_at":"2024-02-12T17:27:09.000Z","size":16646,"stargazers_count":73,"open_issues_count":49,"forks_count":63,"subscribers_count":18,"default_branch":"master","last_synced_at":"2024-04-09T22:00:44.029Z","etag":null,"topics":["ccn-forwarder","ccn-lite","ccnx","ccnx-protocol","icn","interoperability","iot-platform","ndn","networking"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"isc","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cn-uofbasel.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2013-03-23T15:03:00.000Z","updated_at":"2024-03-17T16:40:49.000Z","dependencies_parsed_at":"2024-02-12T18:50:41.869Z","dependency_job_id":null,"html_url":"https://github.com/cn-uofbasel/ccn-lite","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/cn-uofbasel/ccn-lite","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cn-uofbasel%2Fccn-lite","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cn-uofbasel%2Fccn-lite/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cn-uofbasel%2Fccn-lite/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cn-uofbasel%2Fccn-lite/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cn-uofbasel","download_url":"https://codeload.github.com/cn-uofbasel/ccn-lite/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cn-uofbasel%2Fccn-lite/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30465434,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-13T06:34:02.089Z","status":"ssl_error","status_checked_at":"2026-03-13T06:33:49.182Z","response_time":60,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ccn-forwarder","ccn-lite","ccnx","ccnx-protocol","icn","interoperability","iot-platform","ndn","networking"],"created_at":"2025-12-16T15:34:35.742Z","updated_at":"2026-03-13T10:33:16.643Z","avatar_url":"https://github.com/cn-uofbasel.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"![](doc/logo/ccn-lite-logo-712x184.png)\n\n# Status of Automatic Tests\n\n[![Build Status](https://semaphoreci.com/api/v1/cn-unibas/ccn-lite/branches/master/badge.svg)](https://semaphoreci.com/cn-unibas/ccn-lite)\n\n(Currently, CCN-lite V2 supports only automatic build testing, there are no functionality tests)\n\n# Overview\n\n*Jump to the [Table of Contents](#toc)*\n\nCCN-lite is a reduced and lightweight -- yet functionally\ninteroperable -- implementation of the CCNx and NDN protocols. It covers:\n\n- PARC's [Content Centric Networking Protocol](http://www.ccnx.org/), both the old (v0.8) and new (v1.0) variant,\n- the [Named-Data Networking project](http://named-data.net/)\n\nCCN-lite supports multiple platforms, including:\n\n- Linux and OS X user space\n- Linux kernel\n- Android\n- RIOT OS\n\nCCN-lite is meant as a code base for class room work, experimental\nextensions and simulation experiments. The ISC license makes it an\nexcellent starting point for commercial products.\n\nCCN-lite has been included in the RIOT operating system for the\nInternet of Things (IoT): http://www.riot-os.org/\n\n\n\u003ca name=\"toc\"\u003e\u003c/a\u003e\n### Table of Contents\n1. [Getting started](#gettingstarted)\n2. [Rationale for CCN-lite](#rationale)\n3. [Extensions](#extensions)\n4. [CCN-lite supported platforms](#platforms)\n5. [Command line tools](#lof)\n6. [Useful links](#links)\n7. [Tentative roadmap](#roadmap)\n8. [Changelog](#changelog)\n9. [Credits](#credits)\n\n\n\n\u003ca name=\"gettingstarted\"\u003e\u003c/a\u003e\n## 1. Getting started\n\nTo start right now with CCN-lite visit the [tutorial](tutorial/tutorial.md). It\ncovers installation on Unix and basic functionality of CCN-lite.\n\nFor more information about CCN-lite supported platforms and how to build, see\n[CCN-lite supported platforms](#platforms). The source code of CCN-lite is\navailable on [GitHub](https://github.com/cn-uofbasel/ccn-lite/), either the\n`master` branch or `dev-master`. If you found a bug or want to report a problem\nwith CCN-lite, feel free to\n[create an issue](https://github.com/cn-uofbasel/ccn-lite/issues) on GitHub - we\nappreciate it!\n\n\n\n\u003ca name=\"rationale\"\u003e\u003c/a\u003e\n## 2. Rationale for CCN-lite\n\nThe original motivation in 2011 for creating CCN-lite was that PARC's CCNx\nrouter software had grown huge. CCN-lite provides a lean alternative for\neducational purposes and as a stepping stone. It's for those who want a simple\npiece of software for experimentation or own development, but who do not need\nall features of the full thing.\n\nThis brings the interesting question of interoperability: What minimum\nfunctionality is necessary in order to participate in a CCNx network? With\nCCN-lite, we have made a first attempt at identifying that set, but we are aware\nthat this set might be incomplete, or may change depending on how CCNx evolves.\nWe consider this question of \"sufficient CCNx functionality\" to be of\nengineering and academic interest of its own and welcome contributions from\neverybody.\n\nHence, with CCN-lite, we did a race-to-the-bottom and strived for a kind of\n\"Level-0\" interoperability. Level-0, as we understood it, covers:\n\n- ccnb encoding of messages (or any other encoding flavor, including the TLV variants)\n- PIT and FIB, basic CCN data structures\n- longest and exact prefix matching for basic CCN operations,\n  including minsuffixcomp und maxsuffixcomp handling\n- matching of publisher's public key to fight cache poisoning\n- nonce and/or hop limit tracking to avoid loops as a minimal safeguard\n\nAs an interoperability goal we set for ourselves the threshold that the CCN-lite\nsoftware must be able to route at the CCN level between fully fledged CCNx\nforwarders. Of course, this is a moving target, but we regularly use our tools\nto interface with the NDN testbed, for example.\n\nWe deliberately do not cover in our CCN-lite code:\n\n- sophisticated data structures for performance optimizations\n- exclusion filtering in interests\n- all TCP connectivity and the old CCNx cmd line utilities that have TCP\n  hardwired into them\n- crypto functionality which is not our prime concern (yet)\n- repository functionality, SYNC server, ...\n\nA second reason to create CCN-lite was the software license (the original CCNx\nproject picked GNU, but NDN also has chosen this path) where we prefer a\nBerkeley Software Distribution style of \"do whatever you want\" as we believe\nthat this will help adopting CCN technology. Therefore, CCN-lite is released\nunder the ISC license. We have learned that several companies have picked up\nCCN-lite for their internal experiments, so we think our license choice was\nright.\n\nWhat you get with CCN-lite is:\n\n- a tiny core and forwarder\n- multiple platform support\n- little memory usage, runs on IOT platforms with less than 10k ram\n- libraries for applications (e.g. packet encoding libraries)\n- partially interoperable management protocol implementation\n- a simple HTTP server to display the relay's internal configuration\n- plus some interesting extensions of our own, see the next section.\n- little dependencies: cmake and openssl\n\n\n\n\u003ca name=\"extensions\"\u003e\u003c/a\u003e\n## 3. Extensions\n\nIn several selected areas we have started our own contributions that are now\npart of CCN-lite:\n\n- Experimental *RPC functionality* for letting neighbors mutually invoke\n  functions, which could be the starting point both for network management\n  functionality and for data marshalling (of interests and data objects) using\n  the TLV encoding.\n\n- Clean *packet scheduler support* at chunk level as well as packet or fragment\n  level (symbol `USE_SCHEDULER`)\n\n- *Packet fragmentation* and lost packet detection support for running the CCNx\n  protocol natively over Ethernet (symbol `USE_FRAG`). This is somehow outdated\n  and waits for protocol specs to emerge.\n\nOther features that you can switch on and off at compile time are:\n\nFeatue             | Description\n:----------------- | :---------------------------------------------------------\n`USE_CCNxDIGEST`   | Enable digest component, requires crypto lib.\n`USE_CHEMFLOW`     | Experimental scheduler based on chemical networking, source not included.\n`USE_DEBUG`        | Basic data structure dumping.\n`USE_DEBUG_MALLOC` | Compile with memory armoring.\n`USE_DUP_CHECK`    | Check for duplicate nonces.\n`USE_ECHO`         | Enable an echo prefix, returning the current time.\n`USE_LINKLAYER`    | Talk to Ethernet, W-LAN, 802.15.4 devices, raw frames.\n`USE_FRAG`         | Enable fragments, to run CCNx over Ethernet.\n`USE_HMAC256`      | Enables hash-based message authentication codes.\n`USE_HTTP_STATUS`  | Provide status info for web browsers.\n`USE_IPV4`         | Enable IP support.\n`USE_LOGGING`      | Enable log messages.\n`USE_KITE`         | Routing along the return path, not yet supported.\n`USE_MGMT`         | React to CCNx management protocol messages.\n`USE_SCHEDULER`    | Rate control at CCNx msg and fragment level.\n`USE_SIGNATURES`   | Authenticate management messages.\n`USE_STATS`        | Enable statistics.\n`USE_SUITE_*`      | Enable a specific protocol: CCNB, NDNTLV (NDN 2014), CCNTLV (CCNx2014), or LOCALRPC and COMPRESSED (for packet compression)\n`USE_UNIXSOCKET`   | Add UNIX IPC to the set of interfaces.\n\nThe approach for these extensions is that one can tailor a CCN forwarder to\nincluding only those features really necessary.  We have strived to make these\nchoices as orthogonal as possible and invite you to attempt the same for your\nadditions.\n\n\n\n\u003ca name=\"platforms\"\u003e\u003c/a\u003e\n## 4. CCN-lite supported platforms and how to compile\n\nCCN-lite currently supports five platforms. To find out how to install and use\nCCN-lite on each individual platform, refer to the platform-specific readme\nfiles:\n\n * [Unix](doc/README-unix.md)\n * [Linux kernel](doc/README-kernel.md)\n * [Android](doc/README-android.md)\n\nAdditionally, CCN-lite has a pre-built [Dockerfile](Dockerfile) to enable the usage of\n[Docker](https://www.docker.com/) with CCN-lite. See the\n[Docker-specific readme file](doc/README-docker.md) for more information.\n\n\u003ca name=\"lof\"\u003e\u003c/a\u003e\n## 5. Command line tools\n\nThe commandline tools can be found in the ccnl-utils folder\nThe main command line tools and their corresponding source file that are shipped\nwith CCN-lite are the following:\n\nTool                           | Description\n:----------------------------- | :---------------------------------------------\n`ccn-lite-relay`               | CCN-lite forwarder: user space.\n`ccn-lite-lxkernel`            | CCN-lite forwarder: Linux kernel module\n`ccn-lite-ctrl`                | Command line program running the CCNx management protocol (over Unix sockets). Used for configuring a running relay either running in user space or as a kernel module.\n`ccn-lite-ccnb2xml`            | Simple CCNB packet parser\n`ccn-lite-cryptoserver`        | Used by the kernel module to carry out compute intensive crypto operations in user instead of kernel space.\n`ccn-lite-fetch  `             | Fetches both a single chunk content or a series of chunks for larger named data. Only the content is returned without any protocol bytes.\n`ccn-lite-mkC  `               | Simple content composer, to stdout, without crypto.\n`ccn-lite-mkF  `               | Simple tool to split a large file into a fragment series.\n`ccn-lite-mkI  `               | Simple interest composer, to stdout.\n`ccn-lite-peek`                | Simple interest injector waiting for a content chunk.\n`ccn-lite-pktdump`             | Powerful packet dumper for all known packet formats. Output is in hexdump style, XML or content only.\n`ccn-lite-produce`             | Creates a series of chunks for data that does not fit into a single PDU.\n`ccn-lite-rpc`                 | Send an RPC request and return the reply.\n`ccn-lite-valid`               | Demo application for validating a packet's signature.\n\n\n\n\u003ca name=\"links\"\u003e\u003c/a\u003e\n## 6. Links:\n\n - Source code repository:\n   https://github.com/cn-uofbasel/ccn-lite\n - CCN-lite web site:\n   http://www.ccn-lite.net/\n - CCNx site:\n   http://www.ccnx.org/\n - NDN site:\n   http://named-data.net/\n\n\n\u003ca name=\"changelog\"\u003e\u003c/a\u003e\n## 8. Changelog\n### [Release 2.0.1 beta](https://github.com/cn-uofbasel/ccn-lite/releases/tag/2.0.1) (Jun 2018)\n\n - Last NFN Release, further versions will not contain NFN, see [FAQ](https://github.com/cn-uofbasel/ccn-lite/wiki/Frequently-asked-questions)\n - Add: Documentation\n - Bugfixes\n - CVE patches\n - Removed unused IOTTLV and CISTLV Packet formats.\n\n### [Release 2.0.0 beta](https://github.com/cn-uofbasel/ccn-lite/releases/tag/2.0.0) (Nov 2017)\n\n - Restructuration of the Code to a library system\n   Code was split to following libraries:\n\t- ccnl-core: basic data structures\n        - ccnl-fwd:  forwarding functionality of CCN-lite\n        - ccnl-pkt:  packet encoding library, can be used for end point application with no forwarding requirements\n        - ccnl-riot: RIOT integration library \n - change build system to cmake\n - add further RIOT support \n        - add compressed packet format in an early stage\n - Fix a lot of Bugs\n - Fix some CVEs (discovered by Eric Sesterhenn / X41 D-Sec):\n   CVE-2017-12412, CVE-2017-12464, CVE-2017-12465, CVE-2017-12466, CVE-2017-12467, CVE-2017-12468, CVE-2017-12469, CVE-2017-12471, CVE-2017-12472 \n\n### [Release 0.3.0](https://github.com/cn-uofbasel/ccn-lite/releases/tag/0.3.0) (Jul 2015)\n\n - Demonstrated interoperability with now-stabilized CCNx1.0, which can run\n   side-by-side with NDN in a single CCN-lite relay\n - OMNeT++ integration is back, as it has been requested many times\n - New platforms and transport:\n    - Arduino and RFduino\n    - Android and Bluetooth Low Energy\n - New functionality: \"begin-end\" fragmentation for CCNx1.0 and NDN\n - Improved build quality for Ubuntu and OSX\n - Improved READMEs all over the release, easy tutorials\n - Named Function Networking (NFN) over NDN now has Python bindings to make the\n   publishing of named functions easier.\n\n\n\n\u003ca name=\"credits\"\u003e\u003c/a\u003e\n## 9. Credits\n### [Release 2.0.1 beta](https://github.com/cn-uofbasel/ccn-lite/releases/tag/2.0.1) (Jun 2018)\n\n#### Code contributions:\nMichael Frey (MSA Safety)     \nCenk Gündogan (HAW Hamburg)    \nEric Sesterhenn (X41-DSec)    \nPeter Kietzmann (HAW Hamburg)    \nMartine Lenders (FU Berlin)    \nClaudio Marxer (Uni Basel)     \nDima Mansour (Uni Basel)    \nChristian Tschudin (Uni Basel)\nChristopher Scherb (Uni Basel)    \n\n### [Release 2.0.0 beta](https://github.com/cn-uofbasel/ccn-lite/releases/tag/2.0.0) (Nov 2017)\n\n#### Code contributions:\nChristopher Scherb   \nBalazs Faludi  \nClaudio Marxer  \nCenk Gündogan  \nEric Sesterhenn  \nChristian F. Tschudin  \n\n### [Release 0.3.0](https://github.com/cn-uofbasel/ccn-lite/releases/tag/0.3.0) (Jul 2015)\n\n#### Code contributions:\nLukas Beck  \nChristopher Scherb  \nManolis Sifalakis  \nChristian F. Tschudin  \n\n#### Feedback and other contributions:\nFateh Al-Mufti  \nFrederik Brix  \nPatrick Buder  \nDaniel Federau  \nIlir Fetai  \nNenad Kokeza  \nDavid Kordsmeier  \nDima Mansour  \nMarc Mosko  \nMihai Daniel Rapcea  \nFabian Rauschenbach  \nYanick Salzmann  \nMaarten Schenk  \nMarco Suter\nMarc-Andrea Tarnutzer  \nMarco Dieter Vogt  \nAkan Yilmaz  \n\n\n### [Release 0.2.0](https://github.com/cn-uofbasel/ccn-lite/releases/tag/0.2.0) (Dec 2014)\n\n#### Code contributions:\nBasil Kohler  \nChristian Mehlis  \nMassimo Monti  \nChristopher Scherb  \nManolis Sifalakis  \nChristian F. Tschudin  \n\n#### Code and documentation feedback:\nSamuel Bader  \nChristoph Betschart  \nNore Derguti  \nRalph Droms  \nWilson A. Eghonghon  \nDaniel Federau  \nRalph Gasser  \nCedric Geissmann  \nRasa Liebfried  \nDario Maggi  \nFrank Müller  \nMarko Obradovic  \nMichaja Pressmar  \nMihai D. Rapcea  \nThomas Simonsen\nAlexander Stiemer  \nZiba Tavassoli  \nSimon Wang  \nMario Weber  \n\n\n### [Release 0.1.0](https://github.com/cn-uofbasel/ccn-lite/releases/tag/0.1.0) (Jul 2013)\n\n#### Code contributions:\nStefan Braun  \nPierre Imai  \nBasil Kohler  \nThomas Meyer  \nMassimo Monti  \nChristopher Scherb  \nManolis Sifalakis  \nChristian F. Tschudin  \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcn-uofbasel%2Fccn-lite","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcn-uofbasel%2Fccn-lite","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcn-uofbasel%2Fccn-lite/lists"}