<?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:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-15945726</id><updated>2010-06-21T16:03:18.393-04:00</updated><title type='text'>Val(config)#</title><subtitle type='html'>Musings about various system administration and network projects I am working on.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://blog.glinskiy.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15945726/posts/default'/><link rel='alternate' type='text/html' href='http://blog.glinskiy.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/15945726/posts/default?start-index=26&amp;max-results=25'/><author><name>V. Glinskiy</name><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>40</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-15945726.post-5923203591038567719</id><published>2010-06-21T16:03:00.000-04:00</published><updated>2010-06-21T16:03:18.401-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Monitoring'/><title type='text'>Monitoring trunk status via SNMP</title><content type='html'>If you have not guessed yet, SNMP and monitoring are my favorites.&lt;br /&gt;&lt;br /&gt;So, you have configured many trunks on your switch and now need to make sure all of them are actually in trunking mode. Here is 2 SNMP OID that can help you:&lt;br /&gt;&lt;br /&gt;&lt;span class="modulecontentbold"&gt;vlanTrunkPortDynamicState (&lt;/span&gt;&lt;span class="modulecontentbold"&gt;1.3.6.1.4.1.9.9.46.1.6.1.1.13) - reports administrative state. From Cisco SNMP object navigator:&lt;/span&gt;&lt;br /&gt;&lt;span class="modulecontent"&gt;&lt;span class="modulecontentbold"&gt;1 : on&lt;/span&gt;&lt;br /&gt;&lt;span class="modulecontentbold"&gt;2 :  off&lt;/span&gt;&lt;br /&gt;&lt;span class="modulecontentbold"&gt;3 :  desirable&lt;/span&gt;&lt;br /&gt;&lt;span class="modulecontentbold"&gt;4 :  auto&lt;/span&gt;&lt;br /&gt;&lt;span class="modulecontentbold"&gt;5 :  onNoNegotiate&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="modulecontentbold"&gt;vlanTrunkPortDynamicStatus (&lt;/span&gt;&lt;span class="modulecontentbold"&gt;1.3.6.1.4.1.9.9.46.1.6.1.1.14) - reports operational state.&lt;/span&gt;&lt;br /&gt;&lt;span class="modulecontent"&gt;&lt;span class="modulecontentbold"&gt;1 : trunking&lt;/span&gt;&lt;br /&gt;&lt;span class="modulecontentbold"&gt;2 :  notTrunking&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="modulecontent"&gt;&lt;span class="modulecontentbold"&gt;To get data for specific interface you need to add ifIndex to the end of the OID. For example, for interface ifIndex=10147&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="modulecontent"&gt;&lt;span class="modulecontentbold"&gt;&lt;b&gt;snmpwalk -v2c -Ov -Oq -c public myswitch&amp;nbsp; 1.3.6.1.4.1.9.9.46.1.6.1.1.13.10147&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="modulecontent"&gt;&lt;span class="modulecontentbold"&gt;To get ifIndex, you can either run&amp;nbsp; "&lt;b&gt;show snmp mib ifmib ifIndex&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="modulecontentbold"&gt;" command in exec mode or query ifName OID with snmpwalk. Here is the quick script:&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span class="modulecontentbold"&gt;&amp;nbsp; for int in ifIndex1 ifIndex2 ifIndexN&lt;/span&gt;&lt;br /&gt;&lt;span class="modulecontentbold"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; do&lt;/span&gt;&lt;br /&gt;&lt;span class="modulecontentbold"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; trunkoperstatus=`snmpwalk -v2c -Ov -Oq -c public myswitch \ 1.3.6.1.4.1.9.9.46.1.6.1.1.14.$int`&lt;/span&gt;&lt;br /&gt;&lt;span class="modulecontentbold"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if [ $trunkoperstatus -eq 2 ]&lt;/span&gt;&lt;br /&gt;&lt;span class="modulecontentbold"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; then&lt;/span&gt;&lt;br /&gt;&lt;span class="modulecontentbold"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; trunkadminstatus=`snmpwalk -v2c -Ov -Oq -c public myswitch \ 1.3.6.1.4.1.9.9.46.1.6.1.1.13.$int`&lt;/span&gt;&lt;br /&gt;&lt;span class="modulecontentbold"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if [ $trunkadminstatus -eq 1 ]&lt;/span&gt;&lt;br /&gt;&lt;span class="modulecontentbold"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; then&lt;/span&gt;&lt;br /&gt;&lt;span class="modulecontentbold"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; echo myswitch $int NotTrunking&lt;/span&gt;&lt;br /&gt;&lt;span class="modulecontentbold"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fi&lt;/span&gt;&lt;br /&gt;&lt;span class="modulecontentbold"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fi&lt;/span&gt;&lt;br /&gt;&lt;span class="modulecontentbold"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; done&lt;/span&gt;&lt;br /&gt;&lt;span class="modulecontentbold"&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15945726-5923203591038567719?l=blog.glinskiy.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.glinskiy.com/feeds/5923203591038567719/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=15945726&amp;postID=5923203591038567719' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15945726/posts/default/5923203591038567719'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15945726/posts/default/5923203591038567719'/><link rel='alternate' type='text/html' href='http://blog.glinskiy.com/2010/06/monitoring-trunk-status-via-snmp.html' title='Monitoring trunk status via SNMP'/><author><name>V. Glinskiy</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17740504827361569465'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15945726.post-793253009190208128</id><published>2010-05-28T13:16:00.001-04:00</published><updated>2010-05-28T13:17:51.023-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Hacks-n-tricks'/><category scheme='http://www.blogger.com/atom/ns#' term='Cisco'/><title type='text'>Cisco 6500/7600 ACL side effect</title><content type='html'>When you apply ACL to an interface on Cisco 6500 or 7600, it compiles it and puts into TCAM. The way Cisco 7600/6500 does it might have unintended consequences that can leave you open to DDoS attack. Let's consider following example:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_cMxbIwo9Fsk/S__t39yrv7I/AAAAAAAAASs/3o5R4b4Scck/s1600/cisco-tcam-acl-udp-fragments.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="187" src="http://4.bp.blogspot.com/_cMxbIwo9Fsk/S__t39yrv7I/AAAAAAAAASs/3o5R4b4Scck/s640/cisco-tcam-acl-udp-fragments.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;We want to allow any server in 172.16.100.0/24 network to initiate any tcp connection and query any DNS server directly. Here is our ACL&lt;br /&gt;&lt;blockquote&gt;ip access-list extended Test1&lt;br /&gt;&amp;nbsp;permit tcp any any established&lt;br /&gt;&amp;nbsp;permit udp any eq domain any&lt;br /&gt;&amp;nbsp;deny&amp;nbsp; ip any any&lt;/blockquote&gt;&amp;nbsp;We apply it to internet-facing interface of Cisco7600 router: "&lt;b&gt;ip access-group Test1 in&lt;/b&gt;". Now let's look at what actually happened in TCAM:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Cisco7600#show tcam int gi 1/1 acl in ip&lt;br /&gt;&lt;br /&gt;* Global Defaults shared&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Entries from Bank 0&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Entries from Bank 1&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; permit&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tcp any any fragments&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; permit&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; udp any any fragments&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; permit&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tcp any any established match-any &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; permit&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; udp any eq domain any&lt;/blockquote&gt;Our router automatically added "&lt;b&gt;permit&amp;nbsp; udp any any fragments&lt;/b&gt;", i.e. it allowed udp fragments. Now, let's see if it actually happens. First, take a look at the compiled ACL again:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Cisco7600#show tcam int gi 1/1 acl in ip&lt;br /&gt;&lt;br /&gt;* Global Defaults shared&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Entries from Bank 0&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Entries from Bank 1&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; permit&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tcp any any fragments&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; permit&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; udp any any fragments (&lt;b style="color: red;"&gt;41 matches&lt;/b&gt;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; permit&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tcp any any established match-any (220 matches)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; permit&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; udp any eq domain any&lt;/blockquote&gt;Not the counter - 41 matches. Next, on the "attacker" we'll generate fragmented UDP traffic targeting a server in 172.16.100.0/24 network:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;hping2 -2 -d 1500 -c 1 -s 10000 -p 90 -m 500 -f 172.16.100.10&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;In the command above, we send 1 1500-byte UDP packet from port 10000 on local host to port 90 on 172.16.100.10 and we are telling the host that MTU is 500 bytes. On the target host we run tcpdump:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;10:47:41.942010 IP (tos 0x0, ttl&amp;nbsp; 63, id 130, offset 496, flags [+], length: 520) 172.16.0.101 &amp;gt; 172.16.100.10: udp&lt;/blockquote&gt;&lt;br /&gt;&lt;blockquote&gt;10:47:41.942027 IP (tos 0x0, ttl&amp;nbsp; 63, id 130, offset 1000, flags [+], length: 520) 172.16.0.101 &amp;gt; 172.16.100.10: udp&lt;/blockquote&gt;&lt;br /&gt;&lt;blockquote&gt;10:47:41.942034 IP (tos 0x0, ttl&amp;nbsp; 63, id 130, offset 1496, flags [none], length: 28) 172.16.0.101 &amp;gt; 172.16.100.10: udp&lt;/blockquote&gt;&lt;br /&gt;&amp;nbsp;Now, the first fragment, containing IP and UDP header were dropped by our ACL, since we do not allow UDP packets coming from port 10000, but 3 other fragments got through. Let's check the counter again:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Cisco7600#show tcam int gi 1/1 acl in ip&lt;br /&gt;&lt;br /&gt;* Global Defaults shared&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Entries from Bank 0&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Entries from Bank 1&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; permit&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tcp any any fragments&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; permit&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; udp any any fragments (&lt;b style="color: red;"&gt;44 matches&lt;/b&gt;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; permit&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tcp any any established match-any (224 matches)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; permit&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; udp any eq domain any&lt;/blockquote&gt;The attacker can flood your web or email server with UDP fragments causing it to slow down while it is busy discarding incomplete packets. We can not block fragments completely since legitimate DNS replies can be quite big and require fragmentation. The solution would be to allow outbound UDP traffic and, hence, incoming replies only to specific hosts that need it. Like your caching DNS server and put good firewall in front of it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15945726-793253009190208128?l=blog.glinskiy.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.glinskiy.com/feeds/793253009190208128/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=15945726&amp;postID=793253009190208128' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15945726/posts/default/793253009190208128'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15945726/posts/default/793253009190208128'/><link rel='alternate' type='text/html' href='http://blog.glinskiy.com/2010/05/cisco-65007600-acl-create-udp-holes.html' title='Cisco 6500/7600 ACL side effect'/><author><name>V. Glinskiy</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17740504827361569465'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_cMxbIwo9Fsk/S__t39yrv7I/AAAAAAAAASs/3o5R4b4Scck/s72-c/cisco-tcam-acl-udp-fragments.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15945726.post-1944525675033775157</id><published>2010-05-24T14:59:00.000-04:00</published><updated>2010-05-24T14:59:15.701-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cisco'/><title type='text'>Cisco 7600: Netflow and high CPU utilization</title><content type='html'>Cisco &lt;a href="http://www.cisco.com/en/US/products/hw/routers/ps133/products_tech_note09186a00800a70f2.shtml"&gt;documentation states&lt;/a&gt;, that:&lt;br /&gt;&amp;nbsp;&lt;span class="content"&gt;&lt;i&gt;If NetFlow is configured for version 7, the  flow is performed by the   Routing Processor, which could cause high CPU utilization.&lt;/i&gt;&lt;br /&gt;&lt;i&gt;For troubleshooting high CPU utilization due to Netflow version 7,   configure &lt;b&gt; &lt;a href="http://www.cisco.com/en/US/docs/ios/netflow/command/reference/nf_02.html#wp1012734" onclick="s_objectID=&amp;quot;http://www.cisco.com/en/US/docs/ios/netflow/command/reference/nf_02.html#wp1012734_1&amp;quot;;return this.s_oc?this.s_oc(e):true"&gt;mls    nde sender&lt;/a&gt; &lt;/b&gt;&lt;/i&gt; &lt;i&gt;version 5, as the Netflow export is performed   by the SP, which is the default for version 5 or version 9.&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;It turns out, combination of NetFlow version 9 and NDE sender version 7 also creates high CPU load in certain situations. Here is the setup:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_cMxbIwo9Fsk/S_q5ntCXKbI/AAAAAAAAASk/D0gddUhmE84/s1600/7600-high-cpu-small.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="187" src="http://2.bp.blogspot.com/_cMxbIwo9Fsk/S_q5ntCXKbI/AAAAAAAAASk/D0gddUhmE84/s640/7600-high-cpu-small.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Both routers are Cisco 7604. Other than different IP addresses, the only difference between R1 and R2 was this:&lt;br /&gt;&lt;br /&gt;on R1:&amp;nbsp; mls nde sender&lt;br /&gt;on R2:&amp;nbsp; mls nde sender version 5 &lt;br /&gt;Default sender version is 7. Both routers configured with &lt;b&gt;ip flow-export version 9&lt;/b&gt;. &lt;br /&gt;When ever R2's eBGP session was interrupted, R1's CPU utilization skyrocketed to 100% and stayed there for 10-15 minutes rendering router unusable. "&lt;b&gt;&lt;a href="http://blog.glinskiy.com/2010/05/catching-high-cpu-usage.html"&gt;process cpu threshold&lt;/a&gt;&lt;/b&gt;" reported that "IP Input" was responsible for CPU load, not "BGP Router" as I expected, since these CPU&amp;nbsp; &lt;br /&gt;spikes only happened when eBGP session went down. After changing NDE sender version to 5 on R1, the problem went away.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15945726-1944525675033775157?l=blog.glinskiy.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.glinskiy.com/feeds/1944525675033775157/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=15945726&amp;postID=1944525675033775157' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15945726/posts/default/1944525675033775157'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15945726/posts/default/1944525675033775157'/><link rel='alternate' type='text/html' href='http://blog.glinskiy.com/2010/05/cisco-7600-netflow-and-high-cpu.html' title='Cisco 7600: Netflow and high CPU utilization'/><author><name>V. Glinskiy</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17740504827361569465'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_cMxbIwo9Fsk/S_q5ntCXKbI/AAAAAAAAASk/D0gddUhmE84/s72-c/7600-high-cpu-small.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15945726.post-3646430417209075467</id><published>2010-05-11T17:43:00.000-04:00</published><updated>2010-05-11T17:43:59.298-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cisco'/><title type='text'>Catching high CPU usage</title><content type='html'>Suddenly your router stops responding and forwarding traffic, you can telnet into it, response on the console is very slow. Few minutes later everything is back to normal and only "&lt;b&gt;show process cpu history&lt;/b&gt;" shows that CPU was at 100% for some time, but what caused it remains a mystery. To catch a process(es) that might have contributed to the problem, add following command in global configuration mode:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;process cpu threshold type process rising 70 interval 5 falling 30 interval 5&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;It will generate syslog message every time CPU usage exceeds 70% for 5 or more seconds and falls below 30%. For example:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;May 10 23:50:23.146 EDT: %SYS-1-CPURISINGTHRESHOLD: Threshold: Process  CPU Utilization(Total/Intr): 74%/26%, Top 3 processes(Pid/Util):   192/46%, 7/1%, 2/0%&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Process id 192 contributed 46%. Let's see:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Router#sho proc cpu sor | i ^_192&lt;/b&gt;&lt;br /&gt;192&amp;nbsp;&amp;nbsp;    904947881922327784         47  0.00%  0.18%  0.19%   0 IP Input&lt;br /&gt;&lt;br /&gt;&amp;nbsp;It was "IP Input" which is responsible for process-switching IP packets. Now we have something to work with and can start troubleshooting.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15945726-3646430417209075467?l=blog.glinskiy.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.glinskiy.com/feeds/3646430417209075467/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=15945726&amp;postID=3646430417209075467' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15945726/posts/default/3646430417209075467'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15945726/posts/default/3646430417209075467'/><link rel='alternate' type='text/html' href='http://blog.glinskiy.com/2010/05/catching-high-cpu-usage.html' title='Catching high CPU usage'/><author><name>V. Glinskiy</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17740504827361569465'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15945726.post-4861747028535517497</id><published>2010-03-26T15:07:00.002-04:00</published><updated>2010-03-26T15:08:56.188-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Network management'/><category scheme='http://www.blogger.com/atom/ns#' term='Monitoring'/><title type='text'>Monitoring logs with SEC</title><content type='html'>&lt;a href="http://www.splunk.com/"&gt;Splunk&lt;/a&gt; seems to become de-facto standard tool for log management. But free version lacks feature that lets you configure and send alerts whenever certain events occur. One need to pay for enterprise version which starts at $5000 in US and Canada.&lt;br /&gt;&lt;br /&gt;So, I use &lt;a href="http://simple-evcorr.sourceforge.net/"&gt;Simple Event Correlator&lt;/a&gt; to notify me of interesting events in life of my router friends. Here, for example, sec template to send me email with syslog line in the body when somebody tries to go to configuration mode and execute certain commands:&lt;br /&gt;&lt;pre&gt;type=Single&lt;br /&gt;ptype=RegExp&lt;br /&gt;pattern=.*cmd=(configure|clear|ip|no|interface|switchport|router|spanning-tree)&lt;br /&gt;desc=$0&lt;br /&gt;action=pipe '$0' /usr/bin/mail -s "router/switch config change is happening right now" noc@example.com&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;You need to put this template into SEC configuration file and tell it were to look for these messages:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;sec -detach -conf=/etc/sec-tacacs.conf -input=/var/log/tac-plus/account&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;In this case it's TACACS+ log file, so you need to configure a router to report such activities:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;aaa new-model&lt;/b&gt;&lt;br /&gt;&lt;b&gt;aaa authentication login default group tacacs+ none&lt;/b&gt;&lt;br /&gt;&lt;b&gt;aaa authentication enable default group tacacs+ none&lt;/b&gt;&lt;br /&gt;&lt;b&gt;aaa authorization exec default group tacacs+ none &lt;/b&gt;&lt;br /&gt;&lt;b&gt;aaa authorization commands 15 default group tacacs+ none &lt;/b&gt;&lt;br /&gt;&lt;b&gt;aaa accounting commands 15 default start-stop group tacacs+&lt;/b&gt;&lt;br /&gt;&lt;b&gt;tacacs-server host &amp;lt;server ip&amp;gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;tacacs-server &amp;lt;key&amp;gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Here is another template to report all syslog messages coming from devices with loopback interface IP address in the range 10.9.20.0/24 or 10.9.25.0/24. Why loopback? See my &lt;a href="http://blog.glinskiy.com/2010/03/best-practices-sort-of.html"&gt;previous post&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;type=Single&lt;br /&gt;ptype=RegExp&lt;br /&gt;pattern=(.*)10\.9\.2[0|5]\.(.*)%[A-Z]*&lt;br /&gt;desc=$0&lt;br /&gt;action=pipe '$0' /usr/bin/mail -s " router syslog message" noc@example.com&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15945726-4861747028535517497?l=blog.glinskiy.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.glinskiy.com/feeds/4861747028535517497/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=15945726&amp;postID=4861747028535517497' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15945726/posts/default/4861747028535517497'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15945726/posts/default/4861747028535517497'/><link rel='alternate' type='text/html' href='http://blog.glinskiy.com/2010/03/monitoring-logs-with-sec.html' title='Monitoring logs with SEC'/><author><name>V. Glinskiy</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17740504827361569465'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15945726.post-4631524200592023342</id><published>2010-03-25T17:52:00.000-04:00</published><updated>2010-03-25T17:52:43.662-04:00</updated><title type='text'>Best practices. Sort of.</title><content type='html'>I tend to agree, that there is no "best practices", there are practices that fit best. Here is one of the thing that I always configure on the router.&lt;br /&gt;&lt;br /&gt;There are many advantages in configuring Loopback interface when you use dynamic routing, but I also find loopback helpful for syslog reporting and authentication and authorization queries. So, I always configure:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;ip tacacs source-interface Loopback0&lt;/b&gt;&lt;br /&gt;&lt;b&gt;logging source-interface Loopback0&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Next step is to either add loopback interfaces of your routers to DNS or /etc/hosts file on Tacacs and syslog servers.&lt;br /&gt;The names are no good if you can not use them. I prefer syslog-ng for logging, so, in order to record names instead of IP addresses, you need to configure &lt;b&gt;use_dns(yes)&lt;/b&gt; in "options" section of syslog-ng.conf. For TACACS+: run tac_plus with "-L" option.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15945726-4631524200592023342?l=blog.glinskiy.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.glinskiy.com/feeds/4631524200592023342/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=15945726&amp;postID=4631524200592023342' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15945726/posts/default/4631524200592023342'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15945726/posts/default/4631524200592023342'/><link rel='alternate' type='text/html' href='http://blog.glinskiy.com/2010/03/best-practices-sort-of.html' title='Best practices. Sort of.'/><author><name>V. Glinskiy</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17740504827361569465'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15945726.post-1103934276192806876</id><published>2010-03-25T11:46:00.000-04:00</published><updated>2010-03-25T11:46:50.511-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Network management'/><category scheme='http://www.blogger.com/atom/ns#' term='Cisco'/><title type='text'>Making same change on many routers</title><content type='html'>Suppose you need to make the same change on many routers, but do not have fancy software like Cisco Works to help you. No worries. Perl is the best friend of any network and system administrator. Here is the quick script that goes to a router and types command "&lt;b&gt;logging source-interface loopback 0&lt;/b&gt;", saves configuration and exit. It can be used to run any command.&lt;br /&gt;Place IP addresses of the routers, one per line, in file routers.txt. This file must be in the same directory as the script. Remember, you put your username, password and enable password in the script in clear text, so do not forget "&lt;b&gt;chmod 700 &lt;/b&gt;" &lt;br /&gt;&lt;br /&gt;&lt;pre&gt;#!/usr/bin/perl&lt;br /&gt;use Net::Telnet::Cisco;&lt;br /&gt;my $myfile="./routers.txt";&lt;br /&gt;open (FH, $myfile) || die "Can not open $myfile\n";&lt;br /&gt;&lt;br /&gt;while (&lt;fh&gt;) {&lt;br /&gt;chomp;&lt;br /&gt;my $switchname=$_;&lt;br /&gt;print "$switchname\n";&amp;nbsp;&lt;/fh&gt;&lt;/pre&gt;&lt;pre&gt;&lt;fh&gt;&lt;br /&gt;&lt;/fh&gt;&lt;/pre&gt;&lt;pre&gt;&lt;fh&gt;my $session = Net::Telnet::Cisco-&amp;gt;new(Host =&amp;gt; $switchname,Input_log =&amp;gt; "$switchname.log");&amp;nbsp;&lt;/fh&gt;&lt;/pre&gt;&lt;pre&gt;# Replace username and password below with real username and password&lt;fh&gt; &lt;/fh&gt;&lt;/pre&gt;&lt;pre&gt;&lt;fh&gt;$session-&amp;gt;login('username', 'password');&lt;br /&gt;&lt;br /&gt;# Enable mode&lt;br /&gt;if ($session-&amp;gt;enable("enable password") ) { # insert your enable passowrd&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @output = $session-&amp;gt;cmd('configure terminal');&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @output = $session-&amp;gt;cmd('logging source-interface loopback 0');&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; print @output;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @output = $session-&amp;gt;cmd('exit');&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @output = $session-&amp;gt;cmd("copy run startup-config\n\n");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; print @output;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; warn "Can't enable: " . $session-&amp;gt;errmsg;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;$session-&amp;gt;close;&lt;br /&gt;}&lt;br /&gt;&lt;/fh&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;Use at your own risk. &lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15945726-1103934276192806876?l=blog.glinskiy.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.glinskiy.com/feeds/1103934276192806876/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=15945726&amp;postID=1103934276192806876' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15945726/posts/default/1103934276192806876'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15945726/posts/default/1103934276192806876'/><link rel='alternate' type='text/html' href='http://blog.glinskiy.com/2010/03/making-same-change-on-many-routers.html' title='Making same change on many routers'/><author><name>V. Glinskiy</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17740504827361569465'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15945726.post-2367405441619526001</id><published>2010-03-22T15:36:00.000-04:00</published><updated>2010-03-22T15:36:57.930-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>Debian 5.0.4 on Dell 1950</title><content type='html'>Normally, installing Debian on Dell servers is piece of cake. This particular 1950 came with Broadcom NICs and PERC5 controller. Debian 5.0.4 does not include driver for Broadcom drivers due to some copyright restrictions. However, the driver is available as deb package.&lt;a href="http://http.us.debian.org/debian/pool/non-free/f/firmware-nonfree/firmware-bnx2_0.4+etchnhalf.1_all.deb"&gt; Download it&lt;/a&gt; and copy to FAT or FAT32 formatted USB drive. When prompted for NIC driver during the installation process, insert USB drive into USB port. As soon as server loads the driver and moves to the next screen in installation process, remove the drive. If you do not remove the USB drive before installation process gets to partitioning, your drive sequence will we out of whack. You'll have to boot from CD and edit /etc/fstab.&lt;br /&gt;Since this server has hardware I wanted to use instead of configuring software RAID in Linux. The question is how to monitor RAID state from Debian. There is no deb package or source code, but &lt;a href="http://www.lsi.com/storage_home/products_home/internal_raid/megaraid_sas/megaraid_sas_8480e/index.html?remote=1&amp;amp;locale"&gt;LSI provides RPM&lt;/a&gt;. I downloaded "MegaCLI - Linux" from "Miscellaneous" section, unpacked it, installed "alien" on Debian (sudo apt-get install aliean) and then "sudo alien -i&amp;nbsp; MegaCli-1.01-0.i386.rpm". It install MegaCli under /opt/MegaRAID/MegaCli.&amp;nbsp; &lt;span class="cmr-12x-x-120"&gt;Moritz Mertinkat has great &lt;a href="http://tools.rapidsoft.de/perc/perc-cheat-sheet.html"&gt;emergency cheat sheet&lt;/a&gt; for MegaCli usage.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15945726-2367405441619526001?l=blog.glinskiy.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.glinskiy.com/feeds/2367405441619526001/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=15945726&amp;postID=2367405441619526001' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15945726/posts/default/2367405441619526001'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15945726/posts/default/2367405441619526001'/><link rel='alternate' type='text/html' href='http://blog.glinskiy.com/2010/03/debian-504-on-dell-1950.html' title='Debian 5.0.4 on Dell 1950'/><author><name>V. Glinskiy</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17740504827361569465'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15945726.post-8877564104068953469</id><published>2010-01-06T15:41:00.006-05:00</published><updated>2010-01-06T16:58:39.708-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Monitoring'/><title type='text'>Cacti and 95th percentile</title><content type='html'>I use Cacti to collect traffic data on my routers and I need to know what 95th percentile is. There are quite a ways to get 95th percentile line on Cacti graph. The problem with all those methods is that if time frame of the graph does not coincide with ISP billing period the 95th percentile value on the graph is useless. But all the necessary data is collected by Cacti into RRD file. All we have to do is to extract it.&lt;br /&gt;First, I need to figure out where the RRD file is. In Cacti, go to Console -&gt; Data Sources, select your edge router and click on IPS-facing interface. In "Data Source Path" field you'll see the name of the RRD file in Cacti's rra directory where data for this interface is stored&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://blog.glinskiy.com/uploaded_images/datasource-716501.PNG"&gt;&lt;img style="cursor: pointer; width: 400px; height: 128px;" src="http://blog.glinskiy.com/uploaded_images/datasource-716481.PNG" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Second, we need to know what to extract from this file. I.e I need to know the names of RRD data sources:&lt;br /&gt;rrdtool info border_router_1_traffic_in_14839.rrd&lt;br /&gt;where border_router_1_traffic_in_14839.rrd is file name from previous step.&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;filename = "border_router_1_traffic_in_14839.rrd"&lt;br /&gt;rrd_version = "0003"&lt;br /&gt;step = 300&lt;br /&gt;last_update = 1262806506&lt;br /&gt;ds[traffic_in].type = "COUNTER"&lt;br /&gt;ds[traffic_in].minimal_heartbeat = 600&lt;br /&gt;ds[traffic_in].min = 0.0000000000e+00&lt;br /&gt;ds[traffic_in].max = NaN&lt;br /&gt;ds[traffic_in].last_ds = "437961211333"&lt;br /&gt;ds[traffic_in].value = 4.9711447176e+05&lt;br /&gt;ds[traffic_in].unknown_sec = 0&lt;br /&gt;ds[traffic_out].type = "COUNTER"&lt;br /&gt;ds[traffic_out].minimal_heartbeat = 600&lt;br /&gt;ds[traffic_out].min = 0.0000000000e+00&lt;br /&gt;ds[traffic_out].max = NaN&lt;br /&gt;ds[traffic_out].last_ds = "138465493978"&lt;br /&gt;ds[traffic_out].value = 1.9428099668e+04&lt;br /&gt;ds[traffic_out].unknown_sec = 0&lt;br /&gt;&lt;br /&gt;truncated...&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;The data sources names are traffic_in and traffic_out and this is what we are going to extract. Before we proceed we need to remember, that RRD database size is fixed and determined at the time of creation. When limit is reached, oldest data is overwritten. To avoid losing any data, I am going to extract traffic numbers every hour for the last hour and put inbound and outbound data in separate files.&lt;br /&gt;Incoming traffic:&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-weight: bold;"&gt; rrdtool xport -s now-1h -e now  DEF:xx=border_router_1_traffic_in_14839.rrd:traffic_in:AVERAGE CDEF:bb=xx,8,*  XPORT:bb:"out bits" | grep \&lt;row\&gt;|grep -v Na | awk -F'&lt;v&gt;' '{print $2}'| sed -e  's/&lt;\/v&gt;&lt;\/row&gt;//'|sed -e 's/e+0/\t/' &gt;&gt; incoming.txt&lt;/v&gt;&lt;/row\&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Outgoing traffic:&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-weight: bold;"&gt; rrdtool xport -s now-1h -e now  \DEF:xx=border_router_1_traffic_in_14839.rrd:traffic_out:AVERAGE  CDEF:bb=xx,8,*  XPORT:bb:"out bits" | grep \&lt;row\&gt;|grep -v Na | awk -F'&lt;v&gt;' '{print $2}'| sed -e  's/&lt;\/v&gt;&lt;\/row&gt;//'|sed -e 's/e+0/\t/' &gt;&gt; outgoing.txt&lt;/v&gt;&lt;/row\&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Both commands should be in one line. Above I converted Bytes/sec into Bits/sec and removed XML formatting. You need these 2 lines into shell script and run it from cron every hour on 2 minutes after the hour so Cacti has time to finish collecting on top of the hour. You'll get 2 files - incoming.txt and outgoing.txt looking like this&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;6.9655133612       7&lt;br /&gt;7.0568998690      7&lt;br /&gt;6.9008144000     7&lt;br /&gt;7.0245826541      7&lt;br /&gt;7.2076520540     7&lt;br /&gt;6.7448901179      7&lt;br /&gt;6.7471832197      7&lt;br /&gt;6.7365174531     7&lt;br /&gt;6.9710477122     7&lt;br /&gt;7.1586411237     7&lt;br /&gt;7.0991637699     7&lt;br /&gt;7.0189321194     7&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;This are measurements taken every 5 minutes by Cacti. "6.9655133612    7" means 6.9655133612 * 10^7 bits/sec or 69655133.612 bits/sec.&lt;br /&gt;&lt;br /&gt;Now all you have to do on the 1st of the month right after midnight is to convert the data to get rid of second column, sort it and remove top 5%. For 30-day month:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-weight: bold;"&gt;cat incoming.txt |perl -e ' while(&lt;&gt;) {$input = $_; chomp($input);($traffic, $power)&lt;br /&gt;=split(/\t/,$input); $traffic = $traffic*10**$power; print "$traffic\n";}'|egrep -v '^0$'|sort -n -r | head -433 |tail -1&lt;/span&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15945726-8877564104068953469?l=blog.glinskiy.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.glinskiy.com/feeds/8877564104068953469/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=15945726&amp;postID=8877564104068953469' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15945726/posts/default/8877564104068953469'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15945726/posts/default/8877564104068953469'/><link rel='alternate' type='text/html' href='http://blog.glinskiy.com/2010/01/cacti-and-95th-percentile.html' title='Cacti and 95th percentile'/><author><name>V. Glinskiy</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17740504827361569465'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15945726.post-1243667935497254339</id><published>2009-10-14T14:37:00.004-04:00</published><updated>2010-05-16T12:51:28.566-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BGP'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>How to generate lots of BGP routes</title><content type='html'>I needed to test in the lab whether my Cisco router can handle more than 300K routes - size of current full BGP table.  Now, Cisco router can only accept 200 &lt;span style="font-weight: bold;"&gt;network&lt;/span&gt; statements under &lt;span style="font-weight: bold;"&gt;router bgp&lt;/span&gt; configuration, so I would need 1500 routers. Even if I had that many routers to my disposal, it would have taken days to configure all of them. As always, open source software can help. &lt;a href="http://www.quagga.net/"&gt;Quagga&lt;/a&gt; lets you run OSPF, BGP, RIP, RIPng on Linux and Solaris. If you go with all default options, it is very easy to install. &lt;a href="http://quagga.net/download.php"&gt;Download&lt;/a&gt; and unpack. Go to quagga directory, in my case it was quagga-0.98.6, type&lt;br /&gt;./configure&lt;br /&gt;make&lt;br /&gt;sudo make install&lt;br /&gt;That's it. By default, it went into /usr/local/. I have Debian 4 (Etch) with 2.6.8 kernel and a lot of development packages installed. The only thing I had to do was to add /usr/local/lib to /etc/ld.so.conf file and run /sbin/ldconfig.&lt;br /&gt;Here is the setup&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_cMxbIwo9Fsk/S_AifHgm0YI/AAAAAAAAAR4/etQDfl4-QV8/s1600/quagga-bgp-706519.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_cMxbIwo9Fsk/S_AifHgm0YI/AAAAAAAAAR4/etQDfl4-QV8/s320/quagga-bgp-706519.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Now I need a valid configuration file for Quagga BGP. Adding 300000 network statements manually is not something system administrators do on Linux. Hence, here is the script&lt;br /&gt;&lt;pre&gt;#!/usr/bin/perl&lt;br /&gt;&lt;br /&gt;my $host="quagga-host";         #quagga router name&lt;br /&gt;my $logpass="zebra";            #login password&lt;br /&gt;my $enable="zebra";             #enable password&lt;br /&gt;my $myasn="65099";              #local AS number&lt;br /&gt;my $router_id="172.31.2.2";     #bgp router-id&lt;br /&gt;my $remote_as="65001";          #remote-as number&lt;br /&gt;my $remote_ip="172.31.2.1";     #BGP neighbor ip address&lt;br /&gt;my $route_count=0;&lt;br /&gt;my $max_routes=300000;              #max number of routers to generate&lt;br /&gt;&lt;br /&gt;open (BGPCONF,'&amp;gt;bgpd.conf')|| die "Can not open bgpd.conf for writing";&lt;br /&gt;print BGPCONF "hostname $host\npassword $logpass\nenable password $enable\nline vty \n";&lt;br /&gt;print BGPCONF "router bgp $myasn\n  bgp router-id $router_id\n  neighbor $remote_ip remote-as $remote_as\n";&lt;br /&gt;MAXR: while ($route_count &amp;lt;= $max_routes ) { &lt;br /&gt;$octet1=int(rand(223))+1; #generate 1st octet randomly in 1-223 range, 224 and up is multicust and class E  &lt;br /&gt;if ($octet1 ==127) {next;} #need to make sure that 127.X.X.0/24 is excluded&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;$octet2=0;  &lt;br /&gt;while ( $octet2 &amp;lt;= 255 ){&lt;br /&gt;$octet3=0;&lt;br /&gt;while ( $octet3 &amp;lt;= 255 ) {&lt;br /&gt;print BGPCONF "  network $octet1\.$octet2\.$octet3\.0/24\n";&lt;br /&gt;$octet3++;&lt;br /&gt;$route_count++;&lt;br /&gt;if ($route_count == $max_routes) {last MAXR;}&lt;br /&gt;}&lt;br /&gt;$octet2++;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;close BGPCONF;&lt;br /&gt;&lt;/pre&gt;this script will generate bgpd.conf for Quagga. Since it is lab environment not connected to any real network, I do not really care about zebra configuration or restricting access to Quagga BGP console. Copy bgpd.conf file into /usr/local/etc and run &lt;span style="font-weight: bold;"&gt;/usr/local/sbin/bgpd -d -f /usr/local/etc/bgpd.conf -u root -g root&lt;/span&gt; Again, this is not production environment. Do not run Quagga as root in production. Here is relevant configuration from Cisco router: &lt;br /&gt;&lt;pre&gt;interface GigabitEthernet0/0&lt;br /&gt;ip address 172.31.2.1 255.255.255.0&lt;br /&gt;network 172.31.2.0 mask 255.255.255.0&lt;br /&gt;media-type rj45&lt;br /&gt;negotiation auto&lt;br /&gt;!&lt;br /&gt;router bgp 65001&lt;br /&gt;no synchronization&lt;br /&gt;bgp log-neighbor-changes&lt;br /&gt;neighbor 172.31.2.2 remote-as 65099&lt;br /&gt;no auto-summary&lt;br /&gt;!&lt;br /&gt;&lt;/pre&gt;Let's see if it works. On Linux host: &lt;br /&gt;&lt;pre&gt;sh-2.05b$ telnet localhost 2605&lt;br /&gt;Trying 127.0.0.1...&lt;br /&gt;Connected to localhost.localdomain.&lt;br /&gt;Escape character is '^]'.&lt;br /&gt;&lt;br /&gt;Hello, this is Quagga (version 0.98.6).&lt;br /&gt;Copyright 1996-2005 Kunihiro Ishiguro, et al.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;User Access Verification&lt;br /&gt;&lt;br /&gt;Password:&lt;br /&gt;quagga-host&amp;gt; sho ip bgp summ&lt;br /&gt;BGP router identifier 172.31.2.2, local AS number 65099&lt;br /&gt;2 BGP AS-PATH entries&lt;br /&gt;0 BGP community entries&lt;br /&gt;&lt;br /&gt;Neighbor        V    AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd&lt;br /&gt;172.31.2.1      4 65001     283     606        0    0    0 03:41:55        1&lt;br /&gt;&lt;br /&gt;Total number of neighbors 1&lt;br /&gt;quagga-host&amp;gt;&lt;br /&gt;&lt;/pre&gt;on Cisco:  &lt;br /&gt;&lt;pre&gt;R1#sho ip bgp sum&lt;br /&gt;BGP router identifier 192.0.2.2, local AS number 65001&lt;br /&gt;BGP table version is 330002, main routing table version 330002&lt;br /&gt;310001 network entries using 40920132 bytes of memory&lt;br /&gt;310001 path entries using 16120052 bytes of memory&lt;br /&gt;3/2 BGP path/bestpath attribute entries using 444 bytes of memory&lt;br /&gt;1 BGP AS-PATH entries using 24 bytes of memory&lt;br /&gt;0 BGP route-map cache entries using 0 bytes of memory&lt;br /&gt;0 BGP filter-list cache entries using 0 bytes of memory&lt;br /&gt;Bitfield cache entries: current 1 (at peak 2) using 32 bytes of memory&lt;br /&gt;BGP using 57040684 total bytes of memory&lt;br /&gt;BGP activity 310001/0 prefixes, 320001/10000 paths, scan interval 60 secs&lt;br /&gt;&lt;br /&gt;Neighbor        V    AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd&lt;br /&gt;172.31.2.2      4 65099     602     322   330002    0    0 03:38:59   310000&lt;br /&gt;&lt;/pre&gt;Yep. It works.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15945726-1243667935497254339?l=blog.glinskiy.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.glinskiy.com/feeds/1243667935497254339/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=15945726&amp;postID=1243667935497254339' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15945726/posts/default/1243667935497254339'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15945726/posts/default/1243667935497254339'/><link rel='alternate' type='text/html' href='http://blog.glinskiy.com/2009/10/how-to-generate-lots-of-bgp-routes.html' title='How to generate lots of BGP routes'/><author><name>V. Glinskiy</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17740504827361569465'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_cMxbIwo9Fsk/S_AifHgm0YI/AAAAAAAAAR4/etQDfl4-QV8/s72-c/quagga-bgp-706519.jpg' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15945726.post-9046956495016617815</id><published>2009-10-09T16:08:00.006-04:00</published><updated>2010-03-24T17:31:23.274-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Network management'/><category scheme='http://www.blogger.com/atom/ns#' term='BGP'/><title type='text'>BGP and BFD (Bidirectional Forwading Detection)</title><content type='html'>If you have Ethernet uplink to your ISP, the chances are high that it looks like this:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_cMxbIwo9Fsk/S6qEbFLX-eI/AAAAAAAAAQY/2TgsG0r7n64/s1600/bgp-bdf1-708081.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_cMxbIwo9Fsk/S6qEbFLX-eI/AAAAAAAAAQY/2TgsG0r7n64/s320/bgp-bdf1-708081.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;The Layer2 device could be "on the wire" provider or Ethernet over MPLS service. The problem arises when, for example, connection between Layer2 device and ISP router goes down&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://blog.glinskiy.com/uploaded_images/bgp-bdf2-751409.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;/a&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_cMxbIwo9Fsk/S6qElNZRGoI/AAAAAAAAAQg/dZfF0K0AL7w/s1600/bgp-bdf2-751409.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_cMxbIwo9Fsk/S6qElNZRGoI/AAAAAAAAAQg/dZfF0K0AL7w/s320/bgp-bdf2-751409.png" /&gt;&lt;/a&gt;&lt;/div&gt;The BGP session with R1 on ISP router will reset immediately, unless you configured "no bgp fast-external-fallover". But R1 will rely on BGP hello messages to detect if neighbor still alive. It might take R1 up to 3 minutes detect that ISP is not available and for these 3 minutes R1 will be sending traffic to black hole instead of re-converging and sending traffic to your backup link. You have backup link, don't you?&lt;br /&gt;Here are the syslog messages from R1 and ISP routers. To imitate link failure I shutdown interface on ISP&lt;br /&gt;&lt;br /&gt;router ISP:&lt;br /&gt;&lt;blockquote&gt;&lt;span style="color: red;"&gt;Oct  9 17:55:18 UTC&lt;/span&gt;: %LINK-5-CHANGED: Interface GigabitEthernet2/5, changed state to administratively down&lt;br /&gt;Oct  9 17:55:18 UTC: %BGP-5-ADJCHANGE: neighbor 172.31.255.1 Down Interface flap&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;router R1:&lt;br /&gt;&lt;blockquote&gt;Oct  9 17:57:24 UTC: %BGP-5-ADJCHANGE: neighbor 172.31.255.2 Down BGP Notification sent&lt;br /&gt;&lt;span style="color: red;"&gt;Oct  9 17:57:24 UTC&lt;/span&gt;: %BGP-3-NOTIFICATION: sent to neighbor 172.31.255.2 4/0 (hold time expired) 0 bytes&lt;/blockquote&gt;&lt;br /&gt;Note the timestamps of first and last messages. That's not good, especially if every minute of downtime costs you a bundle. You can adjust bgp timers, but lowest you can go is 1 second and it could be hard on CPU.&lt;br /&gt;BFD protocol allows you to go to microseconds level. It is very lightweight and easy to configure.&lt;br /&gt;On interfaces facing Layer2 device apply command:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;bfd interval 100 min_rx 100 multiplier 3&lt;/blockquote&gt;To check if BFD is configured properly:&lt;br /&gt;&lt;blockquote&gt;#sho bfd neighbor&lt;br /&gt;&lt;br /&gt;OurAddr       NeighAddr     LD/RD  RH/RS  Holddown(mult)  State     Int&lt;br /&gt;172.31.255.2  172.31.255.1   3/7    Up        0    (3 )   Up        Gi2/5    &lt;br /&gt;&lt;br /&gt;&lt;/blockquote&gt;under "router bgp" configuration:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;neighbor [neighbor IP]  fall-over bfd&lt;/blockquote&gt;&lt;br /&gt;Now let's imitate link failure again. Shutdown interface on router ISP:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="color: red;"&gt;Oct  9 18:14:27.408 UTC&lt;/span&gt;: %LINK-5-CHANGED: Interface GigabitEthernet2/5, changed state to administratively down&lt;br /&gt;Oct  9 18:14:27.408 UTC: %BGP-5-ADJCHANGE: neighbor 172.31.255.1 Down Interface flap&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;On R1&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="color: red;"&gt;Oct  9 18:14:27.673 UTC&lt;/span&gt;: %BGP-5-ADJCHANGE: neighbor 172.31.255.2 Down BFD adjacency down&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;The difference now in milliseconds. The hard part is to convince your ISP to configure BFD on their side.&lt;br /&gt;At this moment Cisco supports BFD on Ethernet interfaces only and only for directly connected BGP peers, i.e. no multi-hop BGP.&lt;br /&gt;BFD requires UDP ports 3784 and 3785 to be open in case you have ACL applied to your uplink interface.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15945726-9046956495016617815?l=blog.glinskiy.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.glinskiy.com/feeds/9046956495016617815/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=15945726&amp;postID=9046956495016617815' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15945726/posts/default/9046956495016617815'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15945726/posts/default/9046956495016617815'/><link rel='alternate' type='text/html' href='http://blog.glinskiy.com/2009/10/bgp-and-bfd-bidirectional-forwading.html' title='BGP and BFD (Bidirectional Forwading Detection)'/><author><name>V. Glinskiy</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17740504827361569465'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_cMxbIwo9Fsk/S6qEbFLX-eI/AAAAAAAAAQY/2TgsG0r7n64/s72-c/bgp-bdf1-708081.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15945726.post-8821110510186592287</id><published>2009-10-06T15:07:00.003-04:00</published><updated>2009-10-06T15:21:36.672-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Certification'/><title type='text'>CCIE R&amp;S v4.0</title><content type='html'>I just attended webcast about new CCIE R&amp;amp;S written and lab exam. It looks like MPLS portion of the exam is going to be much easier than 642-611 exam which is required for CCIP certification.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15945726-8821110510186592287?l=blog.glinskiy.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.glinskiy.com/feeds/8821110510186592287/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=15945726&amp;postID=8821110510186592287' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15945726/posts/default/8821110510186592287'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15945726/posts/default/8821110510186592287'/><link rel='alternate' type='text/html' href='http://blog.glinskiy.com/2009/10/ccie-r-v40.html' title='CCIE R&amp;S v4.0'/><author><name>V. Glinskiy</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17740504827361569465'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15945726.post-7262932096001564753</id><published>2009-09-16T13:34:00.002-04:00</published><updated>2009-09-16T14:23:38.959-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cisco'/><title type='text'>bpduguard vs. bpdufilter</title><content type='html'>Suppose you have a switch with servers connected to it. It's called "access layer switch" in &lt;a href="http://www.cisco.com/en/US/docs/solutions/Enterprise/Data_Center/DC_3_0/DC-3_0_IPInfra.html"&gt;Cisco lingo&lt;/a&gt;. There is no need to run spannig-tree on these server-facing ports. So, you disable it with "&lt;span style="font-weight: bold;"&gt;switchport portfast&lt;/span&gt;" interface command. One of the benefits of disabling STP on the port is that if you server boots fast, it does not need to wait until port finishes going through all STP port states and can start transmitting data immediately.&lt;br /&gt;  Since servers normally should ignore BPDUs coming from switch, there is no need to send them to a server in first place. To filter out outgoing BPDUs apply interface command "&lt;span style="font-weight: bold;"&gt;spanning-tree bpdufilter enable&lt;/span&gt;". &lt;br /&gt;  But when BPDU is received on the port with bpdufilter enabled, the port is portfast status is disabled and port will participate in spanning-tree. At the time network needs to be protected from unauthorized device that might decide to participate in your spanning-tree topology and cause spanning-tree loop or try to hijack root. Interface command "&lt;span style="font-weight: bold;"&gt;spanning-tree bpduguard enable&lt;/span&gt;" puts interface in err-disable mode whenever BPDU is received from connected device.&lt;br /&gt;What will happen if you have both bpdufilter and bpduguard enabled on the interface?&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt; spanning-tree portfast&lt;br /&gt; spanning-tree bpdufilter enable&lt;br /&gt; spanning-tree bpduguard enable&lt;br /&gt;&lt;/blockquote&gt; bpdufilter takes precedence and bpdugard does not work. Although bpduguard needs more administrative overhead - port needs to be enabled manually - it makes your network more secure.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15945726-7262932096001564753?l=blog.glinskiy.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.glinskiy.com/feeds/7262932096001564753/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=15945726&amp;postID=7262932096001564753' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15945726/posts/default/7262932096001564753'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15945726/posts/default/7262932096001564753'/><link rel='alternate' type='text/html' href='http://blog.glinskiy.com/2009/09/bpduguard-vs-bpdufilter.html' title='bpduguard vs. bpdufilter'/><author><name>V. Glinskiy</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17740504827361569465'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15945726.post-3865817854771869675</id><published>2009-08-17T16:15:00.002-04:00</published><updated>2010-03-24T17:33:33.566-04:00</updated><title type='text'>Cisco router as Frame-Relay switch</title><content type='html'>There are a lot of examples on the 'Net how to configure Cisco router to act as Frame Relay switch. All of them use command "&lt;span style="font-weight: bold;"&gt;frame-relay route&lt;/span&gt;". Here is (one more) example&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_cMxbIwo9Fsk/S6qFHBG41eI/AAAAAAAAAQo/WSPHw8Qetqo/s1600/frame-relay-741179.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_cMxbIwo9Fsk/S6qFHBG41eI/AAAAAAAAAQo/WSPHw8Qetqo/s320/frame-relay-741179.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;For the topology on the picture above, the configuration would look like this&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;interface Serial2/0&lt;br /&gt;no ip address&lt;br /&gt;encapsulation frame-relay&lt;br /&gt;no fair-queue&lt;br /&gt;clock rate 128000&lt;br /&gt;frame-relay intf-type dce&lt;br /&gt;frame-relay route 103 interface Serial2/2 301&lt;br /&gt;!&lt;br /&gt;interface Serial2/2&lt;br /&gt;no ip address&lt;br /&gt;encapsulation frame-relay&lt;br /&gt;clock rate 128000&lt;br /&gt;frame-relay intf-type dce&lt;br /&gt;frame-relay route 301 interface Serial2/0 103&lt;br /&gt;end&lt;/blockquote&gt;Here is another way to configure:&lt;br /&gt;&lt;blockquote&gt;interface Serial2/0&lt;br /&gt;no ip address&lt;br /&gt;encapsulation frame-relay&lt;br /&gt;no fair-queue&lt;br /&gt;clock rate 128000&lt;br /&gt;frame-relay intf-type dce&lt;br /&gt;!&lt;br /&gt;interface Serial2/2&lt;br /&gt;no ip address&lt;br /&gt;encapsulation frame-relay&lt;br /&gt;clock rate 128000&lt;br /&gt;frame-relay intf-type dce&lt;br /&gt;!&lt;br /&gt;connect mylink Serial2/0 103 Serial2/2 301&lt;/blockquote&gt;&lt;br /&gt;In latter case I used command "&lt;span style="font-weight: bold;"&gt;connect&lt;/span&gt;". Unlike "&lt;span style="font-weight: bold;"&gt;frame-relay route&lt;/span&gt;", "&lt;span style="font-weight: bold;"&gt;connect&lt;/span&gt;" command can be used only once for each pair of DLCIs that need to be able to talk to each other. If you need to have many Frame Relay links, using "connect" is less error-prone and configuration is easier to read.&lt;br /&gt;To see connection status:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;#show connection all&lt;br /&gt;&lt;br /&gt;ID      Name       Segment 1       Segment 2        State     &lt;br /&gt;========================================&lt;br /&gt;2       mylink      Se2/0 103        Se2/2 301          UP     &lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15945726-3865817854771869675?l=blog.glinskiy.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.glinskiy.com/feeds/3865817854771869675/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=15945726&amp;postID=3865817854771869675' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15945726/posts/default/3865817854771869675'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15945726/posts/default/3865817854771869675'/><link rel='alternate' type='text/html' href='http://blog.glinskiy.com/2009/08/cisco-router-as-frame-relay-switch.html' title='Cisco router as Frame-Relay switch'/><author><name>V. Glinskiy</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17740504827361569465'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_cMxbIwo9Fsk/S6qFHBG41eI/AAAAAAAAAQo/WSPHw8Qetqo/s72-c/frame-relay-741179.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15945726.post-2623220991108466503</id><published>2009-07-20T12:02:00.003-04:00</published><updated>2009-07-20T12:35:44.509-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Network management'/><category scheme='http://www.blogger.com/atom/ns#' term='Monitoring'/><title type='text'>Need to find out Cisco switch serial number?</title><content type='html'>Yes, you can do it by logging in and running "show idprom backplane" or "show inventory". What if you have hundreds of switches and need to update your inventory list.  Going to every switch, typing commands and writing down serial numbers is very time consuming. There is also Expect script, but I am not a big fan of putting clear text passwords into code. So, my favorite SNMP to the rescue.&lt;br /&gt;Serial number OID for modular switches (4500 and 6500) is .1.3.6.1.2.1.47.1.1.1.1.11.1. For Catalyst 2960 and 3500:  1.3.6.1.2.1.47.1.1.1.1.11.1001&lt;br /&gt;&lt;br /&gt;Here is the quick shell script to get serial number and location of each switch.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;for i in `cat switches.txt`&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;  do &lt;/span&gt;&lt;br /&gt; &lt;span style="color: rgb(0, 0, 153);"&gt;       serial=`snmpwalk -Ov -Oq  -v2c -c public $i  1.3.6.1.2.1.47.1.1.1.1.11.1001`    &lt;/span&gt;&lt;br /&gt; &lt;span style="color: rgb(0, 0, 153);"&gt;      location=`snmpwalk -Ov -Oq  -v2c -c public $i system.sysLocation`&lt;/span&gt;&lt;br /&gt; &lt;span style="color: rgb(0, 0, 153);"&gt;      echo -e "$i \t $serial \t $location"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt; done&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;File switches.txt contains ip addresses of my access switches, one per line. It goes without saying that each switch must have "snmp-server location" configured.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15945726-2623220991108466503?l=blog.glinskiy.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.glinskiy.com/feeds/2623220991108466503/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=15945726&amp;postID=2623220991108466503' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15945726/posts/default/2623220991108466503'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15945726/posts/default/2623220991108466503'/><link rel='alternate' type='text/html' href='http://blog.glinskiy.com/2009/07/need-to-find-out-cisco-switch-serial.html' title='Need to find out Cisco switch serial number?'/><author><name>V. Glinskiy</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17740504827361569465'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15945726.post-83409273347090995</id><published>2009-06-22T16:20:00.004-04:00</published><updated>2009-06-22T16:46:36.182-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Network management'/><title type='text'>JUNOS as a second language</title><content type='html'>Juniper was kind enough to post "&lt;a href="http://www.juniper.net/us/en/training/elearning/jsl.html"&gt;JUNOS As A Second Language&lt;/a&gt;" e-learning course aimed at network administrators familiar with Cisco IOS. As somebody who works in production environment I could not help but notice how easy it is to revert changes in JUNOS with "commit confirmed" command.&lt;br /&gt;Well, it turns out that IOS 12.4 has similar feature with "configure replace". From&lt;a href="http://www.cisco.com/en/US/docs/ios/fundamentals/configuration/guide/cf_config-rollback_ps6350_TSD_Products_Configuration_Guide_Chapter.html"&gt; Cisco documentation&lt;/a&gt;:&lt;br /&gt;&lt;span class="content"&gt;&lt;h3 class="p_H_Head3"&gt; &lt;/h3&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span class="content"&gt;&lt;h3 class="p_H_Head3"&gt;Configuration Rollback Confirmed Change &lt;/h3&gt; &lt;a name="wp1136324"&gt;&lt;/a&gt;&lt;p class="pB1_Body1"&gt; The Configuration Rollback Confirmed Change feature enables an added criteria of a confirmation to configuration changes. This functionality enables a rollback to occur if a confirmation of the requested changes is not received in a configured time frame. Command failures can also be configured to trigger a configuration rollback. &lt;/p&gt; &lt;a name="wp1136515"&gt;&lt;/a&gt;&lt;p class="pB1_Body1"&gt; The following steps outline how this process is achieved: &lt;/p&gt; &lt;a name="wp1136325"&gt;&lt;/a&gt;&lt;p class="pNF_NumFirst"&gt; &lt;b&gt; 1. &lt;/b&gt;&lt;img src="http://www.cisco.com/en/US/i/templates/blank.gif" alt="" width="10" border="0" height="2" /&gt;When entering configuration mode, this new option allows you to request confirmation (a confirmation time limit must be supplied) of the configuration changes. &lt;/p&gt; &lt;a name="wp1136523"&gt;&lt;/a&gt;&lt;p class="pNN_NumNext"&gt; &lt;b&gt; 2. &lt;/b&gt;&lt;img src="http://www.cisco.com/en/US/i/templates/blank.gif" alt="" width="10" border="0" height="2" /&gt;After exiting configuration mode, you must enter the confirmation command. If no confirmation is entered within the requested time limit, the configuration will revert to its previous state. &lt;/p&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="content"&gt;&lt;b class="cKeyword"&gt;configure replace&lt;/b&gt;&lt;b style="font-weight: bold;" class="cCN_CmdName"&gt; &lt;/b&gt;&lt;em style="font-weight: normal;" class="cArgument"&gt;target-url&lt;/em&gt; [&lt;b class="cKeyword"&gt;nolock&lt;/b&gt;] [&lt;b class="cKeyword"&gt;list&lt;/b&gt;]  [&lt;b class="cKeyword"&gt;force&lt;/b&gt;] [&lt;b class="cKeyword"&gt;ignorecase&lt;/b&gt;] [&lt;b class="cKeyword"&gt;revert trigger&lt;/b&gt;&lt;b style="font-weight: bold;" class="cCN_CmdName"&gt; &lt;/b&gt;&lt;span style="font-style: normal; font-weight: normal;color:Black;" &gt;[&lt;/span&gt;&lt;b style="font-weight: bold;" class="cKeyword"&gt;error&lt;/b&gt;&lt;span style="font-style: normal; font-weight: normal;color:Black;" &gt;]  &lt;/span&gt;&lt;em style="font-style: normal;" class="cArgument"&gt;[&lt;/em&gt;&lt;b style="font-weight: bold;" class="cKeyword"&gt;timer &lt;/b&gt;&lt;em style="font-style: italic; font-weight: normal;" class="cArgument"&gt;minutes&lt;/em&gt;&lt;span style="font-style: normal; font-weight: normal;color:Black;" &gt;]&lt;/span&gt;&lt;b class="cKeyword"&gt; &lt;/b&gt;|&lt;b class="cKeyword"&gt; time&lt;/b&gt; &lt;em class="cArgument"&gt;minutes&lt;/em&gt;]&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span class="content"&gt;&lt;br /&gt;It might come in handy next time when you change IP address on the wrong interface or make mistake in ACL.&lt;br /&gt;Disclaimer: I strongly advise that you have console server with out-of-band access connected to all your critical production routers.&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/15945726-83409273347090995?l=blog.glinskiy.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.glinskiy.com/feeds/83409273347090995/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=15945726&amp;postID=83409273347090995' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15945726/posts/default/83409273347090995'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15945726/posts/default/83409273347090995'/><link rel='alternate' type='text/html' href='http://blog.glinskiy.com/2009/06/junos-as-second-language.html' title='JUNOS as a second language'/><author><name>V. Glinskiy</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17740504827361569465'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15945726.post-7349966414138957622</id><published>2009-06-19T10:38:00.010-04:00</published><updated>2010-03-24T17:35:40.651-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Troubleshooting'/><category scheme='http://www.blogger.com/atom/ns#' term='Cisco'/><title type='text'>Last Error: PCALC:: No addresses to connect</title><content type='html'>Ever since I passed "Implementing Cisco MPLS" (642-611) exam, I've been aching to try my hands at MPLS TE. So, here is the task:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://blog.glinskiy.com/uploaded_images/mpls-te-explicit-path-766717.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;/a&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_cMxbIwo9Fsk/S6qFeHlHv4I/AAAAAAAAAQw/beY4jmzwAk0/s1600/mpls-te-explicit-path-766717.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_cMxbIwo9Fsk/S6qFeHlHv4I/AAAAAAAAAQw/beY4jmzwAk0/s320/mpls-te-explicit-path-766717.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Click on image to see bigger version.&lt;br /&gt;&lt;br /&gt;Since R2-R4 link is T3, OSPF will pick R2-R3-R5 path from R1 to either R6 or R7 leaving R2-R4-R5 link underutilized. At the same time I know that traffic from R1 to 10.0.0.0/24 is going to low enough to fit comfortably into T3 link. I wanted to create explicit path tunnel R1-R2-R4-R5-R7 with backup dynamic tunnel. I am going to skip configuration part - there are more then enough examples on the 'Net.&lt;br /&gt;Let's see if tunnel is up&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-size: 85%;"&gt;R1#sho mpls traffic-eng tunnels&lt;br /&gt;&lt;br /&gt;Name: 6503sw2_t0                          (Tunnel0) Destination: 192.168.1.4&lt;br /&gt;Status:&lt;br /&gt;Admin: up   &lt;/span&gt;&lt;span style="font-size: 85%; font-weight: bold;"&gt;Oper: down&lt;/span&gt;&lt;span style="font-size: 85%;"&gt;    &lt;span style="font-weight: bold;"&gt;Path: not valid&lt;/span&gt;  Signalling: Down path option 1, type explicit mypath&lt;br /&gt;&lt;br /&gt;Config Parameters:&lt;br /&gt;Bandwidth: 0        kbps (Global)  Priority: 7  7   Affinity: 0x0/0xFFFF&lt;br /&gt;Metric Type: TE (default)&lt;br /&gt;AutoRoute:  enabled   LockDown: disabled  Loadshare: 0        bw-based&lt;br /&gt;auto-bw: disabled&lt;br /&gt;&lt;br /&gt;History:&lt;br /&gt;Tunnel:&lt;br /&gt;Time since created: 20 hours, 1 minutes&lt;br /&gt;Time since path change: 3 minutes, 24 seconds&lt;br /&gt;Number of LSP IDs (Tun_Instances) used: 334&lt;br /&gt;Prior LSP:&lt;br /&gt;ID: path option 1 [309]&lt;br /&gt;Removal Trigger: path option removed&lt;br /&gt;&lt;span style="color: red; font-weight: bold;"&gt;Last Error: PCALC:: No addresses to connect 172.16.0.14 to 172.16.0.10&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;Not good. &lt;a href="http://www.google.com/search?hl=en&amp;amp;client=firefox-a&amp;amp;rls=org.mozilla%3Aen-US%3Aofficial&amp;amp;hs=dp0&amp;amp;q=%22Last+Error%3A+PCALC%3A%3A+No+addresses+to+connect%22&amp;amp;aq=f&amp;amp;oq=&amp;amp;aqi="&gt;Searching for this type of error message&lt;/a&gt; gives one sage advise:&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-size: 85%;"&gt;For cases involving an explicit path option, you can try to narrow down the problem by first checking every hop in the explicit hop list. You can also try to back down the tunnel: Move the tail one hop back each time to see if the tunnel comes up. If the tunnel comes up when you move the tail to a previous hop, you can conclude that there is a problem between that hop and the next hop, and you can start scrutinizing that hop carefully.&lt;/span&gt;&lt;/blockquote&gt;And so I did. Let's see how R2 and R5 see R4:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-size: 85%;"&gt;R2# show ip rsvp neighbor&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 85%;"&gt;Neighbor        Encapsulation  Time since msg rcvd/sent&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 85%;"&gt;172.16.0.18     Raw IP         00:02:12   00:02:10&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 85%;"&gt;172.16.0.21     Raw IP         00:02:10   00:02:23&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 85%;"&gt;R5#show ip rsvp neighbor&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 85%;"&gt;Neighbor        Encapsulation  Time since msg rcvd/sent&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 85%;"&gt;172.16.0.1      Raw IP         00:03:59   00:04:18&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 85%;"&gt;172.16.0.6      Raw IP         00:04:16   00:03:59 &lt;/span&gt;&lt;/blockquote&gt;&lt;span style="font-size: 85%;"&gt;&lt;/span&gt;Hmm, they do not see R4 as RSVP neighbor at all. What's going on on R4?&lt;br /&gt;&lt;span style="font-size: 85%;"&gt;&lt;/span&gt;&lt;span style="font-size: 85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-size: 85%;"&gt;R4# sho ip rsvp interface detail gi 0/0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 85%;"&gt;Gi0/0:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 85%;"&gt;Interface State: Up&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 85%;"&gt;Bandwidth:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 85%;"&gt;Curr allocated: 0 bits/sec&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 85%;"&gt;Max. allowed (total): 30M bits/sec&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 85%;"&gt;Max. allowed (per flow): 30M bits/sec&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 85%;"&gt;Max. allowed for LSP tunnels using sub-pools: 0 bits/sec&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 85%;"&gt;Set aside by policy (total): 0 bits/sec&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 85%;"&gt;Admission Control:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 85%;"&gt;Header Compression methods supported:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 85%;"&gt;rtp (36 bytes-saved), udp (20 bytes-saved)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 85%;"&gt;Traffic Control:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 85%;"&gt;RSVP Data Packet Classification is ON&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 85%;"&gt;Signalling:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 85%;"&gt;DSCP value used in RSVP msgs: 0x3F&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 85%;"&gt;Number of refresh intervals to enforce blockade state: 4&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 85%;"&gt;Number of missed refresh messages: 4&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 85%;"&gt;Refresh interval: 30&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 85%;"&gt;Authentication: disabled &lt;/span&gt;&lt;/blockquote&gt;&lt;span style="font-size: 85%;"&gt;&lt;/span&gt;How does it compare with R4-facing interface on R5?&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-size: 85%;"&gt;R5#sho ip rsvp interface detail gi 0/2&lt;br /&gt;&lt;br /&gt;Gi0/2:&lt;br /&gt;RSVP: Enabled&lt;br /&gt;Interface State: Up&lt;br /&gt;Bandwidth:&lt;br /&gt;Curr allocated: 0 bits/sec&lt;br /&gt;Max. allowed (total): 40M bits/sec&lt;br /&gt;Max. allowed (per flow): 40M bits/sec&lt;br /&gt;Max. allowed for LSP tunnels using sub-pools: 0 bits/sec&lt;br /&gt;Set aside by policy (total): 0 bits/sec&lt;br /&gt;Admission Control:&lt;br /&gt;Header Compression methods supported:&lt;br /&gt;rtp (36 bytes-saved), udp (20 bytes-saved)&lt;br /&gt;Traffic Control:&lt;br /&gt;RSVP Data Packet Classification is ON via CEF callbacks&lt;br /&gt;Signalling:&lt;br /&gt;DSCP value used in RSVP msgs: 0x3F&lt;br /&gt;Number of refresh intervals to enforce blockade state: 4&lt;br /&gt;Authentication: disabled&lt;br /&gt;Key chain:   &lt;none&gt;&lt;br /&gt;Type:        md5&lt;br /&gt;Window size: 1&lt;br /&gt;Challenge:   disabled&lt;br /&gt;Hello Extension:&lt;br /&gt;State: Disabled&lt;br /&gt;&lt;/none&gt;&lt;/span&gt;&lt;/blockquote&gt;"RSVP: Enabled" string is missing in R4 command output.  After some research I found that I need "T" type IOS to run RSVP-TE on R4 which is Cisco 3825.&lt;br /&gt;Let's see what we have after the upgrade:&lt;br /&gt;&lt;span style="font-size: 85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-size: 85%;"&gt;R4#sho ip rsvp interface detail gi 0/0&lt;br /&gt;&lt;br /&gt;Gi0/0:&lt;br /&gt;&lt;span style="color: #cc0000;"&gt;RSVP: Enabled&lt;/span&gt;&lt;br /&gt;Interface State: Up&lt;br /&gt;Bandwidth:&lt;br /&gt;Curr allocated: 5M bits/sec&lt;br /&gt;Max. allowed (total): 30M bits/sec&lt;br /&gt;Max. allowed (per flow): 30M bits/sec&lt;br /&gt;Max. allowed for LSP tunnels using sub-pools: 0 bits/sec&lt;br /&gt;Set aside by policy (total): 0 bits/sec&lt;br /&gt;Admission Control:&lt;br /&gt;Header Compression methods supported:&lt;br /&gt;rtp (36 bytes-saved), udp (20 bytes-saved)&lt;br /&gt;Traffic Control:&lt;br /&gt;RSVP Data Packet Classification is ON&lt;br /&gt;Signalling:&lt;br /&gt;DSCP value used in RSVP msgs: 0x3F&lt;br /&gt;Number of refresh intervals to enforce blockade state: 4&lt;br /&gt;Authentication: disabled&lt;br /&gt;Key chain:   &lt;none&gt;&lt;br /&gt;Type:        md5&lt;br /&gt;Window size: 1&lt;br /&gt;Challenge:   disabled&lt;br /&gt;Hello Extension:&lt;br /&gt;State: Disabled&lt;/none&gt;&lt;/span&gt;&lt;/blockquote&gt;and tunnel:&lt;br /&gt;&lt;span style="font-size: 85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-size: 85%;"&gt;R1#sho mpls traffic-eng tunnels bri&lt;br /&gt;Signalling Summary:&lt;br /&gt;LSP Tunnels Process:            running&lt;br /&gt;Passive LSP Listener:           running&lt;br /&gt;RSVP Process:                   running&lt;br /&gt;Forwarding:                     enabled&lt;br /&gt;Periodic reoptimization:        every 3600 seconds, next in 3042 seconds&lt;br /&gt;Periodic FRR Promotion:         Not Running&lt;br /&gt;Periodic auto-bw collection:    every 300 seconds, next in 42 seconds&lt;br /&gt;TUNNEL NAME                      DESTINATION      UP IF     DOWN IF   STATE/PROT&lt;br /&gt;6503sw2_t0                       192.168.1.4      -         Gi2/1     &lt;span style="color: #cc0000;"&gt;up/up  &lt;/span&gt;   &lt;/span&gt;&lt;/blockquote&gt;Much better. Confirm routing&lt;br /&gt;&lt;span style="font-size: 85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-size: 85%;"&gt;R1#sho ip route 10.0.0.0 255.255.255.0&lt;br /&gt;Routing entry for 10.0.0.0/24&lt;br /&gt;Known via "ospf 100", distance 110, metric 14, type intra area&lt;br /&gt;&lt;span style="color: #cc0000;"&gt;Last update from 192.168.1.4 on Tunnel0&lt;/span&gt;, 19:41:13 ago&lt;br /&gt;Routing Descriptor Blocks:&lt;br /&gt;* 192.168.1.4, from 192.168.1.4, 19:41:13 ago, via Tunnel0&lt;br /&gt;Route metric is 14, traffic share count is 1&lt;/span&gt;&lt;/blockquote&gt;Now, since MPLS TE tunnel is unidirectional, I need to create R7-R5-R4-R2-R1 tunnel as well.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15945726-7349966414138957622?l=blog.glinskiy.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.glinskiy.com/feeds/7349966414138957622/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=15945726&amp;postID=7349966414138957622' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15945726/posts/default/7349966414138957622'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15945726/posts/default/7349966414138957622'/><link rel='alternate' type='text/html' href='http://blog.glinskiy.com/2009/06/last-error-pcalc-no-addresses-to.html' title='Last Error: PCALC:: No addresses to connect'/><author><name>V. Glinskiy</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17740504827361569465'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_cMxbIwo9Fsk/S6qFeHlHv4I/AAAAAAAAAQw/beY4jmzwAk0/s72-c/mpls-te-explicit-path-766717.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15945726.post-6069395443377140288</id><published>2009-05-21T14:35:00.004-04:00</published><updated>2009-05-21T15:24:48.517-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Certification'/><title type='text'>CCIP accomplished</title><content type='html'>Yesterday I passed "Implementing Cisco MPLS" (642-611) exam. That was last one for me to complete CCIP certification process. I want to share my "CCIP reading list":&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://ecx.images-amazon.com/images/I/21r3yHeieBL._SL160_PIsitb-sticker-arrow-dp,TopRight,12,-18_SH30_OU01_AA115_.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 115px; height: 115px;" src="http://ecx.images-amazon.com/images/I/21r3yHeieBL._SL160_PIsitb-sticker-arrow-dp,TopRight,12,-18_SH30_OU01_AA115_.jpg" border="0" alt="" /&gt;&lt;/a&gt; Routing TCP/IP, Volume 1 (2nd Edition)(CCIE Professional Development) &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://ecx.images-amazon.com/images/I/21r3yHeieBL._SL160_PIsitb-sticker-arrow-dp,TopRight,12,-18_SH30_OU01_AA115_.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 115px; height: 115px;" src="http://ecx.images-amazon.com/images/I/21r3yHeieBL._SL160_PIsitb-sticker-arrow-dp,TopRight,12,-18_SH30_OU01_AA115_.jpg" border="0" alt="" /&gt;&lt;/a&gt; Routing TCP/IP, Volume II (CCIE Professional Development)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://ecx.images-amazon.com/images/I/41WHfaBCG7L._SL160_AA115_.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 115px; height: 115px;" src="http://ecx.images-amazon.com/images/I/41WHfaBCG7L._SL160_AA115_.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;BGP Design and Implementation&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://ecx.images-amazon.com/images/I/41qi9HpRyJL._SL160_PIsitb-sticker-arrow-dp,TopRight,12,-18_SH30_OU01_AA115_.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 115px; height: 115px;" src="http://ecx.images-amazon.com/images/I/41qi9HpRyJL._SL160_PIsitb-sticker-arrow-dp,TopRight,12,-18_SH30_OU01_AA115_.jpg" border="0" alt="" /&gt;&lt;/a&gt; Cisco QOS Exam Certification Guide (IP Telephony Self-Study) (2nd Edition)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://ecx.images-amazon.com/images/I/51P75W6YFWL._SL160_PIsitb-sticker-arrow-dp,TopRight,12,-18_SH30_OU01_AA115_.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 115px; height: 115px;" src="http://ecx.images-amazon.com/images/I/51P75W6YFWL._SL160_PIsitb-sticker-arrow-dp,TopRight,12,-18_SH30_OU01_AA115_.jpg" border="0" alt="" /&gt;&lt;/a&gt;MPLS Fundamentals&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The list is not exclusive. In addition to that I used Cisco's command reference guide and IOS documentation on Cisco's website and built small lab to practice. I also tried using exam simulators like RealExams, a.k.a. Pass4Sure, a.k.a. TestKing. Actually, I am not sure if it is the same company or they steal from each other, but simulators' content is almost identical and I found all of them to be waste of money - ridden with errors and outdated. For 642-611 exam, I tried Bosons Software simulator. This one was of much better quality, but turned out to be too easy to be a good help for MPLS exam preparation. Even if you manage to achieve 80-90% accuracy in this simulator, your real exam score won't be high enough to pass.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15945726-6069395443377140288?l=blog.glinskiy.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.glinskiy.com/feeds/6069395443377140288/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=15945726&amp;postID=6069395443377140288' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15945726/posts/default/6069395443377140288'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15945726/posts/default/6069395443377140288'/><link rel='alternate' type='text/html' href='http://blog.glinskiy.com/2009/05/ccip-accomplished.html' title='CCIP accomplished'/><author><name>V. Glinskiy</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17740504827361569465'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15945726.post-6933144802283704115</id><published>2009-05-05T11:52:00.003-04:00</published><updated>2009-05-05T12:05:34.153-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Network management'/><category scheme='http://www.blogger.com/atom/ns#' term='Monitoring'/><category scheme='http://www.blogger.com/atom/ns#' term='Netscreen'/><title type='text'>2 more Netscreen's OIDs</title><content type='html'>1.3.6.1.4.1.3224.4.1.1.1.27.X shows what Netscreen thinks latency (in ms) is through IPSec tunnel number X. See my &lt;a href="http://blog.glinskiy.com/2006/09/more-netscreens-oid.html"&gt;old post&lt;/a&gt; on how to find tunnel number.&lt;br /&gt;&lt;br /&gt;Here is another one. How much data was transferred via policy number Y.&lt;br /&gt;&lt;br /&gt;1.3.6.1.4.1.3224.10.2.1.6.Y.0&lt;br /&gt;Beware, it reports in Bytes/sec. In order to make it work, you'll have to configure policy with "count" option.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15945726-6933144802283704115?l=blog.glinskiy.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.glinskiy.com/feeds/6933144802283704115/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=15945726&amp;postID=6933144802283704115' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15945726/posts/default/6933144802283704115'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15945726/posts/default/6933144802283704115'/><link rel='alternate' type='text/html' href='http://blog.glinskiy.com/2009/05/2-more-netscreens-oids.html' title='2 more Netscreen&apos;s OIDs'/><author><name>V. Glinskiy</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17740504827361569465'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15945726.post-2551412923295619850</id><published>2009-03-19T14:16:00.002-04:00</published><updated>2009-03-19T14:18:29.579-04:00</updated><title type='text'>3 down, 1 more to go</title><content type='html'>Yesterday I passed "Implementing Cisco QoS" exam 642-642. I need to pass 642-611 "Implementing Cisco MPLS" to complete CCIP certification.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15945726-2551412923295619850?l=blog.glinskiy.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.glinskiy.com/feeds/2551412923295619850/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=15945726&amp;postID=2551412923295619850' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15945726/posts/default/2551412923295619850'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15945726/posts/default/2551412923295619850'/><link rel='alternate' type='text/html' href='http://blog.glinskiy.com/2009/03/3-down-1-more-to-go.html' title='3 down, 1 more to go'/><author><name>V. Glinskiy</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17740504827361569465'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15945726.post-5006467794022801925</id><published>2009-03-10T13:59:00.004-04:00</published><updated>2009-03-10T14:56:19.649-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Network management'/><title type='text'>Tracking routing entries on Cisco7600 via SNMP</title><content type='html'>I have Cisco7604 with SUP720 running c7600rsp72043-ipservicesk9-mz.122-33.SRD.bin. Cisco's SNMP object navigator claims that this image supports RFC1213-MIB which has ipRouteTable. In reality here is what I got&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;~$ snmpwalk -v2c -c public [myrouter] ipRouteDest&lt;br /&gt;RFC1213-MIB::ipRouteDest = No Such Object available on this agent at this OID&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;After &lt;a href="http://www.ask.com"&gt;"Asking" around&lt;/a&gt;, I found &lt;a href="http://www.apps.ietf.org/rfc/rfc2096.html"&gt;RFC2096&lt;/a&gt;, that states:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;The ipForwardTable updates the RFC 1213 ipRouteTable to display multipath IP Routes. This is in turn obsoleted by the ipCidrRouteTable.&lt;br /&gt;&lt;br /&gt;The ipCidrRouteTable updates the RFC 1213 ipRouteTable to display multipath IP Routes having the same network number but differing network masks. &lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;ipCidrRouteTable is actually supported by my IOS image, even though Cisco's SNMP object navigator declares it "depricated" and recommends using inetCidrRouteTable (1.3.6.1.2.1.4.24.7)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;~$ snmpwalk -v2c -c public [myrouter] inetCidrRouteTable&lt;br /&gt;IP-FORWARD-MIB::inetCidrRouteTable = No Such Object available on this agent at this OID&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;No luck again, but ipCidrRouteTable (numeric 1.3.6.1.2.1.4.24.4) works just fine.&lt;br /&gt;&lt;br /&gt;Here is the list of the objects in ipCidrRouteTable&lt;br /&gt;ipCidrRouteTable   1.3.6.1.2.1.4.24.4 &lt;br /&gt;ipCidrRouteEntry   1.3.6.1.2.1.4.24.4.1&lt;br /&gt;ipCidrRouteDest   1.3.6.1.2.1.4.24.4.1.1&lt;br /&gt;ipCidrRouteNextHopAS   1.3.6.1.2.1.4.24.4.1.10&lt;br /&gt;ipCidrRouteMetric1   1.3.6.1.2.1.4.24.4.1.11&lt;br /&gt;ipCidrRouteMetric2   1.3.6.1.2.1.4.24.4.1.12&lt;br /&gt;ipCidrRouteMetric3   1.3.6.1.2.1.4.24.4.1.13&lt;br /&gt;ipCidrRouteMetric4   1.3.6.1.2.1.4.24.4.1.14&lt;br /&gt;ipCidrRouteMetric5   1.3.6.1.2.1.4.24.4.1.15&lt;br /&gt;ipCidrRouteStatus   1.3.6.1.2.1.4.24.4.1.16&lt;br /&gt;ipCidrRouteMask   1.3.6.1.2.1.4.24.4.1.2&lt;br /&gt;ipCidrRouteTos   1.3.6.1.2.1.4.24.4.1.3&lt;br /&gt;ipCidrRouteNextHop   1.3.6.1.2.1.4.24.4.1.4&lt;br /&gt;ipCidrRouteIfIndex   1.3.6.1.2.1.4.24.4.1.5&lt;br /&gt;ipCidrRouteType   1.3.6.1.2.1.4.24.4.1.6&lt;br /&gt;ipCidrRouteProto   1.3.6.1.2.1.4.24.4.1.7&lt;br /&gt;ipCidrRouteAge   1.3.6.1.2.1.4.24.4.1.8&lt;br /&gt;ipCidrRouteInfo   1.3.6.1.2.1.4.24.4.1.9&lt;br /&gt;&lt;br /&gt;If you run BGP and accept all routes from the internet, it might be useful to watch the size of your routing table. &lt;span style="font-weight:bold;"&gt;ipCidrRouteNumber&lt;/span&gt; (1.3.6.1.2.1.4.24.3)does just that. If you want to graph it in &lt;a href="http://www.cacti.net/"&gt;Cacti&lt;/a&gt; use 1.3.6.1.2.1.4.24.3.0 For some reason Cacti needs .0 in the end&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15945726-5006467794022801925?l=blog.glinskiy.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.glinskiy.com/feeds/5006467794022801925/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=15945726&amp;postID=5006467794022801925' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15945726/posts/default/5006467794022801925'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15945726/posts/default/5006467794022801925'/><link rel='alternate' type='text/html' href='http://blog.glinskiy.com/2009/03/tracking-routing-entries-on-cisco7600.html' title='Tracking routing entries on Cisco7600 via SNMP'/><author><name>V. Glinskiy</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17740504827361569465'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15945726.post-1177866728179795351</id><published>2009-02-25T13:18:00.004-05:00</published><updated>2010-03-24T17:37:35.889-04:00</updated><title type='text'>I worked in environment like this once.</title><content type='html'>This is what I call really bad cabling.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_cMxbIwo9Fsk/S6qGAPGxIVI/AAAAAAAAAQ4/P9rE8QEjN8w/s1600/really-bad-cabling-706713.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_cMxbIwo9Fsk/S6qGAPGxIVI/AAAAAAAAAQ4/P9rE8QEjN8w/s320/really-bad-cabling-706713.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="text-decoration: underline;"&gt;&lt;br /&gt;&lt;/span&gt;©AP Photo/Bela Szandelszky&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15945726-1177866728179795351?l=blog.glinskiy.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.glinskiy.com/feeds/1177866728179795351/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=15945726&amp;postID=1177866728179795351' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15945726/posts/default/1177866728179795351'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15945726/posts/default/1177866728179795351'/><link rel='alternate' type='text/html' href='http://blog.glinskiy.com/2009/02/i-worked-in-environment-like-this-once.html' title='I worked in environment like this once.'/><author><name>V. Glinskiy</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17740504827361569465'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_cMxbIwo9Fsk/S6qGAPGxIVI/AAAAAAAAAQ4/P9rE8QEjN8w/s72-c/really-bad-cabling-706713.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15945726.post-2553211521314729622</id><published>2009-02-13T14:01:00.003-05:00</published><updated>2009-02-13T15:07:29.593-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Hacks-n-tricks'/><title type='text'>Connect F5 LTM/GTM to Perle IOLAN console server</title><content type='html'>I personally prefer Cyclades (now part of Avocent) console servers since they run Linux and I can use vi to edit configuration files. The only problem is that Cyclade's console servers come with only one Ethernet port. What if a switch to which Cyclade console server is connected via Ethernet dies and you need to access its console to figure out what is going on? You can always hook up modem to you console server and dial in, but in this case only one person can connect and with proliferation of VoIP analog phone lines in offices are getting hard to come by.&lt;br /&gt;So, after some search I found Perle's IOLAN console server which have 2 Ethernet ports. These ports can be used in Active/Standby configuration, meaning you can assign 1 IP address and when 1st Ethernet port goes down, IOLAN moves this IP address automatically to second port. For this feature alone I am willing to tolerate their Windows configuration client software.&lt;br /&gt;&lt;br /&gt;Now I need to connect IOLAN to F5 LTM/GTM console. Since LTM's console is DB9 male connector and IOLAN is RJ45, I need RJ45-DB9 female converter. I buy these converters at pccables.com. The wires in that converter on RJ45 side are connected like this:&lt;br /&gt;1 &lt;span style="color: rgb(51, 102, 255);"&gt;Blue&lt;/span&gt;&lt;br /&gt;2 &lt;span style="color: rgb(255, 153, 0);"&gt;Orange&lt;/span&gt;&lt;br /&gt;3 Black&lt;br /&gt;4 &lt;span style="color: rgb(255, 0, 0);"&gt;Red&lt;/span&gt;&lt;br /&gt;5 &lt;span style="color: rgb(51, 204, 0);"&gt;Green&lt;/span&gt;&lt;br /&gt;6 &lt;span style="color: rgb(255, 255, 0);"&gt;Yellow&lt;/span&gt;&lt;br /&gt;7 &lt;span style="color: rgb(102, 51, 0);"&gt;Brown&lt;/span&gt;&lt;br /&gt;8 &lt;span style="color: rgb(204, 204, 204);"&gt;White&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;I need to plug those wires into DB9 side of the converter like this&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;RJ45               DB9&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;Blue&lt;/span&gt;                6&lt;br /&gt;&lt;span style="color: rgb(255, 153, 0);"&gt;Orange&lt;/span&gt;           8&lt;br /&gt;Black              4&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;Red                 &lt;span style="color: rgb(0, 0, 0);"&gt;2&lt;/span&gt;            &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;Green&lt;/span&gt;             3&lt;br /&gt;&lt;span style="color: rgb(255, 255, 0);"&gt;Yellow&lt;/span&gt;            5&lt;br /&gt;&lt;span style="color: rgb(102, 51, 51);"&gt;Brown&lt;/span&gt;            7&lt;br /&gt;&lt;span style="color: rgb(204, 204, 204);"&gt;White             &lt;span style="color: rgb(0, 0, 0);"&gt;1&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Now, take regular straight network cable, plug one end into RJ45-DB9 converter, another into IOLAN port. Done. Do not forget that by default IOLAN's port speed is 9600 and F5's is 19200.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&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/15945726-2553211521314729622?l=blog.glinskiy.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.glinskiy.com/feeds/2553211521314729622/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=15945726&amp;postID=2553211521314729622' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15945726/posts/default/2553211521314729622'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15945726/posts/default/2553211521314729622'/><link rel='alternate' type='text/html' href='http://blog.glinskiy.com/2009/02/connect-f5-ltmgtm-to-perle-iolan.html' title='Connect F5 LTM/GTM to Perle IOLAN console server'/><author><name>V. Glinskiy</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17740504827361569465'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15945726.post-7146531729659051562</id><published>2009-02-04T12:01:00.006-05:00</published><updated>2009-02-04T12:22:55.508-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Network management'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Hacks-n-tricks'/><title type='text'>Packetization Layer Path MTU Discovery</title><content type='html'>A lot of network administrators block all ICMP traffic on the network's edge. Although some ICMP packets can be used in DDoS, ICMP type 3 plays important role in Paht MTU discovery. If ICMP is completely blocked, sending side can not reliably determine MTU and that can lead to re-transmissions and slower data transfer. Sometimes, ICMP blocking network could be outside your control, so you can not change ACL or firewall rules. In this case Packetization Layer Path MTU Discovery can be used. It utilizes TCP for maximum packet size discovery (&lt;a href="http://tools.ietf.org/html/rfc4821"&gt;RFC4821&lt;/a&gt;). To enable PLPMTUD on Linux:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;echo 2 &gt; /proc/sys/net/ipv4/tcp_mtu_probing&lt;/span&gt;&lt;br /&gt;or&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;in /etc/sysctl.conf net.ipv4.tcp_mtu_probing = 2&lt;/span&gt;&lt;br /&gt;&lt;pre class="newpage"&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15945726-7146531729659051562?l=blog.glinskiy.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.glinskiy.com/feeds/7146531729659051562/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=15945726&amp;postID=7146531729659051562' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15945726/posts/default/7146531729659051562'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15945726/posts/default/7146531729659051562'/><link rel='alternate' type='text/html' href='http://blog.glinskiy.com/2009/02/packetization-layer-path-mtu-discovery.html' title='Packetization Layer Path MTU Discovery'/><author><name>V. Glinskiy</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17740504827361569465'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15945726.post-4081306268586346026</id><published>2008-11-21T13:19:00.002-05:00</published><updated>2008-11-21T13:24:22.425-05:00</updated><title type='text'>Exam 642-901</title><content type='html'>I just passed Cisco's 642-901 exam - Building Scalable Cisco Internetworks. What interesting, though, is that I scored higher for OSPF than for BGP and EIGRP sections of the exam, even though I work with BGP and EIGRP every day. I guess I got overconfident in what I thought I knew. On the other hand, I knew my weak OSPF spots and payed more attention.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15945726-4081306268586346026?l=blog.glinskiy.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.glinskiy.com/feeds/4081306268586346026/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=15945726&amp;postID=4081306268586346026' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15945726/posts/default/4081306268586346026'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15945726/posts/default/4081306268586346026'/><link rel='alternate' type='text/html' href='http://blog.glinskiy.com/2008/11/exam-642-901.html' title='Exam 642-901'/><author><name>V. Glinskiy</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17740504827361569465'/></author><thr:total>0</thr:total></entry></feed>