Author Archives: ddib
Author Archives: ddib
This post is the first one going through the Kirk Byers Python for Network Engineers class.
In the first class Kirk shows how to pipe data into Python by using the module fileinput with the following code(modified for Python3):
import fileinput for line in fileinput.input(): print(line.split("."))
I’ll show what this script outputs and then we’ll look at the code.
daniel@daniel-iperf3:~/python/Week1$ echo "192.168.1.1" | python3 stdin.py ['192', '168', '1', '1\n']
How did we get data into Python? We used “echo” to send data to stdin (standard input). The function “fileinput.input()” can take either files as arguments or if no files are listed it will read from stdin.
It’s possible to use “fileinput” to read from several files and print out the content. We used the following code:
import fileinput for line in fileinput.input():
Then we print out the text:
daniel@daniel-iperf3:~/python/Week1$ python3 stdin.py 1.txt 2.txt 1 2 3 4 5 6 7 8 9 10 daniel@daniel-iperf3:~/python/Week1$ cat 1.txt 1 2 3 4 5 daniel@daniel-iperf3:~/python/Week1$ cat 2.txt 6 7 8 9 10
Here we printed the contents of two files by sending them to “fileinput” We can see what Continue reading
As you have seen lately on the blog I’ve been fiddling around in Python. One of the best resources out there to learn Python for Network Engineers is the free e-mail course by Kirk Byers. Kirk is a CCIE emeritus with extensive knowledge and experience of Python. He offers both free and paid courses over at his site. Kirk is very active in the community and the guy behind Netmiko and the IOS driver in NAPALM. He’s also an active member of the Network to Code Slack group. I recommend that you check out Kirk’s stuff!
I plan to go through all of his exercices and write about them on my blog. That will help me in my learning and hopefully it can help you as well. Kirk publishes the answers to the exercises at Github but my plan is to be a bit more verbose and explain the code. I plan to write my posts here and also put up my answers on Github to get some exposure to using Git. My code will likely not be elegant, the most effective or good looking but hopefully we can learn from each other as I put these posts up. I Continue reading
In my previous post on Argparse I had some issues with validating values and printing help output for values that are out of range. I got some great suggestions from my smart colleagues Mikkel Troest and Patrick Ogenstad who are far more advanced in their Python knowledge.
We started out with the following code in the last post:
#!/usr/bin/env python # import Argparse import argparse # import sys import sys # create main function def main(): # create ArgumentParser object parser = argparse.ArgumentParser(description="Daniel's ping script v0.1") # add arguments parser.add_argument("-version", "--version", action="version", version="%(prog)s 0.1") parser.add_argument("-c", "--c" , help="Number of packets", action="store", type=int, choices=xrange(1, 1000), metavar=("(1-1000)")) parser.add_argument("-s", "--s" , help="packetsize in bytes", action="store", type=int, choices=xrange(56, 1500), metavar=("(56-1500)")) parser.add_argument("-t", "--t" , help="ttl for icmp packets", action="store", type=int, choices=xrange(1, 255), metavar=("(1-255)")) parser.add_argument("-w", "--w" , help="timeout in seconds", action="store", type=int, choices=xrange(1, 10), metavar=("(1-10)")) parser.add_argument("-ip", "--ip", help="ip address", action="store", required=True) # parse command-line arguments parser.parse_args() if __name__ == "__main__" and len(sys.argv) < 2: print "use the -h flag for help on this script" else: main()
First let’s clean up this a bit since the length of the lines are more than 80 characters Continue reading
I’m learning the basics of Python and these are my publically available notes for my reference. Hopefully they are useful for my readers as well.
The For loop in Python is used to iterate through different objects such as lists or dictionaries. The power of the For loop is that it can run as many times as needed and then stop without having to define the number of times it should run. It can also be used to run n number of times where we define n ourselves.
I’ll give some examples related to networking to make it more interesting. Let’s say that we want to create a lot of loopbacks so that we can advertise routes in BGP to play around with prefix-lists. We will create 10 loopbacks. This means that the For loop should run 10 times, we can use the range command for this. The iterator will start at 0 and have a stepping by 1 by default which means that our first loopback will be loopback0 and our first network will be 10.0.0.1/32.
for loopback in range(10): print "interface loopback{}".format(loopback) print "ip address 10.0.{}.1 255.255.255.255".format(loopback)
This post was written to help CCDE candidates get into the right mindset but is very applicable to network architects and network engineers in general.
We humans tend to have a lot of bias. Sometimes it’s based on experience but often it’s based on how pure a technology is or a bad implementation of a protocol. Often we don’t reevaluate our opinion so if we had a STP incident in the past, STP becomes inherently bad for all future.
Preparing for the CCDE from a technology standpoint is relatively easy compared to getting into the right mindset and getting enough exposure to network designs. Don’t get me wrong, it’s a technically difficult exam but the number of candidates taking the exam that have the right knowledge level of technology are far higher than the number of people actually passing the exam. I have seen this time and time again.
Because we have this bias we immediately base our feeling and design based on our feelings or previous experience without taking the business requirements and technical constraints into consideration.Yes, maybe MPLS was the best answer to the question from a technical standpoint but maybe there was a constraint that only Continue reading
I’m fiddling around a bit with Python. I’m planning to write a little script that pings a host or hosts and logs it to a file. Should be pretty basic but it’s good practice for me to take user input, read from a file, write to a file and so on. I wanted to support having arguments in the script to do things like a continuous ping or ping with x number of packets and then stop. To help the user pick the arguments I planned to do a little help text that printed out the arguments. Something like:
# Import sys import sys # Function for printing help text def help_text(): print "Daniel's awesome ping script." print "\n" print "-c The number of packets that should be sent(integer)" print "-t Timeout in seconds to wait for ICMP Echo Reply" print "-i Run continuous ping" # Check if user has input any options otherwise print help text if len(sys.argv) < 2: help_text()
The problem with doing this manually is that you have to parse the arguments and build the logic yourself. For example the script should not allow someone to input both -c and -i since those arguments should be mutually Continue reading
Happy new year to all the readers of the blog!
I’ve been lacking the time to update the blog lately which I’m sorry for. Work is keeping me busy with some interesting projects. I hope to get a bit more frequent with the updates and maybe do smaller posts than my traditional larger ones.
For 2017 I’m going to focus on a few different areas to stay sharp and broaden my skillset a bit.
Wireless – I haven’t worked much with wireless and I’m going to upskill in this area to be able to understand the wireless requirements better when designing enterprise networks.
Datacenter – There are a lot of DC projects right now. Many companies are at the end of their Catalyst 6500 lifecycle and are looking for new solutions in the datacenter. Cisco’s Application Centric Infrastructure (ACI) is a hot topic right now. I’ll probably be working more on DC projects and ACI in 2017.
Python – In my role as a network architect I don’t really have the need to do a lot of programming but I want to keep the brain sharp and know the basics of Python. I can use it to automate boring things Continue reading
I often get asked for career advice and the value of certifications. We live in a rapid pace world and people often look for the shortest path to success. They are trying to use the Dijkstra algorithm on their careers
This post is not a “People with degrees are better than others” post and is written from my perspective as a network architect. I do believe though that the skills I will describe here are applicable to all networking/IT jobs and will be even more relevant further down the road. Here is some of the value I see in a degree based on that you get a degree in a relevant discipline at a good university and that you have the willingness to learn.
Consume information – Working in IT means you need to consume a lot of information. For topics that you aren’t familiar with you need to be able to know where to look for information, what to do with the information and be able to draw a conclusion based on this information. IT is moving at a more rapid pace than ever and people that can’t consume a lot of information will struggle stay relevant in the Continue reading
One of the most challenging aspects when studying for the CCDE practical is to find scenarios to practice with. It’s difficult to find a scenario that has enough background information, requirements and constraints to emulate the experience of the real practical. Writing a full scale scenario is very time consuming and challenging. You have to find a good story, make it believable and challenging enough. The scenario must also be somewhat realistic.
I’m happy to announce that my friend Martin Duggan has released a new scenario for the CCDE practical. Martin and I studied for the CCDE together and passed on the same day. Martin is well known in the industry and holds a CCIE in RS and works as a network architect at AT&T. He is a Cisco Press author and has authored the CCIE RS Practice Labs Bundle. I have been a technical reviewer for this scenario and based on my experience this is one of the best quality scenarios I’ve seen.
These are some of the things that I think Martin has done really well to make this scenario as realistic as possible.
Background information – The scenario contains more background information than some of the other Continue reading
I was reading Ivan’s blog as I often do when I came across this post about why certifications suck.
The author Robert Graham had a sample question from the GIAC Penetration Tester (GPEN) exam. The question looked like this:
By default, which protocol do Linux systems use to transmit packets for tracing a network path? a) UDP b) TCP c) ICMP d) TTL e) ECHO
Obviously being a networking expert I have my networking glasses on but I have to respectfully disagree with these gentlemen that I don’t think this is such a bad question at all. Trust me, I’ve seen much worse.
So traceroute works differently on different operating systems. If you work with penetration testing I would argue that you need to have a good understanding of different operating systems. You should know how they behave, what their characteristics are and how you can fingerprint them. The correct answer here is UDP. Linux systems and Cisco devices normally use UDP to send packets for a traceroute while Windows systems use ICMP when doing a traceroute. The answer is of course not TCP because TCP would require the three-way handshake and why would a device want to start a Continue reading
A friend was looking for some input on low latency queuing yesterday. I thought the exchange we had could be useful for others so I decided to write a quick post.
The query was where the rule about the priority queue being limited to 33% came from. The follow up question is how you handle dual priority queues.
This is one of those rules that are known as a best practice and doesn’t really get challenged. The rule is based on Cisco internal testing within technical marketing. Their testing showed that data applications suffered when the LLQ was assigned a to large portion of the available bandwidth. The background to this rule is that you have a converged network running voice, video and data. It is possibly to break this rule if you are delivering a pure voice or pure video transport where the other traffic in place is not business critical. Other applications are likely to suffer if the LLQ gets too big and if everything is priority then essentially nothing is priority. I have seen implementations using around 50-55% LLQ for VoIP circuits which is a reasonable amount.
How should dual LLQs be deployed? The rule still applies. Continue reading
The next person I interviewed about the future of networking is my friend Pete Lumbis. Pete used to be the routing escalations TAC leader at Cisco and now he is working at Cumulus as a SE. Pete holds both a CCIE and a CCDE.
Daniel: The networking world is changing. What are the major changes coming up in the next few years that you think we will see?
Pete: Automation is the big thing these days. Either through APIs or abstraction tools like Ansible or Puppet. I think there will be more embracing of automation, but as a side effect I think we will have to start building networks that are more automation friendly by creating fewer exceptions and one-offs. This also touches on a larger point which is the need to build systems and networks that are less fragile. Automation is less scary when you have an architecture that can tolerate some level of failure.
Daniel: What are the major skills that people in networking need to learn to stay ahead of the curve?
Pete: Fundamentals don’t change. ARP is ARP. MAC addresses still have 48-bits. Understanding fundamentals will always be key. Beyond that it’s going to be about Continue reading
Hello my friends,
Lately I have been thinking a lot about the future of networking and the career paths in this domain. As you probably know I like to guide and mentor people and with everything going on in the industry it can be confusing to find your way and to know what skills to work on to stay ahead of the curve.
I decided to reach out to some of my friends to ask them of their vision of the role of the future networking engineer and how to prepare for the changes that we are now seeing. First out is my friend Russ White who is also the co-author of the book Unintended Features that we wrote together.
Daniel: What are the major skills that people in networking need to learn to stay ahead of the curve?
Russ: Some of these have never changed — for instance, communication and abstraction. Some skills have been more important forever, such as people skills and project manage, but they never seem to really rise to the top in terms of actual demand. I don’t think this is going to change much; companies say they want people skills, and then recruit based Continue reading
Introduction
There has been a lot of talking about the future of the network engineer for the last couple of years. Many articles have declared that we MUST learn to program or we will be banished from the world by the programming overlords! I definitely do not agree with this bold statement but lately I have started to learn Python. Why?
Why Learn Programming?
As a network architect I probably won’t ever write a line of code or at least very rarely so. So why bother learning?
I didn’t learn a lot of programming back in my days of school. I fiddled around a bit with Basic, some Pascal and then at the university I tried some C# and C++. I never felt connected with programming. I never felt that I was good at it. This surprised me a bit because I’ve always been good at learning things. I’m good at analyzing things, troubleshooting things and I have a strong background in maths and science in general. I had all the skills that good programmers normally have so why couldn’t I learn programming? Because I struggled I didn’t enjoy doing it so I never pushed through until it “clicked”.
Later Continue reading
Hi everyone,
I have some exciting news to share with you. I’ve been working on a book lately together with Russ White. It’s called Unintended Features – Thoughts on thinking and life as a network engineer. The book is partly based on blog post we have written in the past but also some unique content for the book. The outline of the book is as follows:
So you’ve decided you want to be a network engineer—or you’re already you a network engineer, and you want to be a better engineer, to rise to the top, to be among the best, to… Well, you get the idea. The question is, how do you get from where you are now to where you want to be? This short volume is designed to answer just that question.
This book tries to teach concepts not found in other writings such as thinking more about architecture and seeing patterns in technology and how to stay current in the networking industry. With the rapid pace of the networking industry it seems like we are sipping from the fire hose. How can we prevent this? Isn’t every new technology pretty much an old one with some new Continue reading
On May the 17th I passed the CCDE practical in Madrid and became Swedens 2nd CCDE, CCDE #20160011. This post describes my journey to passing the CCDE practical in my 1st attempt and the materials that I used to do so.
Let me start by saying that this is a tough exam, a very tough exam. You need to be an expert in RS and SP technologies and there is no instant feedback in the exam, like you would get in the CCIE lab. In the CCIE lab you will see you are missing routes or if your output does not match the output the lab guidelines told you to match. In the CCDE practical there will be very few questions that you are 100% sure that you got the optimal answer. Design is a more subjective skill than implementation. I had several moments where I felt that I could just as well leave because there was no chance I was going to pass the lab. You need to be mentally strong to put those thoughts aside and just keep performing your best throughout the whole exam. You might be doing a lot better than you think.
The first section Continue reading
Hi everyone.
I’ve not been posting lately because I have been studying very hard for the CCDE practical.
Passed the lab in Madrid? Isn’t this guy from the North? I was supposed to take this exam in Frankfurt on Tuesday the 17th of May. Wise from my trips to the CCIE lab in Brussels I took a flight that landed around noon on Monday. I have a routine I like to use the day before a big exam. I had just scouted the Pearson Professional Centre (PPC) location and got back to my room. At 14.05 I receive an e-mail from Pearson Vue saying they can’t deliver my exam. Can you imagine the panic I felt? I had been preparing for months of furious studying for this day. The CCDE practical is only delivered every three months so I would have to wait for three more months to take it if I could even get a seat then. I had prepared for this day and my plan was to try to pass it and if I didn’t, come back in three months and pass it then.
There was no time to waste. I found an open seat in Madrid Continue reading
In the previous posts I talked about why it’s important to build a network and how you can do it but there is still one component missing. Any guesses?
How do we maintain our network once we have built it?
Stay In Touch
You spent all this time and put effort into building a network. Are you going to let this effort go to waste? I hope not. It’s important to stay in touch every now and then and check in how your friends are doing. This could be by sending an e-mail, a text message, just giving them a call or going for a lunch. Don’t contact them only when you need their assistance. Don’t be a leach. Show that you appreciate them and the help you have received from them in the past.
Return The Favor
One of your contacts helped you with a technology or troubleshooting an issue which helped you move forward in a project. The next time they may require assistance from you. When this time comes, maybe you are very busy at work. Do you simply turn them down? I hope not and if you do don’t expect any help the next time you Continue reading
Cisco Live takes place in Las Vegas between the 10th and 14th of July this year. Every Live event, Cisco holds a customer appreciation event (CAE) in an arena close by the conference center. Last year we saw an amazing performance from Aerosmith hosted in San Diego. The year before that, Imagine Dragons put on a show in San Francisco.
This years event will be hosted at the T-Mobile Arena on the Las Vegas strip. This is a very new arena that opened on April, 6, just days ago. The pictures below show renderings of the arena.
T-Mobile Arena® will be the destination in Las Vegas for live events – from amazing music acts to thrilling sporting events – it will set a new standard for what entertainment means in the city that does it best. The 20,000-seat T-Mobile Arena ® will host exciting, world-class events with something for everyone – from UFC, boxing, hockey, basketball and professional bull riding to high-profile awards shows and top-name concerts.
Cisco is not only holding their CAE there. The arena also uses Cisco technology called Cisco StadiumVision which is an innovative digital content distribution system. The system is used to centrally manage and Continue reading
Are you preparing for the CCIE RS lab? Cisco 360 is the official training program for the CCIE. There are other training vendors out there which are also high quality, like INE and Narbik, Cisco 360 has an advantage in that they can leverage the real platform of the lab though. If you want to assess how ready you are you can take an assessment lab at Cisco 360. You will also have the opportunity to get more comfortable with the lab platform that is used in the lab. You will also have the opportunity to practice the TS and DIAG section to make sure you are comfortable with those sections of the lab when the big day comes.
CLN will have a sale during April and May which means that you can save between 10-20% on these products to help you prepare for the CCIE RS lab. For the CCIE there are currently three products on sale.
The first product is a bundle and it’s a starter and advanced mini bundle for 1599$ and contains the following.