Part B - Network Protocol Development in C ( from Scratch )
What you'll learn
- Understand how Network Protocols are implemented on Network Devices
- Packet processing, Update protocol data structures through packets processing
- Debugging and troubleshoot code to resolve issues
- Implement new features incrementally
- Implement complex protocol state machines and Network Algorithms
- The AIM of this project is to cycle you through the experience of end-to-end implementation of a typical network protocol
Requirements
- Must have Completed Part A of the Course
Description
First of all Congratulations on completing the Part-A of this Course in which we develop the Adjacency Mgmt feature of the protocol. I hope you enjoyed and had a great learning. You must be Feeling confident in developing timer-based state machines now?
And here starts a new challenge when we enter into Phase 2 of the Project - Link State Database Mgmt. Every Router will use its Adjacency Objects sitting on an interface to build its local Link State Database. But the challenge is - every router has to share its own local copy of the link-state database ( LSDB ) with every other router in the topology running ISIS protocol so that every router has a coherent and common view of the IGP topology. This is what is the end goal of this phase of the project.
This full course series is divided into 3 parts - Part A, Part B, and Part C out of which Part A and B are Live, and Part C is under Development as of 21 Dec 2021.
Once again we shall cover all required theories and concepts before we hit the keyboard for implementation. The three main concepts we shall going to implement in this installment of the course are :
1. Concept of Packet Flooding
2. Building of Link State Database
3. Link State Database Synchronization
We shall continue to use Timers as phase 2 is also heavily dependent on timers to achieve its goals. In addition to timers, we shall also get to introduce to the world of Asynchronous programming through this project.
Continue to Challenge yourself by doing more of such projects and you will not even realize that you have already transformed yourself into a 10x Developer.
Project Goals
The AIM of this project is to cycle you through the experience of end-to-end implementation of a typical network protocol. In this case study, we have chosen a routing protocol as an example, but the high-level logistics involved to implement a typical network protocol are more or less the same. For example, a typical network protocol has to:
Configurable via CLIs
Show internal states and results through show CLIs
Respond to generic configuration changes ( such as link shut-down, IP Address on interface change, etc)
Compute results and install the results in Tables (Routing Information Base, MAC Tables, hardware Tables, etc )
Respond to Topological Changes (link failures, device failures, etc )
Time-out stale Data structures if any.
Periodically Generate Or Process Protocol packet
How to add a new feature to the existing working Protocol Codebase. (This is what you shall be doing all your life as a software engineer !!)
Since the project is quite big (I am expecting around 10k LOCs), you would also get the opportunity to learn how to :
Organize the code in header and src files
Modularize the codebase: How to keep the code of different features in different src files
Testing the new feature, and cross-check it doesn’t break existing features
Maintain Code Commits through Version control system ( Github in this case )
Bug Fixing, and exercising various debugging techniques (gdb, Valgrind, etc )
Needless to say, you Can’t exercise the above points unless you do a project of considerable size.
Who this course is for:
- Core Developers aiming to work in Networking / Distributed Systems / System Programming side
- Not for those seeking non-development roles ( This is pure Dev oriented Course )
- Not for those still struggling with basic data structures, basic C programming concepts
- Working professionals, Job Seekers, domain changers to Networking Dev, Learners, starving for knowledge
Instructors
I have been engaged with coding and software for a decade now. I am a Networking developer at MNC. My rich working experience is backed by graduation from IIT Bombay as an MTech specialist. I am restless for more in-depth knowledge, and always working out the ways to integrate what I know in practical ways. I am always happy to train and encourage people on Udemy – the next-gen education platform.
I will help you to strengthen the networking concepts and fundamentals in a very practical way. I also hones in System Software Development, Linux System Programming and Network Software Development. I love to create courses on unique non-standard topics, and projects. Check my catalogue, you will find couple of project based courses which you can add to your resume.
You’ll complete assignments and work on a project where you’ll use all the theory. I make sure you build a proper understanding and that you’ll get all the questions and doubts answered. Let me take the privilege to guide you and bring useful additions to your resume !
Hi, Myself Shivani Nigam, PhD in Marketing. I expertise in researching the consumer behavior in the context of purchasing the products online. I take the responsibility of marketing the online content (Udemy courses) on this platform.
I also ensure the courses are delivered with perfect Audio/Video Quality by technical Instructors, and ensures that students queries and doubts are addressed by technical instructors with priority.
Hi, I am Ekta, a facility Manager for Csepracticals. I am responsible for the maintenance and upkeep of an organization’s infrastructure, ensuring that they meet legal requirements and health and safety standards.
I ensure that the facility is operating as it should on a daily basis by completing daily inspections and conducting proactive and reactive maintenance.