[ 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.
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
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.
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.
- Concepts of class, objects, inheritance...
- Command-line I/O, file I/O
- Multi-thread programming
- g++ compiler
List of Projects and Material
- Project 1: Using Click and Its Modular Elements
- Project Details: Slides
- Weight: 2% of Course Grades
- Project 2: Implementing Click Elements and Client Applications
- Project 3: Routing Protocol Design
List of Application Examples
- Example 1: Simple packet sender and receiver
- Example 2: Learn to design packet header
- Example 3: Learn to create lossy link and use timer
- Example 4: Learn to use threads