Part B - Network Protocol Development in C ( from Scratch )

Why take this course?
π Welcome Back, Network Coding Enthusiasts! π
Course Instructor: Abhishek CSEP
π Course Title: Part B - Network Protocol Development in C (from Scratch)
π Course Headline: Network Coding Project for Network Core Developers, Linux, System Programming, Operating Systems, Projects in C/C++
Greetings & Kudos! π
First of all, a hearty congratulations on completing the Part-A of this Course! You've successfully navigated through developing the Adjacency Management feature of the protocol. I trust you've gained a solid grasp of managing timer-based state machines and are now ready to tackle the next phase of your networking coding journey.
Dive into Phase 2: Link State Database Management π§
As we embark on Phase 2 of the Project - Link State Database Mgmt., every router will leverage its Adjacency Objects to build a local Link State Database (LSDB). The objective is clear: each router must share its LSDB with every other router in the network running the ISIS protocol. This ensures that all routers maintain a coherent and consistent view of the Intermediate System to Intermediate System (IS-IS) topology, which is crucial for seamless network operations.
Course Breakdown & Objectives π
This full course series is divided into 3 parts: Part A and B are live, with Part C under development as of December 21, 2021. In the next installment, we will delve into the following key concepts:
- Packet Flooding: Understanding how packets are initially sent out to populate LSDBs.
- Building the Link State Database (LSDB): Constructing a complete LSDB from received packets.
- Link State Database Synchronization: Ensuring LSDBs across different routers remain in sync.
We will continue to utilize timers and venture into the realm of asynchronous programming. This project will challenge you to think on your feet and adapt to real-world network protocol development scenarios.
Transform Your Skills with Hands-On Experience π¬
The aim of this project is to guide you through an end-to-end implementation of a typical network protocol, using a routing protocol as our case study. The logistics for a network protocol implementation typically involve:
- Configuration via Command Line Interface (CLI).
- Displaying internal states and results through CLIs.
- Reacting to configuration changes, such as link status modifications or IP address updates.
- Computing and installing results in relevant tables (Routing Information Base, MAC Tables, etc.).
- Adapting to topological changes, like link or device failures.
- Time-out stale data structures when necessary.
- Periodically generating or processing protocol packets.
- Adding new features to an existing, functioning codebaseβa common task in software engineering.
Given the project's size (expecting around 10k LOCs), you'll also have the opportunity to master:
- Organizing code in header and source files.
- Modularizing your codebase, keeping different features in separate source files.
- Testing new features and ensuring they complement rather than disrupt existing functionality.
- Utilizing version control systems, like GitHub, to maintain code commits.
- Debugging techniques, such as gdb and Valgrind.
Your Journey with Real-World Application Development π
This project is a substantial endeavor (around 10k LOCs) that will allow you to gain hands-on experience in a real-world application context. It's through projects of this scale that you can apply the theoretical knowledge and techniques you've learned, solidifying your expertise as a network protocol developer.
Don't miss this opportunity to transform your skills and contribute meaningfully to the field of network programming. Let's embark on this exciting journey together! ππ»
Loading charts...