How Unix Made Me a Better Network Engineer

I’ve had two main areas of interest in my IT career. Professionally, I’ve been a network guy. Designing, building, and supporting IP networks is what pays my bills. On the other side, I’m a Unix geek. Building, tinkering, and hacking code on Unix systems and related open source software has always been fun and challenging for me. Recently I was reflecting on my career and realized that my Unix and open source experience has played a big role in my career as a network engineer. Here’s some of the ways I believe network engineers can benefit from Unix experience.

Instantly familiar with Unix servers – In the larger, more mature environments there’s typically Unix systems that exist to support network operations. From trusted hosts/jump boxes to syslog and RADIUS/TACACS servers, Unix is typically the platform of choice. When coming into an environment like this, where others would face a learning curve in dealing with these systems, network engineers with Unix knowledge are able to start using them right away with little effort. Additionally, being familiar with daemons such as syslogd, tftpd, radiusd, etc, makes it really easy to start using these tools in support of the network. Whereas other network engineers likely stop learning about the Unix systems once they’ve learned how to login and do essential tasks only, a Unix background allows the engineer to swiftly navigate through the system and leverage the tools and services that are there to do a better job of maintaining the network.

Leg up in understanding Unix-based network operating systems – From Arista’s EOS to Juniper’s Junos, lots of network operating systems can trace their roots back to open source Unix. Sure they all have their own CLI shell that mostly hides the hard, Unix-y center, but underneath it’s still there. Being able to understand process management, memory management, file system mount points, heck, even the root user and what it’s capable of gives a network engineer an immediate advantage on these OSes even though they might not have seen them before.

Scripting and automation – Part of Unix culture is being able to create scripts and bits of code to help administer a system or automate a repetitive task. Those ideals are really valuable in the networking world too. Having the ability to create scripts which help manage network devices makes a network engineer more efficient and all but eliminates the likelihood of human error. Knowledge of PERL, shell scripts and even PHP enables the creation of tools for doing bulk config changes, mass backups, and automated reporting. This enables an engineer to concentrate on high-value tasks such as building out the network rather than tedious, low-value (but still important!) tasks.

Hands-on experience with ports, packets, and protocols – Considering that Unix is a very network-centric operating system, it’s very hard to learn Unix and not pick up network knowledge at the same time. Learning what a TCP/UDP port is, understanding how sockets are opened and closed, even something very simple like memorizing the TCP/UDP port number of common services (Pick a random port number and ask a Unix person what it’s used for. I bet they know the answer) are all byproducts of working on Unix systems.

Most Unix systems have at least one network sniffer installed (tcpdump, Wireshark, etc) which makes them easy to play with and learn about. They also give you experience troubleshooting bits on the wire and help to visualize how multilayer network models (like the OSI model) work in practice. Sniffer experience also helps drive home the theory of how certain protocols work such as TCP with its 3-way handshake; nothing breeds understanding like seeing it in action, or better yet, troubleshooting it. Having quick access to a sniffer on a Unix system makes it really effortless to pick it up and start using.

Most Unix systems also come with some sort of firewall software. Cutting your teeth on these firewalls can gain you valuable experience and knowledge in understanding traffic flows, writing firewall policies, and further understanding of the TCP 3-way handshake, windowing, and sequence numbers. That knowledge will help you in both managing enterprise firewall systems and talking with security/firewall teams in a language that they understand.

Lastly, since Unix boxes are able to run just about every network service under the sun — ftp, smtp, dns, dhcp, tftp, www, ntp, snmp, various databases, and so on — it’s convenient (and dare I say fun??) to play with these tools and gain experience and knowledge of these services and application layer protocols. This experience is invaluable when it comes to troubleshooting issues in a production environment because you’re able to understand how the service works right from the lowest network layers all the way up through the stack to the application layer. This understanding combined with firewall experience can be a killer combination when it comes to provisioning and troubleshooting.

Professional advancement – So far I’ve talked only about the technical and knowledge benefits of being a network engineer and Unix geek but there’s a whole other aspect: career advancement. Unix experience allows you to set yourself apart from others by solving problems they can not, bringing value to your team and department by way of writing scripts and tools, and demonstrating deep understanding of ports, packets, and protocols. By standing out from the crowd you make youself more valuable to your employer which increases your job security and also your chances of promotions, raises, etc. WIN!

Summary – Although I didn’t realize any of these things at the time they were happening, I can see it now looking back. Unix has made me a better network engineer and I believe all network engineers would benefit from a moderate level of Unix experience. These two seemingly unrelated areas of skill and knowledge are actually more related than they first appear and can be mutually beneficial to those that claim both as part of their overall skill set.

27 thoughts on “How Unix Made Me a Better Network Engineer”

  1. Totally agree.

    I’m a UNIX/Linux guy more than a networking guy, but I know Linux made me a better system engineer as well.
    It lets you understand how computers communicate with each other, the client-server model, how the operating system works, security, high availability, databases and many more…

  2. Nice article Joel! UNIX made me understand OSI layer much better than what I learned in OSI model from school days! It also helped me to learn hypervisors (especially VMKernel in ESX) quicker.

  3. I tell a similar story from time to time, because I think being a “deep generalist” is a worthwhile pursuit for any network engineer or server admin. Basically back in the day (2000-ish) I lost my driver’s license in college due to being a terrible driver in my teens. All the sudden I had a lot of free time to myself. I liked reading random things about network security but I didn’t actually know anything about it. I’d also been hearing a lot about this crazy “unix” thing my nerd friends would go on and on about. I could never learn it because I’d get “now what?” syndrome any time I installed a distro. I decided to make a push and learn more about both. I pulled up a bunch of info on using FreeBSD as a firewall and hid in my cave for a week or so. I came out of it knowing lots about BSD and *nix in general, networking, and network security. Fast forward a decade or so: I’ve been in networking since 2005, and I have a career as a network security engineer as of 2010. And my unix knowledge has been key. For the record, my degree is in physics. on paper, before I got my CCNA, I’d never studied computers or networking. Tinkering is an awesome start, and this is one of the last fields you can be a “self made man” and carve your own career path.

  4. I have just completed a cisco certification and now want to learn unix because of all the amazing reasons you have mentioned. What do you recommend as a starting point?
    Be aware that i am a complete novice when it comes to Unix.

    1. Hi Di,

      How were you able complete your Cisco certification? I bet you did a lot of reading and probably had hands-on time as well. Take the same approach if you want to learn Unix. There are many books available as well as blogs and online articles that can get you going on Unix. And since Linux and the BSDs are freely available, getting hands-on time is pretty easy too.

      Even though I’m very partial to the BSD Unicies, the reality is that if you want to build skills that are useful in the workplace today, you probably want to learn one or more of the popular Linux distributions. There’s so many things that are built on Linux today (ESXi, network operating systems, and so on) that knowing Linux will give you an edge when it comes to those things. As well, when companies deploy web servers or DB servers on Unix, they *typically* do it on Linux today.

      On the other hand, if you don’t care much about being “corporate” and just want raw Unix experience, give OpenBSD or FreeBSD a whirl.

      Good luck!

Leave a Reply

