<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-5029689981158113588</id><updated>2012-02-10T21:54:56.039-07:00</updated><category term='python cucm callmanager communicationsmanager cdr timestamp ip address'/><category term='debug'/><category term='virtualization'/><category term='router'/><category term='permissions wizard'/><category term='ucm'/><category term='active directory'/><category term='trace files'/><category term='vmware'/><category term='multiple domains'/><category term='ESXi'/><category term='IP addressing'/><category term='acl'/><category term='device'/><category term='vm'/><category term='qos'/><category term='tcam'/><category term='subnetting'/><category term='unity express'/><category term='ccm'/><category term='pool'/><category term='CUE'/><category term='VoIP'/><category term='certification'/><category term='clone'/><category term='duplicate'/><category term='unified communications'/><category term='IOS'/><category term='VT advantage'/><category term='media resources'/><category term='catalyst switch'/><category term='voice'/><category term='Unity'/><category term='microcode'/><category term='IOS upgrade'/><category term='IOS trivia'/><category term='ipv6'/><category term='callmanager'/><title type='text'>Loopback Mountain</title><subtitle type='html'>Networking Oddities, Trivia, Tips, Etc. Currently focusing on Cisco IOS, Cisco VoIP, random security stuff, and a bit of VMWare.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://unroutable.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5029689981158113588/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://unroutable.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>jswan</name><uri>http://www.blogger.com/profile/02571029118821999072</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>49</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5029689981158113588.post-6509333606912756868</id><published>2012-02-10T21:51:00.003-07:00</published><updated>2012-02-10T21:54:56.049-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python cucm callmanager communicationsmanager cdr timestamp ip address'/><title type='text'>Cisco CDR Timestamp and IP Address Conversion</title><content type='html'>The call detail records (CDRs) used by Cisco Unified Communications Manager (aka Call Manager) can be tricky to interpret. Two fields that are frequently confusing are the IP address fields and the timestamp field.&lt;br /&gt;&lt;br /&gt;Continuing my theme of using Python to help with Cisco product administration, here's how to convert timestamps and IP addresses to human-readable format.&lt;br /&gt;&lt;br /&gt;Timestamps are pretty easy. They're recorded in UNIX epoch time and there are lots of examples available showing how to convert them using Excel or various scripting tools. In Python: &lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;import time&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;def time_to_string(time_value):&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; """convert Unix epoch time to a human readable string"""&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return time.strftime("%m/%d/%Y %H:%M:%S",time.localtime(float(time_value)))&lt;/div&gt;&lt;br /&gt;It took me a while to figure out how to convert IPv4 addresses, since CUCM uses signed 32-bit integers to represent IP addresses and Python's long integers can be of infinite length. First, a review of how to do the conversion manually is in order. Let's say that a CUCM CDR lists an IP address as "-2126438902". First, we convert this signed 32-bit integer to hex using Windows calculator:&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;-2126438902 = 0x81411E0A&lt;/div&gt;&lt;br /&gt;Next, we break the hex number into 1-byte chunks, and reverse the order:&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;0x0A&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;0x1E&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;0x41&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;0x81&lt;/div&gt;&lt;br /&gt;Finally, we convert each byte to decimal and put them together into an IP address:&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;10.30.65.129&lt;/div&gt;&lt;br /&gt;Here's the Python function to do the conversion:&lt;br /&gt;&lt;br /&gt;&lt;script src="https://gist.github.com/1796357.js"&gt; &lt;/script&gt;&lt;br /&gt;&lt;br /&gt;And here it is in the interpreter showing that it works for reasonable input types:&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;gt;&amp;gt;&amp;gt; int_to_ip('-2126438902')&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;'10.30.65.129'&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;gt;&amp;gt;&amp;gt; int_to_ip(-2126438902)&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;'10.30.65.129'&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;gt;&amp;gt;&amp;gt; int_to_ip(-2126438902L)&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;'10.30.65.129'&lt;/div&gt;&lt;br /&gt;&amp;nbsp;I don't have access to an IPv6-aware CUCM install, so you're on your own for that!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5029689981158113588-6509333606912756868?l=unroutable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unroutable.blogspot.com/feeds/6509333606912756868/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5029689981158113588&amp;postID=6509333606912756868' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5029689981158113588/posts/default/6509333606912756868'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5029689981158113588/posts/default/6509333606912756868'/><link rel='alternate' type='text/html' href='http://unroutable.blogspot.com/2012/02/cisco-cdr-timestamp-and-ip-address.html' title='Cisco CDR Timestamp and IP Address Conversion'/><author><name>jswan</name><uri>http://www.blogger.com/profile/02571029118821999072</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5029689981158113588.post-2940600999529580331</id><published>2012-01-29T14:20:00.001-07:00</published><updated>2012-01-29T14:24:51.705-07:00</updated><title type='text'>Amusement: Python and Netmasks</title><content type='html'>As a network engineer, it's not uncommon for me to need to convert between hex and decimal. While I'm reasonably good at doing this in my head for smaller numbers, when it comes to deciphering stuff like higher TCP or UDP port numbers written in hex, I usually end up using the Python interpreter that's usually open somewhere on my machine. For me, the Python interpreter is the best general purpose calculator app I've found. Using the port number for Flash as an example:&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;jswan$ python&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Python 2.7.2 (v2.7.2:8527427914a2, Jun 11 2011, 15:22:34) &lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Type "help", "copyright", "credits" or "license" for more information.&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;gt;&amp;gt;&amp;gt; 0x78f&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;1935&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;gt;&amp;gt;&amp;gt; hex(1935)&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;'0x78f'&lt;/div&gt;&lt;br /&gt;The topic of numeric base conversions often makes my mind drift to every former networking instructor's pet topics, IPv4 subnetting. The other day, I started playing with using the Python interpreter to find network IDs, which is really easy as long as you're using hex:&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;gt;&amp;gt;&amp;gt; hex(0x0a0a0a25 &amp;amp; 0xffffffe0)&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;'0xa0a0a20'&lt;/div&gt;&lt;br /&gt;This little snippet finds the bitwise-AND of 10.10.10.37 and 255.255.255.224, which as every up-and-coming CCNA knows is the network ID for that subnet: 10.10.10.32. Back when I was teaching Cisco classes full-time, I used to have a never-ending argument with another instructor about the fact that I didn't teach bitwise operations as part of subnetting: my position was that if all you are doing is solving subnet problems with your squishy human brain, you don't need to learn a bunch of truth tables when there are easier ways to do it in human memory. However, if you're writing code you actually do need to do bitwise operations.&lt;br /&gt;&lt;br /&gt;Unfortunately most of us (me included) aren't wired for reading IPv4 addresses in hex. So I started wondering how little Python code I could use to calculate network IDs for IPv4 in dotted decimal. A little screwing around and I started wondering if I could fit the entire thing into a Twitter post. Here's what I came up with:&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;while 1:'.'.join([str(a&amp;amp;m)for a,m in zip([int(n)for n in raw_input('addr?').split('.')],[int(n)for n in raw_input('mask?').split('.')])])&lt;/div&gt;&lt;br /&gt;&amp;nbsp;Try it:&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;addr?1.1.1.37&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;mask?255.255.255.224&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;'1.1.1.32'&lt;/div&gt;&lt;br /&gt;Now I realize this bit of code is neither particularly clever nor easy to read, which makes it bad code. But hey, it fits in a single tweet. It works by using one of Python's coolest features, the list comprehension. If we start with the innermost parts, it makes more sense:&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;[int(n) for n in raw_input('addr?').split('.')]&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;[int(n) for n in raw_input('addr?').split('.')]&lt;/div&gt;&lt;br /&gt;These two sections return lists of integers corresponding to the address and mask the user enters. For example:&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;[1,1,1,37]&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;[255,255,255,224]&lt;/div&gt;&lt;br /&gt;Next, the "zip" function returns a list of tuples that pair corresponding entries in the two lists:&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;[(1, 255), (1, 255), (1, 255), (37, 224)]&lt;/div&gt;&lt;br /&gt;Next, the outermost list comprehension performs a bitwise-AND of each tuple, returning the octets of our network ID in a new list:&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;[1,1,1,32]&lt;/div&gt;&lt;br /&gt;Finally, the "join" method puts them back together into "1.1.1.32", and "while 1:" makes it a loop until you ctrl-c out of it.&lt;br /&gt;&lt;br /&gt;Working with netmasks in CIDR notation is a bit more complicated, and requires more than one line of code--I'll save that for another post.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5029689981158113588-2940600999529580331?l=unroutable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unroutable.blogspot.com/feeds/2940600999529580331/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5029689981158113588&amp;postID=2940600999529580331' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5029689981158113588/posts/default/2940600999529580331'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5029689981158113588/posts/default/2940600999529580331'/><link rel='alternate' type='text/html' href='http://unroutable.blogspot.com/2012/01/amusement-python-and-netmasks.html' title='Amusement: Python and Netmasks'/><author><name>jswan</name><uri>http://www.blogger.com/profile/02571029118821999072</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5029689981158113588.post-6520133558399539516</id><published>2011-12-21T16:58:00.001-07:00</published><updated>2011-12-21T17:32:16.960-07:00</updated><title type='text'>Find Unique Interface Configs on Switches</title><content type='html'>Recently I needed to find all of the interfaces with non-standard configurations on a bunch of Catalyst 3750 switches. I wrote a simple Python script to automate the process. To run this, save it in a directory with all of the configurations you want to check. Then edit the name.startswith() section near the bottom to match the naming convention for your config files; in my case all of my configs start with "c3750". Then run the script from your CLI:&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;gt;python dup_conf.py&lt;/div&gt;&lt;br /&gt;If you're on a Mac or Linux system, Python should be installed by default. On Windows, you'll need to install it or run Cygwin. Note that in the default version, the script ignores SVIs and Gigabit interfaces; uncomment the appropriate lines to include them.&lt;br /&gt;&lt;br /&gt;The output looks like this:&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;in config file c3750-1A.txt&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;interfaces&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;interface FastEthernet1/0/35&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;configured like&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;switchport trunk encapsulation dot1q&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;switchport trunk native vlan 76&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;switchport mode trunk&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;switchport voice vlan 65&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;no logging event link-status&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;srr-queue bandwidth share 10 10 60 20&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;srr-queue bandwidth shape 10 0 0 0&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;mls qos trust device cisco-phone&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;mls qos trust dscp&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;auto qos voip cisco-phone &lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;no mdix auto&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;spanning-tree portfast&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;**************************************************&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;interfaces&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;interface FastEthernet1/0/11&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;interface FastEthernet1/0/12&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;configured like&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;switchport trunk encapsulation dot1q&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;switchport trunk native vlan 80&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;switchport mode trunk&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;switchport voice vlan 65&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;srr-queue bandwidth share 10 10 60 20&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;srr-queue bandwidth shape 10 0 0 0&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;mls qos trust device cisco-phone&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;mls qos trust dscp&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;auto qos voip cisco-phone &lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;no mdix auto&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;spanning-tree portfast&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;**************************************************&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;interfaces&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;interface FastEthernet1/0/1&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;interface FastEthernet1/0/2&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;interface FastEthernet1/0/3&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;interface FastEthernet1/0/4&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;interface FastEthernet1/0/5&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;interface FastEthernet1/0/6&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;interface FastEthernet1/0/7&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;interface FastEthernet1/0/8&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;interface FastEthernet1/0/9&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;interface FastEthernet1/0/10&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;interface FastEthernet1/0/13&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;interface FastEthernet1/0/14&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;interface FastEthernet1/0/15&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;interface FastEthernet1/0/16&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;configured like&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;switchport access vlan 64&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;switchport voice vlan 65&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;srr-queue bandwidth share 10 10 60 20&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;srr-queue bandwidth shape 10 0 0 0&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;mls qos trust device cisco-phone&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;mls qos trust dscp&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;auto qos voip cisco-phone &lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;no mdix auto&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;spanning-tree portfast&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;**************************************************&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;script src="https://gist.github.com/1508237.js?file=dup_conf.py"&gt;&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5029689981158113588-6520133558399539516?l=unroutable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unroutable.blogspot.com/feeds/6520133558399539516/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5029689981158113588&amp;postID=6520133558399539516' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5029689981158113588/posts/default/6520133558399539516'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5029689981158113588/posts/default/6520133558399539516'/><link rel='alternate' type='text/html' href='http://unroutable.blogspot.com/2011/12/find-unique-interface-configs-on.html' title='Find Unique Interface Configs on Switches'/><author><name>jswan</name><uri>http://www.blogger.com/profile/02571029118821999072</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5029689981158113588.post-1890661937424239367</id><published>2011-11-10T09:52:00.001-07:00</published><updated>2011-11-10T09:52:30.040-07:00</updated><title type='text'>Summarize Router Throughput in Packets/Second</title><content type='html'>Here's a quick one-liner to summarize the current packets-per-second throughput on an entire IOS router:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;$ ssh 10.1.2.3 'sh int summ' | awk '/^*/{RXPPS+=$8;TXPPS+=$10} END {print "RXPPS=" RXPPS,"TXPPS=" TXPPS}'&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;jswan@10.1.2.3's password:&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;RXPPS=1613 TXPPS=1539&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5029689981158113588-1890661937424239367?l=unroutable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unroutable.blogspot.com/feeds/1890661937424239367/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5029689981158113588&amp;postID=1890661937424239367' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5029689981158113588/posts/default/1890661937424239367'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5029689981158113588/posts/default/1890661937424239367'/><link rel='alternate' type='text/html' href='http://unroutable.blogspot.com/2011/11/summarize-router-throughput-in.html' title='Summarize Router Throughput in Packets/Second'/><author><name>jswan</name><uri>http://www.blogger.com/profile/02571029118821999072</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5029689981158113588.post-297229545304087617</id><published>2011-06-10T10:33:00.002-06:00</published><updated>2011-06-10T10:39:04.670-06:00</updated><title type='text'>Zone Based Firewall Configuration Example</title><content type='html'>&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span id="internal-source-marker_0.33678132530079186" style="background-color: transparent; color: black; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;span style="background-color: transparent; color: black; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;There  aren’t a ton of examples available for IOS Zone-Based Firewall  configurations, so I thought I’d put up one with which I’ve been working  recently.&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;My test network looks like this:&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;R4 ------------------- R5 ----------------------- R6&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;R4 Loopback: 4.4.4.4&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;R4 to R5 link: 1.1.45.0/24 &lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;R5 Loopback: 5.5.5.5&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;R5 to R6 link: 1.1.56.0/24 &lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;R6 Loopback: 6.6.6.6&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;My goal is to express this policy:&lt;/span&gt;&lt;/div&gt;&lt;ol style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;li style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="background-color: transparent; color: black; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;Hosts in group X on the OUTSIDE network can initiate sessions to hosts  on the INSIDE network. Return traffic for those sessions should be  statefully permitted.&lt;/span&gt;&lt;span style="font-size: small;"&gt; In the lab, group X is represented by R4's loopback address.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="background-color: transparent; color: black; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;Any host on the INSIDE network can initiate sessions to hosts in group X  on the OUTSIDE network. Return traffic for those sessions should be  statefully permitted.&lt;/span&gt;&lt;span style="font-size: small;"&gt; In the lab, the inside hosts are represented by R6's loopback address.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="background-color: transparent; color: black; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&amp;nbsp;Permitted traffic should be logged. All other traffic should be dropped and logged.&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="background-color: transparent; color: black; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;The  network on which the production version of this lab test will be  deployed currently uses extended access-lists to implement the policy.  Access-lists have the advantage of being familiar to anyone with a basic  knowledge of IOS, but they have a lot of disadvantages:&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;ol style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;li&gt;&lt;span style="background-color: transparent; color: black; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;Hard to read and troubleshoot as they grow.&lt;/span&gt;&lt;span style="background-color: transparent; color: black; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="background-color: transparent; color: black; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;No stateful awareness. Trying to retrofit statefulness onto extended  ACLs to allow return traffic requires ugly hacks with source port  restrictions, filtering on ACK bits, etc. This path eventually leads to  mind-numbing troubleshooting problems, and is less than optimal in its  security.&lt;/span&gt;&lt;span style="background-color: transparent; color: black; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="background-color: transparent; color: black; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;Extended ACLs don’t have application-layer awareness.&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="background-color: transparent; color: black; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;There  are several tools in IOS to facilitate stateful traffic inspection, but  Zone-Based Firewalls are the newest and most flexible, so it made sense  to use them.&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;Most  of the examples I found via Google show the simple case of inside hosts  having unfettered access to the outside, and outside hosts having no  access to the inside--a classic stateful firewall design. My case is  only slightly more complex, but it still took me a couple of tries to  make it work.&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;First,  I built access-lists defining the traffic to be allowed. I decided to  use the relatively new IOS object-group support to make it easier to add  and delete hosts on the respective networks:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;object-group network OG_INSIDE_HOSTS&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&amp;nbsp; host 6.6.6.6&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;object-group network OG_OUTSIDE_ALLOWED&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&amp;nbsp; host 4.4.4.4&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;ip access-list extended INSIDE_TO_OUTSIDE&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&amp;nbsp; permit ip object-group OG_INSIDE_HOSTS object-group OG_OUTSIDE_ALLOWED&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;ip access-list extended OUTSIDE_TO_INSIDE&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&amp;nbsp; permit ip object-group OG_OUTSIDE_ALLOWED object-group OG_INSIDE_HOSTS&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;You  might notice that there’s no “deny ip any any log” statement in these  ACLs, which is strange given requirement #3 above. It turns out that  when using ZBFW, you configure drop logging elsewhere; I’ll cover that  below.&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;I  couldn’t find a way to express protocol inspection policy and IPv4  address policy in the same class-map, so I had to use a hierarchical  configuration. To express the protocol inspection policy, I built a  class-map to define the layer 4 protocols that will be inspected by the  firewall:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;class-map type inspect match-any CM_INSPECTED_PROTOCOLS&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&amp;nbsp; match protocol icmp&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&amp;nbsp; match protocol tcp&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&amp;nbsp; match protocol udp&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;This  class-map does simple generic TCP/UDP/ICMP inspection, but it could  easily be extended or rewritten to use much more complex inspection  rules.&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;Next, I built class-maps for each direction that match the appropriate ACL and the inspection policy configured above:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;class-map type inspect match-all CM_OUTSIDE_INSIDE&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&amp;nbsp; match access-group name OUTSIDE_TO_INSIDE&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&amp;nbsp; match class-map CM_INSPECTED_PROTOCOLS&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;class-map type inspect match-all CM_INSIDE_OUTSIDE&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&amp;nbsp; match access-group name INSIDE_TO_OUTSIDE&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&amp;nbsp; match class-map CM_INSPECTED_PROTOCOLS&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;To  meet the packet permit-log requirement, we need a “parameter-map” that  will be applied in the policy-map that references the previous  class-maps:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;parameter-map type inspect PARAM_AUDIT_LOG&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&amp;nbsp; audit-trail on&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;Next, the class-maps and parameter-map are referenced in a pair of policy-maps:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;policy-map type inspect PM_ZBFW_OUTSIDE_INSIDE&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&amp;nbsp; class type inspect CM_OUTSIDE_INSIDE&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; inspect PARAM_AUDIT_LOG&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&amp;nbsp; class class-default&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; drop log&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;policy-map type inspect PM_ZBFW_INSIDE_OUTSIDE&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&amp;nbsp; class type inspect CM_INSIDE_OUTSIDE&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; inspect PARAM_AUDIT_LOG&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&amp;nbsp; class class-default&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; drop log&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;Note  the “drop log” statement in the final section. Similar to the implicit  deny rule in ACLs, ZBFW policies include a class-default with a drop  statement. If you want packet drops to be logged, however, you need to  explicitly add the “log” parameter to the drop command.&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;At  this point, the policies are configured. Now they need to be linked to  interfaces and traffic direction. This is where the “zones” come in:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;zone security INSIDE&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&amp;nbsp; description to R6&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;zone security OUTSIDE&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&amp;nbsp; description to R4&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;interface FastEthernet0/0&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&amp;nbsp; zone-member security OUTSIDE&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;interface FastEthernet0/1&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&amp;nbsp; zone-member security INSIDE&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;Finally, I created zone pairs that associate zones, traffic direction, and traffic policy:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;zone-pair security ZP_OUTSIDE_INSIDE source OUTSIDE destination INSIDE&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&amp;nbsp; service-policy type inspect PM_ZBFW_OUTSIDE_INSIDE&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;zone-pair security ZP_INSIDE_OUTSIDE source INSIDE destination OUTSIDE&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&amp;nbsp; service-policy type inspect PM_ZBFW_INSIDE_OUTSIDE&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;At  this point, the zone-based firewall should be working and ready to  test. Based on the policy defined above, traffic from R4’s loopback  address should be able to reach R6’s loopback address, but traffic from  other interfaces on R4 should be dropped:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;R4#ping 6.6.6.6 source 4.4.4.4&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;Type escape sequence to abort.&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;Sending 5, 100-byte ICMP Echos to 6.6.6.6, timeout is 2 seconds:&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;Packet sent with a source address of 4.4.4.4&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;!!!!!&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;Success rate is 100 percent (5/5), round-trip min/avg/max = 1/2/4 ms&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;R4#&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;R4#ping 6.6.6.6 source 1.1.45.4&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;Type escape sequence to abort.&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;Sending 5, 100-byte ICMP Echos to 6.6.6.6, timeout is 2 seconds:&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;Packet sent with a source address of 1.1.45.4&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;.....&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;Success rate is 0 percent (0/5)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;So far, this looks good. The log on R5 should verify the results above:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;*Jun  10 14:29:02.604: %FW-6-SESS_AUDIT_TRAIL_START:  (target:class)-(ZP_OUTSIDE_INSIDE:CM_OUTSIDE_INSIDE):Start icmp session:  initiator (4.4.4.4:0) -- responder (6.6.6.6:0)&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;*Jun 10 14:29:13.100: %FW-6-SESS_AUDIT_TRAIL: (target:class)-(ZP_OUTSIDE_INSIDE:CM_OUTSIDE_INSIDE):Stop icmp session: in&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;itiator (4.4.4.4:8) sent 360 bytes -- responder (6.6.6.6:0) sent 360 bytes&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;*Jun  10 14:29:16.420: %FW-6-DROP_PKT: Dropping icmp session 1.1.45.4:0  6.6.6.6:0 on zone-pair ZP_OUTSIDE_INSIDE class class-default due to  &amp;nbsp;DROP action found in policy-map with ip ident 0&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;*Jun  10 14:29:19.812: %FW-6-LOG_SUMMARY: 2 packets were dropped from  1.1.45.4:8 =&amp;gt; 6.6.6.6:0  (target:class)-(ZP_OUTSIDE_INSIDE:class-default)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;The  first two lines show the permitted session; the second pair of lines  show the dropped session. I haven’t had the chance yet to examine log  entries for traffic types other than TCP/UDP/ICMP, but at first glance  it looks like the log entries are formatted in a way that’s friendly to  machine parsing.&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;My  next step should probably be to get the Cisco Press &lt;a href="http://www.ciscopress.com/bookstore/product.asp?isbn=1587053101"&gt;eBook on ZBFW&lt;/a&gt; by  the formidable &lt;a href="http://blog.ioshints.info/"&gt;Ivan Pepelnjak&lt;/a&gt;, which I’m a little embarassed about not  having read.&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5029689981158113588-297229545304087617?l=unroutable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unroutable.blogspot.com/feeds/297229545304087617/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5029689981158113588&amp;postID=297229545304087617' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5029689981158113588/posts/default/297229545304087617'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5029689981158113588/posts/default/297229545304087617'/><link rel='alternate' type='text/html' href='http://unroutable.blogspot.com/2011/06/zone-based-firewall-configuration.html' title='Zone Based Firewall Configuration Example'/><author><name>jswan</name><uri>http://www.blogger.com/profile/02571029118821999072</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5029689981158113588.post-2835006253557933834</id><published>2011-05-22T20:09:00.000-06:00</published><updated>2011-05-22T20:09:06.963-06:00</updated><title type='text'>Links of Interest</title><content type='html'>I decided to start a periodic link post, mainly to keep track of tech stuff I might want to reference again later. &lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.mnot.net/blog/2011/05/18/http_benchmark_rules"&gt;HTTP Load Testing&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://googlewebmastercentral.blogspot.com/2011/05/website-security-for-webmasters.html"&gt;Website Security for Webmasters&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://cocosci.berkeley.edu/tom/bayes.html"&gt;Reading List on Bayesian Methods&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.boingboing.net/2011/05/18/javascript-based-pc.html"&gt;JavaScript PC Emulator&lt;/a&gt; &amp;lt; Run VMs in your browser?! We live in the future!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.infoq.com/presentations/Machine-Learning"&gt;Machine Learning: A Love Story&lt;/a&gt; a talk by Hilary Mason&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5029689981158113588-2835006253557933834?l=unroutable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unroutable.blogspot.com/feeds/2835006253557933834/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5029689981158113588&amp;postID=2835006253557933834' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5029689981158113588/posts/default/2835006253557933834'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5029689981158113588/posts/default/2835006253557933834'/><link rel='alternate' type='text/html' href='http://unroutable.blogspot.com/2011/05/links-of-interest.html' title='Links of Interest'/><author><name>jswan</name><uri>http://www.blogger.com/profile/02571029118821999072</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5029689981158113588.post-8289156892801939052</id><published>2011-05-13T12:58:00.000-06:00</published><updated>2011-05-13T12:58:37.240-06:00</updated><title type='text'>Reverse DNS Lookups with Python</title><content type='html'>&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:WordDocument&gt;   &lt;w:View&gt;Normal&lt;/w:View&gt;   &lt;w:Zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:TrackMoves/&gt;   &lt;w:TrackFormatting/&gt;   &lt;w:PunctuationKerning/&gt;   &lt;w:ValidateAgainstSchemas/&gt;   &lt;w:SaveIfXMLInvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:IgnoreMixedContent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:AlwaysShowPlaceholderText&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:DoNotPromoteQF/&gt;   &lt;w:LidThemeOther&gt;EN-US&lt;/w:LidThemeOther&gt;   &lt;w:LidThemeAsian&gt;X-NONE&lt;/w:LidThemeAsian&gt;   &lt;w:LidThemeComplexScript&gt;X-NONE&lt;/w:LidThemeComplexScript&gt;   &lt;w:Compatibility&gt;    &lt;w:BreakWrappedTables/&gt;    &lt;w:SnapToGridInCell/&gt;    &lt;w:WrapTextWithPunct/&gt;    &lt;w:UseAsianBreakRules/&gt;    &lt;w:DontGrowAutofit/&gt;    &lt;w:SplitPgBreakAndParaMark/&gt;    &lt;w:DontVertAlignCellWithSp/&gt;    &lt;w:DontBreakConstrainedForcedTables/&gt;    &lt;w:DontVertAlignInTxbx/&gt;    &lt;w:Word11KerningPairs/&gt;    &lt;w:CachedColBalance/&gt;   &lt;/w:Compatibility&gt;   &lt;w:BrowserLevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;   &lt;m:mathPr&gt;    &lt;m:mathFont m:val="Cambria Math"/&gt;    &lt;m:brkBin m:val="before"/&gt;    &lt;m:brkBinSub m:val="&amp;#45;-"/&gt;    &lt;m:smallFrac m:val="off"/&gt;    &lt;m:dispDef/&gt;    &lt;m:lMargin m:val="0"/&gt;    &lt;m:rMargin m:val="0"/&gt;    &lt;m:defJc m:val="centerGroup"/&gt;    &lt;m:wrapIndent m:val="1440"/&gt;    &lt;m:intLim m:val="subSup"/&gt;    &lt;m:naryLim m:val="undOvr"/&gt;   &lt;/m:mathPr&gt;&lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"  DefSemiHidden="true" DefQFormat="false" DefPriority="99"  LatentStyleCount="267"&gt;   &lt;w:LsdException Locked="false" Priority="0" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Normal"/&gt;   &lt;w:LsdException Locked="false" Priority="9" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="heading 1"/&gt;   &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/&gt;   &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/&gt;   &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/&gt;   &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/&gt;   &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/&gt;   &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/&gt;   &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/&gt;   &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/&gt;   &lt;w:LsdException Locked="false" Priority="39" Name="toc 1"/&gt;   &lt;w:LsdException Locked="false" Priority="39" Name="toc 2"/&gt;   &lt;w:LsdException Locked="false" Priority="39" Name="toc 3"/&gt;   &lt;w:LsdException Locked="false" Priority="39" Name="toc 4"/&gt;   &lt;w:LsdException Locked="false" Priority="39" Name="toc 5"/&gt;   &lt;w:LsdException Locked="false" Priority="39" Name="toc 6"/&gt;   &lt;w:LsdException Locked="false" Priority="39" Name="toc 7"/&gt;   &lt;w:LsdException Locked="false" Priority="39" Name="toc 8"/&gt;   &lt;w:LsdException Locked="false" Priority="39" Name="toc 9"/&gt;   &lt;w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/&gt;   &lt;w:LsdException Locked="false" Priority="10" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Title"/&gt;   &lt;w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/&gt;   &lt;w:LsdException Locked="false" Priority="11" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/&gt;   &lt;w:LsdException Locked="false" Priority="22" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Strong"/&gt;   &lt;w:LsdException Locked="false" Priority="20" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/&gt;   &lt;w:LsdException Locked="false" Priority="59" SemiHidden="false"   UnhideWhenUsed="false" Name="Table Grid"/&gt;   &lt;w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/&gt;   &lt;w:LsdException Locked="false" Priority="1" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/&gt;   &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading"/&gt;   &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List"/&gt;   &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid"/&gt;   &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1"/&gt;   &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2"/&gt;   &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1"/&gt;   &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2"/&gt;   &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1"/&gt;   &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2"/&gt;   &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3"/&gt;   &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List"/&gt;   &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading"/&gt;   &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List"/&gt;   &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid"/&gt;   &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/&gt;   &lt;w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/&gt;   &lt;w:LsdException Locked="false" Priority="34" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/&gt;   &lt;w:LsdException Locked="false" Priority="29" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Quote"/&gt;   &lt;w:LsdException Locked="false" Priority="30" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/&gt;   &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="19" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/&gt;   &lt;w:LsdException Locked="false" Priority="21" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/&gt;   &lt;w:LsdException Locked="false" Priority="31" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/&gt;   &lt;w:LsdException Locked="false" Priority="32" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/&gt;   &lt;w:LsdException Locked="false" Priority="33" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Book Title"/&gt;   &lt;w:LsdException Locked="false" Priority="37" Name="Bibliography"/&gt;   &lt;w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt; /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Table Normal"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-qformat:yes; mso-style-parent:""; mso-padding-alt:0in 5.4pt 0in 5.4pt; mso-para-margin-top:0in; mso-para-margin-right:0in; mso-para-margin-bottom:10.0pt; mso-para-margin-left:0in; line-height:115%; mso-pagination:widow-orphan; font-size:11.0pt; font-family:"Calibri","sans-serif"; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-fareast-font-family:"Times New Roman"; mso-fareast-theme-font:minor-fareast; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin;}&lt;/style&gt; &lt;![endif]--&gt;  &lt;br /&gt;I am neither a professional programmer nor a Python expert, but it's currently my language of choice for quick log parsing projects. I couldn't find an example of how to do reverse DNS queries from the PyDNS library, so I figured I'd post my solution here.&lt;br /&gt;&lt;br /&gt;First, install the &lt;a href="http://pydns.sourceforge.net/"&gt;PyDNS &lt;/a&gt;library. Python has some native DNS stuff, but PyDNS just seems a lot nicer overall.&lt;br /&gt;&lt;br /&gt;Here's my code to do a PTR query, looking up a IPv4 address to find the corresponding DNS name. This code implements a global dictionary of addresses that have been previously resolved, avoiding the need to query the server repeatedly for the same address. You could remove that part if you're feeding a set of unique addresses into the function.&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;import&amp;nbsp; DNS&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;SERVER = '8.8.8.8' # put your DNS server address here&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;global ptr_cache&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;ptr_cache = {}&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;def get_ptr(address):&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; # check cache. &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ptr_cache.has_key(address):&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return ptr_cache[address]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; #reverse fields in IP address for use with in-addr.arpa query&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; fields = address.split('.')&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; fields.reverse()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; flippedaddr = '.'.join(fields)&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; #query DNS&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; d = DNS.DnsRequest(server=DNS_SERVER,timeout=1)&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; try:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; r = d.req(flippedaddr+'.in-addr.arpa',qtype='PTR')&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; except:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return "DNS Error"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; name = r.answers[0]['data']&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if name:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ptr_cache[address] = name&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return name&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5029689981158113588-8289156892801939052?l=unroutable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unroutable.blogspot.com/feeds/8289156892801939052/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5029689981158113588&amp;postID=8289156892801939052' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5029689981158113588/posts/default/8289156892801939052'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5029689981158113588/posts/default/8289156892801939052'/><link rel='alternate' type='text/html' href='http://unroutable.blogspot.com/2011/05/reverse-dns-lookups-with-python.html' title='Reverse DNS Lookups with Python'/><author><name>jswan</name><uri>http://www.blogger.com/profile/02571029118821999072</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5029689981158113588.post-5479821850385610180</id><published>2011-04-08T16:47:00.000-06:00</published><updated>2011-04-08T16:47:17.585-06:00</updated><title type='text'>Converting text to number in Excel</title><content type='html'>It took me too long to figure out how to typecast a string to a number in Excel. Preserving it here for posterity; use the "=VALUE()" function.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5029689981158113588-5479821850385610180?l=unroutable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unroutable.blogspot.com/feeds/5479821850385610180/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5029689981158113588&amp;postID=5479821850385610180' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5029689981158113588/posts/default/5479821850385610180'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5029689981158113588/posts/default/5479821850385610180'/><link rel='alternate' type='text/html' href='http://unroutable.blogspot.com/2011/04/converting-text-to-number-in-excel.html' title='Converting text to number in Excel'/><author><name>jswan</name><uri>http://www.blogger.com/profile/02571029118821999072</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5029689981158113588.post-5230870685050953597</id><published>2011-01-12T08:10:00.002-07:00</published><updated>2011-01-12T08:11:23.556-07:00</updated><title type='text'>Find Active Hostnames Per Network</title><content type='html'>Here's a quick trick I use to find the hostnames of all active IPv4 devices in a subnet:&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;$ &lt;b&gt;ssh routerIP.test.local 'sh arp | i Vlan70' | awk '{print $2}' | xargs -i dig -x {} +short&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;Password:&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;foo-tstsrv-01.test.local.&lt;br /&gt;foo-gissrv-01.test.local.&lt;br /&gt;foo-appsrv-01.test.local.&lt;br /&gt;foo-filsrv-03.test.local.&lt;br /&gt;foo-filsrv-02.test.local.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;Translated into English:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;&lt;b style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;ssh routerIP.test.local 'sh arp | i Vlan70'&lt;/b&gt;&lt;/span&gt; displays the ARP table for Vlan 70 on the router acting as the default gateway for that VLAN.&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;awk '{print $2}'&lt;/span&gt;&lt;/b&gt;&lt;/span&gt; extracts the second field from the output, which is the IPv4 address for the ARP entry.&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: x-small;"&gt;&lt;b style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;xargs -i dig -x {} +short&lt;/span&gt; &lt;/b&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: inherit;"&gt;takes each one of those IPv4 addresses and queries DNS for the hostname associated with the IP address (that is, the PTR record), using the "dig -x" command, with the +short parameter to display only the hostname. The {} syntax is a part of the xargs command which causes the output from the previous command (that is, the awk command output which produces just an IPv4 address) to be inserted in the place of the {} characters.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: inherit;"&gt;To run this on Windows, you need to have both &lt;a href="http://www.cygwin.com/"&gt;Cygwin &lt;/a&gt;and the &lt;a href="http://unroutable.blogspot.com/2009/02/how-to-install-dig-for-windows.html"&gt;dig command&lt;/a&gt; installed.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5029689981158113588-5230870685050953597?l=unroutable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unroutable.blogspot.com/feeds/5230870685050953597/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5029689981158113588&amp;postID=5230870685050953597' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5029689981158113588/posts/default/5230870685050953597'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5029689981158113588/posts/default/5230870685050953597'/><link rel='alternate' type='text/html' href='http://unroutable.blogspot.com/2011/01/find-active-hostnames-per-network.html' title='Find Active Hostnames Per Network'/><author><name>jswan</name><uri>http://www.blogger.com/profile/02571029118821999072</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5029689981158113588.post-336094196513826477</id><published>2011-01-04T14:38:00.003-07:00</published><updated>2011-01-04T16:58:30.001-07:00</updated><title type='text'>Troubleshoot Your Corporate-Speak</title><content type='html'>&lt;div style="font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;A friend of mine recently told me that I "have a hang-up about the meanings of words".&lt;/div&gt;&lt;div style="font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;Guilty as charged. I just read yet another press release that uses the idiotic expression "best-of-breed"--I'm at the point where seeing that phrase makes me want to throw a rock at the monitor.&lt;/div&gt;&lt;div style="font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;Here's a simple test for a CorporateSpeak buzzphrase: could you say the opposite, without sounding like a crazy person? If not, then your buzzphrase is meaningless. For example:&lt;/div&gt;&lt;div style="font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&lt;b&gt;"Best-of-Breed Vendors Offer Tested and Validated Solutions for Multiple Cisco VXI Deployment Options" &lt;/b&gt;&lt;/div&gt;&lt;div style="font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;Now, try the opposite:&lt;/div&gt;&lt;div style="font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&lt;b&gt;"Mediocre Vendors With More Successful Competitors Offer Tested and Validated Solutions for Multiple Cisco VXI Deployment Options" &lt;/b&gt;&lt;/div&gt;&lt;div style="font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;or&lt;/div&gt;&lt;div style="font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&lt;b&gt;"Worst-of-Breed Vendors Offer Tested and  Validated Solutions for Multiple Cisco VXI Deployment Options" &lt;/b&gt;&lt;/div&gt;&lt;div style="font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;No sane person would write that. Thus, the result of the test is that the changed phrase, "best-of-breed", obscures rather than enhances meaning.&lt;/div&gt;&lt;div style="font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;Another one I hear all the time is &lt;i&gt;"IT should work to serve the needs of the business."&lt;/i&gt; This one doesn't have any suspicious buzzphrases in it, but it's still completely meaningless: can you imagine saying "&lt;i&gt;IT should &lt;b&gt;not &lt;/b&gt;work to serve the needs of the business"&lt;/i&gt;? Of course not; you'd sound insane. Compare that with a similar, but meaningful and concrete sentence: &lt;i&gt;"IT should work to reduce costs by improving the performance of the accounting servers."&lt;/i&gt; With this sentence, IT is still "serving the needs of the business", but you could clearly state the opposite and still have meaning: one could certainly argue that IT's efforts are better spent in areas other than accounting without sounding crazy.&lt;/div&gt;&lt;div style="font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;One final example from a friend at a software firm. He received this in email from a guy in sales:&lt;/div&gt;&lt;div style="font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&lt;i&gt;"We need to write software that customers want to buy."&lt;/i&gt;&lt;/div&gt;&lt;div style="font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;The utter poverty of meaning in that waste of bits is left as an exercise for the reader.&lt;/div&gt;&lt;div style="font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;Now, I realize that these sorts of expressions have purposes other than enhancing meaning: they might serve to solicit agreement from the reader as a prelude to a more controversial assertion, or they might simply be not-so-subtle attempts at &lt;strike&gt;marketing &lt;/strike&gt;tricking the reader into a positive first impression. I don't really accept those excuses, though: rational people seek to create meaning, not to obscure it. Get into the habit of troubleshooting your meaning. One way is to test the opposite.&lt;/div&gt;&lt;div style="font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;Endnote:&lt;/div&gt;&lt;div style="font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;I have no idea if this idea is original or not. It seems like a simple enough idea that I may have gotten it from someone else, but if so, I don't remember and can't attribute the source.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5029689981158113588-336094196513826477?l=unroutable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unroutable.blogspot.com/feeds/336094196513826477/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5029689981158113588&amp;postID=336094196513826477' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5029689981158113588/posts/default/336094196513826477'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5029689981158113588/posts/default/336094196513826477'/><link rel='alternate' type='text/html' href='http://unroutable.blogspot.com/2011/01/troubleshoot-your-corporate-speak.html' title='Troubleshoot Your Corporate-Speak'/><author><name>jswan</name><uri>http://www.blogger.com/profile/02571029118821999072</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5029689981158113588.post-1296446236148377829</id><published>2010-12-17T16:09:00.002-07:00</published><updated>2010-12-17T16:13:27.198-07:00</updated><title type='text'>Generate DNS Import from Solarwinds Orion NCM</title><content type='html'>It's nice to have entries in your internal DNS for router interface names; it makes stuff like traceroute a whole lot easier to read. Many small-to-mid-size companies use &lt;a href="http://www.solarwinds.com/"&gt;Solarwinds &lt;/a&gt;products for network management.&lt;br /&gt;&lt;br /&gt;This perl script takes the output that you get from using Solarwinds Network Configuration Manager to run the "show ip interface brief | exclude unassigned" command on a group of Cisco IOS devices and massages it into a format that looks like this:&lt;br /&gt;&lt;br /&gt;hostname-interfaceName-interfaceNumber a.b.c.d&lt;br /&gt;&lt;br /&gt;where a.b.c.d is the IP address assigned to the interface. This format is suitable for import into many DNS servers.&lt;br /&gt;&lt;br /&gt;This code doesn't attempt to abbreviate interface names at all, but it could easily be modified to do so.&lt;br /&gt;&lt;br /&gt;I run this on Windows using &lt;a href="http://www.cygwin.com/"&gt;Cygwin &lt;/a&gt;and it works fine. The only caveat is that &lt;a href="http://unroutable.blogspot.com/2009/02/how-to-install-dig-for-windows.html"&gt;you need to have the dig command installed&lt;/a&gt;. &lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;#!/usr/bin/perl&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;#&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;# takes output from a Solarwinds Orion NCM command script&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;# that runs "show ip interface brief | exclude unassigned"&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;# and produces a "hostname IP" output for import into DNS&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;# this makes traceroutes more readable&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;#&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;# usage: ./interface2dns.pl &amp;lt; inputfile.txt&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;# inputfile.txt will look like this&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;# when produced by Orion NCM 6.x:&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;# &lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;# routerA.test.com&amp;nbsp; (10.38.16.126)&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;# Interface&amp;nbsp;&amp;nbsp; IP-Address&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; OK? Method Status Protocol&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;# Loopback0&amp;nbsp;&amp;nbsp; 172.29.255.1&amp;nbsp;&amp;nbsp;&amp;nbsp; YES NVRAM&amp;nbsp; up&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; up&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;# Vlan163&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 10.38.16.126&amp;nbsp;&amp;nbsp;&amp;nbsp; YES NVRAM&amp;nbsp; up&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; up&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;# Vlan165&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 10.38.16.117&amp;nbsp;&amp;nbsp;&amp;nbsp; YES NVRAM&amp;nbsp; up&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; up&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;#&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;#&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;while (&amp;lt;&amp;gt;){&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; chomp; # remove newline characters&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;# find the line with the hostname in it by searching&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;# for the "(" character&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;if ($_=~/\(/) { &lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; # split that line on the . character &lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @hostnameFields = split /\./,$_; &lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; # hostname is the first element before the first .&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $hostname=$hostnameFields[0]; &lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;}&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;# identify lines with "up" in them to remove garbage&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;if ($_=~/\s+up\s+/) { &lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; #split the good lines into space-separated fields &lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @fields=split&amp;nbsp; /\s+/,$_; &lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; #find RFC1918-like addresses only&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ($fields[1]=~/^10\.|172\.|192\./){ &lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; # skip IP addresses that are already in DNS&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; unless (`dig -x $fields[1] +short`) { &lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; #substitute - for / and : in dns names&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; $fields[0]=~s/\/|:/-/g; &lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; &lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; #print in "hostname-interface ipaddr" format&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; print "$hostname-$fields[0] $fields[1]\n"; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;}&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5029689981158113588-1296446236148377829?l=unroutable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unroutable.blogspot.com/feeds/1296446236148377829/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5029689981158113588&amp;postID=1296446236148377829' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5029689981158113588/posts/default/1296446236148377829'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5029689981158113588/posts/default/1296446236148377829'/><link rel='alternate' type='text/html' href='http://unroutable.blogspot.com/2010/12/generate-dns-import-from-solarwinds.html' title='Generate DNS Import from Solarwinds Orion NCM'/><author><name>jswan</name><uri>http://www.blogger.com/profile/02571029118821999072</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5029689981158113588.post-3495379850634187891</id><published>2010-12-06T14:47:00.004-07:00</published><updated>2010-12-06T16:32:39.568-07:00</updated><title type='text'>Encrypted GRE Tunnel with ASA for Encryption Offload</title><content type='html'>I have a requirement to connect two internal routers over a high-speed, 3rd party, non-Internet network.  The two routers need to run EIGRP with each other. We want to encrypt the link, but the routers don't support IPSec in their current configuration. Purchasing IPSec acceleration hardware for them is expensive, but we happen to have two ASAs in inventory that aren't currently in production.&lt;br /&gt;&lt;br /&gt;The simplest solution for this is to connect the two routers with a GRE tunnel, then use the ASAs to encrypt the GRE traffic.&lt;br /&gt;&lt;br /&gt;While I've worked with ASAs quite a bit as stateful packet filters and as remote access VPN headends, it's been a really long time since I've used one in a point-to-point VPN. I thought I'd blog about the lab proof-of-concept so that I don't forget everything about the configuration.&lt;br /&gt;&lt;br /&gt;My lab topology looks like this:&lt;br /&gt;&lt;br /&gt;R4---ASA1---ASA2---R5&lt;br /&gt;&lt;br /&gt;R4 and R5 have a standard GRE tunnel configured between them, running EIGRP to advertise their loopbacks. The tunnel destination is statically routed.&lt;br /&gt;&lt;br /&gt;On R4:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;interface Loopback0&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt; ip address 4.4.4.4 255.255.255.0&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;!&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;interface FastEthernet0/0&lt;br /&gt;&lt;/span&gt; &lt;span style="font-family:courier new;"&gt; description link to ASA1&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt; ip address 1.1.1.4 255.255.255.0&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;!&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;interface Tunnel50&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt; description GRE tunnel to R5, will be encrypted by ASA1&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt; ip address 50.1.1.4 255.255.255.0&lt;br /&gt; &lt;/span&gt; &lt;span style="font-family:courier new;"&gt;tunnel source FastEthernet0/0&lt;/span&gt;&lt;br /&gt;   &lt;span style="font-family:courier new;"&gt;tunnel destination 2.2.2.5&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;!&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;ip route 2.2.2.5 255.255.255.255 1.1.1.1&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;!&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;router eigrp 1&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;network 4.0.0.0&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;network 50.1.1.0 0.0.0.255&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;On R5:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;interface Loopback0&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;ip address 5.5.5.5 255.255.255.0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;!&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;interface FastEthernet0/0&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;description link to ASA2&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;ip address 2.2.2.5 255.255.255.0&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;!&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;interface Tunnel50&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;description GRE tunnel to R4, will be encrypted by ASA2&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; ip address 50.1.1.5 255.255.255.0&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;tunnel source FastEthernet0/0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; tunnel destination 1.1.1.4&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;!&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;router eigrp 1&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;network 5.0.0.0&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;network 50.1.1.0 0.0.0.255&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;no auto-summary&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;[Note: the difference in the EIGRP configs isn't a mistake. The lab routers are running two different images, one of which has auto-summary disabled by default. The other has it enabled by default, so I had to explicitly turn it off.]&lt;br /&gt;&lt;br /&gt;This is a pretty standard GRE configuration that is used all the time to make a virtual point-to-point circuit across any other network. I'm intentionally leaving out the MTU complications for now.&lt;br /&gt;&lt;br /&gt;Here's the interface configuration for ASA1:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;interface Ethernet0/2&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; description link to R4&lt;/span&gt;&lt;br /&gt; &lt;span style="font-family:courier new;"&gt;nameif inside&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;security-level 100&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;ip address 1.1.1.1 255.255.255.0&lt;/span&gt;&lt;br /&gt; &lt;span style="font-family:courier new;"&gt;!&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;interface Ethernet0/1&lt;/span&gt;&lt;br /&gt; &lt;span style="font-family:courier new;"&gt;description link to ASA2 representing 3rd party network&lt;/span&gt;&lt;br /&gt; &lt;span style="font-family:courier new;"&gt;nameif outside&lt;/span&gt;&lt;br /&gt; &lt;span style="font-family:courier new;"&gt;security-level 0&lt;/span&gt;&lt;br /&gt; &lt;span style="font-family:courier new;"&gt;ip address 100.1.1.1 255.255.255.0&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;and here's the same configuration from ASA2:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;interface Ethernet0/2&lt;/span&gt;&lt;br /&gt; &lt;span style="font-family:courier new;"&gt;description link to R5&lt;/span&gt;&lt;br /&gt; &lt;span style="font-family:courier new;"&gt;nameif inside&lt;/span&gt;&lt;br /&gt; &lt;span style="font-family:courier new;"&gt;security-level 100&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;ip address 2.2.2.1 255.255.255.0&lt;/span&gt;&lt;br /&gt; &lt;span style="font-family:courier new;"&gt;!&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;interface Ethernet0/1&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;description link to ASA1 representing 3rd party network&lt;br /&gt;&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;nameif outside&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;security-level 0&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;ip address 100.1.1.2 255.255.255.0&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Next, we need to configure IPSec on the ASAs. This is pretty similar to doing the same thing on a IOS router, with a couple of differences:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;crypto ipsec transform-set ESP_3DES esp-3des esp-sha-hmac&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;crypto ipsec security-association lifetime seconds 28800&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;crypto ipsec security-association lifetime kilobytes 4608000&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;crypto map P2P_CRYPTO_CM 10 match address R5_PHYSICAL&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;crypto map P2P_CRYPTO_CM 10 set peer 100.1.1.1&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;crypto map P2P_CRYPTO_CM 10 set transform-set ESP_3DES&lt;/span&gt;&lt;br /&gt; &lt;span style="font-family:courier new;"&gt;crypto map P2P_CRYPTO_CM interface outside&lt;br /&gt;&lt;/span&gt; &lt;span style="font-weight: bold; color: rgb(255, 0, 0);font-family:courier new;" &gt;crypto isakmp enable outside&lt;/span&gt;&lt;br /&gt; &lt;span style="font-family:courier new;"&gt;crypto isakmp policy 10&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;authentication pre-share&lt;br /&gt;&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;encryption 3des&lt;/span&gt;&lt;br /&gt; &lt;span style="font-family:courier new;"&gt;hash sha&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; group 2&lt;/span&gt;&lt;br /&gt; &lt;span style="font-family:courier new;"&gt;lifetime 86400&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;!&lt;br /&gt;&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;access-list R5_PHYSICAL extended permit ip host 2.2.2.5 host 1.1.1.4&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;When I first set this up, I forgot the unfamiliar &lt;span style="color: rgb(255, 0, 0);"&gt;crypto isakmp enable outside &lt;span style="color: rgb(0, 0, 0);"&gt;command,&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;and it took me a few minutes of looking at debugs to figure out why the ASA was dropping the IKE Phase 1 packets.&lt;br /&gt;&lt;br /&gt;The other part that's different from the IOS configuration is the presence of a "tunnel-group" that defines the tunnel type and the IKE pre-shared key:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;tunnel-group 100.1.1.1 type ipsec-l2l&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;tunnel-group 100.1.1.1 ipsec-attributes&lt;br /&gt;&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;pre-shared-key *****&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I also needed to turn off NAT control so that the ASA wouldn't drop packets without a pre-defined NAT translation:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;no nat-control&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The configuration on the other ASA is identical, except that the crypto ACL and peer addresses are reversed, just like they would be in an IOS configuration.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5029689981158113588-3495379850634187891?l=unroutable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unroutable.blogspot.com/feeds/3495379850634187891/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5029689981158113588&amp;postID=3495379850634187891' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5029689981158113588/posts/default/3495379850634187891'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5029689981158113588/posts/default/3495379850634187891'/><link rel='alternate' type='text/html' href='http://unroutable.blogspot.com/2010/12/encrypted-gre-tunnel-with-asa-for.html' title='Encrypted GRE Tunnel with ASA for Encryption Offload'/><author><name>jswan</name><uri>http://www.blogger.com/profile/02571029118821999072</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5029689981158113588.post-8156408289671246911</id><published>2010-12-02T14:07:00.004-07:00</published><updated>2010-12-02T14:19:08.514-07:00</updated><title type='text'>Detecting a Transparent Proxy with Wireshark/Tshark</title><content type='html'>Recently I got pulled into a debate between two colleagues who were troubleshooting a problem where some users could access a website over SSL, and others couldn't. One person was arguing that the problem was caused by client misconfiguration, and the other was arguing that it wasn't. Following my mantra "when in doubt, capture packets", we captured some traffic and had a look. I'm not going to go through the entire troubleshooting process; rather I'm going to focus on what was ultimately causing the problem. Here's the packet sequence, output from Tshark with some of the TCP details removed to make it fit:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;921  13.795492 10.100.100.192 -&gt; 184.86.133.186 TCP 50306 &gt; https [SYN]&lt;br /&gt;926  13.837731 184.86.133.186 -&gt; 10.100.100.192 TCP https &gt; 50306 [SYN, ACK]&lt;br /&gt;927  13.837753 10.100.100.192 -&gt; 184.86.133.186 TCP 50306 &gt; https [ACK]&lt;br /&gt;928  13.838086 10.100.100.192 -&gt; 184.86.133.186 SSL Client Hello&lt;br /&gt;932  13.840253 184.86.133.186 -&gt; 10.100.100.192 TCP https &gt; 50306 [RST]&lt;br /&gt;943  13.879563 184.86.133.186 -&gt; 10.100.100.192 TCP https &gt; 50306 [ACK]&lt;br /&gt;944  13.879588 10.100.100.192 -&gt; 184.86.133.186 TCP 50306 &gt; https [RST]&lt;br /&gt;945  13.880052 184.86.133.186 -&gt; 10.100.100.192 TCP https &gt; 50306 [RST]&lt;br /&gt;946  13.881491 184.86.133.186 -&gt; 10.100.100.192 TLSv1 Server Hello&lt;br /&gt;947  13.881513 10.100.100.192 -&gt; 184.86.133.186 TCP 50306 &gt; https [RST]&lt;br /&gt;948  13.881535 184.86.133.186 -&gt; 10.100.100.192 TLSv1 Certificate, Server Hello Done&lt;br /&gt;949  13.881545 10.100.100.192 -&gt; 184.86.133.186 TCP 50306 &gt; https [RST]&lt;br /&gt;950  13.881554 184.86.133.186 -&gt; 10.100.100.192 TCP https &gt; 50306 [RST]&lt;br /&gt;953  13.882063 184.86.133.186 -&gt; 10.100.100.192 TCP https &gt; 50306 [RST]&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The key thing to note here is the delta between the SYN and SYN/ACK: about 42ms. When I was viewing this in Wireshark I set a packet time reference on packet #921, using the "Ctrl T" keyboard shortcut; this makes it easier to see the delta values.&lt;br /&gt;&lt;br /&gt;I then set another time reference on packet 931, the TLSv1 Client Hello. Immediately following this, less than 1 millisecond later, we see a RST come back from the server. Red flag! Since we already established the probable latency between the hosts as ~42ms using the SYN - SYN/ACK pair, this is extremely suspicious.&lt;br /&gt;&lt;br /&gt;A few packets later, we see a TLSv1 Server Hello message inbound, AFTER the RST. The delta? Approximately 42ms, exactly what we'd expect.&lt;br /&gt;&lt;br /&gt;I immediately inferred from this that a transparent proxy content filter was spoofing the RST due to something that it deemed to be objectionable content, and for whatever reason it wasn't notifying the user.&lt;br /&gt;&lt;br /&gt;I talked to the administrator for the content filter, and indeed, a policy had been incorrectly applied to some users that blocked the content in question.&lt;br /&gt;&lt;br /&gt;Another win for packet capture.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5029689981158113588-8156408289671246911?l=unroutable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unroutable.blogspot.com/feeds/8156408289671246911/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5029689981158113588&amp;postID=8156408289671246911' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5029689981158113588/posts/default/8156408289671246911'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5029689981158113588/posts/default/8156408289671246911'/><link rel='alternate' type='text/html' href='http://unroutable.blogspot.com/2010/12/detecting-transparent-proxy-with.html' title='Detecting a Transparent Proxy with Wireshark/Tshark'/><author><name>jswan</name><uri>http://www.blogger.com/profile/02571029118821999072</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5029689981158113588.post-1605595333805960171</id><published>2010-11-18T07:58:00.004-07:00</published><updated>2010-11-18T08:47:18.621-07:00</updated><title type='text'>playing with VLAN-based QoS</title><content type='html'>A friend of mine brought up an interesting question yesterday:&lt;br /&gt;&lt;br /&gt;Will the "mls qos vlan-based" command mark packets if the packets aren't routed by the SVI where the service policy is applied?&lt;br /&gt;&lt;br /&gt;I had never even considered this before, so I guessed "no" before reading the docs. Then I set it up in the lab, and the answer (superficially) still seemed to be "no". Then, however, I executed the old RTFM maneuver: the docs made it sound like the answer should be "yes". So I thought I'd have a closer look. Here are the details.&lt;br /&gt;&lt;br /&gt;The test topology looks like this:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;R5---Switch1---Switch2---Cat3750---R6&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;R5 &amp;amp; R6 are 2800 series routers.&lt;/li&gt;&lt;li&gt;Switch1 and Switch2 are 3560s.&lt;/li&gt;&lt;li&gt;Cat3750, unsurprisingly, is a Catalyst 3750, and the subject of the test.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;All of the inter-switch links are 802.1q trunks, and the two routers are connected to access ports in VLAN 6.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;R5's interface IP address is 10.6.6.5, with a loopback of 5.5.5.5.&lt;/li&gt;&lt;li&gt;R6's interface IP address is 10.6.6.6, with a loopback of 6.6.6.6.&lt;/li&gt;&lt;li&gt;R5 and R6 are running OSPF on all interfaces and are neighbors when the test begins.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;First, I set up a QoS policy on the 3750 that would make packets distinguishable from each other:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;ip access-list extended ALL&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; permit ip any any&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;!&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;class-map match-any FOO&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; match access-group name ALL&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;!&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;policy-map IN-MARKING&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; class FOO&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  set ip dscp cs2&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; class class-default&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  set dscp cs1&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Then I applied the policy-map to an unrouted SVI for VLAN 6:&lt;br /&gt;&lt;br /&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;interface Vlan6&lt;br /&gt;no ip address&lt;br /&gt;service-policy input IN-MARKING&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Then I set R6's access port for VLAN-based QoS:&lt;br /&gt;&lt;br /&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;interface FastEthernet1/0/2&lt;br /&gt;switchport access vlan 6&lt;br /&gt;switchport mode access&lt;br /&gt;mls qos vlan-based&lt;br /&gt;spanning-tree portfast&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Since all traffic should be marked as CS2, the OSPF hello packets being exchanged between R5 and R6 should get marked immediately if the policy is working, but I also generated some ICMP and telnet traffic just for good measure.&lt;br /&gt;&lt;br /&gt;My superficial, pre-RTFM diagnosis, said it wasn't working:&lt;br /&gt;&lt;br /&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;c3750#sh policy-map interface&lt;br /&gt;Vlan6&lt;br /&gt;&lt;br /&gt;Service-policy input: IN-MARKING&lt;br /&gt;&lt;br /&gt;  Class-map: FOO (match-any)&lt;br /&gt;    0 packets, 0 bytes&lt;br /&gt;    5 minute offered rate 0 bps, drop rate 0 bps&lt;br /&gt;    Match: access-group name ALL&lt;br /&gt;      0 packets, 0 bytes&lt;br /&gt;      5 minute rate 0 bps&lt;br /&gt;&lt;br /&gt;  Class-map: class-default (match-any)&lt;br /&gt;    0 packets, 0 bytes&lt;br /&gt;    5 minute offered rate 0 bps, drop rate 0 bps&lt;br /&gt;    Match: any&lt;br /&gt;      0 packets, 0 bytes&lt;br /&gt;      5 minute rate 0 bps&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;After my RTFM episode, I started wondering if the packets were getting marked anyway, but not counted by the switch. Idecided to try applying a service policy on R5 that would have rather dramatic effects if the packets were in fact marked:&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;class-map match-any CM_CS2&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; match ip dscp cs2&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;!&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;policy-map PM_DROP_CS2&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; class CM_CS2&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;   drop&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;then...&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;R5(config)#int f0/0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;R5(config-if)#service-policy input PM_DROP_CS2&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;R5(config-if)#&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;R5(config-if)#&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;*Nov 18 15:37:18.097: %OSPF-5-ADJCHG: Process 1, Nbr 20.1.1.6 on FastEthernet0/0 from FULL to DOWN, Neighbor Down: Dead timer expired&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;R5#sh policy-map interface f0/0 input class CM_CS2&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; FastEthernet0/0&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  Service-policy input: PM_DROP_CS2&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    Class-map: CM_CS2 (match-any)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;      20 packets, 1880 bytes&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;      5 minute offered rate 0 bps, drop rate 0 bps&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;      Match: ip dscp cs2 (16)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        20 packets, 1880 bytes&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        5 minute rate 0 bps&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;      drop&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;So... in conclusion: the "mls qos vlan-based" command does indeed work for service policies applied to interfaces that don't route packets for the VLAN... essentially, the command causes the access port to inherit the QoS policy applied to the SVI, and the SVI doesn't count them. This does actually make sense, but it took working through the lab to make my brain process it correctly.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5029689981158113588-1605595333805960171?l=unroutable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unroutable.blogspot.com/feeds/1605595333805960171/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5029689981158113588&amp;postID=1605595333805960171' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5029689981158113588/posts/default/1605595333805960171'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5029689981158113588/posts/default/1605595333805960171'/><link rel='alternate' type='text/html' href='http://unroutable.blogspot.com/2010/11/playing-with-vlan-based-qos.html' title='playing with VLAN-based QoS'/><author><name>jswan</name><uri>http://www.blogger.com/profile/02571029118821999072</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5029689981158113588.post-4792771915511608341</id><published>2010-10-28T09:53:00.002-06:00</published><updated>2010-10-28T10:25:43.883-06:00</updated><title type='text'>Links to Network World Blog Posts</title><content type='html'>Last spring I wrote a series of guest blog posts on Network World, so I thought I'd link them here for future reference:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.networkworld.com/community/node/60693"&gt;IOS Output Filters&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.networkworld.com/community/node/60829"&gt;More IOS Output Filters&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.networkworld.com/community/blog/finding-ip-addresses"&gt;Finding IP Addresses&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.networkworld.com/community/blog/netflow-part-1"&gt;NetFlow Part 1&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.networkworld.com/community/blog/netflow-top-talkers"&gt;NetFlow Part 2&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.networkworld.com/community/blog/netflow-part-3"&gt;NetFlow Part 3&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.networkworld.com/community/blog/when-doubt-capture-packets"&gt;When in Doubt, Capture Packets&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5029689981158113588-4792771915511608341?l=unroutable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unroutable.blogspot.com/feeds/4792771915511608341/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5029689981158113588&amp;postID=4792771915511608341' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5029689981158113588/posts/default/4792771915511608341'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5029689981158113588/posts/default/4792771915511608341'/><link rel='alternate' type='text/html' href='http://unroutable.blogspot.com/2010/10/links-to-network-world-blog-posts.html' title='Links to Network World Blog Posts'/><author><name>jswan</name><uri>http://www.blogger.com/profile/02571029118821999072</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5029689981158113588.post-683058814010431885</id><published>2010-09-27T21:32:00.002-06:00</published><updated>2010-09-28T07:11:25.279-06:00</updated><title type='text'>Counting Regex Matches on Catalyst Switches</title><content type='html'>&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: arial;"&gt;As an old-time Unix/Linux guy, I’ve been wanting the IOS equivalent of the “wc -l” command for oh, about a million years now. Juniper has had this in JunOS for quite some time, via their “count” command. In Unix/Linux shell environments, “wc -l” counts the number of lines in the input. This is very useful for things like counting the number of unused ports on a switch. Until recently, I was stuck with using SSH one-liners to pipe IOS commands through a shell filter, like this:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;$ ssh 10.1.1.2 'sh int status | i not|disa' | wc -l&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;Password:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;19&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;In English: this executes the command “show interface status | include not|disa” via SSH on the remote device, which returns all the lines that are in either the “notconnected” or “disabled” status. Then it feeds those lines to the “wc -l” command, which counts the lines.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;A couple of months ago, however, I noticed that recent versions of IOS for the Catalyst access switches (3560/3750, and probably the 2960--I haven’t tested the latter) have a “count” filter:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;Switch#sh int status | count ?&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;LINE Regular Expression&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;Switch#sh int status | count not|disa&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;Number of lines which match regexp = 19&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;Anyway, nothing particularly groundbreaking here, just a nice feature that’s long overdue--I hope it gets ported into other IOS images as well.&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5029689981158113588-683058814010431885?l=unroutable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unroutable.blogspot.com/feeds/683058814010431885/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5029689981158113588&amp;postID=683058814010431885' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5029689981158113588/posts/default/683058814010431885'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5029689981158113588/posts/default/683058814010431885'/><link rel='alternate' type='text/html' href='http://unroutable.blogspot.com/2010/09/counting-regex-matches-on-catalyst.html' title='Counting Regex Matches on Catalyst Switches'/><author><name>jswan</name><uri>http://www.blogger.com/profile/02571029118821999072</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5029689981158113588.post-1653975035991115963</id><published>2010-07-02T22:01:00.004-06:00</published><updated>2010-07-02T22:48:58.400-06:00</updated><title type='text'>Cisco Live 2010</title><content type='html'>This was my 6th consecutive year at CiscoLive (formerly known as Networkers), and as always I had a great time. I thought I'd write down a few brief thoughts on my sessions and other experiences this year.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;802.1x 8-Hour Techtorial&lt;/span&gt;&lt;br /&gt;This was the first time I've done a "techtorial" (Cisco's term for a 4 or 8 hour expanded seminar that costs extra) since 2006, and it was probably the best one I've done. All of the presenters were excellent, and they did a great job of keeping the class engaged by switching frequently between lecture and live demonstrations by three different instructors. They also included a real-world case study, presented by the actual customer involved (a large Canadian university). Cisco has a tendency to make up artificial case studies (or anonymize them to the point of making them pointless), so it was great to see a live customer on stage, presenting the entire implementation process, warts and all.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;LISP - A Next Generation Networking Architecture&lt;/span&gt;&lt;br /&gt;I have read a fair bit about LISP over the last couple of years, but this was the first time I've gone to a session on it. Basically, Dino and company are trying to solve three or four of the biggest problems in networking in one fell swoop: 1) global routing table size, 2) certain types of IPv4/IPv6 transport issues, 3) virtual machine mobility, and possibly 4) other mobility problems. I really don't have the background to evaluate a protocol that's designed to solve extremely difficult problems at a global scale, but it was fascinating to see the thought process and design issues involved.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Routed Fast Convergence and High Availability&lt;/span&gt;&lt;br /&gt;I have been hearing about this session for years, and it didn't disappoint. I was already familiar with most of the tools discussed, but the devil is in the details, and I came away with a much better understanding of many techniques used to achieve fast convergence in routed networks.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Smart Grid: Developing a Communications Architecture for the Utility of the Future&lt;/span&gt;&lt;br /&gt;I didn't intend to visit this session initially, but the speaker was late for my scheduled session, and I had no interest in sitting around waiting for him to show up. This session was happening nearby, and I knew that Bill Parkhurst is something of a network architecture guru, so it was an easy pick. Even though I have absolutely no background in the electrical utility world, this was a very useful session from a general professional development perspective.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Unified HA Network Design: The Evolution of the Next Generation Network&lt;/span&gt;&lt;br /&gt;If I could recommend only one session on large-scale network design, this would be it. These guys are working on the largest, most failure-sensitive networks on the planet, and they're giving away what they've learned. What more needs to be said?&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Advanced Security Management &amp;amp; Incident Response&lt;/span&gt;&lt;br /&gt;This was my second time attending this session (the last time was in 2007), and it was definitely worth attending a second time. I really like operationally-focused sessions (as opposed to product-focused ones), and that's what this one is all about. The presenters are front-line senior incident responders in Cisco's internal security organization, and it's great to see how they deploy Cisco tools and even (gasp) non-Cisco tools to respond to actual security incidents. I really hope they can convince the powers-that-be to let them run this as an expanded, 8-hour techtorial on security operations.&lt;br /&gt;&lt;br /&gt;Those are the highlights of my sessions. I didn't attend a single session this year that was actually bad, but those were the ones that stood out the most.&lt;br /&gt;&lt;br /&gt;Other thoughts: the meals were above average compared to previous years, except for breakfast. I hate getting to a breakfast and seeing nothing but bread products and some random, lonely looking fruit. The CCIE party was great; probably the best one I've attended. The CCIE NetVet reception with John Chambers was also excellent. My biggest complaint continues to be the ominous warnings about a $100 fee to replace a lost conference badge. I've never lost mine, but this just seems patently ridiculous.&lt;br /&gt;&lt;br /&gt;As always, though, simply meeting other networking-focused professionals and renewing friendships with people I've known from previous years was the best part of the show.&lt;br /&gt;&lt;br /&gt;Hoping to be back next year!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5029689981158113588-1653975035991115963?l=unroutable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unroutable.blogspot.com/feeds/1653975035991115963/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5029689981158113588&amp;postID=1653975035991115963' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5029689981158113588/posts/default/1653975035991115963'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5029689981158113588/posts/default/1653975035991115963'/><link rel='alternate' type='text/html' href='http://unroutable.blogspot.com/2010/07/cisco-live-2010.html' title='Cisco Live 2010'/><author><name>jswan</name><uri>http://www.blogger.com/profile/02571029118821999072</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5029689981158113588.post-545689681133289810</id><published>2010-05-05T19:30:00.001-06:00</published><updated>2010-05-05T19:31:22.945-06:00</updated><title type='text'>guest blogging</title><content type='html'>I'm guest blogging on IOS tips and tricks this month at &lt;a href="http://www.networkworld.com/community/blog/12949"&gt;Network World&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5029689981158113588-545689681133289810?l=unroutable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unroutable.blogspot.com/feeds/545689681133289810/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5029689981158113588&amp;postID=545689681133289810' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5029689981158113588/posts/default/545689681133289810'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5029689981158113588/posts/default/545689681133289810'/><link rel='alternate' type='text/html' href='http://unroutable.blogspot.com/2010/05/guest-blogging.html' title='guest blogging'/><author><name>jswan</name><uri>http://www.blogger.com/profile/02571029118821999072</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5029689981158113588.post-2116862568102627146</id><published>2010-04-16T15:16:00.002-06:00</published><updated>2010-04-16T15:17:46.037-06:00</updated><title type='text'>Dan Geer on Cybersecurity</title><content type='html'>I love Dan Geer's article "&lt;a href="http://www.harvardnsj.com/2010/04/cybersecurity-and-national-policy/"&gt;Cybersecurity and National Policy&lt;/a&gt;".&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5029689981158113588-2116862568102627146?l=unroutable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unroutable.blogspot.com/feeds/2116862568102627146/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5029689981158113588&amp;postID=2116862568102627146' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5029689981158113588/posts/default/2116862568102627146'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5029689981158113588/posts/default/2116862568102627146'/><link rel='alternate' type='text/html' href='http://unroutable.blogspot.com/2010/04/dan-geer-on-cybersecurity.html' title='Dan Geer on Cybersecurity'/><author><name>jswan</name><uri>http://www.blogger.com/profile/02571029118821999072</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5029689981158113588.post-7100435199495821187</id><published>2010-04-09T10:49:00.004-06:00</published><updated>2010-04-09T11:20:08.801-06:00</updated><title type='text'>Wireshark Network Analysis</title><content type='html'>For the last week I've been reading Laura Chappell's new book, &lt;a href="http://www.wiresharkbook.com/"&gt;Wireshark Network Analysis&lt;/a&gt;. I pre-ordered the book and was looking forward to it eagerly.&lt;br /&gt;&lt;br /&gt;Overall, it's a superb book. First and foremost, I appreciate the fact that the writing has some personality to it. I've really enjoyed the author's footnotes, anecdotes, and humor.&lt;br /&gt;&lt;br /&gt;Second, I like the fact that it's exhaustively thorough with both features and examples. There are relatively few cases where the Chappell simply describes a feature without offering an example of how it might be used in practice. Where she does so, the example is obvious enough to be unnecessary.&lt;br /&gt;&lt;br /&gt;Particularly good are the examples of practical Wireshark tips and tricks in the protocol-specific sections. As an advanced Wireshark user with a thorough background in the internals of common network protocol operations, I was worried that this would be just another set of explanations of how various protocols work. Those explanations are there, but they are interspersed with many great tips and tricks about how to analyze the protocols more quickly and efficiently with Wireshark. I kept thinking, "why didn't I ever think of using that trick before?"&lt;br /&gt;&lt;br /&gt;There is a lot here for both beginning and advanced Wireshark users.&lt;br /&gt;&lt;br /&gt;I don't have a lot of criticisms to make: I thought the security sections were interesting, but a little dated. Exotic network and transport layer attacks just aren't all that common anymore; it would have been cool to have seen some analysis of a modern application-layer attack in action.&lt;br /&gt;&lt;br /&gt;The other thing I would have liked is a discussion of the Lua scripting-language extensions to Wireshark. There is very little out there on the Internet about this so far, and most of what exists is oriented toward expert-level programmers. I was a bit disappointed to not even find Lua in the index. Still, the book is already huge, and adding a section on scripting might have made it unreasonably long. Maybe a volume 2?&lt;br /&gt;&lt;br /&gt;Summary: if you use Wireshark, just buy it. This is an amazingly practical, hands-on book that will make you faster and more productive when analyzing network captures.&lt;br /&gt;&lt;br /&gt;Blogging disclaimer: I paid full retail price for the book (and managed to somehow miss all the promo coupons) and am not being compensated in any way for this review.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5029689981158113588-7100435199495821187?l=unroutable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unroutable.blogspot.com/feeds/7100435199495821187/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5029689981158113588&amp;postID=7100435199495821187' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5029689981158113588/posts/default/7100435199495821187'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5029689981158113588/posts/default/7100435199495821187'/><link rel='alternate' type='text/html' href='http://unroutable.blogspot.com/2010/04/wireshark-network-analysis.html' title='Wireshark Network Analysis'/><author><name>jswan</name><uri>http://www.blogger.com/profile/02571029118821999072</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5029689981158113588.post-2218392405918719826</id><published>2010-01-04T17:57:00.002-07:00</published><updated>2010-01-04T17:58:09.284-07:00</updated><title type='text'>computer crime and the small/medium business</title><content type='html'>Good post on the little-known computer crime wave targeting small/medium businesses:&lt;br /&gt;&lt;br /&gt;http://www.krebsonsecurity.com/2010/01/buried-warning-signs-2/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5029689981158113588-2218392405918719826?l=unroutable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unroutable.blogspot.com/feeds/2218392405918719826/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5029689981158113588&amp;postID=2218392405918719826' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5029689981158113588/posts/default/2218392405918719826'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5029689981158113588/posts/default/2218392405918719826'/><link rel='alternate' type='text/html' href='http://unroutable.blogspot.com/2010/01/computer-crime-and-smallmedium-business.html' title='computer crime and the small/medium business'/><author><name>jswan</name><uri>http://www.blogger.com/profile/02571029118821999072</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5029689981158113588.post-1282790935584434206</id><published>2009-12-31T08:42:00.005-07:00</published><updated>2009-12-31T08:54:45.874-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IOS upgrade'/><category scheme='http://www.blogger.com/atom/ns#' term='microcode'/><category scheme='http://www.blogger.com/atom/ns#' term='catalyst switch'/><title type='text'>predicting reload times on Catalyst 3560/3750</title><content type='html'>During a recent IOS upgrade on a Catalyst 3560, I was connected to the console and noticed that the reload was taking much longer than usual due to some operations by the "Front End Microcode IMG Mgr". The output looked like this:&lt;br /&gt;&lt;br /&gt;&lt;span&gt;&lt;span&gt;&lt;pre&gt;&lt;span&gt;POST: PortASIC RingLoopback Tests : Begin&lt;br /&gt;POST: PortASIC RingLoopback Tests : End, Status Passed&lt;br /&gt;&lt;br /&gt;front_end/ (directory)&lt;br /&gt;extracting front_end/fe_type_1 (34760 bytes)&lt;br /&gt;extracting front_end/front_end_ucode_info (86 bytes)&lt;br /&gt;extracting front_end/fe_type_2 (73104 bytes)&lt;br /&gt;extracting ucode_info (76 bytes)&lt;br /&gt;&lt;br /&gt;Front-end Microcode IMG MGR: Installed 3 image(s) in cache:&lt;br /&gt;&lt;br /&gt;Front-end Microcode IMG MGR: found microcode images for 3 devices.&lt;br /&gt;Image for front-end 0: flash:/front_end_ucode_cache/ucode.1&lt;br /&gt;Image for front-end 7: flash:/front_end_ucode_cache/ucode.1&lt;br /&gt;Image for front-end 14: flash:/front_end_ucode_cache/ucode.1&lt;br /&gt;&lt;br /&gt;Front-end Microcode IMG MGR: Preparing to program device microcode...&lt;br /&gt;Front-end Microcode IMG MGR: Preparing to program device[0]...26580 bytes.&lt;br /&gt;Front-end Microcode IMG MGR: Programming device 0...rwRrrrrrrwsssspsssspsssspsss&lt;br /&gt;spsssspsssspsssspsssspsssspsssspsssspsssspsssspsssspsssspsssspsssspsssspsssspsss&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/span&gt;&lt;/span&gt;[output truncated]&lt;br /&gt;&lt;br /&gt;I opened a TAC case to find out what this is, since if you are relying on highly predictable reload times during a maintenance window, this could throw a wrench into your plans.&lt;br /&gt;&lt;br /&gt;It turns out that the Catalyst switches have a special-purpose microcontroller that rarely needs to be upgraded. When it does need upgrading, however, the upgrade happens as a normal part of a new IOS image load. This upgrade makes the first reload to the new IOS take much longer than usual--I didn't time it, but I would guess 3-4 times longer than normal.&lt;br /&gt;&lt;br /&gt;Microcontroller upgrades are not typically listed in the image release notes, so the only way to know for sure how long a particular upgrade is going to take is to test it in a lab, using the exact same before/after images that you will use in production.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5029689981158113588-1282790935584434206?l=unroutable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unroutable.blogspot.com/feeds/1282790935584434206/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5029689981158113588&amp;postID=1282790935584434206' title='12 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5029689981158113588/posts/default/1282790935584434206'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5029689981158113588/posts/default/1282790935584434206'/><link rel='alternate' type='text/html' href='http://unroutable.blogspot.com/2009/12/predicting-reload-times-on-catalyst.html' title='predicting reload times on Catalyst 3560/3750'/><author><name>jswan</name><uri>http://www.blogger.com/profile/02571029118821999072</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>12</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5029689981158113588.post-575099909550481781</id><published>2009-12-21T13:19:00.004-07:00</published><updated>2009-12-21T13:50:32.652-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tcam'/><category scheme='http://www.blogger.com/atom/ns#' term='acl'/><category scheme='http://www.blogger.com/atom/ns#' term='qos'/><title type='text'>ACLs and TCAMs in Catalyst Switches</title><content type='html'>One of the things you need to look at when designing networks with Catalyst switches is the potential for TCAM exhaustion due to ACL and QoS configuration. Here are a couple of documents that explain the issue:&lt;br /&gt;&lt;br /&gt;Catalyst 6500&lt;br /&gt;&lt;a href="http://www.cisco.com/en/US/products/hw/switches/ps708/products_white_paper09186a00800c9470.shtml"&gt;http://www.cisco.com/en/US/products/hw/switches/ps708/products_white_paper09186a00800c9470.shtml&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Catalyst 4500 and 4900 Series&lt;br /&gt;&lt;a href="http://www.cisco.com/en/US/products/hw/switches/ps663/products_tech_note09186a008054a499.shtml"&gt;http://www.cisco.com/en/US/products/hw/switches/ps663/products_tech_note09186a008054a499.shtml&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5029689981158113588-575099909550481781?l=unroutable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unroutable.blogspot.com/feeds/575099909550481781/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5029689981158113588&amp;postID=575099909550481781' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5029689981158113588/posts/default/575099909550481781'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5029689981158113588/posts/default/575099909550481781'/><link rel='alternate' type='text/html' href='http://unroutable.blogspot.com/2009/12/acls-and-tcams-in-catalyst-switches.html' title='ACLs and TCAMs in Catalyst Switches'/><author><name>jswan</name><uri>http://www.blogger.com/profile/02571029118821999072</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5029689981158113588.post-5096929024296460837</id><published>2009-12-15T10:25:00.004-07:00</published><updated>2009-12-15T10:43:28.116-07:00</updated><title type='text'>ten steps of small LAN design</title><content type='html'>A few days ago I posted an amusing comment on Ivan Pepelnjak's always excellent &lt;a href="http://blog.ioshints.info/"&gt;Cisco IOS Hints and Tricks &lt;/a&gt;blog, and he found it funny enough to create a &lt;a href="http://blog.ioshints.info/2009/12/ten-steps-of-small-lan-design.html"&gt;separate post&lt;/a&gt;. I'll repeat my ten step program here for future reference:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;   Build everything at layer 2 because "it's simpler".&lt;/li&gt;&lt;li&gt;   Scale a little.&lt;/li&gt;&lt;li&gt;   Things start breaking mysteriously. Run around in circles. Learn about packet sniffers and STP.&lt;/li&gt;&lt;li&gt;   Learn about layer 3 features in switches you already own. Start routing.&lt;/li&gt;&lt;li&gt;   Scale more.&lt;/li&gt;&lt;li&gt;   Things start breaking mysteriously. Learn about TCAMs. Start wishing for NetFlow.&lt;/li&gt;&lt;li&gt;   Redesign. Buy stuff.&lt;/li&gt;&lt;li&gt;   Scale more.&lt;/li&gt;&lt;li&gt;   VMWare jockeys start asking about bridging across the WAN.&lt;/li&gt;&lt;li&gt;  Enroll in hair loss program.&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5029689981158113588-5096929024296460837?l=unroutable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unroutable.blogspot.com/feeds/5096929024296460837/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5029689981158113588&amp;postID=5096929024296460837' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5029689981158113588/posts/default/5096929024296460837'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5029689981158113588/posts/default/5096929024296460837'/><link rel='alternate' type='text/html' href='http://unroutable.blogspot.com/2009/12/ten-steps-of-small-lan-design.html' title='ten steps of small LAN design'/><author><name>jswan</name><uri>http://www.blogger.com/profile/02571029118821999072</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5029689981158113588.post-1176179197458489569</id><published>2009-12-15T10:11:00.004-07:00</published><updated>2009-12-15T14:09:50.720-07:00</updated><title type='text'>incoming dial-peers</title><content type='html'>I had an interesting troubleshooting experience that showed me that I didn't fully understand how incoming dial-peers work with POTS lines.&lt;br /&gt;&lt;br /&gt;I had a simple H.323 config that hands off a call arriving on an FXO port to CallManager:&lt;br /&gt;&lt;br /&gt;&lt;span&gt;&lt;span&gt;&lt;pre&gt;&lt;span&gt;voice-port 1/0/2&lt;br /&gt;connection plar 7001&lt;br /&gt;description POTS line&lt;br /&gt;caller-id enable&lt;br /&gt;&lt;br /&gt;dial-peer voice 7001 voip&lt;br /&gt;destination-pattern 700.&lt;br /&gt;session target ipv4:10.1.1.100&lt;br /&gt;dtmf-relay h245-alphanumeric&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;When a call was placed to the line connected to the FXO port on 1/0/2, the call would be sent to the IP phone with the wrong caller ID.&lt;br /&gt;&lt;br /&gt;I ran a "debug voip ccapi" and discovered that the incoming dial-peer was not the default dial-peer 0, but another dial-peer (numbers sanitized):&lt;br /&gt;&lt;br /&gt;&lt;span&gt;&lt;span&gt;&lt;pre&gt;&lt;span&gt;dial-peer voice 1000 pots&lt;br /&gt;description 555-1212&lt;br /&gt;destination-pattern 1212&lt;br /&gt;clid network-number 9705551212&lt;br /&gt;port 1/0/2&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This dial-peer had accidentally been left active from a prior configuration, and its "clid network-number" command was thus overwriting the correct caller ID.&lt;br /&gt;&lt;br /&gt;I didn't know this previously, but it turns out that an incoming POTS dial peer is matched if it has a "port" statement equal to the inbound voice-port, AND any one of the following three commands is present:&lt;br /&gt;&lt;br /&gt;incoming called-number&lt;br /&gt;answer-address&lt;br /&gt;destination-pattern&lt;br /&gt;&lt;br /&gt;Removing the destination-pattern command or removing the dial-peer entirely corrects the problem and causes dial-peer 0 to be matched inbound.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5029689981158113588-1176179197458489569?l=unroutable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unroutable.blogspot.com/feeds/1176179197458489569/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5029689981158113588&amp;postID=1176179197458489569' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5029689981158113588/posts/default/1176179197458489569'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5029689981158113588/posts/default/1176179197458489569'/><link rel='alternate' type='text/html' href='http://unroutable.blogspot.com/2009/12/incoming-dial-peers.html' title='incoming dial-peers'/><author><name>jswan</name><uri>http://www.blogger.com/profile/02571029118821999072</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5029689981158113588.post-5667920424984028273</id><published>2009-12-08T17:35:00.002-07:00</published><updated>2009-12-08T17:37:27.852-07:00</updated><title type='text'>simple exclusion filters</title><content type='html'>I use these constantly (and many others, but these come first to mind):&lt;br /&gt;&lt;br /&gt;display only interfaces with assigned IP addresses:&lt;br /&gt;sh ip int b | e una&lt;br /&gt;&lt;br /&gt;display only active switch interfaces:&lt;br /&gt;sh int status | e not&lt;br /&gt;&lt;br /&gt;display CDP neighbors, except phones:&lt;br /&gt;sh cdp n | e SEP&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5029689981158113588-5667920424984028273?l=unroutable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unroutable.blogspot.com/feeds/5667920424984028273/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5029689981158113588&amp;postID=5667920424984028273' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5029689981158113588/posts/default/5667920424984028273'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5029689981158113588/posts/default/5667920424984028273'/><link rel='alternate' type='text/html' href='http://unroutable.blogspot.com/2009/12/simple-exclusion-filters.html' title='simple exclusion filters'/><author><name>jswan</name><uri>http://www.blogger.com/profile/02571029118821999072</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5029689981158113588.post-8402798683526829771</id><published>2009-06-23T10:19:00.002-06:00</published><updated>2009-06-23T10:23:15.305-06:00</updated><title type='text'>RIP database and administrative distance</title><content type='html'>I was helping a friend study for CCNA the other day and saw a RIP behavior I'd never noticed before. I knew that RIP keeps a local route database that is displayed with the &lt;span style="font-weight: bold; font-family: courier new;"&gt;show ip rip database&lt;/span&gt; command. If another route to the same prefix with a better administrative distance is preferred in the global routing table, however, the RIP database doesn't show the route. This is different than more sophisticated routing protocols in which a prefix is kept in the protocol-specific topology table even if a route from another protocol with a better AD is in the global routing table.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5029689981158113588-8402798683526829771?l=unroutable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unroutable.blogspot.com/feeds/8402798683526829771/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5029689981158113588&amp;postID=8402798683526829771' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5029689981158113588/posts/default/8402798683526829771'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5029689981158113588/posts/default/8402798683526829771'/><link rel='alternate' type='text/html' href='http://unroutable.blogspot.com/2009/06/rip-database-and-administrative.html' title='RIP database and administrative distance'/><author><name>jswan</name><uri>http://www.blogger.com/profile/02571029118821999072</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5029689981158113588.post-6846693575421009758</id><published>2009-06-10T07:05:00.005-06:00</published><updated>2009-12-15T10:37:54.788-07:00</updated><title type='text'>Cisco IPS Manager Express</title><content type='html'>I've been doing Cisco IDS/IPS stuff recently for the first time in a long while. If you haven't tried Cisco's new free IPS Manager Express application, check it out. It makes IDS/IPS event monitoring and management reasonably useful and almost pain-free. The interface is much more intuitive that other Cisco IDS/IPS GUI products. The only problem is that the current version supports only 5 sensors; supposedly this will increase in a future release.&lt;br /&gt;&lt;br /&gt;Added 12/15/09:&lt;br /&gt;The latest version of IME supports 10 sensors.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5029689981158113588-6846693575421009758?l=unroutable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unroutable.blogspot.com/feeds/6846693575421009758/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5029689981158113588&amp;postID=6846693575421009758' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5029689981158113588/posts/default/6846693575421009758'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5029689981158113588/posts/default/6846693575421009758'/><link rel='alternate' type='text/html' href='http://unroutable.blogspot.com/2009/06/cisco-ips-manager-express.html' title='Cisco IPS Manager Express'/><author><name>jswan</name><uri>http://www.blogger.com/profile/02571029118821999072</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5029689981158113588.post-7058926377711636783</id><published>2009-06-10T06:59:00.002-06:00</published><updated>2009-06-10T07:01:57.318-06:00</updated><title type='text'>open ports on IOS router</title><content type='html'>Haven't posted here in ages. Interesting trivia: the old "show ip sockets" command doesn't work in new 12.4T images. It's been replaced by "show control-plane host open-ports":&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;#sh control-plane host open-ports&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;Active internet connections (servers and established)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;Prot               Local Address             Foreign Address                  Service    State&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt; tcp                        *:22                         *:0               SSH-Server   LISTEN&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt; tcp                        *:23                         *:0                   Telnet   LISTEN&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt; tcp                     *:15904          x.x.x.x:179         IOS host service ESTABLIS&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt; tcp                       *:179        x.x.x.x:38441                      BGP ESTABLIS&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt; tcp                       *:179                         *:0                      BGP   LISTEN&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt; tcp                       *:179                         *:0                      BGP   LISTEN&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt; tcp                       *:179                         *:0                      BGP   LISTEN&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt; udp                        *:49           x.x.x.x:0           TACACS service   LISTEN&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt; udp                       *:161                         *:0                  IP SNMP   LISTEN&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt; udp                       *:162                         *:0                  IP SNMP   LISTEN&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt; udp                     *:57421                         *:0                  IP SNMP   LISTEN&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt; udp                      *:1985                         *:0               cisco HSRP   LISTEN&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5029689981158113588-7058926377711636783?l=unroutable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unroutable.blogspot.com/feeds/7058926377711636783/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5029689981158113588&amp;postID=7058926377711636783' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5029689981158113588/posts/default/7058926377711636783'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5029689981158113588/posts/default/7058926377711636783'/><link rel='alternate' type='text/html' href='http://unroutable.blogspot.com/2009/06/open-ports-on-ios-router.html' title='open ports on IOS router'/><author><name>jswan</name><uri>http://www.blogger.com/profile/02571029118821999072</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5029689981158113588.post-5889319602722467160</id><published>2009-03-02T22:42:00.000-07:00</published><updated>2009-03-02T22:54:53.752-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ESXi'/><category scheme='http://www.blogger.com/atom/ns#' term='duplicate'/><category scheme='http://www.blogger.com/atom/ns#' term='vm'/><category scheme='http://www.blogger.com/atom/ns#' term='virtualization'/><category scheme='http://www.blogger.com/atom/ns#' term='vmware'/><category scheme='http://www.blogger.com/atom/ns#' term='clone'/><title type='text'>how to clone a VM in the free VMWare ESXi</title><content type='html'>In the free verison of ESXi, it's not obvious how to clone a VM, since you don't have VirtualCenter available.&lt;br /&gt;&lt;br /&gt;I've read about some people using the free version of Converter, but this didn't work for me (Converter keeps hanging partway through the operation). Here's what I did; note that I'm running local storage only on an older host machine:&lt;br /&gt;&lt;br /&gt;1) From the ESXi console, hit Alt-F1, then type "unsupported". You will get a bunch of dire warnings about this being an unsupported mode. You are now in a bare-bones Unix shell.&lt;br /&gt;&lt;br /&gt;2) (optional) Enable ssh so you can do the rest remotely: use vi to edit the /etc/inetd.conf file and uncomment the line that starts with "ssh". Exit and restart inetd with "kill -HUP &lt;pid&gt;" where &lt;pid&gt; is the process ID of inetd. You can find the PID with "ps aux | grep inetd".&lt;br /&gt;&lt;br /&gt;3) cd  /vmfs/volumes/datastore&lt;br /&gt;&lt;br /&gt;4) Use vmkfstools to clone the .vmdk file:&lt;br /&gt;&lt;br /&gt;# vmkfstools -i imageA/imageA.vmdk imageB/imageB.vmdk&lt;br /&gt;Destination disk format: VMFS thick&lt;br /&gt;Cloning disk 'xubu1/xubu1.vmdk'...&lt;br /&gt;Clone: 100% done.&lt;br /&gt;&lt;br /&gt;5) From VI Client, create a new VM and select the custom option. When you get to the "select a hard disk" part, select the VMDK file you just cloned in the previous step.&lt;br /&gt;&lt;br /&gt;6) You may have trouble with a cloned machine in Windows; you'll need to run sysprep to make it unique. In Linux you can just change the IP (if not using DHCP) and edit /etc/hostname and reboot to make a unique hostname.&lt;/pid&gt;&lt;/pid&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5029689981158113588-5889319602722467160?l=unroutable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unroutable.blogspot.com/feeds/5889319602722467160/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5029689981158113588&amp;postID=5889319602722467160' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5029689981158113588/posts/default/5889319602722467160'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5029689981158113588/posts/default/5889319602722467160'/><link rel='alternate' type='text/html' href='http://unroutable.blogspot.com/2009/03/how-to-clone-vm-in-free-vmware-esxi.html' title='how to clone a VM in the free VMWare ESXi'/><author><name>jswan</name><uri>http://www.blogger.com/profile/02571029118821999072</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5029689981158113588.post-8060400615002559524</id><published>2009-02-28T21:19:00.000-07:00</published><updated>2009-02-28T21:24:22.355-07:00</updated><title type='text'>steps to install Bro IDS on Ubuntu</title><content type='html'>&lt;span style="font-size:85%;"&gt; This works on both Ubuntu and Xubuntu. Use sudo on everything or run as root.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    apt-get install libncurses5-dev g++ bison flex&lt;br /&gt;    apt-get install libmagic-dev libgeoip-dev libpcap-dev  libssl-dev&lt;br /&gt;    tar -xvf bro-1.4-release.tar.gz&lt;br /&gt;    cd bro-1.4&lt;br /&gt;    ./configure --prefix=/usr/local/bro&lt;br /&gt;    make&lt;br /&gt;    make install&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5029689981158113588-8060400615002559524?l=unroutable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unroutable.blogspot.com/feeds/8060400615002559524/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5029689981158113588&amp;postID=8060400615002559524' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5029689981158113588/posts/default/8060400615002559524'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5029689981158113588/posts/default/8060400615002559524'/><link rel='alternate' type='text/html' href='http://unroutable.blogspot.com/2009/02/steps-to-install-bro-ids-on-ubuntu.html' title='steps to install Bro IDS on Ubuntu'/><author><name>jswan</name><uri>http://www.blogger.com/profile/02571029118821999072</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5029689981158113588.post-6397869003871286289</id><published>2009-02-26T13:29:00.000-07:00</published><updated>2009-02-26T13:30:34.579-07:00</updated><title type='text'>How to Install dig for Windows</title><content type='html'>&lt;div&gt;dig is the standard tool for advanced DNS queries. A Windows version is available as part of the BIND port. To install it on  Windows:&lt;/div&gt; &lt;div&gt; &lt;/div&gt; &lt;div&gt;1) Go to &lt;a href="ftp://ftp.isc.org/isc/bind9/9.5.0-P2/"&gt;ftp://ftp.isc.org/isc/bind9/9.5.0-P2/&lt;/a&gt;&lt;/div&gt; &lt;div&gt;2) Download &lt;a class="file" href="ftp://ftp.isc.org/isc/bind9/9.5.0-P2/BIND9.5.0-P2.zip"&gt;BIND9.5.0-P2.zip&lt;/a&gt;&lt;/div&gt; &lt;div&gt;3) Open the archive with WinZip&lt;/div&gt; &lt;div&gt;4) Extract dig.exe and *.dll to c:\windows\system32&lt;/div&gt; &lt;div&gt;5) If you want the documentation page, extract dig.html to somewhere that  you can find it.&lt;/div&gt; &lt;div&gt; &lt;/div&gt; &lt;div&gt;Now you will be able to use dig from your command prompt in Windows. It is  faster and more sophisticated than nslookup. &lt;/div&gt; &lt;div&gt; &lt;/div&gt; &lt;div&gt;Get the quick help options with "dig -h".&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5029689981158113588-6397869003871286289?l=unroutable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unroutable.blogspot.com/feeds/6397869003871286289/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5029689981158113588&amp;postID=6397869003871286289' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5029689981158113588/posts/default/6397869003871286289'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5029689981158113588/posts/default/6397869003871286289'/><link rel='alternate' type='text/html' href='http://unroutable.blogspot.com/2009/02/how-to-install-dig-for-windows.html' title='How to Install dig for Windows'/><author><name>jswan</name><uri>http://www.blogger.com/profile/02571029118821999072</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5029689981158113588.post-1015382594743795575</id><published>2008-11-19T16:00:00.000-07:00</published><updated>2008-11-19T16:05:09.786-07:00</updated><title type='text'>port-map feature</title><content type='html'>Ever forget what port number maps to what service? A router running Adv IP Services, Adv Security, or Adv Enterprise Services will tell you all the common ones using the &lt;span style="font-weight: bold;"&gt;show ip port-map&lt;/span&gt; command, which is part of the IOS firewall feature set:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;Router#sh ip port-map&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;Default mapping:  snmp                 udp port 161                        system defined&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;Default mapping:  echo                 tcp port 7                          system defined&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;Default mapping:  echo                 udp port 7                          system defined&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;Default mapping:  telnet               tcp port 23                         system defined&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;Default mapping:  wins                 tcp port 1512                       system defined&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;Default mapping:  n2h2server           tcp port 9285                       system defined&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;Default mapping:  n2h2server           udp port 9285                       system defined&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;Default mapping:  nntp                 tcp port 119                        system defined&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;Default mapping:  pptp                 tcp port 1723                       system defined&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;Default mapping:  rtsp                 tcp port 554,8554                   system defined&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;Default mapping:  bootpc               udp port 68                         system defined&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;Default mapping:  gdoi                 udp port 848                        system defined&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;Default mapping:  tacacs               udp port 49                         system defined&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;[output truncated]&lt;br /&gt;&lt;br /&gt;You can, of course, filter for stuff you find interesting:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;Router#sh ip port-map | i 110&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;Default mapping:  pop3                 tcp port 110                        system defined&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5029689981158113588-1015382594743795575?l=unroutable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unroutable.blogspot.com/feeds/1015382594743795575/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5029689981158113588&amp;postID=1015382594743795575' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5029689981158113588/posts/default/1015382594743795575'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5029689981158113588/posts/default/1015382594743795575'/><link rel='alternate' type='text/html' href='http://unroutable.blogspot.com/2008/11/port-map-feature.html' title='port-map feature'/><author><name>jswan</name><uri>http://www.blogger.com/profile/02571029118821999072</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5029689981158113588.post-5649208406958472705</id><published>2008-11-13T11:05:00.000-07:00</published><updated>2008-11-13T11:16:19.350-07:00</updated><title type='text'>in-line editing of Cisco ACLs</title><content type='html'>Many people don't realize that reasonably recent versions of IOS have in-line ACL editing.&lt;br /&gt;&lt;br /&gt;The way this works is that ACLs have invisible line numbers that only show up when using a show access-list command, not when doing "show run":&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;R1#sh access-list TEST&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Extended IP access list TEST&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    10 permit tcp host 1.1.1.1 host 2.2.2.2&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    20 permit gre host 3.3.3.3 host 4.4.4.4&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;In the example above, the line numbers are shown. If we just look at the config, they're not:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;R1#sh run | s access-list&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;ip access-list extended TEST&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; permit tcp host 1.1.1.1 host 2.2.2.2&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; permit gre host 3.3.3.3 host 4.4.4.4&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Now, let's say I want to make line number 10 more restrictive:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;R1#conf t&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Enter configuration commands, one per line.  End with CNTL/Z.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;R1(config)#ip access-list ext TEST&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;R1(config-ext-nacl)#15 permit tcp host 1.1.1.1 host 2.2.2.2 eq www&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;R1(config-ext-nacl)#do sh access-list TEST&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Extended IP access list TEST&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    10 permit tcp host 1.1.1.1 host 2.2.2.2&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    15 permit tcp host 1.1.1.1 host 2.2.2.2 eq www&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    20 permit gre host 3.3.3.3 host 4.4.4.4&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;R1(config-ext-nacl)#no 10&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;R1(config-ext-nacl)#do sh access-list TEST&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Extended IP access list TEST&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    15 permit tcp host 1.1.1.1 host 2.2.2.2 eq www&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    20 permit gre host 3.3.3.3 host 4.4.4.4&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;If the odd sequence numbers really bother you, you can fix them:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;R1(config)#ip access-list resequence TEST ?&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  &lt;1-2147483647&gt;  Starting Sequence Number&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;R1(config)#ip access-list resequence TEST 10 ?&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  &lt;1-2147483647&gt;  Step to increment the sequence number&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;R1(config)#ip access-list resequence TEST 10 10 ?&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  &lt;cr&gt;&lt;/cr&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;R1(config)#ip access-list resequence TEST 10 10&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;R1(config)#do sh access-list TEST&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Extended IP access list TEST&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    10 permit tcp host 1.1.1.1 host 2.2.2.2 eq www&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    20 permit gre host 3.3.3.3 host 4.4.4.4&lt;br /&gt;&lt;br /&gt;I'm not sure what IOS version this appeared in, but it's been around since at least the early 12.3T images.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5029689981158113588-5649208406958472705?l=unroutable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unroutable.blogspot.com/feeds/5649208406958472705/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5029689981158113588&amp;postID=5649208406958472705' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5029689981158113588/posts/default/5649208406958472705'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5029689981158113588/posts/default/5649208406958472705'/><link rel='alternate' type='text/html' href='http://unroutable.blogspot.com/2008/11/in-line-editing-of-cisco-acls.html' title='in-line editing of Cisco ACLs'/><author><name>jswan</name><uri>http://www.blogger.com/profile/02571029118821999072</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5029689981158113588.post-5990710786568685500</id><published>2008-10-29T09:36:00.000-06:00</published><updated>2008-10-29T11:05:49.426-06:00</updated><title type='text'>GRE tunnels and OSPF adjacencies</title><content type='html'>I made the mistake of starting to play with one of Ivan Pepelnjak's &lt;a href="http://blog.ioshints.info/2008/10/ospf-challenge-2-mixing-numbered-and.html"&gt;OSPF challenges&lt;/a&gt; on his great &lt;a href="http://blog.ioshints.info/"&gt;IOS blog&lt;/a&gt;, and got carried away playing with GRE tunnels instead.&lt;br /&gt;&lt;br /&gt;On R1:&lt;br /&gt;&lt;br /&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;interface Loopback0&lt;br /&gt;ip address 10.1.2.1 255.255.255.0&lt;br /&gt;&lt;br /&gt;interface Serial1/0&lt;br /&gt;ip unnumbered Loopback0&lt;br /&gt;encapsulation ppp&lt;br /&gt;&lt;br /&gt;interface Tunnel0&lt;br /&gt;ip unnumbered Loopback0&lt;br /&gt;ip ospf 1 area 1&lt;br /&gt;tunnel source Serial1/0&lt;br /&gt;tunnel destination 10.1.2.3&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;On R2:&lt;br /&gt;&lt;br /&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;interface Loopback0&lt;br /&gt;ip address 2.2.2.2 255.255.255.0&lt;br /&gt;&lt;br /&gt;interface Serial1/0&lt;br /&gt;ip address 10.1.2.3 255.255.255.248&lt;br /&gt;encapsulation ppp&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;interface Tunnel0&lt;br /&gt;ip address 22.22.22.22 255.255.255.0&lt;br /&gt;ip ospf 1 area 1&lt;br /&gt;tunnel source Serial1/0&lt;br /&gt;tunnel destination 10.1.2.1&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This configuration forms no adjacency because the GRE tunnel interfaces are on different networks. A debug confirms this:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;R2#&lt;span style="font-weight: bold;"&gt;deb ip os adj&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;OSPF adjacency events debugging is on&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;R2#&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;*Oct 29 09:43:03.123: OSPF: Rcv pkt from 10.1.2.1, Tunnel0, area 0.0.0.1 : src not on the same network&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;from a &lt;span style="font-weight: bold;"&gt;debug ip packet&lt;/span&gt; at the same time:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;*Oct 29 10:08:11.015: IP: s=22.22.22.22 (Tunnel0), d=224.0.0.5, len 76, rcvd 0&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;[incidentally, I'm not sure why this behavior doesn't violate section 8.2 of RFC 2328, which states:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;  ...the packet's IP source address is required to&lt;br /&gt;be on the same network as the receiving interface.  This&lt;br /&gt;can be verified by comparing the packet's IP source&lt;br /&gt;address to the interface's IP address, after masking&lt;br /&gt;both addresses with the interface mask.  &lt;span style="font-weight: bold;"&gt;This comparison&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;should not be performed on point-to-point networks.&lt;/span&gt; On&lt;br /&gt;point-to-point networks, the interface addresses of each&lt;br /&gt;end of the link are assigned independently, if they are&lt;br /&gt;assigned at all.&lt;br /&gt;&lt;br /&gt;GRE tunnels are considered point-to-point networks by OSPF.]&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;However, if I remove the explicitly configured IP address on R2's tunnel interface and replace it with an unnumbered configuration, using a loopback that's still not in the same network, it works:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;R2(config)#&lt;span style="font-weight: bold;"&gt;int tu 0&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;R2(config-if)#&lt;span style="font-weight: bold;"&gt;ip unn lo 0&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;R2(config-if)#^Z&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;R2#&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;*Oct 29 09:44:44.907: %OSPF-5-ADJCHG: Process 1, Nbr 10.0.0.1 on Tunnel0 from LOADING to FULL, Loading Done&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;R2#&lt;span style="font-weight: bold;"&gt;sh ip os n&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Neighbor ID     Pri   State           Dead Time   Address         Interface&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;10.0.0.1          0   FULL/  -        00:00:33    10.1.2.1        Tunnel0&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;R1#&lt;span style="font-weight: bold;"&gt;sh ip os n&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Neighbor ID     Pri   State           Dead Time   Address         Interface&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;10.1.2.3          0   FULL/  -        00:00:32    2.2.2.2         Tunnel0&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;At first I thought that maybe the router was changing the source address for OSPF packets to the address of the tunnel source, but that's not the case:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;R1#&lt;span style="font-weight: bold;"&gt;deb ip packet&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;IP packet debugging is on&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;R1#&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;*Oct 29 10:05:44.955: IP: s=10.1.2.1 (local), d=224.0.0.5 (Tunnel0), len 80, sending broad/multicast&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;*Oct 29 10:05:44.955: IP: s=10.1.2.1 (Tunnel0), d=10.1.2.3 (Serial1/0), len 104, sending&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;*Oct 29 10:05:45.703: IP: s=2.2.2.2 (Tunnel0), d=224.0.0.5, len 80, rcvd 0&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;As you can see, the OSPF hellos are coming from the loopback IP of R2, which is on a completely different network.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5029689981158113588-5990710786568685500?l=unroutable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unroutable.blogspot.com/feeds/5990710786568685500/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5029689981158113588&amp;postID=5990710786568685500' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5029689981158113588/posts/default/5990710786568685500'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5029689981158113588/posts/default/5990710786568685500'/><link rel='alternate' type='text/html' href='http://unroutable.blogspot.com/2008/10/gre-tunnels-and-ospf-source-addresses.html' title='GRE tunnels and OSPF adjacencies'/><author><name>jswan</name><uri>http://www.blogger.com/profile/02571029118821999072</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5029689981158113588.post-2913069047941856797</id><published>2008-10-17T11:58:00.001-06:00</published><updated>2008-10-17T12:00:20.078-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ucm'/><category scheme='http://www.blogger.com/atom/ns#' term='callmanager'/><category scheme='http://www.blogger.com/atom/ns#' term='unified communications'/><title type='text'>IP phones show bogus "unknown" status in UCM</title><content type='html'>If you end up with a bunch of normally functioning, non-problematic IP phones showing up as "unknown" instead of "registered" in CallManager administration, you can restart the RIS Data Collector service on the publisher to solve the problem. This doesn't affect call processing, but it does seem to restart some media resources like the annunciator, etc.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5029689981158113588-2913069047941856797?l=unroutable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unroutable.blogspot.com/feeds/2913069047941856797/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5029689981158113588&amp;postID=2913069047941856797' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5029689981158113588/posts/default/2913069047941856797'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5029689981158113588/posts/default/2913069047941856797'/><link rel='alternate' type='text/html' href='http://unroutable.blogspot.com/2008/10/ip-phones-show-bogus-unknown-status-in.html' title='IP phones show bogus &quot;unknown&quot; status in UCM'/><author><name>jswan</name><uri>http://www.blogger.com/profile/02571029118821999072</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5029689981158113588.post-321936359787641172</id><published>2008-10-13T14:43:00.001-06:00</published><updated>2008-10-13T14:59:38.099-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='certification'/><title type='text'>certification musings</title><content type='html'>I started this blog intending it as a repository for odd network and VoIP related issues I run into over time, but I just have to vent a bit about a recent experience.&lt;br /&gt;&lt;br /&gt;Last week I interviewed someone whose resume listed virtually every non-CCIE Cisco certification there is: CCNA, CCNP, CCSP, CCVP, CCDP, etc etc.&lt;br /&gt;&lt;br /&gt;Now, I'm not naive enough to think that someone with all those certifications will necessarily be thoroughly proficient at all the subject areas (I have the CCSP among other things, but I'm pretty rusty on Cisco IDS), but a passing familiarity would be nice. This individual couldn't describe basic ARP operation, a basic TCP handshake, and couldn't name any layer 2 WAN protocols. He didn't do any better on voice or security questions.&lt;br /&gt;&lt;br /&gt;Obviously it's possible to get all these certifications without knowing much, but if you're going to put them on your resume, at least try to be familiar with the basic concepts in the subject area.&lt;br /&gt;&lt;br /&gt;Better yet, use the tests as a way to evaluate your REAL theoretical and practical knowledge of the subject area, not as something to spiff up your resume.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5029689981158113588-321936359787641172?l=unroutable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unroutable.blogspot.com/feeds/321936359787641172/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5029689981158113588&amp;postID=321936359787641172' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5029689981158113588/posts/default/321936359787641172'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5029689981158113588/posts/default/321936359787641172'/><link rel='alternate' type='text/html' href='http://unroutable.blogspot.com/2008/10/certification-musings.html' title='certification musings'/><author><name>jswan</name><uri>http://www.blogger.com/profile/02571029118821999072</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5029689981158113588.post-4082835853713487406</id><published>2008-10-09T08:58:00.000-06:00</published><updated>2008-10-09T09:03:53.136-06:00</updated><title type='text'>update on yesterday's application weirdness post</title><content type='html'>A friend read my post yesterday on odd problems with H.323 call setup on VT-Advantage-enabled phones after changing media resources configuration. He observed that IOS 12.4(20T), which we're running on the ISRs containing the DSPs, is the first IOS image to fully implement H.320 ISDN video conferencing capability, and that this might have something to do with the problem. The H.323 gateway that's actually handing the call to the PSTN isn't running 12.4(20T); it's running a much older image. Why the code on the DSP farm would affect a call on a different gateway, I don't understand, but it certainly seems like too much correlation to be coincidence.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5029689981158113588-4082835853713487406?l=unroutable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unroutable.blogspot.com/feeds/4082835853713487406/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5029689981158113588&amp;postID=4082835853713487406' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5029689981158113588/posts/default/4082835853713487406'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5029689981158113588/posts/default/4082835853713487406'/><link rel='alternate' type='text/html' href='http://unroutable.blogspot.com/2008/10/update-on-yesterdays-application.html' title='update on yesterday&apos;s application weirdness post'/><author><name>jswan</name><uri>http://www.blogger.com/profile/02571029118821999072</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5029689981158113588.post-5855078847267747292</id><published>2008-10-08T16:15:00.001-06:00</published><updated>2008-10-08T16:26:14.412-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='media resources'/><category scheme='http://www.blogger.com/atom/ns#' term='callmanager'/><category scheme='http://www.blogger.com/atom/ns#' term='VT advantage'/><category scheme='http://www.blogger.com/atom/ns#' term='unified communications'/><title type='text'>Weird application interactions</title><content type='html'>Recently we made some changes to our media resource configuration in CallManager 6.x. Specifically, we stopped using DSPs on a 6608 blade in a Catalyst 6500 and started using DSPs in a couple of 2811 routers. Immediately after this change, a couple of users reported that they could no longer make outbound PSTN calls that transit a particular H.323 gateway. The weirdest part was that if they rebooted their 7940 phone, they could make a single call, but all subsequent calls would fail with a fast busy until they rebooted again. Calls through other gateways worked fine.&lt;br /&gt;&lt;br /&gt;A ISDN Q.931 debug showed that the second outbound call was setting up as "unrestricted digital" instead of "speech".&lt;br /&gt;&lt;br /&gt;I went 'round with TAC about this for a few emails and they were getting ready to blame the telco (?!) when I realized that the thing these two users have in common is VT Advantage (a Cisco desktop video-conferencing application). I asked them to turn off VT Advantage, and presto, all calls now worked.&lt;br /&gt;&lt;br /&gt;Upgrading to the latest VT Advantage version solved the problem completely.&lt;br /&gt;&lt;br /&gt;Why a change in media resources would affect outbound calling through a single H.323 gateway on users with an old version of VT Advantage is beyond me, but that's my story and I'm sticking to it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5029689981158113588-5855078847267747292?l=unroutable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unroutable.blogspot.com/feeds/5855078847267747292/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5029689981158113588&amp;postID=5855078847267747292' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5029689981158113588/posts/default/5855078847267747292'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5029689981158113588/posts/default/5855078847267747292'/><link rel='alternate' type='text/html' href='http://unroutable.blogspot.com/2008/10/blog-post.html' title='Weird application interactions'/><author><name>jswan</name><uri>http://www.blogger.com/profile/02571029118821999072</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5029689981158113588.post-8413867957176680440</id><published>2008-10-08T08:42:00.000-06:00</published><updated>2008-10-08T09:14:52.781-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='active directory'/><category scheme='http://www.blogger.com/atom/ns#' term='Unity'/><category scheme='http://www.blogger.com/atom/ns#' term='multiple domains'/><category scheme='http://www.blogger.com/atom/ns#' term='permissions wizard'/><title type='text'>Unity and Multiple Active Directory Domains</title><content type='html'>There seems to be a lack of information out there, even with some TAC engineers, about how to prepare Cisco Unity to import subscribers from Exchange servers in AD domains different from the one in which Unity is installed. I've even had several Cisco engineers tell me that this is unsupported, which is totally false. As far as I know, these are the requirements for Unity with respect to multiple domains:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;1) All Exchange servers from which you want to import subscribers must be in the same AD &lt;span style="font-weight: bold;"&gt;forest&lt;/span&gt;. Unity unified messaging does not work across multiple forests. Of course, you can still create voicemail boxes that are totally independent of AD, but that's not the point of unified messaging. Exchange servers in different domains in the same forest is not a problem, as long as the PES (see below) is in the same domain as Unity.&lt;br /&gt;&lt;br /&gt;2) The Unity server(s) must be installed in the &lt;span style="font-weight: bold;"&gt;same &lt;/span&gt;Active Directory domain as the &lt;span style="font-weight: bold;"&gt;partner Exchange server&lt;/span&gt;, or PES. You specify the PES during the Unity install process. It can be changed with the Message Store Integration Wizard. &lt;span style="font-weight: bold;"&gt;The PES must have Exchange routing group connectors to all other Exchange servers from which you want to import subscribers.&lt;/span&gt; More info on changing the PES is &lt;a href="http://www.cisco.com/en/US/docs/voice_ip_comm/unity/42/upgrade/guide/ex/ru_060.html"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;3) You must run the Permissions Wizard on the Unity server while logged in as an account that can set permissions in all the domains containing Exchange servers from which you want to import subscribers. This might require running the PW multiple times under different accounts. This works fine. You may need to add a domain admin account from another domain to the local admin group on the Unity server. When you run PW from accounts in different domains, it will probably fail on some of the domains. This is because you probably won't have a single account that has all the required permissions in all the domains. You just need to continue running PW under different accounts until it has succeeded in all the domains that have Exchange servers from which you're importing subscribers.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5029689981158113588-8413867957176680440?l=unroutable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unroutable.blogspot.com/feeds/8413867957176680440/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5029689981158113588&amp;postID=8413867957176680440' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5029689981158113588/posts/default/8413867957176680440'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5029689981158113588/posts/default/8413867957176680440'/><link rel='alternate' type='text/html' href='http://unroutable.blogspot.com/2008/10/unity-and-multiple-active-directory.html' title='Unity and Multiple Active Directory Domains'/><author><name>jswan</name><uri>http://www.blogger.com/profile/02571029118821999072</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5029689981158113588.post-475670282407937841</id><published>2008-09-16T09:36:00.001-06:00</published><updated>2008-09-16T09:39:01.223-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='pool'/><category scheme='http://www.blogger.com/atom/ns#' term='device'/><category scheme='http://www.blogger.com/atom/ns#' term='ucm'/><category scheme='http://www.blogger.com/atom/ns#' term='callmanager'/><category scheme='http://www.blogger.com/atom/ns#' term='unified communications'/><title type='text'>Changes don't take effect in UCM 6</title><content type='html'>If you make a change to a Cisco Unified Communications Manager 6.x system and it doesn't seem to take effect, try restarting the Database Layer Monitor service and the TFTP service. This can be done during production hours.&lt;br /&gt;&lt;br /&gt;In my case, the change in question was a change to the CallManager Group setting in a device pool.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5029689981158113588-475670282407937841?l=unroutable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unroutable.blogspot.com/feeds/475670282407937841/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5029689981158113588&amp;postID=475670282407937841' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5029689981158113588/posts/default/475670282407937841'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5029689981158113588/posts/default/475670282407937841'/><link rel='alternate' type='text/html' href='http://unroutable.blogspot.com/2008/09/changes-dont-take-effect-in-ucm-6.html' title='Changes don&apos;t take effect in UCM 6'/><author><name>jswan</name><uri>http://www.blogger.com/profile/02571029118821999072</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5029689981158113588.post-2974219693259700728</id><published>2008-05-31T15:47:00.000-06:00</published><updated>2008-10-08T08:59:55.916-06:00</updated><title type='text'>Unity Permissions Wizard Stuff to Remember</title><content type='html'>To successfully run Unity Permission Wizard in a new domain, you need to run it as the Domain Admin in the remote domain. It will fail on the existing domains (the permissions are already set correctly on them, assuming things are already working), and succeed in the new domain.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5029689981158113588-2974219693259700728?l=unroutable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unroutable.blogspot.com/feeds/2974219693259700728/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5029689981158113588&amp;postID=2974219693259700728' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5029689981158113588/posts/default/2974219693259700728'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5029689981158113588/posts/default/2974219693259700728'/><link rel='alternate' type='text/html' href='http://unroutable.blogspot.com/2008/05/unity-permissions-wizard-stuff-to.html' title='Unity Permissions Wizard Stuff to Remember'/><author><name>jswan</name><uri>http://www.blogger.com/profile/02571029118821999072</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5029689981158113588.post-134564361621366322</id><published>2008-04-18T13:02:00.000-06:00</published><updated>2008-04-18T13:23:57.526-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IOS'/><category scheme='http://www.blogger.com/atom/ns#' term='subnetting'/><category scheme='http://www.blogger.com/atom/ns#' term='IP addressing'/><category scheme='http://www.blogger.com/atom/ns#' term='IOS trivia'/><title type='text'>Trivia Friday: ip subnet-zero</title><content type='html'>The &lt;span style="font-weight:bold;"&gt;ip subnet-zero&lt;/span&gt; command has been largely irrelevant since it became the default in IOS quite some time ago, but it still generates occasional discussion among consumers of IOS trivia.&lt;br /&gt;&lt;br /&gt;For whatever reason, a lot of people seem to think that setting &lt;span style="font-weight:bold;"&gt;no ip subnet-zero&lt;/span&gt; causes you to be unable to use either the all-zeros OR all-ones subnets of a classful network. This is not the case. Turning off ip subnet-zero (not that you would want to do this outside of an IOS trivial pursuit game!) only prevents you from assigning the all-zeros subnet of a network:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;R2(config)#no ip subnet-zero&lt;br /&gt;R2(config)#int loopback 0&lt;br /&gt;R2(config-if)#ip add 10.0.0.1 255.255.255.192&lt;br /&gt;Bad mask /26 for address 10.0.0.1&lt;br /&gt;R2(config-if)#ip add 10.255.255.254 255.255.255.192&lt;br /&gt;R2(config-if)#ip add 192.168.0.1 255.255.255.192&lt;br /&gt;Bad mask /26 for address 192.168.0.1&lt;br /&gt;R2(config-if)#ip add 192.168.254.254 255.255.255.192&lt;br /&gt;R2(config-if)#&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Note that we are only prevented from assigning the all-zeros subnet of the network, and there's no restriction on assigning the all-ones subnet.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5029689981158113588-134564361621366322?l=unroutable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unroutable.blogspot.com/feeds/134564361621366322/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5029689981158113588&amp;postID=134564361621366322' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5029689981158113588/posts/default/134564361621366322'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5029689981158113588/posts/default/134564361621366322'/><link rel='alternate' type='text/html' href='http://unroutable.blogspot.com/2008/04/trivia-friday-ip-subnet-zero.html' title='Trivia Friday: ip subnet-zero'/><author><name>jswan</name><uri>http://www.blogger.com/profile/02571029118821999072</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5029689981158113588.post-8525317067173356474</id><published>2008-04-14T16:54:00.001-06:00</published><updated>2008-04-14T16:57:09.534-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ucm'/><category scheme='http://www.blogger.com/atom/ns#' term='trace files'/><category scheme='http://www.blogger.com/atom/ns#' term='debug'/><category scheme='http://www.blogger.com/atom/ns#' term='callmanager'/><category scheme='http://www.blogger.com/atom/ns#' term='ccm'/><title type='text'>CallManager Trace Decoding Tools</title><content type='html'>Triple Combo looks to be a nice tool for decoding CCM/UCM trace files:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.employees.org/~tiryaki/tc/"&gt;http://www.employees.org/~tiryaki/tc/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;In the past I've also used TranslatorX, which is good but has some missing pieces:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.employees.org/~pgiralt/TranslatorX/"&gt;http://www.employees.org/~pgiralt/TranslatorX/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5029689981158113588-8525317067173356474?l=unroutable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unroutable.blogspot.com/feeds/8525317067173356474/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5029689981158113588&amp;postID=8525317067173356474' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5029689981158113588/posts/default/8525317067173356474'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5029689981158113588/posts/default/8525317067173356474'/><link rel='alternate' type='text/html' href='http://unroutable.blogspot.com/2008/04/callmanager-trace-decoding-tools.html' title='CallManager Trace Decoding Tools'/><author><name>jswan</name><uri>http://www.blogger.com/profile/02571029118821999072</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5029689981158113588.post-5824824192566006601</id><published>2008-04-01T09:17:00.000-06:00</published><updated>2008-04-01T09:18:59.335-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CUE'/><category scheme='http://www.blogger.com/atom/ns#' term='unity express'/><title type='text'>changing IP address on Unity Express</title><content type='html'>Apparently you are supposed to shut down CUE before you change the IP address on the service module interface... I didn't, and the CUE module stopped accepting calls until it was reset with the "service module service-engine 0/1 reset" command.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5029689981158113588-5824824192566006601?l=unroutable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unroutable.blogspot.com/feeds/5824824192566006601/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5029689981158113588&amp;postID=5824824192566006601' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5029689981158113588/posts/default/5824824192566006601'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5029689981158113588/posts/default/5824824192566006601'/><link rel='alternate' type='text/html' href='http://unroutable.blogspot.com/2008/04/changing-ip-address-on-unity-express.html' title='changing IP address on Unity Express'/><author><name>jswan</name><uri>http://www.blogger.com/profile/02571029118821999072</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5029689981158113588.post-7949889310633045626</id><published>2008-03-14T15:44:00.001-06:00</published><updated>2008-03-14T15:54:04.798-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IOS'/><category scheme='http://www.blogger.com/atom/ns#' term='voice'/><category scheme='http://www.blogger.com/atom/ns#' term='router'/><category scheme='http://www.blogger.com/atom/ns#' term='debug'/><category scheme='http://www.blogger.com/atom/ns#' term='VoIP'/><title type='text'>troubleshooting basic POTS calls on a router</title><content type='html'>We get calls fairly regularly from users at sites with router-based VoIP systems (whether UCM Express or distributed UCM, it doesn't matter) saying that callers to their outside lines are getting ring-no-answer behavior.&lt;br /&gt;&lt;br /&gt;The first thing I want to do is see if the calls are actually getting to the router. So I access the CLI and do the following:&lt;br /&gt;&lt;br /&gt;Router#terminal monitor&lt;br /&gt;Router#debug vpm signal&lt;br /&gt;&lt;br /&gt;Then I place a test call to one of their outside lines. If the router just sits there and produces no output, then the problem is almost certainly either in the PSTN, or somebody has unplugged the cable from the FXO port.&lt;br /&gt;&lt;br /&gt;If the router produces a bunch of barely comprehensible output, then the line is ringing and you've got further troubleshooting to do. Don't forget to turn off debugging when you're done!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5029689981158113588-7949889310633045626?l=unroutable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unroutable.blogspot.com/feeds/7949889310633045626/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5029689981158113588&amp;postID=7949889310633045626' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5029689981158113588/posts/default/7949889310633045626'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5029689981158113588/posts/default/7949889310633045626'/><link rel='alternate' type='text/html' href='http://unroutable.blogspot.com/2008/03/troubleshooting-basic-pots-calls-on.html' title='troubleshooting basic POTS calls on a router'/><author><name>jswan</name><uri>http://www.blogger.com/profile/02571029118821999072</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5029689981158113588.post-4217032793857788593</id><published>2008-03-14T15:15:00.001-06:00</published><updated>2008-03-14T15:30:14.756-06:00</updated><title type='text'>DSCP Confusion</title><content type='html'>A friend of mine asked me a question the other day that pointed out a common area of confusion with the DiffServ model for IP QoS. He was reading some documentation that recommended setting the DSCP value for voice-signaling packets to 26 instead of 24. He was trying to convert those numbers to Assured Forwarding (AF) values, and came up with 31 and 30, respectively. His question was "Why does the documentation appear to be making the QoS treatment of these packets WORSE?"&lt;br /&gt;&lt;br /&gt;The answer is, it's not. 30 is not a valid AF value. With the Assured Forwarding classes, there are three drop precedence values: 1, 2, and 3. Since zero is not a valid drop precedence, 30 is not a valid AF.&lt;br /&gt;&lt;br /&gt;The DSCP value of 26 is 001000 in binary. The per-hop-behavior (PHB) value for this is actually not an Assured Forwarding PHB at all, it's a Class Selector value, CS3. The class selector values equate directly to the old IP precedence values, from the days before DiffServ. So DSCP 26 = CS3 = IP precedence 3 = 001000.&lt;br /&gt;&lt;br /&gt;Clear as mud? Try the &lt;a href="http://en.wikipedia.org/wiki/Differentiated_services"&gt;Wikipedia article&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5029689981158113588-4217032793857788593?l=unroutable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unroutable.blogspot.com/feeds/4217032793857788593/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5029689981158113588&amp;postID=4217032793857788593' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5029689981158113588/posts/default/4217032793857788593'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5029689981158113588/posts/default/4217032793857788593'/><link rel='alternate' type='text/html' href='http://unroutable.blogspot.com/2008/03/dscp-confusion.html' title='DSCP Confusion'/><author><name>jswan</name><uri>http://www.blogger.com/profile/02571029118821999072</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5029689981158113588.post-1807336364172596097</id><published>2008-03-14T14:19:00.000-06:00</published><updated>2008-03-14T14:22:04.041-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ipv6'/><title type='text'>IPv6 at IETF</title><content type='html'>A few weeks ago at NANOG they turned off IPv4 on the wireless network for a while. Here's a story about the &lt;a href="http://arstechnica.com/articles/culture/ietf-ipv6-switchoff.ars"&gt;same thing at the much larger IETF meeting&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5029689981158113588-1807336364172596097?l=unroutable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unroutable.blogspot.com/feeds/1807336364172596097/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5029689981158113588&amp;postID=1807336364172596097' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5029689981158113588/posts/default/1807336364172596097'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5029689981158113588/posts/default/1807336364172596097'/><link rel='alternate' type='text/html' href='http://unroutable.blogspot.com/2008/03/ipv6-at-ietf.html' title='IPv6 at IETF'/><author><name>jswan</name><uri>http://www.blogger.com/profile/02571029118821999072</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5029689981158113588.post-4060210680728380208</id><published>2008-03-14T14:06:00.000-06:00</published><updated>2008-03-14T14:17:16.164-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Unity'/><category scheme='http://www.blogger.com/atom/ns#' term='voice'/><category scheme='http://www.blogger.com/atom/ns#' term='VoIP'/><category scheme='http://www.blogger.com/atom/ns#' term='unified communications'/><title type='text'>MBXSuite tool for troubleshooting Unity mailbox issues</title><content type='html'>I recently learned about a useful tool for troubleshooting Unity/Exchange mailbox issues. It's located in the \CommServer\TechTools folder, and it's called MBXSuite.exe.&lt;br /&gt;&lt;br /&gt;To use it:&lt;br /&gt;&lt;br /&gt;1) Select the user whose mailbox you want to test with.&lt;br /&gt;2) Select the Unity service account you want to run as--usually UnityMsgStoreSvc.&lt;br /&gt;3) Check "Verbose Diags"&lt;br /&gt;4) Click "Logon Mailbox" and check the Diagnostics pane for errors.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5029689981158113588-4060210680728380208?l=unroutable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unroutable.blogspot.com/feeds/4060210680728380208/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5029689981158113588&amp;postID=4060210680728380208' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5029689981158113588/posts/default/4060210680728380208'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5029689981158113588/posts/default/4060210680728380208'/><link rel='alternate' type='text/html' href='http://unroutable.blogspot.com/2008/03/mbxsuite-tool-for-troubleshooting-unity.html' title='MBXSuite tool for troubleshooting Unity mailbox issues'/><author><name>jswan</name><uri>http://www.blogger.com/profile/02571029118821999072</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
