[ Back to course homepage ]

Software Project for ECE 544 (Example from Spring 2015)

Projects Objective & Approach

The software project of this class provides a unique chance to practice writing basic communication protocols and test your protocol in a real environment.

Software Architecture

A platform is provided to emulate a point-to-point communication link by abstracting the real physical connection and Unix communication sockets in the form of "Port". Your program's task is to configure the Ports appropriatelyand design protocol signaling/functions upon them. You will be in charge of designing your own protocols without additional requirements.
To provide a hands on experience with a widely used network tool, we implemented a framework on top of the Click Modular Router to provide the same Port abstraction. Students will have the chance to work and learn with such tool.

arch picture


Routers are implemented on top of the Click Modular Router. Click provides a perfect environment to learn modularity, network coding and design. Widely used in a number of research and commercial products, it gives the students an opportunity to experience network design and coding. To stimulate independent thinking, an abstract framework has been provided in order to allow the students to define new network protocols and easily implement and test them.


While Click provides a perfect environment for writing routers, students will be expected to write and compile C++ programs in Linux OS to deploy their client applications. Note that the students are supposed to focus on the protocol functions and primitives instead of learning how to write TCP/IP applications on Unix/Linux. Therefore, some predefined classes are provided to abstract the concept of sockets and avoid students to tackle with Unix socket programming directly.

The following classes are already designed:

Documents for the interface/functions of those common classes are here.

For a walkthrough on how to use these packages, please refer to the following examples.


1. Basic C++ knowledge/skill
2. Basic familiarity with Linux OS and basic commands.

List of Projects and Material


List of Application Examples