It’s almost time for Cisco Live in Las Vegas. It’s Friday morning here and I have 95% of the packing done and I leave on Saturday. If this is your first time going to CLUS or even going to the US it can be challenging to know what to pack and if you need to bring cash etc. Here are some of my recommendations for packing. Make a list so that you don’t forget to pack things.
Essentials
Make sure to pack your passport. This is pretty obvious. Hopefully you already made sure that the passport is up to date as well.
I bring a copy of my approved ESTA. This is not mandatory but it’s nice having it there in case a security officer asks you. Depending where you are from you might not be part of the ESTA program.
I always print a copy of my booking for the flight and hotel etc. While not something you need when you have electronic check-in etc. I still like to keep a copy so that I have all of the info about my flight and hotel in case I can’t get on my phone.
Electronic Devices
Bring a power bank. Continue reading
802.11 Frame Format
In a wired Ethernet network, the switch is not an active participant in communication at L2. In a wireless LAN, the AP is an active participant unless something like 802.11z, Extension to Direct Link Setup (DLS) is used.
To direct frames through the AP, the radio must have a MAC address, known as the BSSID.
802.11 frames can carry a maximum payload of 2304 bytes.
To support wireless communication, the Ethernet frame format is quite different compared to wired networks. The Ethernet frame starts out with a 2-byte Frame Control field, identifying the frame type, the direction the frame is traveling in and more.
Name | Length (bits) |
---|---|
Protocol Version | 2 |
Type | 2 |
Subtype | 4 |
To DS | 1 |
From DS | 1 |
More Frag | 1 |
Retry | 1 |
Pwr Mgmt | 1 |
More Data | 1 |
WEP | 1 |
Order | 1 |
In a common scenario with multiple clients associated with an AP that is connected to an DS, frames travel from clients towards the DS or from the DS towards the clients.
The frame motion is indicated by two bits, To DS and From DS, in the Frame Control field.
Frames sent by a wireless client will Continue reading
Certification – Major News for Expert Level Recertification
Everyone holding an expert level Cisco certification knows the pain of recertifying. Recertification today is achieved by taking any expert level written exam which means you can take the written in the track you are already certified in (the “safe bet”) or in another track if you want to learn something new. The quality of these written exams have varied over the years. Some revisions have been very difficult to pass even for people that are masters of their trade due to the pool of questions not being as high quality as can be expected from an expert level exam. This has been debated for years.
Every two years the pain of recertifying kicks in. Taking the written exam costs around 400$ per attempt depending on local rates, VAT etc. Many people have had to go through multiple attempts to recertify and some have chosen other written exams than their own track because the written of that track was not up to par quality-wise.
Over the years we have been many that have suggested that there must be a better path to getting recertified. Many of us go to Cisco Live, write Continue reading
Types of Wireless Networks
Wireless LANs are not the only type of wireless networks that exist.
Wireless Personal Area Network (WPAN)
WPAN uses low-powered transmitters to create a very short range network, usually 7 to 10 meters. Based on the 802.15 standard and includes technologies such as Bluetooth and ZigBee although ZigBee can have greater range. Unlicensed ISM frequencies are used including the 2.4 GHz band.
Wireless Local Area Network (WLAN)
Wireless service connecting multiple devices using IEEE 802.11 standard over medium-sized range, usually up to 100 meters. Uses unlicensed frequencies in 2.4 GHz and 5 GHz band.
Wireless Metropolitan Area Network (WMAN)
Wireless service over a large geographic area, such as all or portion of a city. One technology used is WiMAX, which is based on the 802.16 standard. Most commonly uses licensed frequencies.
Wireless Wide Area Network (WWAN)
Wireless data service for mobile phones offered over a very large geographic area, such as regional, national or even global by telecommunication carriers. Licensed frequencies are used.
Wireless LAN Topologies
Likelihood of interference increases as the number of wireless devices grows. Wireless devices use half duplex to avoid colliding with other Continue reading
Antenna Characteristics
Different antennas are needed for different applications. An open office space is very different to to a strip of closed offices. How do you cover a large open area such as a lobby? Covering an outdoor area is different than an indoor one and so on.
Radiation Patterns
Antenna gain is normally measured against an isotropic antenna, measured in dBi. This antenna only exists in theory though. It’s shaped like a tiny round point that when alternating current is applied, radiates a signal equally in all directions, in the form of an ever-expanding sphere.
The relative signal strength around an antenna, showed on a plot, is known as the radiation pattern.
The radiation pattern can be shown in a three-dimensional plot in form of a sphere where XY plane lies flat along the horizon and the XZ plane lies vertically along the elevation of the sphere. The first plane is referred to as H plane, horizontal, or also as the azimuth plane. The second one is known as the E plane, elevation.
Polar plots can also be used where concentric circles represent relative changes in signal strength as measured at a constant distance from Continue reading
Interference
Interference will exist if there are other transmitters on the same channel or adjacent channels. This will lead to loss of frames and the frames will then have to be retransmitted, using up air time. Interference can be caused by micro waves, DECT phones and other devices depending on the band used.
Co-Channel Interference
Co-Channel Interference occurs when two or more transmitters use the same channel. The signals completely overlap and the whole 20 or 22 MHz channel bandwidth is affected. This is only a problem if they transmit simultaneously though. However they will contend for the same airtime and a channel can become very congested. When two signals interfere, it causes data corruption, rentransmitting of frames and that in turn uses up even more airtime.
It is common practice to only place a transmitter on a specific channel where received signals are much weaker. A margin of 19 dB is recommended. The margin depends on the coding and modulation scheme. BPSK may need less than 10 db but 64-QAM will require 19 dB. More advanced modulation such as 256-QAM may require between 31 to 50 dB.
Neighboring Channel Interference
In the 2.4 GHz band neighboring Continue reading
ITU-R
A telecommunications regulatory body that regulates or decides how different parts of the RF spectrum may be used. Countries can also have own regulatory bodies that regulate the spectrum within the country. Maintains spectrum in three different regions:
Region 1: Europe, Africa, Northern Asia
Region 2: North and South America
Region 3: Southern Asia and Australiasa
Most bands in the RF spectrum are tightly regulated and require a license. Using a frequency in a licensed range requires an organization to submit an application to the regulatory body.
ITU-R allocated two two ranges for Industrial, Scientific and Medical (ISM) use:
2.400 to 2500 GHz
5.725 to 5.825 GHz
ISM bands are unlicensed and anyone can use them.
Unlicensed bands are more vulnerable to interference and noise due to them being more accessible.
FCC
Federal Communications Commission (FCC) regulates RF frequencies, channels and transmission power within the US but other countries may also follow the rules of the FCC. FCC has allocated Unlicensed National Information Infrastructure (U-NII) in addition to the ISM band. Consists of four bands in the 5 GHz band.
U-NII-1 5.15 to 5.25 GHz
U-NII-2 5.25 to 5.35 GHz
U-NII-2 Extended Continue reading
We’re down to just a month before it’s time for Cisco Live in Las Vegas 2017. I’m really looking forward to meeting with a lot of people and attending some great sessions. This will also be my first event as a Cisco Netvet I have a few focus areas for this year’s event.
Cisco IWAN
I have a few IWAN projects I’m working on and I’m going to deep dive into IWAN during CLUS. My plans here are to attend the techtorial on Sunday and meet with some of the prominent people behind IWAN. Those contacts are invaluable to have when you are working on complex scenarios. I also want to see what’s on the roadmap and if I can find out anything about how the acquisition of Viptela will affect IWAN, if at all. I also want to see if APIC-EM has matured to be more useful in brownfield scenarios. Another interesting thing I will try to learn more about is how to best do monitoring in an IWAN network.
Cisco ACI
We have a lot of customers moving to ACI right now. Many of them have “legacy” data centers based on the Catalyst 6500. Moving to a vendor Continue reading
I’ve started studying for the CCNA wireless exam and thought I would put my notes online. I always learn better when writing and hopefully my notes can be of assistance to someone else. These notes are based on reading the official certification guide “CCNA Wireless 200-355 Official Cert Guide“.
Basic wireless theory
Wireless LANs are based on the 802.11 standard.
Wireless LANs is a lot about Radio Frequency (RF) and planning of the RF environment.
When alternating current is sent through the antenna electric and magnetic fields propagate out and away as traveling waves. They travel along each other and are at right angles to each other.
Electromagnetic waves do not travel in a straight line. They travel by expanding in all directions away from the antenna.
When the electromagnetic waves reach the receiver’s antenna, they induce an electrical signal.
Frequency
Frequency – The number of times a signal makes one complete up and down cycle in one second. Measured in Hertz (Hz)
The frequency range from 3 kHz to 300 GHz is commonly called RF. Types of devices in this frequency range is radar, radio, shortwave radio, television, FM radio, microwave etc. The main two frequency Continue reading
This post will describe the exercises and solutions for week four of Kirk Byers Python for Network Engineers.
The final exercise of week 4 is the following.
III. Create a program that converts the following uptime strings to a time in seconds. uptime1 = 'twb-sf-881 uptime is 6 weeks, 4 days, 2 hours, 25 minutes' uptime2 = '3750RJ uptime is 1 hour, 29 minutes' uptime3 = 'CATS3560 uptime is 8 weeks, 4 days, 18 hours, 16 minutes' uptime4 = 'rtr1 uptime is 5 years, 18 weeks, 8 hours, 23 minutes' For each of these strings store the uptime in a dictionary using the device name as the key. During this conversion process, you will have to convert strings to integers. For these string to integer conversions use try/except to catch any string to integer conversion exceptions. For example: int('5') works fine int('5 years') generates a ValueError exception. Print the dictionary to standard output.
The first step is to import pretty print which we will use to print the dictionary.
# Import pretty print import pprint
To do the conversion from years, weeks and days to seconds, we are going to need some constants. Constants are usually defined with the variable Continue reading
This post will describe the exercises and solutions for week two of Kirk Byers Python for Network Engineers.
Our next task is to parse data from show version
from a device.
II. Parse the below 'show version' data and obtain the following items (vendor, model, os_version, uptime, and serial_number). Try to make your string parsing generic i.e. it would work for other Cisco IOS devices. The following are reasonable strings to look for: 'Cisco IOS Software' for vendor and os_version 'bytes of memory' for model 'Processor board ID' for serial_number ' uptime is ' for uptime Store these variables (vendor, model, os_version, uptime, and serial_number) in a dictionary. Print the dictionary to standard output when done. Note, "Cisco IOS Software...Version 15.0(1)M4...(fc1)" is one line. >>>>> show version data <<<<< Cisco IOS Software, C880 Software (C880DATA-UNIVERSALK9-M), Version 15.0(1)M4, RELEASE SOFTWARE (fc1) Technical Support: Copyright (c) 1986-2010 by Cisco Systems, Inc. Compiled Fri 29-Oct-10 00:02 by prod_rel_team ROM: System Bootstrap, Version 12.4(22r)YB5, RELEASE SOFTWARE (fc1) twb-sf-881 uptime is 7 weeks, 5 days, 19 hours, 23 minutes System returned to ROM by reload at 15:33:36 PST Fri Feb 28 2014 System restarted at 15:34:09 PST Fri Feb Continue reading
This post will describe the exercises and solutions for week four of Kirk Byers Python for Network Engineers.
The first exercise is the following:
I. Prompt a user to input an IP address. Re-using some of the code from class3, exercise4--determine if the IP address is valid. Continue prompting the user to re-input an IP address until a valid IP address is input.
Compared to our last script we want to keep asking the user for an IP address until they supply a valid one. This means that we need a loop that can run until some condition changes. This is where While loops come in handy. We will create a Boolean variable called not_done and set this to True.
not_done = True while not_done:
The meaning of while not_done:
is that the While loop will run as long as not_done is True.
The next step is to ask the user for an IP address. We use the built-in function input() to do this.
ip_add = input("\n\nPlease enter an IP address: ")
We use another Boolean variable called valid_ip which is set to True until we prove that the IP address is not valid.
valid_ip = True
We will split Continue reading
This post will describe the exercises and solutions for week three of Kirk Byers Python for Network Engineers.
The last exercise of the week is to create an IP address checker that checks the validity of an IP address. Here are the instructions:
IV. Create a script that checks the validity of an IP address. The IP address should be supplied on the command line. A. Check that the IP address contains 4 octets. B. The first octet must be between 1 - 223. C. The first octet cannot be 127. D. The IP address cannot be in the 169.254.X.X address space. E. The last three octets must range between 0 - 255. For output, print the IP and whether it is valid or not.
The IP address will be supplied through the command line. Like we’ve done before we are going to check the number of arguments supplied and exit the script if the number of arguments is not two. We need to import sys so that we can use sys.argv.
import sys if len(sys.argv) != 2: sys.exit("Usage: ./ip_checker.py <IP-ADDRESS>")
We’ll store the IP address as input as dotted decimal into the Continue reading
This post will describe the exercises and solutions for week three of Kirk Byers Python for Network Engineers.
Exercise two of week three we already completed in a previous post where we used a For loop to loop through the BGP output.
Let’s move on to exercise three instead:
III. You have the following 'show ip int brief' output. show_ip_int_brief = ''' Interface IP-Address OK? Method Status Protocol FastEthernet0 unassigned YES unset up up FastEthernet1 unassigned YES unset up up FastEthernet2 unassigned YES unset down down FastEthernet3 unassigned YES unset up up FastEthernet4 6.9.4.10 YES NVRAM up up NVI0 6.9.4.10 YES unset up up Tunnel1 16.25.253.2 YES NVRAM up down Tunnel2 16.25.253.6 YES NVRAM up down Vlan1 unassigned YES NVRAM down down Vlan10 10.220.88.1 YES NVRAM up up Vlan20 192.168.0.1 YES NVRAM down down Vlan100 10.220.84.1 YES NVRAM up up ''' From this output, create a list where each element in the list is a tuple consisting of (interface_name, ip_address, status, protocol). Only include interfaces that are in the up/up state. Print this list to standard output.
In this Continue reading
This post will describe the exercises and solutions for week three of Kirk Byers Python for Network Engineers.
The first exercise of the week is the following:
I. Create an IP address converter (dotted decimal to binary). This will be similar to what we did in class2 except: A. Make the IP address a command-line argument instead of prompting the user for it. ./binary_converter.py 10.88.17.23 B. Simplify the script logic by using the flow-control statements that we learned in this class. C. Zero-pad the digits such that the binary output is always 8-binary digits long. Strip off the leading '0b' characters. For example, OLD: 0b1010 NEW: 00001010 D. Print to standard output using a dotted binary format. For example, IP address Binary 10.88.17.23 00001010.01011000.00010001.00010111 Note, you might need to use a 'while' loop and a 'break' statement for part C. while True: ... break # on some condition (exit the while loop) Python will execute this loop again and again until the 'break' is encountered.
The first thing we want to do is to import the module sys because we are going to be working with command line arguments.
import sys
This post will describe the exercises and solutions for week two of Kirk Byers Python for Network Engineers.
The final assignment in week 2 is the following:
IV. You have the following string from "show version" on a Cisco router cisco_ios = "Cisco IOS Software, C880 Software (C880DATA-UNIVERSALK9-M), Version 15.0(1)M4, RELEASE SOFTWARE (fc1)" Note, the string is a single line; there is no newline in the string. How would you process this string to retrieve only the IOS version: ios_version = "15.0(1)M4" Try to make it generic (i.e. assume that the IOS version can change). You can assume that the commas divide this string into four sections and that the string will always have 'Cisco IOS Software', 'Version', and 'RELEASE SOFTWARE' in it.
The first thing we want to do is to split the string into several parts and put them in a list. We were told that we could use the comma as a separator. We’ll print the list and show the type to show what is going on.
cisco_ios_list = cisco_ios.split(",") print(cisco_ios_list) print(type(cisco_ios_list))
This gives us the following output:
daniel@daniel-iperf3:~/python/Week2$ python3 ios_version.py ['Cisco IOS Software', ' C880 Software (C880DATA-UNIVERSALK9-M)', '\n Version 15.0(1)M4', Continue reading
This post will describe the exercises and solutions for week two of Kirk Byers Python for Network Engineers.
The next excercise is to work with output from “show ip bgp”:
III. You have the following four lines from 'show ip bgp': entry1 = "* 1.0.192.0/18 157.130.10.233 0 701 38040 9737 i" entry2 = "* 1.1.1.0/24 157.130.10.233 0 701 1299 15169 i" entry3 = "* 1.1.42.0/24 157.130.10.233 0 701 9505 17408 2.1465 i" entry4 = "* 1.0.192.0/19 157.130.10.233 0 701 6762 6762 6762 6762 38040 9737 i" Note, in each case the AS_PATH starts with '701'. Using split() and a list slice, how could you process each of these such that--for each entry, you return an ip_prefix and the AS_PATH (the ip_prefix should be a string; the AS_PATH should be a list): Your output should look like this: ip_prefix as_path 1.0.192.0/18 ['701', '38040', '9737'] 1.1.1.0/24 ['701', '1299', '15169'] 1.1.42.0/24 ['701', '9505', '17408', '2.1465'] 1.0.192.0/19 ['701', '6762', '6762', '6762', '6762', '38040', '9737'] Ideally, your Continue reading
This post will describe the exercises and solutions for week two of Kirk Byers Python for Network Engineers.
The second exercise of week two is the following:
II. Create an IP address converter (dotted decimal to binary): A. Prompt a user for an IP address in dotted decimal format. B. Convert this IP address to binary and display the binary result on the screen (a binary string for each octet). Example output: first_octet second_octet third_octet fourth_octet 0b1010 0b1011000 0b1010 0b10011
We already have the knowledge to achieve this and the previous post went through all of the concepts needed to finish this task so I won’t bee too verbose with the code here.
The first part is to ask the user for an IP address using the “input()” function.
ip_add = input("\n\nPlease enter an IP address: ")
The next step is to split the IP address into octets using “split()”.
octets = ip_add.split(".")
After that each octet is converted into binary with the following code:
first_octet_bin = bin(int(octets[0])) second_octet_bin = bin(int(octets[1])) third_octet_bin = bin(int(octets[2])) fourth_octet_bin = bin(int(octets[3]))
Like in the previous post we have to convert the strings to integers before we can use “bin()” on them. We Continue reading
This post will describe the exercises and solutions for week two of Kirk Byers Python for Network Engineers.
This is the first exercise:
I. Create a script that does the following A. Prompts the user to input an IP network. Notes: 1. For simplicity the network is always assumed to be a /24 network 2. The network can be entered in using one of the following three formats 10.88.17.0, 10.88.17., or 10.88.17 B. Regardless of which of the three formats is used, store this IP network as a list in the following format ['10', '88', '17', '0'] i.e. a list with four octets (all strings), the last octet is always zero (a string). Hint: There is a way you can accomplish this using a list slice. Hint2: If you can't solve this question with a list slice, then try using the below if statement (note, we haven't discussed if/else conditionals yet; we will talk about them in the next class). >>>> CODE <<<< if len(octets) == 3: octets.append('0') elif len(octets) == 4: octets[3] = '0' >>>> END <<<< C. Print the IP network out to the screen. D. Print a Continue reading
In the second part of assignments for the first week of Kirk Byers Python for Network Engineers class we will be working with IPv6 addresses.
We start with the following IPv6 address: FE80:0000:0000:0000:0101:A3EF:EE1E:1719.
The goal is then to split this address into individual parts. The delimiter in an IPv6 address is a colon. For an IPv4 address we would have used a dot instead. Python has a built-in function for splitting strings. To split the address we use this function and tell Python that a colon is our delimiter.
print("IPv6 address split:") print(ipv6_split) print(type(ipv6_split))
This means that we have turned our string into a list, consisting of eight parts of the IPv6 address.
daniel@daniel-iperf3:~/python/Week1$ python3 ipv6.py IPv6 address split: ['FE80', '0000', '0000', '0000', '0101', 'A3EF', 'EE1E', '1719'] <class 'list'>
To rejoin the address again the built-in function “join()” will be used. The syntax for this function is a bit awkward besides that it’s easy to use.
ipv6_new = ":".join(ipv6_split) print("IPv6 address rejoined:") print(ipv6_new) print(type(ipv6_new))
First we tell Python to put a colon between all the parts we are joining. The output then looks like this:
daniel@daniel-iperf3:~/python/Week1$ python3 ipv6.py IPv6 address rejoined: FE80:0000:0000:0000:0101:A3EF:EE1E:1719 <class 'str'>
Note that the Continue reading