HOMEVIDEOSCOURSESSTUDENTSSPONSORSDONATIONSEVENTSTUTORIALSLINKSNEWSCONTACT


VIDEOS 》 Quagga Routing Suite - OSPF, RIP, RIPng BGP4 | GNU Zebra fork | ZebOS

Before Quagga - brief history:

GNU Zebra (Zebra.org website) is one of the oldest open-source Dynamic Routing Protocol suite stack developed by Kunihiro Ishiguro. Zebra supports features such as RIPv1/RIPv2 for IPv4 and RIPng for IPv6, OSPFv2 and OSPFv3, BGPv4+ and so on. Zebra is an active project for many years.

In the meantime, Kunihiro Ishiguro along with other partner(s)(mainly a venture capitalist Yoshinari Yoshikawa) founded a company called IP Infusion and developed ZebOS stack.
ZebOS stack - Big Picture
ZebOS stack - Big Picture
Image courtesy/source: https://www.ipinfusion.com/wp-content/uploads/2016/11/zebos- ...

ZebOS is an entire proprietary suite which supports all control plane aspects of various dynamic routing protocols such as those supported by Zebra, plus it has many other features (such as ZebIC - Data Plane, ZebM - Management Plane, etc). ZebOS is marketed towards OEMs and product vendors so that they can buy ZebOS license(s), and build their own routing hardware using this framework. It is pretty much a successful business model and we an see many non-CISCO manufactured networking appliances commonly use ZebOS in it.


My exposure and hands on - both Zebra and ZebOS:

