There’s been a lot of talk recently about what network engineers should learn to stay relevant. While the field is rapidly changing, I’m going to suggest that one of the most important areas we as network engineers can focus on is Linux. My reasons for this are two-fold. First off, it’s becoming more and more apparent that most network operating systems are based on some variation of Linux. Different vendors offer varying degrees of access to the underlying Linux operating system with the trend being to give the user more and more access into system internals.
Secondly, we can’t ignore the proliferation of Linux-based projects such as OpenStack, Docker, and Kubernetes and the impact they are having in the IT space. Having the ability to effectively troubleshoot basic Linux networking constructs is quickly becoming a must-have.
Historically, most network engineers have been focused on the CLI. The reasoning for this was simple, it was our only option. The CLI came with its own set of problems. Using the CLI for a given vendor meant learning that vendor’s unique syntax. This meant that being able to configure a Cisco switch didn’t imply I could configure a Juniper switch. If we consider that most network switches are built off of a Linux base, and provide similar functionality, the CLI becomes an abstraction of the underlying Linux system. While I think this is a fair generalization, it’s also fair to say that most vendors don’t run a completely vanilla version of Linux or the Linux kernel.
Despite modifications, having access to the native Linux shell affords us some significant wins. Tools and applications that were once reserved for the server world become available. Packet analysis can be done on box with tools like TCPDUMP. Network switches can be managed more effectively from a policy level with automation and orchestration tools like Puppet and Chef. Having the ability to access the native Linux operating system gives us great flexibility and opens the door to many new possibilities.
Another area of Linux we should focus on is the Linux networking stack. At first glance, the networking configuration of a single Linux host may seem trivial. However, there are actually many robust network features inside of Linux system. Many of the top open source projects find ways to leverage these features in interesting, and sometimes complex, ways. Having an understanding of the inherent networking features in Linux is a must if you want to understand how they can be used together.
For instance, Docker is able to deliver container network isolation by leveraging network namespaces along with basic Linux interfaces and bridging. Network engineers looking to understand these open source projects should make sure they understand the Linux networking primitives that these tools leverage.
In addition to the native Linux features, there are other projects such as Open vSwitch (OVS)that seek to extend Linux networking functionality. While OVS isn’t native to Linux, it does have its own Linux kernel module and is used extensively with open source projects such as OpenStack. OVS is a prime example of how a Linux host can be extended to provide more than basic level of network attachment. It’s also a good example of the direction things are heading and the skillset that will be required to effectively work and troubleshoot Linux host networking.
So as you can see, there are a variety of reasons to learn more about Linux as a whole. But as with any new skill, the hardest part of learning is finding where to start. If you’re new to Linux as a whole, focus on getting comfortable with the command line. Learn how to get around, inspect system parameters, and make configuration changes. Once you get comfortable with the basics, start focusing on individual pieces of technology. The brilliant part of Linux is that there’s a multitude of "how to" articles on the internet that can walk you through just about anything you’re looking to do. The key here is to get hands-on experience that you can continue to build on.
Current trends are pushing the skillset of the network engineer and the server administrator closer together. On the physical network side, the ability to access the native Linux shell enables us to install tools and application once reserved for Linux servers. On the Linux server side, the days of simple host networking are quickly evaporating as more of the network logic moves down into the Linux host.
The range and scope of technologies that leverage Linux is large and growing rapidly. The deeper you dive into any technology the more likely you are to see Linux. Having a solid understanding of Linux as it relates to both basic operations and networking is a skill worth having.