In a typical network, routing is done on a hop by hop basis with each router making a forwarding decision based on the destination address of a packet. However, certain scenarios can occur that require routing based on something other than the destination. Policy based routing (PBR) can be used to modify how packets are handled by a router. This blog post will demonstrate how to perform policy based routing on Cisco IOS devices using the source address as the policy to route by.
GNS3 Problems in Fedora 25
In my first blog post, I setup a Fedora 25 machine running Fedora Server version and GNS3 for network simulation. Unfortunately, during a “dnf update” on the system GNS3 stopped working. This was possibly an issue with the version of GNS3 I was running (1.5.3) and the aiohttp python library. I did see that GNS version 2.1 was supposed to fix the aiohttp library issue (this post), but it was only available on the Fedora 26 repositories. Upgrading from Fedora 25 to 26 is simple, as detailed by this Fedora Magaizne article. In short, all you need to do is run the following commands:
In a previous blog post I showed how to utilize Python to create a script that will generate network configurations from templates utilizing Jinja2. While the solution did work, creating scripts from scratch using a programming language can be a daunting task for network engineers. Luckily for us, there are already tools in place that we can leverage to do the heavy lifting for us. Today we will look at Ansible to generate network device configurations from templates.
Git is one of the most popular version control systems out today. With network automation and scripting becoming more and more popular, there needs to be a way to store and track changes made to scripts and configuration files. Not only will Git allow you to do that, but it can also help collaborate with colleagues (via a private Git system) or with the rest of the world (GitHub). GitHub is a site that you can go to and upload your own creations, as well as browse through the work of others. GitHub is built on Git. Let’s go ahead and dive right into the world of Git and GitHub. First, I will upload the code I created in my last post, and after that I will download some code written by Ivan Pepelnjak and shared on his GitHub page.
Network automation and programmability is one of the hot topics in networking today. It is one area that I want to focus on this year and become very familiar with. One of the best resources that I found was the book “Network Programmability and Automation, 1st Edition” by Jason Edelman, Scott Lowe, and Matt Oswalt. Although it is only available in a pre-release (incomplete) version, if you have a Safari Books subscription I highly recommend checking it out. This book not only is extremely easy to ready, but it gives the high level ideas and theory that I feel is desperately needed for us network engineers. This whole programming idea is foreign to a lot of us, and just jumping right into coding can be a very daunting and intimidating task. This book is what gave me the clarity to feel confident enough to dive into automation.
In this blog post I will utilize a code example from the book that will allow you to automate network configuration templates. We will be using Python, Jinja2, and YAML. It is easy, low hanging fruit that will allow you to get your feet wet, and at the same time actually put this whole progamming and automation to practical use that every engineer can relate to.
Learning and mastering the fundamentals are key to becoming a successful network engineer. In this blog post, I will be showing how ARP works. ARP is one of the fundamental protocols when dealing with today’s networks. While ARP itself works automatically and without any configuration, knowing how it works will help you really understand how traffic flows through the network. Before we go into the technical details, we first need to know why ARP is even required.
UPDATE (1 Dec 2017): This post utilized Fedora 25. There are some issues in GNS3 that are fixed in version 2.1 which is available on Fedora 26. I would recommend using this guide, but installing Fedora 26. There is also an issue with dynamips on Fedora 26, and I wrote a blog post on how to fix the issue here.
A home lab can be one of the most important tools for a network engineer. It can be used to study for certifications, test designs or ideas, and learn new technologies. In years past most network engineer’s home labs would consist of physical routers, switches, and firewalls. With the exponential growth of virtualization, a network engineer’s home lab can be converted into a single physical server that costs far less than having the physical equipment. This blog post will detail the home lab setup that I have created for my own personal use. Most of my blog posts will be using this setup, so if you are interested in recreating what I have done, this blog post will run through all the steps to set up your own home server, or at least show you the tools that I am working with. This is just the basic setup, and any pieces of software or configuration that I add-on will be documented in later blog posts. Continue reading “Network Engineer’s Home Lab”