What does it take to Implement a Network Protocol?
Routing Protocols are the heart of Networking. They power the Data Center Switching, Internet, clouds, and anything which involves data flow across two machines interconnected directly or indirectly.
There are several routing protocols that are in existence — each one id developed to address the specific routing requirement. The way the routing protocols internally work — they are classified into two wide categories popularly known as — Distance Vector and Link State Routing Protocol.
Distance Vector Routing Protocol includes — EGP( Exterior Gateway Protocol ) and BGP ( Border Gateway Protocol ). It is BGP that essentially powers up the entire internet. Link State Routing Protocol, on the other hand, includes — OSPF ( Open Shortest Path First ), and ISIS ( Intermediate-System to Intermediate-System ), RIP (Routing Information Protocol ).
So, what is the end goal of a typical Routing Protocol? Why are they required? Where do they position in the market today?
Routing protocol runs on Routers. Routing protocols help routers to exchange information among themselves in a way that each router would end up building the routing table which is consistent and keep changing as the network topology changes ( due to link failures etc ). Routing protocols, once deployed, don't need any human interference in keeping the traffic flow from several sources to destinations along the most optimum path in the network. Without routing protocol in place, the admin would need to configure the routes manually in all router machines in the network which is seemingly next to impossible task to do if the network grows just beyond several 10s of machines. Hence, Routing Protocols are the automated solution to this problem. Routing protocol keeps on exchanging several pieces of information among routers in a way that each router reacts to network topology change of any kind, accidental or by admin config, such that routing tables of all routers stay updated and consistent all the time.
These protocols are over 2 decades old, yet they continue in demand in the industry. With the explosion of the internet and Network equipment connected to the internet, Routing protocols need to be continuously enhanced to meet the ever-increasing scale requirements of the network. Moreover, Customer is growing smart and want their network up and running 24x7, new features to Routing Protocol are being added gradually by several companies to meet the specific requirements of the customers.
Routing Protocol is highly standardized, IETF ( Internet Engineering Task Force ) ensures that there must be no ambiguity in understanding the routing protocol behavior and inter-operability is maintained across devices of different vendors. RFC ( Request for Comment ) are special official documents that are released/revised from time to time which define exactly how the behavior of a Routing protocol should be. Companies implementing routing protocol have to ensure that implementation compliance fully with RFCs of that protocol.
Companies maintain a dedicated team of engineers as per the protocol complexity and size. For example, BGP would have a separate team of 7–10 members responsible for the development and maintenance of BGP protocol alone. A typical protocol such as BGP is a non-trivial piece of software that may span across a million lines of codes approximately. As of today, all core routing protocols are implemented and supported in C by telecom companies. The reason is — Speed, and interaction with the underlying Hardware ( Application Specific Integrated Circuits ASICS ) is made native, and the design of the routing protocol is non-object-oriented in nature. They usually cannot be modeled into the classes-objects paradigm, hence non-OOP language such as C is still the best choice by the telecom industry for core network component development.
The best thing about Telecom/Network Dev domain is that — their tech stack does not change that frequently, like the front-end framework/tech stack changes every 4–5 years. Cisco/Junipers and other telecom giants have been continuously developing their networking equipment using more or less the same tech stack over decades from the beginning and just one programming language — C. It is essentially the Network Operating System Development where tech stack change is not feasible after the project is growing to a certain point. You will probably never see the Linux kernel fully reimplemented in Rust in your lifetime.
How to become a network protocol dev/test engineer?
In my 10 years of experience in a routing development domain, I have worked in 4–5 protocols so far — IGMP/MLD ( L2 Multicast ) , PIM ( L3 Multicast ), ISIS ( L3 unicast ), Segment Routing and Traffic Engineering ( SRTE ). It does not require much effort to start a career in the Networking Core Development Domain. In my case, I didn't choose this career path, but the career path chose me ( Campus placements ).
Here I am listing the pre-requisites required to become and grow as a Network Core dev engineer :
Where can I practice to become a Network Protocol Developer, is there any course that teaches not just theory about Network Protocols, but actually how to implement one from scratch?
Ohh yes, CSEPracticals exactly has the right set of courses to address this query. Though theoretical knowledge of network protocol can be obtained from several resources present all over the internet — books, Online Courses, online training, and labs are also available easily, what was missing is learning the Core-development of networking protocols. To date, I have not seen the course which exactly addresses this exclusive requirement of the developers. Having said that, CSEPracticals offer the course on Routing Protocol Development from start to finish, and from absolute scratch. The protocol chosen is IGP ( Interior Gateway Protocol ) as a case-study example. Need not worry, we cover the required theory first before we begin the implementation.
Links
The Course is here , available for as cheap as just $10.
Highlighting the Table of Contents of the Course here :
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:
▂ ▄ ▅ ▆ ▇ █ █ ▇ ▆ ▅ ▄ ▂ ▁▁ ▂ ▄ ▅ ▆ ▇ █ █ ▇ ▆
Recommended by LinkedIn
Want to get access to our Full Courses?
website www.csepracticals.com, We offer 20 Courses on System Programming, Operating Systems, Network Programming, and Development Projects.
Join us :
Telegram Grp (600+ System Programming Engineers ): https://t.me/telecsepracticals
Sign up with us here
For our Course list, visit www.csepracticals.com
1. Part A — Multithreading & Thread Synchronization in C (14h 11m)
2. Part B (ADV) Multithreading Design Patterns in C/C++ (8h 40m)
3. Part A — Networking Projects — Implement TCP/IP Stack in C (14h 20m)
4. Part B — Networking Projects — Implement TCP/IP Stack in C (8h 12m)
5. Operating System Project — Develop Heap Memory Manager in C (7h 22m)
6. Linux Kernel Programming — IPC b/w Userspace and KernelSpace (2h 48m)
7. Coding Project — Programming Finite State Machines (2h 0m)
8. Master Class : TCP/IP Mechanics from Scratch to Expert (9h 3m)
9. System C Project — Write a Garbage Collector from Scratch (3h 35m)
10. Build Remote Procedure Calls (RPC) — from scratch in C (6h 15m)
11. Linux System Programming Techniques & Concepts (14h 0m)
12. Linux Inter-Process Communication (IPC) from Scratch in C (8h 41m)
13. Network Concepts and Programming from Scratch — Academic LvL (22h 59m)
14. Integrate CLI interface to your C/C++ Projects Quickly (1h 20m)
15. System C/C++ Course on Linux Timers Implementation & Design (3h 48m)
16. Part A — Networking Project — Protocol Development from Scratch (14h 20m)
17. Part B — Networking Project — Protocol Development from Scratch (7h 54m)
18. Asynchronous Programming Design Patterns — C/C++ (5h 11m)
19. Advanced TCP/IP Socket Programming in C/C++ ( Posix ) (4h 30m)
20. Network Security — Implement L3 Routing Table and Access Control List (1h 48m)