We at Cumulus Networks firmly believe that Linux networking is awesome, as it provides a high function, extensible platform for networking. Linux has always been the platform of choice for decades; every system today starts with Linux as its base and builds around it.
With the advent of the virtual machine and container networking, the constructs that used to be relegated to physical switches are applicable on servers, we thrive on the fact that Cumulus Linux networking IS Linux networking.
So, what does it take to bring that the greatest and latest in Linux to you? It takes two things really:
- The latest Linux kernel, with all the new features and facilities.
- The latest system libraries that enable those features for applications and the latest versions of the huge ecosystem of Linux software packages.
Kernel at the Core
The kernel is the center of the Linux operating system. We work closely with the Linux kernel community to add new networking features or extend Linux networking APIs for NOSes. With Cumulus Linux 3.0, we started with Linux kernel version 4.1 and networking patches from even more recent kernels. This provides networking applications with the latest Linux APIs, facilities and infrastructure.
Here are the most notable upgrades in the Cumulus Linux 3.0 kernel:
- Virtual routing and forwarding (VRF)
- Upgrades to bond/bridge/VXLAN and other networking drivers
- Netlink APIs for networking and other kernel subsystems that enable you to:
- Monitor bond interface state changes
- Configure and monitor most bridge attributes
- ACPI for ARM and updates to enable APD [https://cumulusnetworks.com/partners/apd/]
- New switch port driver and platform drivers
- 100G infrastructure support (ethtool and drivers)
- Linux netfilter subsystem upgrades
- Lightweight tunneling infrastructure and the MPLS driver for MPLS support
- B-TRee FileSystem (BTRFS) for snapshot and rollback
- Better container support with upgrades in various subsystems: file systems, namespaces, cgroups, netfilter, aufs, btrfs, device mapper and other kernel components
Linux Distribution around the kernel
Cumulus Linux is derived from Debian, giving our customers a broad selection of applications. We start with a stable Debian distribution and pump it up by adding a few new packages and upgrading some of the existing networking packages to provide advance functionality, higher performance and bug fixes to our customers. With Cumulus Linux 3.0, we rebased from Wheezy to the latest Debian stable release, Jessie.
The move to Jessie meant porting all our apps to the latest application runtime software and libraries (latest versions of GNU C library, newer versions of python, newer kernel api and so on). We also moved some of our networking packages directly to their upstream versions to which we’ve been contributing for bleeding edge networking features and fixes.
Jessie brings you:
- A new, modern Linux system and service manager, systemd
- Access to much more Linux ecosystem and infrastructure software
- Upgrades to existing Linux infrastructure, libraries, system and networking packages
- Most notably newer versions of GNU C library (version 2.19) and python3 (version 3.4)
- Upgrades in various subsystems to support newer container engines
- Eg: https://docs.docker.com/engine/installation/linux/debian/
For more details of what’s new in upstream Jessie, read the Debian documentation.
In the process of moving to Jessie, we got a lot more in some of our favourite networking apps: Quagga, ifupdown2 and switchd received vrf support and bug-fixes and cleanups . We moved iproute2 to the latest upstream version for netlink based configuration and monitoring for bonds, bridges, vxlan and vrfs; iproute2 diag tools, like ss, include the latest in network diagnostics. Rsyslog saw a major performance boost and lot of bug fixes. Tried and true networking daemons snmpd and lldpd both benefit by moving from polling to asynchronous netlink protocol. Sflow moved to the new generic nflog kernel packet filter logging infrastructure, and our buddy ethtool added 100G support!
A Bit More About Systemd
With systemd coming in Jessie, we were also ready for a new modern revolutionary init system. Changing an init system is never an easy task but fortunately it happens once in a lifetime!. For starters, systemd is the current, modern Linux init system of choice. An init system’s primary purpose is initializing, managing and tracking system services (in other words, your system and networking daemons and applications that need to be started at boot and monitored while the system is up). It starts daemons and applications that are needed to make the operating system work. It is one of the primary pieces of software on a Unix/Linux system.
Most major distributions today use systemd and most modern applications and services are systemd aware.
systemd brings you these features:
- Parallelization, service monitoring capabilities
- A single place to manage and monitor your services
- Easily writable, extensible and parseable service files suitable for manipulation with enterprise management tools
- Service files are compatible between distributions
In Cumulus Linux 3.0, all services are systemd ready! Get started with the systemctl command as you explore your new init system.
Download and Get Started
One of the best ways to get started with deploying, scripting, monitoring, developing and anything else you love doing on your new Linux OS is to try everything out with Cumulus VX, a virtual machine version of Cumulus Linux, here you get access to all of the features of 3.0 with the ability build single instance or full topologies all on your laptop. I look forward to hearing about your experience!