I have worked in my past few projects which included both Zebra and ZebOS stack. For couple of my clients during my tenure at TATA ELXSI, I worked on ZebOS framework which couple of their (TATA ELXSI's) clients used as a control plane framework for their product range. I worked specifically on some SNMP and CLI modules which at that time ZebOS has no support yet for few corner cases such as MPLS/VPLS stuff. And besides much before that I worked on Zebra on various aspects such as configuration, customization for a different client.

Introducing Quagga:

After many years of active support Zebra is discontinued, and sometime down the lane a new fork is created from Zebra called Quagga which is now maintained by a separate independent open-source community.


About Quagga - courtesy: Quagga open-source project website

Quagga is a routing software suite, providing implementations of OSPFv2, OSPFv3, RIP v1 and v2, RIPng and BGP-4 for Unix platforms, particularly FreeBSD, Linux, Solaris and NetBSD. Quagga is a fork of GNU Zebra which was developed by Kunihiro Ishiguro.

The Quagga architecture consists of a core daemon, zebra, which acts as an abstraction layer to the underlying Unix kernel and presents the Zserv API over a Unix or TCP stream to Quagga clients. It is these Zserv clients which typically implement a routing protocol and communicate routing updates to the zebra daemon. Existing Zserv implementations are:

  • kernel interface, static routes, zserv server
  • RIPv1/RIPv2 for IPv4 and RIPng for IPv6
  • OSPFv2 and OSPFv3
  • BGPv4+ (including address family support for multicast and IPv6)
  • IS-IS with support for IPv4 and IPv6

Quagga daemons are each configurable via a network accessible CLI (called a 'vty'). The CLI follows a style similar to that of other routing software. There is an additional tool included with Quagga called 'vtysh', which acts as a single cohesive front-end to all the daemons, allowing one to administer nearly all aspects of the various Quagga daemons in one place.

Refer:
Quagga open-source project website - https://www.quagga.net
Zebra.org website - http://www.zebra.org
Quagga Documentation - https://www.quagga.net/docs/quagga.html
Quagga Download - http://download.savannah.gnu.org/releases/quagga/
-----IP Infusion - https://www.ipinfusion.com
IP Infusion ZebOS Network Stack - https://www.ipinfusion.com/products/zebos/



Suggested Topics:


Video Episodes :: Linux (user-space), Systems Architecture and Networking

Linux (user-space) RAW Socket Programming ↗
Thursday' 19-Oct-2023

Data Visualization and Analytics ↗
Saturday' 13-Mar-2021

Online Course - Linux CLI Scripting ↗
Saturday' 13-Mar-2021

IPUtils - Source Code Walk ↗
Saturday' 13-Mar-2021

Quagga Routing Suite - OSPF, RIP, RIPng BGP4 | GNU Zebra fork | ZebOS ↗
Saturday' 13-Mar-2021
GNU Zebra is one of the oldest open-source Dynamic Routing Protocol suite stack developed by Kunihiro Ishiguro. Zebra supports features such as RIPv1/RIPv2 for IPv4 and RIPng for IPv6, OSPFv2 and OSPFv3, BGPv4+ and so on. Zebra is an active project for many years. After many years of active support Zebra is discontinued, and sometime down the lane a new fork is created from Zebra called Quagga which is now maintained by a separate independent open-source community. Quagga is a routing software suite, providing implementations of OSPFv2, OSPFv3, RIP v1 and v2, RIPng and BGP-4 for Unix platforms, particularly FreeBSD, Linux, Solaris and NetBSD. Quagga is a fork of GNU Zebra which was developed by Kunihiro Ishiguro. The Quagga architecture consists of a core daemon, zebra, which acts as an abstraction layer to the underlying Unix kernel and presents the Zserv API over a Unix or TCP stream to Quagga clients.

Online Course - Networking Protocols ↗
Saturday' 13-Mar-2021

Online Course - Linux TUN/TAP virtual network interfaces ↗
Friday' 27-Oct-2023

Oracle VM VirtualBox ↗
Saturday' 13-Mar-2021

Code Snippets ↗
Saturday' 13-Mar-2021

Inline Programming | Assembly | Scripts | php, python, shell, etc | Rust in Linux Kernel ↗
Friday' 12-May-2023
Inline programming is a technique where code statements are included directly in the text of a program, instead of being contained in separate files or modules. Inline programming can be useful for small or simple tasks, as it can eliminate the need for a separate script or function. One common example of inline programming is using JavaScripts, Php, etc in HTML documents to create dynamic content. Similarly in Linux Kernel we can find lot of instances where we can find inline programming such as inline assembly and now Rust within the Kernel source.

Wireshark Packet Capture ↗
Saturday' 13-Mar-2021

CUDA GPU Distributed Parallel Computing ↗
Saturday' 13-Mar-2021

Building my own Userspace Network Stack - Platform/OS and Hardware Independent ↗
Saturday' 13-Mar-2021

Networking and Q&A ↗
Saturday' 13-Mar-2021

libpcap Library | Linux User-space Network Stack Development ↗
Sunday' 06-Aug-2023
libpcap is a very popular user-space networking library, with which you can capture and or generate packets. libpcap is the underlying framework for many popular packet capture tools such as tcpdump, Wireshark and so on. In fact libpcap is a part of tcpdump project. But besides just using it as a packet capture tool, you can use libpcap in various applications, such as user-space based networking stack development, etc. In some cases libpcap is yet another alternative to raw-sockets and tun/tap interfaces.

CPU Performance and Benchmarks ↗
Saturday' 13-Mar-2021

Ethtool - Source Code Walk ↗
Saturday' 13-Mar-2021

Systems Architecture ↗
Saturday' 13-Mar-2021

net-tools - Source Code Walk ↗
Thursday' 19-Oct-2023

VRF - Virtual Routing and Forwarding ↗
Sunday' 29-Oct-2023

NAS (Network Attached Storage) Operating Systems - FreeNAS, OpenZFS, etc ↗
Saturday' 13-Mar-2021

Porting Sample libpcap C code to Raw Sockets | User-space Network Stack Framework ↗
Monday' 04-Sep-2023
Here is my multi-episode video series where I demonstrate how you can port the my libpcap sample code, discussed in the earlier episode to raw-socket. This code should further help you to design and architect your own user-space Network stack on top of this fundamental framework.

Join The Linux Channel :: Facebook Group ↗

Visit The Linux Channel :: on Youtube ↗


💗 Help shape the future: Sponsor/Donate


Recommended Topics:
Featured Video:
Watch on Youtube - [3873//0] x25b Rockchip ROC-RK3566-PC from Firefly | OpenWRT | Part 1 | The Linux Channel ↗

libpcap Library | Linux User-space Network Stack Development ↗
Sunday' 06-Aug-2023
libpcap is a very popular user-space networking library, with which you can capture and or generate packets. libpcap is the underlying framework for many popular packet capture tools such as tcpdump, Wireshark and so on. In fact libpcap is a part of tcpdump project. But besides just using it as a packet capture tool, you can use libpcap in various applications, such as user-space based networking stack development, etc. In some cases libpcap is yet another alternative to raw-sockets and tun/tap interfaces.

The Linux Channel :: Sponsors ↗
Monday' 30-May-2022
Here is a list of all The Linux Channel sponsors/donors (individual/companies).

Inline Programming | Assembly | Scripts | php, python, shell, etc | Rust in Linux Kernel ↗
Friday' 12-May-2023
Inline programming is a technique where code statements are included directly in the text of a program, instead of being contained in separate files or modules. Inline programming can be useful for small or simple tasks, as it can eliminate the need for a separate script or function. One common example of inline programming is using JavaScripts, Php, etc in HTML documents to create dynamic content. Similarly in Linux Kernel we can find lot of instances where we can find inline programming such as inline assembly and now Rust within the Kernel source.

Linux Kernel /sysfs Interface ↗
Saturday' 14-May-2022
/sysfs is one of the most popular kernel to user-space interface which you can leverage to add an interface to your Kernel code such as Kernel modules, Kernel Device Drivers, etc. Although personally I prefer /proc interface than other alternatives such as /sysfs, ioctl() and so on for my personal Kernel modules/stack. So here is my detailed multi-episode Youtube video series on /sysfs Interface.

Rockchip ROC-RK3566-PC from Firefly | OpenWRT ↗
Thursday' 19-Oct-2023
Here is my multi-episode video series on evaluation of Rockchip ROC-RK3566-PC from Firefly with stock OpenWRT firmware.

What is purpose of Kernel Development - Example SMOAD Networks SDWAN Orchestrator Firewall Kernel Engine ↗
Monday' 18-Jul-2022
Often aspiring students may have this question, that what is the purpose of Linux Kernel Development. Since Linux Kernel is very mature and it has almost everything one would need. Usually, we need custom kernel development in the case of any new driver development for new upcoming hardware. And this happens on and on. But at times we may also come across few features/modules/components which are already provided by the Linux Kernel which are not adequate or atleast not the way we exactly intended to use. So, this is the real-world example, sometimes no matter what Linux Kernel provides as a part of stock Kernel/OS features, sometimes we have to write our own custom kernel stack or module(s) which can specifically cater our exact needs.

Linux Kernel Driver Device Trees ↗
Tuesday' 17-Jan-2023
The Linux kernel is the backbone of the Linux operating system. A device tree is a hierarchical tree structure that describes the various devices that are present in a system, including their properties and relationships to one another. The device tree is used by the Linux kernel to identify and initialize the different devices on a system, and to provide a consistent interface for interacting with them.

Linux Kernel vs User-space - Library APIs - Linux Kernel Programming ↗
Friday' 27-Oct-2023
One of the important aspects a beginner who is into Linux Kernel space systems software development has to understand is that unlike user-space C/C++ programming, where you can freely include any library APIs via respective #include files (which are dynamically linked during run-time via those /lib .so files), in the case of Kernel space programming, these library APIs are written within the Kernel source itself. These are the fundamental APIs which we commonly use, such as memcpy(), memcmp(), strlen(), strcpy(), strcpy() and so on. So here is my detailed Youtube video episode on the same with live demo, walk-through and examples.

Porting Sample libpcap C code to Raw Sockets | User-space Network Stack Framework ↗
Monday' 04-Sep-2023
Here is my multi-episode video series where I demonstrate how you can port the my libpcap sample code, discussed in the earlier episode to raw-socket. This code should further help you to design and architect your own user-space Network stack on top of this fundamental framework.

Roadmap - How to become Systems Software Developer ↗
Friday' 13-May-2022
When you are at the beginning of your career or a student, and aspire to become a software developer, one of the avenues to choose is to become a hard-core Systems Software Developer. However it is easier said than done, since there are many aspects to it as you explore further. As a part of systems developer, you can get into core kernel space developer, kernel device drivers developer, embedded developer and get into things like board bring-up, porting, etc, or can become a user-space systems programmer, and so on. So here is my detailed multi-episode Youtube video series on Roadmap - How to become Systems Software Developer.


Trending Video:
Watch on Youtube - [506//0] 189 ip_send_check() API Example and sample demo - Linux Kernel struct iphdr data-structure - part3 ↗

Arduino UNO - RO Water Purifier Controller ↗
Saturday' 13-Mar-2021
Here is a Youtube VLOG of my DIY RO Water Purifier Controller done via Arduino UNO. I want the Arduino UNO to control the RO pump, so that it pumps for a specific duration and stops automatically. This is done via Opto-isolated 4 Channel 5V 10A Relay Board meant for Arduino UNO, Raspberry Pi or similar SoC boards which offers GPIO pins. To this relay I have connected the RO water purifier booster pump which works at 24V DC connected via 220V AC to 24V DC power supply adaptar. I have also connected a small active 5V buzzer to notify the progress and completion as it fills the tank/canister.



Recommended Video:
Watch on Youtube - [393//0] x262 Kernel Crashes | FAQ | while working on sk_buff data-structure | Kernel Network Programming ↗