Before You Start

The project description, licensing, source code and how to compile are available here. Once you have built the project, you can follow this tutorial. Otherwise, please be sure to have the project up and running first.


Currently the repository kodo-ns3-examples contains 3 basic examples in its main path regarding how to use the library with ns-3, namely:

  • kodo-wifi-broadcast: This example consists on broadcasting packets with RLNC from a transmitter to N receivers with an IEEE 802.11b WiFi channel.
  • kodo-wired-broadcast: This example consists on broadcasting packets with RLNC from a transmitter to N receivers with the same erasure channel.
  • kodo-recoders: This example shows the gain of RLNC with recoding in a 2-hop line network consisting of an encoder, N recoders and a decoder with different erasure rates. Recoding can be set on or off and erasure rates modified by command-line parsing.

Automated Builds

You can check the build status of the repository master branch on our buildbot page. Our buildbot displays the supported combinations of platforms, operating systems, and compilers. At the link, you can check build status and build statistics for them in the respective waterfall link. This information is provided also for other Steinwurf projects such as Kodo itself.

What You Should Know Before the Tutorial


In order for the tutorial to be easy to read, some basic knowledge of C++ is recommended. If you are also a C++ beginner, you can refer to this tutorial as a guide from the basics to more advanced features of the language. Given that both ns-3 and Kodo are highly object-oriented projects, we strongly recommend you to spend some time on class related topics, particularly object properties (polymorphism, inheritance) and templates (generic classes or functions based on abstract types). In the mentioned C++ tutorial you may find plenty examples for this.


Kodo is a C++ library from Steinwurf that implements Random Linear Network Coding and its variants, but also other codes like Reed-Solomon. The links you should review first to get a clear idea of what the library does, are:

Kodo C++ bindings

To ease the development process, we use C++ bindings that are high level wrappers of the basic core application programming interfaces of Kodo. Besides making the process easier, the bindings provide encapsulation and abstraction from the library. If you want to get more details, please refer to the previous link. There you will find documentation and examples regading on how to use the bindings on their own.


ns-3 is a network simulator of the OSI layers written in C++ for research and educational purposes under the GPLv2 license. You can find documentation regarding a tutorial, a manual and a model description in this link.


Our main building tool is waf in the same way it is for ns-3. So, if you have used ns-3 before this should be transparent to you. If you have not used waf , you can review a description of the tool with some examples in the waf project. For this reason, we highly recommend you to follow the instructions in the repository link mentioned at the beginning of this document.