<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Cisconinja's Blog</title>
	<atom:link href="http://cisconinja.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://cisconinja.wordpress.com</link>
	<description></description>
	<lastBuildDate>Thu, 09 Jun 2011 14:24:11 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='cisconinja.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Cisconinja's Blog</title>
		<link>http://cisconinja.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://cisconinja.wordpress.com/osd.xml" title="Cisconinja&#039;s Blog" />
	<atom:link rel='hub' href='http://cisconinja.wordpress.com/?pushpress=hub'/>
		<item>
		<title>EIGRP SIA-Query and SIA-Reply</title>
		<link>http://cisconinja.wordpress.com/2009/09/18/eigrp-sia-query-and-sia-reply/</link>
		<comments>http://cisconinja.wordpress.com/2009/09/18/eigrp-sia-query-and-sia-reply/#comments</comments>
		<pubDate>Fri, 18 Sep 2009 18:04:04 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
				<category><![CDATA[EIGRP]]></category>

		<guid isPermaLink="false">http://cisconinja.wordpress.com/?p=1032</guid>
		<description><![CDATA[R1: interface Serial0/0  ip address 10.0.12.1 255.255.255.0  ip hold-time eigrp 1 500  no keepalive ! router eigrp 1  network 10.0.0.0  eigrp log-neighbor-changes R2: interface Loopback0  ip address 10.2.2.2 255.255.255.0 ! interface Serial0/0  ip address 10.0.12.2 255.255.255.0  no keepalive ! interface Serial0/1  ip address 10.0.23.2 255.255.255.0 ! router eigrp 1  timers active-time 1  network 10.0.0.0  eigrp [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cisconinja.wordpress.com&amp;blog=5591147&amp;post=1032&amp;subd=cisconinja&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-1033" title="EIGRP SIA Query and Reply" src="http://cisconinja.files.wordpress.com/2009/09/eigrp-sia-query-and-reply.png?w=465&#038;h=156" alt="EIGRP SIA Query and Reply" width="465" height="156" /></p>
<p><code><span style="color:#0000ff;">R1:<br />
interface Serial0/0<br />
 ip address 10.0.12.1 255.255.255.0<br />
 ip hold-time eigrp 1 500<br />
 no keepalive<br />
!<br />
router eigrp 1<br />
 network 10.0.0.0<br />
 eigrp log-neighbor-changes</span><br />
</code></p>
<p><code><span style="color:#0000ff;">R2:<br />
interface Loopback0<br />
 ip address 10.2.2.2 255.255.255.0<br />
!<br />
interface Serial0/0<br />
 ip address 10.0.12.2 255.255.255.0<br />
 no keepalive<br />
!<br />
interface Serial0/1<br />
 ip address 10.0.23.2 255.255.255.0<br />
!<br />
router eigrp 1<br />
 timers active-time 1<br />
 network 10.0.0.0<br />
 eigrp log-neighbor-changes</span><br />
</code></p>
<p><code><span style="color:#0000ff;">R3:<br />
interface Loopback0<br />
 ip address 10.3.3.3 255.255.255.0<br />
!<br />
interface Serial0/0<br />
 ip address 10.0.23.3 255.255.255.0<br />
!<br />
router eigrp 1<br />
 timers active-time 1<br />
 network 10.0.0.0<br />
 eigrp log-neighbor-changes</span><br />
</code></p>
<p>This first example uses IOS version 12.0(5), which does not have support for SIA-query and SIA-reply messages.  The active timer has been lowered to 1 minute on R2 and R3 in order to see the results faster.  Keepalives have been disabled on the R1-R2 link and the hold timer increased on R1 to prevent R2 from discovering that R1 is down before the active timer expires.  We will shut down R1 S0/0 so that R1 stops receiving traffic from R2, and then shut down R3&#8242;s loopback:</p>
<p><code><span style="color:#0000ff;">R1:<br />
interface Serial0/0<br />
 shutdown</span><br />
</code></p>
<p><code><span style="color:#0000ff;">R3:<br />
interface Loopback0<br />
 shutdown</span><br />
</code></p>
<p>When R3&#8242;s loopback gets shutdown, R3 sends a query to R2 for 10.3.3.0/24.  R2 acknowledges the query and sends queries to both R1 and R3 for the route.  R3 acknowledges the query and sends a reply with it&#8217;s current metric (infinity).  R2 does not receive an ACK to the query that it sent to R1 so it continues to retransmit it.  R3 continues to wait on a reply from R2, but R2 can&#8217;t reply until it receives an ACK and a reply from R1:</p>
<p><img class="alignnone size-full wp-image-1034" title="1-R3-Topology-Table" src="http://cisconinja.files.wordpress.com/2009/09/1-r3-topology-table.png?w=521&#038;h=209" alt="1-R3-Topology-Table" width="521" height="209" /></p>
<p><img class="alignnone size-full wp-image-1035" title="1-R2-Topology-Table" src="http://cisconinja.files.wordpress.com/2009/09/1-r2-topology-table.png?w=521&#038;h=210" alt="1-R2-Topology-Table" width="521" height="210" /></p>
<p><code><span style="color:#0000ff;">R3#debug eigrp packets update ack query reply<br />
</span>Mar 1 <span style="color:#ff0000;">00:14:26.075</span>: EIGRP: Enqueueing QUERY on Serial0/0 iidbQ un/rely 0/1 serno 23-23<br />
Mar 1 <span style="color:#ff0000;">00:14:26.079</span>: EIGRP: Enqueueing QUERY on Serial0/0 nbr 10.0.23.2 iidbQ un/rely 0/0 peerQ un/rely 0/0 serno 23-23<br />
Mar 1 <span style="color:#ff0000;">00:14:26.079</span>: EIGRP: Sending QUERY on Serial0/0 nbr 10.0.23.2<br />
Mar 1 <span style="color:#ff0000;">00:14:26.079</span>: AS 1, Flags 0x0, Seq 21/28 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/1 serno 23-23<br />
Mar 1 <span style="color:#ff0000;">00:14:26.159</span>: EIGRP: Received ACK on Serial0/0 nbr 10.0.23.2<br />
Mar 1 <span style="color:#ff0000;">00:14:26.159</span>: AS 1, Flags 0x0, Seq 0/21 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/1<br />
Mar 1 <span style="color:#ff0000;">00:14:26.191</span>: EIGRP: Received QUERY on Serial0/0 nbr 10.0.23.2<br />
Mar 1 <span style="color:#ff0000;">00:14:26.191</span>: AS 1, Flags 0x0, Seq 31/21 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/0<br />
Mar 1 <span style="color:#ff0000;">00:14:26.191</span>: EIGRP: Enqueueing ACK on Serial0/0 nbr 10.0.23.2<br />
Mar 1 <span style="color:#ff0000;">00:14:26.195</span>: Ack seq 31 iidbQ un/rely 0/0 peerQ un/rely 1/0<br />
Mar 1 <span style="color:#ff0000;">00:14:26.195</span>: EIGRP: Sending ACK on Serial0/0 nbr 10.0.23.2<br />
Mar 1 <span style="color:#ff0000;">00:14:26.195</span>: AS 1, Flags 0x0, Seq 0/31 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 1/0<br />
Mar 1 <span style="color:#ff0000;">00:14:26.207</span>: EIGRP: Enqueueing REPLY on Serial0/0 nbr 10.0.23.2 iidbQ un/rely 0/1 peerQ un/rely 0/0 serno 24-24<br />
Mar 1 <span style="color:#ff0000;">00:14:26.211</span>: EIGRP: Sending REPLY on Serial0/0 nbr 10.0.23.2<br />
Mar 1 <span style="color:#ff0000;">00:14:26.211</span>: AS 1, Flags 0x0, Seq 22/31 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/1 serno 24-24<br />
Mar 1 <span style="color:#ff0000;">00:14:26.255</span>: EIGRP: Received ACK on Serial0/0 nbr 10.0.23.2<br />
Mar 1 <span style="color:#ff0000;">00:14:26.255</span>: AS 1, Flags 0x0, Seq 0/22 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/1<br />
</code></p>
<p><code><span style="color:#0000ff;"> </span></code></p>
<p><code><span style="color:#0000ff;">R2#debug eigrp packets update ack query reply</span><br />
Mar 1 <span style="color:#ff0000;">00:14:26.823</span>: EIGRP: Received QUERY on Serial0/1 nbr 10.0.23.3<br />
Mar 1 <span style="color:#ff0000;">00:14:26.823</span>: AS 1, Flags 0x0, Seq 21/28 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/0<br />
Mar 1 <span style="color:#ff0000;">00:14:26.823</span>: EIGRP: Enqueueing ACK on Serial0/1 nbr 10.0.23.3<br />
Mar 1 <span style="color:#ff0000;">00:14:26.827</span>: Ack seq 21 iidbQ un/rely 0/0 peerQ un/rely 1/0<br />
Mar 1 <span style="color:#ff0000;">00:14:26.827</span>: EIGRP: Sending ACK on Serial0/1 nbr 10.0.23.3<br />
Mar 1 <span style="color:#ff0000;">00:14:26.827</span>: AS 1, Flags 0x0, Seq 0/21 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 1/0<br />
Mar 1 <span style="color:#ff0000;">00:14:26.839</span>: EIGRP: Enqueueing QUERY on Serial0/0 iidbQ un/rely 0/1 serno 18-18<br />
Mar 1 <span style="color:#ff0000;">00:14:26.839</span>: EIGRP: Enqueueing QUERY on Serial0/1 iidbQ un/rely 0/1 serno 18-18<br />
Mar 1 <span style="color:#ff0000;">00:14:26.843</span>: EIGRP: Enqueueing QUERY on Serial0/0 nbr 10.0.12.1 iidbQ un/rely 0/0 peerQ un/rely 0/0 serno 18-18<br />
Mar 1 <span style="color:#ff0000;">00:14:26.843</span>: EIGRP: Enqueueing QUERY on Serial0/1 nbr 10.0.23.3 iidbQ un/rely 0/0 peerQ un/rely 0/0 serno 18-18<br />
Mar 1 <span style="color:#ff0000;">00:14:26.843</span>: EIGRP: Sending QUERY on Serial0/0 nbr 10.0.12.1<br />
Mar 1 <span style="color:#ff0000;">00:14:26.847</span>: AS 1, Flags 0x0, Seq 30/13 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/1 serno 18-18<br />
Mar 1 <span style="color:#ff0000;">00:14:26.847</span>: EIGRP: Sending QUERY on Serial0/1 nbr 10.0.23.3<br />
Mar 1 <span style="color:#ff0000;">00:14:26.847</span>: AS 1, Flags 0x0, Seq 31/21 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/1 serno 18-18<br />
Mar 1 <span style="color:#ff0000;">00:14:26.911</span>: EIGRP: Received ACK on Serial0/1 nbr 10.0.23.3<br />
Mar 1 <span style="color:#ff0000;">00:14:26.911</span>: AS 1, Flags 0x0, Seq 0/31 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/1<br />
Mar 1 <span style="color:#ff0000;">00:14:26.935</span>: EIGRP: Received REPLY on Serial0/1 nbr 10.0.23.3<br />
Mar 1 <span style="color:#ff0000;">00:14:26.935</span>: AS 1, Flags 0x0, Seq 22/31 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/0<br />
Mar 1 <span style="color:#ff0000;">00:14:26.935</span>: EIGRP: Enqueueing ACK on Serial0/1 nbr 10.0.23.3<br />
Mar 1 <span style="color:#ff0000;">00:14:26.935</span>: Ack seq 22 iidbQ un/rely 0/0 peerQ un/rely 1/0<br />
Mar 1 <span style="color:#ff0000;">00:14:26.935</span>: EIGRP: Sending ACK on Serial0/1 nbr 10.0.23.3<br />
Mar 1 <span style="color:#ff0000;">00:14:26.935</span>: AS 1, Flags 0x0, Seq 0/22 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 1/0<br />
Mar 1 <span style="color:#ff0000;">00:14:31.347</span>: EIGRP: Sending QUERY on Serial0/0 nbr 10.0.12.1, retry 1, RTO 5000<br />
Mar 1 <span style="color:#ff0000;">00:14:31.347</span>: AS 1, Flags 0x0, Seq 30/13 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/1 serno 18-18<br />
Mar 1 <span style="color:#ff0000;">00:14:36.347</span>: EIGRP: Sending QUERY on Serial0/0 nbr 10.0.12.1, retry 2, RTO 5000<br />
Mar 1 <span style="color:#ff0000;">00:14:36.347</span>: AS 1, Flags 0x0, Seq 30/13 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/1 serno 18-18<br />
Mar 1 <span style="color:#ff0000;">00:14:41.347</span>: EIGRP: Sending QUERY on Serial0/0 nbr 10.0.12.1, retry 3, RTO 5000<br />
Mar 1 <span style="color:#ff0000;">00:14:41.347</span>: AS 1, Flags 0x0, Seq 30/13 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/1 serno 18-18<br />
Mar 1 <span style="color:#ff0000;">00:14:46.347</span>: EIGRP: Sending QUERY on Serial0/0 nbr 10.0.12.1, retry 4, RTO 5000<br />
Mar 1 <span style="color:#ff0000;">00:14:46.347</span>: AS 1, Flags 0x0, Seq 30/13 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/1 serno 18-18<br />
Mar 1 <span style="color:#ff0000;">00:14:51.347</span>: EIGRP: Sending QUERY on Serial0/0 nbr 10.0.12.1, retry 5, RTO 5000<br />
Mar 1 <span style="color:#ff0000;">00:14:51.347</span>: AS 1, Flags 0x0, Seq 30/13 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/1 serno 18-18<br />
Mar 1 <span style="color:#ff0000;">00:14:56.347</span>: EIGRP: Sending QUERY on Serial0/0 nbr 10.0.12.1, retry 6, RTO 5000<br />
Mar 1 <span style="color:#ff0000;">00:14:56.347</span>: AS 1, Flags 0x0, Seq 30/13 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/1 serno 18-18<br />
Mar 1 <span style="color:#ff0000;">00:15:01.347</span>: EIGRP: Sending QUERY on Serial0/0 nbr 10.0.12.1, retry 7, RTO 5000<br />
Mar 1 <span style="color:#ff0000;">00:15:01.347</span>: AS 1, Flags 0x0, Seq 30/13 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/1 serno 18-18<br />
Mar 1 <span style="color:#ff0000;">00:15:06.347</span>: EIGRP: Sending QUERY on Serial0/0 nbr 10.0.12.1, retry 8, RTO 5000<br />
Mar 1 <span style="color:#ff0000;">00:15:06.347</span>: AS 1, Flags 0x0, Seq 30/13 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/1 serno 18-18<br />
Mar 1 <span style="color:#ff0000;">00:15:11.347</span>: EIGRP: Sending QUERY on Serial0/0 nbr 10.0.12.1, retry 9, RTO 5000<br />
Mar 1 <span style="color:#ff0000;">00:15:11.347</span>: AS 1, Flags 0x0, Seq 30/13 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/1 serno 18-18<br />
Mar 1 <span style="color:#ff0000;">00:15:16.347</span>: EIGRP: Sending QUERY on Serial0/0 nbr 10.0.12.1, retry 10, RTO 5000<br />
Mar 1 <span style="color:#ff0000;">00:15:16.347</span>: AS 1, Flags 0x0, Seq 30/13 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/1 serno 18-18<br />
Mar 1 <span style="color:#ff0000;">00:15:21.347</span>: EIGRP: Sending QUERY on Serial0/0 nbr 10.0.12.1, retry 11, RTO 5000<br />
Mar 1 <span style="color:#ff0000;">00:15:21.347</span>: AS 1, Flags 0x0, Seq 30/13 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/1 serno 18-18<br />
Mar 1 <span style="color:#ff0000;">00:15:26.347</span>: EIGRP: Sending QUERY on Serial0/0 nbr 10.0.12.1, retry 12, RTO 5000<br />
Mar 1 <span style="color:#ff0000;">00:15:26.347</span>: AS 1, Flags 0x0, Seq 30/13 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/1 serno 18-18<br />
Mar 1 <span style="color:#ff0000;">00:15:31.347</span>: EIGRP: Sending QUERY on Serial0/0 nbr 10.0.12.1, retry 13, RTO 5000<br />
Mar 1 <span style="color:#ff0000;">00:15:31.347</span>: AS 1, Flags 0x0, Seq 30/13 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/1 serno 18-18<br />
Mar 1 <span style="color:#ff0000;">00:15:36.347</span>: EIGRP: Sending QUERY on Serial0/0 nbr 10.0.12.1, retry 14, RTO 5000<br />
Mar 1 <span style="color:#ff0000;">00:15:36.347</span>: AS 1, Flags 0x0, Seq 30/13 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/1 serno 18-18<br />
Mar 1 <span style="color:#ff0000;">00:15:41.347</span>: EIGRP: Sending QUERY on Serial0/0 nbr 10.0.12.1, retry 15, RTO 5000<br />
Mar 1 <span style="color:#ff0000;">00:15:41.347</span>: AS 1, Flags 0x0, Seq 30/13 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/1 serno 18-18<br />
Mar 1 <span style="color:#ff0000;">00:15:46.347</span>: EIGRP: Sending QUERY on Serial0/0 nbr 10.0.12.1, retry 16, RTO 5000<br />
Mar 1 <span style="color:#ff0000;">00:15:46.347</span>: AS 1, Flags 0x0, Seq 30/13 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/1 serno 18-18<br />
Mar 1 <span style="color:#ff0000;">00:15:51.347</span>: EIGRP: Sending QUERY on Serial0/0 nbr 10.0.12.1, retry 17, RTO 5000<br />
Mar 1 <span style="color:#ff0000;">00:15:51.347</span>: AS 1, Flags 0x0, Seq 30/13 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/1 serno 18-18<br />
Mar 1 <span style="color:#ff0000;">00:15:56.347</span>: EIGRP: Sending QUERY on Serial0/0 nbr 10.0.12.1, retry 18, RTO 5000<br />
Mar 1 <span style="color:#ff0000;">00:15:56.347</span>: AS 1, Flags 0x0, Seq 30/13 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/1 serno 18-18<br />
Mar 1 <span style="color:#ff0000;">00:16:01.347</span>: EIGRP: Sending QUERY on Serial0/0 nbr 10.0.12.1, retry 19, RTO 5000<br />
Mar 1 <span style="color:#ff0000;">00:16:01.347</span>: AS 1, Flags 0x0, Seq 30/13 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/1 serno 18-18<br />
Mar 1 <span style="color:#ff0000;">00:16:06.347</span>: EIGRP: Sending QUERY on Serial0/0 nbr 10.0.12.1, retry 20, RTO 5000<br />
Mar 1 <span style="color:#ff0000;">00:16:06.347</span>: AS 1, Flags 0x0, Seq 30/13 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/1 serno 18-18<br />
</code></p>
<p>The active timer expires first on R3, and R3 assumes R2 is the cause of the problem and clears the adjacency.  A couple seconds later, the adjacency is reestablished and all updates must be resent between R2 and R3.  The active timer expires on R2 a few seconds later and R2 clears the adjacency with R1.  It no longer needs to send a reply to R3 since R3 already reset the adjacency between R2 and R3:</p>
<p><code><span style="color:#0000ff;">R3#debug eigrp packets update ack query reply<br />
</span>Mar 1 <span style="color:#ff0000;">00:16:05.295</span>: %DUAL-3-SIA: Route 10.3.3.0/24 stuck-in-active state in IP-EIGRP 1. Cleaning up<br />
Mar 1 <span style="color:#ff0000;">00:16:05.295</span>: %DUAL-5-NBRCHANGE: IP-EIGRP 1: Neighbor 10.0.23.2 (Serial0/0) is down: stuck in active<br />
Mar 1 <span style="color:#ff0000;">00:16:07.659</span>: %DUAL-5-NBRCHANGE: IP-EIGRP 1: Neighbor 10.0.23.2 (Serial0/0) is up: new adjacency<br />
Mar 1 <span style="color:#ff0000;">00:16:07.659</span>: EIGRP: Enqueueing UPDATE on Serial0/0 nbr 10.0.23.2 iidbQ un/rely 0/1 peerQ un/rely 0/0 serno 1-1<br />
Mar 1 <span style="color:#ff0000;">00:16:07.663</span>: EIGRP: Sending UPDATE on Serial0/0 nbr 10.0.23.2<br />
Mar 1 <span style="color:#ff0000;">00:16:07.663</span>: AS 1, Flags 0x1, Seq 23/0 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/1 serno 1-1<br />
Mar 1 <span style="color:#ff0000;">00:16:09.051</span>: EIGRP: Received UPDATE on Serial0/0 nbr 10.0.23.2<br />
Mar 1 <span style="color:#ff0000;">00:16:09.051</span>: AS 1, Flags 0x1, Seq 32/0 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/1<br />
Mar 1 <span style="color:#ff0000;">00:16:09.067</span>: EIGRP: Enqueueing UPDATE on Serial0/0 iidbQ un/rely 0/1 serno 25-26<br />
Mar 1 <span style="color:#ff0000;">00:16:09.071</span>: EIGRP: Enqueueing UPDATE on Serial0/0 nbr 10.0.23.2 iidbQ un/rely 0/0 peerQ un/rely 0/1 serno 25-26<br />
Mar 1 <span style="color:#ff0000;">00:16:09.663</span>: EIGRP: Sending UPDATE on Serial0/0 nbr 10.0.23.2, retry 1, RTO 3000<br />
Mar 1 <span style="color:#ff0000;">00:16:09.663</span>: AS 1, Flags 0x1, Seq 23/32 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/2 serno 1-1<br />
Mar 1 <span style="color:#ff0000;">00:16:09.707</span>: EIGRP: Received ACK on Serial0/0 nbr 10.0.23.2<br />
Mar 1 <span style="color:#ff0000;">00:16:09.707</span>: AS 1, Flags 0x0, Seq 0/23 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/2<br />
Mar 1 <span style="color:#ff0000;">00:16:09.711</span>: EIGRP: Sending UPDATE on Serial0/0 nbr 10.0.23.2<br />
Mar 1 <span style="color:#ff0000;">00:16:09.711</span>: AS 1, Flags 0x0, Seq 24/32 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/1 serno 25-26<br />
Mar 1 <span style="color:#ff0000;">00:16:09.739</span>: EIGRP: Received ACK on Serial0/0 nbr 10.0.23.2<br />
Mar 1 <span style="color:#ff0000;">00:16:09.739</span>: AS 1, Flags 0x0, Seq 0/24 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/1<br />
</code></p>
<p> </p>
<p><code><span style="color:#0000ff;">R2#debug eigrp packets update ack query reply</span><br />
Mar 1 <span style="color:#ff0000;">00:16:08.363</span>: %DUAL-5-NBRCHANGE: IP-EIGRP 1: Neighbor 10.0.23.3 (Serial0/1) is down: peer restarted<br />
Mar 1 <span style="color:#ff0000;">00:16:09.695</span>: %DUAL-5-NBRCHANGE: IP-EIGRP 1: Neighbor 10.0.23.3 (Serial0/1) is up: new adjacency<br />
Mar 1 <span style="color:#ff0000;">00:16:09.695</span>: EIGRP: Enqueueing UPDATE on Serial0/1 nbr 10.0.23.3 iidbQ un/rely 0/1 peerQ un/rely 0/0 serno 1-18<br />
Mar 1 <span style="color:#ff0000;">00:16:09.699</span>: EIGRP: Sending UPDATE on Serial0/1 nbr 10.0.23.3<br />
Mar 1 <span style="color:#ff0000;">00:16:09.699</span>: AS 1, Flags 0x1, Seq 32/0 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/1 serno 1-18<br />
Mar 1 <span style="color:#ff0000;">00:16:10.383</span>: EIGRP: Received UPDATE on Serial0/1 nbr 10.0.23.3<br />
Mar 1 <span style="color:#ff0000;">00:16:10.383</span>: AS 1, Flags 0x1, Seq 23/32 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/1<br />
Mar 1 <span style="color:#ff0000;">00:16:10.383</span>: EIGRP: Enqueueing ACK on Serial0/1 nbr 10.0.23.3<br />
Mar 1 <span style="color:#ff0000;">00:16:10.387</span>: Ack seq 23 iidbQ un/rely 0/0 peerQ un/rely 1/0<br />
Mar 1 <span style="color:#ff0000;">00:16:10.387</span>: EIGRP: Sending ACK on Serial0/1 nbr 10.0.23.3<br />
Mar 1 <span style="color:#ff0000;">00:16:10.387</span>: AS 1, Flags 0x0, Seq 0/23 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 1/0<br />
Mar 1 <span style="color:#ff0000;">00:16:10.395</span>: EIGRP: Received UPDATE on Serial0/1 nbr 10.0.23.3<br />
Mar 1 <span style="color:#ff0000;">00:16:10.395</span>: AS 1, Flags 0x0, Seq 24/32 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/0<br />
Mar 1 <span style="color:#ff0000;">00:16:10.395</span>: EIGRP: Enqueueing ACK on Serial0/1 nbr 10.0.23.3<br />
Mar 1 <span style="color:#ff0000;">00:16:10.399</span>: Ack seq 24 iidbQ un/rely 0/0 peerQ un/rely 1/0<br />
Mar 1 <span style="color:#ff0000;">00:16:10.399</span>: EIGRP: Sending ACK on Serial0/1 nbr 10.0.23.3<br />
Mar 1 <span style="color:#ff0000;">00:16:10.399</span>: AS 1, Flags 0x0, Seq 0/24 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 1/0<br />
Mar 1 <span style="color:#ff0000;">00:16:11.347</span>: EIGRP: Sending QUERY on Serial0/0 nbr 10.0.12.1, retry 21, RTO 5000<br />
Mar 1 <span style="color:#ff0000;">00:16:11.347</span>: AS 1, Flags 0x0, Seq 30/13 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/1 serno 18-18<br />
Mar 1 <span style="color:#ff0000;">00:16:16.347</span>: EIGRP: Sending QUERY on Serial0/0 nbr 10.0.12.1, retry 22, RTO 5000<br />
Mar 1 <span style="color:#ff0000;">00:16:16.347</span>: AS 1, Flags 0x0, Seq 30/13 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/1 serno 18-18<br />
Mar 1 <span style="color:#ff0000;">00:16:21.347</span>: EIGRP: Sending QUERY on Serial0/0 nbr 10.0.12.1, retry 23, RTO 5000<br />
Mar 1 <span style="color:#ff0000;">00:16:21.347</span>: AS 1, Flags 0x0, Seq 30/13 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/1 serno 18-18<br />
Mar 1 <span style="color:#ff0000;">00:16:21.403</span>: %DUAL-3-SIA: Route 10.3.3.0/24 stuck-in-active state in IP-EIGRP 1. Cleaning up<br />
Mar 1 <span style="color:#ff0000;">00:16:21.403</span>: %DUAL-5-NBRCHANGE: IP-EIGRP 1: Neighbor 10.0.12.1 (Serial0/0) is down: stuck in active<br />
</code></p>
<p style="padding-left:30px;"><em>Note: The active timer is not exact and seems to vary quite a bit from the actual configured time.  In my tests, it took as long as 1 minute over the configured active time for a route to be declared SIA, so the active time may end up expiring on R2 before R3.</em></p>
<p>The full exchange of non-hello EIGRP packets between R2 and R3 from the time 10.3.3.0/24 went down looks like this:</p>
<p><img class="alignnone size-full wp-image-1037" title="1-Wireshark" src="http://cisconinja.files.wordpress.com/2009/09/1-wireshark.png?w=465&#038;h=192" alt="1-Wireshark" width="465" height="192" /></p>
<p>Resetting the adjacency between R2 and R3 obviously does not help the situation and wastes bandwidth and processing on both routers as the adjacency has to be reestablished and updates resent.  Let&#8217;s try the same scenario again on IOS version 12.4(15)T5, which supports SIA-query and SIA-reply messages:</p>
<p><code><span style="color:#0000ff;">R1:<br />
interface Serial0/0<br />
 shutdown</span><br />
</code></p>
<p><code><span style="color:#0000ff;">R3:<br />
interface Loopback0<br />
 shutdown</span><br />
</code></p>
<p>The first part of what happens is the same as before.  R3 sends a query to R2 for 10.3.3.0/24.  R2 acknowledges the query and sends queries to both R1 and R3 for the route.  R3 acknowledges the query and sends a reply with it&#8217;s current metric (infinity).  R2 does not receive an ACK to the query that it sent to R1 so it continues to retransmit it.  R3 continues to wait on a reply from R2, but R2 can&#8217;t reply until it receives an ACK and a reply from R1:</p>
<p><code><span style="color:#0000ff;">R3#debug eigrp packets update ack query reply siaquery siareply</span><br />
Mar 1 <span style="color:#ff0000;">00:06:33.299</span>: EIGRP: Enqueueing QUERY on Serial0/0 iidbQ un/rely 0/1 serno 10-10<br />
Mar 1 <span style="color:#ff0000;">00:06:33.303</span>: EIGRP: Enqueueing QUERY on Serial0/0 nbr 10.0.23.2 iidbQ un/rely 0/0 peerQ un/rely 0/0 serno 10-10<br />
Mar 1 <span style="color:#ff0000;">00:06:33.307</span>: EIGRP: Sending QUERY on Serial0/0 nbr 10.0.23.2<br />
Mar 1 <span style="color:#ff0000;">00:06:33.307</span>: AS 1, Flags 0x0, Seq 9/7 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/1 serno 10-10<br />
Mar 1 <span style="color:#ff0000;">00:06:33.531</span>: EIGRP: Received ACK on Serial0/0 nbr 10.0.23.2<br />
Mar 1 <span style="color:#ff0000;">00:06:33.531</span>: AS 1, Flags 0x0, Seq 0/9 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/1<br />
Mar 1 <span style="color:#ff0000;">00:06:33.535</span>: EIGRP: Received QUERY on Serial0/0 nbr 10.0.23.2<br />
Mar 1 <span style="color:#ff0000;">00:06:33.535</span>: AS 1, Flags 0x0, Seq 13/9 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/0<br />
Mar 1 <span style="color:#ff0000;">00:06:33.535</span>: EIGRP: Enqueueing ACK on Serial0/0 nbr 10.0.23.2<br />
Mar 1 <span style="color:#ff0000;">00:06:33.539</span>: Ack seq 13 iidbQ un/rely 0/0 peerQ un/rely 1/0<br />
Mar 1 <span style="color:#ff0000;">00:06:33.543</span>: EIGRP: Sending ACK on Serial0/0 nbr<br />
10.0.23.2<br />
Mar 1 <span style="color:#ff0000;">00:06:33.543</span>: AS 1, Flags 0x0, Seq 0/13 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 1/0<br />
Mar 1 <span style="color:#ff0000;">00:06:33.551</span>: EIGRP: Enqueueing REPLY on Serial0/0 nbr 10.0.23.2 iidbQ un/rely 0/1 peerQ un/rely 0/0 serno 11-11<br />
Mar 1 <span style="color:#ff0000;">00:06:33.559</span>: EIGRP: Sending REPLY on Serial0/0 nbr 10.0.23.2<br />
Mar 1 <span style="color:#ff0000;">00:06:33.559</span>: AS 1, Flags 0x0, Seq 10/13 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/1 serno 11-11<br />
Mar 1 <span style="color:#ff0000;">00:06:33.759</span>: EIGRP: Received ACK on Serial0/0 nbr 10.0.23.2<br />
Mar 1 <span style="color:#ff0000;">00:06:33.759</span>: AS 1, Flags 0x0, Seq 0/10 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/1<br />
</code></p>
<p> </p>
<p><code><span style="color:#0000ff;">R2#debug eigrp packets update ack query reply siaquery siareply</span><br />
Mar 1 <span style="color:#ff0000;">00:06:33.787</span>: EIGRP: Received QUERY on Serial0/1 nbr 10.0.23.3<br />
Mar 1 <span style="color:#ff0000;">00:06:33.787</span>: AS 1, Flags 0x0, Seq 9/7 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/0<br />
Mar 1 <span style="color:#ff0000;">00:06:33.791</span>: EIGRP: Enqueueing ACK on Serial0/1 nbr 10.0.23.3<br />
Mar 1 <span style="color:#ff0000;">00:06:33.791</span>: Ack seq 9 iidbQ un/rely 0/0 peerQ un/rely 1/0<br />
Mar 1 <span style="color:#ff0000;">00:06:33.795</span>: EIGRP: Sending ACK on Serial0/1 nbr 10.0.23.3<br />
Mar 1 <span style="color:#ff0000;">00:06:33.799</span>: AS 1, Flags 0x0, Seq 0/9 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 1/0<br />
Mar 1 <span style="color:#ff0000;">00:06:33.803</span>: EIGRP: Enqueueing QUERY on Serial0/0 iidbQ un/rely 0/1 serno 6-6<br />
Mar 1 <span style="color:#ff0000;">00:06:33.803</span>: EIGRP: Enqueueing QUERY on Serial0/1 iidbQ un/rely 0/1 serno 6-6<br />
Mar 1 <span style="color:#ff0000;">00:06:33.807</span>: EIGRP: Enqueueing QUERY on Serial0/0 nbr 10.0.12.1 iidbQ un/rely 0/0 peerQ un/rely 0/0 serno 6-6<br />
Mar 1 <span style="color:#ff0000;">00:06:33.807</span>: EIGRP: Enqueueing QUERY on Serial0/1 nbr 10.0.23.3 iidbQ un/rely 0/0 peerQ un/rely 0/0 serno 6-6<br />
Mar 1 <span style="color:#ff0000;">00:06:33.811</span>: EIGRP: Sending QUERY on Serial0/0 nbr 10.0.12.1<br />
Mar 1 <span style="color:#ff0000;">00:06:33.815</span>: AS 1, Flags 0x0, Seq 12/3 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/1 serno 6-6<br />
Mar 1 <span style="color:#ff0000;">00:06:33.815</span>: EIGRP: Sending QUERY on Serial0/1 nbr 10.0.23.3<br />
Mar 1 <span style="color:#ff0000;">00:06:33.819</span>: AS 1, Flags 0x0, Seq 13/9 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/1 serno 6-6<br />
Mar 1 <span style="color:#ff0000;">00:06:33.887</span>: EIGRP: Received ACK on Serial0/1 nbr 10.0.23.3<br />
Mar 1 <span style="color:#ff0000;">00:06:33.887</span>: AS 1, Flags 0x0, Seq 0/13 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/1<br />
Mar 1 <span style="color:#ff0000;">00:06:33.979</span>: EIGRP: Received REPLY on Serial0/1 nbr 10.0.23.3<br />
Mar 1 <span style="color:#ff0000;">00:06:33.979</span>: AS 1, Flags 0x0, Seq 10/13 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/0<br />
Mar 1 <span style="color:#ff0000;">00:06:33.979</span>: EIGRP: Enqueueing ACK on Serial0/1 nbr 10.0.23.3<br />
Mar 1 <span style="color:#ff0000;">00:06:33.979</span>: Ack seq 10 iidbQ un/rely 0/0 peerQ un/rely 1/0<br />
Mar 1 <span style="color:#ff0000;">00:06:33.983</span>: EIGRP: Sending ACK on Serial0/1 nbr 10.0.23.3<br />
Mar 1 <span style="color:#ff0000;">00:06:33.983</span>: AS 1, Flags 0x0, Seq 0/10 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 1/0<br />
Mar 1 <span style="color:#ff0000;">00:06:38.815</span>: EIGRP: Sending QUERY on Serial0/0 nbr 10.0.12.1, retry 1, RTO 5000<br />
Mar 1 <span style="color:#ff0000;">00:06:38.819</span>: AS 1, Flags 0x0, Seq 12/3 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/1 serno 6-6<br />
Mar 1 <span style="color:#ff0000;">00:06:43.819</span>: EIGRP: Sending QUERY on Serial0/0 nbr 10.0.12.1, retry 2, RTO 5000<br />
Mar 1 <span style="color:#ff0000;">00:06:43.823</span>: AS 1, Flags 0x0, Seq 12/3 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/1 serno 6-6<br />
Mar 1 <span style="color:#ff0000;">00:06:48.823</span>: EIGRP: Sending QUERY on Serial0/0 nbr 10.0.12.1, retry 3, RTO 5000<br />
Mar 1 <span style="color:#ff0000;">00:06:48.827</span>: AS 1, Flags 0x0, Seq 12/3 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/1 serno 6-6<br />
Mar 1 <span style="color:#ff0000;">00:06:53.827</span>: EIGRP: Sending QUERY on Serial0/0 nbr 10.0.12.1, retry 4, RTO 5000<br />
Mar 1 <span style="color:#ff0000;">00:06:53.831</span>: AS 1, Flags 0x0, Seq 12/3 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/1 serno 6-6<br />
Mar 1 <span style="color:#ff0000;">00:06:58.831</span>: EIGRP: Sending QUERY on Serial0/0 nbr 10.0.12.1, retry 5, RTO 5000<br />
Mar 1 <span style="color:#ff0000;">00:06:58.835</span>: AS 1, Flags 0x0, Seq 12/3 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/1 serno 6-6<br />
Mar 1 <span style="color:#ff0000;">00:07:03.835</span>: EIGRP: Sending QUERY on Serial0/0 nbr 10.0.12.1, retry 6, RTO 5000<br />
Mar 1 <span style="color:#ff0000;">00:07:03.839</span>: AS 1, Flags 0x0, Seq 12/3 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/1 serno 6-6<br />
</code></p>
<p>After approximately half of the configured active timer, R2 and R3 both send an SIA-query to the neighbor that hasn&#8217;t replied yet.  (R2&#8242;s SIA-query never actually gets sent to R1 since RTP uses a window size of 1 packet and it is still waiting for an ACK to the original query).  R2 ACKs R3&#8242;s SIA-query and sends an SIA-reply.  R3 resets the active timer when it receives the SIA-reply.  Since R2 does not receive an SIA-reply from R1, it does not reset the active timer, and once the active timer expires it declares the route stuck in active and resets the adjacency with R1.  R2 is then able to finally reply to R3&#8242;s query, and the R2-R3 adjacency does not have to be reestablished:</p>
<p><code><span style="color:#0000ff;">R3#debug eigrp packets update ack query reply siaquery siareply</span><br />
Mar 1 <span style="color:#ff0000;">00:07:06.087</span>: EIGRP: Enqueueing SIAQUERY on Serial0/0 nbr 10.0.23.2 iidbQ un/rely 0/1 peerQ un/rely 0/0 serno 12-12<br />
Mar 1 <span style="color:#ff0000;">00:07:06.095</span>: EIGRP: Sending SIAQUERY on Serial0/0 nbr 10.0.23.2<br />
Mar 1 <span style="color:#ff0000;">00:07:06.095</span>: AS 1, Flags 0x0, Seq 11/13 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/1 serno 12-12<br />
Mar 1 <span style="color:#ff0000;">00:07:06.131</span>: EIGRP: Received ACK on Serial0/0 nbr 10.0.23.2<br />
Mar 1 <span style="color:#ff0000;">00:07:06.131</span>: AS 1, Flags 0x0, Seq 0/11 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/1<br />
Mar 1 <span style="color:#ff0000;">00:07:06.135</span>: EIGRP: Received SIAREPLY on Serial0/0 nbr 10.0.23.2<br />
Mar 1 <span style="color:#ff0000;">00:07:06.135</span>: AS 1, Flags 0x0, Seq 15/11 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/0<br />
Mar 1 <span style="color:#ff0000;">00:07:06.135</span>: EIGRP: Enqueueing ACK on Serial0/0 nbr 10.0.23.2<br />
Mar 1 <span style="color:#ff0000;">00:07:06.139</span>: Ack seq 15 iidbQ un/rely 0/0 peerQ un/rely 1/0<br />
Mar 1 <span style="color:#ff0000;">00:07:06.139</span>: EIGRP: Sending ACK on Serial0/0 nbr 10.0.23.2<br />
Mar 1 <span style="color:#ff0000;">00:07:06.143</span>: AS 1, Flags 0x0, Seq 0/15 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 1/0<br />
Mar 1 <span style="color:#ff0000;">00:07:33.655</span>: EIGRP: Received REPLY on Serial0/0 nbr 10.0.23.2<br />
Mar 1 <span style="color:#ff0000;">00:07:33.659</span>: AS 1, Flags 0x0, Seq 16/11 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/0<br />
Mar 1 <span style="color:#ff0000;">00:07:33.659</span>: EIGRP: Enqueueing ACK on Serial0/0 nbr 10.0.23.2<br />
Mar 1 <span style="color:#ff0000;">00:07:33.659</span>: Ack seq 16 iidbQ un/rely 0/0 peerQ un/rely 1/0<br />
Mar 1 <span style="color:#ff0000;">00:07:33.663</span>: EIGRP: Sending ACK on Serial0/0 nbr 10.0.23.2<br />
Mar 1 <span style="color:#ff0000;">00:07:33.667</span>: AS 1, Flags 0x0, Seq 0/16 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 1/0<br />
</code></p>
<p> </p>
<p><code><span style="color:#0000ff;">R2#debug eigrp packets update ack query reply siaquery siareply</span><br />
Mar 1 <span style="color:#ff0000;">00:07:03.847</span>: EIGRP: Enqueueing SIAQUERY on Serial0/0 nbr 10.0.12.1 iidbQ un/rely 0/1 peerQ un/rely 0/1 serno 7-7<br />
Mar 1 <span style="color:#ff0000;">00:07:06.367</span>: EIGRP: Received SIAQUERY on Serial0/1 nbr 10.0.23.3<br />
Mar 1 <span style="color:#ff0000;">00:07:06.367</span>: AS 1, Flags 0x0, Seq 11/13 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/0<br />
Mar 1 <span style="color:#ff0000;">00:07:06.371</span>: EIGRP: Enqueueing ACK on Serial0/1 nbr 10.0.23.3<br />
Mar 1 <span style="color:#ff0000;">00:07:06.371</span>: Ack seq 11 iidbQ un/rely 0/0 peerQ un/rely 1/0<br />
Mar 1 <span style="color:#ff0000;">00:07:06.375</span>: EIGRP: Sending ACK on Serial0/1 nbr 10.0.23.3<br />
Mar 1 <span style="color:#ff0000;">00:07:06.375</span>: AS 1, Flags 0x0, Seq 0/11 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 1/0<br />
Mar 1 <span style="color:#ff0000;">00:07:06.387</span>: EIGRP: Enqueueing SIAREPLY on Serial0/1 nbr 10.0.23.3 iidbQ un/rely 0/1 peerQ un/rely 0/0 serno 8-8<br />
Mar 1 <span style="color:#ff0000;">00:07:06.395</span>: EIGRP: Sending SIAREPLY on Serial0/1 nbr 10.0.23.3<br />
Mar 1 <span style="color:#ff0000;">00:07:06.395</span>: AS 1, Flags 0x0, Seq 15/11 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/1 serno 8-8<br />
Mar 1 <span style="color:#ff0000;">00:07:06.535</span>: EIGRP: Received ACK on Serial0/1 nbr 10.0.23.3<br />
Mar 1 <span style="color:#ff0000;">00:07:06.539</span>: AS 1, Flags 0x0, Seq 0/15 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/1<br />
Mar 1 <span style="color:#ff0000;">00:07:08.839</span>: EIGRP: Sending QUERY on Serial0/0 nbr 10.0.12.1, retry 7, RTO 5000<br />
Mar 1 <span style="color:#ff0000;">00:07:08.843</span>: AS 1, Flags 0x0, Seq 12/3 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/2 serno 6-6<br />
Mar 1 <span style="color:#ff0000;">00:07:13.843</span>: EIGRP: Sending QUERY on Serial0/0 nbr 10.0.12.1, retry 8, RTO 5000<br />
Mar 1 <span style="color:#ff0000;">00:07:13.847</span>: AS 1, Flags 0x0, Seq 12/3 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/2 serno 6-6<br />
Mar 1 <span style="color:#ff0000;">00:07:18.847</span>: EIGRP: Sending QUERY on Serial0/0 nbr 10.0.12.1, retry 9, RTO 5000<br />
Mar 1 <span style="color:#ff0000;">00:07:18.851</span>: AS 1, Flags 0x0, Seq 12/3 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/2 serno 6-6<br />
Mar 1 <span style="color:#ff0000;">00:07:23.851</span>: EIGRP: Sending QUERY on Serial0/0 nbr 10.0.12.1, retry 10, RTO 5000<br />
Mar 1 <span style="color:#ff0000;">00:07:23.855</span>: AS 1, Flags 0x0, Seq 12/3 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/2 serno 6-6<br />
Mar 1 <span style="color:#ff0000;">00:07:28.855</span>: EIGRP: Sending QUERY on Serial0/0 nbr 10.0.12.1, retry 11, RTO 5000<br />
Mar 1 <span style="color:#ff0000;">00:07:28.859</span>: AS 1, Flags 0x0, Seq 12/3 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/2 serno 6-6<br />
Mar 1 <span style="color:#ff0000;">00:07:33.859</span>: %DUAL-3-SIA: Route 10.3.3.0/24 stuck-in-active state in IP-EIGRP(0) 1. Cleaning up<br />
Mar 1 <span style="color:#ff0000;">00:07:33.863</span>: %DUAL-5-NBRCHANGE: IP-EIGRP(0) 1: Neighbor 10.0.12.1 (Serial0/0) is down: stuck in active<br />
Mar 1 <span style="color:#ff0000;">00:07:33.875</span>: EIGRP: Enqueueing REPLY on Serial0/1 nbr 10.0.23.3 iidbQ un/rely 0/1 peerQ un/rely 0/0 serno 9-9<br />
Mar 1 <span style="color:#ff0000;">00:07:33.887</span>: EIGRP: Sending REPLY on Serial0/1 nbr 10.0.23.3<br />
Mar 1 <span style="color:#ff0000;">00:07:33.891</span>: AS 1, Flags 0x0, Seq 16/11 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/1 serno 9-9<br />
Mar 1 <span style="color:#ff0000;">00:07:34.039</span>: EIGRP: Received ACK on Serial0/1 nbr 10.0.23.3<br />
Mar 1 <span style="color:#ff0000;">00:07:34.043</span>: AS 1, Flags 0x0, Seq 0/16 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/1<br />
</code></p>
<p>The full exchange of EIGRP packets between R2 and R3 from the time 10.3.3.0/24 went down excluding hellos looks like this:</p>
<p><img class="alignnone size-full wp-image-1041" title="2-Wireshark" src="http://cisconinja.files.wordpress.com/2009/09/2-wireshark.png?w=491&#038;h=190" alt="2-Wireshark" width="491" height="190" /></p>
<p>The two packets that show up as &#8216;unknown&#8217; in wireshark are the SIA-query (OpCode 10) and the SIA-reply (OpCode 11).  No updates needed to be resent.</p>
<p>EIGRP attempts to send up to 3 SIA-queries to a neighbor about an active route.  Each SIA-query is sent at an interval of 1/2 of the active timer, and each SIA-reply causes the active timer to be reset.  After 3, the router stops sending SIA-queries even if an SIA-reply has been successfully received for each one and allows the active timer to expire if the reply to the original query still hasn&#8217;t been received.  To demonstrate this, we will set the active time back to the default of 3 minutes on R2.</p>
<p><code><span style="color:#0000ff;">R2:<br />
router eigrp 1<br />
 timers active-time 3</span><br />
</code></p>
<p><code><span style="color:#0000ff;">R1:<br />
interface Serial0/0<br />
 shutdown</span><br />
</code></p>
<p><code><span style="color:#0000ff;">R3:<br />
interface Loopback0<br />
 shutdown</span><br />
</code></p>
<p><code><span style="color:#0000ff;">R3#debug eigrp packets update ack query reply siaquery siareply</span><br />
Mar 1 <span style="color:#ff0000;">01:56:43.315</span>: EIGRP: Enqueueing QUERY on Serial0/0 iidbQ un/rely 0/1 serno 14-14<br />
Mar 1 <span style="color:#ff0000;">01:56:43.319</span>: EIGRP: Enqueueing QUERY on Serial0/0 nbr 10.0.23.2 iidbQ un/rely 0/0 peerQ un/rely 0/0 serno 14-14<br />
Mar 1 <span style="color:#ff0000;">01:56:43.323</span>: EIGRP: Sending QUERY on Serial0/0 nbr 10.0.23.2<br />
Mar 1 <span style="color:#ff0000;">01:56:43.323</span>: AS 1, Flags 0x0, Seq 13/16 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/1 serno 14-14<br />
Mar 1 <span style="color:#ff0000;">01:56:43.547</span>: EIGRP: Received ACK on Serial0/0 nbr 10.0.23.2<br />
Mar 1 <span style="color:#ff0000;">01:56:43.551</span>: AS 1, Flags 0x0, Seq 0/13 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/1<br />
Mar 1 <span style="color:#ff0000;">01:56:43.551</span>: EIGRP: Received QUERY on Serial0/0 nbr 10.0.23.2<br />
Mar 1 <span style="color:#ff0000;">01:56:43.555</span>: AS 1, Flags 0x0, Seq 22/13 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/0<br />
Mar 1 <span style="color:#ff0000;">01:56:43.555</span>: EIGRP: Enqueueing ACK on Serial0/0 nbr 10.0.23.2<br />
Mar 1 <span style="color:#ff0000;">01:56:43.555</span>: Ack seq 22 iidbQ un/rely 0/0 peerQ un/rely 1/0<br />
Mar 1 <span style="color:#ff0000;">01:56:43.559</span>: EIGRP: Sending ACK on Serial0/0 nbr 10.0.23.2<br />
Mar 1 <span style="color:#ff0000;">01:56:43.563</span>: AS 1, Flags 0x0, Seq 0/22 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 1/0<br />
Mar 1 <span style="color:#ff0000;">01:56:43.579</span>: EIGRP: Enqueueing REPLY on Serial0/0 nbr 10.0.23.2 iidbQ un/rely 0/1 peerQ un/rely 0/0 serno 15-15<br />
Mar 1 <span style="color:#ff0000;">01:56:43.583</span>: EIGRP: Sending REPLY on Serial0/0 nbr 10.0.23.2<br />
Mar 1 <span style="color:#ff0000;">01:56:43.583</span>: AS 1, Flags 0x0, Seq 14/22 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/1 serno 15-15<br />
Mar 1 <span style="color:#ff0000;">01:56:43.735</span>: EIGRP: Received ACK on Serial0/0 nbr 10.0.23.2<br />
Mar 1 <span style="color:#ff0000;">01:56:43.739</span>: AS 1, Flags 0x0, Seq 0/14 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/1<br />
Mar 1 <span style="color:#ff0000;">01:57:13.963</span>: EIGRP: Enqueueing SIAQUERY on Serial0/0 nbr 10.0.23.2 iidbQ un/rely 0/1 peerQ un/rely 0/0 serno 16-16<br />
Mar 1 <span style="color:#ff0000;">01:57:13.971</span>: EIGRP: Sending SIAQUERY on Serial0/0 nbr 10.0.23.2<br />
Mar 1 <span style="color:#ff0000;">01:57:13.971</span>: AS 1, Flags 0x0, Seq 15/22 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/1 serno 16-16<br />
Mar 1 <span style="color:#ff0000;">01:57:14.099</span>: EIGRP: Received ACK on Serial0/0 nbr 10.0.23.2<br />
Mar 1 <span style="color:#ff0000;">01:57:14.103</span>: AS 1, Flags 0x0, Seq 0/15 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/1<br />
Mar 1 <span style="color:#ff0000;">01:57:14.107</span>: EIGRP: Received SIAREPLY on Serial0/0 nbr 10.0.23.2<br />
Mar 1 <span style="color:#ff0000;">01:57:14.111</span>: AS 1, Flags 0x0, Seq 23/15 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/0<br />
Mar 1 <span style="color:#ff0000;">01:57:14.111</span>: EIGRP: Enqueueing ACK on Serial0/0 nbr 10.0.23.2<br />
Mar 1 <span style="color:#ff0000;">01:57:14.111</span>: Ack seq 23 iidbQ un/rely 0/0 peerQ un/rely 1/0<br />
Mar 1 <span style="color:#ff0000;">01:57:14.115</span>: EIGRP: Sending ACK on Serial0/0 nbr 10.0.23.2<br />
Mar 1 <span style="color:#ff0000;">01:57:14.119</span>: AS 1, Flags 0x0, Seq 0/23 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 1/0<br />
Mar 1 <span style="color:#ff0000;">01:57:45.863</span>: EIGRP: Enqueueing SIAQUERY on Serial0/0 nbr 10.0.23.2 iidbQ un/rely 0/1 peerQ un/rely 0/0 serno 17-17<br />
Mar 1 <span style="color:#ff0000;">01:57:45.871</span>: EIGRP: Sending SIAQUERY on Serial0/0 nbr 10.0.23.2<br />
Mar 1 <span style="color:#ff0000;">01:57:45.871</span>: AS 1, Flags 0x0, Seq 16/23 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/1 serno 17-17<br />
Mar 1 <span style="color:#ff0000;">01:57:45.979</span>: EIGRP: Received ACK on Serial0/0 nbr 10.0.23.2<br />
Mar 1 <span style="color:#ff0000;">01:57:45.979</span>: AS 1, Flags 0x0, Seq 0/16 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/1<br />
Mar 1 <span style="color:#ff0000;">01:57:46.003</span>: EIGRP: Received SIAREPLY on Serial0/0 nbr 10.0.23.2<br />
Mar 1 <span style="color:#ff0000;">01:57:46.003</span>: AS 1, Flags 0x0, Seq 24/16 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/0<br />
Mar 1 <span style="color:#ff0000;">01:57:46.003</span>: EIGRP: Enqueueing ACK on Serial0/0 nbr 10.0.23.2<br />
Mar 1 <span style="color:#ff0000;">01:57:46.007</span>: Ack seq 24 iidbQ un/rely 0/0 peerQ un/rely 1/0<br />
Mar 1 <span style="color:#ff0000;">01:57:46.011</span>: EIGRP: Sending ACK on Serial0/0 nbr 10.0.23.2<br />
Mar 1 <span style="color:#ff0000;">01:57:46.011</span>: AS 1, Flags 0x0, Seq 0/24 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 1/0<br />
Mar 1 <span style="color:#ff0000;">01:58:18.447</span>: EIGRP: Enqueueing SIAQUERY on Serial0/0 nbr 10.0.23.2 iidbQ un/rely 0/1 peerQ un/rely 0/0 serno 18-18<br />
Mar 1 <span style="color:#ff0000;">01:58:18.455</span>: EIGRP: Sending SIAQUERY on Serial0/0 nbr 10.0.23.2<br />
Mar 1 <span style="color:#ff0000;">01:58:18.455</span>: AS 1, Flags 0x0, Seq 17/24 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/1 serno 18-18<br />
Mar 1 <span style="color:#ff0000;">01:58:18.575</span>: EIGRP: Received ACK on Serial0/0 nbr 10.0.23.2<br />
Mar 1 <span style="color:#ff0000;">01:58:18.579</span>: AS 1, Flags 0x0, Seq 0/17 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/1<br />
Mar 1 <span style="color:#ff0000;">01:58:18.583</span>: EIGRP: Received SIAREPLY on Serial0/0 nbr 10.0.23.2<br />
Mar 1 <span style="color:#ff0000;">01:58:18.587</span>: AS 1, Flags 0x0, Seq 26/17 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/0<br />
Mar 1 <span style="color:#ff0000;">01:58:18.587</span>: EIGRP: Enqueueing ACK on Serial0/0 nbr 10.0.23.2<br />
Mar 1 <span style="color:#ff0000;">01:58:18.587</span>: Ack seq 26 iidbQ un/rely 0/0 peerQ un/rely 1/0<br />
Mar 1 <span style="color:#ff0000;">01:58:18.591</span>: EIGRP: Sending ACK on Serial0/0 nbr 10.0.23.2<br />
Mar 1 <span style="color:#ff0000;">01:58:18.595</span>: AS 1, Flags 0x0, Seq 0/26 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 1/0<br />
Mar 1 <span style="color:#ff0000;">01:58:51.695</span>: %DUAL-3-SIA: Route 10.3.3.0/24 stuck-in-active state in IP-EIGRP(0) 1. Cleaning up<br />
Mar 1 <span style="color:#ff0000;">01:58:51.699</span>: %DUAL-5-NBRCHANGE: IP-EIGRP(0) 1: Neighbor 10.0.23.2 (Serial0/0) is down: stuck in active<br />
Mar 1 <span style="color:#ff0000;">01:58:56.391</span>: %DUAL-5-NBRCHANGE: IP-EIGRP(0) 1: Neighbor 10.0.23.2 (Serial0/0) is up: new adjacency<br />
Mar 1 <span style="color:#ff0000;">01:58:56.391</span>: EIGRP: Enqueueing UPDATE on Serial0/0 nbr 10.0.23.2 iidbQ un/rely 0/1 peerQ un/rely 0/0<br />
Mar 1 <span style="color:#ff0000;">01:58:56.403</span>: EIGRP: Received UPDATE on Serial0/0 nbr 10.0.23.2<br />
Mar 1 <span style="color:#ff0000;">01:58:56.403</span>: AS 1, Flags 0x1, Seq 27/0 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/1<br />
Mar 1 <span style="color:#ff0000;">01:58:56.407</span>: EIGRP: Sending UPDATE on Serial0/0 nbr 10.0.23.2<br />
Mar 1 <span style="color:#ff0000;">01:58:56.407</span>: AS 1, Flags 0x1, Seq 18/27 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/1<br />
Mar 1 <span style="color:#ff0000;">01:58:56.411</span>: EIGRP: Enqueueing UPDATE on Serial0/0 iidbQ un/rely 0/1 serno 7-7<br />
Mar 1 0<span style="color:#ff0000;">1:58:56.415</span>: EIGRP: Enqueueing UPDATE on Serial0/0 nbr 10.0.23.2 iidbQ un/rely 0/0 peerQ un/rely 0/1 serno 7-7<br />
Mar 1 <span style="color:#ff0000;">01:58:56.523</span>: EIGRP: Received UPDATE on Serial0/0 nbr 10.0.23.2<br />
Mar 1 <span style="color:#ff0000;">01:58:56.527</span>: AS 1, Flags 0x8, Seq 28/18 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/2<br />
Mar 1 <span style="color:#ff0000;">01:58:56.527</span>: EIGRP: Enqueueing ACK on Serial0/0 nbr 10.0.23.2<br />
Mar 1 <span style="color:#ff0000;">01:58:56.531</span>: Ack seq 28 iidbQ un/rely 0/1 peerQ un/rely 1/1<br />
Mar 1 <span style="color:#ff0000;">01:58:56.535</span>: EIGRP: Sending UPDATE on Serial0/0 nbr 10.0.23.2<br />
Mar 1 <span style="color:#ff0000;">01:58:56.539</span>: AS 1, Flags 0x8, Seq 19/28 idbQ 0/0 iidbQ un/rely 0/1 peerQ un/rely 0/1 serno 7-7<br />
Mar 1 <span style="color:#ff0000;">01:58:56.695</span>: EIGRP: Received UPDATE on Serial0/0 nbr 10.0.23.2<br />
Mar 1 <span style="color:#ff0000;">01:58:56.695</span>: AS 1, Flags 0x8, Seq 29/19 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/2<br />
Mar 1 <span style="color:#ff0000;">01:58:56.695</span>: EIGRP: Enqueueing UPDATE on Serial0/0 iidbQ un/rely 0/1 serno 19-20<br />
Mar 1 <span style="color:#ff0000;">01:58:56.699</span>: EIGRP: Enqueueing ACK on Serial0/0 nbr 10.0.23.2<br />
Mar 1 <span style="color:#ff0000;">01:58:56.699</span>: Ack seq 29 iidbQ un/rely 0/1 peerQ un/rely 1/1<br />
Mar 1 <span style="color:#ff0000;">01:58:56.703</span>: EIGRP: Sending UPDATE on Serial0/0 nbr 10.0.23.2<br />
Mar 1 <span style="color:#ff0000;">01:58:56.707</span>: AS 1, Flags 0x8, Seq 20/29 idbQ 0/0 iidbQ un/rely 0/1 peerQ un/rely 0/1 serno 7-7<br />
Mar 1 <span style="color:#ff0000;">01:58:56.711</span>: EIGRP: Enqueueing UPDATE on Serial0/0 nbr 10.0.23.2 iidbQ un/rely 0/0 peerQ un/rely 0/1 serno 19-20<br />
Mar 1 <span style="color:#ff0000;">01:58:56.827</span>: EIGRP: Received ACK on Serial0/0 nbr 10.0.23.2<br />
Mar 1 <span style="color:#ff0000;">01:58:56.831</span>: AS 1, Flags 0x0, Seq 0/20 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/2<br />
</code></p>
<p>The route remains active for a little over 2 minutes (twice the active time and four times the SIA retransmit interval).  When the original reply still hasn&#8217;t been received from R2 and the active time expires after 3 SIA-queries/replies, R3 resets the adjacency and updates are resent.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cisconinja.wordpress.com/1032/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cisconinja.wordpress.com/1032/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cisconinja.wordpress.com/1032/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cisconinja.wordpress.com/1032/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/cisconinja.wordpress.com/1032/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/cisconinja.wordpress.com/1032/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/cisconinja.wordpress.com/1032/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/cisconinja.wordpress.com/1032/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cisconinja.wordpress.com/1032/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cisconinja.wordpress.com/1032/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cisconinja.wordpress.com/1032/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cisconinja.wordpress.com/1032/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cisconinja.wordpress.com/1032/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cisconinja.wordpress.com/1032/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cisconinja.wordpress.com&amp;blog=5591147&amp;post=1032&amp;subd=cisconinja&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://cisconinja.wordpress.com/2009/09/18/eigrp-sia-query-and-sia-reply/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">cisconinja</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/09/eigrp-sia-query-and-reply.png" medium="image">
			<media:title type="html">EIGRP SIA Query and Reply</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/09/1-r3-topology-table.png" medium="image">
			<media:title type="html">1-R3-Topology-Table</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/09/1-r2-topology-table.png" medium="image">
			<media:title type="html">1-R2-Topology-Table</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/09/1-wireshark.png" medium="image">
			<media:title type="html">1-Wireshark</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/09/2-wireshark.png" medium="image">
			<media:title type="html">2-Wireshark</media:title>
		</media:content>
	</item>
		<item>
		<title>Offset-lists in EIGRP</title>
		<link>http://cisconinja.wordpress.com/2009/09/07/offset-lists-in-eigrp/</link>
		<comments>http://cisconinja.wordpress.com/2009/09/07/offset-lists-in-eigrp/#comments</comments>
		<pubDate>Mon, 07 Sep 2009 12:43:20 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
				<category><![CDATA[EIGRP]]></category>

		<guid isPermaLink="false">http://cisconinja.wordpress.com/?p=1005</guid>
		<description><![CDATA[R1: interface Loopback0  ip address 10.1.1.1 255.255.255.0 ! interface Serial0/0  bandwidth 128  ip address 10.0.12.1 255.255.255.0 ! router eigrp 1  network 10.0.0.0 R2: interface Serial0/0  bandwidth 128  ip address 10.0.12.2 255.255.255.0 ! router eigrp 1  network 10.0.0.0 The minimum bandwidth for 10.1.1.0/24 at R2 is 128k and the cumulative delay is 25,000 microseconds (20,000 serial [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cisconinja.wordpress.com&amp;blog=5591147&amp;post=1005&amp;subd=cisconinja&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-1006" title="EIGRP Offset Lists" src="http://cisconinja.files.wordpress.com/2009/09/eigrp-offset-lists.png?w=380&#038;h=185" alt="EIGRP Offset Lists" width="380" height="185" /></p>
<p><code><span style="color:#0000ff;">R1:<br />
interface Loopback0<br />
 ip address 10.1.1.1 255.255.255.0<br />
!<br />
interface Serial0/0<br />
 bandwidth 128<br />
 ip address 10.0.12.1 255.255.255.0<br />
!<br />
router eigrp 1<br />
 network 10.0.0.0</span><br />
</code></p>
<p><code><span style="color:#0000ff;">R2:<br />
interface Serial0/0<br />
 bandwidth 128<br />
 ip address 10.0.12.2 255.255.255.0<br />
!<br />
router eigrp 1<br />
 network 10.0.0.0</span><br />
</code></p>
<p>The minimum bandwidth for 10.1.1.0/24 at R2 is 128k and the cumulative delay is 25,000 microseconds (20,000 serial + 5,000 loopback), so R2 calculates the metric as:</p>
<p>Metric = 256 * (10^7 / 128) + 256 * 2500</p>
<p>= 20,000,000 + 640,000</p>
<p>= 20,640,000</p>
<p><img class="alignnone size-full wp-image-1026" title="1-R2-Show-IP-Route" src="http://cisconinja.files.wordpress.com/2009/09/1-r2-show-ip-route.png?w=479&#038;h=123" alt="1-R2-Show-IP-Route" width="479" height="123" /></p>
<p>Now we will add an offset of 10,000 to all routes advertised by R1:</p>
<p><code><span style="color:#0000ff;">R1:<br />
router eigrp 1<br />
 offset-list 0 out 10000</span><br />
</code></p>
<p>Let&#8217;s see how this effected the update sent by R1.  The first picture shows the update before the offset-list was applied, and the second shows the update after being applied:</p>
<p><img class="alignnone size-full wp-image-1007" title="1-R1-Update" src="http://cisconinja.files.wordpress.com/2009/09/1-r1-update.png?w=320&#038;h=356" alt="1-R1-Update" width="320" height="356" /></p>
<p><img class="alignnone size-full wp-image-1008" title="2-R1-Update" src="http://cisconinja.files.wordpress.com/2009/09/2-r1-update.png?w=314&#038;h=356" alt="2-R1-Update" width="314" height="356" /></p>
<p>Loopback interfaces have a default delay of 5,000 microseconds and the value carried in the update for delay is after it has been multiplied by 256, so before the offset-list R1 advertises it as 128,000.  After the offset-list was configured, the delay advertised in the update increased to 138,000, so the offset is applied to delay after it has been multiplied by 256.  Since the delay is cumulative along the path and the offset is applied after the delay has been multiplied by 256, the overall metric for routers receiving the update will increase by the same value configured in the offset.  On R2, the composite metric has increased from 20,640,000 to 20,650,000:</p>
<p><img class="alignnone size-full wp-image-1009" title="2-R2-Show-IP-Route" src="http://cisconinja.files.wordpress.com/2009/09/2-r2-show-ip-route.png?w=477&#038;h=120" alt="2-R2-Show-IP-Route" width="477" height="120" /></p>
<p>To determine the actual delay along the path (in tens of microseconds), R2 divides the delay value received in the update by 256, and then adds it&#8217;s own delay on the receiving interface:</p>
<p>Delay = (138,000 / 256) + 2,000</p>
<p>= 2539.0625</p>
<p>When converted back to microseconds and rounded down, this matches the total delay of 25,390 shown for the route on R2.  To find the delay that will be added by the configured offset value, you could also multiply by 10/256:</p>
<p>10,000 * (10/256) = 390 microseconds</p>
<p> </p>
<p>The configured offset will match the offset applied to the composite metric as long as K3 = 1 and K5 = 0.  If either of these are changed it isn&#8217;t quite as simple.  Let&#8217;s try changing K3 to a value of 20 first.  We will also remove the offset-list and then add it again after we have seen the initial update and metric calculation:</p>
<p><code><span style="color:#0000ff;">R1:<br />
router eigrp 1<br />
 metric weights 0 1 0 20 0 0<br />
 no offset-list 0 out 10000</span><br />
</code></p>
<p><code><span style="color:#0000ff;">R2:<br />
router eigrp 1<br />
 metric weights 0 1 0 20 0 0</span><br />
</code></p>
<p><img class="alignnone size-full wp-image-1011" title="3-R1-Update" src="http://cisconinja.files.wordpress.com/2009/09/3-r1-update.png?w=314&#038;h=354" alt="3-R1-Update" width="314" height="354" /></p>
<p><img class="alignnone size-full wp-image-1012" title="3-R2-Show-IP-Route" src="http://cisconinja.files.wordpress.com/2009/09/3-r2-show-ip-route.png?w=479&#038;h=123" alt="3-R2-Show-IP-Route" width="479" height="123" /></p>
<p>The update still contains a delay of 128,000, so we know that the value carried in the update must be before being multiplied by K3.  R2 multiplies the delay of the receiving interface by 256, adds this to the delay in the received update and multiplies the sum by K3, and also adds the bandwidth component:</p>
<p>Metric = 256 * (10^7 / 128) + 20 * (128,000 + (256 * 2,000))</p>
<p>= 20,000,000 + 12,800,000</p>
<p>= 32,800,000</p>
<p>Let&#8217;s put the offset-list back on:</p>
<p><code><span style="color:#0000ff;">R1:<br />
router eigrp 1<br />
 offset-list 0 out 10000</span><br />
</code></p>
<p><img class="alignnone size-full wp-image-1013" title="4-R1-Update" src="http://cisconinja.files.wordpress.com/2009/09/4-r1-update.png?w=315&#038;h=355" alt="4-R1-Update" width="315" height="355" /></p>
<p><img class="alignnone size-full wp-image-1014" title="4-R2-Show-IP-Route" src="http://cisconinja.files.wordpress.com/2009/09/4-r2-show-ip-route.png?w=563&#038;h=142" alt="4-R2-Show-IP-Route" width="563" height="142" /></p>
<p>The update contains 138,000 for the delay value like before when K3 was 1.  R2 calculates the metric as </p>
<p>Metric = 256 * (10^7 / 128) + 20 * (138,000 + (256 * 2,000))</p>
<p>= 20,000,000 + 13,000,000</p>
<p>= 33,000,000</p>
<p>Since the offset gets multiplied by K3 just like the rest of the delay, the actual metric increases by K3 * offset, or 200,000 in this case.  The calculation for total delay of the path does not depend on K-values, so R2 calculates the same total delay of 25,390 microseconds.  Let&#8217;s try changing K3 to 0:</p>
<p><code><span style="color:#0000ff;">R1:<br />
router eigrp 1<br />
 metric weights 0 1 0 0 0 0<br />
 no offset-list 0 out 10000</span><br />
</code></p>
<p><code><span style="color:#0000ff;">R2:<br />
router eigrp 1<br />
 metric weights 0 1 0 0 0 0</span><br />
</code></p>
<p><img class="alignnone size-full wp-image-1015" title="5-R1-Update" src="http://cisconinja.files.wordpress.com/2009/09/5-r1-update.png?w=315&#038;h=357" alt="5-R1-Update" width="315" height="357" /></p>
<p><img class="alignnone size-full wp-image-1016" title="5-R2-Show-IP-Route" src="http://cisconinja.files.wordpress.com/2009/09/5-r2-show-ip-route.png?w=478&#038;h=122" alt="5-R2-Show-IP-Route" width="478" height="122" /></p>
<p><code><span style="color:#0000ff;">R1:<br />
router eigrp 1<br />
 offset-list 0 out 10000</span><br />
</code> </p>
<p><img class="alignnone size-full wp-image-1017" title="6-R1-Update" src="http://cisconinja.files.wordpress.com/2009/09/6-r1-update.png?w=314&#038;h=353" alt="6-R1-Update" width="314" height="353" /></p>
<p><img class="alignnone size-full wp-image-1018" title="6-R2-Show-IP-Route" src="http://cisconinja.files.wordpress.com/2009/09/6-r2-show-ip-route.png?w=476&#038;h=122" alt="6-R2-Show-IP-Route" width="476" height="122" /></p>
<p>If K3=0, the offset has no effect on the overall metric since it only adds to the delay.  R2 is still able to calculate the correct total delay for the route however since the delay value is carried in route TLVs regardless of the K-values.</p>
<p> </p>
<p>Next, we will look at what happens when K5 ≠ 0.  The K-values will be set to: K1=1, K2=0, K3=20, K4=1, K5=64.  The offset-list is again removed:</p>
<p><code><span style="color:#0000ff;">R1:<br />
router eigrp 1<br />
 metric weights 0 1 0 20 1 64<br />
 no offset-list 0 out 10000</span></code></p>
<p><code><span style="color:#0000ff;"><code><span style="color:#0000ff;">R2:<br />
router eigrp 1<br />
 metric weights 0 1 0 20 1 64</span></code></span></code></p>
<p>The received delay is 128,000 like before.  Since K5 is non-zero, R2 performs an additional calculation and calculates the metric as:</p>
<p>Metric = (256 * (10^7 / 128) + 20 * (128,000 + (256 * 2,000))) * (64 / (255 + 1))</p>
<p>= (20,000,000 + 12,800,000) * (64/256)</p>
<p>= 8,200,000</p>
<p><img class="alignnone size-full wp-image-1020" title="7-R2-Show-IP-Route" src="http://cisconinja.files.wordpress.com/2009/09/7-r2-show-ip-route1.png?w=478&#038;h=124" alt="7-R2-Show-IP-Route" width="478" height="124" /></p>
<p>Add the offset again:</p>
<p><code><span style="color:#0000ff;">R1:<br />
router eigrp 1<br />
 offset-list 0 out 10000</span><br />
</code></p>
<p>Metric = (256 * (10^7 / 128) + 20 * (138,000 + (256 * 2,000))) * (64 / (255 + 1))</p>
<p>= (20,000,000 + 13,000,000) * (64/256)</p>
<p>= 8,250,000</p>
<p><img class="alignnone size-full wp-image-1021" title="8-R2-Show-IP-Route" src="http://cisconinja.files.wordpress.com/2009/09/8-r2-show-ip-route.png?w=478&#038;h=121" alt="8-R2-Show-IP-Route" width="478" height="121" /></p>
<p>The configured offset value is multiplied by K3, and (if K5 ≠ 0) also by (K5 / (reliability + K4)).  Therefore the actual amount that the configured offset will cause the metric to increase can be calculated as:</p>
<p><strong>Metric increase = K3 * offset * (K5 / (reliability + K4))</strong></p>
<p>In the example we just did, the offset of 10,000 caused the metric to increase by 50,000:</p>
<p>Metric increase = 20 * 10,000 * (64 / (255 +1))</p>
<p>= 50,000</p>
<p> </p>
<p>Most of the time with offset-lists we are trying to add a certain amount to the overall metric of a route, so it would be much more useful to know the amount of offset that we need to add in order to get the desired metric increase.  Solving the equation for offset gives us:</p>
<p><strong>offset = metric increase * (reliability + K4) / (K3 * K5)</strong></p>
<p>Let&#8217;s try another example and see if it works.  We will pick some new K-values and remove the offset-list:</p>
<p><code><span style="color:#0000ff;">R1:<br />
router eigrp 1<br />
 metric weights 0 5 0 10 45 4<br />
 no offset-list 0 out 10000</span></code></p>
<p><code><span style="color:#0000ff;"><code><span style="color:#0000ff;">R2:<br />
router eigrp 1<br />
 metric weights 0 5 0 10 45 4</span></code></span></code></p>
<p><img class="alignnone size-full wp-image-1022" title="9-R2-Show-IP-Route" src="http://cisconinja.files.wordpress.com/2009/09/9-r2-show-ip-route.png?w=478&#038;h=122" alt="9-R2-Show-IP-Route" width="478" height="122" /></p>
<p>The metric for the route is now 1,418,666.  Let&#8217;s see if we can add 81,334 to it to make it an even 1,500,000.  That means we should have to offset the metric by:</p>
<p>offset = 81,334 * (255 + 45) / (10 * 4)</p>
<p>= 610,005</p>
<p><code><span style="color:#0000ff;">R1:<br />
router eigrp 1<br />
 offset-list 0 out 610005</span></code></p>
<p><img class="alignnone size-full wp-image-1023" title="10-R2-Show-IP-Route" src="http://cisconinja.files.wordpress.com/2009/09/10-r2-show-ip-route.png?w=476&#038;h=123" alt="10-R2-Show-IP-Route" width="476" height="123" /></p>
<p>Looks like it worked perfectly.  The delay added was:</p>
<p>610,005 * (10/256) = 23,828 microseconds</p>
<p>which makes the total delay of the route now 48,828 microseconds.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cisconinja.wordpress.com/1005/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cisconinja.wordpress.com/1005/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cisconinja.wordpress.com/1005/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cisconinja.wordpress.com/1005/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/cisconinja.wordpress.com/1005/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/cisconinja.wordpress.com/1005/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/cisconinja.wordpress.com/1005/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/cisconinja.wordpress.com/1005/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cisconinja.wordpress.com/1005/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cisconinja.wordpress.com/1005/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cisconinja.wordpress.com/1005/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cisconinja.wordpress.com/1005/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cisconinja.wordpress.com/1005/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cisconinja.wordpress.com/1005/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cisconinja.wordpress.com&amp;blog=5591147&amp;post=1005&amp;subd=cisconinja&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://cisconinja.wordpress.com/2009/09/07/offset-lists-in-eigrp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">cisconinja</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/09/eigrp-offset-lists.png" medium="image">
			<media:title type="html">EIGRP Offset Lists</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/09/1-r2-show-ip-route.png" medium="image">
			<media:title type="html">1-R2-Show-IP-Route</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/09/1-r1-update.png" medium="image">
			<media:title type="html">1-R1-Update</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/09/2-r1-update.png" medium="image">
			<media:title type="html">2-R1-Update</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/09/2-r2-show-ip-route.png" medium="image">
			<media:title type="html">2-R2-Show-IP-Route</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/09/3-r1-update.png" medium="image">
			<media:title type="html">3-R1-Update</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/09/3-r2-show-ip-route.png" medium="image">
			<media:title type="html">3-R2-Show-IP-Route</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/09/4-r1-update.png" medium="image">
			<media:title type="html">4-R1-Update</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/09/4-r2-show-ip-route.png" medium="image">
			<media:title type="html">4-R2-Show-IP-Route</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/09/5-r1-update.png" medium="image">
			<media:title type="html">5-R1-Update</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/09/5-r2-show-ip-route.png" medium="image">
			<media:title type="html">5-R2-Show-IP-Route</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/09/6-r1-update.png" medium="image">
			<media:title type="html">6-R1-Update</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/09/6-r2-show-ip-route.png" medium="image">
			<media:title type="html">6-R2-Show-IP-Route</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/09/7-r2-show-ip-route1.png" medium="image">
			<media:title type="html">7-R2-Show-IP-Route</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/09/8-r2-show-ip-route.png" medium="image">
			<media:title type="html">8-R2-Show-IP-Route</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/09/9-r2-show-ip-route.png" medium="image">
			<media:title type="html">9-R2-Show-IP-Route</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/09/10-r2-show-ip-route.png" medium="image">
			<media:title type="html">10-R2-Show-IP-Route</media:title>
		</media:content>
	</item>
		<item>
		<title>Testing EIGRP metric with non-default K-values</title>
		<link>http://cisconinja.wordpress.com/2009/09/06/testing-eigrp-metric-with-non-default-k-values/</link>
		<comments>http://cisconinja.wordpress.com/2009/09/06/testing-eigrp-metric-with-non-default-k-values/#comments</comments>
		<pubDate>Sun, 06 Sep 2009 10:06:15 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
				<category><![CDATA[EIGRP]]></category>

		<guid isPermaLink="false">http://cisconinja.wordpress.com/?p=956</guid>
		<description><![CDATA[In this post we will look at how changing EIGRP K-values from their defaults effects the metric calculation and how it effects when updates are sent.  The topology and configurations for this example are shown below: R1: interface Loopback0  ip address 10.1.1.1 255.255.255.0 ! interface Serial0/0  ip address 10.0.12.1 255.255.255.0 ! router eigrp 1  passive-interface [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cisconinja.wordpress.com&amp;blog=5591147&amp;post=956&amp;subd=cisconinja&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>In this post we will look at how changing EIGRP K-values from their defaults effects the metric calculation and how it effects when updates are sent.  The topology and configurations for this example are shown below:</p>
<p><img class="alignnone size-full wp-image-957" title="EIGRP Topology" src="http://cisconinja.files.wordpress.com/2009/09/eigrp-topology.png?w=460&#038;h=172" alt="EIGRP Topology" width="460" height="172" /></p>
<p><code><span style="color:#0000ff;">R1:<br />
interface Loopback0<br />
 ip address 10.1.1.1 255.255.255.0<br />
!<br />
interface Serial0/0<br />
 ip address 10.0.12.1 255.255.255.0<br />
!<br />
router eigrp 1<br />
 passive-interface Loopback0<br />
 network 10.0.0.0<br />
 metric weights 0 1 1 1 1 1</span><br />
</code></p>
<p><code><span style="color:#0000ff;">R2:<br />
interface FastEthernet0/0<br />
 ip address 10.2.2.2 255.255.255.0<br />
!<br />
interface Serial0/0<br />
 bandwidth 100<br />
 ip address 10.0.12.2 255.255.255.0<br />
 load-interval 30<br />
!<br />
interface Serial0/1<br />
 ip address 10.0.23.2 255.255.255.0<br />
 load-interval 30<br />
!<br />
router eigrp 1<br />
 passive-interface FastEthernet0/0<br />
 network 10.0.0.0<br />
 metric weights 0 1 1 1 1 1<br />
</span></code></p>
<p><code><span style="color:#0000ff;">R3:<br />
interface Serial0/0<br />
 ip address 10.0.23.3 255.255.255.0<br />
 load-interval 30<br />
!<br />
router eigrp 1<br />
 network 10.0.0.0<br />
 metric weights 0 1 1 1 1 1<br />
</span></code></p>
<p>Each of the K-values has been set to 1 on all routers.  The bandwidth of the R1-R2 link has also been lowered to 100k on R2.</p>
<p>The EIGRP metric is calculated as:</p>
<p><strong>Metric</strong> = ((k1 * BW) + ((k2 * BW)/(256 &#8211; load)) + (k3 * delay)) * (k5 / (reliability + k4))</p>
<p><strong>BW</strong> = 256 * (10^7 / interface BW in kbps)</p>
<p><strong>load</strong> = txload on the interface</p>
<p><strong>delay</strong> = 256 * interface delay in tens of microseconds</p>
<p><strong>reliability</strong> = reliability rating on the interface</p>
<p>Of the 4 metric components, only the delay is added at each hop.  The other 3 (BW, load, reliability) use the worst value of any single link in the path.  When calculating the composite metric, each individual component is rounded down.   For example, loopback interfaces have a default bandwidth of 8 Gbps:</p>
<p><img class="alignnone size-full wp-image-961" title="1-R1-BW" src="http://cisconinja.files.wordpress.com/2009/09/1-r1-bw.png?w=391&#038;h=27" alt="1-R1-BW" width="391" height="27" /></p>
<p>R1 therefore calculates the bandwidth as 10^7 / (8 * 10^6).  The bandwidth value is rounded down (from 1.25 to 1) <span style="text-decoration:underline;">before</span> being multiplied by 256, and the value carried for BW in the route TLV is 256 (instead of 320, if the rounding had occurred after):</p>
<p><img class="alignnone size-full wp-image-962" title="1-R1-BW-Wireshark" src="http://cisconinja.files.wordpress.com/2009/09/1-r1-bw-wireshark.png?w=316&#038;h=356" alt="1-R1-BW-Wireshark" width="316" height="356" /></p>
<p>When the calculation is reversed, the result is that as far as R1&#8242;s topolgy table and any neighbors that R1 is advertising the route to are concerned, the BW is 10 Gbps, as shown in the topology table on R1:</p>
<p><img class="alignnone size-full wp-image-989" title="1-R1-Metric" src="http://cisconinja.files.wordpress.com/2009/09/1-r1-metric1.png?w=469&#038;h=143" alt="1-R1-Metric" width="469" height="143" /></p>
<p>A similar method of rounding occurs for each of the other components.  Loopback interfaces have a default delay of 5000 microseconds and the reliability and load on the interface are 255 and 1 respectively.  The overall calculated metric on R1 is:</p>
<p>Metric = ((1 * 256) + ((1 * 256)/(256 &#8211; 1)) + (1 * 128,000)) * (1 / (255 + 1))</p>
<p>= (256 + 1 + 128000) / 256</p>
<p>= 128,257 / 256</p>
<p>=  501</p>
<p>The load component was rounded down (from 256/255 to 1) prior to being multiplied by (k5 / (reliability + k4)) and the final metric was again rounded down (from 501.0039 to 501).  R2&#8242;s calculation works the same way:</p>
<p>Metric = ((1 * 25,600,000) + ((1 * 25,600,000)/(256 &#8211; 1)) + (1 * 640,000)) * (1 / (255 + 1))</p>
<p>= (25,600,000 + 100,392 + 640,000) / 256</p>
<p>= 26,340,392 / 256</p>
<p>= 102,892</p>
<p><img class="alignnone size-full wp-image-990" title="1-R2-Metric" src="http://cisconinja.files.wordpress.com/2009/09/1-r2-metric1.png?w=491&#038;h=143" alt="1-R2-Metric" width="491" height="143" /></p>
<p>R3 computes the metric as:</p>
<p>Metric = ((1 * 25,600,000) + ((1 * 25,600,000)/(256 &#8211; 1)) + (1 * 1,152,000)) * (1 / (255 + 1))</p>
<p>= (25,600,000 + 100,392 + 1,152,000) / 256</p>
<p>= 26,852,392 / 256</p>
<p>= 104,892</p>
<p><img class="alignnone size-full wp-image-991" title="1-R3-Metric" src="http://cisconinja.files.wordpress.com/2009/09/1-r3-metric1.png?w=491&#038;h=144" alt="1-R3-Metric" width="491" height="144" /></p>
<p>As you can see, only the delay increased when R2 advertised the route to R3 (by 20,000 microseconds, the default on a serial interface) since the other 3 values only use the worst value in the path and the BW, load, and reliability on the R2-R3 link from R3&#8242;s perspective are either better than or equal to the worst values that were advertised by R2.</p>
<p> </p>
<p>And now for the main point of this example, to show how including load and reliability in the equation effects updates being sent.  Many sources incorrectly say that including load and reliability in the equation is not recommended because it will cause updates to be sent frequently when the load and/or reliability change.  The actual behavior is that EIGRP advertises the route only at the start of the adjacency or after an event that causes updates to be resent, with whatever the current worst load and reliability rating along the path are.  In many cases this could be even worse than if updates were frequently sent to update the load and reliability ratings, because the load and/or reliability can change dramatically after an update has been sent and neighboring routers continue to assume the original load/reliability values that were advertised before the change.  To demonstrate this, we will add an additional router, R4, with links to R1 and R3:</p>
<p><img class="alignnone size-full wp-image-987" title="EIGRP Topology3" src="http://cisconinja.files.wordpress.com/2009/09/eigrp-topology3.png?w=479&#038;h=245" alt="EIGRP Topology3" width="479" height="245" /></p>
<p> </p>
<p><code><span style="color:#0000ff;">R1:<br />
interface Serial0/2<br />
 ip address 10.0.14.1 255.255.255.0<br />
 load-interval 30<br />
</span></code></p>
<p><code><span style="color:#0000ff;">R3:<br />
interface Serial0/1<br />
 ip address 10.0.34.3 255.255.255.0<br />
 load-interval 30</span><br />
</code></p>
<p><code><span style="color:#0000ff;">R4:<br />
interface Serial0/0<br />
 bandwidth 100<br />
 ip address 10.0.14.4 255.255.255.0<br />
 load-interval 30<br />
 delay 2001<br />
!<br />
interface Serial0/1<br />
 ip address 10.0.34.4 255.255.255.0<br />
 load-interval 30<br />
!<br />
router eigrp 1<br />
 network 10.0.0.0<br />
 metric weights 0 1 1 1 1 1<br />
</span><br />
</code></p>
<p>The bandwidth on the R1-R4 link is configured as 100k like the R1-R2 link and the delay as 20,010 microseconds to make the path through R2 preferred by R3.  R3 keeps the path through R4 as an FS but since unequal cost load balancing is not configured, R3 will only use the original link to reach R1:</p>
<p><img class="alignnone size-full wp-image-992" title="3-R3-ShowTopology" src="http://cisconinja.files.wordpress.com/2009/09/3-r3-showtopology2.png?w=490&#038;h=244" alt="3-R3-ShowTopology" width="490" height="244" /></p>
<p><img class="alignnone size-full wp-image-1003" title="3-R3-RouteTable" src="http://cisconinja.files.wordpress.com/2009/09/3-r3-routetable1.png?w=515&#038;h=131" alt="3-R3-RouteTable" width="515" height="131" /></p>
<p>Next, we will use a host on the 10.2.2.0/24 subnet connected to R2 to send approximately 96kbps of traffic to R1 (for more information on the method of generating traffic, see <a href="http://cisconinja.wordpress.com/2009/01/21/weighted-fair-queueing/">WFQ tests</a>):</p>
<pre>flood.pl --port=1000 --size=1496 --delay=125 10.1.1.1</pre>
<p>All traffic is sent out S0/0 on R2 and the txload increases to 234:</p>
<p><img class="alignnone size-full wp-image-974" title="3-R2-Load" src="http://cisconinja.files.wordpress.com/2009/09/3-r2-load1.png?w=434&#038;h=27" alt="3-R2-Load" width="434" height="27" /></p>
<p>After several minutes, R2 still has not updated the metric in it&#8217;s topology and also has not sent an update to R3:</p>
<p><img class="alignnone size-full wp-image-993" title="4-R2-ShowTopology" src="http://cisconinja.files.wordpress.com/2009/09/4-r2-showtopology1.png?w=492&#038;h=144" alt="4-R2-ShowTopology" width="492" height="144" /></p>
<p><img class="alignnone size-full wp-image-994" title="4-R3-ShowTopology" src="http://cisconinja.files.wordpress.com/2009/09/4-r3-showtopology1.png?w=490&#038;h=244" alt="4-R3-ShowTopology" width="490" height="244" /></p>
<p><img class="alignnone size-full wp-image-976" title="4-R3-RouteTable" src="http://cisconinja.files.wordpress.com/2009/09/4-r3-routetable.png?w=516&#038;h=129" alt="4-R3-RouteTable" width="516" height="129" /></p>
<p>Although the R1-R2 link is almost entirely saturated and R3 would have a better path through R4, it is unaware of this because updates are not sent to dynamically update the load and reliability.  Next we will clear the R1-R2 adjacency, causing updates to be resent (clearing the R2 to R3 adjacency would not refresh the load value, because R2 simply sends R3 the same information about 10.1.1.0/24 that already exists in it&#8217;s routing table):</p>
<p><code><span style="color:#0000ff;">R2#clear ip eigrp neighbors 10.0.12.1</span><br />
</code></p>
<p>R2 receives an update from R1 and records the higher of the received load value (1) and the load of the receiving link (232).  R2 then sends an update to R3 and R3 records the higher of the received load value (232) and the receiving link (1).  R3&#8242;s metric for 10.1.1.0/24 through R2 is now higher than through R4, so R3 now uses the path through R4 instead:</p>
<p><img class="alignnone size-full wp-image-995" title="5-R3-ShowTopology" src="http://cisconinja.files.wordpress.com/2009/09/5-r3-showtopology1.png?w=492&#038;h=244" alt="5-R3-ShowTopology" width="492" height="244" /></p>
<p><img class="alignnone size-full wp-image-978" title="5-R3-RouteTable" src="http://cisconinja.files.wordpress.com/2009/09/5-r3-routetable.png?w=517&#038;h=131" alt="5-R3-RouteTable" width="517" height="131" /></p>
<p style="padding-left:30px;"><em>Note: The FD of the successor on R3 in the topology table as well as the metric in the route table show 104,893, while the FD listed in the topology table for the route on the third line says 104,892 (the original FD of the route through R2).  I think this happens whenever the router is able to switch to an FS for a route without having to go active - the route table and FD through the successor show the new value but the overall FD for the route shows the original FD for the route.</em></p>
<p>Let&#8217;s check the topology table on R2:</p>
<p><img class="alignnone size-full wp-image-996" title="5-R2-ShowTopology" src="http://cisconinja.files.wordpress.com/2009/09/5-r2-showtopology1.png?w=492&#038;h=244" alt="5-R2-ShowTopology" width="492" height="244" /></p>
<p>That&#8217;s strange, R2 and R3 both show the correct load value but the FD at R2 doesn&#8217;t match the AD that R3 calculated through R2.  Using the formula, the FD at R2 should be:</p>
<p>Metric = ((1 * 25,600,000) + ((1 * 25,600,000)/(256 &#8211; 232)) + (1 * 640,000)) * (1 / (255 + 1))</p>
<p>= (25,600,000 + 1,066,666 + 640,000) / 256</p>
<p>= 27,306,666 / 256</p>
<p>= 106,666</p>
<p>R3 calculated the AD correctly for R2 and also calculated it&#8217;s own FD of 108,666 through R2 correctly.  Looking back at the previous topology table on R2 we can see that the metric hasn&#8217;t changed at all on R2 - R2 is still calculating the metric as if there is a load of 1.  It appears that although R2 records the higher of the two load values (the one in the received update and the one on the receiving interface) and also advertises the higher one to R3, it only uses the one in the received update for it&#8217;s own calculation.  I can&#8217;t figure out why this would be desirable since a saturated link between R1 and R2 effects R2 just as much as R3 or any other upstream routers, but there are already enough reasons not to use load or reliability in a production network anyway.</p>
<p> </p>
<p>As one last test, we will stop the traffic generator.  After a few seconds the interface load is updated on R2 and drops back to 1:</p>
<p><img class="alignnone size-full wp-image-980" title="6-R2-Load" src="http://cisconinja.files.wordpress.com/2009/09/6-r2-load.png?w=420&#038;h=28" alt="6-R2-Load" width="420" height="28" /></p>
<p>Like before, R2 does not dynamically refresh the load value in it&#8217;s own topology table or send updates to it&#8217;s neighbors.  R3 continues to use the route through R4 to reach 10.1.1.0/24 until something causes updates to be resent between R1 and R2:</p>
<p><img class="alignnone size-full wp-image-981" title="6-R3-RouteTable" src="http://cisconinja.files.wordpress.com/2009/09/6-r3-routetable.png?w=514&#038;h=129" alt="6-R3-RouteTable" width="514" height="129" /></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cisconinja.wordpress.com/956/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cisconinja.wordpress.com/956/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cisconinja.wordpress.com/956/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cisconinja.wordpress.com/956/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/cisconinja.wordpress.com/956/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/cisconinja.wordpress.com/956/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/cisconinja.wordpress.com/956/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/cisconinja.wordpress.com/956/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cisconinja.wordpress.com/956/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cisconinja.wordpress.com/956/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cisconinja.wordpress.com/956/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cisconinja.wordpress.com/956/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cisconinja.wordpress.com/956/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cisconinja.wordpress.com/956/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cisconinja.wordpress.com&amp;blog=5591147&amp;post=956&amp;subd=cisconinja&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://cisconinja.wordpress.com/2009/09/06/testing-eigrp-metric-with-non-default-k-values/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">cisconinja</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/09/eigrp-topology.png" medium="image">
			<media:title type="html">EIGRP Topology</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/09/1-r1-bw.png" medium="image">
			<media:title type="html">1-R1-BW</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/09/1-r1-bw-wireshark.png" medium="image">
			<media:title type="html">1-R1-BW-Wireshark</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/09/1-r1-metric1.png" medium="image">
			<media:title type="html">1-R1-Metric</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/09/1-r2-metric1.png" medium="image">
			<media:title type="html">1-R2-Metric</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/09/1-r3-metric1.png" medium="image">
			<media:title type="html">1-R3-Metric</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/09/eigrp-topology3.png" medium="image">
			<media:title type="html">EIGRP Topology3</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/09/3-r3-showtopology2.png" medium="image">
			<media:title type="html">3-R3-ShowTopology</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/09/3-r3-routetable1.png" medium="image">
			<media:title type="html">3-R3-RouteTable</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/09/3-r2-load1.png" medium="image">
			<media:title type="html">3-R2-Load</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/09/4-r2-showtopology1.png" medium="image">
			<media:title type="html">4-R2-ShowTopology</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/09/4-r3-showtopology1.png" medium="image">
			<media:title type="html">4-R3-ShowTopology</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/09/4-r3-routetable.png" medium="image">
			<media:title type="html">4-R3-RouteTable</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/09/5-r3-showtopology1.png" medium="image">
			<media:title type="html">5-R3-ShowTopology</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/09/5-r3-routetable.png" medium="image">
			<media:title type="html">5-R3-RouteTable</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/09/5-r2-showtopology1.png" medium="image">
			<media:title type="html">5-R2-ShowTopology</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/09/6-r2-load.png" medium="image">
			<media:title type="html">6-R2-Load</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/09/6-r3-routetable.png" medium="image">
			<media:title type="html">6-R3-RouteTable</media:title>
		</media:content>
	</item>
		<item>
		<title>Virtual Fragmentation Reassembly</title>
		<link>http://cisconinja.wordpress.com/2009/06/14/virtual-fragmentation-reassembly/</link>
		<comments>http://cisconinja.wordpress.com/2009/06/14/virtual-fragmentation-reassembly/#comments</comments>
		<pubDate>Sun, 14 Jun 2009 23:22:08 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
				<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://cisconinja.wordpress.com/?p=914</guid>
		<description><![CDATA[In this post we will look at virtual fragmentation reassembly and a few examples of where it is useful.  The topology and configurations for this example are shown below: R1: interface FastEthernet0/0  ip address 10.1.1.1 255.255.255.0 ! interface Serial0/0  ip address 10.0.12.1 255.255.255.0 ! ip route 0.0.0.0 0.0.0.0 Serial0/0 R2: interface Serial0/0  ip address 10.0.12.2 255.255.255.0 [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cisconinja.wordpress.com&amp;blog=5591147&amp;post=914&amp;subd=cisconinja&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>In this post we will look at virtual fragmentation reassembly and a few examples of where it is useful.  The topology and configurations for this example are shown below:</p>
<p><img class="alignnone size-full wp-image-941" title="VFR Topology2" src="http://cisconinja.files.wordpress.com/2009/06/vfr-topology2.png?w=487&#038;h=205" alt="VFR Topology2" width="487" height="205" /></p>
<p><code><span style="color:#0000ff;">R1:<br />
interface FastEthernet0/0<br />
 ip address 10.1.1.1 255.255.255.0<br />
!<br />
interface Serial0/0<br />
 ip address 10.0.12.1 255.255.255.0<br />
!<br />
ip route 0.0.0.0 0.0.0.0 Serial0/0</span><br />
</code></p>
<p><code><span style="color:#0000ff;">R2:<br />
interface Serial0/0<br />
 ip address 10.0.12.2 255.255.255.0<br />
!<br />
interface Serial0/1<br />
 ip address 10.0.23.2 255.255.255.0<br />
!<br />
ip route 10.0.34.0 255.255.255.0 Serial0/1<br />
ip route 10.1.1.0 255.255.255.0 Serial0/0<br />
</span></code></p>
<p><code><span style="color:#0000ff;">R3:<br />
interface Serial0/0<br />
 ip address 10.0.23.3 255.255.255.0<br />
!<br />
interface Serial0/1<br />
 ip address 10.0.34.3 255.255.255.0<br />
!<br />
ip route 0.0.0.0 0.0.0.0 Serial0/0</span></code></p>
<p><code><span style="color:#0000ff;">R4:<br />
interface Serial0/0<br />
 ip address 10.0.34.4 255.255.255.0<br />
!<br />
ip route 0.0.0.0 0.0.0.0 Serial0/0</span><br />
</code></p>
<p>With virtual fragmentation reassembly enabled, a router holds fragments received on an interface until all fragments of a packet have been received and the packet can be reassembled.  The router can then make decisions based on the L4 and other information available in the reassembled packet that would otherwise not be available in the non-initial fragments.  The original fragments are then forwarded based on the information in the reassembled packet, and the reassmbled packet is discarded. </p>
<p> </p>
<p>First we will look at how this can be useful in CBAC, also known as IOS classic firewall.  R1 is set up as a TFTP and HTTP server and has a 250 KB file in flash, which R4 will download.  R3 will inspect TFTP and HTTP inbound on S0/1.  R2 S0/1 MTU is lowered to 300, causing fragmentation to occur at R2 for return traffic:</p>
<p><code><span style="color:#0000ff;">R1:<br />
ip http server<br />
ip http path flash:<br />
tftp-server flash:asdf.txt</span><br />
</code></p>
<p><code><span style="color:#0000ff;">R3:<br />
ip inspect audit-trail<br />
ip inspect name asdf http<br />
ip inspect name asdf tftp<br />
!<br />
access-list 100 deny ip any any<br />
!<br />
interface Serial0/0<br />
 ip access-group 100 in<br />
!<br />
interface Serial0/1<br />
 ip inspect asdf in</span><br />
</code></p>
<p><code><span style="color:#0000ff;">R2:<br />
interface Serial0/1<br />
 ip mtu 300<br />
</span></code></p>
<p>Next we will start the download on R4:</p>
<p><code><span style="color:#0000ff;">R4#copy http://10.0.12.1/asdf.txt null:</span><br />
Loading http://10.0.12.1/asdf.txt !<br />
%Error reading http://10.0.12.1/asdf.txt (Broken pipe)<br />
</code></p>
<p>The transfer fails.  Both R1 and R4 have specified a TCP MSS of 536 bytes in their first packet:</p>
<p><img class="alignnone size-full wp-image-921" title="3-Wireshark" src="http://cisconinja.files.wordpress.com/2009/06/3-wireshark.png?w=529&#038;h=187" alt="3-Wireshark" width="529" height="187" /></p>
<p><img class="alignnone size-full wp-image-922" title="4-Wireshark" src="http://cisconinja.files.wordpress.com/2009/06/4-wireshark.png?w=526&#038;h=201" alt="4-Wireshark" width="526" height="201" /></p>
<p> </p>
<p>The rest of the first part of the exchange looks as shown below Wireshark.  R4 sends an HTTP GET to R1, and the first data packet sent by R1 is an unfragmented 292 byte packet.  After this, all packets  sent by R1 are fragmented.  The majority of them are a 304 byte initial fragment followed by a 300 byte 2nd fragment due to the MSS of 536 on R4 and MTU of 300 on R2 S0/1 (536B of data + 20B TCP header + 20B IP header = 576; fragmented by R2 into 300B and 276B; add 20B IP header to 2nd fragment and 4B HDLC to both fragments = 304B and 300B):</p>
<p><img class="alignnone size-full wp-image-920" title="2-Wireshark" src="http://cisconinja.files.wordpress.com/2009/06/2-wireshark.png?w=576&#038;h=443" alt="2-Wireshark" width="576" height="443" /></p>
<p>Let&#8217;s compare this sequence of packets that we see in Wireshark to the CBAC debug output:</p>
<p><code><span style="color:#0000ff;">R3#debug ip inspect protocol tcp</span><br />
Mar 1 <span style="color:#ff0000;">01:22:07.895</span>: %FW-6-SESS_AUDIT_TRAIL_START: Start http session: initiator (10.0.34.4:21143) -- responder (10.0.12.1:80)<br />
Mar 1 <span style="color:#ff0000;">01:22:07.895</span>: CBAC* sis 66F0A118 pak 663FE6F4 SIS_CLOSED/LISTEN TCP SYN SEQ 1282798572 LEN 0 (10.0.34.4:21143) =&gt; (10.0.12.1:80)<br />
Mar 1 <span style="color:#ff0000;">01:22:07.895</span>: CBAC* Details of Pak 663FE6F4 IP: s=10.0.34.4 (Serial0/1), d=10.0.12.1 (Serial0/0), len 48, proto=6<br />
Mar 1 <span style="color:#ff0000;">01:22:07.895</span>: CBAC: data length for this packet is zero, returning<br />
Mar 1 <span style="color:#ff0000;">01:22:08.003</span>: CBAC* sis 66F0A118 pak 663FE340 SIS_OPENING/SYNSENT TCP SYN ACK 1282798573 SEQ 590243577 LEN 0 (10.0.12.1:80) &lt;= (10.0.34.4:21143)<br />
Mar 1 <span style="color:#ff0000;">01:22:08.003</span>: CBAC* Details of Pak 663FE340 IP: s=10.0.12.1 (Serial0/0), d=10.0.34.4 (Serial0/1), len 48, proto=6<br />
Mar 1 <span style="color:#ff0000;">01:22:08.007</span>: CBAC: data length for this packet is zero, returning<br />
Mar 1 <span style="color:#ff0000;">01:22:08.135</span>: CBAC* sis 66F0A118 pak 663FE6F4 SIS_OPENING/SYNRCVD TCP ACK 590243578 SEQ 1282798573 LEN 0 (10.0.34.4:21143) =&gt; (10.0.12.1:80)<br />
Mar 1 <span style="color:#ff0000;">01:22:08.139</span>: CBAC* sis 66F0A118 http L7 inspect result: PASS packet<br />
Mar 1 <span style="color:#ff0000;">01:22:08.139</span>: CBAC* Details of Pak 663FE6F4 IP: s=10.0.34.4 (Serial0/1), d=10.0.12.1 (Serial0/0), len 44, proto=6<br />
Mar 1 <span style="color:#ff0000;">01:22:08.139</span>: CBAC: data length for this packet is zero, returning<br />
Mar 1 <span style="color:#ff0000;">01:22:08.143</span>: CBAC* sis 66F0A118 pak 663FE6F4 SIS_OPEN/ESTAB TCP ACK 590243578 SEQ 1282798573 LEN 127 (10.0.34.4:21143) =&gt; (10.0.12.1:80)<br />
Mar 1 <span style="color:#ff0000;">01:22:08.143</span>: CBAC* sis 66F0A118 http L7 inspect result: PASS packet<br />
Mar 1 <span style="color:#ff0000;">01:22:08.143</span>: CBAC* Details of Pak 663FE6F4 IP: s=10.0.34.4 (Serial0/1), d=10.0.12.1 (Serial0/0), len 171, proto=6<br />
Mar 1 <span style="color:#ff0000;">01:22:08.147</span>: CBAC: pak seq = 1282798573, rcvwnd = 4128 rcvnxt = 590243578<br />
Mar 1 <span style="color:#ff0000;">01:22:08.375</span>: CBAC* sis 66F0A118 pak 663FE340 SIS_OPEN/ESTAB TCP ACK 1282798700 SEQ 590243578 LEN 248 (10.0.12.1:80) &lt;= (10.0.34.4:21143)<br />
Mar 1 <span style="color:#ff0000;">01:22:08.375</span>: CBAC* sis 66F0A118 http L7 inspect result: PASS packet<br />
Mar 1 <span style="color:#ff0000;">01:22:08.375</span>: CBAC* Details of Pak 663FE340 IP: s=10.0.12.1 (Serial0/0), d=10.0.34.4 (Serial0/1), len 292, proto=6<br />
Mar 1 <span style="color:#ff0000;">01:22:08.375</span>: CBAC: pak seq = 590243578, rcvwnd = 4001 rcvnxt = 1282798700<br />
Mar 1 <span style="color:#ff0000;">01:22:08.379</span>: CBAC* sis 66F0A118 pak 663FE6F4 SIS_OPEN/ESTAB TCP ACK 590243826 SEQ 1282798700 LEN 0 (10.0.34.4:21143) =&gt; (10.0.12.1:80)<br />
Mar 1 <span style="color:#ff0000;">01:22:08.379</span>: CBAC* Details of Pak 663FE6F4 IP: s=10.0.34.4 (Serial0/1), d=10.0.12.1 (Serial0/0), len 44, proto=6<br />
Mar 1 <span style="color:#ff0000;">01:22:08.379</span>: CBAC: data length for this packet is zero, returning<br />
Mar 1 <span style="color:#ff0000;">01:22:08.475</span>: CBAC* sis 66F0A118 pak 663FE6F4 SIS_OPEN/ESTAB TCP ACK 590244115 SEQ 1282798700 LEN 0 (10.0.34.4:21143) =&gt; (10.0.12.1:80)<br />
Mar 1 <span style="color:#ff0000;">01:22:08.475</span>: CBAC* Details of Pak 663FE6F4 IP: s=10.0.34.4 (Serial0/1), d=10.0.12.1 (Serial0/0), len 44, proto=6<br />
Mar 1 <span style="color:#ff0000;">01:22:08.475</span>: CBAC: data length for this packet is zero, returning<br />
Mar 1 <span style="color:#ff0000;">01:22:08.495</span>: CBAC* sis 66F0A118 pak 663FE6F4 SIS_OPEN/ESTAB TCP ACK 590244115 SEQ 1282798700 LEN 0 (10.0.34.4:21143) =&gt; (10.0.12.1:80)<br />
Mar 1 <span style="color:#ff0000;">01:22:08.495</span>: CBAC* Details of Pak 663FE6F4 IP: s=10.0.34.4 (Serial0/1), d=10.0.12.1 (Serial0/0), len 44, proto=6<br />
Mar 1 <span style="color:#ff0000;">01:22:08.499</span>: CBAC: data length for this packet<br />
is zero, returning<br />
Mar 1 <span style="color:#ff0000;">01:22:08.571</span>: CBAC* sis 66F0A118 pak 663FE6F4 SIS_OPEN/ESTAB TCP ACK 590244611 SEQ 1282798700 LEN 0 (10.0.34.4:21143) =&gt; (10.0.12.1:80)<br />
Mar 1 <span style="color:#ff0000;">01:22:08.571</span>: CBAC* Details of Pak 663FE6F4 IP: s=10.0.34.4 (Serial0/1), d=10.0.12.1 (Serial0/0), len 44, proto=6<br />
Mar 1 <span style="color:#ff0000;">01:22:08.571</span>: CBAC: data length for this packet is zero, returning<br />
Mar 1 <span style="color:#ff0000;">01:22:08.691</span>: CBAC* sis 66F0A118 pak 663FE6F4 SIS_OPEN/ESTAB TCP ACK 590245147 SEQ 1282798700 LEN 0 (10.0.34.4:21143) =&gt; (10.0.12.1:80)<br />
Mar 1 <span style="color:#ff0000;">01:22:08.691</span>: CBAC* Details of Pak 663FE6F4 IP: s=10.0.34.4 (Serial0/1), d=10.0.12.1 (Serial0/0), len 44, proto=6<br />
Mar 1 <span style="color:#ff0000;">01:22:08.691</span>: CBAC: data length for this packet is zero, returning<br />
</code></p>
<p>By comparing the source/destination address and the length shown in the debug output, it&#8217;s easy to correlate them to the Wireshark output.  The first several packets match Wireshark exactly, but after the 292 byte unfragmented packet from R1, we see only ACKs from R4.  The fragmented packets from R1 are forwarded to R4 without even being checked by CBAC as long as the L3 information matches the L3 information of the session.  This is somewhat similar to <a href="http://www.cisco.com/en/US/tech/tk827/tk369/technologies_white_paper09186a00800949b8.shtml">how ACLs handle IP fragments</a>, except that in this case not even the initial fragment is examined by CBAC to determine the L4 information.  Part way through the transfer, R1 happens to send a 161-byte packet that does not need fragmentation at R2:</p>
<p><img class="alignnone size-full wp-image-924" title="5-Wireshark" src="http://cisconinja.files.wordpress.com/2009/06/5-wireshark.png?w=546&#038;h=440" alt="5-Wireshark" width="546" height="440" /></p>
<p>This packet also shows up in the debug output since it is unfragmented and can be inspected by CBAC:</p>
<p><code>Mar 1 <span style="color:#ff0000;">01:22:10.347</span>: CBAC* sis 66F0A118 pak 663FE340 SIS_OPEN/ESTAB TCP ACK 1282798700 SEQ 590257277 LEN 117 (10.0.12.1:80) &lt;= (10.0.34.4:21143)<br />
Mar 1 <span style="color:#ff0000;">01:22:10.347</span>: CBAC* sis 66F0A118 L4 inspect result: DROP packet 663FE340 (10.0.12.1:80) (10.0.34.4:21143) bytes 117 ErrStr = Out-Of-Order Segment http<br />
Mar 1 <span style="color:#ff0000;">01:22:10.351</span>: CBAC* Details of Pak 663FE340 IP: s=10.0.12.1 (Serial0/0), d=10.0.34.4 (Serial0/1), len 161, proto=6<br />
Mar 1 <span style="color:#ff0000;">01:22:10.351</span>: CBAC: pak seq = 590257277, rcvwnd = 4001 rcvnxt = 1282798700<br />
Mar 1 <span style="color:#ff0000;">01:22:10.351</span>: CBAC Storing the packet 663FE340 into OOO queue of session 66F0A118<br />
</code></p>
<p>As shown in the log message, CBAC believes this is an out of order segment based on the TCP sequence number since it did not inspect any of the intermediate packets.  As explained <a href="http://www.cisco.com/en/US/docs/ios/12_4t/12_4t11/ht_ooop.html#wp1049435">here</a>, CBAC allows the packet to pass but stores a copy in memory.  If it turns out to be an out of order packet, future packets should be able to fill in the gap in sequence numbers.  Shortly after this, we begin seeing this debug message for R4&#8242;s ACKs:</p>
<p><code>Mar 1 <span style="color:#ff0000;">01:22:11.035</span>: CBAC* sis 66F0A118 pak 663FE6F4 SIS_OPEN/ESTAB TCP ACK 590261146 SEQ 1282798700 LEN 0 (10.0.34.4:21143) =&gt; (10.0.12.1:80)<br />
Mar 1 <span style="color:#ff0000;">01:22:11.039</span>: CBAC* sis 66F0A118 L4 inspect result: DROP packet 663FE6F4 (10.0.34.4:21143) (10.0.12.1:80) bytes 0 ErrStr = Invalid Ack (or no Ack) http<br />
Mar 1 <span style="color:#ff0000;">01:22:11.039</span>: CBAC* Details of Pak 663FE6F4 IP: s=10.0.34.4 (Serial0/1), d=10.0.12.1 (Serial0/0), len 44, proto=6<br />
</code></p>
<p>CBAC thinks this is an invalid ACK by R4 since it does not believe that sequence number has been sent yet by R1.  As shown in the message, the packet is dropped.  R1 can still send packets to R4, but R4 can no longer acknowledge them.  Since R1 does not receive an ACK it continues trying to resend sequence number 590,260,074:</p>
<p><img class="alignnone size-full wp-image-925" title="6-Wireshark" src="http://cisconinja.files.wordpress.com/2009/06/6-wireshark.png?w=525&#038;h=358" alt="6-Wireshark" width="525" height="358" /></p>
<p>R4 receives them all and after each one tries to tell R1 it already received that sequence number and wants 590,262,754 instead, but the ACKs continue to be dropped:</p>
<p><code>Mar 1 <span style="color:#ff0000;">01:22:11.615</span>: CBAC* sis 66F0A118 pak 663FE6F4 SIS_OPEN/ESTAB TCP ACK 590262754 SEQ 1282798700 LEN 0 (10.0.34.4:21143) =&gt; (10.0.12.1:80)<br />
Mar 1 <span style="color:#ff0000;">01:22:11.615</span>: CBAC* sis 66F0A118 L4 inspect result: DROP packet 663FE6F4 (10.0.34.4:21143) (10.0.12.1:80) bytes 0 ErrStr = Invalid Ack (or no Ack) http<br />
Mar 1 <span style="color:#ff0000;">01:22:11.615</span>: CBAC* Details of Pak 663FE6F4 IP: s=10.0.34.4 (Serial0/1), d=10.0.12.1 (Serial0/0), len 44, proto=6<br />
Mar 1 <span style="color:#ff0000;">01:22:12.759</span>: CBAC* sis 66F0A118 pak 663FE6F4 SIS_OPEN/ESTAB TCP ACK 590262754 SEQ 1282798700 LEN 0 (10.0.34.4:21143) =&gt; (10.0.12.1:80)<br />
Mar 1 <span style="color:#ff0000;">01:22:12.763</span>: CBAC* sis 66F0A118 L4 inspect result: DROP packet 663FE6F4 (10.0.34.4:21143) (10.0.12.1:80) bytes 0 ErrStr = Invalid Ack (or no Ack) http<br />
Mar 1 <span style="color:#ff0000;">01:22:12.763</span>: CBAC* Details of Pak 663FE6F4 IP: s=10.0.34.4 (Serial0/1), d=10.0.12.1 (Serial0/0), len 44, proto=6<br />
Mar 1 <span style="color:#ff0000;">01:22:14.363</span>: CBAC* sis 66F0A118 pak 663FE6F4 SIS_OPEN/ESTAB TCP ACK 590262754 SEQ 1282798700 LEN 0 (10.0.34.4:21143) =&gt; (10.0.12.1:80)<br />
Mar 1 <span style="color:#ff0000;">01:22:14.363</span>: CBAC* sis 66F0A118 L4 inspect result: DROP packet 663FE6F4 (10.0.34.4:21143) (10.0.12.1:80) bytes 0 ErrStr = Invalid Ack (or no Ack) http<br />
Mar 1 <span style="color:#ff0000;">01:22:14.367</span>: CBAC* Details of Pak 663FE6F4 IP: s=10.0.34.4 (Serial0/1), d=10.0.12.1 (Serial0/0), len 44, proto=6<br />
</code></p>
<p>25 seconds after R3 received the second unfragmented packet from R1, we see the following log messages:</p>
<p><code>Mar 1 <span style="color:#ff0000;">01:22:35.619</span>: CBAC: Responder's OOO Idle timeout handler with Session 66F0A118<br />
Mar 1 <span style="color:#ff0000;">01:22:35.619</span>: CBAC: TCP OOO timeout handling method called for session 66F0A118<br />
Mar 1 <span style="color:#ff0000;">01:22:35.619</span>: CBAC: OOO queue timer exceeded the retry threshold. Deleting the session 66F0A118<br />
Mar 1 <span style="color:#ff0000;">01:22:35.623</span>: %FW-6-SESS_AUDIT_TRAIL: Stop http session: initiator (10.0.34.4:21143) sent 127 bytes -- responder (10.0.12.1:80) sent 248 bytes<br />
Mar 1 <span style="color:#ff0000;">01:22:35.627</span>: %FW-4-TCP_OoO_SEG: Deleting session as expected TCP segment with seq:590243826 has not arrived even after 25 seconds - session 10.0.34.4:21143 to 10.0.12.1:80<br />
</code></p>
<p>R3 deletes the session from it&#8217;s state table because the expected out-of-order segments have not arrived.  The sequence number of the first 292-byte unfragmented packet was 590,243,578; subtracting HDLC, IP, and TCP headers leaves 248 bytes of data, which explains why R3 was still looking for 590,243,826.  The audit trail log message also proves that CBAC did not inspect initial fragments, as it believes R1 sent 248 bytes of data when in fact it has sent about 19,000 bytes.  Let&#8217;s enable virtual fragmentation reassembly on R3 S0/0 and try the transfer again:</p>
<p><code><span style="color:#0000ff;">R3:<br />
interface Serial0/0<br />
 ip virtual-reassembly</span><br />
</code></p>
<p><code><span style="color:#0000ff;">R4#copy http://10.0.12.1/asdf.txt null:</span><br />
Loading http://10.0.12.1/asdf.txt !!<br />
255324 bytes copied in 17.828 secs (14322 bytes/sec)<br />
</code></p>
<p>R3 is now able to inspect the reassembled packets correctly and the transfer completes successfully. An example of reassmbled packet being inspected by R3 is shown below:</p>
<p><code><span style="color:#0000ff;">R3#debug ip inspect protocol tcp<br />
</span>Mar 1 <span style="color:#ff0000;">02:27:42.155</span>: CBAC sis 66F0A118 pak 6678EDF8 SIS_OPEN/ESTAB TCP ACK 168810932 SEQ 1043666778 LEN 536 (10.0.12.1:80) &lt;= (10.0.34.4:53749)<br />
Mar 1 <span style="color:#ff0000;">02:27:42.159</span>: CBAC sis 66F0A118 http L7 inspect result: PASS packet<br />
Mar 1 <span style="color:#ff0000;">02:27:42.159</span>: CBAC sis 66F0A118 http L7 inspect result: PASS packet<br />
Mar 1 <span style="color:#ff0000;">02:27:42.159</span>: CBAC Details of Pak 6678EDF8 IP: s=10.0.12.1 (Serial0/0), d=10.0.34.4 (Serial0/1), len 304, proto=6<br />
Mar 1 <span style="color:#ff0000;">02:27:42.159</span>: CBAC: pak seq = 1043666778, rcvwnd = 4001 rcvnxt = 168810932<br />
</code></p>
<p>As shown by the debug, the 536-byte reassembled TCP segment is inspected, which results in both fragments being forwarded.  The reassembled packet is then dropped.</p>
<p> </p>
<p>Next we will try a TFTP transfer.  Virtual fragmentation reassembly has been disabled again on R3:</p>
<p><code><span style="color:#0000ff;">R4#copy tftp://10.0.12.1/asdf.txt null:</span><br />
Accessing tftp://10.0.12.1/asdf.txt...<br />
Loading asdf.txt from 10.0.12.1 (via Serial0/0): !... [timed out]<br />
%Error reading tftp://10.0.12.1/asdf.txt (Timed out)</code></p>
<p>The start of the transfer in Wireshark is shown below:</p>
<p><img class="alignnone size-full wp-image-927" title="8-Wireshark" src="http://cisconinja.files.wordpress.com/2009/06/8-wireshark.png?w=542&#038;h=371" alt="8-Wireshark" width="542" height="371" /></p>
<p>The transfer appears to be working in both directions.  Notice that every single packet from R1 gets fragmented by R2 since they are all a fixed size.  Since CBAC does not examine fragmented packets, it does not even see an initial response from R1.  The session remains in the SIS_OPENING state and R3 has a pre-generated session in the state table where it is still waiting for a response from R1 on a port above 1023:</p>
<p><img class="alignnone size-full wp-image-928" title="7-R3-Show-IP-Inspect" src="http://cisconinja.files.wordpress.com/2009/06/7-r3-show-ip-inspect.png?w=559&#038;h=89" alt="7-R3-Show-IP-Inspect" width="559" height="89" /></p>
<p>The transfer continues to work until the UDP session timeout expires (30 seconds by default).  At this point, the session is deleted and the fragmented packets are dropped since their L3 information does not match anything in the session table:</p>
<p><code>Mar 1 <span style="color:#ff0000;">03:57:50.927</span>: %FW-6-SESS_AUDIT_TRAIL: Stop tftp session: initiator (10.0.34.4:63208) sent 17 bytes -- responder (10.0.12.1:69) sent 0 bytes<br />
</code></p>
<p><img class="alignnone size-full wp-image-929" title="9-Wireshark" src="http://cisconinja.files.wordpress.com/2009/06/9-wireshark.png?w=528&#038;h=400" alt="9-Wireshark" width="528" height="400" /></p>
<p>Let&#8217;s try it again with virtual fragmentation reassembly enabled on R3 S0/0:</p>
<p><code><span style="color:#0000ff;">R3:<br />
interface Serial0/0<br />
 ip virtual-reassembly </span><br />
</code></p>
<p><code><span style="color:#0000ff;">R4#copy tftp://10.0.12.1/asdf.txt null:<br />
</span>Accessing tftp://10.0.12.1/asdf.txt...<br />
Loading asdf.txt from 10.0.12.1 (via Serial0/0): !<br />
[OK - 255324 bytes]<br />
255324 bytes copied in 159.280 secs (1603 bytes/sec)<br />
</code></p>
<p><code><span style="color:#0000ff;">R3#debug ip inspect protocol udp<br />
R3#debug ip inspect protocol tftp<br />
</span>Mar 1 <span style="color:#ff0000;">03:20:25.211</span>: CBAC UDP: sis 66F09E40 pak 66F554A0 SIS_OPEN UDP packet (10.0.12.1:50791) =&gt; (10.0.34.4:65521) datalen 516<br />
Mar 1 <span style="color:#ff0000;">03:20:25.215</span>: TFTP DATA Channel 66F09E40 state SIS_OPEN<br />
Mar 1 <span style="color:#ff0000;">03:20:25.215</span>: TFTP Code : DATA, packet length : 516<br />
Mar 1 <span style="color:#ff0000;">03:20:25.215</span>: CBAC sis 66F09E40 tftp-data L7 inspect result: PASS packet<br />
Mar 1 <span style="color:#ff0000;">03:20:25.423</span>: CBAC* UDP: sis 66F09E40 pak 663FE6F4 SIS_OPEN UDP packet (10.0.12.1:50791) &lt;= (10.0.34.4:65521) datalen 4<br />
Mar 1 <span style="color:#ff0000;">03:20:25.423</span>: TFTP DATA Channel 66F09E40 state SIS_OPEN<br />
Mar 1 <span style="color:#ff0000;">03:20:25.423</span>: TFTP Code : ACK<br />
Mar 1 <span style="color:#ff0000;">03:20:25.423</span>: CBAC* sis 66F09E40 tftp-data L7 inspect result: PASS packet<br />
</code></p>
<p>Again, CBAC is now able to correctly inspect the TFTP traffic and the transfer is successful.</p>
<p> </p>
<p> </p>
<p>Next we will remove the CBAC configuration and try the same two transfers using the zone-based firewall.  Virtual fragmentation reassembly has also been removed.  The ZBFW configuration on R3 is:</p>
<p><code><span style="color:#0000ff;">R3:<br />
class-map type inspect match-all tftp<br />
 match protocol tftp<br />
class-map type inspect match-all web<br />
 match protocol http<br />
!<br />
policy-map type inspect asdf<br />
 class type inspect web<br />
  inspect<br />
 class type inspect tftp<br />
  inspect<br />
 class class-default<br />
!<br />
zone security inside<br />
zone security outside<br />
zone-pair security inside-outside source inside destination outside<br />
 service-policy type inspect asdf<br />
!<br />
interface Serial0/0<br />
 zone-member security outside<br />
!<br />
interface Serial0/1<br />
 zone-member security inside</span><br />
</code></p>
<p>We&#8217;ll try the HTTP transfer first:</p>
<p><code><span style="color:#0000ff;">R4#copy http://10.0.12.1/asdf.txt null:<br />
</span>Loading http://10.0.12.1/asdf.txt !<br />
%Error reading http://10.0.12.1/asdf.txt (Broken pipe)<br />
</code></p>
<p>The transfer fails.  I&#8217;m not aware of any equivalent debugs for ZBFW that show per-packet information and inspection results, but Wireshark is sufficient for finding the problem.  <em>Edit: I found out afterward that CBAC debugs will also work for ZBFW.  </em>Shown below is a capture on R3 S0/1 followed by a capture on R3 S0/0:</p>
<p><img class="alignnone size-full wp-image-934" title="11-Wireshark" src="http://cisconinja.files.wordpress.com/2009/06/11-wireshark1.png?w=618&#038;h=767" alt="11-Wireshark" width="618" height="767" /></p>
<p><img class="alignnone size-full wp-image-935" title="10-Wireshark" src="http://cisconinja.files.wordpress.com/2009/06/10-wireshark.png?w=617&#038;h=617" alt="10-Wireshark" width="617" height="617" /></p>
<p>Every packet in the transfer is the same on each interface up until #139 on S0/1, at 13:40:47.135.  This ACK is never seen on R3 S0/0.  Instead, we see only traffic coming from R1 after this point.  The sequence number in every packet sent by R1 after this point is 1,590,239,484 and the acknowledgement number sent by R4 is 1,590,242,700, which also indicates that R4 is receiving data from R1 but R1 is not receiving ACKs from R4.  In the sessions table, we see the exact same number of bytes sent in each direction as we saw for the HTTP transfer with CBAC:</p>
<p><img class="alignnone size-full wp-image-936" title="12-R3-ZBFW" src="http://cisconinja.files.wordpress.com/2009/06/12-r3-zbfw.png?w=500&#038;h=232" alt="12-R3-ZBFW" width="500" height="232" /></p>
<p>The problem is the same that we had with CBAC.  Fragmented packets are not examined, and R3 therefore believes that R4 is sending invalid ACKs and begins dropping them.  Like before, enabling virtual fragmentation reassembly fixes the problem:</p>
<p><code><span style="color:#0000ff;">R3:<br />
interface Serial0/0<br />
 ip virtual-reassembly</span><br />
</code></p>
<p>The transfer now works, and R3 shows the correct number of bytes transferred in the session:</p>
<p><code><span style="color:#0000ff;">R4#copy http://10.0.12.1/asdf.txt null:</span><br />
Loading http://10.0.12.1/asdf.txt !!<br />
255324 bytes copied in 15.232 secs (16762 bytes/sec)<br />
</code></p>
<p><code>Mar 1 <span style="color:#ff0000;">04:07:48.907</span>: %FW-6-SESS_AUDIT_TRAIL: Stop http session: initiator (10.0.34.4:60779) sent 127 bytes -- responder (10.0.12.1:80) sent 255572 bytes<br />
</code></p>
<p> </p>
<p> </p>
<p>Next we will try the TFTP transfer with virtual fragmentation reassembly disabled:</p>
<p><code><span style="color:#0000ff;">R4#copy tftp://10.0.12.1/asdf.txt null:</span><br />
Accessing tftp://10.0.12.1/asdf.txt...<br />
%Error opening tftp://10.0.12.1/asdf.txt (Timed out)<br />
</code></p>
<p>The transfer fails.  Shown below are captures on R3 S0/1 and then R3 S0/0:</p>
<p><img class="alignnone size-full wp-image-937" title="14-Wireshark-R3-S1" src="http://cisconinja.files.wordpress.com/2009/06/14-wireshark-r3-s1.png?w=562&#038;h=230" alt="14-Wireshark-R3-S1" width="562" height="230" /></p>
<p><img class="alignnone size-full wp-image-938" title="14-Wireshark-R3-S0" src="http://cisconinja.files.wordpress.com/2009/06/14-wireshark-r3-s0.png?w=657&#038;h=175" alt="14-Wireshark-R3-S0" width="657" height="175" /></p>
<p>These captures show that the inspection logic used by ZBFW is a little more detailed than CBAC (at least for TFTP).  With ZBFW, none of the acknowledgements from R4 to R1 are allowed because R3 does not believe that it is a valid acknowledgement since it is not aware of R1 sending data.  With CBAC, the acknowledgements were always allowed even though the firewall had not seen the data block that was being acknowledged pass through it.  Therefore the transfer fails almost immediately with the ZBFW, while with CBAC it takes a while and could actually finish if the transfer completes before the UDP timeout expires.  Once again enabling virtual fragmentation reassembly fixes the problem:</p>
<p><code><span style="color:#0000ff;">R3:<br />
interface Serial0/0<br />
 ip virtual-reassembly<br />
</span></code></p>
<p><code><span style="color:#0000ff;">R4#copy tftp://10.0.12.1/asdf.txt null:</span><br />
Accessing tftp://10.0.12.1/asdf.txt...<br />
Loading asdf.txt from 10.0.12.1 (via Serial0/0): !<br />
[OK - 255324 bytes]<br />
255324 bytes copied in 146.804 secs (1739 bytes/sec)<br />
</code></p>
<p> </p>
<p> </p>
<p>Next we will look at some of the types of invalid fragments and fragment attacks that virtual fragmentation reassembly can prevent as well as some of it&#8217;s configurable settings.  The ZBFW configuration has been removed from R3.  <a href="http://www.colasoft.com/download/products/packet_builder.php">Colasoft Packet Builder</a> will be used to send packets from a PC at 10.1.1.10 connected to R1 to R4.  First, a correctly fragmented ICMP echo with 100 bytes of data will be sent.  The ICMP echo is sent in 2 fragments 1 second apart, the first containing the 8-byte ICMP header and 80 bytes of data with the More Fragments flag set, and the second containing the last 20 bytes of data and a Fragment Offset of 11 (88 octets).</p>
<p><code><span style="color:#0000ff;">R3:<br />
interface Serial0/0<br />
 ip virtual-reassembly</span><br />
</code></p>
<p>First fragment:</p>
<p><img class="alignnone size-full wp-image-943" title="15-Colasoft-1" src="http://cisconinja.files.wordpress.com/2009/06/15-colasoft-1.png?w=547&#038;h=414" alt="15-Colasoft-1" width="547" height="414" /></p>
<p>Second fragment:</p>
<p><img class="alignnone size-full wp-image-944" title="15-Colasoft-2" src="http://cisconinja.files.wordpress.com/2009/06/15-colasoft-2.png?w=478&#038;h=339" alt="15-Colasoft-2" width="478" height="339" /></p>
<p><code><span style="color:#0000ff;">R3#debug ip virtual-reassembly<br />
</span>Mar 1 <span style="color:#ff0000;">00:24:47.747</span>: IP_VFR: fragment (sa:10.1.1.10, da:10.0.34.4, id:0, offset:0, len:88) in fast path...<br />
Mar 1 <span style="color:#ff0000;">00:24:47.747</span>: IP_VFR: created frag state for sa:10.1.1.10, da:10.0.34.4, id:0...<br />
Mar 1 <span style="color:#ff0000;">00:24:47.747</span>: IP_VFR: pak incomplete cpak-offset:0, cpak-len:88, flag: 1<br />
Mar 1 <span style="color:#ff0000;">00:24:47.747</span>: IP_VFR: dgrm incomplete, returning...<br />
Mar 1 <span style="color:#ff0000;">00:24:48.747</span>: IP_VFR: fragment (sa:10.1.1.10, da:10.0.34.4, id:0, offset:88, len:20) in fast path...<br />
Mar 1 <span style="color:#ff0000;">00:24:48.747</span>: IP_VFR: cpak-offset:0, cpak-len:88, npak-offset:88<br />
Mar 1 <span style="color:#ff0000;">00:24:48.747</span>: IP_VFR: dgrm complete, switching the frags.<br />
Mar 1 <span style="color:#ff0000;">00:24:48.747</span>: IP_VFR: switching fragment (sa:10.1.1.10, da:10.0.34.4, id:0, offset:0, len:88)<br />
Mar 1 <span style="color:#ff0000;">00:24:48.751</span>: IP VFR:Enqueing packet to IP queue<br />
Mar 1 <span style="color:#ff0000;">00:24:48.751</span>: IP_VFR: switching fragment (sa:10.1.1.10, da:10.0.34.4, id:0, offset:88, len:20)<br />
Mar 1 <span style="color:#ff0000;">00:24:48.751</span>: IP VFR:Enqueing packet to IP queue<br />
Mar 1 <span style="color:#ff0000;">00:24:48.751</span>: IP_VFR: all fragments have been switched.<br />
Mar 1 <span style="color:#ff0000;">00:24:48.755</span>: IP_VFR: pak_subblock_free - pak 0x667907E4<br />
Mar 1 <span style="color:#ff0000;">00:24:48.759</span>: IP_VFR: deleted frag state for sa:10.1.1.10, da:10.0.34.4, id:0<br />
Mar 1 <span style="color:#ff0000;">00:24:48.759</span>: IP_VFR: pak_subblock_free - pak 0x6678AB50<br />
</code></p>
<p><code><span style="color:#0000ff;">R4#debug ip packet detail</span><br />
Mar 1 <span style="color:#ff0000;">00:24:48.843</span>: IP: tableid=0, s=10.1.1.10 (Serial0/0), d=10.0.34.4 (Serial0/0), routed via RIB<br />
Mar 1 <span style="color:#ff0000;">00:24:48.843</span>: IP: s=10.1.1.10 (Serial0/0), d=10.0.34.4 (Serial0/0), len 108, rcvd 3<br />
Mar 1 <span style="color:#ff0000;">00:24:48.847</span>: IP Fragment, Ident = 0, fragment offset = 0<br />
Mar 1 <span style="color:#ff0000;">00:24:48.847</span>: ICMP type=8, code=0<br />
Mar 1 <span style="color:#ff0000;">00:24:48.847</span>: IP: recv fragment from 10.1.1.10 offset 0 bytes<br />
Mar 1 <span style="color:#ff0000;">00:24:48.871</span>: IP: tableid=0, s=10.1.1.10 (Serial0/0), d=10.0.34.4 (Serial0/0), routed via RIB<br />
Mar 1 <span style="color:#ff0000;">00:24:48.871</span>: IP: s=10.1.1.10 (Serial0/0), d=10.0.34.4 (Serial0/0), len 40, rcvd 3<br />
Mar 1 <span style="color:#ff0000;">00:24:48.875</span>: IP Fragment, Ident = 0, fragment offset = 88<br />
Mar 1 <span style="color:#ff0000;">00:24:48.875</span>: IP: recv fragment from 10.1.1.10 offset 88 bytes<br />
Mar 1 <span style="color:#ff0000;">00:24:48.875</span>: IP: tableid=0, s=10.0.34.4 (local), d=10.1.1.10 (Serial0/0), routed via FIB<br />
Mar 1 <span style="color:#ff0000;">00:24:48.875</span>: IP: s=10.0.34.4 (local), d=10.1.1.10 (Serial0/0), len 128, sending<br />
Mar 1 <span style="color:#ff0000;">00:24:48.879</span>: ICMP type=0, code=0<br />
</code></p>
<p>The fragments pass virtual reassembly on R3 and R4 is able to reassemble the ICMP echo and send an unfragmented reply.  We can also see that although the fragments arrive 1 second apart at R3, they arrive almost simultaneously at R4 because R3 does not forward any of the fragments until it has received all of them and verified that they are valid.  Let&#8217;s try lowering the fragment offset of the second fragment from 11 (88 octects) to 10 (80 octets) so that part of the data in the second fragment overlaps the first fragment:</p>
<p><img class="alignnone size-full wp-image-945" title="16-Colasoft-1" src="http://cisconinja.files.wordpress.com/2009/06/16-colasoft-1.png?w=546&#038;h=425" alt="16-Colasoft-1" width="546" height="425" /></p>
<p><img class="alignnone size-full wp-image-946" title="16-Colasoft-2" src="http://cisconinja.files.wordpress.com/2009/06/16-colasoft-2.png?w=478&#038;h=358" alt="16-Colasoft-2" width="478" height="358" /></p>
<p><code><span style="color:#0000ff;">R3#debug ip virtual-reassembly</span><br />
Mar 1 <span style="color:#ff0000;">00:37:50.339</span>: IP_VFR: fragment (sa:10.1.1.10, da:10.0.34.4, id:0, offset:0, len:88) in fast path...<br />
Mar 1 <span style="color:#ff0000;">00:37:50.339</span>: IP_VFR: created frag state for sa:10.1.1.10, da:10.0.34.4, id:0...<br />
Mar 1 <span style="color:#ff0000;">00:37:50.339</span>: IP_VFR: pak incomplete cpak-offset:0, cpak-len:88, flag: 1<br />
Mar 1 <span style="color:#ff0000;">00:37:50.339</span>: IP_VFR: dgrm incomplete, returning...<br />
Mar 1 <span style="color:#ff0000;">00:37:51.303</span>: IP_VFR: fragment (sa:10.1.1.10, da:10.0.34.4, id:0, offset:80, len:20) in fast path...<br />
Mar 1 <span style="color:#ff0000;">00:37:51.303</span>: IP_VFR: cpak-offset:0, cpak-len:88, npak-offset:80<br />
Mar 1 <span style="color:#ff0000;">00:37:51.303</span>: %IP_VFR-3-OVERLAP_FRAGMENTS: Serial0/0: from the host 10.1.1.10 destined to 10.0.34.4<br />
Mar 1 <span style="color:#ff0000;">00:37:51.307</span>: IP_VFR: err while checking for compltns of dgrm<br />
Mar 1 <span style="color:#ff0000;">00:37:51.307</span>: IP_VFR: deleted frag state for sa:10.1.1.10, da:10.0.34.4, id:0<br />
</code></p>
<p>R3 generates a log message reporting the overlapping fragments and drops them both without forwarding them to R4. </p>
<p> </p>
<p>Another type of attack that could be performed is sending several incomplete fragments.  With VFR disabled on R3 S0/0, we will send 5 different copies of the second fragment from the previous example, each with a different IP Identification number:</p>
<p><code><span style="color:#0000ff;">R4#debug ip packet detail<br />
</span>Mar 1 <span style="color:#ff0000;">00:59:10.395</span>: IP: tableid=0, s=10.1.1.10 (Serial0/0), d=10.0.34.4 (Serial0/0), routed via RIB<br />
Mar 1 <span style="color:#ff0000;">00:59:10.395</span>: IP: s=10.1.1.10 (Serial0/0), d=10.0.34.4 (Serial0/0), len 40, rcvd 3<br />
Mar 1 <span style="color:#ff0000;">00:59:10.399</span>: IP Fragment, Ident = 1, fragment offset = 80<br />
Mar 1 <span style="color:#ff0000;">00:59:10.399</span>: IP: recv fragment from 10.1.1.10 offset 80 bytes<br />
Mar 1 <span style="color:#ff0000;">00:59:11.403</span>: IP: tableid=0, s=10.1.1.10 (Serial0/0), d=10.0.34.4 (Serial0/0), routed via RIB<br />
Mar 1 <span style="color:#ff0000;">00:59:11.403</span>: IP: s=10.1.1.10 (Serial0/0), d=10.0.34.4 (Serial0/0), len 40, rcvd 3<br />
Mar 1 <span style="color:#ff0000;">00:59:11.407</span>: IP Fragment, Ident = 2, fragment offset = 80<br />
Mar 1 <span style="color:#ff0000;">00:59:11.407</span>: IP: recv fragment from 10.1.1.10 offset 80 bytes<br />
Mar 1 <span style="color:#ff0000;">00:59:12.447</span>: IP: tableid=0, s=10.1.1.10 (Serial0/0), d=10.0.34.4 (Serial0/0), routed via RIB<br />
Mar 1 <span style="color:#ff0000;">00:59:12.447</span>: IP: s=10.1.1.10 (Serial0/0), d=10.0.34.4 (Serial0/0), len 40, rcvd 3<br />
Mar 1 <span style="color:#ff0000;">00:59:12.447</span>: IP Fragment, Ident = 3, fragment offset = 80<br />
Mar 1 <span style="color:#ff0000;">00:59:12.451</span>: IP: recv fragment from 10.1.1.10 offset 80 bytes<br />
Mar 1 <span style="color:#ff0000;">00:59:13.403</span>: IP: tableid=0, s=10.1.1.10 (Serial0/0), d=10.0.34.4 (Serial0/0), routed via RIB<br />
Mar 1 <span style="color:#ff0000;">00:59:13.403</span>: IP: s=10.1.1.10 (Serial0/0), d=10.0.34.4 (Serial0/0), len 40, rcvd 3<br />
Mar 1 <span style="color:#ff0000;">00:59:13.407</span>: IP Fragment, Ident = 4, fragment offset = 80<br />
Mar 1 <span style="color:#ff0000;">00:59:13.407</span>: IP: recv fragment from 10.1.1.10 offset 80 bytes<br />
Mar 1 <span style="color:#ff0000;">00:59:14.419</span>: IP: tableid=0, s=10.1.1.10 (Serial0/0), d=10.0.34.4 (Serial0/0), routed via RIB<br />
Mar 1 <span style="color:#ff0000;">00:59:14.419</span>: IP: s=10.1.1.10 (Serial0/0), d=10.0.34.4 (Serial0/0), len 40, rcvd 3<br />
Mar 1 <span style="color:#ff0000;">00:59:14.423</span>: IP Fragment, Ident = 5, fragment offset = 80<br />
Mar 1 <span style="color:#ff0000;">00:59:14.423</span>: IP: recv fragment from 10.1.1.10 offset 80 bytes<br />
</code></p>
<p>R4 receives all the fragments and holds them in memory while waiting for the other fragments.  After about 40 seconds, they have not arrived so R4 sends an ICMP Fragmentation Reassembly Time Exceeded message back to R1 for each fragment:</p>
<p><code><span style="color:#0000ff;">R4#debug ip packet detail<br />
</span>Mar 1 <span style="color:#ff0000;">00:59:51.563</span>: IP: tableid=0, s=10.0.34.4 (local), d=10.1.1.10 (Serial0/0), routed via FIB<br />
Mar 1 <span style="color:#ff0000;">00:59:51.563</span>: IP: s=10.0.34.4 (local), d=10.1.1.10 (Serial0/0), len 56, sending<br />
Mar 1 <span style="color:#ff0000;">00:59:51.563</span>: ICMP type=11, code=1<br />
Mar 1 <span style="color:#ff0000;">00:59:51.567</span>: IP: tableid=0, s=10.0.34.4 (local), d=10.1.1.10 (Serial0/0), routed via FIB<br />
Mar 1 <span style="color:#ff0000;">00:59:51.567</span>: IP: s=10.0.34.4 (local), d=10.1.1.10 (Serial0/0), len 56, sending<br />
Mar 1 <span style="color:#ff0000;">00:59:51.571</span>: ICMP type=11, code=1<br />
Mar 1 <span style="color:#ff0000;">00:59:51.571</span>: IP: tableid=0, s=10.0.34.4 (local), d=10.1.1.10 (Serial0/0), routed via FIB<br />
Mar 1 <span style="color:#ff0000;">00:59:51.571</span>: IP: s=10.0.34.4 (local), d=10.1.1.10 (Serial0/0), len 56, sending<br />
Mar 1 <span style="color:#ff0000;">00:59:51.575</span>: ICMP type=11, code=1<br />
Mar 1 <span style="color:#ff0000;">00:59:51.575</span>: IP: tableid=0, s=10.0.34.4 (local), d=10.1.1.10 (Serial0/0), routed via FIB<br />
Mar 1 <span style="color:#ff0000;">00:59:51.575</span>: IP: s=10.0.34.4 (local), d=10.1.1.10 (Serial0/0), len 56, sending<br />
Mar 1 <span style="color:#ff0000;">00:59:51.579</span>: ICMP type=11, code=1<br />
Mar 1 <span style="color:#ff0000;">00:59:51.579</span>: IP: tableid=0, s=10.0.34.4 (local), d=10.1.1.10 (Serial0/0), routed via FIB<br />
Mar 1 <span style="color:#ff0000;">00:59:51.579</span>: IP: s=10.0.34.4 (local), d=10.1.1.10 (Serial0/0), len 56, sending<br />
Mar 1 <span style="color:#ff0000;">00:59:51.583</span>: ICMP type=11, code=1<br />
</code></p>
<p>This results in wasted resources on R4 as well as wasted bandwidth on the R3-R4 link.  With VFR on R3, the fragments would never have been forwarded because the remaining fragments never arrived.  The <strong>timeout</strong> and <strong>max-reassemblies</strong> options can be used to tune the amount of resources that VFR uses for this.  We will set a maximum of 3 reassemblies and a timeout of 10 seconds and send the same 5 non-initial fragments again:</p>
<p><code><span style="color:#0000ff;">R3:<br />
interface Serial0/0<br />
 ip virtual-reassembly max-reassemblies 3 timeout 10</span><br />
</code></p>
<p><code><span style="color:#0000ff;">R3#debug ip virtual-reassembly</span><br />
Mar 1 <span style="color:#ff0000;">01:19:05.111</span>: IP_VFR: fragment (sa:10.1.1.10, da:10.0.34.4, id:1, offset:80, len:20) in fast path...<br />
Mar 1 <span style="color:#ff0000;">01:19:05.111</span>: IP_VFR: created frag state for sa:10.1.1.10, da:10.0.34.4, id:1...<br />
Mar 1 <span style="color:#ff0000;">01:19:05.111</span>: IP_VFR: dgrm incomplete, returning...<br />
Mar 1 <span style="color:#ff0000;">01:19:06.123</span>: IP_VFR: fragment (sa:10.1.1.10, da:10.0.34.4, id:2, offset:80, len:20) in fast path...<br />
Mar 1 <span style="color:#ff0000;">01:19:06.123</span>: IP_VFR: created frag state for sa:10.1.1.10, da:10.0.34.4, id:2...<br />
Mar 1 <span style="color:#ff0000;">01:19:06.123</span>: IP_VFR: dgrm incomplete, returning...<br />
Mar 1 <span style="color:#ff0000;">01:19:07.095</span>: IP_VFR: fragment (sa:10.1.1.10, da:10.0.34.4, id:3, offset:80, len:20) in fast path...<br />
Mar 1 <span style="color:#ff0000;">01:19:07.095</span>: IP_VFR: created frag state for sa:10.1.1.10, da:10.0.34.4, id:3...<br />
Mar 1 <span style="color:#ff0000;">01:19:07.095</span>: IP_VFR: dgrm incomplete, returning...<br />
Mar 1 <span style="color:#ff0000;">01:19:08.151</span>: IP_VFR: fragment (sa:10.1.1.10, da:10.0.34.4, id:4, offset:80, len:20) in fast path...<br />
Mar 1 <span style="color:#ff0000;">01:19:08.151</span>: %IP_VFR-4-FRAG_TABLE_OVERFLOW: Serial0/0: the fragment table has reached its maximum threshold 3<br />
Mar 1 <span style="color:#ff0000;">01:19:09.135</span>: IP_VFR: fragment (sa:10.1.1.10, da:10.0.34.4, id:5, offset:80, len:20) in fast path...<br />
Mar 1 <span style="color:#ff0000;">01:19:15.111</span>: IP VFR: frag state expired -src-addr:10.1.1.10, dst-addr:10.0.34.4, ip-id:1...<br />
Mar 1 <span style="color:#ff0000;">01:19:15.111</span>: IP_VFR: deleted frag state for sa:10.1.1.10, da:10.0.34.4, id:1<br />
Mar 1 <span style="color:#ff0000;">01:19:16.123</span>: IP VFR: frag state expired -src-addr:10.1.1.10, dst-addr:10.0.34.4, ip-id:2...<br />
Mar 1 <span style="color:#ff0000;">01:19:16.123</span>: IP_VFR: deleted frag state for sa:10.1.1.10, da:10.0.34.4, id:2<br />
Mar 1 <span style="color:#ff0000;">01:19:17.095</span>: IP VFR: frag state expired -src-addr:10.1.1.10, dst-addr:10.0.34.4, ip-id:3...<br />
Mar 1 <span style="color:#ff0000;">01:19:17.095</span>: IP_VFR: deleted frag state for sa:10.1.1.10, da:10.0.34.4, id:3<br />
</code></p>
<p>The first three fragments arrive and are stored in memory for reassembly.  When the fourth fragment arrives, the <strong>max-reassemblies</strong> threshold is exceeded and a log message is generated, and the fourth and fifth fragments are dropped.  After 10 seconds, the first three fragments are also dropped since they have not been fully reassembled yet. </p>
<p> </p>
<p>The <strong>max-fragments</strong> option controls the max amount of fragments allowed for a single datagram.  To test this out we will first disable VFR on R3 and send an ICMP echo to R4 that is split into 4 fragments.  The first fragment contains the 8-byte ICMP header and the remaining 3 fragments each contain 8 bytes of data.  First fragment:</p>
<p><img class="alignnone size-full wp-image-948" title="17-Colasoft-1" src="http://cisconinja.files.wordpress.com/2009/06/17-colasoft-1.png?w=548&#038;h=412" alt="17-Colasoft-1" width="548" height="412" /></p>
<p>Second fragment:</p>
<p><img class="alignnone size-full wp-image-949" title="17-Colasoft-2" src="http://cisconinja.files.wordpress.com/2009/06/17-colasoft-2.png?w=479&#038;h=360" alt="17-Colasoft-2" width="479" height="360" /></p>
<p>Third fragment:</p>
<p><img class="alignnone size-full wp-image-950" title="17-Colasoft-3" src="http://cisconinja.files.wordpress.com/2009/06/17-colasoft-3.png?w=479&#038;h=358" alt="17-Colasoft-3" width="479" height="358" /></p>
<p>Fourth fragment:</p>
<p><img class="alignnone size-full wp-image-951" title="17-Colasoft-4" src="http://cisconinja.files.wordpress.com/2009/06/17-colasoft-4.png?w=478&#038;h=358" alt="17-Colasoft-4" width="478" height="358" /></p>
<p>R4 reassembles the fragments and sends a 52-byte reply (20B IP header + 8B ICMP header + 24B of data):</p>
<p><code><span style="color:#0000ff;">R4#debug ip packet detail</span><br />
Mar 1 <span style="color:#ff0000;">01:43:28.883</span>: IP: tableid=0, s=10.1.1.10 (Serial0/0), d=10.0.34.4 (Serial0/0), routed via RIB<br />
Mar 1 <span style="color:#ff0000;">01:43:28.883</span>: IP: s=10.1.1.10 (Serial0/0), d=10.0.34.4 (Serial0/0), len 28, rcvd 3<br />
Mar 1 <span style="color:#ff0000;">01:43:28.883</span>: IP Fragment, Ident = 1, fragment offset = 0<br />
Mar 1 <span style="color:#ff0000;">01:43:28.887</span>: ICMP type=8, code=0<br />
Mar 1 <span style="color:#ff0000;">01:43:28.887</span>: IP: recv fragment from 10.1.1.10 offset 0 bytes<br />
Mar 1 <span style="color:#ff0000;">01:43:29.851</span>: IP: tableid=0, s=10.1.1.10 (Serial0/0), d=10.0.34.4 (Serial0/0), routed via RIB<br />
Mar 1 <span style="color:#ff0000;">01:43:29.851</span>: IP: s=10.1.1.10 (Serial0/0), d=10.0.34.4 (Serial0/0), len 28, rcvd 3<br />
Mar 1 <span style="color:#ff0000;">01:43:29.855</span>: IP Fragment, Ident = 1, fragment offset = 8<br />
Mar 1 <span style="color:#ff0000;">01:43:29.855</span>: IP: recv fragment from 10.1.1.10 offset 8 bytes<br />
Mar 1 <span style="color:#ff0000;">01:43:30.831</span>: IP: tableid=0, s=10.1.1.10 (Serial0/0), d=10.0.34.4 (Serial0/0), routed via RIB<br />
Mar 1 <span style="color:#ff0000;">01:43:30.835</span>: IP: s=10.1.1.10 (Serial0/0), d=10.0.34.4 (Serial0/0), len 28, rcvd 3<br />
Mar 1 <span style="color:#ff0000;">01:43:30.835</span>: IP Fragment, Ident = 1, fragment offset = 16<br />
Mar 1 <span style="color:#ff0000;">01:43:30.835</span>: IP: recv fragment from 10.1.1.10 offset 16 bytes<br />
Mar 1 <span style="color:#ff0000;">01:43:31.855</span>: IP: tableid=0, s=10.1.1.10 (Serial0/0), d=10.0.34.4 (Serial0/0), routed via RIB<br />
Mar 1 <span style="color:#ff0000;">01:43:31.855</span>: IP: s=10.1.1.10 (Serial0/0), d=10.0.34.4 (Serial0/0), len 28, rcvd 3<br />
Mar 1 <span style="color:#ff0000;">01:43:31.859</span>: IP Fragment, Ident = 1, fragment offset = 24<br />
Mar 1 <span style="color:#ff0000;">01:43:31.859</span>: IP: recv fragment from 10.1.1.10 offset 24 bytes<br />
Mar 1 <span style="color:#ff0000;">01:43:31.859</span>: IP: tableid=0, s=10.0.34.4 (local), d=10.1.1.10 (Serial0/0), routed via FIB<br />
Mar 1 <span style="color:#ff0000;">01:43:31.859</span>: IP: s=10.0.34.4 (local), d=10.1.1.10 (Serial0/0), len 52, sending<br />
Mar 1 <span style="color:#ff0000;">01:43:31.863</span>: ICMP type=0, code=0<br />
</code></p>
<p>Let&#8217;s try it again with VFR configured on R3 for a max of 2 fragments per datagram:</p>
<p><code><span style="color:#0000ff;">R3:<br />
interface Serial0/0<br />
 ip virtual-reassembly max-fragments 2 timeout 10</span><br />
</code></p>
<p><code><span style="color:#0000ff;">R3#debug ip virtual-reassembly<br />
</span>Mar 1 <span style="color:#ff0000;">01:45:18.091</span>: IP_VFR: fragment (sa:10.1.1.10, da:10.0.34.4, id:1, offset:0, len:8) in fast path...<br />
Mar 1 <span style="color:#ff0000;">01:45:18.091</span>: IP_VFR: created frag state for sa:10.1.1.10, da:10.0.34.4, id:1...<br />
Mar 1 <span style="color:#ff0000;">01:45:18.091</span>: IP_VFR: pak incomplete cpak-offset:0, cpak-len:8, flag: 1<br />
Mar 1 <span style="color:#ff0000;">01:45:18.091</span>: IP_VFR: dgrm incomplete, returning...<br />
Mar 1 <span style="color:#ff0000;">01:45:19.055</span>: IP_VFR: fragment (sa:10.1.1.10, da:10.0.34.4, id:1, offset:8, len:8) in fast path...<br />
Mar 1 <span style="color:#ff0000;">01:45:19.055</span>: IP_VFR: cpak-offset:0, cpak-len:8, npak-offset:8<br />
Mar 1 <span style="color:#ff0000;">01:45:19.059</span>: IP_VFR: pak incomplete cpak-offset:8, cpak-len:8, flag: 1<br />
Mar 1 <span style="color:#ff0000;">01:45:19.059</span>: IP_VFR: dgrm incomplete, returning...<br />
Mar 1 <span style="color:#ff0000;">01:45:20.087</span>: IP_VFR: fragment (sa:10.1.1.10, da:10.0.34.4, id:1, offset:16, len:8) in fast path...<br />
Mar 1 <span style="color:#ff0000;">01:45:20.087</span>: %IP_VFR-4-TOO_MANY_FRAGMENTS: Serial0/0: Too many fragments per datagram (more than 2) - sent by 10.1.1.10, destined to 10.0.34.4<br />
Mar 1 <span style="color:#ff0000;">01:45:20.087</span>: IP_VFR: deleted frag state for sa:10.1.1.10, da:10.0.34.4, id:1<br />
Mar 1 <span style="color:#ff0000;">01:45:21.087</span>: IP_VFR: fragment (sa:10.1.1.10, da:10.0.34.4, id:1, offset:24, len:8) in fast path...<br />
Mar 1 <span style="color:#ff0000;">01:45:21.091</span>: IP_VFR: created frag state for sa:10.1.1.10, da:10.0.34.4, id:1...<br />
Mar 1 <span style="color:#ff0000;">01:45:21.091</span>: IP_VFR: dgrm incomplete, returning...<br />
Mar 1 <span style="color:#ff0000;">01:45:31.091</span>: IP VFR: frag state expired -src-addr:10.1.1.10, dst-addr:10.0.34.4, ip-id:1...<br />
Mar 1 <span style="color:#ff0000;">01:45:31.091</span>: IP_VFR: deleted frag state for sa:10.1.1.10, da:10.0.34.4, id:1<br />
</code></p>
<p>When the third fragment is received, R3 drops all three fragments and generates a log message that too many fragments were received for the datagram.  The fourth fragment arrives a second later and R3 creates a new entry for it.  Since the first three fragments were already dropped and the datagram cannot be reassembled, the fourth fragment ends up getting dropped 10 seconds later when the timeout expires.</p>
<p> </p>
<p>Finally, VFR can also be configured to drop all incoming fragments on an interface whether or not they are part of a valid datagram with the <strong>drop-fragments</strong> option.  The same 4 fragments are sent again 1 second apart:</p>
<p><code><span style="color:#0000ff;">R3:<br />
interface Serial0/0<br />
 ip virtual-reassembly drop-fragments</span><br />
</code></p>
<p><code><span style="color:#0000ff;">R3#debug ip virtual-reassembly</span><br />
Mar 1 <span style="color:#ff0000;">01:55:49.911</span>: IP_VFR: in drop mode<br />
Mar 1 <span style="color:#ff0000;">01:55:50.887</span>: IP_VFR: in drop mode<br />
Mar 1 <span style="color:#ff0000;">01:55:51.919</span>: IP_VFR: in drop mode<br />
Mar 1 <span style="color:#ff0000;">01:55:52.883</span>: IP_VFR: in drop mode<br />
</code></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cisconinja.wordpress.com/914/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cisconinja.wordpress.com/914/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cisconinja.wordpress.com/914/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cisconinja.wordpress.com/914/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/cisconinja.wordpress.com/914/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/cisconinja.wordpress.com/914/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/cisconinja.wordpress.com/914/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/cisconinja.wordpress.com/914/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cisconinja.wordpress.com/914/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cisconinja.wordpress.com/914/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cisconinja.wordpress.com/914/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cisconinja.wordpress.com/914/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cisconinja.wordpress.com/914/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cisconinja.wordpress.com/914/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cisconinja.wordpress.com&amp;blog=5591147&amp;post=914&amp;subd=cisconinja&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://cisconinja.wordpress.com/2009/06/14/virtual-fragmentation-reassembly/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">cisconinja</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/06/vfr-topology2.png" medium="image">
			<media:title type="html">VFR Topology2</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/06/3-wireshark.png" medium="image">
			<media:title type="html">3-Wireshark</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/06/4-wireshark.png" medium="image">
			<media:title type="html">4-Wireshark</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/06/2-wireshark.png" medium="image">
			<media:title type="html">2-Wireshark</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/06/5-wireshark.png" medium="image">
			<media:title type="html">5-Wireshark</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/06/6-wireshark.png" medium="image">
			<media:title type="html">6-Wireshark</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/06/8-wireshark.png" medium="image">
			<media:title type="html">8-Wireshark</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/06/7-r3-show-ip-inspect.png" medium="image">
			<media:title type="html">7-R3-Show-IP-Inspect</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/06/9-wireshark.png" medium="image">
			<media:title type="html">9-Wireshark</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/06/11-wireshark1.png" medium="image">
			<media:title type="html">11-Wireshark</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/06/10-wireshark.png" medium="image">
			<media:title type="html">10-Wireshark</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/06/12-r3-zbfw.png" medium="image">
			<media:title type="html">12-R3-ZBFW</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/06/14-wireshark-r3-s1.png" medium="image">
			<media:title type="html">14-Wireshark-R3-S1</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/06/14-wireshark-r3-s0.png" medium="image">
			<media:title type="html">14-Wireshark-R3-S0</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/06/15-colasoft-1.png" medium="image">
			<media:title type="html">15-Colasoft-1</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/06/15-colasoft-2.png" medium="image">
			<media:title type="html">15-Colasoft-2</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/06/16-colasoft-1.png" medium="image">
			<media:title type="html">16-Colasoft-1</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/06/16-colasoft-2.png" medium="image">
			<media:title type="html">16-Colasoft-2</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/06/17-colasoft-1.png" medium="image">
			<media:title type="html">17-Colasoft-1</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/06/17-colasoft-2.png" medium="image">
			<media:title type="html">17-Colasoft-2</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/06/17-colasoft-3.png" medium="image">
			<media:title type="html">17-Colasoft-3</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/06/17-colasoft-4.png" medium="image">
			<media:title type="html">17-Colasoft-4</media:title>
		</media:content>
	</item>
		<item>
		<title>Policy Based Routing &#8216;set&#8217; Commands</title>
		<link>http://cisconinja.wordpress.com/2009/05/29/policy-based-routing-set-commands/</link>
		<comments>http://cisconinja.wordpress.com/2009/05/29/policy-based-routing-set-commands/#comments</comments>
		<pubDate>Fri, 29 May 2009 05:17:18 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
				<category><![CDATA[PBR]]></category>

		<guid isPermaLink="false">http://cisconinja.wordpress.com/?p=887</guid>
		<description><![CDATA[Here we will look at the various set commands that can be used in PBR and some of the differences between them.  The topology and configurations for this example are shown below: R1: interface Loopback1  ip address 1.1.1.1 255.255.255.255 ! interface Loopback2  ip address 1.1.1.2 255.255.255.255 ! interface Serial0/0  ip address 10.0.12.1 255.255.255.0 ! ip route [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cisconinja.wordpress.com&amp;blog=5591147&amp;post=887&amp;subd=cisconinja&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Here we will look at the various set commands that can be used in PBR and some of the differences between them.  The topology and configurations for this example are shown below:</p>
<p><img class="alignnone size-full wp-image-889" title="PBR topology2" src="http://cisconinja.files.wordpress.com/2009/05/pbr-topology21.png?w=511&#038;h=409" alt="PBR topology2" width="511" height="409" /></p>
<p><code><span style="color:#0000ff;">R1:<br />
interface Loopback1<br />
 ip address 1.1.1.1 255.255.255.255<br />
!<br />
interface Loopback2<br />
 ip address 1.1.1.2 255.255.255.255<br />
!<br />
interface Serial0/0<br />
 ip address 10.0.12.1 255.255.255.0<br />
!<br />
ip route 0.0.0.0 0.0.0.0 10.0.12.2</span><br />
</code></p>
<p><code><span style="color:#0000ff;">R2:<br />
no ip cef<br />
!<br />
interface FastEthernet0/0<br />
 ip address 10.0.234.2 255.255.255.0<br />
 no ip route-cache<br />
!<br />
interface Serial0/0<br />
 encapsulation frame-relay<br />
 no ip route-cache<br />
!<br />
interface Serial0/0.1 point-to-point<br />
 ip address 10.1.23.2 255.255.255.0<br />
 no ip route-cache<br />
 frame-relay interface-dlci 101<br />
!<br />
interface Serial0/0.2 point-to-point<br />
 ip address 10.2.23.2 255.255.255.0<br />
 no ip route-cache<br />
 frame-relay interface-dlci 102<br />
!<br />
interface Serial0/0.3 point-to-point<br />
 ip address 10.3.23.2 255.255.255.0<br />
 no ip route-cache<br />
 frame-relay interface-dlci 103<br />
!<br />
interface Serial0/0.4 point-to-point<br />
 ip address 10.4.23.2 255.255.255.0<br />
 no ip route-cache<br />
 frame-relay interface-dlci 104<br />
!<br />
interface Serial0/0.5 point-to-point<br />
 ip address 10.5.23.2 255.255.255.0<br />
 no ip route-cache<br />
 frame-relay interface-dlci 105<br />
!<br />
interface Serial0/0.6 point-to-point<br />
ip address 10.6.23.2 255.255.255.0<br />
no ip route-cache<br />
frame-relay interface-dlci 106<br />
!<br />
interface Serial0/0.7 point-to-point<br />
ip address 10.7.23.2 255.255.255.0<br />
no ip route-cache<br />
frame-relay interface-dlci 107<br />
!<br />
interface Serial0/1<br />
 ip address 10.0.12.2 255.255.255.0<br />
 no ip route-cache</span><br />
<span style="color:#0000ff;">!<br />
ip route 1.1.1.0 255.255.255.0 10.0.12.1</span><br />
</code></p>
<p><code><span style="color:#0000ff;">R3:<br />
interface FastEthernet0/0<br />
 ip address 10.0.234.3 255.255.255.0<br />
!<br />
interface Serial0/0<br />
 encapsulation frame-relay<br />
!<br />
interface Serial0/0.1 point-to-point<br />
 ip address 10.1.23.3 255.255.255.0<br />
 frame-relay interface-dlci 101<br />
!<br />
interface Serial0/0.2 point-to-point<br />
 ip address 10.2.23.3 255.255.255.0<br />
 frame-relay interface-dlci 102<br />
!<br />
interface Serial0/0.3 point-to-point<br />
 ip address 10.3.23.3 255.255.255.0<br />
 frame-relay interface-dlci 103<br />
!<br />
interface Serial0/0.4 point-to-point<br />
 ip address 10.4.23.3 255.255.255.0<br />
 frame-relay interface-dlci 104<br />
!<br />
interface Serial0/0.5 point-to-point<br />
 ip address 10.5.23.3 255.255.255.0<br />
 frame-relay interface-dlci 105<br />
!<br />
interface Serial0/0.6 point-to-point<br />
ip address 10.6.23.3 255.255.255.0<br />
frame-relay interface-dlci 106<br />
!<br />
interface Serial0/0.7 point-to-point<br />
ip address 10.7.23.3 255.255.255.0<br />
frame-relay interface-dlci 107<br />
!<br />
interface FastEthernet0/1<br />
 ip address 10.0.34.3 255.255.255.0<br />
!<br />
ip route 0.0.0.0 0.0.0.0 10.0.234.2<br />
</span></code></p>
<p><code><span style="color:#0000ff;">R4:<br />
interface FastEthernet0/0<br />
 ip address 10.0.234.4 255.255.255.0<br />
!<br />
interface FastEthernet0/1<br />
 ip address 10.0.34.4 255.255.255.0<br />
!<br />
ip route 0.0.0.0 0.0.0.0 10.0.234.2</span><br />
</code></p>
<p>R2 will policy route packets received from R1.  CEF and fast switching have been disabled on R2 so that all packets can be seen in debug output.  First we will configure PBR on R2 to route traffic sourced from R1 loopback#1 out F0/0 to R3 using <strong>set ip next-hop</strong>:</p>
<p><code><span style="color:#0000ff;">R2:<br />
access-list 1 permit 1.1.1.1<br />
!<br />
route-map pbr permit 10<br />
 match ip address 1<br />
 set ip next-hop 10.0.234.3<br />
!<br />
interface Serial0/1<br />
 ip policy route-map pbr<br />
</span></code></p>
<p><code><span style="color:#0000ff;">R1#ping 10.0.34.3 repeat 1 source loopback1<br />
</span><br />
</code></p>
<p><code><span style="color:#0000ff;">R2#debug ip policy<br />
R2#debug ip packet</span><br />
Mar 1 <span style="color:#ff0000;">00:31:18.031</span>: IP: s=1.1.1.1 (Serial0/1), d=10.0.34.3, len 100, policy match<br />
Mar 1 <span style="color:#ff0000;">00:31:18.031</span>: IP: route map pbr, item 10, permit<br />
Mar 1 <span style="color:#ff0000;">00:31:18.035</span>: IP: s=1.1.1.1 (Serial0/1), d=10.0.34.3 (FastEthernet0/0), len 100, policy routed<br />
Mar 1 <span style="color:#ff0000;">00:31:18.035</span>: IP: Serial0/1 to FastEthernet0/0 10.0.234.3<br />
Mar 1 <span style="color:#ff0000;">00:31:18.035</span>: IP: s=1.1.1.1 (Serial0/1), d=10.0.34.3 (FastEthernet0/0), g=10.0.234.3, len 100, forward<br />
</code></p>
<p>The packet is forwarded as expected using the next-hop address in the route-map.  Next let&#8217;s configure R2 to route packets from R1 loopback#2 out F0/0 to R3 using <strong>set ip default next-hop</strong>:</p>
<p><code><span style="color:#0000ff;">R2:<br />
access-list 2 permit 1.1.1.2<br />
!<br />
route-map pbr permit 20<br />
 match ip address 2<br />
 set ip default next-hop 10.0.234.3</span><br />
</code></p>
<p><code><span style="color:#0000ff;">R1#ping 10.0.34.3 repeat 1 source loopback2</span><br />
</code></p>
<p><code><span style="color:#0000ff;">R2#debug ip policy<br />
R2#debug ip packet<br />
</span>Mar 1 <span style="color:#ff0000;">00:36:03.479</span>: IP: s=1.1.1.2 (Serial0/1), d=10.0.34.3, len 100, policy match<br />
Mar 1 <span style="color:#ff0000;">00:36:03.479</span>: IP: route map pbr, item 20, permit<br />
Mar 1 <span style="color:#ff0000;">00:36:03.483</span>: IP: s=1.1.1.2 (Serial0/1), d=10.0.34.3 (FastEthernet0/0), len 100, policy routed<br />
Mar 1 <span style="color:#ff0000;">00:36:03.483</span>: IP: Serial0/1 to FastEthernet0/0 10.0.234.3<br />
Mar 1 <span style="color:#ff0000;">00:36:03.483</span>: IP: s=1.1.1.2 (Serial0/1), d=10.0.34.3 (FastEthernet0/0), g=10.0.234.3, len 100, forward</code></p>
<p>So far the results of each look the same.  The difference between adding the <strong>default </strong>keyword is the order of operations that is used.  Without<strong> default</strong>, the router first attempts to route using PBR.  If there is no match or a match on a deny statement the router then uses the normal forwarding process.  With the <strong>default</strong> keyword, the router instead attempts to use the routing table first and if no route can be found then tries PBR.  Let&#8217;s add a static route to 10.0.34.0/24 to demonstrate this:</p>
<p><code><span style="color:#0000ff;">R2:<br />
ip route 10.0.34.0 255.255.255.0 Serial0/0.1</span><br />
</code></p>
<p><code><span style="color:#0000ff;">R1#ping 10.0.34.3 repeat 1 source loopback1</span><br />
</code></p>
<p><code><span style="color:#0000ff;">R2#debug ip policy<br />
R2#debug ip packet<br />
</span>Mar 1 <span style="color:#ff0000;">00:48:56.915</span>: IP: tableid=0, s=1.1.1.1 (Serial0/1), d=10.0.34.3 (Serial0/0.1), routed via RIB<br />
Mar 1 <span style="color:#ff0000;">00:48:56.915</span>: IP: s=1.1.1.1 (Serial0/1), d=10.0.34.3, len 100, policy match<br />
Mar 1 <span style="color:#ff0000;">00:48:56.915</span>: IP: route map pbr, item 10, permit<br />
Mar 1 <span style="color:#ff0000;">00:48:56.915</span>: IP: s=1.1.1.1 (Serial0/1), d=10.0.34.3 (FastEthernet0/0), len 100, policy routed<br />
Mar 1 <span style="color:#ff0000;">00:48:56.919</span>: IP: Serial0/1 to FastEthernet0/0 10.0.234.3<br />
Mar 1 <span style="color:#ff0000;">00:48:56.919</span>: IP: s=1.1.1.1 (Serial0/1), d=10.0.34.3 (FastEthernet0/0), g=10.0.234.3, len 100, forward<br />
</code></p>
<p><code><span style="color:#0000ff;">R1#ping 10.0.34.3 repeat 1 source loopback2</span></code></p>
<p><code><span style="color:#0000ff;">R2#debug ip policy<br />
R2#debug ip packet</span><br />
Mar 1 <span style="color:#ff0000;">00:49:08.239</span>: IP: tableid=0, s=1.1.1.2 (Serial0/1), d=10.0.34.3 (Serial0/0.1), routed via RIB<br />
Mar 1 <span style="color:#ff0000;">00:49:08.239</span>: IP: s=1.1.1.2 (Serial0/1), d=10.0.34.3, len 100, policy match<br />
Mar 1 <span style="color:#ff0000;">00:49:08.239</span>: IP: route map pbr, item 20, permit<br />
Mar 1 <span style="color:#ff0000;">00:49:08.243</span>: IP: s=1.1.1.2 (Serial0/1), d=10.0.34.3 (Serial0/0.1), len 100, policy rejected -- normal forwarding<br />
Mar 1 <span style="color:#ff0000;">00:49:08.243</span>: IP: s=1.1.1.2 (Serial0/1), d=10.0.34.3 (Serial0/0.1), g=10.0.34.3, len 100, forward<br />
</code></p>
<p>R2 now forwards traffic from R1 loopback #2 out S0/0.1 as specified by the routing table instead of using PBR.  Traffic from R1 loopback #1 continues to be sent out F0/0.</p>
<p> </p>
<p>Next we will change the route-map statements to use an interface rather than a next-hop address.  The <strong>default</strong> keyword can also be used when setting an interface, and it has the same effect that we just saw of changing the order of operation.  Traffic from R1 loopback #1 will use <strong>set interface</strong> and traffic from R1 loopback #2 will use <strong>set default interface</strong>.  We will use F0/0 as the exit interface to demonstrate the problems that can occur when using a multiaccess network in a <strong>set interface</strong> statement.  We will also remove the static route to 10.0.34.0/24 that we created previously:</p>
<p><code><span style="color:#0000ff;">R2:<br />
route-map pbr permit 10<br />
 no set ip next-hop 10.0.234.3<br />
 set interface FastEthernet0/0<br />
!<br />
route-map pbr permit 20<br />
 no set ip default next-hop 10.0.234.3<br />
 set default interface FastEthernet0/0<br />
!<br />
no ip route 10.0.34.0 255.255.255.0 Serial0/0.1<br />
</span><br />
</code></p>
<p><code><span style="color:#0000ff;">R1#ping 10.0.34.3 repeat 1 source loopback1</span><br />
</code></p>
<p><code><span style="color:#0000ff;">R2#debug ip policy<br />
R2#debug ip packet</span><br />
Mar 1 <span style="color:#ff0000;">00:56:06.603</span>: IP: s=1.1.1.1 (Serial0/1), d=10.0.34.3, len 100, policy match<br />
Mar 1 <span style="color:#ff0000;">00:56:06.603</span>: IP: route map pbr, item 10, permit<br />
Mar 1 <span style="color:#ff0000;">00:56:06.603</span>: IP: s=1.1.1.1 (Serial0/1), d=10.0.34.3, len 100, policy rejected -- normal forwarding<br />
Mar 1 <span style="color:#ff0000;">00:56:06.607</span>: IP: s=1.1.1.1 (Serial0/1), d=10.0.34.3, len 100, unroutable<br />
</code></p>
<p><code><span style="color:#0000ff;">R1#ping 10.0.34.3 repeat 1 source loopback2<br />
</span></code></p>
<p><code><span style="color:#0000ff;">R2#debug ip policy<br />
R2#debug ip packet</span><br />
Mar 1 <span style="color:#ff0000;">00:56:10.923</span>: IP: s=1.1.1.2 (Serial0/1), d=10.0.34.3, len 100, policy match<br />
Mar 1 <span style="color:#ff0000;">00:56:10.923</span>: IP: route map pbr, item 20, permit<br />
Mar 1 <span style="color:#ff0000;">00:56:10.923</span>: IP: s=1.1.1.2 (Serial0/1), d=10.0.34.3 (FastEthernet0/0), len 100, policy routed<br />
Mar 1 <span style="color:#ff0000;">00:56:10.927</span>: IP: Serial0/1 to FastEthernet0/0 10.0.34.3<br />
Mar 1 <span style="color:#ff0000;">00:56:10.927</span>: IP: s=1.1.1.2 (Serial0/1), d=10.0.34.3 (FastEthernet0/0), g=10.0.34.3, len 100, forward<br />
Mar 1 <span style="color:#ff0000;">00:56:10.931</span>: IP: s=1.1.1.2 (Serial0/1), d=10.0.34.3 (FastEthernet0/0), len 100, encapsulation failed<br />
</code></p>
<p>Both pings fail.  Interestingly, each fails for a different reason and gives a different ping response output.  The ping from loopback #1 (using <strong>set interface</strong>) attempts to use PBR first.  Finding no L2 address to use for 10.0.34.3 on F0/0, PBR rejects the packet and attempts to use normal forwarding.  No matching route exists so the packet is dropped and an ICMP unreachable is sent to R1.  The ping from loopback #2 (using <strong>set default interface</strong>) attempts to use the route table first.  No route to the destination exists so R2 next tries PBR.  PBR does not know what L2 address to use for 10.0.34.3 on F0/0 so it generates an &#8216;encapsulation failed&#8217; message and simply drops the packet with no notification to R1.  Let&#8217;s put a static route back on R2 using an outgoing interface of F0/0 in the static route:</p>
<p><code><span style="color:#0000ff;">R2:<br />
ip route 10.0.34.0 255.255.255.0 FastEthernet0/0</span><br />
</code></p>
<p><code><span style="color:#0000ff;">R1#ping 10.0.34.3 repeat 1 source loopback1</span></code></p>
<p><code><span style="color:#0000ff;">R2#debug ip policy<br />
R2#debug ip packet</span><br />
Mar 1 <span style="color:#ff0000;">01:14:02.179</span>: IP: tableid=0, s=1.1.1.1 (Serial0/1), d=10.0.34.3 (FastEthernet0/0), routed via RIB<br />
Mar 1 <span style="color:#ff0000;">01:14:02.179</span>: IP: s=1.1.1.1 (Serial0/1), d=10.0.34.3, len 100, policy match<br />
Mar 1 <span style="color:#ff0000;">01:14:02.183</span>: IP: route map pbr, item 10, permit<br />
Mar 1 <span style="color:#ff0000;">01:14:02.183</span>: IP: s=1.1.1.1 (Serial0/1), d=10.0.34.3 (FastEthernet0/0), len 100, policy routed<br />
Mar 1 <span style="color:#ff0000;">01:14:02.183</span>: IP: Serial0/1 to FastEthernet0/0 10.0.34.3<br />
Mar 1 <span style="color:#ff0000;">01:14:02.187</span>: IP: s=1.1.1.1 (Serial0/1), d=10.0.34.3 (FastEthernet0/0), g=10.0.34.3, len 100, forward<br />
Mar 1 <span style="color:#ff0000;">01:14:02.191</span>: IP: s=1.1.1.1 (Serial0/1), d=10.0.34.3 (FastEthernet0/0), len 100, encapsulation failed<br />
</code></p>
<p><code><span style="color:#0000ff;">R1#ping 10.0.34.3 repeat 1 source loopback1</span></code></p>
<p><code><span style="color:#0000ff;">R2#debug ip policy<br />
R2#debug ip packet</span><br />
Mar 1 <span style="color:#ff0000;">01:14:21.887</span>: IP: tableid=0, s=1.1.1.1 (Serial0/1), d=10.0.34.3 (FastEthernet0/0), routed via RIB<br />
Mar 1 <span style="color:#ff0000;">01:14:21.887</span>: IP: s=1.1.1.1 (Serial0/1), d=10.0.34.3, len 100, policy match<br />
Mar 1 <span style="color:#ff0000;">01:14:21.891</span>: IP: route map pbr, item 10, permit<br />
Mar 1 <span style="color:#ff0000;">01:14:21.891</span>: IP: s=1.1.1.1 (Serial0/1), d=10.0.34.3 (FastEthernet0/0), len 100, policy routed<br />
Mar 1 <span style="color:#ff0000;">01:14:21.891</span>: IP: Serial0/1 to FastEthernet0/0 10.0.34.3<br />
Mar 1 <span style="color:#ff0000;">01:14:21.891</span>: IP: s=1.1.1.1 (Serial0/1), d=10.0.34.3 (FastEthernet0/0), g=10.0.34.3, len 100, forward<br />
</code></p>
<p>The first ping from loopback #1 fails again.  This time, however, when the normal forwarding process finds a match for the static route with an outgoing interface of F0/0, it sends an ARP for 10.0.34.3 which is answered with proxy ARP by R3.  The next ping is policy routed using the ARP cache entry.  This combined with the behavior that we saw when no route existed in the routing table shows that PBR does not even attempt to perform address resolution by itself on a multiaccess network, but if the L2 address is known (either from normal forwarding or a static entry), PBR will make use of it and successfully route the packet.</p>
<p> </p>
<p>Both <strong>set ip next-hop </strong>and <strong>set ip default next-hop</strong> require that the next-hop be found on a directly connected subnet (PBR will fail if it is not and the next <strong>set</strong> statement or normal forwarding will be used).  With <strong>set ip next-hop recursive</strong>, the next-hop address does not need to be directly connected.  Instead a recursive lookup is performed (if necessary) on the next-hop address, and matching traffic is forwarded to the next-hop(s) used by that route entry according to the switching path in use on the router.  A benefit of this is that load balancing can be used.  Since we are using process switching, load balancing will take place per packet.  We will create a loopback on R3 and multiple static routes to it on R2.  We will then set the recursive next-hop address to R3&#8242;s loopback.  The static route left over from before will also be removed:</p>
<p><code><span style="color:#0000ff;">R3:<br />
interface Loopback3<br />
 ip address 3.3.3.3 255.255.255.0</span><br />
</code></p>
<p><code><span style="color:#0000ff;">R2:<br />
no ip route 10.0.34.0 255.255.255.0 FastEthernet0/0<br />
ip route 3.3.3.0 255.255.255.0 10.1.23.3<br />
ip route 3.3.3.0 255.255.255.0 10.2.23.3<br />
ip route 3.3.3.0 255.255.255.0 10.3.23.3<br />
!<br />
route-map pbr permit 10<br />
 no set interface FastEthernet0/0<br />
 set ip next-hop recursive 3.3.3.3</span><br />
</code></p>
<p><img class="alignnone size-full wp-image-891" title="1-R2-Route-Table" src="http://cisconinja.files.wordpress.com/2009/05/1-r2-route-table4.png?w=458&#038;h=222" alt="1-R2-Route-Table" width="458" height="222" /></p>
<p style="padding-left:30px;"><em>Note: Using a recursive lookup with PBR to send traffic to a route entry does not count as a &#8220;turn&#8221; for that path in the load-balancing equation if the destination address is outside the range of the route.  If no traffic is ever sent to the actual destination of the route, all PBR traffic will be sent to the path that is next in line, and no load-balancing will occur.  Therefore to demonstrate load-balancing, a packet is sent to 3.3.3.3 in between each packet from R1 loopback #1.</em></p>
<p><code><span style="color:#0000ff;">R1#ping 10.0.34.3 repeat 1 source loopback1<br />
R1#ping 3.3.3.3 repeat 1 source s0/0<br />
R1#ping 10.0.34.3 repeat 1 source loopback1<br />
R1#ping 3.3.3.3 repeat 1 source s0/0<br />
R1#ping 10.0.34.3 repeat 1 source loopback1<br />
R1#ping 3.3.3.3 repeat 1 source s0/0<br />
R1#ping 10.0.34.3 repeat 1 source loopback1</span><br />
</code></p>
<p><code><span style="color:#0000ff;">R2#debug ip policy<br />
R2#debug ip packet<br />
</span>Mar 1 <span style="color:#ff0000;">01:46:47.595</span>: IP: s=1.1.1.1 (Serial0/1), d=10.0.34.3, len 100, policy match<br />
Mar 1 <span style="color:#ff0000;">01:46:47.595</span>: IP: route map pbr, item 10, permit<br />
Mar 1 <span style="color:#ff0000;">01:46:47.599</span>: IP: s=1.1.1.1 (Serial0/1), d=10.0.34.3 (Serial0/0.3), len 100, policy routed<br />
Mar 1 <span style="color:#ff0000;">01:46:47.599</span>: IP: Serial0/1 to Serial0/0.3 10.3.23.3<br />
Mar 1 <span style="color:#ff0000;">01:46:47.599</span>: IP: s=1.1.1.1 (Serial0/1), d=10.0.34.3 (Serial0/0.3), g=10.3.23.3, len 100, forward</code></p>
<p> </p>
<p><code>Mar 1 <span style="color:#ff0000;">01:47:06.951</span>: IP: tableid=0, s=10.0.12.1 (Serial0/1), d=3.3.3.3 (Serial0/0.3), routed via RIB<br />
Mar 1 <span style="color:#ff0000;">01:47:06.955</span>: IP: s=10.0.12.1 (Serial0/1), d=3.3.3.3 (Serial0/0.3), len 100, policy rejected -- normal forwarding<br />
Mar 1 <span style="color:#ff0000;">01:47:06.955</span>: IP: s=10.0.12.1 (Serial0/1), d=3.3.3.3 (Serial0/0.3), g=10.3.23.3, len 100, forward</code></p>
<p> </p>
<p><code>Mar 1 <span style="color:#ff0000;">01:47:11.951</span>: IP: s=1.1.1.1 (Serial0/1), d=10.0.34.3, len 100, policy match<br />
Mar 1 <span style="color:#ff0000;">01:47:11.951</span>: IP: route map pbr, item 10, permit<br />
Mar 1 <span style="color:#ff0000;">01:47:11.955</span>: IP: s=1.1.1.1 (Serial0/1), d=10.0.34.3 (Serial0/0.2), len 100, policy routed<br />
Mar 1 <span style="color:#ff0000;">01:47:11.955</span>: IP: Serial0/1 to Serial0/0.2 10.2.23.3<br />
Mar 1 <span style="color:#ff0000;">01:47:11.955</span>: IP: s=1.1.1.1 (Serial0/1), d=10.0.34.3 (Serial0/0.2), g=10.2.23.3, len 100, forward</code></p>
<p> </p>
<p><code>Mar 1 <span style="color:#ff0000;">01:47:15.055</span>: IP: tableid=0, s=10.0.12.1 (Serial0/1), d=3.3.3.3 (Serial0/0.2), routed via RIB<br />
Mar 1 <span style="color:#ff0000;">01:47:15.055</span>: IP: s=10.0.12.1 (Serial0/1), d=3.3.3.3 (Serial0/0.2), len 100, policy rejected -- normal forwarding<br />
Mar 1 <span style="color:#ff0000;">01:47:15.055</span>: IP: s=10.0.12.1 (Serial0/1), d=3.3.3.3 (Serial0/0.2), g=10.2.23.3, len 100, forward</code></p>
<p> </p>
<p><code>Mar 1 <span style="color:#ff0000;">01:47:17.439</span>: IP: s=1.1.1.1 (Serial0/1), d=10.0.34.3, len 100, policy match<br />
Mar 1 <span style="color:#ff0000;">01:47:17.439</span>: IP: route map pbr, item 10, permit<br />
Mar 1 <span style="color:#ff0000;">01:47:17.439</span>: IP: s=1.1.1.1 (Serial0/1), d=10.0.34.3 (Serial0/0.1), len 100, policy routed<br />
Mar 1 <span style="color:#ff0000;">01:47:17.439</span>: IP: Serial0/1 to Serial0/0.1 10.1.23.3<br />
Mar 1 <span style="color:#ff0000;">01:47:17.443</span>: IP: s=1.1.1.1 (Serial0/1), d=10.0.34.3 (Serial0/0.1), g=10.1.23.3, len 100, forward</code></p>
<p> </p>
<p><code>Mar 1 <span style="color:#ff0000;">01:47:22.635</span>: IP: tableid=0, s=10.0.12.1 (Serial0/1), d=3.3.3.3 (Serial0/0.1), routed via RIB<br />
Mar 1 <span style="color:#ff0000;">01:47:22.635</span>: IP: s=10.0.12.1 (Serial0/1), d=3.3.3.3 (Serial0/0.1), len 100, policy rejected -- normal forwarding<br />
Mar 1 <span style="color:#ff0000;">01:47:22.639</span>: IP: s=10.0.12.1 (Serial0/1), d=3.3.3.3 (Serial0/0.1), g=10.1.23.3, len 100, forward</code></p>
<p> </p>
<p><code>Mar 1 <span style="color:#ff0000;">01:47:24.615</span>: IP: s=1.1.1.1 (Serial0/1), d=10.0.34.3, len 100, policy match<br />
Mar 1 <span style="color:#ff0000;">01:47:24.615</span>: IP: route map pbr, item 10, permit<br />
Mar 1 <span style="color:#ff0000;">01:47:24.615</span>: IP: s=1.1.1.1 (Serial0/1), d=10.0.34.3 (Serial0/0.3), len 100, policy routed<br />
Mar 1 <span style="color:#ff0000;">01:47:24.619</span>: IP: Serial0/1 to Serial0/0.3 10.3.23.3<br />
Mar 1 <span style="color:#ff0000;">01:47:24.619</span>: IP: s=1.1.1.1 (Serial0/1), d=10.0.34.3 (Serial0/0.3), g=10.3.23.3, len 100, forward</code></p>
<p> </p>
<p> </p>
<p>Each of the <strong>set</strong> commands that we have looked at so far with the exception of <strong>set ip next-hop recursive</strong> allow multiple interfaces or next-hop addresses to be listed in a single set statement.  If the 1st interface (or interface associated with the next-hop address, if a next-hop is used) is down or L2 address is unknown, the rest of the interfaces/addresses in the list are tried in order.  Let&#8217;s look at an example using <strong>set interface</strong>.  We will have R2 attempt to route traffic from R1 loopback #1 out S0/0.1, then F0/0, then S0/0.2.  All previous static routes and <strong>set</strong> commands have also been removed:</p>
<p><code><span style="color:#0000ff;">R2:<br />
route-map pbr permit 10<br />
 set interface Serial0/0.1 FastEthernet0/0 Serial0/0.2</span><br />
</code></p>
<p><code><span style="color:#0000ff;">R1#ping 10.0.34.3 repeat 1 source loopback1</span></code></p>
<p><code><span style="color:#0000ff;">R2#debug ip policy<br />
R2#debug ip packet</span><br />
Mar 1 <span style="color:#ff0000;">02:28:19.723</span>: IP: s=1.1.1.1 (Serial0/1), d=10.0.34.3, len 100, policy match<br />
Mar 1 <span style="color:#ff0000;">02:28:19.723</span>: IP: route map pbr, item 10, permit<br />
Mar 1 <span style="color:#ff0000;">02:28:19.727</span>: IP: s=1.1.1.1 (Serial0/1), d=10.0.34.3 (Serial0/0.1), len 100, policy routed<br />
Mar 1 <span style="color:#ff0000;">02:28:19.727</span>: IP: Serial0/1 to Serial0/0.1 10.0.34.3<br />
Mar 1 <span style="color:#ff0000;">02:28:19.727</span>: IP: s=1.1.1.1 (Serial0/1), d=10.0.34.3 (Serial0/0.1), g=10.0.34.3, len 100, forward<br />
</code></p>
<p><code><span style="color:#0000ff;">R2:<br />
interface Serial0/0.1 point-to-point<br />
 shutdown</span><br />
</code></p>
<p><code><span style="color:#0000ff;">R1#ping 10.0.34.3 repeat 1 source loopback1</span></code></p>
<p><code><span style="color:#0000ff;">R2#debug ip policy<br />
R2#debug ip packet</span><br />
Mar 1 <span style="color:#ff0000;">02:29:07.211</span>: IP: s=1.1.1.1 (Serial0/1), d=10.0.34.3, len 100, policy match<br />
Mar 1 <span style="color:#ff0000;">02:29:07.211</span>: IP: route map pbr, item 10, permit<br />
Mar 1 <span style="color:#ff0000;">02:29:07.211</span>: IP: s=1.1.1.1 (Serial0/1), d=10.0.34.3 (Serial0/0.2), len 100, policy routed<br />
Mar 1 <span style="color:#ff0000;">02:29:07.215</span>: IP: Serial0/1 to Serial0/0.2 10.0.34.3<br />
Mar 1 <span style="color:#ff0000;">02:29:07.215</span>: IP: s=1.1.1.1 (Serial0/1), d=10.0.34.3 (Serial0/0.2), g=10.0.34.3, len 100, forward<br />
</code></p>
<p><code><span style="color:#0000ff;">R2:<br />
interface Serial0/0.2 point-to-point<br />
 shutdown</span><br />
</code></p>
<p><code><span style="color:#0000ff;">R1#ping 10.0.34.3 repeat 1 source loopback1</span></code></p>
<p><code><span style="color:#0000ff;">R2#debug ip policy<br />
R2#debug ip packet<br />
</span>Mar 1 <span style="color:#ff0000;">02:29:54.835</span>: IP: s=1.1.1.1 (Serial0/1), d=10.0.34.3, len 100, policy match<br />
Mar 1 <span style="color:#ff0000;">02:29:54.835</span>: IP: route map pbr, item 10, permit<br />
Mar 1 <span style="color:#ff0000;">02:29:54.835</span>: IP: s=1.1.1.1 (Serial0/1), d=10.0.34.3, len 100, policy rejected -- normal forwarding<br />
Mar 1 <span style="color:#ff0000;">02:29:54.839</span>: IP: s=1.1.1.1 (Serial0/1), d=10.0.34.3, len 100, unroutable<br />
</code></p>
<p>The first packet is sent out S0/0.1 since it is the first interface in the list and is up.  When the 2nd packet arrives S0/0.1 is shutdown.  F0/0 is next in the list, but R2 does not know what next-hop address to use so it is skipped also and the 2nd packet is sent out S0/0.2.  When the 3rd packet arrives S0/0.2 is shut down also.  PBR has no interfaces left to try, so the RIB is tried next.  R2 has no route to the destination so it is dropped and an unreachable sent to R1.</p>
<p> </p>
<p> </p>
<p>Yet another available command with PBR is <strong>set ip next-hop verify-availability</strong>.  This can either be used with CDP or object tracking.  We will take a look at it&#8217;s use with CDP first.  When used with CDP, reachability to the next-hop is verified by confirming that the device is a CDP neighbor.  To use it in this way, <strong>set ip next-hop verify-availability </strong>is entered without any arguments.  The <strong>set ip next-hop</strong> command is also required, which contains the list of next-hop addresses to be verified against the CDP neighbor table.  If only a subset of next-hops should use CDP verification a separate route-map entry must be used for the ones that should not be checked because all <strong>set ip next-hop</strong> commands are combined into a single line and <strong>set ip next-hop verify-availability</strong> will enable the CDP verification check for all of them.  Let&#8217;s try an example:</p>
<p><code><span style="color:#0000ff;">R2:</span><br />
<span style="color:#0000ff;">no route-map pbr<br />
route-map pbr permit 10<br />
 set ip next-hop 10.0.234.3<br />
 set ip next-hop verify-availability<br />
!<br />
ip route 10.0.34.0 255.255.255.0 Serial0/0.1</span><br />
</code></p>
<p><img class="alignnone size-full wp-image-902" title="2-R2-CDP" src="http://cisconinja.files.wordpress.com/2009/05/2-r2-cdp.png?w=513&#038;h=78" alt="2-R2-CDP" width="513" height="78" /></p>
<p><code><span style="color:#0000ff;">R1#ping 10.0.34.3 repeat 1 source loopback1</span></code></p>
<p><code><span style="color:#0000ff;">R2#debug ip policy<br />
R2#debug ip packet<br />
</span>Mar 1 <span style="color:#ff0000;">00:22:48.959</span>: IP: s=1.1.1.1 (Serial0/1), d=10.0.34.3, len 100, policy match<br />
Mar 1 <span style="color:#ff0000;">00:22:48.959</span>: IP: route map pbr, item 10, permit<br />
Mar 1 <span style="color:#ff0000;">00:22:48.959</span>: IP: s=1.1.1.1 (Serial0/1), d=10.0.34.3 (FastEthernet0/0), len 100, policy routed<br />
Mar 1 <span style="color:#ff0000;">00:22:48.959</span>: IP: Serial0/1 to FastEthernet0/0 10.0.234.3<br />
Mar 1 <span style="color:#ff0000;">00:22:48.959</span>: IP: s=1.1.1.1 (Serial0/1), d=10.0.34.3 (FastEthernet0/0), g=10.0.234.3, len 100, forward<br />
</code></p>
<p>R2 has an entry for R3 in it&#8217;s CDP table and the packet is successfully policy routed to the configured next-hop on F0/0.  Next we will shutdown R3 F0/0:</p>
<p><code><span style="color:#0000ff;">R3:<br />
interface FastEthernet0/0<br />
 shutdown</span><br />
</code></p>
<p>After the CDP holdtime for R3 expires it is removed from R2&#8242;s CDP neighbors table. When another packet arrives from R1 loopback #1, the CDP verification fails and R2 attempts to use normal routing which results in the packet being sent on S0/0.1:</p>
<p><img class="alignnone size-full wp-image-903" title="3-R2-CDP" src="http://cisconinja.files.wordpress.com/2009/05/3-r2-cdp.png?w=511&#038;h=66" alt="3-R2-CDP" width="511" height="66" /></p>
<p><code><span style="color:#0000ff;">R1#ping 10.0.34.3 repeat 1 source loopback1</span></code></p>
<p><code><span style="color:#0000ff;">R2#debug ip policy<br />
R2#debug ip packet</span><br />
Mar 1 <span style="color:#ff0000;">00:33:43.483</span>: IP: tableid=0, s=1.1.1.1 (Serial0/1), d=10.0.34.3 (Serial0/0.1), routed via RIB<br />
Mar 1 <span style="color:#ff0000;">00:33:43.483</span>: IP: s=1.1.1.1 (Serial0/1), d=10.0.34.3, len 100, policy match<br />
Mar 1 <span style="color:#ff0000;">00:33:43.483</span>: IP: route map pbr, item 10, permit<br />
Mar 1 <span style="color:#ff0000;">00:33:43.483</span>: IP: s=1.1.1.1 (Serial0/1), d=10.0.34.3 (Serial0/0.1), len 100, policy rejected -- normal forwarding<br />
Mar 1 <span style="color:#ff0000;">00:33:43.483</span>: IP: s=1.1.1.1 (Serial0/1), d=10.0.34.3 (Serial0/0.1), g=10.0.34.3, len 100, forward<br />
</code></p>
<p>Without using next-hop verification in this example, R2 would not have fallen back to normal routing when R3 F0/0 went down.  Instead R2 would either keep sending traffic to the configured next-hop address unsuccessfully (if the L2 address is known) or keep trying to ARP for 10.0.234.3 (if the L2 address is unknown):</p>
<p><code><span style="color:#0000ff;">R2:<br />
route-map pbr permit 10<br />
 no set ip next-hop verify-availability</span> <br />
</code></p>
<p><img class="alignnone size-full wp-image-904" title="4-R2-ARP" src="http://cisconinja.files.wordpress.com/2009/05/4-r2-arp.png?w=518&#038;h=44" alt="4-R2-ARP" width="518" height="44" /></p>
<p><code><span style="color:#0000ff;">R1#ping 10.0.34.3 repeat 2 source loopback1</span></code></p>
<p><code><span style="color:#0000ff;">R2#debug ip policy<br />
R2#debug ip packet<br />
</span>Mar 1 <span style="color:#ff0000;">00:53:57.391</span>: IP: tableid=0, s=1.1.1.1 (Serial0/1), d=10.0.34.3 (Serial0/0.1), routed via RIB<br />
Mar 1 <span style="color:#ff0000;">00:53:57.391</span>: IP: s=1.1.1.1 (Serial0/1), d=10.0.34.3, len 100, policy match<br />
Mar 1 <span style="color:#ff0000;">00:53:57.391</span>: IP: route map pbr, item 10, permit<br />
Mar 1 <span style="color:#ff0000;">00:53:57.391</span>: IP: s=1.1.1.1 (Serial0/1), d=10.0.34.3 (FastEthernet0/0), len 100, policy routed<br />
Mar 1 <span style="color:#ff0000;">00:53:57.395</span>: IP: Serial0/1 to FastEthernet0/0 10.0.234.3<br />
Mar 1 <span style="color:#ff0000;">00:53:57.395</span>: IP: s=1.1.1.1 (Serial0/1), d=10.0.34.3 (FastEthernet0/0), g=10.0.234.3, len 100, forward<br />
Mar 1 <span style="color:#ff0000;">00:53:57.399</span>: IP: s=1.1.1.1 (Serial0/1), d=10.0.34.3 (FastEthernet0/0), len 100, encapsulation failed<br />
Mar 1 <span style="color:#ff0000;">00:53:59.423</span>: IP: tableid=0, s=1.1.1.1 (Serial0/1), d=10.0.34.3 (Serial0/0.1), routed via RIB<br />
Mar 1 <span style="color:#ff0000;">00:53:59.423</span>: IP: s=1.1.1.1 (Serial0/1), d=10.0.34.3, len 100, policy match<br />
Mar 1 <span style="color:#ff0000;">00:53:59.423</span>: IP: route map pbr, item 10, permit<br />
Mar 1 <span style="color:#ff0000;">00:53:59.423</span>: IP: s=1.1.1.1 (Serial0/1), d=10.0.34.3 (FastEthernet0/0), len 100, policy routed<br />
Mar 1 <span style="color:#ff0000;">00:53:59.427</span>: IP: Serial0/1 to FastEthernet0/0 10.0.234.3<br />
Mar 1 <span style="color:#ff0000;">00:53:59.427</span>: IP: s=1.1.1.1 (Serial0/1), d=10.0.34.3 (FastEthernet0/0), g=10.0.234.3, len 100, forward<br />
Mar 1 <span style="color:#ff0000;">00:53:59.431</span>: IP: s=1.1.1.1 (Serial0/1), d=10.0.34.3 (FastEthernet0/0), len 100, encapsulation failed<br />
 </code></p>
<p>Using CDP verification can also be used with the <strong>default</strong> keyword by using a combination of <strong>set ip default next-hop</strong> and <strong>set ip default next-hop verify-availability</strong>.  Like the other examples, this reverses the order of operation so that normal routing is attempted first.  The second way to use <strong>set ip next-hop verify-availability</strong> is with object tracking.  This configuration does <em><span style="text-decoration:underline;">not</span></em> use the addresses listed in <strong>set ip next-hop</strong>.  Instead a next-hop address, sequence number, and object number are listed as arguments to the <strong>set ip next-hop verify-availability</strong> command.  Only 1 next-hop can be listed per command but the use of sequence numbers allows multiple next-hops to be used and attempted in order.  The next-hop address is considered reachable if the tracked object is up.  We will create a loopback on R4 and track reachability to it on R2 using an IP SLA:</p>
<p><code><span style="color:#0000ff;">R4:<br />
interface Loopback4<br />
 ip address 4.4.4.4 255.255.255.0<br />
</span></code></p>
<p><code><span style="color:#0000ff;">R2:<br />
ip route 4.4.4.0 255.255.255.0 10.0.234.4<br />
!<br />
ip sla 1<br />
 icmp-echo 4.4.4.4<br />
ip sla schedule 1 life forever start-time now<br />
!<br />
track 1 rtr 1 reachability</span><br />
</code></p>
<p>Next we will create the route-map on R2.  R2 should send traffic from R1 to R4 whenever R4&#8242;s loopback is confirmed as reachable by the SLA:</p>
<p><code><span style="color:#0000ff;">R2:<br />
</span></code><code><span style="color:#0000ff;">no route-map pbr<br />
route-map pbr permit 10<br />
 set ip next-hop verify-availability 10.0.234.4 10 track 1<br />
</span></code></p>
<p>Let&#8217;s test it out:</p>
<p><code><span style="color:#0000ff;">R1#ping 10.0.34.3 repeat 1 source loopback1</span></code></p>
<p><code><span style="color:#0000ff;">R2#debug ip policy<br />
R2#debug ip packet</span><br />
Mar 1 <span style="color:#ff0000;">01:36:25.071</span>: IP: tableid=0, s=1.1.1.1 (Serial0/1), d=10.0.34.3 (Serial0/0.1), routed via RIB<br />
Mar 1 <span style="color:#ff0000;">01:36:25.071</span>: IP: s=1.1.1.1 (Serial0/1), d=10.0.34.3, len 100, policy match<br />
Mar 1 <span style="color:#ff0000;">01:36:25.075</span>: IP: route map pbr, item 10, permit<br />
Mar 1 <span style="color:#ff0000;">01:36:25.075</span>: IP: s=1.1.1.1 (Serial0/1), d=10.0.34.3 (FastEthernet0/0), len 100, policy routed<br />
Mar 1 <span style="color:#ff0000;">01:36:25.075</span>: IP: Serial0/1 to FastEthernet0/0 10.0.234.4<br />
Mar 1 <span style="color:#ff0000;">01:36:25.079</span>: IP: s=1.1.1.1 (Serial0/1), d=10.0.34.3 (FastEthernet0/0), g=10.0.234.4, len 100, forward<br />
</code></p>
<p>R2 policy routes the packet using the configured next-hop of 10.0.234.4.  Next we will shutdown R4&#8242;s loopback:</p>
<p><code><span style="color:#0000ff;">R4:<br />
interface Loopback4<br />
 shutdown</span><br />
</code></p>
<p>When the next echo is sent by R2&#8242;s SLA, no response is received and the tracked object changes state to down:</p>
<p><code>Mar 1 <span style="color:#ff0000;">01:37:13.487</span>: %TRACKING-5-STATE: 1 rtr 1 reachability Up-&gt;Down</code></p>
<p>If another ping is sent by R1, it does not pass the reachability check by PBR on R2. R2 resorts to normal forwarding and uses the static route out S0/0.1:</p>
<p><code><span style="color:#0000ff;">R1#ping 10.0.34.3 repeat 1 source loopback1</span></code></p>
<p><code><span style="color:#0000ff;">R2#debug ip policy<br />
R2#debug ip packet</span><br />
Mar 1 <span style="color:#ff0000;">01:37:49.415</span>: IP: tableid=0, s=1.1.1.1 (Serial0/1), d=10.0.34.3 (Serial0/0.1), routed via RIB<br />
Mar 1 <span style="color:#ff0000;">01:37:49.415</span>: IP: s=1.1.1.1 (Serial0/1), d=10.0.34.3, len 100, policy match<br />
Mar 1 <span style="color:#ff0000;">01:37:49.419</span>: IP: route map pbr, item 10, permit<br />
Mar 1 <span style="color:#ff0000;">01:37:49.419</span>: IP: s=1.1.1.1 (Serial0/1), d=10.0.34.3 (Serial0/0.1), len 100, policy rejected -- normal forwarding<br />
Mar 1 <span style="color:#ff0000;">01:37:49.419</span>: IP: s=1.1.1.1 (Serial0/1), d=10.0.34.3 (Serial0/0.1), g=10.0.34.3, len 100, forward<br />
</code></p>
<p>Using object tracking to verify reachability of a next-hop is not supported with the <strong>default</strong> keyword in front of it.</p>
<p> </p>
<p> </p>
<p> </p>
<p>PBR can contain multiple <strong>set </strong>commands within a single route-map sequence number.  If multiple set commands are configured, the order that PBR will attempt them in is:</p>
<p style="padding-left:30px;">1. <strong>set ip next-hop verify-availability</strong>  &#8211; with object tracking only</p>
<p style="padding-left:30px;">2. <strong>set ip next-hop - </strong>either alone or with CDP verification</p>
<p style="padding-left:30px;">3. <strong>set ip next-hop recursive</strong></p>
<p style="padding-left:30px;">4. <strong>set interface</strong></p>
<p style="padding-left:30px;">5. <strong>Route table</strong></p>
<p style="padding-left:30px;">6. <strong>set ip default next-hop - </strong>either alone or with CDP verification</p>
<p style="padding-left:30px;">7. <strong>set default interface</strong></p>
<p>The set commands will automatically be arranged into this order in the configuration regardless of what order they are entered in.  To demonstrate this, we will configure several set commands using each method, with each one using a different exit interface or next-hop.  We will then cause them to fail in order of preference to verify that the next preferred method is used.  Assume that all loopback interfaces on R3 and R4, and all static routes, route-maps, IP SLAs, and tracked objects on R2 have been deleted prior to the configuration below in order to make the configuration easier to follow.  An explanation of why each packet is routed the way that it is is shown at the end:</p>
<p><code><span style="color:#0000ff;">R3:<br />
interface Loopback3<br />
 ip address 3.3.3.3 255.255.255.0</span><br />
</code></p>
<p><code><span style="color:#0000ff;">R4:<br />
interface Loopback4<br />
 ip address 4.4.4.4 255.255.255.255</span><br />
<span style="color:#0000ff;">!<br />
interface Loopback5<br />
 ip address 4.4.4.5 255.255.255.255</span><br />
</code></p>
<p><code><span style="color:#0000ff;">R2:<br />
ip route 1.1.1.0 255.255.255.0 10.0.12.1<br />
ip route 3.3.3.0 255.255.255.0 Serial0/0.6<br />
ip route 4.4.4.0 255.255.255.0 10.0.234.4<br />
ip route 10.0.34.0 255.255.255.0 Serial0/0.4<br />
!<br />
ip sla 1<br />
 icmp-echo 4.4.4.4<br />
ip sla 2<br />
 icmp-echo 4.4.4.5<br />
ip sla schedule 1 life forever start-time now<br />
ip sla schedule 2 life forever start-time now<br />
!<br />
track 1 rtr 1 reachability<br />
track 2 rtr 2 reachability<br />
!<br />
route-map pbr permit 10<br />
 set ip next-hop verify-availability 10.0.234.4 100 track 1<br />
 set ip next-hop verify-availability 10.0.234.3 200 track 2<br />
 set ip next-hop 10.7.23.3<br />
 set ip next-hop verify-availability<br />
 set ip next-hop recursive 3.3.3.3<br />
 set interface Serial0/0.5<br />
 set ip default next-hop 10.3.23.3 10.2.23.3<br />
 set ip default next-hop verify-availability<br />
 set default interface Serial0/0.1<br />
</span></code></p>
<p> </p>
<p><code><span style="color:#0000ff;">R1#ping 10.0.34.3 repeat 1 source loopback1</span></code></p>
<p><strong><span style="color:#00ff00;">#1</span><br />
</strong><code>Mar 1 <span style="color:#ff0000;">02:08:50.927</span>: IP: tableid=0, s=1.1.1.1 (Serial0/1), d=10.0.34.3 (Serial0/0.4), routed via RIB<br />
Mar 1 <span style="color:#ff0000;">02:08:50.927</span>: IP: s=1.1.1.1 (Serial0/1), d=10.0.34.3, len 100, policy match<br />
Mar 1 <span style="color:#ff0000;">02:08:50.931</span>: IP: route map pbr, item 10, permit<br />
Mar 1 <span style="color:#ff0000;">02:08:50.931</span>: IP: s=1.1.1.1 (Serial0/1), d=10.0.34.3 (FastEthernet0/0), len 100, policy routed<br />
Mar 1 <span style="color:#ff0000;">02:08:50.931</span>: IP: Serial0/1 to FastEthernet0/0 10.0.234.4<br />
Mar 1 <span style="color:#ff0000;">02:08:50.935</span>: IP: s=1.1.1.1 (Serial0/1), d=10.0.34.3 (FastEthernet0/0), g=10.0.234.4, len 100, forward<br />
</code></p>
<p><code><span style="color:#0000ff;">R4:<br />
interface Loopback4<br />
 shutdown</span><br />
</code></p>
<p><span style="color:#00ff00;"><strong>#2</strong></span><br />
<code>Mar 1 <span style="color:#ff0000;">02:10:43.883</span>: IP: tableid=0, s=1.1.1.1 (Serial0/1), d=10.0.34.3 (Serial0/0.4), routed via RIB<br />
Mar 1 <span style="color:#ff0000;">02:10:43.883</span>: IP: s=1.1.1.1 (Serial0/1), d=10.0.34.3, len 100, policy match<br />
Mar 1 <span style="color:#ff0000;">02:10:43.887</span>: IP: route map pbr, item 10, permit<br />
Mar 1 <span style="color:#ff0000;">02:10:43.887</span>: IP: s=1.1.1.1 (Serial0/1), d=10.0.34.3 (FastEthernet0/0), len 100, policy routed<br />
Mar 1 <span style="color:#ff0000;">02:10:43.887</span>: IP: Serial0/1 to FastEthernet0/0 10.0.234.3<br />
Mar 1 <span style="color:#ff0000;">02:10:43.891</span>: IP: s=1.1.1.1 (Serial0/1), d=10.0.34.3 (FastEthernet0/0), g=10.0.234.3, len 100, forward<br />
</code></p>
<p><code><span style="color:#0000ff;">R4:<br />
interface Loopback5<br />
 shutdown<br />
</span></code></p>
<p><span style="color:#00ff00;"><strong>#3<br />
</strong></span><code>Mar 1 <span style="color:#ff0000;">02:12:30.903</span>: IP: tableid=0, s=1.1.1.1 (Serial0/1), d=10.0.34.3 (Serial0/0.4), routed via RIB<br />
Mar 1 <span style="color:#ff0000;">02:12:30.903</span>: IP: s=1.1.1.1 (Serial0/1), d=10.0.34.3, len 100, policy match<br />
Mar 1 <span style="color:#ff0000;">02:12:30.903</span>: IP: route map pbr, item 10, permit<br />
Mar 1 <span style="color:#ff0000;">02:12:30.907</span>: IP: s=1.1.1.1 (Serial0/1), d=10.0.34.3 (Serial0/0.7), len 100, policy routed<br />
Mar 1 <span style="color:#ff0000;">02:12:30.907</span>: IP: Serial0/1 to Serial0/0.7 10.7.23.3<br />
Mar 1 <span style="color:#ff0000;">02:12:30.907</span>: IP: s=1.1.1.1 (Serial0/1), d=10.0.34.3 (Serial0/0.7), g=10.7.23.3, len 100, forward<br />
</code></p>
<p><code><span style="color:#0000ff;">R2:<br />
interface Serial0/0.7 point-to-point<br />
 shutdown<br />
</span></code></p>
<p><span style="color:#00ff00;"><strong>#4<br />
</strong></span><code>Mar 1 <span style="color:#ff0000;">02:13:05.751</span>: IP: tableid=0, s=1.1.1.1 (Serial0/1), d=10.0.34.3 (Serial0/0.4), routed via RIB<br />
Mar 1 <span style="color:#ff0000;">02:13:05.751</span>: IP: s=1.1.1.1 (Serial0/1), d=10.0.34.3, len 100, policy match<br />
Mar 1 <span style="color:#ff0000;">02:13:05.755</span>: IP: route map pbr, item 10, permit<br />
Mar 1 <span style="color:#ff0000;">02:13:05.755</span>: IP: s=1.1.1.1 (Serial0/1), d=10.0.34.3 (Serial0/0.6), len 100, policy routed<br />
Mar 1 <span style="color:#ff0000;">02:13:05.755</span>: IP: Serial0/1 to Serial0/0.6 3.3.3.3<br />
Mar 1 <span style="color:#ff0000;">02:13:05.755</span>: IP: s=1.1.1.1 (Serial0/1), d=10.0.34.3 (Serial0/0.6), g=3.3.3.3, len 100, forward<br />
</code></p>
<p><code><span style="color:#0000ff;">R2:<br />
no ip route 3.3.3.0 255.255.255.0 Serial0/0.6</span><br />
</code></p>
<p><span style="color:#00ff00;"><strong>#5<br />
</strong></span><code>Mar 1 <span style="color:#ff0000;">02:13:35.219</span>: IP: tableid=0, s=1.1.1.1 (Serial0/1), d=10.0.34.3 (Serial0/0.4), routed via RIB<br />
Mar 1 <span style="color:#ff0000;">02:13:35.219</span>: IP: s=1.1.1.1 (Serial0/1), d=10.0.34.3, len 100, policy match<br />
Mar 1 <span style="color:#ff0000;">02:13:35.223</span>: IP: route map pbr, item 10, permit<br />
Mar 1 <span style="color:#ff0000;">02:13:35.223</span>: IP: s=1.1.1.1 (Serial0/1), d=10.0.34.3 (Serial0/0.5), len 100, policy routed<br />
Mar 1 <span style="color:#ff0000;">02:13:35.223</span>: IP: Serial0/1 to Serial0/0.5 10.0.34.3<br />
Mar 1 <span style="color:#ff0000;">02:13:35.227</span>: IP: s=1.1.1.1 (Serial0/1), d=10.0.34.3 (Serial0/0.5), g=10.0.34.3, len 100, forward<br />
</code></p>
<p><code><span style="color:#0000ff;">R2:<br />
interface Serial0/0.5 point-to-point<br />
 shutdown</span><br />
</code></p>
<p><strong><span style="color:#00ff00;">#6<br />
</span></strong><code>Mar 1 <span style="color:#ff0000;">02:13:47.243</span>: IP: tableid=0, s=1.1.1.1 (Serial0/1), d=10.0.34.3 (Serial0/0.4), routed via RIB<br />
Mar 1 <span style="color:#ff0000;">02:13:47.243</span>: IP: s=1.1.1.1 (Serial0/1), d=10.0.34.3, len 100, policy match<br />
Mar 1 <span style="color:#ff0000;">02:13:47.247</span>: IP: route map pbr, item 10, permit<br />
Mar 1 <span style="color:#ff0000;">02:13:47.247</span>: IP: s=1.1.1.1 (Serial0/1), d=10.0.34.3 (Serial0/0.4), len 100, policy rejected -- normal forwarding<br />
Mar 1 <span style="color:#ff0000;">02:13:47.247</span>: IP: s=1.1.1.1 (Serial0/1), d=10.0.34.3 (Serial0/0.4), g=10.0.34.3, len 100, forward<br />
</code></p>
<p><code><span style="color:#0000ff;">R2:<br />
no ip route 10.0.34.0 255.255.255.0 Serial0/0.4</span><br />
</code></p>
<p><span style="color:#00ff00;"><strong>#7<br />
</strong></span><code>Mar 1 <span style="color:#ff0000;">02:15:58.471</span>: IP: s=1.1.1.1 (Serial0/1), d=10.0.34.3, len 100, policy match<br />
Mar 1 <span style="color:#ff0000;">02:15:58.471</span>: IP: route map pbr, item 10, permit<br />
Mar 1 <span style="color:#ff0000;">02:15:58.475</span>: IP: s=1.1.1.1 (Serial0/1), d=10.0.34.3 (Serial0/0.3), len 100, policy routed<br />
Mar 1 <span style="color:#ff0000;">02:15:58.475</span>: IP: Serial0/1 to Serial0/0.3 10.3.23.3<br />
Mar 1 <span style="color:#ff0000;">02:15:58.475</span>: IP: s=1.1.1.1 (Serial0/1), d=10.0.34.3 (Serial0/0.3), g=10.3.23.3, len 100, forward<br />
</code></p>
<p><code><span style="color:#0000ff;">R2:<br />
interface Serial0/0.3 point-to-point<br />
 no cdp enable</span><br />
</code></p>
<p><span style="color:#00ff00;"><strong>#8<br />
</strong></span><code>Mar 1 <span style="color:#ff0000;">02:19:05.127</span>: IP: s=1.1.1.1 (Serial0/1), d=10.0.34.3, len 100, policy match<br />
Mar 1 <span style="color:#ff0000;">02:19:05.127</span>: IP: route map pbr, item 10, permit<br />
Mar 1 <span style="color:#ff0000;">02:19:05.127</span>: IP: s=1.1.1.1 (Serial0/1), d=10.0.34.3 (Serial0/0.2), len 100, policy routed<br />
Mar 1 <span style="color:#ff0000;">02:19:05.127</span>: IP: Serial0/1 to Serial0/0.2 10.2.23.3<br />
Mar 1 <span style="color:#ff0000;">02:19:05.127</span>: IP: s=1.1.1.1 (Serial0/1), d=10.0.34.3 (Serial0/0.2), g=10.2.23.3, len 100, forward<br />
</code></p>
<p><code><span style="color:#0000ff;">R2:<br />
interface Serial0/0.2 point-to-point<br />
 shutdown<br />
</span></code></p>
<p><span style="color:#00ff00;"><strong>#9</strong></span><br />
<code>Mar 1 <span style="color:#ff0000;">02:19:15.831</span>: IP: s=1.1.1.1 (Serial0/1), d=10.0.34.3, len 100, policy match<br />
Mar 1 <span style="color:#ff0000;">02:19:15.831</span>: IP: route map pbr, item 10, permit<br />
Mar 1 <span style="color:#ff0000;">02:19:15.831</span>: IP: s=1.1.1.1 (Serial0/1), d=10.0.34.3 (Serial0/0.1), len 100, policy routed<br />
Mar 1 <span style="color:#ff0000;">02:19:15.835</span>: IP: Serial0/1 to Serial0/0.1 10.0.34.3<br />
Mar 1 <span style="color:#ff0000;">02:19:15.835</span>: IP: s=1.1.1.1 (Serial0/1), d=10.0.34.3 (Serial0/0.1), g=10.0.34.3, len 100, forward<br />
</code></p>
<p><code><span style="color:#0000ff;">R2:<br />
interface Serial0/0.1 point-to-point<br />
 shutdown</span><br />
</code></p>
<p><span style="color:#00ff00;"><strong>#10<br />
</strong></span><code>Mar 1 <span style="color:#ff0000;">02:19:26.767</span>: IP: s=1.1.1.1 (Serial0/1), d=10.0.34.3, len 100, policy match<br />
Mar 1 <span style="color:#ff0000;">02:19:26.767</span>: IP: route map pbr, item 10, permit<br />
Mar 1 <span style="color:#ff0000;">02:19:26.767</span>: IP: s=1.1.1.1 (Serial0/1), d=10.0.34.3, len 100, policy rejected -- normal forwarding<br />
Mar 1 <span style="color:#ff0000;">02:19:26.771</span>: IP: s=1.1.1.1 (Serial0/1), d=10.0.34.3, len 100, unroutable<br />
</code></p>
<p> </p>
<p><span style="color:#00ff00;"><strong>#1.</strong></span> Of all the set commands configured, <strong>set ip next-hop verify-availability</strong> with object tracking takes precedence.  The lowest sequence number is 100 and the tracked object is up so it is policy routed to 10.0.234.4.</p>
<p><span style="color:#00ff00;"><strong>#2.</strong></span> The tracked object for sequence number 100 is down.  Sequence number 200 is up so the packet is policy routed to 10.0.234.3.</p>
<p><span style="color:#00ff00;"><strong>#3.</strong></span> Both next-hops that use object tracking are down.  The next method to use is <strong>set ip next-hop.</strong>  The next-hop is in the CDP neighbor table so the packet is policy routed to 10.7.23.3.</p>
<p><span style="color:#00ff00;"><strong>#4.</strong></span> The interface where 10.7.23.3 was found is now down.  The next attempted method is <strong>set ip next-hop recursive</strong>.  R2 has a static route to the configured recursive next-hop address out of S0/0.6, so the packet is policy routed out S0/0.6.</p>
<p><span style="color:#00ff00;"><strong>#5.</strong></span> R2 no longer has a route to reach the recursive next-hop so the next method, <strong>set interface</strong>, is used and the packet is policy routed out S0/0.5.</p>
<p><span style="color:#00ff00;"><strong>#6.</strong></span> All remaining set commands use the <strong>default</strong> keyword, so R2 uses normal routing to send the packet out S0/0.4.</p>
<p><strong><span style="color:#00ff00;">#7.</span></strong> There is no matching route in the route table anymore.  The next method to use is <strong>set ip default next-hop</strong>.  10.3.23.3 is the first listed next-hop and is in the CDP neighbor table so the packet is policy routed to 10.3.23.3.</p>
<p><strong><span style="color:#00ff00;">#8.</span></strong> CDP has been disabled on S0/0.3 so availability can no longer be verified.  The next address listed in <strong>set ip default next-hop</strong> is still in the CDP neighbor table so the packet is policy routed to 10.2.23.3.</p>
<p><strong><span style="color:#00ff00;">#9</span><span style="color:#00ff00;">.</span></strong> The only remaining set command that is still valid, <strong>set default interface</strong>, is used and the packet is policy routed out S0/0.1.</p>
<p><strong><span style="color:#00ff00;">#10</span><span style="color:#00ff00;">.</span></strong> PBR fails and normal routing fails so the packet is dropped.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cisconinja.wordpress.com/887/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cisconinja.wordpress.com/887/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cisconinja.wordpress.com/887/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cisconinja.wordpress.com/887/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/cisconinja.wordpress.com/887/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/cisconinja.wordpress.com/887/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/cisconinja.wordpress.com/887/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/cisconinja.wordpress.com/887/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cisconinja.wordpress.com/887/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cisconinja.wordpress.com/887/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cisconinja.wordpress.com/887/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cisconinja.wordpress.com/887/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cisconinja.wordpress.com/887/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cisconinja.wordpress.com/887/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cisconinja.wordpress.com&amp;blog=5591147&amp;post=887&amp;subd=cisconinja&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://cisconinja.wordpress.com/2009/05/29/policy-based-routing-set-commands/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">cisconinja</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/05/pbr-topology21.png" medium="image">
			<media:title type="html">PBR topology2</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/05/1-r2-route-table4.png" medium="image">
			<media:title type="html">1-R2-Route-Table</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/05/2-r2-cdp.png" medium="image">
			<media:title type="html">2-R2-CDP</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/05/3-r2-cdp.png" medium="image">
			<media:title type="html">3-R2-CDP</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/05/4-r2-arp.png" medium="image">
			<media:title type="html">4-R2-ARP</media:title>
		</media:content>
	</item>
		<item>
		<title>RIP and RIPng Behavior with Lower AD Routes</title>
		<link>http://cisconinja.wordpress.com/2009/05/06/rip-and-ripng-behavior-with-lower-ad-routes/</link>
		<comments>http://cisconinja.wordpress.com/2009/05/06/rip-and-ripng-behavior-with-lower-ad-routes/#comments</comments>
		<pubDate>Thu, 07 May 2009 01:48:23 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
				<category><![CDATA[IPv6]]></category>
		<category><![CDATA[RIP]]></category>

		<guid isPermaLink="false">http://cisconinja.wordpress.com/?p=867</guid>
		<description><![CDATA[Here we will look at the behavior of RIPv2 and RIPng for a route when a better administrative distance route exists.  The topology and configurations are shown below.  All interfaces on all routers run RIPv2 with no auto-summary and RIPng: R1: ipv6 unicast-routing ! interface Loopback0  ip address 1.1.1.1 255.255.255.0  ipv6 address 2001:0:0:1::1/64  ipv6 rip [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cisconinja.wordpress.com&amp;blog=5591147&amp;post=867&amp;subd=cisconinja&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Here we will look at the behavior of RIPv2 and RIPng for a route when a better administrative distance route exists.  The topology and configurations are shown below.  All interfaces on all routers run RIPv2 with no auto-summary and RIPng:</p>
<p><img class="alignnone size-full wp-image-866" title="rip-topology" src="http://cisconinja.files.wordpress.com/2009/05/rip-topology.png?w=434&#038;h=140" alt="rip-topology" width="434" height="140" /></p>
<p><code><span style="color:#0000ff;">R1:<br />
ipv6 unicast-routing<br />
!<br />
interface Loopback0<br />
 ip address 1.1.1.1 255.255.255.0<br />
 ipv6 address 2001:0:0:1::1/64<br />
 ipv6 rip asdf enable<br />
!<br />
interface Serial0/0<br />
 ip address 10.0.12.1 255.255.255.0<br />
 ipv6 address 2001:0:0:12::1/64<br />
 ipv6 rip asdf enable<br />
!<br />
router rip<br />
 version 2<br />
 passive-interface Loopback0<br />
 network 1.0.0.0<br />
 network 10.0.0.0<br />
 no auto-summary<br />
!<br />
ipv6 router rip asdf<br />
</span></code></p>
<p><code><span style="color:#0000ff;">R2:<br />
ipv6 unicast-routing<br />
!<br />
interface Serial0/0<br />
 ip address 10.0.12.2 255.255.255.0<br />
 ipv6 address 2001:0:0:12::2/64<br />
 ipv6 rip asdf enable<br />
!<br />
interface Serial0/1<br />
 ip address 10.0.23.2 255.255.255.0<br />
 ipv6 address 2001:0:0:23::2/64<br />
 ipv6 rip asdf enable<br />
!<br />
router rip<br />
 version 2<br />
 network 10.0.0.0<br />
 no auto-summary<br />
!<br />
ipv6 router rip asdf<br />
</span></code></p>
<p><code><span style="color:#0000ff;">R3:<br />
ipv6 unicast-routing<br />
!<br />
interface Serial0/0<br />
 ip address 10.0.23.3 255.255.255.0<br />
 ipv6 address 2001:0:0:23::3/64<br />
 ipv6 rip asdf enable<br />
!<br />
router rip<br />
 version 2<br />
 network 10.0.0.0<br />
 no auto-summary<br />
!<br />
ipv6 router rip asdf<br />
</span></code></p>
<p>Next we will create an OSPF process between R1 and R2 and use it to advertise R1 Loopback1 to R2:</p>
<p><code><span style="color:#0000ff;">R1:<br />
router ospf 1<br />
 network 0.0.0.0 255.255.255.255 area 0<br />
!<br />
interface Loopback0<br />
 ip ospf network point-to-point<br />
 ipv6 ospf network point-to-point<br />
 ipv6 ospf 1 area 0<br />
!<br />
interface Serial0/0<br />
 ipv6 ospf 1 area 0<br />
</span></code></p>
<p><code><span style="color:#0000ff;">R2:<br />
router ospf 1<br />
 network 10.0.12.2 0.0.0.0 area 0<br />
!<br />
interface Serial0/0<br />
 ipv6 ospf 1 area 0</span><br />
</code></p>
<p>R2 replaces the RIPv2 and RIPng routes to R1 Loopback0 with the OSPF routes because of their lower AD:</p>
<p><img class="alignnone size-full wp-image-869" title="1-r2-route-table2" src="http://cisconinja.files.wordpress.com/2009/05/1-r2-route-table2.png?w=474&#038;h=104" alt="1-r2-route-table2" width="474" height="104" /></p>
<p><img class="alignnone size-full wp-image-871" title="1-r2-route-table-ipv62" src="http://cisconinja.files.wordpress.com/2009/05/1-r2-route-table-ipv62.png?w=332&#038;h=196" alt="1-r2-route-table-ipv62" width="332" height="196" /></p>
<p>Although R2 still hears about R1&#8242;s loopback in RIP advertisements, it does not advertise it to R3 in either RIPv2 or RIPng and R3 therefore does not have a route to it.  The route must be present in the routing table in order for RIPv1/RIPv2 and RIPng to include it in advertisements:</p>
<p><code><span style="color:#0000ff;">R2#debug ip rip</span><br />
Mar 1 <span style="color:#ff0000;">00:22:09.267</span>: RIP: received v2 update from 10.0.12.1 on Serial0/0<br />
Mar 1 <span style="color:#ff0000;">00:22:09.271</span>: 1.1.1.0/24 via 0.0.0.0 in 1 hops<br />
Mar 1 <span style="color:#ff0000;">00:22:16.471</span>: RIP: sending v2 update to 224.0.0.9 via Serial0/1 (10.0.23.2)<br />
Mar 1 <span style="color:#ff0000;">00:22:16.471</span>: RIP: build update entries<br />
Mar 1 <span style="color:#ff0000;">00:22:16.471</span>: 10.0.12.0/24 via 0.0.0.0, metric 1, tag 0<br />
</code></p>
<p><code><span style="color:#0000ff;">R2#debug ipv6 rip<br />
</span>Mar 1 <span style="color:#ff0000;">00:22:57.627</span>: RIPng: response received from FE80::C601:9FF:FEFC:0 on Serial0/0 for asdf<br />
Mar 1 <span style="color:#ff0000;">00:22:57.627</span>: src=FE80::C601:9FF:FEFC:0 (Serial0/0)<br />
Mar 1 <span style="color:#ff0000;">00:22:57.631</span>: dst=FF02::9<br />
Mar 1 <span style="color:#ff0000;">00:22:57.631</span>: sport=521, dport=521, length=52<br />
Mar 1 <span style="color:#ff0000;">00:22:57.631</span>: command=2, version=1, mbz=0, #rte=2<br />
Mar 1 <span style="color:#ff0000;">00:22:57.631</span>: tag=0, metric=1, prefix=2001:0:0:1::/64<br />
Mar 1 <span style="color:#ff0000;">00:22:57.631</span>: tag=0, metric=1, prefix=2001:0:0:12::/64<br />
Mar 1 <span style="color:#ff0000;">00:23:13.255</span>: RIPng: Sending multicast update on Serial0/1 for asdf<br />
Mar 1 <span style="color:#ff0000;">00:23:13.255</span>: src=FE80::C602:9FF:FEFC:0<br />
Mar 1 <span style="color:#ff0000;">00:23:13.255</span>: dst=FF02::9 (Serial0/1)<br />
Mar 1 <span style="color:#ff0000;">00:23:13.259</span>: sport=521, dport=521, length=52<br />
Mar 1 <span style="color:#ff0000;">00:23:13.259</span>: command=2, version=1, mbz=0, #rte=2<br />
Mar 1 <span style="color:#ff0000;">00:23:13.259</span>: tag=0, metric=1, prefix=2001:0:0:12::/64<br />
Mar 1 <span style="color:#ff0000;">00:23:13.259</span>: tag=0, metric=1, prefix=2001:0:0:23::/64<br />
</code></p>
<p>Let&#8217;s try creating a separate OSPF process between R2 and R3 and redistributing RIP into it:</p>
<p><code><span style="color:#0000ff;">R2:<br />
interface Serial0/1<br />
 ipv6 ospf 2 area 0<br />
!<br />
router ospf 2<br />
 network 10.0.23.2 0.0.0.0 area 0<br />
 redistribute rip metric 100 subnets<br />
!<br />
ipv6 router ospf 2<br />
 redistribute rip asdf metric 100</span><br />
</code></p>
<p><code><span style="color:#0000ff;">R3:<br />
interface Serial0/0<br />
 ipv6 ospf 2 area 0<br />
!<br />
router ospf 2<br />
 network 0.0.0.0 255.255.255.255 area 0</span><br />
</code></p>
<p>R1&#8242;s loopback is not redistributed into OSPF process #2 for the same reason &#8211; the route must be present in the routing table as a RIP route in order to be redistributed.  R3 still does not have a route to R1&#8242;s loopback:</p>
<p> <img class="alignnone size-full wp-image-873" title="2-r3-route-table" src="http://cisconinja.files.wordpress.com/2009/05/2-r3-route-table.png?w=500&#038;h=76" alt="2-r3-route-table" width="500" height="76" /></p>
<p><img class="alignnone size-full wp-image-874" title="2-r3-route-table-ipv6" src="http://cisconinja.files.wordpress.com/2009/05/2-r3-route-table-ipv6.png?w=337&#038;h=142" alt="2-r3-route-table-ipv6" width="337" height="142" /></p>
<p> </p>
<p>One difference between RIPv2 and RIPng when there is a better AD route already in the routing table is that RIPng keeps the route in the RIP database, while RIPv2 does not:</p>
<p><img class="alignnone size-full wp-image-875" title="3-r2-rip-db" src="http://cisconinja.files.wordpress.com/2009/05/3-r2-rip-db.png?w=361&#038;h=51" alt="3-r2-rip-db" width="361" height="51" /></p>
<p><img class="alignnone size-full wp-image-876" title="3-r2-ripng-db" src="http://cisconinja.files.wordpress.com/2009/05/3-r2-ripng-db.png?w=457&#038;h=104" alt="3-r2-ripng-db" width="457" height="104" /></p>
<p>The significance of this is that if the better AD route is removed, the RIPng route is immediately installed in the routing table.  RIPv2 on the other hand must wait until it hears the next periodic update for the route &#8211; up to 30 seconds using default timers:</p>
<p><code><span style="color:#0000ff;">R2:<br />
no ipv6 router ospf 1</span><br />
</code></p>
<p><code><span style="color:#0000ff;">R2#debug ipv6 routing</span><br />
Mar 1 <span style="color:#ff0000;">00:41:38.395</span>: IPv6RT0: ospf 1, Delete 2001:0:0:1::/64 from table<br />
Mar 1 <span style="color:#ff0000;">00:41:38.399</span>: IPv6RT0: rip asdf, Backup call for 2001:0:0:1::/64<br />
Mar 1 <span style="color:#ff0000;">00:41:38.399</span>: IPv6RT0: rip asdf, Route add 2001:0:0:1::/64 [new]<br />
Mar 1 <span style="color:#ff0000;">00:41:38.399</span>: IPv6RT0: rip asdf, Add 2001:0:0:1::/64 to table<br />
Mar 1 <span style="color:#ff0000;">00:41:38.399</span>: IPv6RT0: rip asdf, Adding next-hop FE80::C601:9FF:FEFC:0 over Serial0/0 for 2001:0:0:1::/64, [120/2]<br />
Mar 1 <span style="color:#ff0000;">00:41:38.415</span>: IPv6RT0: Event: 2001:0:0:1::/64, Del, owner ospf, previous None<br />
Mar 1 <span style="color:#ff0000;">00:41:38.415</span>: IPv6RT0: Event: 2001:0:0:1::/64, Add, owner rip, previous None<br />
</code></p>
<p><code><span style="color:#0000ff;">R2:<br />
no router ospf 1</span><br />
</code></p>
<p><code><span style="color:#0000ff;">R2#debug ip routing<br />
R2#debug ip rip</span><br />
Mar 1 <span style="color:#ff0000;">00:44:02.743</span>: RT: NET-RED 1.1.1.0/24<br />
Mar 1 <span style="color:#ff0000;">00:44:02.775</span>: RT: delete route to 1.1.1.0/24<br />
Mar 1 <span style="color:#ff0000;">00:44:02.775</span>: RT: NET-RED 1.1.1.0/24<br />
Mar 1 <span style="color:#ff0000;">00:44:02.775</span>: RT: delete network route to 1.0.0.0<br />
Mar 1 <span style="color:#ff0000;">00:44:02.775</span>: RT: NET-RED 1.0.0.0/8<br />
Mar 1 <span style="color:#ff0000;">00:44:27.987</span>: RIP: received v2 update from 10.0.12.1 on Serial0/0<br />
Mar 1 <span style="color:#ff0000;">00:44:27.991</span>: 1.1.1.0/24 via 0.0.0.0 in 1 hops<br />
Mar 1 <span style="color:#ff0000;">00:44:27.991</span>: RT: SET_LAST_RDB for 1.1.1.0/24<br />
NEW rdb: via 10.0.12.1<br />
Mar 1 <span style="color:#ff0000;">00:44:27.995</span>: RT: add 1.1.1.0/24 via 10.0.12.1, rip metric [120/1]<br />
Mar 1 <span style="color:#ff0000;">00:44:27.995</span>: RT: NET-RED 1.1.1.0/24<br />
</code></p>
<p>Since R2 now has the RIPv2 and RIPng routes to R1 Loopback0 in the routing table, they are eligible for route advertisement and redistribution.  R3 learns the route from R2 through both RIP and OSPF and adds the lower AD OSPF routes.  Like we saw on R2 previously, the RIP route is kept in the RIPng database but not in the RIPv2 database:</p>
<p><img class="alignnone size-full wp-image-877" title="4-r3-route-table" src="http://cisconinja.files.wordpress.com/2009/05/4-r3-route-table.png?w=498&#038;h=104" alt="4-r3-route-table" width="498" height="104" /></p>
<p><img class="alignnone size-full wp-image-878" title="4-r3-route-table-ipv6" src="http://cisconinja.files.wordpress.com/2009/05/4-r3-route-table-ipv6.png?w=332&#038;h=169" alt="4-r3-route-table-ipv6" width="332" height="169" /></p>
<p><img class="alignnone size-full wp-image-879" title="5-r3-rip-db" src="http://cisconinja.files.wordpress.com/2009/05/5-r3-rip-db.png?w=361&#038;h=40" alt="5-r3-rip-db" width="361" height="40" /></p>
<p><img class="alignnone size-full wp-image-880" title="5-r3-ripng-db" src="http://cisconinja.files.wordpress.com/2009/05/5-r3-ripng-db.png?w=458&#038;h=104" alt="5-r3-ripng-db" width="458" height="104" /></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cisconinja.wordpress.com/867/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cisconinja.wordpress.com/867/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cisconinja.wordpress.com/867/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cisconinja.wordpress.com/867/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/cisconinja.wordpress.com/867/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/cisconinja.wordpress.com/867/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/cisconinja.wordpress.com/867/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/cisconinja.wordpress.com/867/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cisconinja.wordpress.com/867/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cisconinja.wordpress.com/867/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cisconinja.wordpress.com/867/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cisconinja.wordpress.com/867/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cisconinja.wordpress.com/867/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cisconinja.wordpress.com/867/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cisconinja.wordpress.com&amp;blog=5591147&amp;post=867&amp;subd=cisconinja&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://cisconinja.wordpress.com/2009/05/06/rip-and-ripng-behavior-with-lower-ad-routes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">cisconinja</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/05/rip-topology.png" medium="image">
			<media:title type="html">rip-topology</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/05/1-r2-route-table2.png" medium="image">
			<media:title type="html">1-r2-route-table2</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/05/1-r2-route-table-ipv62.png" medium="image">
			<media:title type="html">1-r2-route-table-ipv62</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/05/2-r3-route-table.png" medium="image">
			<media:title type="html">2-r3-route-table</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/05/2-r3-route-table-ipv6.png" medium="image">
			<media:title type="html">2-r3-route-table-ipv6</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/05/3-r2-rip-db.png" medium="image">
			<media:title type="html">3-r2-rip-db</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/05/3-r2-ripng-db.png" medium="image">
			<media:title type="html">3-r2-ripng-db</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/05/4-r3-route-table.png" medium="image">
			<media:title type="html">4-r3-route-table</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/05/4-r3-route-table-ipv6.png" medium="image">
			<media:title type="html">4-r3-route-table-ipv6</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/05/5-r3-rip-db.png" medium="image">
			<media:title type="html">5-r3-rip-db</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/05/5-r3-ripng-db.png" medium="image">
			<media:title type="html">5-r3-ripng-db</media:title>
		</media:content>
	</item>
		<item>
		<title>RIP and RIPng Metrics</title>
		<link>http://cisconinja.wordpress.com/2009/05/04/rip-and-ripng-metrics/</link>
		<comments>http://cisconinja.wordpress.com/2009/05/04/rip-and-ripng-metrics/#comments</comments>
		<pubDate>Mon, 04 May 2009 21:12:56 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
				<category><![CDATA[IPv6]]></category>
		<category><![CDATA[RIP]]></category>

		<guid isPermaLink="false">http://cisconinja.wordpress.com/?p=847</guid>
		<description><![CDATA[In this post we will look at a few things relating to metric calculations in RIPv2 and RIPng.  The topology and configurations are shown below.  All interfaces on all routers run RIPv2 with no auto-summary and RIPng: R1: ipv6 unicast-routing ! interface Loopback1  ip address 1.1.1.1 255.255.255.0  ipv6 address 2001:0:0:1111::1/64  ipv6 rip asdf enable ! [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cisconinja.wordpress.com&amp;blog=5591147&amp;post=847&amp;subd=cisconinja&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>In this post we will look at a few things relating to metric calculations in RIPv2 and RIPng.  The topology and configurations are shown below.  All interfaces on all routers run RIPv2 with no auto-summary and RIPng:</p>
<p><img class="alignnone size-full wp-image-846" title="rip-hop-count1" src="http://cisconinja.files.wordpress.com/2009/05/rip-hop-count1.png?w=516&#038;h=133" alt="rip-hop-count1" width="516" height="133" /></p>
<p><code><span style="color:#0000ff;">R1:<br />
ipv6 unicast-routing<br />
!<br />
interface Loopback1<br />
 ip address 1.1.1.1 255.255.255.0<br />
 ipv6 address 2001:0:0:1111::1/64<br />
 ipv6 rip asdf enable<br />
!<br />
interface Serial0/0<br />
 ip address 10.0.12.1 255.255.255.0<br />
 ipv6 address 2001:12::1/64<br />
 ipv6 rip asdf enable<br />
!<br />
router rip<br />
 version 2<br />
 passive-interface default<br />
 no passive-interface Serial0/0<br />
 network 1.0.0.0<br />
 network 10.0.0.0<br />
 no auto-summary<br />
!<br />
ipv6 router rip asdf</span><br />
</code></p>
<p><code><span style="color:#0000ff;">R2:<br />
ipv6 unicast-routing<br />
!<br />
interface Loopback1<br />
 ip address 2.2.2.2 255.255.255.0<br />
 ipv6 address 2001:0:0:2222::2/64<br />
 ipv6 rip asdf enable<br />
!<br />
interface Serial0/0<br />
 ip address 10.0.12.2 255.255.255.0<br />
 ipv6 address 2001:12::2/64<br />
 ipv6 rip asdf enable<br />
!<br />
interface Serial0/1<br />
 ip address 10.0.23.2 255.255.255.0<br />
 ipv6 address 2001:23::2/64<br />
 ipv6 rip asdf enable<br />
!<br />
router rip<br />
 version 2<br />
 passive-interface Loopback1<br />
 network 2.0.0.0<br />
 network 10.0.0.0<br />
 no auto-summary<br />
!<br />
ipv6 router rip asdf</span><br />
</code></p>
<p><code><span style="color:#0000ff;">R3:<br />
ipv6 unicast-routing<br />
!<br />
interface Loopback1<br />
 ip address 3.3.3.3 255.255.255.0<br />
 ipv6 address 2001:0:0:3333::3/64<br />
 ipv6 rip asdf enable<br />
!<br />
interface Serial0/0<br />
 ip address 10.0.23.3 255.255.255.0<br />
 ipv6 address 2001:23::3/64<br />
 ipv6 rip asdf enable<br />
!<br />
interface Serial0/1<br />
 ip address 10.0.34.3 255.255.255.0<br />
 ipv6 address 2001:34::3/64<br />
 ipv6 rip asdf enable<br />
!<br />
router rip<br />
 version 2<br />
 passive-interface Loopback1<br />
 network 3.0.0.0<br />
 network 10.0.0.0<br />
 no auto-summary<br />
!<br />
ipv6 router rip asdf<br />
</span></code></p>
<p><code><span style="color:#0000ff;">R4:<br />
ipv6 unicast-routing<br />
!<br />
interface Loopback1<br />
 ip address 4.4.4.4 255.255.255.0<br />
 ipv6 address 2001:0:0:4444::4/64<br />
 ipv6 rip asdf enable<br />
!<br />
interface Serial0/0<br />
 ip address 10.0.34.4 255.255.255.0<br />
 ipv6 address 2001:34::4/64<br />
 ipv6 rip asdf enable<br />
!<br />
router rip<br />
 version 2<br />
 network 4.0.0.0<br />
 network 10.0.0.0<br />
 no auto-summary<br />
!<br />
ipv6 router rip asdf<br />
</span></code></p>
<p>The routing tables of each router look like this:</p>
<p><img class="alignnone size-full wp-image-848" title="1-r1-route-table" src="http://cisconinja.files.wordpress.com/2009/05/1-r1-route-table.png?w=485&#038;h=195" alt="1-r1-route-table" width="485" height="195" /></p>
<p><img class="alignnone size-full wp-image-849" title="1-r2-route-table" src="http://cisconinja.files.wordpress.com/2009/05/1-r2-route-table.png?w=485&#038;h=196" alt="1-r2-route-table" width="485" height="196" /></p>
<p><img class="alignnone size-full wp-image-850" title="1-r3-route-table" src="http://cisconinja.files.wordpress.com/2009/05/1-r3-route-table.png?w=482&#038;h=196" alt="1-r3-route-table" width="482" height="196" /></p>
<p><img class="alignnone size-full wp-image-852" title="1-r4-route-table1" src="http://cisconinja.files.wordpress.com/2009/05/1-r4-route-table1.png?w=483&#038;h=195" alt="1-r4-route-table1" width="483" height="195" /></p>
<p><img class="alignnone size-full wp-image-853" title="1-r1-route-table-ipv6" src="http://cisconinja.files.wordpress.com/2009/05/1-r1-route-table-ipv6.png?w=334&#038;h=299" alt="1-r1-route-table-ipv6" width="334" height="299" /></p>
<p><img class="alignnone size-full wp-image-855" title="1-r2-route-table-ipv6" src="http://cisconinja.files.wordpress.com/2009/05/1-r2-route-table-ipv6.png?w=330&#038;h=323" alt="1-r2-route-table-ipv6" width="330" height="323" /></p>
<p><img class="alignnone size-full wp-image-856" title="1-r3-route-table-ipv6" src="http://cisconinja.files.wordpress.com/2009/05/1-r3-route-table-ipv6.png?w=332&#038;h=324" alt="1-r3-route-table-ipv6" width="332" height="324" /></p>
<p><img class="alignnone size-full wp-image-858" title="1-r4-route-table-ipv61" src="http://cisconinja.files.wordpress.com/2009/05/1-r4-route-table-ipv61.png?w=332&#038;h=298" alt="1-r4-route-table-ipv61" width="332" height="298" /></p>
<p>Notice that the RIPng routes are listed as 1 hop higher than the equivalent RIPv2 routes.  For example, R2 sees R1&#8242;s loopback as 1 hop in RIPv2 and 2 hops in RIPng.  Let&#8217;s take a look at the RIPv2 and RIPng updates on R2 being received from R1 and sent to R3:</p>
<p><code><span style="color:#0000ff;">R2#debug ip rip</span><br />
Mar 1 <span style="color:#ff0000;">00:46:36.895</span>: RIP: received v2 update from 10.0.12.1 on Serial0/0<br />
Mar 1 <span style="color:#ff0000;">00:46:36.895</span>: 1.1.1.0/24 via 0.0.0.0 in 1 hops<br />
Mar 1 <span style="color:#ff0000;">00:46:40.167</span>: RIP: sending v2 update to 224.0.0.9 via Serial0/1 (10.0.23.2)<br />
Mar 1 <span style="color:#ff0000;">00:46:40.167</span>: RIP: build update entries<br />
Mar 1 <span style="color:#ff0000;">00:46:40.167</span>: 1.1.1.0/24 via 0.0.0.0, metric 2, tag 0<br />
Mar 1 <span style="color:#ff0000;">00:46:40.171</span>: 2.2.2.0/24 via 0.0.0.0, metric 1, tag 0<br />
Mar 1 <span style="color:#ff0000;">00:46:40.171</span>: 10.0.12.0/24 via 0.0.0.0, metric 1, tag 0<br />
</code></p>
<p><code>R2#debug ipv6 rip<br />
Mar 1 <span style="color:#ff0000;">00:46:55.487</span>: RIPng: response received from FE80::C601:9FF:FEFC:0 on Serial0/0 for asdf<br />
Mar 1 <span style="color:#ff0000;">00:46:55.487</span>: src=FE80::C601:9FF:FEFC:0 (Serial0/0)<br />
Mar 1 <span style="color:#ff0000;">00:46:55.491</span>: dst=FF02::9<br />
Mar 1 <span style="color:#ff0000;">00:46:55.491</span>: sport=521, dport=521, length=52<br />
Mar 1 <span style="color:#ff0000;">00:46:55.491</span>: command=2, version=1, mbz=0, #rte=2<br />
Mar 1 <span style="color:#ff0000;">00:46:55.491</span>: tag=0, metric=1, prefix=2001:0:0:1111::/64<br />
Mar 1 <span style="color:#ff0000;">00:46:55.491</span>: tag=0, metric=1, prefix=2001:12::/64<br />
Mar 1 <span style="color:#ff0000;">00:47:14.139</span>: RIPng: Sending multicast update on Serial0/1 for asdf<br />
Mar 1 <span style="color:#ff0000;">00:47:14.139</span>: src=FE80::C602:9FF:FEFC:0<br />
Mar 1 <span style="color:#ff0000;">00:47:14.139</span>: dst=FF02::9 (Serial0/1)<br />
Mar 1 <span style="color:#ff0000;">00:47:14.143</span>: sport=521, dport=521, length=92<br />
Mar 1 <span style="color:#ff0000;">00:47:14.143</span>: command=2, version=1, mbz=0, #rte=4<br />
Mar 1 <span style="color:#ff0000;">00:47:14.143</span>: tag=0, metric=1, prefix=2001:12::/64<br />
Mar 1 <span style="color:#ff0000;">00:47:14.143</span>: tag=0, metric=1, prefix=2001:23::/64<br />
Mar 1 <span style="color:#ff0000;">00:47:14.143</span>: tag=0, metric=1, prefix=2001:0:0:2222::/64<br />
Mar 1 <span style="color:#ff0000;">00:47:14.147</span>: tag=0, metric=2, prefix=2001:0:0:1111::/64<br />
</code></p>
<p>Both updates look the same - R1&#8242;s loopback is received from R1 as metric 1 and advertised to R3 as metric 2.  The reason for the difference in metric in the routing table and RIP database is that RIPng metrics are incremented inbound before being added to the routing table/RIP database, while RIPv1 and RIPv2 metrics are incremented outbound.  Equivalent RIPng routes will always show up as 1 hop higher than RIPv2 routes if no offsets are applied.</p>
<p> </p>
<p>Next we will look at a bug that is present in many IOS versions that results in RIPv1 and RIPv2 hop counts not incrementing.  We will turn RIPv2 auto-summary back on for R3 and R4:</p>
<p><code><span style="color:#0000ff;">R3:<br />
router rip<br />
 auto-summary</span><br />
</code></p>
<p><code><span style="color:#0000ff;">R4:<br />
router rip<br />
auto-summary</span><br />
</code></p>
<p>R3 stops advertising 1.1.1.0/24 and 2.2.2.0/24 and starts advertising 1.0.0.0/8 and 2.0.0.0/8 to R4.  After R4&#8242;s flush timer expires for the /24 routes, it&#8217;s routing table now looks like this:</p>
<p><img class="alignnone size-full wp-image-859" title="2-r4-route-table" src="http://cisconinja.files.wordpress.com/2009/05/2-r4-route-table.png?w=484&#038;h=154" alt="2-r4-route-table" width="484" height="154" /></p>
<p>1.0.0.0/8 has the same metric as the old /24 route, but 2.0.0.0/8 is listed as metric 1 instead of metric 2.  Let&#8217;s take a look at sent and received updates in the direction of R1 to R4.  R3 receives the same routes and metrics from R2:</p>
<p><code><span style="color:#0000ff;">R3#debug ip rip</span><br />
Mar 1 <span style="color:#ff0000;">01:01:37.891</span>: RIP: received v2 update from 10.0.23.2 on Serial0/0<br />
Mar 1 <span style="color:#ff0000;">01:01:37.891</span>: 1.1.1.0/24 via 0.0.0.0 in 2 hops<br />
Mar 1 <span style="color:#ff0000;">01:01:37.895</span>: 2.2.2.0/24 via 0.0.0.0 in 1 hops<br />
Mar 1 <span style="color:#ff0000;">01:01:37.895</span>: 10.0.12.0/24 via 0.0.0.0 in 1 hops<br />
</code></p>
<p>When the summarized routes are advertised to R4, 1.0.0.0/8 is incremented but 2.0.0.0/8 is advertised as metric 1, the same metric it was received as:</p>
<p><code><span style="color:#0000ff;">R3#debug ip rip</span><br />
Mar 1 <span style="color:#ff0000;">01:01:41.647</span>: RIP: sending v2 update to 224.0.0.9 via Serial0/1 (10.0.34.3)<br />
Mar 1 <span style="color:#ff0000;">01:01:41.647</span>: RIP: build update entries<br />
Mar 1 <span style="color:#ff0000;">01:01:41.647</span>: 1.0.0.0/8 via 0.0.0.0, metric 3, tag 0<br />
Mar 1 <span style="color:#ff0000;">01:01:41.651</span>: 2.0.0.0/8 via 0.0.0.0, metric 1, tag 0<br />
Mar 1 <span style="color:#ff0000;">01:01:41.651</span>: 3.0.0.0/8 via 0.0.0.0, metric 1, tag 0<br />
Mar 1 <span style="color:#ff0000;">01:01:41.651</span>: 10.0.12.0/24 via 0.0.0.0, metric 2, tag 0<br />
Mar 1 <span style="color:#ff0000;">01:01:41.651</span>: 10.0.23.0/24 via 0.0.0.0, metric 1, tag 0<br />
</code></p>
<p>R4 receives the update from R3:</p>
<p><code><span style="color:#0000ff;">R4#debug ip rip</span><br />
Mar 1 <span style="color:#ff0000;">01:01:41.679</span>: RIP: received v2 update from 10.0.34.3 on Serial0/0<br />
Mar 1 <span style="color:#ff0000;">01:01:41.679</span>: 1.0.0.0/8 via 0.0.0.0 in 3 hops<br />
Mar 1 <span style="color:#ff0000;">01:01:41.683</span>: 2.0.0.0/8 via 0.0.0.0 in 1 hops<br />
Mar 1 <span style="color:#ff0000;">01:01:41.683</span>: 3.0.0.0/8 via 0.0.0.0 in 1 hops<br />
Mar 1 <span style="color:#ff0000;">01:01:41.683</span>: 10.0.12.0/24 via 0.0.0.0 in 2 hops<br />
Mar 1 <span style="color:#ff0000;">01:01:41.687</span>: 10.0.23.0/24 via 0.0.0.0 in 1 hops<br />
</code></p>
<p>When R4 sends an update out loopback1, 1.0.0.0/8 is again incremented and 2.0.0.0/8 is not.  3.0.0.0/8, which was received as metric 1, is also not incremented:</p>
<p><code><span style="color:#0000ff;">R4#debug ip rip<br />
</span>Mar 1 <span style="color:#ff0000;">01:01:56.191</span>: RIP: sending v2 update to 224.0.0.9 via Loopback1 (4.4.4.4)<br />
Mar 1 <span style="color:#ff0000;">01:01:56.191</span>: RIP: build update entries<br />
Mar 1 <span style="color:#ff0000;">01:01:56.191</span>: 1.0.0.0/8 via 0.0.0.0, metric 4, tag 0<br />
Mar 1 <span style="color:#ff0000;">01:01:56.195</span>: 2.0.0.0/8 via 0.0.0.0, metric 1, tag 0<br />
Mar 1 <span style="color:#ff0000;">01:01:56.195</span>: 3.0.0.0/8 via 0.0.0.0, metric 1, tag 0<br />
Mar 1 <span style="color:#ff0000;">01:01:56.195</span>: 10.0.0.0/8 via 0.0.0.0, metric 1, tag 0<br />
</code></p>
<p>This bug, which prevents the hop count from incrementing, occurs whenever a received route has metric 1 and is summarized before being advertised.  If the received metric is greater than 1, the hop count continues to increment like normal.  This occurs for RIPv1 routes when they are summarized at classful boundaries, RIPv2 auto-summary routes, and RIPv2 interface summary routes.  The bug occurred in various 12.4 mainline IOS versions that were tested and no longer occurred in 12.4(20)T, so it appears to have been fixed in some 12.4 T-train release.</p>
<p> </p>
<p>Summary routes in both RIPv2 and RIPng use the lowest metric of any child route within their range as the metric for the summary route.  To demonstrate this, we will first create a few more loopbacks on R1 and redistribute them into RIP with various metrics.  We will also turn auto-summary off again on R3 and R4:</p>
<p><code><span style="color:#0000ff;">R1:<br />
router rip<br />
 no network 1.0.0.0<br />
!<br />
interface Loopback1<br />
 no ipv6 rip asdf enable<br />
!<br />
interface Loopback2<br />
 ip address 1.1.2.1 255.255.255.0<br />
 ipv6 address 2001:0:0:1112::1/64<br />
!<br />
interface Loopback3<br />
 ip address 1.1.3.1 255.255.255.0<br />
 ipv6 address 2001:0:0:1113::1/64<br />
!<br />
interface Loopback4<br />
 ip address 1.1.4.1 255.255.255.0<br />
 ipv6 address 2001:0:0:1114::1/64<br />
!<br />
ip access-list standard Loop1<br />
 permit 1.1.1.0<br />
ip access-list standard Loop2<br />
 permit 1.1.2.0<br />
ip access-list standard Loop3<br />
 permit 1.1.3.0<br />
ip access-list standard Loop4<br />
 permit 1.1.4.0<br />
!<br />
route-map RIPv2 permit 10<br />
 match ip address Loop1<br />
 set metric 3<br />
!<br />
route-map RIPv2 permit 20<br />
 match ip address Loop2<br />
 set metric 4<br />
!<br />
route-map RIPv2 permit 30<br />
 match ip address Loop3<br />
 set metric 5<br />
!<br />
route-map RIPv2 permit 40<br />
 match ip address Loop4<br />
 set metric 6<br />
!<br />
router rip<br />
 redistribute connected route-map RIPv2<br />
!<br />
ipv6 prefix-list Loop1 seq 5 permit 2001:0:0:1111::/64<br />
!<br />
ipv6 prefix-list Loop2 seq 5 permit 2001:0:0:1112::/64<br />
!<br />
ipv6 prefix-list Loop3 seq 5 permit 2001:0:0:1113::/64<br />
!<br />
ipv6 prefix-list Loop4 seq 5 permit 2001:0:0:1114::/64<br />
!<br />
route-map RIPng permit 10<br />
match ipv6 address prefix-list Loop1<br />
set metric 3<br />
!<br />
route-map RIPng permit 20<br />
match ipv6 address prefix-list Loop2<br />
set metric 4<br />
!<br />
route-map RIPng permit 30<br />
match ipv6 address prefix-list Loop3<br />
set metric 5<br />
!<br />
route-map RIPng permit 40<br />
match ipv6 address prefix-list Loop4<br />
set metric 6<br />
!<br />
ipv6 router rip asdf<br />
 redistribute connected route-map RIPng</span><br />
</code></p>
<p><code><span style="color:#0000ff;">R3:<br />
router rip<br />
 no auto-summary<br />
</span></code></p>
<p><code><span style="color:#0000ff;">R4:<br />
router rip<br />
 no auto-summary</span><br />
</code></p>
<p>Before creating the summary routes, let&#8217;s verify that the redistributed routes have the correct metrics:</p>
<p><code><span style="color:#0000ff;">R1#debug ip rip<br />
</span>Mar 1 <span style="color:#ff0000;">01:33:23.859</span>: RIP: sending v2 update to 224.0.0.9 via Serial0/0 (10.0.12.1)<br />
Mar 1 <span style="color:#ff0000;">01:33:23.859</span>: RIP: build update entries<br />
Mar 1 <span style="color:#ff0000;">01:33:23.859</span>: 1.1.1.0/24 via 0.0.0.0, metric 3, tag 0<br />
Mar 1 <span style="color:#ff0000;">01:33:23.863</span>: 1.1.2.0/24 via 0.0.0.0, metric 4, tag 0<br />
Mar 1 <span style="color:#ff0000;">01:33:23.863</span>: 1.1.3.0/24 via 0.0.0.0, metric 5, tag 0<br />
Mar 1 <span style="color:#ff0000;">01:33:23.863</span>: 1.1.4.0/24 via 0.0.0.0, metric 6, tag 0<br />
</code></p>
<p><code><span style="color:#0000ff;">R1#debug ipv6 rip<br />
</span>Mar 1 <span style="color:#ff0000;">01:33:54.007</span>: RIPng: Sending multicast update on Serial0/0 for asdf<br />
Mar 1 <span style="color:#ff0000;">01:33:54.007</span>: src=FE80::C601:9FF:FEFC:0<br />
Mar 1 <span style="color:#ff0000;">01:33:54.011</span>: dst=FF02::9 (Serial0/0)<br />
Mar 1 <span style="color:#ff0000;">01:33:54.011</span>: sport=521, dport=521, length=112<br />
Mar 1 <span style="color:#ff0000;">01:33:54.011</span>: command=2, version=1, mbz=0, #rte=5<br />
Mar 1 <span style="color:#ff0000;">01:33:54.011</span>: tag=0, metric=3, prefix=2001:0:0:1111::/64<br />
Mar 1 <span style="color:#ff0000;">01:33:54.011</span>: tag=0, metric=1, prefix=2001:12::/64<br />
Mar 1 <span style="color:#ff0000;">01:33:54.015</span>: tag=0, metric=4, prefix=2001:0:0:1112::/64<br />
Mar 1 <span style="color:#ff0000;">01:33:54.015</span>: tag=0, metric=5, prefix=2001:0:0:1113::/64<br />
Mar 1 <span style="color:#ff0000;">01:33:54.015</span>: tag=0, metric=6, prefix=2001:0:0:1114::/64<br />
</code></p>
<p><img class="alignnone size-full wp-image-860" title="3-r4-route-table" src="http://cisconinja.files.wordpress.com/2009/05/3-r4-route-table.png?w=485&#038;h=234" alt="3-r4-route-table" width="485" height="234" /></p>
<p><img class="alignnone size-full wp-image-861" title="3-r4-route-table-ipv6" src="http://cisconinja.files.wordpress.com/2009/05/3-r4-route-table-ipv6.png?w=329&#038;h=376" alt="3-r4-route-table-ipv6" width="329" height="376" /></p>
<p>Now we will create the summary routes:</p>
<p><code><span style="color:#0000ff;">R1:<br />
interface Serial0/0<br />
 ip summary-address rip 1.1.0.0 255.255.248.0<br />
 ipv6 rip asdf summary-address 2001:0:0:1110::/60</span><br />
</code></p>
<p>Let&#8217;s check how the summaries are being advertised on R1:</p>
<p><code><span style="color:#0000ff;">R1#debug ip rip</span><br />
Mar 1 <span style="color:#ff0000;">01:33:11.163</span>: RIP: sending v2 update to 224.0.0.9 via Serial0/0 (10.0.12.1)<br />
Mar 1 <span style="color:#ff0000;">01:33:11.163</span>: RIP: build update entries<br />
Mar 1 <span style="color:#ff0000;">01:33:11.163</span>: 1.1.0.0/21 via 0.0.0.0, metric 4, tag 0<br />
</code></p>
<p><code><span style="color:#0000ff;">R1#debug ipv6 rip</span><br />
Mar 1 <span style="color:#ff0000;">01:33:43.747</span>: RIPng: Sending multicast update on Serial0/0 for asdf<br />
Mar 1 <span style="color:#ff0000;">01:33:43.747</span>: src=FE80::C601:9FF:FEFC:0<br />
Mar 1 <span style="color:#ff0000;">01:33:43.751</span>: dst=FF02::9 (Serial0/0)<br />
Mar 1 <span style="color:#ff0000;">01:33:43.751</span>: sport=521, dport=521, length=52<br />
Mar 1 <span style="color:#ff0000;">01:33:43.751</span>: command=2, version=1, mbz=0, #rte=2<br />
Mar 1 <span style="color:#ff0000;">01:33:43.751</span>: tag=0, metric=1, prefix=2001:12::/64<br />
Mar 1 <span style="color:#ff0000;">01:33:43.751</span>: tag=0, metric=3, prefix=2001:0:0:1110::/60<br />
</code></p>
<p>RIPng used the lowest child metric (3) as the metric for the summary route.  RIPv2, however, gave it a metric of 4.  This relates to another possible bug, where routes redistributed into RIPv2 that are manually summarized have an additional hop added to the metric.  Some additional info can be found <a href="http://ccietobe.blogspot.com/2009/02/watch-rip-metric-when-summarizing.html">here</a>.  Let&#8217;s try putting the RIPv2 summary on R2 instead and see if this goes away:</p>
<p><code><span style="color:#0000ff;">R1:<br />
interface Serial0/0<br />
 no ip summary-address rip 1.1.0.0 255.255.248.0</span><br />
</code></p>
<p><code><span style="color:#0000ff;">R2#debug ip rip<br />
</span>Mar 1 <span style="color:#ff0000;">01:46:25.751</span>: RIP: received v2 update from 10.0.12.1 on Serial0/0<br />
Mar 1 <span style="color:#ff0000;">01:46:25.755</span>: 1.1.1.0/24 via 0.0.0.0 in 3 hops<br />
Mar 1 <span style="color:#ff0000;">01:46:25.755</span>: 1.1.2.0/24 via 0.0.0.0 in 4 hops<br />
Mar 1 <span style="color:#ff0000;">01:46:25.755</span>: 1.1.3.0/24 via 0.0.0.0 in 5 hops<br />
Mar 1 <span style="color:#ff0000;">01:46:25.755</span>: 1.1.4.0/24 via 0.0.0.0 in 6 hops<br />
Mar 1 <span style="color:#ff0000;">01:46:47.503</span>: RIP: sending v2 update to 224.0.0.9 via Serial0/1 (10.0.23.2)<br />
Mar 1 <span style="color:#ff0000;">01:46:47.503</span>: RIP: build update entries<br />
Mar 1 <span style="color:#ff0000;">01:46:47.503</span>: 1.1.1.0/24 via 0.0.0.0, metric 4, tag 0<br />
Mar 1 <span style="color:#ff0000;">01:46:47.507</span>: 1.1.2.0/24 via 0.0.0.0, metric 5, tag 0<br />
Mar 1 <span style="color:#ff0000;">01:46:47.507</span>: 1.1.3.0/24 via 0.0.0.0, metric 6, tag 0<br />
Mar 1 <span style="color:#ff0000;">01:46:47.507</span>: 1.1.4.0/24 via 0.0.0.0, metric 7, tag 0<br />
Mar 1 <span style="color:#ff0000;">01:46:47.507</span>: 2.2.2.0/24 via 0.0.0.0, metric 1, tag 0<br />
Mar 1 <span style="color:#ff0000;">01:46:47.511</span>: 10.0.12.0/24 via 0.0.0.0, metric 1, tag 0<br />
</code></p>
<p><code><span style="color:#0000ff;">R2:<br />
interface Serial0/1<br />
 ip summary-address rip 1.1.0.0 255.255.248.0</span><br />
</code></p>
<p><code><span style="color:#0000ff;">R2#debug ip rip<br />
</span>Mar 1 <span style="color:#ff0000;">01:47:41.935</span>: RIP: sending v2 update to 224.0.0.9 via Serial0/1 (10.0.23.2)<br />
Mar 1 <span style="color:#ff0000;">01:47:41.935</span>: RIP: build update entries<br />
Mar 1 <span style="color:#ff0000;">01:47:41.935</span>: 1.1.0.0/21 via 0.0.0.0, metric 4, tag 0<br />
Mar 1 <span style="color:#ff0000;">01:47:41.939</span>: 2.2.2.0/24 via 0.0.0.0, metric 1, tag 0<br />
Mar 1 <span style="color:#ff0000;">01:47:41.939</span>: 10.0.12.0/24 via 0.0.0.0, metric 1, tag 0<br />
</code></p>
<p>R2 now correctly uses the lowest child metric as the metric for the summary.</p>
<p><img class="alignnone size-full wp-image-862" title="4-r4-route-table" src="http://cisconinja.files.wordpress.com/2009/05/4-r4-route-table.png?w=481&#038;h=195" alt="4-r4-route-table" width="481" height="195" /></p>
<p><img class="alignnone size-full wp-image-863" title="4-r4-route-table-ipv6" src="http://cisconinja.files.wordpress.com/2009/05/4-r4-route-table-ipv6.png?w=331&#038;h=299" alt="4-r4-route-table-ipv6" width="331" height="299" /></p>
<p> </p>
<p> </p>
<p>As mentioned earlier, the bug where routes received with a hop count of 1 are not incremented applies to manual summary routes also.  If any child route has a metric of 1 the summary route metric will not be incremented.  To demonstrate this we will change the seed metric of R1 Loopback1 to 1:</p>
<p><code><span style="color:#0000ff;">R1:<br />
route-map RIPv2 permit 10<br />
 match ip address Loop1<br />
 set metric 1</span><br />
</code></p>
<p><code><span style="color:#0000ff;">R2#debug ip rip<br />
</span>Mar 1 <span style="color:#ff0000;">02:02:15.843</span>: RIP: received v2 update from 10.0.12.1 on Serial0/0<br />
Mar 1 <span style="color:#ff0000;">02:02:15.843</span>: 1.1.1.0/24 via 0.0.0.0 in 1 hops<br />
Mar 1 <span style="color:#ff0000;">02:02:15.847</span>: 1.1.2.0/24 via 0.0.0.0 in 4 hops<br />
Mar 1 <span style="color:#ff0000;">02:02:15.847</span>: 1.1.3.0/24 via 0.0.0.0 in 5 hops<br />
Mar 1 <span style="color:#ff0000;">02:02:15.847</span>: 1.1.4.0/24 via 0.0.0.0 in 6 hops<br />
Mar 1 <span style="color:#ff0000;">02:02:27.599</span>: RIP: sending v2 update to 224.0.0.9 via Serial0/1 (10.0.23.2)<br />
Mar 1 <span style="color:#ff0000;">02:02:27.599</span>: RIP: build update entries<br />
Mar 1 <span style="color:#ff0000;">02:02:27.599</span>: 1.1.0.0/21 via 0.0.0.0, metric 1, tag 0<br />
Mar 1 <span style="color:#ff0000;">02:02:27.603</span>: 2.2.2.0/24 via 0.0.0.0, metric 1, tag 0<br />
Mar 1 <span style="color:#ff0000;">02:02:27.603</span>: 10.0.12.0/24 via 0.0.0.0, metric 1, tag 0<br />
</code></p>
<p>The advertised metric remains at 1.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cisconinja.wordpress.com/847/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cisconinja.wordpress.com/847/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cisconinja.wordpress.com/847/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cisconinja.wordpress.com/847/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/cisconinja.wordpress.com/847/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/cisconinja.wordpress.com/847/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/cisconinja.wordpress.com/847/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/cisconinja.wordpress.com/847/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cisconinja.wordpress.com/847/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cisconinja.wordpress.com/847/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cisconinja.wordpress.com/847/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cisconinja.wordpress.com/847/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cisconinja.wordpress.com/847/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cisconinja.wordpress.com/847/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cisconinja.wordpress.com&amp;blog=5591147&amp;post=847&amp;subd=cisconinja&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://cisconinja.wordpress.com/2009/05/04/rip-and-ripng-metrics/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">cisconinja</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/05/rip-hop-count1.png" medium="image">
			<media:title type="html">rip-hop-count1</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/05/1-r1-route-table.png" medium="image">
			<media:title type="html">1-r1-route-table</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/05/1-r2-route-table.png" medium="image">
			<media:title type="html">1-r2-route-table</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/05/1-r3-route-table.png" medium="image">
			<media:title type="html">1-r3-route-table</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/05/1-r4-route-table1.png" medium="image">
			<media:title type="html">1-r4-route-table1</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/05/1-r1-route-table-ipv6.png" medium="image">
			<media:title type="html">1-r1-route-table-ipv6</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/05/1-r2-route-table-ipv6.png" medium="image">
			<media:title type="html">1-r2-route-table-ipv6</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/05/1-r3-route-table-ipv6.png" medium="image">
			<media:title type="html">1-r3-route-table-ipv6</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/05/1-r4-route-table-ipv61.png" medium="image">
			<media:title type="html">1-r4-route-table-ipv61</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/05/2-r4-route-table.png" medium="image">
			<media:title type="html">2-r4-route-table</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/05/3-r4-route-table.png" medium="image">
			<media:title type="html">3-r4-route-table</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/05/3-r4-route-table-ipv6.png" medium="image">
			<media:title type="html">3-r4-route-table-ipv6</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/05/4-r4-route-table.png" medium="image">
			<media:title type="html">4-r4-route-table</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/05/4-r4-route-table-ipv6.png" medium="image">
			<media:title type="html">4-r4-route-table-ipv6</media:title>
		</media:content>
	</item>
		<item>
		<title>RIP Timers</title>
		<link>http://cisconinja.wordpress.com/2009/04/27/rip-timers/</link>
		<comments>http://cisconinja.wordpress.com/2009/04/27/rip-timers/#comments</comments>
		<pubDate>Tue, 28 Apr 2009 01:58:47 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
				<category><![CDATA[IPv6]]></category>
		<category><![CDATA[RIP]]></category>

		<guid isPermaLink="false">http://cisconinja.wordpress.com/?p=791</guid>
		<description><![CDATA[This post will take a look at the various timers used in RIP and RIPng, and some of the differences between how they are supposed to work and how they actually do work .  RIPv2 with no auto-summary and RIPng are enabled for every interface on each router.  The topology and configurations of each router are [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cisconinja.wordpress.com&amp;blog=5591147&amp;post=791&amp;subd=cisconinja&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>This post will take a look at the various timers used in RIP and RIPng, and some of the differences between how they are supposed to work and how they actually do work .  RIPv2 with <strong>no auto-summary </strong>and RIPng are enabled for every interface on each router.  The topology and configurations of each router are shown below:</p>
<p><img class="alignnone size-full wp-image-795" title="rip-timers3" src="http://cisconinja.files.wordpress.com/2009/04/rip-timers3.png?w=481&#038;h=399" alt="rip-timers3" width="481" height="399" /></p>
<p><code><span style="color:#0000ff;">R1:<br />
ipv6 unicast-routing<br />
!<br />
interface Serial0/0<br />
 ip address 10.0.12.1 255.255.255.0<br />
 ipv6 address 2001:DB8:0:12::1/64<br />
 ipv6 address FE80::1 link-local<br />
 ipv6 rip test enable<br />
!<br />
router rip<br />
 version 2<br />
 network 10.0.0.0<br />
 no auto-summary<br />
!<br />
ipv6 router rip test</span><br />
</code></p>
<p><code><span style="color:#0000ff;">R2:<br />
ipv6 unicast-routing<br />
!<br />
interface Serial0/0<br />
 ip address 10.0.12.2 255.255.255.0<br />
 ipv6 address 2001:DB8:0:12::2/64<br />
 ipv6 address FE80::2 link-local<br />
 ipv6 rip test enable<br />
!<br />
interface Serial0/1<br />
 ip address 10.0.23.2 255.255.255.0<br />
 ipv6 address 2001:DB8:0:23::2/64<br />
 ipv6 address FE80::2 link-local<br />
 ipv6 rip test enable<br />
!<br />
router rip<br />
 version 2<br />
 network 10.0.0.0<br />
 no auto-summary<br />
!<br />
ipv6 router rip test</span><br />
</code></p>
<p><code><span style="color:#0000ff;">R3:<br />
ipv6 unicast-routing<br />
!<br />
interface FastEthernet0/0<br />
 ip address 10.0.34.3 255.255.255.0<br />
 ipv6 address 2001:DB8:0:34::3/64<br />
 ipv6 address FE80::3 link-local<br />
 ipv6 rip test enable<br />
!<br />
interface Serial0/0<br />
 ip address 10.0.23.3 255.255.255.0<br />
 ipv6 address 2001:DB8:0:23::3/64<br />
 ipv6 address FE80::3 link-local<br />
 ipv6 rip test enable<br />
!<br />
router rip<br />
 version 2<br />
 network 10.0.0.0<br />
 no auto-summary<br />
!<br />
ipv6 router rip test<br />
</span></code></p>
<p><code><span style="color:#0000ff;">R4:<br />
ipv6 unicast-routing<br />
!<br />
interface Loopback0<br />
 ip address 4.4.4.4 255.255.255.0<br />
 ipv6 address 2001:DB8:0:4444::4/64<br />
 ipv6 address FE80::4 link-local<br />
 ipv6 rip test enable<br />
!<br />
interface FastEthernet0/0<br />
 ip address 10.0.34.4 255.255.255.0<br />
 ipv6 address 2001:DB8:0:34::4/64<br />
 ipv6 address FE80::4 link-local<br />
 ipv6 rip test enable<br />
!<br />
router rip<br />
 version 2<br />
 passive-interface Loopback0<br />
 network 4.0.0.0<br />
 network 10.0.0.0<br />
 no auto-summary<br />
!<br />
ipv6 router rip test<br />
</span></code></p>
<p>The update interval configured under the routing process controls when RIP updates are sent.  Updates are sent at the configured interval minus a random amount of time up to 15% of the update interval.  For RIPv1/RIPv2, the update period can also be controlled per interface using <strong>ip rip advertise</strong>.  This command is nowhere to be found in Cisco’s documentation, but it does just what it sounds like it should.  Here R2 is configured to send updates out S0/1 every 10 seconds (minus the random jitter time), while S0/0 continues to use the default of 30 seconds:</p>
<p><code><span style="color:#0000ff;">R2:<br />
interface Serial0/1<br />
 ip rip advertise 10</span><br />
</code></p>
<p><code><span style="color:#0000ff;">R2#debug ip rip</span><br />
Mar 1 <span style="color:#ff0000;">00:10:55.471</span>: RIP: sending v2 update to 224.0.0.9 via Serial0/0 (10.0.12.2)<br />
Mar 1 <span style="color:#ff0000;">00:10:55.471</span>: RIP: build update entries<br />
Mar 1 <span style="color:#ff0000;">00:10:55.471</span>: 4.4.4.0/24 via 0.0.0.0, metric 3, tag 0<br />
Mar 1 <span style="color:#ff0000;">00:10:55.471</span>: 10.0.23.0/24 via 0.0.0.0, metric 1, tag 0<br />
Mar 1 <span style="color:#ff0000;">00:10:55.471</span>: 10.0.34.0/24 via 0.0.0.0, metric 2, tag 0<br />
Mar 1 <span style="color:#ff0000;">00:11:00.967</span>: RIP: sending v2 update to 224.0.0.9 via Serial0/1 (10.0.23.2)<br />
Mar 1 <span style="color:#ff0000;">00:11:00.967</span>: RIP: build update entries<br />
Mar 1 <span style="color:#ff0000;">00:11:00.967</span>: 10.0.12.0/24 via 0.0.0.0, metric 1, tag 0<br />
Mar 1 <span style="color:#ff0000;">00:11:09.515</span>: RIP: sending v2 update to 224.0.0.9 via Serial0/1 (10.0.23.2)<br />
Mar 1 <span style="color:#ff0000;">00:11:09.515</span>: RIP: build update entries<br />
Mar 1 <span style="color:#ff0000;">00:11:09.515</span>: 10.0.12.0/24 via 0.0.0.0, metric 1, tag 0<br />
Mar 1 <span style="color:#ff0000;">00:11:19.343</span>: RIP: sending v2 update to 224.0.0.9 via Serial0/1 (10.0.23.2)<br />
Mar 1 <span style="color:#ff0000;">00:11:19.343</span>: RIP: build update entries<br />
Mar 1 <span style="color:#ff0000;">00:11:19.343</span>: 10.0.12.0/24 via 0.0.0.0, metric 1, tag 0<br />
Mar 1 <span style="color:#ff0000;">00:11:23.023</span>: RIP: sending v2 update to 224.0.0.9 via Serial0/0 (10.0.12.2)<br />
Mar 1 <span style="color:#ff0000;">00:11:23.023</span>: RIP: build update entries<br />
Mar 1 <span style="color:#ff0000;">00:11:23.023</span>: 4.4.4.0/24 via 0.0.0.0, metric 3, tag 0<br />
Mar 1 <span style="color:#ff0000;">00:11:23.027</span>: 10.0.23.0/24 via 0.0.0.0, metric 1, tag 0<br />
Mar 1 <span style="color:#ff0000;">00:11:23.027</span>: 10.0.34.0/24 via 0.0.0.0, metric 2, tag 0<br />
Mar 1 <span style="color:#ff0000;">00:11:29.131</span>: RIP: sending v2 update to 224.0.0.9 via Serial0/1 (10.0.23.2)<br />
Mar 1 <span style="color:#ff0000;">00:11:29.131</span>: RIP: build update entries<br />
Mar 1 <span style="color:#ff0000;">00:11:29.131</span>: 10.0.12.0/24 via 0.0.0.0, metric 1, tag 0<br />
Mar 1 <span style="color:#ff0000;">00:11:38.599</span>: RIP: sending v2 update to 224.0.0.9 via Serial0/1 (10.0.23.2)<br />
Mar 1 <span style="color:#ff0000;">00:11:38.599</span>: RIP: build update entries<br />
Mar 1 <span style="color:#ff0000;">00:11:38.599</span>: 10.0.12.0/24 via 0.0.0.0, metric 1, tag 0<br />
Mar 1 <span style="color:#ff0000;">00:11:47.939</span>: RIP: sending v2 update to 224.0.0.9 via Serial0/1 (10.0.23.2)<br />
Mar 1 <span style="color:#ff0000;">00:11:47.939</span>: RIP: build update entries<br />
Mar 1 <span style="color:#ff0000;">00:11:47.939</span>: 10.0.12.0/24 via 0.0.0.0, metric 1, tag 0<br />
</code></p>
<p>RIPng does not have a way of controlling the update period per interface.  RIPv1/RIPv2 also support the configuration of a flash update threshold, designed to suppress flash updates from being sent if the next periodic update is due to be sent in less than the configured interval.  We will configure R4 with a flash update threshold of 30 seconds and shutdown it’s loopback interface:</p>
<p><code><span style="color:#0000ff;">R4:<br />
router rip<br />
 flash-update-threshold 30</span><br />
</code></p>
<p><img class="alignnone size-full wp-image-797" title="1-rip-flash-interval1" src="http://cisconinja.files.wordpress.com/2009/04/1-rip-flash-interval1.png?w=539&#038;h=27" alt="1-rip-flash-interval1" width="539" height="27" /></p>
<p><code><span style="color:#0000ff;">R4:<br />
interface Loopback0<br />
 shutdown</span><br />
</code></p>
<p><code><span style="color:#0000ff;">R4#debug ip rip</span><br />
Mar 1 <span style="color:#ff0000;">00:31:23.931</span>: RIP: sending v2 flash update to 224.0.0.9 via FastEthernet0/0 (10.0.34.4)<br />
Mar 1 <span style="color:#ff0000;">00:31:23.931</span>: RIP: build flash update entries<br />
Mar 1 <span style="color:#ff0000;">00:31:23.931</span>: 4.4.4.0/24 via 0.0.0.0, metric 16, tag 0<br />
Mar 1 <span style="color:#ff0000;">00:31:32.103</span>: RIP: sending v2 update to 224.0.0.9 via FastEthernet0/0 (10.0.34.4)<br />
Mar 1 <span style="color:#ff0000;">00:31:32.103</span>: RIP: build update entries<br />
Mar 1 <span style="color:#ff0000;">00:31:32.103</span>: 4.4.4.0/24 via 0.0.0.0, metric 16, tag 0<br />
</code></p>
<p>Unfortunately the command does not seem to work.  With an update period of 30 seconds and flash update threshold of 30 seconds, all flash updates should be suppressed.  R4 sends a flash update about the unreachable network out F0/0, even though the periodic update is due about 9 seconds later.  A search showed that some other people have run into this problem as well:</p>
<p style="padding-left:30px;"><a href="http://www.groupstudy.com/archives/ccielab/200801/msg01097.html">flash-update-threshold??</a></p>
<p style="padding-left:30px;"><a href="http://www.sadikhov.com/forum/index.php?showtopic=86246">Flash-update-threshold, has anyone seen this work in a lab?</a></p>
<p> </p>
<p>The invalid/timeout timer is 180 seconds by default in RIPv2:</p>
<p><img class="alignnone size-full wp-image-799" title="2-r3-show-ip-protocols1" src="http://cisconinja.files.wordpress.com/2009/04/2-r3-show-ip-protocols1.png?w=500&#038;h=261" alt="2-r3-show-ip-protocols1" width="500" height="261" /></p>
<p>The invalid timer is reset for a route each time an update is received for it from the best route source.  The current routing table on R3 looks like this:</p>
<p><img class="alignnone size-full wp-image-800" title="2-r3-show-ip-route1" src="http://cisconinja.files.wordpress.com/2009/04/2-r3-show-ip-route1.png?w=514&#038;h=118" alt="2-r3-show-ip-route1" width="514" height="118" /></p>
<p>R3 has learned 2 routes from RIP.  4.4.4.0/24 was learned on F0/0 from R4 and 10.0.12.0/24 was learned on S0/0 from R2.  As expected, both routes were last heard from less than 30 seconds ago since no updates were missed.  Now we will shut down R4 F0/0 so that R3 stops receiving RIP updates from it:</p>
<p><code><span style="color:#0000ff;">R4:<br />
interface FastEthernet0/0<br />
 shutdown</span><br />
</code></p>
<p>R3 receives the last update from R4 at <span style="color:#ff0000;"><span style="font-family:Courier New;">00:52:06.079</span></span>, just prior to shutting down the interface:</p>
<p><code><span style="color:#0000ff;">R3#debug ip rip<br />
</span>Mar 1 <span style="color:#ff0000;">00:52:06.079</span>: RIP: received v2 update from 10.0.34.4 on FastEthernet0/0<br />
Mar 1 <span style="color:#ff0000;">00:52:06.079</span>: 4.4.4.0/24 via 0.0.0.0 in 1 hops<br />
</code></p>
<p>Since no updates about 4.4.4.0/24 are received from R4, the timer for the route continues incrementing:</p>
<p><img class="alignnone size-full wp-image-801" title="3-r3-show-ip-route1" src="http://cisconinja.files.wordpress.com/2009/04/3-r3-show-ip-route1.png?w=517&#038;h=119" alt="3-r3-show-ip-route1" width="517" height="119" /></p>
<p>Just over 180 seconds after the last update was received, log messages show that the route has been deleted and entered holddown.  We can also see that a flash update is sent for the route a couple seconds later, using poison-reverse rules to advertise it as unreachable out both S0/0 and F0/0.  The route continues to be included in periodic updates out each interface as well:</p>
<p style="text-align:left;"><code><span style="color:#0000ff;">R3#debug ip rip<br />
R3#debug ip routing<br />
</span>Mar 1 <span style="color:#ff0000;">00:55:09.315</span>: RT: delete route to 4.4.4.0 via 10.0.34.4, rip metric [120/1]<br />
Mar 1 <span style="color:#ff0000;">00:55:09.315</span>: RT: SET_LAST_RDB for 4.4.4.0/24<br />
OLD rdb: via 11.13.11.13<br />
Mar 1 <span style="color:#ff0000;">00:55:09.319</span>: RT: no routes to 4.4.4.0, entering holddown<br />
Mar 1 <span style="color:#ff0000;">00:55:09.319</span>: RT: NET-RED 4.4.4.0/24<br />
Mar 1 <span style="color:#ff0000;">00:55:11.323</span>: RIP: sending v2 flash update to 224.0.0.9 via FastEthernet0/0 (10.0.34.3)<br />
Mar 1 <span style="color:#ff0000;">00:55:11.323</span>: RIP: build flash update entries<br />
Mar 1 <span style="color:#ff0000;">00:55:11.323</span>: 4.4.4.0/24 via 0.0.0.0, metric 16, tag 0<br />
Mar 1 <span style="color:#ff0000;">00:55:11.327</span>: RIP: sending v2 flash update to 224.0.0.9 via Serial0/0 (10.0.23.3)<br />
Mar 1 <span style="color:#ff0000;">00:55:11.327</span>: RIP: build flash update entries<br />
Mar 1 <span style="color:#ff0000;">00:55:11.327</span>: 4.4.4.0/24 via 0.0.0.0, metric 16, tag 0<br />
Mar 1 <span style="color:#ff0000;">00:55:27.775</span>: RIP: sending v2 update to 224.0.0.9 via FastEthernet0/0 (10.0.34.3)<br />
Mar 1 <span style="color:#ff0000;">00:55:27.775</span>: RIP: build update entries<br />
Mar 1 <span style="color:#ff0000;">00:55:27.775</span>: 4.4.4.0/24 via 0.0.0.0, metric 16, tag 0<br />
Mar 1 <span style="color:#ff0000;">00:55:27.779</span>: 10.0.12.0/24 via 0.0.0.0, metric 2, tag 0<br />
Mar 1 <span style="color:#ff0000;">00:55:27.779</span>: 10.0.23.0/24 via 0.0.0.0, metric 1, tag 0<br />
Mar 1 <span style="color:#ff0000;">00:55:30.955</span>: RIP: sending v2 update to 224.0.0.9 via Serial0/0 (10.0.23.3)<br />
Mar 1 <span style="color:#ff0000;">00:55:30.955</span>: RIP: build update entries<br />
Mar 1 <span style="color:#ff0000;">00:55:30.955</span>: 4.4.4.0/24 via 0.0.0.0, metric 16, tag 0<br />
Mar 1 <span style="color:#ff0000;">00:55:30.955</span>: 10.0.34.0/24 via 0.0.0.0, metric 1, tag 0<br />
</code></p>
<p>There are a couple confusing things about the debug outputs shown above.  First, although it says the route has been deleted from the routing table, it actually is still in both the routing table and RIP database at this point.  The route is listed as “possibly down”, but continues to be used for forwarding packets:</p>
<p><img class="alignnone size-full wp-image-802" title="4-r3-show-ip-route1" src="http://cisconinja.files.wordpress.com/2009/04/4-r3-show-ip-route1.png?w=482&#038;h=131" alt="4-r3-show-ip-route1" width="482" height="131" /></p>
<p><img class="alignnone size-full wp-image-803" title="4-r3-rip-database1" src="http://cisconinja.files.wordpress.com/2009/04/4-r3-rip-database1.png?w=412&#038;h=105" alt="4-r3-rip-database1" width="412" height="105" /></p>
<p><code><span style="color:#0000ff;">R3#debug ip packet<br />
R3#ping 4.4.4.4 repeat 1</span></code></p>
<p><code>Type escape sequence to abort.<br />
Sending 1, 100-byte ICMP Echos to 4.4.4.4, timeout is 2 seconds:</code></p>
<p><code>Mar 1 <span style="color:#ff0000;">00:55:48.871</span>: IP: tableid=0, s=10.0.34.3 (local), d=4.4.4.4 (FastEthernet0/0), routed via RIB<br />
Mar 1 <span style="color:#ff0000;">00:55:48.871</span>: IP: s=10.0.34.3 (local), d=4.4.4.4 (FastEthernet0/0), len 100, sending</code></p>
<p>Another possibly confusing thing is that the output shows the route entering holddown.  We will look at what happens when a route enters holddown and the circumstances that cause the holddown timer to be used later, but for now it is important to note that the behavior we are seeing &#8211; the route showing up as possibly down in both the routing table and RIP database, and poison-reverse being used to advertise the route as unreachable immediately in flash updates and then periodically in regular updates &#8211; is caused by the invalid timer expiring, not by entering the holddown state.  To show this, we will set the holddown timer to 0.  We will also reduce the invalid timer to 120 and keep the other timers at their defaults:</p>
<p><code><span style="color:#0000ff;">R3:<br />
router rip<br />
 timers basic 30 120 0 240</span><br />
</code></p>
<p><img class="alignnone size-full wp-image-804" title="5-r3-show-ip-protocols1" src="http://cisconinja.files.wordpress.com/2009/04/5-r3-show-ip-protocols1.png?w=475&#038;h=28" alt="5-r3-show-ip-protocols1" width="475" height="28" /></p>
<p>After bringing R4 F0/0 back up and allowing the network to converge, we will shut it down again:</p>
<p><code><span style="color:#0000ff;">R4:<br />
interface FastEthernet0/0<br />
 shutdown</span><br />
</code></p>
<p>R3 receives the last update from R4 at <span style="color:#ff0000;"><span style="font-family:Courier New;">01:12:57.635</span></span>, just prior to the shutdown:</p>
<p><code><span style="color:#0000ff;">R3#debug ip rip</span><br />
Mar 1 <span style="color:#ff0000;">01:12:57.635</span>: RIP: received v2 update from 10.0.34.4 on FastEthernet0/0<br />
Mar 1 <span style="color:#ff0000;">01:12:57.639</span>: 4.4.4.0/24 via 0.0.0.0 in 1 hops<br />
</code></p>
<p>A little over 120 seconds later, the route again shows up as possibly down in the routing table and RIP database, and is advertised as unreachable:</p>
<p><code><span style="color:#0000ff;">R3#debug ip routing<br />
R3#debug ip rip</span><br />
Mar 1 <span style="color:#ff0000;">01:14:59.551</span>: RT: delete route to 4.4.4.0 via 10.0.34.4, rip metric [120/1]<br />
Mar 1 <span style="color:#ff0000;">01:14:59.555</span>: RT: SET_LAST_RDB for 4.4.4.0/24<br />
OLD rdb: via 11.13.11.13<br />
Mar 1 <span style="color:#ff0000;">01:14:59.555</span>: RT: no routes to 4.4.4.0, entering holddown<br />
Mar 1 <span style="color:#ff0000;">01:14:59.555</span>: RT: NET-RED 4.4.4.0/24<br />
Mar 1 <span style="color:#ff0000;">01:15:01.559</span>: RIP: sending v2 flash update to 224.0.0.9 via FastEthernet0/0 (10.0.34.3)<br />
Mar 1 <span style="color:#ff0000;">01:15:01.559</span>: RIP: build flash update entries<br />
Mar 1 <span style="color:#ff0000;">01:15:01.559</span>: 4.4.4.0/24 via 0.0.0.0, metric 16, tag 0<br />
Mar 1 <span style="color:#ff0000;">01:15:01.563</span>: RIP: sending v2 flash update to 224.0.0.9 via Serial0/0 (10.0.23.3)<br />
Mar 1 <span style="color:#ff0000;">01:15:01.563</span>: RIP: build flash update entries<br />
Mar 1 <span style="color:#ff0000;">01:15:01.563</span>: 4.4.4.0/24 via 0.0.0.0, metric 16, tag 0<br />
Mar 1 <span style="color:#ff0000;">01:15:03.639</span>: RT: 4.4.4.0 came out of holddown<br />
Mar 1 <span style="color:#ff0000;">01:15:15.451</span>: RIP: sending v2 update to 224.0.0.9 via FastEthernet0/0 (10.0.34.3)<br />
Mar 1 <span style="color:#ff0000;">01:15:15.451</span>: RIP: build update entries<br />
Mar 1 <span style="color:#ff0000;">01:15:15.451</span>: 4.4.4.0/24 via 0.0.0.0, metric 16, tag 0<br />
Mar 1 <span style="color:#ff0000;">01:15:15.455</span>: 10.0.12.0/24 via 0.0.0.0, metric 2, tag 0<br />
Mar 1 <span style="color:#ff0000;">01:15:15.455</span>: 10.0.23.0/24 via 0.0.0.0, metric 1, tag 0<br />
Mar 1 <span style="color:#ff0000;">01:15:21.479</span>: RIP: sending v2 update to 224.0.0.9 via Serial0/0 (10.0.23.3)<br />
Mar 1 <span style="color:#ff0000;">01:15:21.479</span>: RIP: build update entries<br />
Mar 1 <span style="color:#ff0000;">01:15:21.479</span>: 4.4.4.0/24 via 0.0.0.0, metric 16, tag 0<br />
Mar 1 <span style="color:#ff0000;">01:15:21.483</span>: 10.0.34.0/24 via 0.0.0.0, metric 1, tag 0<br />
</code></p>
<p><img class="alignnone size-full wp-image-805" title="5-r3-show-ip-route1" src="http://cisconinja.files.wordpress.com/2009/04/5-r3-show-ip-route1.png?w=482&#038;h=132" alt="5-r3-show-ip-route1" width="482" height="132" /></p>
<p><img class="alignnone size-full wp-image-806" title="5-r3-rip-database1" src="http://cisconinja.files.wordpress.com/2009/04/5-r3-rip-database1.png?w=411&#038;h=104" alt="5-r3-rip-database1" width="411" height="104" /></p>
<p> </p>
<p> </p>
<p>There are a few differences in the use of the invalid timer in RIPng, mostly related to naming and display output.  Instead of the invalid timer, RIPng (at least in IOS syntax) calls it the route timeout or expiration timer.  Instead of counting upward from the time the last route update was heard, RIPng counts downward starting at the value of the invalid timer, and the timer is only shown in the RIP database:</p>
<p><img class="alignnone size-full wp-image-807" title="6-r3-ripng-database1" src="http://cisconinja.files.wordpress.com/2009/04/6-r3-ripng-database1.png?w=395&#038;h=131" alt="6-r3-ripng-database1" width="395" height="131" /></p>
<p>Like RIPv1 and RIPv2, RIPng uses a 180 second invalid timer by default:</p>
<p><img class="alignnone size-full wp-image-808" title="6-r3-ripng1" src="http://cisconinja.files.wordpress.com/2009/04/6-r3-ripng1.png?w=498&#038;h=170" alt="6-r3-ripng1" width="498" height="170" /></p>
<p>We will shut down R4 F0/0 so that R3 stops receiving updates from it:</p>
<p><code><span style="color:#0000ff;">R4:<br />
interface FastEthernet0/0<br />
 shutdown</span><br />
</code></p>
<p style="padding-left:30px;"><em>Note: RIPng on R4 would sometimes send a flash update advertising all known networks as unreachable as it was shutdown.  I’m not sure why it happened sometimes and not others, but it may be necessary to filter the route inbound on R3 or outbound on R4 instead of shutting down R4 F0/0 in order to see the invalid timer expire if this keeps occuring.</em></p>
<p>R3 receives the last update from R4 at <span style="color:#ff0000;"><span style="font-family:Courier New;">01:33:14.979</span></span>, just prior to the shutdown:</p>
<p><code><span style="color:#0000ff;">R3#debug ipv6 rip</span><br />
Mar 1 <span style="color:#ff0000;">01:33:14.979</span>: RIPng: response received from FE80::4 on FastEthernet0/0 for test<br />
Mar 1 <span style="color:#ff0000;">01:33:14.979</span>: src=FE80::4 (FastEthernet0/0)<br />
Mar 1 <span style="color:#ff0000;">01:33:14.979</span>: dst=FF02::9<br />
Mar 1 <span style="color:#ff0000;">01:33:14.979</span>: sport=521, dport=521, length=52<br />
Mar 1 <span style="color:#ff0000;">01:33:14.983</span>: command=2, version=1, mbz=0, #rte=2<br />
Mar 1 <span style="color:#ff0000;">01:33:14.983</span>: tag=0, metric=1, prefix=2001:DB8:0:4444::/64<br />
Mar 1 <span style="color:#ff0000;">01:33:14.983</span>: tag=0, metric=1, prefix=2001:DB8:0:34::/64<br />
</code></p>
<p>180 seconds later, the invalid timer expires and the route is removed from the routing table. Flash updates are sent about the unreachable route 1 second later, followed by the regular periodic updates a few seconds after that:</p>
<p><code><span style="color:#0000ff;">R3#debug ipv6 routing<br />
R3#debug ipv6 rip</span><br />
Mar 1 <span style="color:#ff0000;">01:36:14.983</span>: IPv6RT0: rip test, Delete backup for 2001:DB8:0:34::/64<br />
Mar 1 <span style="color:#ff0000;">01:36:14.983</span>: RIPng: 2001:DB8:0:34::/64, expired, ttg is 0<br />
Mar 1 <span style="color:#ff0000;">01:36:14.983</span>: RIPng: Deleting 2001:DB8:0:34::/64<br />
Mar 1 <span style="color:#ff0000;">01:36:14.983</span>: IPv6RT0: rip test, Delete 2001:DB8:0:4444::/64 from table<br />
Mar 1 <span style="color:#ff0000;">01:36:14.983</span>: RIPng: 2001:DB8:0:4444::/64, expired, ttg is 120<br />
Mar 1 <span style="color:#ff0000;">01:36:14.983</span>: RIPng: Triggered update requested<br />
Mar 1 <span style="color:#ff0000;">01:36:14.983</span>: RIPng: Next RIB walk in 2000<br />
Mar 1 <span style="color:#ff0000;">01:36:14.983</span>: IPv6RT0: Event: 2001:DB8:0:4444::/64, Del, owner rip, previous None<br />
Mar 1 <span style="color:#ff0000;">01:36:15.983</span>: RIPng: generating triggered update for test<br />
Mar 1 <span style="color:#ff0000;">01:36:15.983</span>: RIPng: Sending multicast update on Serial0/0 for test<br />
Mar 1 <span style="color:#ff0000;">01:36:15.983</span>: src=FE80::3<br />
Mar 1 <span style="color:#ff0000;">01:36:15.983</span>: dst=FF02::9 (Serial0/0)<br />
Mar 1 <span style="color:#ff0000;">01:36:15.987</span>: sport=521, dport=521, length=32<br />
Mar 1 <span style="color:#ff0000;">01:36:15.987</span>: command=2, version=1, mbz=0, #rte=1<br />
Mar 1 <span style="color:#ff0000;">01:36:15.987</span>: tag=0, metric=16, prefix=2001:DB8:0:4444::/64<br />
Mar 1 <span style="color:#ff0000;">01:36:15.991</span>: RIPng: Suppressed null multicast update on FastEthernet0/0 for test<br />
Mar 1 <span style="color:#ff0000;">01:36:16.983</span>: RIPng: Next RIB walk in 118000<br />
Mar 1 <span style="color:#ff0000;">01:36:29.099</span>: RIPng: Sending multicast update on Serial0/0 for test<br />
Mar 1 <span style="color:#ff0000;">01:36:29.099</span>: src=FE80::3<br />
Mar 1 <span style="color:#ff0000;">01:36:29.099</span>: dst=FF02::9 (Serial0/0)<br />
Mar 1 <span style="color:#ff0000;">01:36:29.103</span>: sport=521, dport=521, length=72<br />
Mar 1 <span style="color:#ff0000;">01:36:29.103</span>: command=2, version=1, mbz=0, #rte=3<br />
Mar 1 <span style="color:#ff0000;">01:36:29.103</span>: tag=0, metric=1, prefix=2001:DB8:0:23::/64<br />
Mar 1 <span style="color:#ff0000;">01:36:29.103</span>: tag=0, metric=1, prefix=2001:DB8:0:34::/64<br />
Mar 1 <span style="color:#ff0000;">01:36:29.103</span>: tag=0, metric=16, prefix=2001:DB8:0:4444::/64<br />
Mar 1 <span style="color:#ff0000;">01:36:29.107</span>: RIPng: Sending multicast update on FastEthernet0/0 for test<br />
Mar 1 <span style="color:#ff0000;">01:36:29.107</span>: src=FE80::3<br />
Mar 1 <span style="color:#ff0000;">01:36:29.107</span>: dst=FF02::9 (FastEthernet0/0)<br />
Mar 1 <span style="color:#ff0000;">01:36:29.111</span>: sport=521, dport=521, length=72<br />
Mar 1 <span style="color:#ff0000;">01:36:29.111</span>: command=2, version=1, mbz=0, #rte=3<br />
Mar 1 <span style="color:#ff0000;">01:36:29.111</span>: tag=0, metric=1, prefix=2001:DB8:0:23::/64<br />
Mar 1 <span style="color:#ff0000;">01:36:29.111</span>: tag=0, metric=1, prefix=2001:DB8:0:34::/64<br />
Mar 1 <span style="color:#ff0000;">01:36:29.111</span>: tag=0, metric=2, prefix=2001:DB8:0:12::/64<br />
</code></p>
<p><img class="alignnone size-full wp-image-810" title="7-r3-show-ipv6-route1" src="http://cisconinja.files.wordpress.com/2009/04/7-r3-show-ipv6-route1.png?w=505&#038;h=232" alt="7-r3-show-ipv6-route1" width="505" height="232" /> </p>
<p><img class="alignnone size-full wp-image-811" title="7-r3-ripng-database1" src="http://cisconinja.files.wordpress.com/2009/04/7-r3-ripng-database1.png?w=524&#038;h=105" alt="7-r3-ripng-database1" width="524" height="105" /></p>
<p>As shown in the routing table above, when the invalid timer expires the route is immediately removed from the routing table, unlike RIPv1 and RIPv2.  In the RIPng database, it is listed as expired, and 2 additional timers that we will look at shortly are now listed as well for the failed route.  One other difference compared to RIPv1/RIPv2 is that by default RIPng does not use poison-reverse.  When R3 sent flash updates about the unreachable route, the update on F0/0 was suppressed (the message at <span style="color:#ff0000;">01:36:15.991</span>) because the only route to be advertised in the flash update was known on that interface.  The periodic update on F0/0 (at <span style="color:#ff0000;">01:36:29.111</span>) also does not include a route entry for 2001:db8:0:4444::/64.  Poison-reverse can be enabled at the routing process in RIPng as shown below:</p>
<p><code><span style="color:#0000ff;">R3:<br />
ipv6 router rip test<br />
 poison-reverse</span><br />
</code></p>
<p>However, this is not the same as RIPv1/2 behavior.  RIPv1/2 use poison-reverse only for unreachable routes, with all other routes using simple split-horizon rules (if split-horizon is enabled).  RIPng uses split-horizon with poison-reverse for all non-directly-connected routes regardless of their metric if it is enabled.  With all interfaces once again enabled and the network converged, R3’s routing table and RIPng updates look like this:</p>
<p><img class="alignnone size-full wp-image-812" title="8-r3-show-ipv6-route1" src="http://cisconinja.files.wordpress.com/2009/04/8-r3-show-ipv6-route1.png?w=505&#038;h=255" alt="8-r3-show-ipv6-route1" width="505" height="255" /></p>
<p><code><span style="color:#0000ff;">R3#debug ipv6 rip</span><br />
Mar 1 <span style="color:#ff0000;">01:42:38.311</span>: RIPng: Sending multicast update on Serial0/0 for test<br />
Mar 1 <span style="color:#ff0000;">01:42:38.311</span>: src=FE80::3<br />
Mar 1 <span style="color:#ff0000;">01:42:38.311</span>: dst=FF02::9 (Serial0/0)<br />
Mar 1 <span style="color:#ff0000;">01:42:38.315</span>: sport=521, dport=521, length=92<br />
Mar 1 <span style="color:#ff0000;">01:42:38.315</span>: command=2, version=1, mbz=0, #rte=4<br />
Mar 1 <span style="color:#ff0000;">01:42:38.315</span>: tag=0, metric=1, prefix=2001:DB8:0:23::/64<br />
Mar 1 <span style="color:#ff0000;">01:42:38.315</span>: tag=0, metric=1, prefix=2001:DB8:0:34::/64<br />
Mar 1 <span style="color:#ff0000;">01:42:38.315</span>: tag=0, metric=16, prefix=2001:DB8:0:12::/64<br />
Mar 1 <span style="color:#ff0000;">01:42:38.319</span>: tag=0, metric=2, prefix=2001:DB8:0:4444::/64<br />
Mar 1 <span style="color:#ff0000;">01:42:38.319</span>: RIPng: Sending multicast update on FastEthernet0/0 for test<br />
Mar 1 <span style="color:#ff0000;">01:42:38.319</span>: src=FE80::3<br />
Mar 1 <span style="color:#ff0000;">01:42:38.323</span>: dst=FF02::9 (FastEthernet0/0)<br />
Mar 1 <span style="color:#ff0000;">01:42:38.323</span>: sport=521, dport=521, length=92<br />
Mar 1 <span style="color:#ff0000;">01:42:38.323</span>: command=2, version=1, mbz=0, #rte=4<br />
Mar 1 <span style="color:#ff0000;">01:42:38.323</span>: tag=0, metric=1, prefix=2001:DB8:0:23::/64<br />
Mar 1 <span style="color:#ff0000;">01:42:38.323</span>: tag=0, metric=1, prefix=2001:DB8:0:34::/64<br />
Mar 1 <span style="color:#ff0000;">01:42:38.327</span>: tag=0, metric=2, prefix=2001:DB8:0:12::/64<br />
Mar 1 <span style="color:#ff0000;">01:42:38.327</span>: tag=0, metric=16, prefix=2001:DB8:0:4444::/64<br />
</code></p>
<p>2001:db8:0:12::/64, known on S0/0, is advertised back out S0/0 as unreachable.  2001:db8:0:4444::/64, known on F0/0, is advertised back out F0/0 as unreachable.</p>
<p> </p>
<p>Next we will look at the flush timer, first in RIPv1/2.  The flush timer controls when a route that has not been updated is removed entirely from the routing table and RIP database.  We will be using the same scenario again, where R4 F0/0 fails.  First we will set the timers back to their defaults:</p>
<p><code><span style="color:#0000ff;">R3:<br />
router rip<br />
 default timers basic</span><br />
</code></p>
<p>The default flush timer is 240 seconds in RIPv1/2:</p>
<p><img class="alignnone size-full wp-image-816" title="9-r3-show-ip-protocols" src="http://cisconinja.files.wordpress.com/2009/04/9-r3-show-ip-protocols.png?w=491&#038;h=27" alt="9-r3-show-ip-protocols" width="491" height="27" /></p>
<p>Now we will shut down R4 F0/0 again:</p>
<p><code><span style="color:#0000ff;">R4:<br />
interface FastEthernet0/0<br />
 shutdown</span><br />
</code></p>
<p>R3 receives the last update from R4 at <span style="color:#ff0000;"><span style="font-family:Courier New;">00:25:11.695</span></span>, just prior to the shutdown:</p>
<p><code><span style="color:#0000ff;">R3#debug ip rip</span><br />
Mar 1 <span style="color:#ff0000;">00:25:11.695</span>: RIP: received v2 update from 10.0.34.4 on FastEthernet0/0<br />
Mar 1 <span style="color:#ff0000;">00:25:11.695</span>: 4.4.4.0/24 via 0.0.0.0 in 1 hops<br />
</code></p>
<p>A little over 180 seconds later, the invalid timer expires.  Like we saw earlier, the route is listed as possibly down in the routing table and RIP database, and is advertised as unreachable using poison-reverse.  The route continues to be advertised in periodic updates until the flush timer expires, after approximately 240 seconds:</p>
<p><code><span style="color:#0000ff;">R3#debug ip routing<br />
R3#debug ip rip<br />
</span>Mar 1 <span style="color:#ff0000;">00:28:14.927</span>: RT: delete route to 4.4.4.0 via 10.0.34.4, rip metric [120/1]<br />
Mar 1 <span style="color:#ff0000;">00:28:14.927</span>: RT: SET_LAST_RDB for 4.4.4.0/24<br />
OLD rdb: via 11.13.11.13<br />
Mar 1 <span style="color:#ff0000;">00:28:14.931</span>: RT: no routes to 4.4.4.0, entering holddown<br />
Mar 1 <span style="color:#ff0000;">00:28:14.931</span>: RT: NET-RED 4.4.4.0/24<br />
Mar 1 <span style="color:#ff0000;">00:28:16.931</span>: RIP: sending v2 flash update to 224.0.0.9 via FastEthernet0/0 (10.0.34.3)<br />
Mar 1 <span style="color:#ff0000;">00:28:16.931</span>: RIP: build flash update entries<br />
Mar 1 <span style="color:#ff0000;">00:28:16.931</span>: 4.4.4.0/24 via 0.0.0.0, metric 16, tag 0<br />
Mar 1 <span style="color:#ff0000;">00:28:16.931</span>: RIP: sending v2 flash update to 224.0.0.9 via Serial0/0 (10.0.23.3)<br />
Mar 1 <span style="color:#ff0000;">00:28:16.931</span>: RIP: build flash update entries<br />
Mar 1 <span style="color:#ff0000;">00:28:16.931</span>: 4.4.4.0/24 via 0.0.0.0, metric 16, tag 0<br />
Mar 1 <span style="color:#ff0000;">00:28:38.879</span>: RIP: sending v2 update to 224.0.0.9 via Serial0/0 (10.0.23.3)<br />
Mar 1 <span style="color:#ff0000;">00:28:38.879</span>: RIP: build update entries<br />
Mar 1 <span style="color:#ff0000;">00:28:38.879</span>: 4.4.4.0/24 via 0.0.0.0, metric 16, tag 0<br />
Mar 1 <span style="color:#ff0000;">00:28:38.883</span>: 10.0.34.0/24 via 0.0.0.0, metric 1, tag 0<br />
Mar 1 <span style="color:#ff0000;">00:28:40.039</span>: RIP: sending v2 update to 224.0.0.9 via FastEthernet0/0 (10.0.34.3)<br />
Mar 1 <span style="color:#ff0000;">00:28:40.039</span>: RIP: build update entries<br />
Mar 1 <span style="color:#ff0000;">00:28:40.039</span>: 4.4.4.0/24 via 0.0.0.0, metric 16, tag 0<br />
Mar 1 <span style="color:#ff0000;">00:28:40.039</span>: 10.0.12.0/24 via 0.0.0.0, metric 2, tag 0<br />
Mar 1 <span style="color:#ff0000;">00:28:40.039</span>: 10.0.23.0/24 via 0.0.0.0, metric 1, tag 0<br />
Mar 1 <span style="color:#ff0000;">00:29:08.763</span>: RIP: sending v2 update to 224.0.0.9 via Serial0/0 (10.0.23.3)<br />
Mar 1 <span style="color:#ff0000;">00:29:08.763</span>: RIP: build update entries<br />
Mar 1 <span style="color:#ff0000;">00:29:08.763</span>: 4.4.4.0/24 via 0.0.0.0, metric 16, tag 0<br />
Mar 1 <span style="color:#ff0000;">00:29:08.767</span>: 10.0.34.0/24 via 0.0.0.0, metric 1, tag 0<br />
Mar 1 <span style="color:#ff0000;">00:29:09.463</span>: RIP: sending v2 update to 224.0.0.9 via FastEthernet0/0 (10.0.34.3)<br />
Mar 1 <span style="color:#ff0000;">00:29:09.463</span>: RIP: build update entries<br />
Mar 1 <span style="color:#ff0000;">00:29:09.463</span>: 4.4.4.0/24 via 0.0.0.0, metric 16, tag 0<br />
Mar 1 <span style="color:#ff0000;">00:29:09.463</span>: 10.0.12.0/24 via 0.0.0.0, metric 2, tag 0<br />
Mar 1 <span style="color:#ff0000;">00:29:09.467</span>: 10.0.23.0/24 via 0.0.0.0, metric 1, tag 0<br />
Mar 1 <span style="color:#ff0000;">00:29:14.931</span>: RT: delete subnet route to 4.4.4.0/24<br />
Mar 1 <span style="color:#ff0000;">00:29:14.931</span>: RT: NET-RED 4.4.4.0/24<br />
Mar 1 <span style="color:#ff0000;">00:29:14.935</span>: RT: delete network route to 4.0.0.0<br />
Mar 1 <span style="color:#ff0000;">00:29:14.935</span>: RT: NET-RED 4.0.0.0/8<br />
</code></p>
<p>Using default timers, this means the route is advertised as unreachable for 60 seconds.  Once the flush timer expires and the 2nd delete message appears in the logs, the route is removed and no longer included in updates or used for forwarding.</p>
<p> </p>
<p>In RIPng, the flush timer is called the garbage collection timer.  The garbage collect timer is 120 seconds by default and does not start until the invalid timer expires, unlike RIPv1/2 where the flush timer begins at the time the last update was received:</p>
<p><img class="alignnone size-full wp-image-818" title="10-r3-ripng" src="http://cisconinja.files.wordpress.com/2009/04/10-r3-ripng.png?w=498&#038;h=170" alt="10-r3-ripng" width="498" height="170" /></p>
<p>Now we will shut down R4 F0/0 again:</p>
<p><code><span style="color:#0000ff;">R4:<br />
interface FastEthernet0/0<br />
 shutdown</span><br />
</code></p>
<p>R3 receives the last update from R4 at <span style="color:#ff0000;"><span style="font-family:Courier New;">00:31:20.699</span></span>, just prior to the shutdown:</p>
<p><code><span style="color:#0000ff;">R3#debug ipv6 rip</span><br />
Mar 1 <span style="color:#ff0000;">00:31:20.699</span>: RIPng: response received from FE80::4 on FastEthernet0/0 for test<br />
Mar 1 <span style="color:#ff0000;">00:31:20.699</span>: src=FE80::4 (FastEthernet0/0)<br />
Mar 1 <span style="color:#ff0000;">00:31:20.703</span>: dst=FF02::9<br />
Mar 1 <span style="color:#ff0000;">00:31:20.703</span>: sport=521, dport=521, length=52<br />
Mar 1 <span style="color:#ff0000;">00:31:20.703</span>: command=2, version=1, mbz=0, #rte=2<br />
Mar 1 <span style="color:#ff0000;">00:31:20.703</span>: tag=0, metric=1, prefix=2001:DB8:0:4444::/64<br />
Mar 1 <span style="color:#ff0000;">00:31:20.703</span>: tag=0, metric=1, prefix=2001:DB8:0:34::/64<br />
</code></p>
<p>180 seconds later, the invalid timer expires, and the behavior that we saw earlier when the RIPng invalid timer expires begins.  The RIP database shows how long the route will continue to be advertised (the garbage collect timer).  The route continues to be advertised in periodic updates using simple split-horizon rules until the garbage collect timer expires, after approximately 300 total seconds:</p>
<p><code><span style="color:#0000ff;">R3#debug ipv6 routing<br />
R3#debug ipv6 rip</span><br />
Mar 1 <span style="color:#ff0000;">00:34:20.703</span>: IPv6RT0: rip test, Delete backup for 2001:DB8:0:34::/64<br />
Mar 1 <span style="color:#ff0000;">00:34:20.703</span>: RIPng: 2001:DB8:0:34::/64, expired, ttg is 0<br />
Mar 1 <span style="color:#ff0000;">00:34:20.703</span>: RIPng: Deleting 2001:DB8:0:34::/64<br />
Mar 1 <span style="color:#ff0000;">00:34:20.707</span>: IPv6RT0: rip test, Delete 2001:DB8:0:4444::/64 from table<br />
Mar 1 <span style="color:#ff0000;">00:34:20.707</span>: RIPng: 2001:DB8:0:4444::/64, expired, ttg is 120<br />
Mar 1 <span style="color:#ff0000;">00:34:20.707</span>: RIPng: Triggered update requested<br />
Mar 1 <span style="color:#ff0000;">00:34:20.707</span>: RIPng: Next RIB walk in 2000<br />
Mar 1 <span style="color:#ff0000;">00:34:20.711</span>: IPv6RT0: Event: 2001:DB8:0:4444::/64, Del, owner rip, previous None<br />
Mar 1 <span style="color:#ff0000;">00:34:21.707</span>: RIPng: generating triggered update for test<br />
Mar 1 <span style="color:#ff0000;">00:34:21.707</span>: RIPng: Sending multicast update on Serial0/0 for test<br />
Mar 1 <span style="color:#ff0000;">00:34:21.707</span>: src=FE80::3<br />
Mar 1 <span style="color:#ff0000;">00:34:21.707</span>: dst=FF02::9 (Serial0/0)<br />
Mar 1 <span style="color:#ff0000;">00:34:21.711</span>: sport=521, dport=521, length=32<br />
Mar 1 <span style="color:#ff0000;">00:34:21.711</span>: command=2, version=1, mbz=0, #rte=1<br />
Mar 1 <span style="color:#ff0000;">00:34:21.711</span>: tag=0, metric=16, prefix=2001:DB8:0:4444::/64<br />
Mar 1 <span style="color:#ff0000;">00:34:21.715</span>: RIPng: Suppressed null multicast update on FastEthernet0/0 for test<br />
</code></p>
<p><img class="alignnone size-full wp-image-819" title="10-r3-ripng-database" src="http://cisconinja.files.wordpress.com/2009/04/10-r3-ripng-database.png?w=524&#038;h=105" alt="10-r3-ripng-database" width="524" height="105" /></p>
<p><code><span style="color:#0000ff;">R3#debug ipv6 routing<br />
R3#debug ipv6 rip</span><br />
Mar 1 <span style="color:#ff0000;">00:34:26.715</span>: RIPng: Sending multicast update on Serial0/0 for test<br />
Mar 1 <span style="color:#ff0000;">00:34:26.715</span>: src=FE80::3<br />
Mar 1 <span style="color:#ff0000;">00:34:26.715</span>: dst=FF02::9 (Serial0/0)<br />
Mar 1 <span style="color:#ff0000;">00:34:26.719</span>: sport=521, dport=521, length=72<br />
Mar 1 <span style="color:#ff0000;">00:34:26.719</span>: command=2, version=1, mbz=0, #rte=3<br />
Mar 1 <span style="color:#ff0000;">00:34:26.719</span>: tag=0, metric=1, prefix=2001:DB8:0:34::/64<br />
Mar 1 <span style="color:#ff0000;">00:34:26.719</span>: tag=0, metric=1, prefix=2001:DB8:0:23::/64<br />
Mar 1 <span style="color:#ff0000;">00:34:26.719</span>: tag=0, metric=16, prefix=2001:DB8:0:4444::/64<br />
Mar 1 <span style="color:#ff0000;">00:34:26.723</span>: RIPng: Sending multicast update on FastEthernet0/0 for test<br />
Mar 1 <span style="color:#ff0000;">00:34:26.723</span>: src=FE80::3<br />
Mar 1 <span style="color:#ff0000;">00:34:26.723</span>: dst=FF02::9 (FastEthernet0/0)<br />
Mar 1 <span style="color:#ff0000;">00:34:26.727</span>: sport=521, dport=521, length=72<br />
Mar 1 <span style="color:#ff0000;">00:34:26.727</span>: command=2, version=1, mbz=0, #rte=3<br />
Mar 1 <span style="color:#ff0000;">00:34:26.727</span>: tag=0, metric=1, prefix=2001:DB8:0:34::/64<br />
Mar 1 <span style="color:#ff0000;">00:34:26.727</span>: tag=0, metric=1, prefix=2001:DB8:0:23::/64<br />
Mar 1 <span style="color:#ff0000;">00:34:26.727</span>: tag=0, metric=2, prefix=2001:DB8:0:12::/64<br />
Mar 1 <span style="color:#ff0000;">00:34:56.207</span>: RIPng: Sending multicast update on Serial0/0 for test<br />
Mar 1 <span style="color:#ff0000;">00:34:56.207</span>: src=FE80::3<br />
Mar 1 <span style="color:#ff0000;">00:34:56.207</span>: dst=FF02::9 (Serial0/0)<br />
Mar 1 <span style="color:#ff0000;">00:34:56.211</span>: sport=521, dport=521, length=72<br />
Mar 1 <span style="color:#ff0000;">00:34:56.211</span>: command=2, version=1, mbz=0, #rte=3<br />
Mar 1 <span style="color:#ff0000;">00:34:56.211</span>: tag=0, metric=1, prefix=2001:DB8:0:34::/64<br />
Mar 1 <span style="color:#ff0000;">00:34:56.211</span>: tag=0, metric=1, prefix=2001:DB8:0:23::/64<br />
Mar 1 <span style="color:#ff0000;">00:34:56.211</span>: tag=0, metric=16, prefix=2001:DB8:0:4444::/64<br />
Mar 1 <span style="color:#ff0000;">00:34:56.215</span>: RIPng: Sending multicast update on FastEthernet0/0 for test<br />
Mar 1 <span style="color:#ff0000;">00:34:56.215</span>: src=FE80::3<br />
Mar 1 <span style="color:#ff0000;">00:34:56.215</span>: dst=FF02::9 (FastEthernet0/0)<br />
Mar 1 <span style="color:#ff0000;">00:34:56.219</span>: sport=521, dport=521, length=72<br />
Mar 1 <span style="color:#ff0000;">00:34:56.219</span>: command=2, version=1, mbz=0, #rte=3<br />
Mar 1 <span style="color:#ff0000;">00:34:56.219</span>: tag=0, metric=1, prefix=2001:DB8:0:34::/64<br />
Mar 1 <span style="color:#ff0000;">00:34:56.219</span>: tag=0, metric=1, prefix=2001:DB8:0:23::/64<br />
Mar 1 <span style="color:#ff0000;">00:34:56.219</span>: tag=0, metric=2, prefix=2001:DB8:0:12::/64<br />
Mar 1 <span style="color:#ff0000;">00:35:23.631</span>: RIPng: Sending multicast update on Serial0/0 for test<br />
Mar 1 <span style="color:#ff0000;">00:35:23.631</span>: src=FE80::3<br />
Mar 1 <span style="color:#ff0000;">00:35:23.631</span>: dst=FF02::9 (Serial0/0)<br />
Mar 1 <span style="color:#ff0000;">00:35:23.635</span>: sport=521, dport=521, length=72<br />
Mar 1 <span style="color:#ff0000;">00:35:23.635</span>: command=2, version=1, mbz=0, #rte=3<br />
Mar 1 <span style="color:#ff0000;">00:35:23.635</span>: tag=0, metric=1, prefix=2001:DB8:0:34::/64<br />
Mar 1 <span style="color:#ff0000;">00:35:23.635</span>: tag=0, metric=1, prefix=2001:DB8:0:23::/64<br />
Mar 1 <span style="color:#ff0000;">00:35:23.635</span>: tag=0, metric=16, prefix=2001:DB8:0:4444::/64<br />
Mar 1 <span style="color:#ff0000;">00:35:23.639</span>: RIPng: Sending multicast update on FastEthernet0/0 for test<br />
Mar 1 <span style="color:#ff0000;">00:35:23.639</span>: src=FE80::3<br />
Mar 1 <span style="color:#ff0000;">00:35:23.639</span>: dst=FF02::9 (FastEthernet0/0)<br />
Mar 1 <span style="color:#ff0000;">00:35:23.643</span>: sport=521, dport=521, length=72<br />
Mar 1 <span style="color:#ff0000;">00:35:23.643</span>: command=2, version=1, mbz=0, #rte=3<br />
Mar 1 <span style="color:#ff0000;">00:35:23.643</span>: tag=0, metric=1, prefix=2001:DB8:0:34::/64<br />
Mar 1 <span style="color:#ff0000;">00:35:23.643</span>: tag=0, metric=1, prefix=2001:DB8:0:23::/64<br />
Mar 1 <span style="color:#ff0000;">00:35:23.643</span>: tag=0, metric=2, prefix=2001:DB8:0:12::/64<br />
Mar 1 <span style="color:#ff0000;">00:35:53.387</span>: RIPng: Sending multicast update on Serial0/0 for test<br />
Mar 1 <span style="color:#ff0000;">00:35:53.387</span>: src=FE80::3<br />
Mar 1 <span style="color:#ff0000;">00:35:53.387</span>: dst=FF02::9 (Serial0/0)<br />
Mar 1 <span style="color:#ff0000;">00:35:53.391</span>: sport=521, dport=521, length=72<br />
Mar 1 <span style="color:#ff0000;">00:35:53.391</span>: command=2, version=1, mbz=0, #rte=3<br />
Mar 1 <span style="color:#ff0000;">00:35:53.391</span>: tag=0, metric=1, prefix=2001:DB8:0:34::/64<br />
Mar 1 <span style="color:#ff0000;">00:35:53.391</span>: tag=0, metric=1, prefix=2001:DB8:0:23::/64<br />
Mar 1 <span style="color:#ff0000;">00:35:53.391</span>: tag=0, metric=16, prefix=2001:DB8:0:4444::/64<br />
Mar 1 <span style="color:#ff0000;">00:35:53.395</span>: RIPng: Sending multicast update on FastEthernet0/0 for test<br />
Mar 1 <span style="color:#ff0000;">00:35:53.395</span>: src=FE80::3<br />
Mar 1 <span style="color:#ff0000;">00:35:53.395</span>: dst=FF02::9 (FastEthernet0/0)<br />
Mar 1 <span style="color:#ff0000;">00:35:53.399</span>: sport=521, dport=521, length=72<br />
Mar 1 <span style="color:#ff0000;">00:35:53.399</span>: command=2, version=1, mbz=0, #rte=3<br />
Mar 1 <span style="color:#ff0000;">00:35:53.399</span>: tag=0, metric=1, prefix=2001:DB8:0:34::/64<br />
Mar 1 <span style="color:#ff0000;">00:35:53.399</span>: tag=0, metric=1, prefix=2001:DB8:0:23::/64<br />
Mar 1 <span style="color:#ff0000;">00:35:53.399</span>: tag=0, metric=2, prefix=2001:DB8:0:12::/64<br />
Mar 1 <span style="color:#ff0000;">00:36:19.371</span>: RIPng: Sending multicast update on Serial0/0 for test<br />
Mar 1 <span style="color:#ff0000;">00:36:19.371</span>: src=FE80::3<br />
Mar 1 <span style="color:#ff0000;">00:36:19.371</span>: dst=FF02::9 (Serial0/0)<br />
Mar 1 <span style="color:#ff0000;">00:36:19.375</span>: sport=521, dport=521, length=72<br />
Mar 1 <span style="color:#ff0000;">00:36:19.375</span>: command=2, version=1, mbz=0, #rte=3<br />
Mar 1 <span style="color:#ff0000;">00:36:19.375</span>: tag=0, metric=1, prefix=2001:DB8:0:34::/64<br />
Mar 1 <span style="color:#ff0000;">00:36:19.375</span>: tag=0, metric=1, prefix=2001:DB8:0:23::/64<br />
Mar 1 <span style="color:#ff0000;">00:36:19.375</span>: tag=0, metric=16, prefix=2001:DB8:0:4444::/64<br />
Mar 1 <span style="color:#ff0000;">00:36:19.379</span>: RIPng: Sending multicast update on FastEthernet0/0 for test<br />
Mar 1 <span style="color:#ff0000;">00:36:19.379</span>: src=FE80::3<br />
Mar 1 <span style="color:#ff0000;">00:36:19.379</span>: dst=FF02::9 (FastEthernet0/0)<br />
Mar 1 <span style="color:#ff0000;">00:36:19.383</span>: sport=521, dport=521, length=72<br />
Mar 1 <span style="color:#ff0000;">00:36:19.383</span>: command=2, version=1, mbz=0, #rte=3<br />
Mar 1 <span style="color:#ff0000;">00:36:19.383</span>: tag=0, metric=1, prefix=2001:DB8:0:34::/64<br />
Mar 1 <span style="color:#ff0000;">00:36:19.383</span>: tag=0, metric=1, prefix=2001:DB8:0:23::/64<br />
Mar 1 <span style="color:#ff0000;">00:36:19.383</span>: tag=0, metric=2, prefix=2001:DB8:0:12::/64<br />
Mar 1 <span style="color:#ff0000;">00:36:20.703</span>: RIPng: Deleting 2001:DB8:0:4444::/64<br />
Mar 1 <span style="color:#ff0000;">00:36:20.703</span>: RIPng: Next RIB walk in 159284<br />
</code></p>
<p><img class="alignnone size-full wp-image-820" title="11-r3-ripng-database" src="http://cisconinja.files.wordpress.com/2009/04/11-r3-ripng-database.png?w=346&#038;h=78" alt="11-r3-ripng-database" width="346" height="78" /></p>
<p> </p>
<p> </p>
<p>Next we will look at the holddown timer, first in RIPv1/2.  The holddown timer prevents updates for a route from being accepted until it expires under certain conditions.  By default, the holddown timer is 180 seconds:</p>
<p><img class="alignnone size-full wp-image-823" title="12-r3-show-ip-protocols" src="http://cisconinja.files.wordpress.com/2009/04/12-r3-show-ip-protocols.png?w=491&#038;h=27" alt="12-r3-show-ip-protocols" width="491" height="27" /></p>
<p>For testing out the holddown timer, we will add an additional link between R1 and R4:</p>
<p><img class="alignnone size-full wp-image-822" title="rip-timers22" src="http://cisconinja.files.wordpress.com/2009/04/rip-timers22.png?w=471&#038;h=397" alt="rip-timers22" width="471" height="397" /></p>
<p><code><span style="color:#0000ff;">R1:<br />
interface Serial0/1<br />
 ip address 10.0.14.1 255.255.255.0<br />
 ipv6 address 2001:DB8:0:14::1/64<br />
 ipv6 address FE80::1 link-local<br />
 ipv6 rip test enable</span> <br />
</code></p>
<p><code><span style="color:#0000ff;">R4:<br />
interface Serial0/0<br />
 ip address 10.0.14.4 255.255.255.0<br />
 ipv6 address 2001:DB8:0:14::4/64<br />
 ipv6 address FE80::4 link-local<br />
 ipv6 rip test enable</span><br />
</code></p>
<p>The holddown timer is perhaps the most confusing and poorly explained of the RIP timers.  The sources I&#8217;ve looked at each say slightly different things about what it does, none of which is completely correct.  We will first look at what the holddown timer <em>doesn&#8217;t </em>do by testing out what various sources say about it.  From Routing TCP/IP Volume 1:</p>
<blockquote><p>If the distance to a destination increases (for example, the hop count increases from two to four), the router sets a holddown timer for that route. Until the timer expires, the router will not accept any new updates for the route.</p></blockquote>
<p>and also:</p>
<blockquote><p>The third timer is the holddown timer, although RFC 1058 does not call for the use of holddowns. The Cisco implementation of RIP does use them. An update with a hop count higher than the metric recorded in the route table will cause the route to go into holddown for 180 seconds (again, six update periods).</p></blockquote>
<p>This says if the metric from the current best source increases, the route is placed in holddown.  R3 currently has a 1 hop route to 4.4.4.0/24 through R4.  We will offset the metric for the route by 1 outbound on R4 and see if the route gets placed in holddown:</p>
<p><code><span style="color:#0000ff;">R4:<br />
access-list 1 permit 4.4.4.0</span><br />
!<br />
<span style="color:#0000ff;">router rip<br />
 offset-list 1 out 1 FastEthernet0/0</span><br />
</code></p>
<p><code><span style="color:#0000ff;">R3#debug ip routing<br />
R3#debug ip rip</span><br />
Mar 1 <span style="color:#ff0000;">02:38:09.167</span>: RIP: received v2 update from 10.0.34.4 on FastEthernet0/0<br />
Mar 1 <span style="color:#ff0000;">02:38:09.171</span>: 4.4.4.0/24 via 0.0.0.0 in 2 hops<br />
Mar 1 <span style="color:#ff0000;">02:38:09.171</span>: RT: rip's 4.4.4.0/24 (via 10.0.34.4) metric changed from distance/metric [120/1] to [120/2]<br />
Mar 1 <span style="color:#ff0000;">02:38:09.171</span>: RT: NET-RED 4.4.4.0/24<br />
Mar 1 <span style="color:#ff0000;">02:38:09.175</span>: 10.0.12.0/24 via 0.0.0.0 in 2 hops<br />
Mar 1 <span style="color:#ff0000;">02:38:09.175</span>: 10.0.14.0/24 via 0.0.0.0 in 1 hops<br />
Mar 1 <span style="color:#ff0000;">02:38:11.175</span>: RIP: sending v2 flash update to 224.0.0.9 via FastEthernet0/0 (10.0.34.3)<br />
Mar 1 <span style="color:#ff0000;">02:38:11.175</span>: RIP: build flash update entries - suppressing null update<br />
Mar 1 <span style="color:#ff0000;">02:38:11.175</span>: RIP: sending v2 flash update to 224.0.0.9 via Serial0/0 (10.0.23.3)<br />
Mar 1 <span style="color:#ff0000;">02:38:11.179</span>: RIP: build flash update entries<br />
Mar 1 <span style="color:#ff0000;">02:38:11.179</span>: 4.4.4.0/24 via 0.0.0.0, metric 3, tag 0<br />
</code></p>
<p><img class="alignnone size-full wp-image-824" title="12-r3-show-ip-route" src="http://cisconinja.files.wordpress.com/2009/04/12-r3-show-ip-route.png?w=531&#038;h=130" alt="12-r3-show-ip-route" width="531" height="130" /></p>
<p>Instead of placing the route in holddown, R3 accepts the increased metric immediately, records it in the RIP database and routing table, and sends a flash update on S0/0 2 seconds later about the increased metric.</p>
<p> </p>
<p> </p>
<p>From the <a href="http://www.cisco.com/en/US/docs/ios/iproute/command/reference/irp_rip.html#wp1012751">12.4 Command Reference:</a></p>
<blockquote><p>A route enters into a holddown state when an update packet is received that indicates the route is unreachable. The route is marked inaccessible and advertised as unreachable. However, the route is still used for forwarding packets. When holddown expires, routes advertised by other sources are accepted and the route is no longer inaccessible.</p></blockquote>
<p>Based on this description, if we shut down R4&#8242;s loopback so that it is advertised as unreachable, R3 should place the route into holddown.  If we bring it back up a few seconds later, the update should be ignored by R3.  Let&#8217;s test this out:</p>
<p><code><span style="color:#0000ff;">R4:<br />
interface Loopback0<br />
 shutdown<br />
</span></code></p>
<p><code><span style="color:#0000ff;">R3#debug ip routing<br />
R3#debug ip rip</span><br />
Mar 1 <span style="color:#ff0000;">02:56:04.723</span>: RIP: received v2 update from 10.0.34.4 on FastEthernet0/0<br />
Mar 1 <span style="color:#ff0000;">02:56:04.723</span>: 4.4.4.0/24 via 0.0.0.0 in 16 hops (inaccessible)<br />
Mar 1 <span style="color:#ff0000;">02:56:04.727</span>: RT: del 4.4.4.0/24 via 10.0.34.4, rip metric [120/2]<br />
Mar 1 <span style="color:#ff0000;">02:56:04.727</span>: RT: delete subnet route to 4.4.4.0/24<br />
Mar 1 <span style="color:#ff0000;">02:56:04.727</span>: RT: NET-RED 4.4.4.0/24<br />
Mar 1 <span style="color:#ff0000;">02:56:04.731</span>: RT: delete network route to 4.0.0.0<br />
Mar 1 <span style="color:#ff0000;">02:56:04.731</span>: RT: NET-RED 4.0.0.0/8<br />
Mar 1 <span style="color:#ff0000;">02:56:06.731</span>: RIP: sending v2 flash update to 224.0.0.9 via FastEthernet0/0 (10.0.34.3)<br />
Mar 1 <span style="color:#ff0000;">02:56:06.731</span>: RIP: build flash update entries<br />
Mar 1 <span style="color:#ff0000;">02:56:06.731</span>: 4.4.4.0/24 via 0.0.0.0, metric 16, tag 0<br />
Mar 1 <span style="color:#ff0000;">02:56:06.735</span>: RIP: sending v2 flash update to 224.0.0.9 via Serial0/0 (10.0.23.3)<br />
Mar 1 <span style="color:#ff0000;">02:56:06.735</span>: RIP: build flash update entries<br />
Mar 1 <span style="color:#ff0000;">02:56:06.735</span>: 4.4.4.0/24 via 0.0.0.0, metric 16, tag 0<br />
</code></p>
<p><code><span style="color:#0000ff;">R4:<br />
interface Loopback0<br />
 no shutdown</span><br />
</code></p>
<p><code><span style="color:#0000ff;">R3#debug ip routing<br />
R3#debug ip rip</span><br />
Mar 1 <span style="color:#ff0000;">02:56:19.587</span>: RIP: received v2 update from 10.0.34.4 on FastEthernet0/0<br />
Mar 1 <span style="color:#ff0000;">02:56:19.587</span>: 4.4.4.0/24 via 0.0.0.0 in 2 hops<br />
Mar 1 <span style="color:#ff0000;">02:56:19.591</span>: RT: SET_LAST_RDB for 4.4.4.0/24<br />
NEW rdb: via 10.0.34.4<br />
Mar 1 <span style="color:#ff0000;">02:56:19.591</span>: RT: add 4.4.4.0/24 via 10.0.34.4, rip metric [120/2]<br />
Mar 1 <span style="color:#ff0000;">02:56:19.591</span>: RT: NET-RED 4.4.4.0/24<br />
Mar 1 <span style="color:#ff0000;">02:56:21.595</span>: RIP: sending v2 flash update to 224.0.0.9 via FastEthernet0/0 (10.0.34.3)<br />
Mar 1 <span style="color:#ff0000;">02:56:21.595</span>: RIP: build flash update entries - suppressing null update<br />
Mar 1 <span style="color:#ff0000;">02:56:21.595</span>: RIP: sending v2 flash update to 224.0.0.9 via Serial0/0 (10.0.23.3)<br />
Mar 1 <span style="color:#ff0000;">02:56:21.599</span>: RIP: build flash update entries<br />
Mar 1 <span style="color:#ff0000;">02:56:21.599</span>: 4.4.4.0/24 via 0.0.0.0, metric 3, tag 0<br />
</code></p>
<p>R3 receives the flash update from R4 advertising 4.4.4.0/24 as unreachable, removes it from the routing table, and sends a flash update on S0/0 advertising it as unreachable.  When R4&#8242;s loopback comes back up and R3 receives a flash update advertising it as reachable 15 seconds later, R3 accepts the update immediately - so the route is clearly not in holddown.  The count-to-infinity problem - which the holddown timer is supposed to prevent - can even occur in this scenario with some unlucky timing of updates.  With all interfaces back up and the network converged, we will shutdown the R4 loopback again:</p>
<p><code><span style="color:#0000ff;">R4:<br />
interface Loopback0<br />
 shutdown</span><br />
</code></p>
<p>R3 receives the flash update from R4 at <span style="color:#ff0000;"><span style="color:#ff0000;"><span style="font-family:Courier New;">03:11:03.063</span></span><span style="color:#ff0000;"> <span style="color:#000000;">and immediately deletes the route:</span></span></span></p>
<p><code><span style="color:#0000ff;">R3#debug ip routing<br />
R3#debug ip rip</span><br />
Mar 1 <span style="color:#ff0000;">03:11:03.063</span>: RIP: received v2 update from 10.0.34.4 on FastEthernet0/0<br />
Mar 1 <span style="color:#ff0000;">03:11:03.063</span>: 4.4.4.0/24 via 0.0.0.0 in 16 hops (inaccessible)<br />
Mar 1 <span style="color:#ff0000;">03:11:03.063</span>: RT: del 4.4.4.0/24 via 10.0.34.4, rip metric [120/2]<br />
Mar 1 <span style="color:#ff0000;">03:11:03.063</span>: RT: delete subnet route to 4.4.4.0/24<br />
Mar 1 <span style="color:#ff0000;">03:11:03.063</span>: RT: NET-RED 4.4.4.0/24<br />
Mar 1 <span style="color:#ff0000;">03:11:03.063</span>: RT: delete network route to 4.0.0.0<br />
Mar 1 <span style="color:#ff0000;">03:11:03.063</span>: RT: NET-RED 4.0.0.0/8<br />
Mar 1 <span style="color:#ff0000;">03:11:03.067</span>: 10.0.12.0/24 via 0.0.0.0 in 2 hops<br />
Mar 1 <span style="color:#ff0000;">03:11:03.067</span>: 10.0.14.0/24 via 0.0.0.0 in 1 hops<br />
</code></p>
<p>R2&#8242;s periodic update timer for the R2-R3 link happens to expire right after this.  R2 has not gotten the flash update yet that 4.4.4.0/24 is unreachable, so R2&#8242;s update includes 4.4.4.0/24 with a metric of 3.  R3 receives the periodic update from R2 at <span style="color:#ff0000;"><span style="font-family:Courier New;">03:11:04.987</span></span>, approximately 1.9 seconds after the flash update was received from R4:</p>
<p><code><span style="color:#0000ff;">R3#debug ip routing<br />
R3#debug ip rip</span><br />
Mar 1 <span style="color:#ff0000;">03:11:04.987</span>: RIP: received v2 update from 10.0.23.2 on Serial0/0<br />
Mar 1 <span style="color:#ff0000;">03:11:04.987</span>: 4.4.4.0/24 via 0.0.0.0 in 3 hops<br />
Mar 1 <span style="color:#ff0000;">03:11:04.991</span>: RT: SET_LAST_RDB for 4.4.4.0/24<br />
NEW rdb: via 10.0.23.2<br />
Mar 1 <span style="color:#ff0000;">03:11:04.991</span>: RT: add 4.4.4.0/24 via 10.0.23.2, rip metric [120/3]<br />
Mar 1 <span style="color:#ff0000;">03:11:04.995</span>: RT: NET-RED 4.4.4.0/24<br />
Mar 1 <span style="color:#ff0000;">03:11:04.995</span>: 10.0.12.0/24 via 0.0.0.0 in 1 hops<br />
Mar 1 <span style="color:#ff0000;">03:11:04.995</span>: 10.0.14.0/24 via 0.0.0.0 in 2 hops<br />
</code></p>
<p>At <span style="color:#ff0000;"><span style="font-family:Courier New;">03:11:05.063</span><span style="color:#000000;">, exactly 2 seconds after the flash update from R4 was received, R3 sends a flash update for 4.4.4.0/24 &#8211; however the flash update does not list the route as unreachable, which caused the flash update to occur in the first place, but rather in it&#8217;s current state.  This is key to what allows the problem to occur.  Flash updates are delayed for 2 seconds and once the delay period expires, updates are sent for the route in whatever current state it is in.  R3 increments the metric and sends a flash update for the route back to R4.  R3 does not send a flash update for the route to R2 due to split-horizon rules:</span></span></p>
<p><code><span style="color:#0000ff;">R3#debug ip rip</span><br />
Mar 1 <span style="color:#ff0000;">03:11:05.063</span>: RIP: sending v2 flash update to 224.0.0.9 via FastEthernet0/0 (10.0.34.3)<br />
Mar 1 <span style="color:#ff0000;">03:11:05.063</span>: RIP: build flash update entries<br />
Mar 1 <span style="color:#ff0000;">03:11:05.063</span>: 4.4.4.0/24 via 0.0.0.0, metric 4, tag 0<br />
Mar 1 <span style="color:#ff0000;">03:11:05.067</span>: RIP: sending v2 flash update to 224.0.0.9 via Serial0/0 (10.0.23.3)<br />
Mar 1 <span style="color:#ff0000;">03:11:05.067</span>: RIP: build flash update entries - suppressing null update<br />
</code></p>
<p>R4 receives the update from R3, adds the route to the RIP database and routing table, and starts the 2 second delay for it&#8217;s flash update about the route:</p>
<p><code><span style="color:#0000ff;">R4#debug ip routing<br />
R4#debug ip rip</span><br />
Mar 1 <span style="color:#ff0000;">03:11:05.203</span>: RIP: received v2 update from 10.0.34.3 on FastEthernet0/0<br />
Mar 1 <span style="color:#ff0000;">03:11:05.203</span>: 4.4.4.0/24 via 0.0.0.0 in 4 hops<br />
Mar 1 <span style="color:#ff0000;">03:11:05.207</span>: RT: SET_LAST_RDB for 4.4.4.0/24<br />
NEW rdb: via 10.0.34.3<br />
Mar 1 <span style="color:#ff0000;">03:11:05.207</span>: RT: add 4.4.4.0/24 via 10.0.34.3, rip metric [120/4]<br />
Mar 1 <span style="color:#ff0000;">03:11:05.207</span>: RT: NET-RED 4.4.4.0/24<br />
</code> </p>
<p>R2 receives a flash update from R1 at about the same time advertising the route as unreachable. R2 removes the route from the routing table and also starts it&#8217;s 2 second flash update delay for the route:</p>
<p><code><span style="color:#0000ff;">R2#debug ip routing<br />
R2#debug ip rip</span><br />
Mar 1 <span style="color:#ff0000;">03:11:05.739</span>: RIP: received v2 update from 10.0.12.1 on Serial0/0<br />
Mar 1 <span style="color:#ff0000;">03:11:05.739</span>: 4.4.4.0/24 via 0.0.0.0 in 16 hops (inaccessible)<br />
Mar 1 <span style="color:#ff0000;">03:11:05.743</span>: RT: del 4.4.4.0/24 via 10.0.12.1, rip metric [120/2]<br />
Mar 1 <span style="color:#ff0000;">03:11:05.743</span>: RT: delete subnet route to 4.4.4.0/24<br />
Mar 1 <span style="color:#ff0000;">03:11:05.743</span>: RT: NET-RED 4.4.4.0/24<br />
Mar 1 <span style="color:#ff0000;">03:11:05.747</span>: RT: delete network route to 4.0.0.0<br />
Mar 1 <span style="color:#ff0000;">03:11:05.747</span>: RT: NET-RED 4.0.0.0/8<br />
</code></p>
<p>On R4, the 2 second delay for the flash update expires from the time it was received with a hop-count of 4 from R3.  No further updates about the route have been received during the delay period, so the hop-count is incremented and the route is advertised to R1:</p>
<p><code><span style="color:#0000ff;">R4#debug ip rip</span><br />
Mar 1 <span style="color:#ff0000;">03:11:07.211</span>: RIP: sending v2 flash update to 224.0.0.9 via FastEthernet0/0 (10.0.34.4)<br />
Mar 1 <span style="color:#ff0000;">03:11:07.211</span>: RIP: build flash update entries - suppressing null update<br />
Mar 1 <span style="color:#ff0000;">03:11:07.211</span>: RIP: sending v2 flash update to 224.0.0.9 via Serial0/0 (10.0.14.4)<br />
Mar 1 <span style="color:#ff0000;">03:11:07.215</span>: RIP: build flash update entries<br />
Mar 1 <span style="color:#ff0000;">03:11:07.215</span>: 4.4.4.0/24 via 0.0.0.0, metric 5, tag 0<br />
</code></p>
<p>On R2, the 2 second delay expires as well from the time it was received with an unreachable metric from R1.  No further changes have occurred so the route is advertised as unreachable out all interfaces:</p>
<p><code><span style="color:#0000ff;">R2#debug ip rip</span><br />
Mar 1 <span style="color:#ff0000;">03:11:07.747</span>: RIP: sending v2 flash update to 224.0.0.9 via Serial0/0 (10.0.12.2)<br />
Mar 1 <span style="color:#ff0000;">03:11:07.747</span>: RIP: build flash update entries<br />
Mar 1 <span style="color:#ff0000;">03:11:07.747</span>: 4.4.4.0/24 via 0.0.0.0, metric 16, tag 0<br />
Mar 1 <span style="color:#ff0000;">03:11:07.751</span>: RIP: sending v2 flash update to 224.0.0.9 via Serial0/1 (10.0.23.2)<br />
Mar 1 <span style="color:#ff0000;">03:11:07.751</span>: RIP: build flash update entries<br />
Mar 1 <span style="color:#ff0000;">03:11:07.751</span>: 4.4.4.0/24 via 0.0.0.0, metric 16, tag 0<br />
</code> </p>
<p>R3 receives the flash update from R2, deletes the route, and starts the 2 second flash update delay.  However, the update arrives too late, as R3 already incorrectly advertised the route to R4 approximately 3 seconds earlier.  This results in 2 circles of updates, 1 advertising the route as unreachable and 1 with an incrementing hop-count.  The 2 updates will circulate approximately every 8 seconds (4x the flash update delay) and the route will be continually added and removed until eventually the incrementing hop-count reaches 16:</p>
<p><code><span style="color:#0000ff;">R3#debug ip routing<br />
R3#debug ip rip<br />
</span>Mar 1 <span style="color:#ff0000;">03:11:08.143</span>: RIP: received v2 update from 10.0.23.2 on Serial0/0<br />
Mar 1 <span style="color:#ff0000;">03:11:08.143</span>: 4.4.4.0/24 via 0.0.0.0 in 16 hops (inaccessible)<br />
Mar 1 <span style="color:#ff0000;">03:11:08.147</span>: RT: del 4.4.4.0/24 via 10.0.23.2, rip metric [120/3]<br />
Mar 1 <span style="color:#ff0000;">03:11:08.147</span>: RT: delete subnet route to 4.4.4.0/24<br />
Mar 1 <span style="color:#ff0000;">03:11:08.147</span>: RT: NET-RED 4.4.4.0/24<br />
Mar 1 <span style="color:#ff0000;">03:11:08.151</span>: RT: delete network route to 4.0.0.0<br />
Mar 1 <span style="color:#ff0000;">03:11:08.151</span>: RT: NET-RED 4.0.0.0/8<br />
Mar 1 <span style="color:#ff0000;">03:11:10.151</span>: RIP: sending v2 flash update to 224.0.0.9 via FastEthernet0/0 (10.0.34.3)<br />
Mar 1 <span style="color:#ff0000;">03:11:10.151</span>: RIP: build flash update entries<br />
Mar 1 <span style="color:#ff0000;">03:11:10.151</span>: 4.4.4.0/24 via 0.0.0.0, metric 16, tag 0<br />
Mar 1 <span style="color:#ff0000;">03:11:10.155</span>: RIP: sending v2 flash update to 224.0.0.9 via Serial0/0 (10.0.23.3)<br />
Mar 1 <span style="color:#ff0000;">03:11:10.155</span>: RIP: build flash update entries<br />
Mar 1 <span style="color:#ff0000;">03:11:10.155</span>: 4.4.4.0/24 via 0.0.0.0, metric 16, tag 0<br />
Mar 1 <span style="color:#ff0000;">03:11:11.235</span>: RIP: received v2 update from 10.0.23.2 on Serial0/0<br />
Mar 1 <span style="color:#ff0000;">03:11:11.235</span>: 4.4.4.0/24 via 0.0.0.0 in 7 hops<br />
Mar 1 <span style="color:#ff0000;">03:11:11.239</span>: RT: SET_LAST_RDB for 4.4.4.0/24<br />
NEW rdb: via 10.0.23.2<br />
Mar 1 <span style="color:#ff0000;">03:11:11.239</span>: RT: add 4.4.4.0/24 via 10.0.23.2, rip metric [120/7]<br />
Mar 1 <span style="color:#ff0000;">03:11:11.239</span>: RT: NET-RED 4.4.4.0/24<br />
Mar 1 <span style="color:#ff0000;">03:11:13.243</span>: RIP: sending v2 flash update to 224.0.0.9 via FastEthernet0/0 (10.0.34.3)<br />
Mar 1 <span style="color:#ff0000;">03:11:13.243</span>: RIP: build flash update entries<br />
Mar 1 <span style="color:#ff0000;">03:11:13.243</span>: 4.4.4.0/24 via 0.0.0.0, metric 8, tag 0<br />
Mar 1 <span style="color:#ff0000;">03:11:13.247</span>: RIP: sending v2 flash update to 224.0.0.9 via Serial0/0 (10.0.23.3)<br />
Mar 1 <span style="color:#ff0000;">03:11:13.247</span>: RIP: build flash update entries - suppressing null update<br />
Mar 1 <span style="color:#ff0000;">03:11:14.483</span>: RIP: received v2 update from 10.0.23.2 on Serial0/0<br />
Mar 1 <span style="color:#ff0000;">03:11:14.483</span>: 4.4.4.0/24 via 0.0.0.0 in 16 hops (inaccessible)<br />
Mar 1 <span style="color:#ff0000;">03:11:14.483</span>: RT: del 4.4.4.0/24 via 10.0.23.2, rip metric [120/7]<br />
Mar 1 <span style="color:#ff0000;">03:11:14.487</span>: RT: delete subnet route to 4.4.4.0/24<br />
Mar 1 <span style="color:#ff0000;">03:11:14.487</span>: RT: NET-RED 4.4.4.0/24<br />
Mar 1 <span style="color:#ff0000;">03:11:14.487</span>: RT: delete network route to 4.0.0.0<br />
Mar 1 <span style="color:#ff0000;">03:11:14.487</span>: RT: NET-RED 4.0.0.0/8<br />
Mar 1 <span style="color:#ff0000;">03:11:16.487</span>: RIP: sending v2 flash update to 224.0.0.9 via FastEthernet0/0 (10.0.34.3)<br />
Mar 1 <span style="color:#ff0000;">03:11:16.487</span>: RIP: build flash update entries<br />
Mar 1 <span style="color:#ff0000;">03:11:16.487</span>: 4.4.4.0/24 via 0.0.0.0, metric 16, tag 0<br />
Mar 1 <span style="color:#ff0000;">03:11:16.491</span>: RIP: sending v2 flash update to 224.0.0.9 via Serial0/0 (10.0.23.3)<br />
Mar 1 <span style="color:#ff0000;">03:11:16.491</span>: RIP: build flash update entries<br />
Mar 1 <span style="color:#ff0000;">03:11:16.491</span>: 4.4.4.0/24 via 0.0.0.0, metric 16, tag 0<br />
Mar 1 <span style="color:#ff0000;">03:11:19.375</span>: RIP: received v2 update from 10.0.23.2 on Serial0/0<br />
Mar 1 <span style="color:#ff0000;">03:11:19.375</span>: 4.4.4.0/24 via 0.0.0.0 in 11 hops<br />
Mar 1 <span style="color:#ff0000;">03:11:19.375</span>: RT: SET_LAST_RDB for 4.4.4.0/24<br />
NEW rdb: via 10.0.23.2<br />
Mar 1 <span style="color:#ff0000;">03:11:19.379</span>: RT: add 4.4.4.0/24 via 10.0.23.2, rip metric [120/11]<br />
Mar 1 <span style="color:#ff0000;">03:11:19.379</span>: RT: NET-RED 4.4.4.0/24<br />
Mar 1 <span style="color:#ff0000;">03:11:21.379</span>: RIP: sending v2 flash update to 224.0.0.9 via FastEthernet0/0 (10.0.34.3)<br />
Mar 1 <span style="color:#ff0000;">03:11:21.379</span>: RIP: build flash update entries<br />
Mar 1 <span style="color:#ff0000;">03:11:21.379</span>: 4.4.4.0/24 via 0.0.0.0, metric 12, tag 0<br />
Mar 1 <span style="color:#ff0000;">03:11:21.383</span>: RIP: sending v2 flash update to 224.0.0.9 via Serial0/0 (10.0.23.3)<br />
Mar 1 <span style="color:#ff0000;">03:11:21.383</span>: RIP: build flash update entries - suppressing null update<br />
Mar 1 <span style="color:#ff0000;">03:11:22.587</span>: RIP: received v2 update from 10.0.23.2 on Serial0/0<br />
Mar 1 <span style="color:#ff0000;">03:11:22.587</span>: 4.4.4.0/24 via 0.0.0.0 in 16 hops (inaccessible)<br />
Mar 1 <span style="color:#ff0000;">03:11:22.587</span>: RT: del 4.4.4.0/24 via 10.0.23.2, rip metric [120/11]<br />
Mar 1 <span style="color:#ff0000;">03:11:22.591</span>: RT: delete subnet route to 4.4.4.0/24<br />
Mar 1 <span style="color:#ff0000;">03:11:22.591</span>: RT: NET-RED 4.4.4.0/24<br />
Mar 1 <span style="color:#ff0000;">03:11:22.591</span>: RT: delete network route to 4.0.0.0<br />
Mar 1 <span style="color:#ff0000;">03:11:22.595</span>: RT: NET-RED 4.0.0.0/8<br />
Mar 1 <span style="color:#ff0000;">03:11:24.595</span>: RIP: sending v2 flash update to 224.0.0.9 via FastEthernet0/0 (10.0.34.3)<br />
Mar 1 <span style="color:#ff0000;">03:11:24.595</span>: RIP: build flash update entries<br />
Mar 1 <span style="color:#ff0000;">03:11:24.595</span>: 4.4.4.0/24 via 0.0.0.0, metric 16, tag 0<br />
Mar 1 <span style="color:#ff0000;">03:11:24.599</span>: RIP: sending v2 flash update to 224.0.0.9 via Serial0/0 (10.0.23.3)<br />
Mar 1 <span style="color:#ff0000;">03:11:24.599</span>: RIP: build flash update entries<br />
Mar 1 <span style="color:#ff0000;">03:11:24.599</span>: 4.4.4.0/24 via 0.0.0.0, metric 16, tag 0 <br />
Mar 1 <span style="color:#ff0000;">03:11:27.619</span>: RIP: received v2 update from 10.0.23.2 on Serial0/0<br />
Mar 1 <span style="color:#ff0000;">03:11:27.619</span>: 4.4.4.0/24 via 0.0.0.0 in 15 hops<br />
Mar 1 <span style="color:#ff0000;">03:11:27.623</span>: RT: SET_LAST_RDB for 4.4.4.0/24<br />
NEW rdb: via 10.0.23.2<br />
Mar 1 <span style="color:#ff0000;">03:11:27.623</span>: RT: add 4.4.4.0/24 via 10.0.23.2, rip metric [120/15]<br />
Mar 1 <span style="color:#ff0000;">03:11:27.627</span>: RT: NET-RED 4.4.4.0/24<br />
Mar 1 <span style="color:#ff0000;">03:11:29.627</span>: RIP: sending v2 flash update to 224.0.0.9 via FastEthernet0/0 (10.0.34.3)<br />
Mar 1 <span style="color:#ff0000;">03:11:29.627</span>: RIP: build flash update entries<br />
Mar 1 <span style="color:#ff0000;">03:11:29.627</span>: 4.4.4.0/24 via 0.0.0.0, metric 16, tag 0<br />
Mar 1 <span style="color:#ff0000;">03:11:29.631</span>: RIP: sending v2 flash update to 224.0.0.9 via Serial0/0 (10.0.23.3)<br />
Mar 1 <span style="color:#ff0000;">03:11:29.631</span>: RIP: build flash update entries - suppressing null update<br />
Mar 1 <span style="color:#ff0000;">03:11:30.139</span>: RIP: received v2 update from 10.0.23.2 on Serial0/0<br />
Mar 1 <span style="color:#ff0000;">03:11:30.139</span>: 4.4.4.0/24 via 0.0.0.0 in 16 hops (inaccessible)<br />
Mar 1 <span style="color:#ff0000;">03:11:30.139</span>: RT: del 4.4.4.0/24 via 10.0.23.2, rip metric [120/15]<br />
Mar 1 <span style="color:#ff0000;">03:11:30.139</span>: RT: delete subnet route to 4.4.4.0/24<br />
Mar 1 <span style="color:#ff0000;">03:11:30.143</span>: RT: NET-RED 4.4.4.0/24<br />
Mar 1 <span style="color:#ff0000;">03:11:30.143</span>: RT: delete network route to 4.0.0.0<br />
Mar 1 <span style="color:#ff0000;">03:11:30.143</span>: RT: NET-RED 4.0.0.0/8<br />
Mar 1 <span style="color:#ff0000;">03:11:32.147</span>: RIP: sending v2 flash update to 224.0.0.9 via FastEthernet0/0 (10.0.34.3)<br />
Mar 1 <span style="color:#ff0000;">03:11:32.147</span>: RIP: build flash update entries<br />
Mar 1 <span style="color:#ff0000;">03:11:32.147</span>: 4.4.4.0/24 via 0.0.0.0, metric 16, tag 0<br />
Mar 1 <span style="color:#ff0000;">03:11:32.151</span>: RIP: sending v2 flash update to 224.0.0.9 via Serial0/0 (10.0.23.3)<br />
Mar 1 <span style="color:#ff0000;">03:11:32.151</span>: RIP: build flash update entries<br />
Mar 1 <span style="color:#ff0000;">03:11:32.151</span>: 4.4.4.0/24 via 0.0.0.0, metric 16, tag 0<br />
</code></p>
<p> </p>
<p> </p>
<p>From Cisco Press ICND 2:</p>
<blockquote><p>After hearing a poisoned route, start a holddown timer for that one route. Until the timer expires, do not believe any other routing information about the failed route, because believing that information may cause a routing loop. However, information learned from the neighbor that originally advertised the working route can be believed before the holddown timer expires.</p></blockquote>
<p>This says the same thing as the command reference, with the addition of allowing information from the original route source to be believed during the holddown.  We will test this out on R2.  With all interfaces up again, R2 currently has a 2-hop route to 4.4.4.0/24 through R1:</p>
<p><img class="alignnone size-full wp-image-825" title="13-r2-show-ip-route" src="http://cisconinja.files.wordpress.com/2009/04/13-r2-show-ip-route.png?w=483&#038;h=130" alt="13-r2-show-ip-route" width="483" height="130" /></p>
<p>The route through R3 is 3 hops because of the offset-list we applied on R4 F0/0 earlier, so it is not in the routing table or RIP database.  If the route is advertised as unreachable by R1, and then R2 receives an update from R3 advertising it as metric 3, it should be ignored based on the definition above.  To test this out, we will first shut down R4 F0/0 and then shut down R4&#8242;s loopback:</p>
<p><code><span style="color:#0000ff;">R4:<br />
interface FastEthernet0/0<br />
 shutdown<br />
!<br />
interface Loopback0<br />
 shutdown</span><br />
</code></p>
<p>R4 sends a flash update advertising the route as unreachable, and R1 sends a flash update to R2.  R3 does not receive an update from R4 so it will continue advertising 4.4.4.0/24 to R2 as reachable until the invalid timer expires for the route:</p>
<p><code><span style="color:#0000ff;">R2#debug ip routing<br />
R2#debug ip rip</span><br />
Mar 1 <span style="color:#ff0000;">04:09:43.699</span>: RIP: received v2 update from 10.0.12.1 on Serial0/0<br />
Mar 1 <span style="color:#ff0000;">04:09:43.699</span>: 4.4.4.0/24 via 0.0.0.0 in 16 hops (inaccessible)<br />
Mar 1 <span style="color:#ff0000;">04:09:43.703</span>: RT: del 4.4.4.0/24 via 10.0.12.1, rip metric [120/2]<br />
Mar 1 <span style="color:#ff0000;">04:09:43.703</span>: RT: delete subnet route to 4.4.4.0/24<br />
Mar 1 <span style="color:#ff0000;">04:09:43.703</span>: RT: NET-RED 4.4.4.0/24<br />
Mar 1 <span style="color:#ff0000;">04:09:43.707</span>: RT: delete network route to 4.0.0.0<br />
Mar 1 <span style="color:#ff0000;">04:09:43.707</span>: RT: NET-RED 4.0.0.0/8<br />
Mar 1 <span style="color:#ff0000;">04:09:43.707</span>: 10.0.14.0/24 via 0.0.0.0 in 1 hops<br />
Mar 1 <span style="color:#ff0000;">04:09:45.707</span>: RIP: sending v2 flash update to 224.0.0.9 via Serial0/0 (10.0.12.2)<br />
Mar 1 <span style="color:#ff0000;">04:09:45.707</span>: RIP: build flash update entries<br />
Mar 1 <span style="color:#ff0000;">04:09:45.707</span>: 4.4.4.0/24 via 0.0.0.0, metric 16, tag 0<br />
Mar 1 <span style="color:#ff0000;">04:09:45.711</span>: RIP: sending v2 flash update to 224.0.0.9 via Serial0/1 (10.0.23.2)<br />
Mar 1 <span style="color:#ff0000;">04:09:45.711</span>: RIP: build flash update entries<br />
Mar 1 <span style="color:#ff0000;">04:09:45.711</span>: 4.4.4.0/24 via 0.0.0.0, metric 16, tag 0<br />
Mar 1 <span style="color:#ff0000;">04:09:55.147</span>: RIP: received v2 update from 10.0.23.3 on Serial0/1<br />
Mar 1 <span style="color:#ff0000;">04:09:55.147</span>: 4.4.4.0/24 via 0.0.0.0 in 3 hops<br />
Mar 1 <span style="color:#ff0000;">04:09:55.151</span>: RT: SET_LAST_RDB for 4.4.4.0/24<br />
NEW rdb: via 10.0.23.3<br />
Mar 1 <span style="color:#ff0000;">04:09:55.151</span>: RT: add 4.4.4.0/24 via 10.0.23.3, rip metric [120/3]<br />
Mar 1 <span style="color:#ff0000;">04:09:55.155</span>: RT: NET-RED 4.4.4.0/24<br />
Mar 1 <span style="color:#ff0000;">04:09:55.155</span>: 10.0.14.0/24 via 0.0.0.0 in 2 hops<br />
Mar 1 <span style="color:#ff0000;">04:09:55.155</span>: 10.0.34.0/24 via 0.0.0.0 in 1 hops<br />
Mar 1 <span style="color:#ff0000;">04:09:57.155</span>: RIP: sending v2 flash update to 224.0.0.9 via Serial0/0 (10.0.12.2)<br />
Mar 1 <span style="color:#ff0000;">04:09:57.155</span>: RIP: build flash update entries<br />
Mar 1 <span style="color:#ff0000;">04:09:57.155</span>: 4.4.4.0/24 via 0.0.0.0, metric 4, tag 0<br />
Mar 1 <span style="color:#ff0000;">04:09:57.159</span>: RIP: sending v2 flash update to 224.0.0.9 via Serial0/1 (10.0.23.2)<br />
Mar 1 <span style="color:#ff0000;">04:09:57.159</span>: RIP: build flash update entries - suppressing null update<br />
</code></p>
<p>R2 receives one of R3&#8242;s periodic updates about 12 seconds after hearing of the unreachable route from R1 and, despite what the book says, accepts the information immediately from R3.  Until the invalid timer expires on R3, all 4 routers have incorrect routing information.  R4 now believes it has a 5-hop route to it&#8217;s own former network through R1:</p>
<p><img class="alignnone size-full wp-image-826" title="14-r4-show-ip-route" src="http://cisconinja.files.wordpress.com/2009/04/14-r4-show-ip-route.png?w=486&#038;h=131" alt="14-r4-show-ip-route" width="486" height="131" /></p>
<p>If R4 F0/0 comes back up before the invalid expires on R3, a different type of count-to-infinity problem occurs.  R3 still believes it has a route to 4.4.4.0/24 through R4 since it did not receive the update advertising it as unreachable while R4 F0/0 was down.  R4 believes it knows 4.4.4.0/24 through R1, so split-horizon will not prevent R4 from advertising it to R3 now that F0/0 is back up.  An increased metric received does not cause holddown to occur as we saw earlier, so when R3 receives an update from R4, a single circle of updates occurs with the metric increasing by 5 each time (4 routers + 1 from the offset) until it reaches 16:</p>
<p><code><span style="color:#0000ff;">R2#debug ip routing<br />
R2#debug ip rip</span><br />
Mar 1 <span style="color:#ff0000;">04:11:08.355</span>: RIP: received v2 update from 10.0.23.3 on Serial0/1<br />
Mar 1 <span style="color:#ff0000;">04:11:08.355</span>: 4.4.4.0/24 via 0.0.0.0 in 8 hops<br />
Mar 1 <span style="color:#ff0000;">04:11:08.359</span>: RT: rip's 4.4.4.0/24 (via 10.0.23.3) metric changed from distance/metric [120/3] to [120/8]<br />
Mar 1 <span style="color:#ff0000;">04:11:08.359</span>: RT: NET-RED 4.4.4.0/24<br />
Mar 1 <span style="color:#ff0000;">04:11:10.363</span>: RIP: sending v2 flash update to 224.0.0.9 via Serial0/0 (10.0.12.2)<br />
Mar 1 <span style="color:#ff0000;">04:11:10.363</span>: RIP: build flash update entries<br />
Mar 1 <span style="color:#ff0000;">04:11:10.363</span>: 4.4.4.0/24 via 0.0.0.0, metric 9, tag 0<br />
Mar 1 <span style="color:#ff0000;">04:11:10.367</span>: RIP: sending v2 flash update to 224.0.0.9 via Serial0/1 (10.0.23.2)<br />
Mar 1 <span style="color:#ff0000;">04:11:10.367</span>: RIP: build flash update entries - suppressing null update<br />
Mar 1 <span style="color:#ff0000;">04:11:16.475</span>: RIP: received v2 update from 10.0.23.3 on Serial0/1<br />
Mar 1 <span style="color:#ff0000;">04:11:16.479</span>: 4.4.4.0/24 via 0.0.0.0 in 13 hops<br />
Mar 1 <span style="color:#ff0000;">04:11:16.479</span>: RT: rip's 4.4.4.0/24 (via 10.0.23.3) metric changed from distance/metric [120/8] to [120/13]<br />
Mar 1 <span style="color:#ff0000;">04:11:16.479</span>: RT: NET-RED 4.4.4.0/24<br />
Mar 1 <span style="color:#ff0000;">04:11:18.483</span>: RIP: sending v2 flash update to 224.0.0.9 via Serial0/0 (10.0.12.2)<br />
Mar 1 <span style="color:#ff0000;">04:11:18.483</span>: RIP: build flash update entries<br />
Mar 1 <span style="color:#ff0000;">04:11:18.483</span>: 4.4.4.0/24 via 0.0.0.0, metric 14, tag 0<br />
Mar 1 <span style="color:#ff0000;">04:11:18.487</span>: RIP: sending v2 flash update to 224.0.0.9 via Serial0/1 (10.0.23.2)<br />
Mar 1 <span style="color:#ff0000;">04:11:18.487</span>: RIP: build flash update entries - suppressing null update<br />
Mar 1 <span style="color:#ff0000;">04:11:24.703</span>: RIP: received v2 update from 10.0.23.3 on Serial0/1<br />
Mar 1 <span style="color:#ff0000;">04:11:24.703</span>: 4.4.4.0/24 via 0.0.0.0 in 16 hops (inaccessible)<br />
Mar 1 <span style="color:#ff0000;">04:11:24.703</span>: RT: del 4.4.4.0/24 via 10.0.23.3, rip metric [120/13]<br />
Mar 1 <span style="color:#ff0000;">04:11:24.703</span>: RT: delete subnet route to 4.4.4.0/24<br />
Mar 1 <span style="color:#ff0000;">04:11:24.703</span>: RT: NET-RED 4.4.4.0/24<br />
Mar 1 <span style="color:#ff0000;">04:11:24.707</span>: RT: delete network route to 4.0.0.0<br />
Mar 1 <span style="color:#ff0000;">04:11:24.707</span>: RT: NET-RED 4.0.0.0/8<br />
Mar 1 <span style="color:#ff0000;">04:11:26.707</span>: RIP: sending v2 flash update to 224.0.0.9 via Serial0/0 (10.0.12.2)<br />
Mar 1 <span style="color:#ff0000;">04:11:26.707</span>: RIP: build flash update entries<br />
Mar 1 <span style="color:#ff0000;">04:11:26.707</span>: 4.4.4.0/24 via 0.0.0.0, metric 16, tag 0<br />
Mar 1 <span style="color:#ff0000;">04:11:26.707</span>: RIP: sending v2 flash update to 224.0.0.9 via Serial0/1 (10.0.23.2)<br />
Mar 1 <span style="color:#ff0000;">04:11:26.707</span>: RIP: build flash update entries<br />
Mar 1 <span style="color:#ff0000;">04:11:26.707</span>: 4.4.4.0/24 via 0.0.0.0, metric 16, tag 0<br />
</code></p>
<p> </p>
<p> </p>
<p>So what exactly causes holddown to occur?  Earlier when we looked at the invalid timer, we saw the route placed into holddown when the invalid timer expired.  As it turns out, this is the <strong><span style="text-decoration:underline;">only</span></strong> time that the holddown timer is used.  Let&#8217;s look at an example where we can see this being used.  We will shut down R4 F0/0.  The last update is received at <span style="color:#ff0000;"><span style="font-family:Courier New;">04:36:16.207</span><span style="color:#000000;">. </span></span> After 180 seconds, the invalid expires and we see the message about the route entering holddown:</p>
<p><code><span style="color:#0000ff;">R3#debug ip rip</span><br />
Mar 1 <span style="color:#ff0000;">04:36:16.207</span>: RIP: received v2 update from 10.0.34.4 on FastEthernet0/0<br />
Mar 1 <span style="color:#ff0000;">04:36:16.211</span>: 4.4.4.0/24 via 0.0.0.0 in 2 hops<br />
Mar 1 <span style="color:#ff0000;">04:36:16.211</span>: 10.0.12.0/24 via 0.0.0.0 in 2 hops<br />
Mar 1 <span style="color:#ff0000;">04:36:16.211</span>: 10.0.14.0/24 via 0.0.0.0 in 1 hops<br />
</code></p>
<p><code><span style="color:#0000ff;">R4:<br />
interface FastEthernet0/0<br />
 shutdown</span><br />
</code></p>
<p><code><span style="color:#0000ff;">R3#debug ip routing<br />
R3#debug ip rip<br />
</span>Mar 1 <span style="color:#ff0000;">04:39:19.843</span>: RT: delete route to 4.4.4.0 via 10.0.34.4, rip metric [120/2]<br />
Mar 1 <span style="color:#ff0000;">04:39:19.843</span>: RT: SET_LAST_RDB for 4.4.4.0/24<br />
OLD rdb: via 11.13.11.13<br />
Mar 1 <span style="color:#ff0000;">04:39:19.843</span>: RT: no routes to 4.4.4.0, entering holddown<br />
Mar 1 <span style="color:#ff0000;">04:39:19.843</span>: RT: NET-RED 4.4.4.0/24<br />
Mar 1 <span style="color:#ff0000;">04:39:19.843</span>: RT: delete route to 10.0.14.0 via 10.0.34.4, rip metric [120/1]<br />
Mar 1 <span style="color:#ff0000;">04:39:19.843</span>: RT: SET_LAST_RDB for 10.0.14.0/24<br />
OLD rdb: via 11.13.11.13<br />
Mar 1 <span style="color:#ff0000;">04:39:19.843</span>: RT: no routes to 10.0.14.0, entering holddown<br />
Mar 1 <span style="color:#ff0000;">04:39:19.843</span>: RT: NET-RED 10.0.14.0/24<br />
Mar 1 <span style="color:#ff0000;">04:39:21.843</span>: RIP: sending v2 flash update to 224.0.0.9 via FastEthernet0/0 (10.0.34.3)<br />
Mar 1 <span style="color:#ff0000;">04:39:21.843</span>: RIP: build flash update entries<br />
Mar 1 <span style="color:#ff0000;">04:39:21.843</span>: 4.4.4.0/24 via 0.0.0.0, metric 16, tag 0<br />
Mar 1 <span style="color:#ff0000;">04:39:21.843</span>: 10.0.14.0/24 via 0.0.0.0, metric 16, tag 0<br />
Mar 1 <span style="color:#ff0000;">04:39:21.843</span>: RIP: sending v2 flash update to 224.0.0.9 via Serial0/0 (10.0.23.3)<br />
Mar 1 <span style="color:#ff0000;">04:39:21.843</span>: RIP: build flash update entries<br />
Mar 1 <span style="color:#ff0000;">04:39:21.843</span>: 4.4.4.0/24 via 0.0.0.0, metric 16, tag 0<br />
Mar 1 <span style="color:#ff0000;">04:39:21.843</span>: 10.0.14.0/24 via 0.0.0.0, metric 16, tag 0<br />
</code></p>
<p>R3 receives an update from R2 advertising 4.4.4.0/24 with hop-count 3 a few seconds later, but the update is ignored because the route is in holddown:</p>
<p><code><span style="color:#0000ff;">R3#debug ip routing</span><br />
Mar 1 <span style="color:#ff0000;">04:39:38.135</span>: RIP: received v2 update from 10.0.23.2 on Serial0/0<br />
Mar 1 <span style="color:#ff0000;">04:39:38.135</span>: 4.4.4.0/24 via 0.0.0.0 in 3 hops<br />
Mar 1 <span style="color:#ff0000;">04:39:38.139</span>: 10.0.12.0/24 via 0.0.0.0 in 1 hops<br />
Mar 1 <span style="color:#ff0000;">04:39:38.139</span>: 10.0.14.0/24 via 0.0.0.0 in 2 hops<br />
</code></p>
<p>Let&#8217;s bring R4 F0/0 back up and see if R3 accepts the update from the original source:</p>
<p><code><span style="color:#0000ff;">R4:<br />
interface FastEthernet0/0<br />
 no shutdown</span><br />
</code></p>
<p><code><span style="color:#0000ff;">R3#debug ip rip</span><br />
Mar 1 <span style="color:#ff0000;">04:40:01.583</span>: RIP: received v2 update from 10.0.34.4 on FastEthernet0/0<br />
Mar 1 <span style="color:#ff0000;">04:40:01.583</span>: 4.4.4.0/24 via 0.0.0.0 in 2 hops<br />
Mar 1 <span style="color:#ff0000;">04:40:01.587</span>: 10.0.12.0/24 via 0.0.0.0 in 2 hops<br />
Mar 1 <span style="color:#ff0000;">04:40:01.587</span>: 10.0.14.0/24 via 0.0.0.0 in 1 hops<br />
</code></p>
<p>R3 ignores the update from the original source as well during the holddown period and continues advertising the route as unreachable out both interfaces:</p>
<p><code><span style="color:#0000ff;">R3#debug ip rip<br />
</span>Mar 1 <span style="color:#ff0000;">04:40:05.363</span>: RIP: sending v2 update to 224.0.0.9 via Serial0/0 (10.0.23.3)<br />
Mar 1 <span style="color:#ff0000;">04:40:05.363</span>: RIP: build update entries<br />
Mar 1 <span style="color:#ff0000;">04:40:05.363</span>: 4.4.4.0/24 via 0.0.0.0, metric 16, tag 0<br />
Mar 1 <span style="color:#ff0000;">04:40:05.367</span>: 10.0.14.0/24 via 0.0.0.0, metric 16, tag 0<br />
Mar 1 <span style="color:#ff0000;">04:40:05.367</span>: 10.0.34.0/24 via 0.0.0.0, metric 1, tag 0<br />
Mar 1 <span style="color:#ff0000;">04:40:13.039</span>: RIP: sending v2 update to 224.0.0.9 via FastEthernet0/0 (10.0.34.3)<br />
Mar 1 <span style="color:#ff0000;">04:40:13.039</span>: RIP: build update entries<br />
Mar 1 <span style="color:#ff0000;">04:40:13.039</span>: 4.4.4.0/24 via 0.0.0.0, metric 16, tag 0<br />
Mar 1 <span style="color:#ff0000;">04:40:13.043</span>: 10.0.12.0/24 via 0.0.0.0, metric 2, tag 0<br />
Mar 1 <span style="color:#ff0000;">04:40:13.043</span>: 10.0.14.0/24 via 0.0.0.0, metric 16, tag 0<br />
Mar 1 <span style="color:#ff0000;">04:40:13.043</span>: 10.0.23.0/24 via 0.0.0.0, metric 1, tag 0<br />
</code></p>
<p>60 seconds after the invalid expired, the flush timer expires and the route is deleted:</p>
<p><code><span style="color:#0000ff;">R3#debug ip routing</span><br />
Mar 1 <span style="color:#ff0000;">04:40:19.843</span>: RT: delete subnet route to 4.4.4.0/24<br />
Mar 1 <span style="color:#ff0000;">04:40:19.843</span>: RT: NET-RED 4.4.4.0/24<br />
Mar 1 <span style="color:#ff0000;">04:40:19.843</span>: RT: delete network route to 4.0.0.0<br />
Mar 1 <span style="color:#ff0000;">04:40:19.843</span>: RT: NET-RED 4.0.0.0/8<br />
Mar 1 <span style="color:#ff0000;">04:40:19.843</span>: RT: delete subnet route to 10.0.14.0/24<br />
Mar 1 <span style="color:#ff0000;">04:40:19.843</span>: RT: NET-RED 10.0.14.0/24<br />
</code></p>
<p>When R3 receives the next periodic update from R4 a few seconds later, 4.4.4.0/24 and 10.0.14.0/24 are added back to the routing table and RIP database:</p>
<p><code><span style="color:#0000ff;">R3#debug ip routing<br />
R3#debug ip rip<br />
</span>Mar 1 <span style="color:#ff0000;">04:40:30.083</span>: RIP: received v2 update from 10.0.34.4 on FastEthernet0/0<br />
Mar 1 <span style="color:#ff0000;">04:40:30.083</span>: 4.4.4.0/24 via 0.0.0.0 in 2 hops<br />
Mar 1 <span style="color:#ff0000;">04:40:30.087</span>: RT: SET_LAST_RDB for 4.4.4.0/24<br />
NEW rdb: via 10.0.34.4<br />
Mar 1 <span style="color:#ff0000;">04:40:30.087</span>: RT: add 4.4.4.0/24 via 10.0.34.4, rip metric [120/2]<br />
Mar 1 <span style="color:#ff0000;">04:40:30.087</span>: RT: NET-RED 4.4.4.0/24<br />
Mar 1 <span style="color:#ff0000;">04:40:30.091</span>: 10.0.12.0/24 via 0.0.0.0 in 2 hops<br />
Mar 1<span style="color:#ff0000;"> 04:40:30.091</span>: 10.0.14.0/24 via 0.0.0.0 in 1 hops<br />
Mar 1 <span style="color:#ff0000;">04:40:30.095</span>: RT: SET_LAST_RDB for 10.0.14.0/24<br />
NEW rdb: via 10.0.34.4<br />
Mar 1 <span style="color:#ff0000;">04:40:30.095</span>: RT: add 10.0.14.0/24 via 10.0.34.4, rip metric [120/1]<br />
Mar 1 <span style="color:#ff0000;">04:40:30.095</span>: RT: NET-RED 10.0.14.0/24<br />
</code></p>
<p>Wait a minute, if the holddown timer is 180 seconds by default shouldn&#8217;t updates be ignored for another 120 seconds?  If the flush timer expires before the holddown timer does, the route no longer exists in either the RIP database or routing table so any updates will be accepted for it.  Therefore, the effective holddown period is the lesser of the configured holddown timer and the flush minus the invalid timer.  Let&#8217;s repeat this with a holddown timer of 30 seconds to demonstrate this:</p>
<p><code><span style="color:#0000ff;">R3:<br />
router rip<br />
 timers basic 30 180 30 240</span><br />
</code></p>
<p><code><span style="color:#0000ff;">R3#debug ip rip<br />
</span>Mar 1 <span style="color:#ff0000;">04:50:25.167</span>: RIP: received v2 update from 10.0.34.4 on FastEthernet0/0<br />
Mar 1 <span style="color:#ff0000;">04:50:25.167</span>: 4.4.4.0/24 via 0.0.0.0 in 2 hops<br />
Mar 1 <span style="color:#ff0000;">04:50:25.171</span>: 10.0.12.0/24 via 0.0.0.0 in 2 hops<br />
Mar 1 <span style="color:#ff0000;">04:50:25.171</span>: 10.0.14.0/24 via 0.0.0.0 in 1 hops<br />
</code></p>
<p><code><span style="color:#0000ff;">R4:<br />
interface FastEthernet0/0<br />
 shutdown</span><br />
</code></p>
<p>The routes enter holddown at <span style="color:#ff0000;"><span style="font-family:Courier New;">04:53:27.827<span style="color:#000000;">:</span> </span></span></p>
<p><code><span style="color:#0000ff;">R3#debug ip routing<br />
R3#debug ip rip</span><br />
Mar 1 <span style="color:#ff0000;">04:53:27.823</span>: RT: delete route to 4.4.4.0 via 10.0.34.4, rip metric [120/2]<br />
Mar 1 <span style="color:#ff0000;">04:53:27.823</span>: RT: SET_LAST_RDB for 4.4.4.0/24<br />
OLD rdb: via 11.13.11.13<br />
Mar 1 <span style="color:#ff0000;">04:53:27.827</span>: RT: no routes to 4.4.4.0, entering holddown<br />
Mar 1 <span style="color:#ff0000;">04:53:27.827</span>: RT: NET-RED 4.4.4.0/24<br />
Mar 1 <span style="color:#ff0000;">04:53:27.827</span>: RT: delete route to 10.0.14.0 via 10.0.34.4, rip metric [120/1]<br />
Mar 1 <span style="color:#ff0000;">04:53:27.831</span>: RT: SET_LAST_RDB for 10.0.14.0/24<br />
OLD rdb: via 11.13.11.13<br />
Mar 1 <span style="color:#ff0000;">04:53:27.831</span>: RT: no routes to 10.0.14.0, entering holddown<br />
Mar 1 <span style="color:#ff0000;">04:53:27.831</span>: RT: NET-RED 10.0.14.0/24<br />
Mar 1 <span style="color:#ff0000;">04:53:29.827</span>: RIP: sending v2 flash update to 224.0.0.9 via FastEthernet0/0 (10.0.34.3)<br />
Mar 1 <span style="color:#ff0000;">04:53:29.827</span>: RIP: build flash update entries<br />
Mar 1 <span style="color:#ff0000;">04:53:29.827</span>: 4.4.4.0/24 via 0.0.0.0, metric 16, tag 0<br />
Mar 1 <span style="color:#ff0000;">04:53:29.831</span>: 10.0.14.0/24 via 0.0.0.0, metric 16, tag 0<br />
Mar 1 <span style="color:#ff0000;">04:53:29.831</span>: RIP: sending v2 flash update to 224.0.0.9 via Serial0/0 (10.0.23.3)<br />
Mar 1 <span style="color:#ff0000;">04:53:29.831</span>: RIP: build flash update entries<br />
Mar 1 <span style="color:#ff0000;">04:53:29.831</span>: 4.4.4.0/24 via 0.0.0.0, metric 16, tag 0<br />
Mar 1 <span style="color:#ff0000;">04:53:29.835</span>: 10.0.14.0/24 via 0.0.0.0, metric 16, tag 0<br />
</code></p>
<p>After bringing R4 F0/0 back up, R3 receives a periodic update from R4 a little over 30 seconds after the routes entered holddown.  We see a log message stating that the routes have come out of holddown and the new routing information has been accepted:</p>
<p><code><span style="color:#0000ff;">R3#debug ip routing<br />
R3#debug ip rip</span><br />
Mar 1 <span style="color:#ff0000;">04:53:59.203</span>: RIP: received v2 update from 10.0.34.4 on FastEthernet0/0<br />
Mar 1 <span style="color:#ff0000;">04:53:59.203</span>: 4.4.4.0/24 via 0.0.0.0 in 2 hops<br />
Mar 1 <span style="color:#ff0000;">04:53:59.203</span>: RT: 4.4.4.0 came out of holddown<br />
Mar 1 <span style="color:#ff0000;">04:53:59.203</span>: RT: SET_LAST_RDB for 4.4.4.0/24<br />
NEW rdb: via 10.0.34.4<br />
Mar 1 <span style="color:#ff0000;">04:53:59.203</span>: RT: add 4.4.4.0/24 via 10.0.34.4, rip metric [120/2]<br />
Mar 1 <span style="color:#ff0000;">04:53:59.203</span>: RT: NET-RED 4.4.4.0/24<br />
Mar 1 <span style="color:#ff0000;">04:53:59.203</span>: 10.0.12.0/24 via 0.0.0.0 in 16 hops (inaccessible)<br />
Mar 1 <span style="color:#ff0000;">04:53:59.207</span>: 10.0.14.0/24 via 0.0.0.0 in 1 hops<br />
Mar 1 <span style="color:#ff0000;">04:53:59.207</span>: RT: 10.0.14.0 came out of holddown<br />
Mar 1 <span style="color:#ff0000;">04:53:59.207</span>: RT: SET_LAST_RDB for 10.0.14.0/24<br />
NEW rdb: via 10.0.34.4<br />
Mar 1 <span style="color:#ff0000;">04:53:59.207</span>: RT: add 10.0.14.0/24 via 10.0.34.4, rip metric [120/1]<br />
Mar 1 <span style="color:#ff0000;">04:53:59.211</span>: RT: NET-RED 10.0.14.0/24<br />
Mar 1 <span style="color:#ff0000;">04:54:01.203</span>: RIP: sending v2 flash update to 224.0.0.9 via FastEthernet0/0 (10.0.34.3)<br />
Mar 1 <span style="color:#ff0000;">04:54:01.203</span>: RIP: build flash update entries - suppressing null update<br />
Mar 1 <span style="color:#ff0000;">04:54:01.203</span>: RIP: sending v2 flash update to 224.0.0.9 via Serial0/0 (10.0.23.3)<br />
Mar 1 <span style="color:#ff0000;">04:54:01.207</span>: RIP: build flash update entries<br />
Mar 1 <span style="color:#ff0000;">04:54:01.207</span>: 4.4.4.0/24 via 0.0.0.0, metric 3, tag 0<br />
Mar 1 <span style="color:#ff0000;">04:54:01.207</span>: 10.0.14.0/24 via 0.0.0.0, metric 2, tag 0<br />
</code></p>
<p> </p>
<p>So now we&#8217;ve seen how the holddown timer actually works, but this brings up another question:  If the route isn&#8217;t being placed in holddown when an unreachable update is received, what exactly is happening and how does the router know how long to pass the unreachable advertisement along?  The behavior is similar to when the invalid timer first expires on a router, with 2 exceptions:</p>
<p>1.  The route is not placed in holddown</p>
<p>2.  The route is maintained only in the RIP database.  It is removed from the routing table immediately and therefore not used to forward packets.</p>
<p>A router receiving an unreachable advertisement keeps the route in the RIP database for (flush &#8211; invalid) seconds and continues including it in updates as long as it is there.  This means that when an unreachable route is received, the actual values of the flush and invalid are not important for controlling how long the route continues to be advertised, only the difference between them.  To demonstrate this, we will change the flush and invalid timers on R1, R2, and R3.  The flush timer on R1 will be lowered to 180, the same as the invalid.  The invalid timer on R2 will be lowered to 60 while keeping the default flush of 240.  The invalid and flush will both be set to very high values on R3 while maintaining the difference of 60 between the two:</p>
<p><code><span style="color:#0000ff;">R1:<br />
router rip<br />
 timers basic 30 180 180 180<br />
</span></code></p>
<p><code><span style="color:#0000ff;">R2:<br />
router rip<br />
 timers basic 30 60 180 240<br />
</span></code></p>
<p><code><span style="color:#0000ff;">R3:<br />
router rip<br />
 timers basic 30 10000 180 10060</span><br />
</code></p>
<p>We will then shut down R4&#8242;s loopback.  All other interfaces are up, so the other 3 routers will learn of the failed route by an unreachable advertisement rather than by their invalid timer expiring:</p>
<p><code><span style="color:#0000ff;">R4:<br />
interface Loopback0<br />
 shutdown</span><br />
</code></p>
<p>Each of the routers hears of the failed route at approximately 05:34:33.  R1, whose (flush &#8211; invalid) is 0 seconds, keeps the failed route in the RIP database just long enough to send a flash update out all interfaces.  There is no log message showing when a route is removed from the RIP database, but we can see that at the first periodic update the route is no longer included:</p>
<p><code><span style="color:#0000ff;">R1#debug ip routing<br />
R1#debug ip rip</span><br />
Mar 1 <span style="color:#ff0000;">05:34:32.799</span>: RIP: received v2 update from 10.0.14.4 on Serial0/1<br />
Mar 1 <span style="color:#ff0000;">05:34:32.799</span>: 4.4.4.0/24 via 0.0.0.0 in 16 hops (inaccessible)<br />
Mar 1 <span style="color:#ff0000;">05:34:32.799</span>: RT: del 4.4.4.0/24 via 10.0.14.4, rip metric [120/1]<br />
Mar 1 <span style="color:#ff0000;">05:34:32.803</span>: RT: delete subnet route to 4.4.4.0/24<br />
Mar 1 <span style="color:#ff0000;">05:34:32.803</span>: RT: NET-RED 4.4.4.0/24<br />
Mar 1 <span style="color:#ff0000;">05:34:32.803</span>: RT: delete network route to 4.0.0.0<br />
Mar 1 <span style="color:#ff0000;">05:34:32.807</span>: RT: NET-RED 4.0.0.0/8<br />
Mar 1 <span style="color:#ff0000;">05:34:32.807</span>: 10.0.23.0/24 via 0.0.0.0 in 2 hops<br />
Mar 1 <span style="color:#ff0000;">05:34:32.807</span>: 10.0.34.0/24 via 0.0.0.0 in 1 hops<br />
Mar 1 <span style="color:#ff0000;">05:34:34.807</span>: RIP: sending v2 flash update to 224.0.0.9 via Serial0/0 (10.0.12.1)<br />
Mar 1 <span style="color:#ff0000;">05:34:34.807</span>: RIP: build flash update entries<br />
Mar 1 <span style="color:#ff0000;">05:34:34.807</span>: 4.4.4.0/24 via 0.0.0.0, metric 16, tag 0<br />
Mar 1 <span style="color:#ff0000;">05:34:34.811</span>: RIP: sending v2 flash update to 224.0.0.9 via Serial0/1 (10.0.14.1)<br />
Mar 1 <span style="color:#ff0000;">05:34:34.811</span>: RIP: build flash update entries<br />
Mar 1 <span style="color:#ff0000;">05:34:34.811</span>: 4.4.4.0/24 via 0.0.0.0, metric 16, tag 0<br />
Mar 1 <span style="color:#ff0000;">05:34:46.087</span>: RIP: sending v2 update to 224.0.0.9 via Serial0/1 (10.0.14.1)<br />
Mar 1 <span style="color:#ff0000;">05:34:46.087</span>: RIP: build update entries<br />
Mar 1 <span style="color:#ff0000;">05:34:46.087</span>: 10.0.12.0/24 via 0.0.0.0, metric 1, tag 0</code><code><br />
Mar 1 <span style="color:#ff0000;">05:34:46.091</span>: 10.0.23.0/24 via 0.0.0.0, metric 2, tag 0<br />
Mar 1 <span style="color:#ff0000;">05:34:48.039</span>: RIP: sending v2 update to 224.0.0.9 via Serial0/0 (10.0.12.1)<br />
Mar 1 <span style="color:#ff0000;">05:34:48.039</span>: RIP: build update entries<br />
Mar 1 <span style="color:#ff0000;">05:34:48.039</span>: 10.0.14.0/24 via 0.0.0.0, metric 1, tag 0<br />
Mar 1 <span style="color:#ff0000;">05:34:48.043</span>: 10.0.34.0/24 via 0.0.0.0, metric 2, tag 0<br />
</code></p>
<p>R2&#8242;s flush &#8211; invalid is 180 seconds, which is approximately how long the route continues to be advertised for.  Only the last of it&#8217;s periodic updates that include 4.4.4.0/24 and the first of it&#8217;s periodic updates that exclude it are shown to keep the output shorter:</p>
<p><code><span style="color:#0000ff;">R2#debug ip routing<br />
R2#debug ip rip<br />
</span>Mar 1 <span style="color:#ff0000;">05:34:35.691</span>: RIP: received v2 update from 10.0.12.1 on Serial0/0<br />
Mar 1 <span style="color:#ff0000;">05:34:35.691</span>: 4.4.4.0/24 via 0.0.0.0 in 16 hops (inaccessible)<br />
Mar 1 <span style="color:#ff0000;">05:34:35.691</span>: RT: del 4.4.4.0/24 via 10.0.12.1, rip metric [120/2]<br />
Mar 1 <span style="color:#ff0000;">05:34:35.695</span>: RT: delete subnet route to 4.4.4.0/24<br />
Mar 1 <span style="color:#ff0000;">05:34:35.695</span>: RT: NET-RED 4.4.4.0/24<br />
Mar 1 <span style="color:#ff0000;">05:34:35.695</span>: RT: delete network route to 4.0.0.0<br />
Mar 1 <span style="color:#ff0000;">05:34:35.695</span>: RT: NET-RED 4.0.0.0/8<br />
Mar 1 <span style="color:#ff0000;">05:34:37.699</span>: RIP: sending v2 flash update to 224.0.0.9 via Serial0/0 (10.0.12.2)<br />
Mar 1 <span style="color:#ff0000;">05:34:37.699</span>: RIP: build flash update entries<br />
Mar 1 <span style="color:#ff0000;">05:34:37.699</span>: 4.4.4.0/24 via 0.0.0.0, metric 16, tag 0<br />
Mar 1 <span style="color:#ff0000;">05:34:37.703</span>: RIP: sending v2 flash update to 224.0.0.9 via Serial0/1 (10.0.23.2)<br />
Mar 1 <span style="color:#ff0000;">05:34:37.703</span>: RIP: build flash update entries<br />
Mar 1 <span style="color:#ff0000;">05:34:37.703</span>: 4.4.4.0/24 via 0.0.0.0, metric 16, tag 0<br />
</code></p>
<p><img class="alignnone size-full wp-image-829" title="15-r2-show-ip-route" src="http://cisconinja.files.wordpress.com/2009/04/15-r2-show-ip-route.png?w=483&#038;h=104" alt="15-r2-show-ip-route" width="483" height="104" /></p>
<p><img class="alignnone size-full wp-image-830" title="15-r2-rip-database" src="http://cisconinja.files.wordpress.com/2009/04/15-r2-rip-database.png?w=363&#038;h=131" alt="15-r2-rip-database" width="363" height="131" /></p>
<p><code><span style="color:#0000ff;">R2#debug ip rip<br />
R2#debug ip routing</span><br />
Mar 1 <span style="color:#ff0000;">05:37:11.683</span>: RIP: sending v2 update to 224.0.0.9 via Serial0/1 (10.0.23.2)<br />
Mar 1 <span style="color:#ff0000;">05:37:11.683</span>: RIP: build update entries<br />
Mar 1 <span style="color:#ff0000;">05:37:11.683</span>: 4.4.4.0/24 via 0.0.0.0, metric 16, tag 0<br />
Mar 1 <span style="color:#ff0000;">05:37:11.687</span>: 10.0.12.0/24 via 0.0.0.0, metric 1, tag 0<br />
Mar 1 <span style="color:#ff0000;">05:37:11.687</span>: 10.0.14.0/24 via 0.0.0.0, metric 2, tag 0<br />
Mar 1 <span style="color:#ff0000;">05:37:13.375</span>: RIP: sending v2 update to 224.0.0.9 via Serial0/0 (10.0.12.2)<br />
Mar 1 <span style="color:#ff0000;">05:37:13.375</span>: RIP: build update entries<br />
Mar 1 <span style="color:#ff0000;">05:37:13.375</span>: 4.4.4.0/24 via 0.0.0.0, metric 16, tag 0<br />
Mar 1 <span style="color:#ff0000;">05:37:13.379</span>: 10.0.23.0/24 via 0.0.0.0, metric 1, tag 0<br />
Mar 1 <span style="color:#ff0000;">05:37:13.379</span>: 10.0.34.0/24 via 0.0.0.0, metric 2, tag 0<br />
Mar 1 <span style="color:#ff0000;">05:37:39.963</span>: RIP: sending v2 update to 224.0.0.9 via Serial0/0 (10.0.12.2)<br />
Mar 1 <span style="color:#ff0000;">05:37:39.963</span>: RIP: build update entries<br />
Mar 1 <span style="color:#ff0000;">05:37:39.963</span>: 10.0.23.0/24 via 0.0.0.0, metric 1, tag 0<br />
Mar 1 <span style="color:#ff0000;">05:37:39.967</span>: 10.0.34.0/24 via 0.0.0.0, metric 2, tag 0<br />
Mar 1 <span style="color:#ff0000;">05:37:40.167</span>: RIP: sending v2 update to 224.0.0.9 via Serial0/1 (10.0.23.2)<br />
Mar 1 <span style="color:#ff0000;">05:37:40.167</span>: RIP: build update entries<br />
Mar 1 <span style="color:#ff0000;">05:37:40.167</span>: 10.0.12.0/24 via 0.0.0.0, metric 1, tag 0<br />
Mar 1 <span style="color:#ff0000;">05:37:40.167</span>: 10.0.14.0/24 via 0.0.0.0, metric 2, tag 0<br />
</code></p>
<p><img class="alignnone size-full wp-image-832" title="16-r2-rip-database" src="http://cisconinja.files.wordpress.com/2009/04/16-r2-rip-database.png?w=361&#038;h=105" alt="16-r2-rip-database" width="361" height="105" /></p>
<p>R3&#8242;s flush &#8211; invalid is 60 seconds, and even though we set them to very high values, we can see that the failed route is advertised for 60 seconds just like the default.  Again, only the last periodic update including 4.4.4.0/24 and first periodic update excluding it are shown:</p>
<p><code><span style="color:#0000ff;">R3#debug ip routing<br />
R3#debug ip rip</span><br />
Mar 1 <span style="color:#ff0000;">05:34:35.407</span>: RIP: received v2 update from 10.0.34.4 on FastEthernet0/0<br />
Mar 1 <span style="color:#ff0000;">05:34:35.407</span>: 4.4.4.0/24 via 0.0.0.0 in 16 hops (inaccessible)<br />
Mar 1 <span style="color:#ff0000;">05:34:35.411</span>: RT: del 4.4.4.0/24 via 10.0.34.4, rip metric [120/2]<br />
Mar 1 <span style="color:#ff0000;">05:34:35.411</span>: RT: delete subnet route to 4.4.4.0/24<br />
Mar 1 <span style="color:#ff0000;">05:34:35.411</span>: RT: NET-RED 4.4.4.0/24<br />
Mar 1 <span style="color:#ff0000;">05:34:35.415</span>: RT: delete network route to 4.0.0.0<br />
Mar 1 <span style="color:#ff0000;">05:34:35.415</span>: RT: NET-RED 4.0.0.0/8<br />
Mar 1 <span style="color:#ff0000;">05:34:37.415</span>: RIP: sending v2 flash update to 224.0.0.9 via FastEthernet0/0 (10.0.34.3)<br />
Mar 1 <span style="color:#ff0000;">05:34:37.415</span>: RIP: build flash update entries<br />
Mar 1 <span style="color:#ff0000;">05:34:37.415</span>: 4.4.4.0/24 via 0.0.0.0, metric 16, tag 0<br />
Mar 1 <span style="color:#ff0000;">05:34:37.419</span>: RIP: sending v2 flash update to 224.0.0.9 via Serial0/0 (10.0.23.3)<br />
Mar 1 <span style="color:#ff0000;">05:34:37.419</span>: RIP: build flash update entries<br />
Mar 1 <span style="color:#ff0000;">05:34:37.419</span>: 4.4.4.0/24 via 0.0.0.0, metric 16, tag 0<br />
Mar 1 <span style="color:#ff0000;">05:35:35.875</span>: RIP: sending v2 update to 224.0.0.9 via Serial0/0 (10.0.23.3)<br />
Mar 1 <span style="color:#ff0000;">05:35:35.875</span>: RIP: build update entries<br />
Mar 1 <span style="color:#ff0000;">05:35:35.875</span>: 4.4.4.0/24 via 0.0.0.0, metric 16, tag 0<br />
Mar 1 <span style="color:#ff0000;">05:35:35.879</span>: 10.0.14.0/24 via 0.0.0.0, metric 2, tag 0<br />
Mar 1 <span style="color:#ff0000;">05:35:35.879</span>: 10.0.34.0/24 via 0.0.0.0, metric 1, tag 0<br />
Mar 1 <span style="color:#ff0000;">05:35:37.163</span>: RIP: sending v2 update to 224.0.0.9 via FastEthernet0/0 (10.0.34.3)<br />
Mar 1 <span style="color:#ff0000;">05:35:37.163</span>: RIP: build update entries<br />
Mar 1 <span style="color:#ff0000;">05:35:37.163</span>: 4.4.4.0/24 via 0.0.0.0, metric 16, tag 0<br />
Mar 1 <span style="color:#ff0000;">05:35:37.167</span>: 10.0.12.0/24 via 0.0.0.0, metric 2, tag 0<br />
Mar 1 <span style="color:#ff0000;">05:35:37.167</span>: 10.0.23.0/24 via 0.0.0.0, metric 1, tag 0<br />
Mar 1 <span style="color:#ff0000;">05:36:02.035</span>: RIP: sending v2 update to 224.0.0.9 via Serial0/0 (10.0.23.3)<br />
Mar 1 <span style="color:#ff0000;">05:36:02.035</span>: RIP: build update entries<br />
Mar 1 <span style="color:#ff0000;">05:36:02.035</span>: 10.0.14.0/24 via 0.0.0.0, metric 2, tag 0<br />
Mar 1 <span style="color:#ff0000;">05:36:02.039</span>: 10.0.34.0/24 via 0.0.0.0, metric 1, tag 0<br />
Mar 1 <span style="color:#ff0000;">05:36:05.587</span>: RIP: sending v2 update to 224.0.0.9 via FastEthernet0/0 (10.0.34.3)<br />
Mar 1 <span style="color:#ff0000;">05:36:05.587</span>: RIP: build update entries<br />
Mar 1 <span style="color:#ff0000;">05:36:05.587</span>: 10.0.12.0/24 via 0.0.0.0, metric 2, tag 0<br />
Mar 1 <span style="color:#ff0000;">05:36:05.591</span>: 10.0.23.0/24 via 0.0.0.0, metric 1, tag 0<br />
</code></p>
<p> </p>
<p> </p>
<p>Next, we will look at the holddown timer in RIPng.  The holddown timer in RIPng is quite a bit different than in RIPv1/v2.  The default setting for the holddown timer is 0 seconds, so it is not even used in RIPng unless explicitly configured:</p>
<p><img class="alignnone size-full wp-image-836" title="17-r3-ripng" src="http://cisconinja.files.wordpress.com/2009/04/17-r3-ripng.png?w=450&#038;h=26" alt="17-r3-ripng" width="450" height="26" /></p>
<p>If it is enabled, the holddown timer in RIPng works similarly to how the holddown timer in RIPv1/v2 is supposed to work.  Holddown in RIPng is activated by either of the following:</p>
<p style="padding-left:30px;">1.  The invalid timer expiring (same as RIPv1/v2)</p>
<p style="padding-left:30px;">2.  An unreachable route advertisement being received from the best route source </p>
<p>We&#8217;ve already seen a route placed in holddown when the invalid expired in RIPv2, so let&#8217;s try it with an unreachable route advertisement in RIPng.  We will set a holddown timer of 60 seconds on R3 to test this out and keep the other timers at their defaults:</p>
<p><code><span style="color:#0000ff;">R3:<br />
ipv6 router rip test<br />
 timers 30 180 60 120</span><br />
</code></p>
<p>Next we will shutdown R4&#8242;s loopback:</p>
<p><code><span style="color:#0000ff;">R4:<br />
interface Loopback0<br />
 shutdown<br />
</span></code></p>
<p>R3 deletes the route to 4.4.4.0/24 right away after receiving an update from R4.  In the RIP database, we see that the holddown timer has begun counting down:</p>
<p><code><span style="color:#0000ff;">R3#debug ipv6 routing<br />
R3#debug ipv6 rip</span><br />
Mar 1 <span style="color:#ff0000;">01:39:28.967</span>: RIPng: response received from FE80::4 on FastEthernet0/0 for test<br />
Mar 1 <span style="color:#ff0000;">01:39:28.967</span>: src=FE80::4 (FastEthernet0/0)<br />
Mar 1 <span style="color:#ff0000;">01:39:28.967</span>: dst=FF02::9<br />
Mar 1 <span style="color:#ff0000;">01:39:28.971</span>: sport=521, dport=521, length=92<br />
Mar 1 <span style="color:#ff0000;">01:39:28.971</span>: command=2, version=1, mbz=0, #rte=4<br />
Mar 1 <span style="color:#ff0000;">01:39:28.971</span>: tag=0, metric=1, prefix=2001:DB8:0:14::/64<br />
Mar 1 <span style="color:#ff0000;">01:39:28.971</span>: tag=0, metric=1, prefix=2001:DB8:0:34::/64<br />
Mar 1 <span style="color:#ff0000;">01:39:28.971</span>: tag=0, metric=2, prefix=2001:DB8:0:12::/64<br />
Mar 1 <span style="color:#ff0000;">01:39:28.971</span>: tag=0, metric=16, prefix=2001:DB8:0:4444::/64<br />
Mar 1 <span style="color:#ff0000;">01:39:28.975</span>: RIPng: 2001:DB8:0:4444::/64, path FE80::4/FastEthernet0/0 unreachable<br />
Mar 1 <span style="color:#ff0000;">01:39:28.975</span>: IPv6RT0: rip test, Delete 2001:DB8:0:4444::/64 from table<br />
Mar 1 <span style="color:#ff0000;">01:39:28.975</span>: RIPng: 2001:DB8:0:4444::/64, expired, ttg is 60<br />
Mar 1 <span style="color:#ff0000;">01:39:28.979</span>: RIPng: Triggered update requested<br />
Mar 1 <span style="color:#ff0000;">01:39:28.979</span>: IPv6RT0: Event: 2001:DB8:0:4444::/64, Del, owner rip, previous None<br />
Mar 1 <span style="color:#ff0000;">01:39:29.979</span>: RIPng: generating triggered update for test<br />
Mar 1 <span style="color:#ff0000;">01:39:29.979</span>: RIPng: Sending multicast update on Serial0/0 for test<br />
Mar 1 <span style="color:#ff0000;">01:39:29.979</span>: src=FE80::3<br />
Mar 1 <span style="color:#ff0000;">01:39:29.979</span>: dst=FF02::9 (Serial0/0)<br />
Mar 1 <span style="color:#ff0000;">01:39:29.979</span>: sport=521, dport=521, length=32<br />
Mar 1 <span style="color:#ff0000;">01:39:29.979</span>: command=2, version=1, mbz=0, #rte=1<br />
Mar 1 <span style="color:#ff0000;">01:39:29.979</span>: tag=0, metric=16, prefix=2001:DB8:0:4444::/64<br />
Mar 1 <span style="color:#ff0000;">01:39:29.979</span>: RIPng: Suppressed null multicast update on FastEthernet0/0 for test<br />
</code></p>
<p><img class="alignnone size-full wp-image-837" title="17-r3-ripng-database" src="http://cisconinja.files.wordpress.com/2009/04/17-r3-ripng-database.png?w=529&#038;h=153" alt="17-r3-ripng-database" width="529" height="153" /></p>
<p>If we bring R4&#8242;s loopback back up before the holddown expires, R3 receives a flash update from R4.  R3 also receives a flash update from R2 since R1 and R2 are using default timers and therefore did not place the route into holddown.  R3 ignores the flash updates from both routers, and even generates log messages showing that the updates were ignored because of holddown:</p>
<p><code><span style="color:#0000ff;">R3#debug ipv6 rip</span><br />
Mar 1 <span style="color:#ff0000;">01:39:43.867</span>: RIPng: response received from FE80::4 on FastEthernet0/0 for test<br />
Mar 1 <span style="color:#ff0000;">01:39:43.867</span>: src=FE80::4 (FastEthernet0/0)<br />
Mar 1 <span style="color:#ff0000;">01:39:43.871</span>: dst=FF02::9<br />
Mar 1 <span style="color:#ff0000;">01:39:43.871</span>: sport=521, dport=521, length=32<br />
Mar 1 <span style="color:#ff0000;">01:39:43.871</span>: command=2, version=1, mbz=0, #rte=1<br />
Mar 1 <span style="color:#ff0000;">01:39:43.871</span>: tag=0, metric=1, prefix=2001:DB8:0:4444::/64<br />
Mar 1 <span style="color:#ff0000;">01:39:43.871</span>: RIPng: 2001:DB8:0:4444::/64, held-down, ignoring update<br />
Mar 1 <span style="color:#ff0000;">01:39:47.815</span>: RIPng: response received from FE80::2 on Serial0/0 for test<br />
Mar 1 <span style="color:#ff0000;">01:39:47.815</span>: src=FE80::2 (Serial0/0)<br />
Mar 1 <span style="color:#ff0000;">01:39:47.819</span>: dst=FF02::9<br />
Mar 1 <span style="color:#ff0000;">01:39:47.819</span>: sport=521, dport=521, length=32<br />
Mar 1 <span style="color:#ff0000;">01:39:47.819</span>: command=2, version=1, mbz=0, #rte=1<br />
Mar 1 <span style="color:#ff0000;">01:39:47.819</span>: tag=0, metric=3, prefix=2001:DB8:0:4444::/64<br />
Mar 1 <span style="color:#ff0000;">01:39:47.819</span>: RIPng: 2001:DB8:0:4444::/64, held-down, ignoring update<br />
</code></p>
<p>The next periodic update is ignored as well.  The first periodic update that arrives after the holddown timer has expired is accepted and the route is added back to the routing table (R2&#8242;s update arrives earlier so the metric changes when R4&#8242;s update arrives):</p>
<p><code><span style="color:#0000ff;">R3#debug ipv6 routing<br />
R3#debug ipv6 rip</span><br />
Mar 1 <span style="color:#ff0000;">01:40:37.131</span>: RIPng: response received from FE80::2 on Serial0/0 for test<br />
Mar 1 <span style="color:#ff0000;">01:40:37.131</span>: src=FE80::2 (Serial0/0)<br />
Mar 1 <span style="color:#ff0000;">01:40:37.131</span>: dst=FF02::9<br />
Mar 1 <span style="color:#ff0000;">01:40:37.131</span>: sport=521, dport=521, length=92<br />
Mar 1 <span style="color:#ff0000;">01:40:37.135</span>: command=2, version=1, mbz=0, #rte=4<br />
Mar 1 <span style="color:#ff0000;">01:40:37.135</span>: tag=0, metric=1, prefix=2001:DB8:0:12::/64<br />
Mar 1 <span style="color:#ff0000;">01:40:37.135</span>: tag=0, metric=1, prefix=2001:DB8:0:23::/64<br />
Mar 1 <span style="color:#ff0000;">01:40:37.135</span>: tag=0, metric=2, prefix=2001:DB8:0:14::/64<br />
Mar 1 <span style="color:#ff0000;">01:40:37.135</span>: tag=0, metric=3, prefix=2001:DB8:0:4444::/64<br />
Mar 1 <span style="color:#ff0000;">01:40:37.139</span>: RIPng: 2001:DB8:0:4444::/64, metric changed to 4<br />
Mar 1 <span style="color:#ff0000;">01:40:37.139</span>: RIPng: 2001:DB8:0:4444::/64, added path FE80::2/Serial0/0<br />
Mar 1 <span style="color:#ff0000;">01:40:37.139</span>: IPv6RT0: rip test, Route add 2001:DB8:0:4444::/64 [new]<br />
Mar 1 <span style="color:#ff0000;">01:40:37.143</span>: IPv6RT0: rip test, Add 2001:DB8:0:4444::/64 to table<br />
Mar 1 <span style="color:#ff0000;">01:40:37.143</span>: IPv6RT0: rip test, Adding next-hop FE80::2 over Serial0/0 for 2001:DB8:0:4444::/64, [120/4]<br />
Mar 1 <span style="color:#ff0000;">01:40:37.143</span>: RIPng: Triggered update requested<br />
Mar 1 <span style="color:#ff0000;">01:40:37.147</span>: IPv6RT0: Event: 2001:DB8:0:4444::/64, Add, owner rip, previous None<br />
Mar 1 <span style="color:#ff0000;">01:40:37.779</span>: RIPng: response received from FE80::4 on FastEthernet0/0 for test<br />
Mar 1 <span style="color:#ff0000;">01:40:37.779</span>: src=FE80::4 (FastEthernet0/0)<br />
Mar 1 <span style="color:#ff0000;">01:40:37.783</span>: dst=FF02::9<br />
Mar 1 <span style="color:#ff0000;">01:40:37.783</span>: sport=521, dport=521, length=92<br />
Mar 1 <span style="color:#ff0000;">01:40:37.783</span>: command=2, version=1, mbz=0, #rte=4<br />
Mar 1 <span style="color:#ff0000;">01:40:37.783</span>: tag=0, metric=1, prefix=2001:DB8:0:14::/64<br />
Mar 1 <span style="color:#ff0000;">01:40:37.783</span>: tag=0, metric=1, prefix=2001:DB8:0:34::/64<br />
Mar 1 <span style="color:#ff0000;">01:40:37.787</span>: tag=0, metric=1, prefix=2001:DB8:0:4444::/64<br />
Mar 1 <span style="color:#ff0000;">01:40:37.787</span>: tag=0, metric=2, prefix=2001:DB8:0:12::/64<br />
Mar 1 <span style="color:#ff0000;">01:40:37.787</span>: RIPng: 2001:DB8:0:4444::/64, metric changed to 2<br />
Mar 1 <span style="color:#ff0000;">01:40:37.787</span>: RIPng: 2001:DB8:0:4444::/64, added path FE80::4/FastEthernet0/0<br />
Mar 1 <span style="color:#ff0000;">01:40:37.791</span>: IPv6RT0: rip test, Route add 2001:DB8:0:4444::/64 [better metric 2, 4]<br />
Mar 1 <span style="color:#ff0000;">01:40:37.791</span>: IPv6RT0: rip test, Adding next-hop FE80::4 over FastEthernet0/0 for 2001:DB8:0:4444::/64, [120/2]<br />
Mar 1 <span style="color:#ff0000;">01:40:37.791</span>: RIPng: Triggered update requested, delaying<br />
Mar 1 <span style="color:#ff0000;">01:40:37.795</span>: IPv6RT0: Event: 2001:DB8:0:4444::/64, Mod, owner rip, previous None<br />
Mar 1 <span style="color:#ff0000;">01:40:38.143</span>: RIPng: generating triggered update for test<br />
Mar 1 <span style="color:#ff0000;">01:40:38.143</span>: RIPng: Sending multicast update on Serial0/0 for test<br />
Mar 1 <span style="color:#ff0000;">01:40:38.143</span>: src=FE80::3<br />
Mar 1 <span style="color:#ff0000;">01:40:38.143</span>: dst=FF02::9 (Serial0/0)<br />
Mar 1 <span style="color:#ff0000;">01:40:38.147</span>: sport=521, dport=521, length=32<br />
Mar 1 <span style="color:#ff0000;">01:40:38.147</span>: command=2, version=1, mbz=0, #rte=1<br />
Mar 1 <span style="color:#ff0000;">01:40:38.147</span>: tag=0, metric=2, prefix=2001:DB8:0:4444::/64<br />
Mar 1 <span style="color:#ff0000;">01:40:38.151</span>: RIPng: Suppressed null multicast update on FastEthernet0/0 for test<br />
</code></p>
<p>This partially agrees with what the last two sources had to say about how the holddown timer was supposed to work in RIPv1/v2 (however the route does not continue to be used for forwarding during the holddown and information from the original source is not accepted prior to the holddown expiring, as they say).  The Routing TCP/IP Volume 1 description of the holddown timer, which said that when a metric increases the route should be placed in holddown, still does not happen in RIPng.  R3&#8242;s current routing table looks like this:</p>
<p><img class="alignnone size-full wp-image-838" title="18-r3-show-ipv6-route" src="http://cisconinja.files.wordpress.com/2009/04/18-r3-show-ipv6-route.png?w=504&#038;h=277" alt="18-r3-show-ipv6-route" width="504" height="277" /></p>
<p>R3&#8242;s best route to 2001:db8:0:14::/64 is 2 hops through R4.  We will change the hop-count added to routes received on R3 F0/0 from 1 to 7:</p>
<p><code><span style="color:#0000ff;">R3:<br />
interface FastEthernet0/0<br />
 ipv6 rip test metric-offset 7</span><br />
</code></p>
<p>When the next periodic update arrives from R4 on F0/0, R3 immediately updates the metric for the route and continues to keep it in the routing table:</p>
<p><code><span style="color:#0000ff;">R3#debug ipv6 routing<br />
R3#debug ipv6 rip</span><br />
Mar 1 <span style="color:#ff0000;">01:55:46.315</span>: RIPng: response received from FE80::4 on FastEthernet0/0 for test<br />
Mar 1 <span style="color:#ff0000;">01:55:46.315</span>: src=FE80::4 (FastEthernet0/0)<br />
Mar 1 <span style="color:#ff0000;">01:55:46.319</span>: dst=FF02::9<br />
Mar 1 <span style="color:#ff0000;">01:55:46.319</span>: sport=521, dport=521, length=92<br />
Mar 1 <span style="color:#ff0000;">01:55:46.319</span>: command=2, version=1, mbz=0, #rte=4<br />
Mar 1 <span style="color:#ff0000;">01:55:46.319</span>: tag=0, metric=1, prefix=2001:DB8:0:34::/64<br />
Mar 1 <span style="color:#ff0000;">01:55:46.319</span>: tag=0, metric=1, prefix=2001:DB8:0:14::/64<br />
Mar 1 <span style="color:#ff0000;">01:55:46.319</span>: tag=0, metric=1, prefix=2001:DB8:0:4444::/64<br />
Mar 1 <span style="color:#ff0000;">01:55:46.323</span>: tag=0, metric=2, prefix=2001:DB8:0:12::/64<br />
Mar 1 <span style="color:#ff0000;">01:55:46.323</span>: RIPng: 2001:DB8:0:34::/64, metric changed to 8<br />
Mar 1 <span style="color:#ff0000;">01:55:46.323</span>: RIPng: 2001:DB8:0:14::/64, metric changed to 8<br />
Mar 1 <span style="color:#ff0000;">01:55:46.323</span>: IPv6RT0: rip test, Route add 2001:DB8:0:14::/64 [worse metric 8, 2]<br />
Mar 1 <span style="color:#ff0000;">01:55:46.327</span>: RIPng: 2001:DB8:0:4444::/64, metric changed to 8<br />
Mar 1 <span style="color:#ff0000;">01:55:46.327</span>: IPv6RT0: rip test, Route add 2001:DB8:0:4444::/64 [worse metric 8, 2]<br />
Mar 1 <span style="color:#ff0000;">01:55:46.327</span>: RIPng: Triggered update requested<br />
Mar 1 <span style="color:#ff0000;">01:55:46.331</span>: IPv6RT0: Event: 2001:DB8:0:14::/64, Mod, owner rip, previous None<br />
Mar 1 <span style="color:#ff0000;">01:55:46.331</span>: IPv6RT0: Event: 2001:DB8:0:4444::/64, Mod, owner rip, previous None<br />
</code></p>
<p>A periodic update arrives just after this from R2, advertising the route as metric 2 (3 after R3 adds 1 to it).  R3 replaces the route from R4 with this one immediately:</p>
<p><code><span style="color:#0000ff;">R3#debug ipv6 routing<br />
R3#debug ipv6 rip<br />
</span>Mar 1 <span style="color:#ff0000;">01:55:47.003</span>: RIPng: response received from FE80::2 on Serial0/0 for test<br />
Mar 1 <span style="color:#ff0000;">01:55:47.003</span>: src=FE80::2 (Serial0/0)<br />
Mar 1 <span style="color:#ff0000;">01:55:47.007</span>: dst=FF02::9<br />
Mar 1 <span style="color:#ff0000;">01:55:47.007</span>: sport=521, dport=521, length=72<br />
Mar 1 <span style="color:#ff0000;">01:55:47.007</span>: command=2, version=1, mbz=0, #rte=3<br />
Mar 1 <span style="color:#ff0000;">01:55:47.007</span>: tag=0, metric=1, prefix=2001:DB8:0:12::/64<br />
Mar 1 <span style="color:#ff0000;">01:55:47.007</span>: tag=0, metric=1, prefix=2001:DB8:0:23::/64<br />
Mar 1 <span style="color:#ff0000;">01:55:47.007</span>: tag=0, metric=2, prefix=2001:DB8:0:14::/64<br />
Mar 1 <span style="color:#ff0000;">01:55:47.011</span>: RIPng: 2001:DB8:0:14::/64, metric changed to 3<br />
Mar 1 <span style="color:#ff0000;">01:55:47.011</span>: RIPng: 2001:DB8:0:14::/64, added path FE80::2/Serial0/0<br />
Mar 1 <span style="color:#ff0000;">01:55:47.011</span>: IPv6RT0: rip test, Route add 2001:DB8:0:14::/64 [better metric 3, 8]<br />
Mar 1 <span style="color:#ff0000;">01:55:47.015</span>: IPv6RT0: rip test, Adding next-hop FE80::2 over Serial0/0 for 2001:DB8:0:14::/64, [120/3]<br />
Mar 1 <span style="color:#ff0000;">01:55:47.015</span>: RIPng: Triggered update requested, delaying<br />
Mar 1 <span style="color:#ff0000;">01:55:47.019</span>: IPv6RT0: Event: 2001:DB8:0:14::/64, Mod, owner rip, previous None<br />
</code></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cisconinja.wordpress.com/791/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cisconinja.wordpress.com/791/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cisconinja.wordpress.com/791/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cisconinja.wordpress.com/791/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/cisconinja.wordpress.com/791/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/cisconinja.wordpress.com/791/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/cisconinja.wordpress.com/791/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/cisconinja.wordpress.com/791/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cisconinja.wordpress.com/791/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cisconinja.wordpress.com/791/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cisconinja.wordpress.com/791/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cisconinja.wordpress.com/791/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cisconinja.wordpress.com/791/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cisconinja.wordpress.com/791/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cisconinja.wordpress.com&amp;blog=5591147&amp;post=791&amp;subd=cisconinja&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://cisconinja.wordpress.com/2009/04/27/rip-timers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">cisconinja</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/04/rip-timers3.png" medium="image">
			<media:title type="html">rip-timers3</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/04/1-rip-flash-interval1.png" medium="image">
			<media:title type="html">1-rip-flash-interval1</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/04/2-r3-show-ip-protocols1.png" medium="image">
			<media:title type="html">2-r3-show-ip-protocols1</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/04/2-r3-show-ip-route1.png" medium="image">
			<media:title type="html">2-r3-show-ip-route1</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/04/3-r3-show-ip-route1.png" medium="image">
			<media:title type="html">3-r3-show-ip-route1</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/04/4-r3-show-ip-route1.png" medium="image">
			<media:title type="html">4-r3-show-ip-route1</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/04/4-r3-rip-database1.png" medium="image">
			<media:title type="html">4-r3-rip-database1</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/04/5-r3-show-ip-protocols1.png" medium="image">
			<media:title type="html">5-r3-show-ip-protocols1</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/04/5-r3-show-ip-route1.png" medium="image">
			<media:title type="html">5-r3-show-ip-route1</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/04/5-r3-rip-database1.png" medium="image">
			<media:title type="html">5-r3-rip-database1</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/04/6-r3-ripng-database1.png" medium="image">
			<media:title type="html">6-r3-ripng-database1</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/04/6-r3-ripng1.png" medium="image">
			<media:title type="html">6-r3-ripng1</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/04/7-r3-show-ipv6-route1.png" medium="image">
			<media:title type="html">7-r3-show-ipv6-route1</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/04/7-r3-ripng-database1.png" medium="image">
			<media:title type="html">7-r3-ripng-database1</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/04/8-r3-show-ipv6-route1.png" medium="image">
			<media:title type="html">8-r3-show-ipv6-route1</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/04/9-r3-show-ip-protocols.png" medium="image">
			<media:title type="html">9-r3-show-ip-protocols</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/04/10-r3-ripng.png" medium="image">
			<media:title type="html">10-r3-ripng</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/04/10-r3-ripng-database.png" medium="image">
			<media:title type="html">10-r3-ripng-database</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/04/11-r3-ripng-database.png" medium="image">
			<media:title type="html">11-r3-ripng-database</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/04/12-r3-show-ip-protocols.png" medium="image">
			<media:title type="html">12-r3-show-ip-protocols</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/04/rip-timers22.png" medium="image">
			<media:title type="html">rip-timers22</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/04/12-r3-show-ip-route.png" medium="image">
			<media:title type="html">12-r3-show-ip-route</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/04/13-r2-show-ip-route.png" medium="image">
			<media:title type="html">13-r2-show-ip-route</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/04/14-r4-show-ip-route.png" medium="image">
			<media:title type="html">14-r4-show-ip-route</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/04/15-r2-show-ip-route.png" medium="image">
			<media:title type="html">15-r2-show-ip-route</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/04/15-r2-rip-database.png" medium="image">
			<media:title type="html">15-r2-rip-database</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/04/16-r2-rip-database.png" medium="image">
			<media:title type="html">16-r2-rip-database</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/04/17-r3-ripng.png" medium="image">
			<media:title type="html">17-r3-ripng</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/04/17-r3-ripng-database.png" medium="image">
			<media:title type="html">17-r3-ripng-database</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/04/18-r3-show-ipv6-route.png" medium="image">
			<media:title type="html">18-r3-show-ipv6-route</media:title>
		</media:content>
	</item>
		<item>
		<title>VLSM Usage and Mismatched Subnet Masks in RIPv1</title>
		<link>http://cisconinja.wordpress.com/2009/04/12/vlsm-usage-and-mismatched-subnet-masks-in-ripv1/</link>
		<comments>http://cisconinja.wordpress.com/2009/04/12/vlsm-usage-and-mismatched-subnet-masks-in-ripv1/#comments</comments>
		<pubDate>Sun, 12 Apr 2009 22:22:11 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
				<category><![CDATA[RIP]]></category>

		<guid isPermaLink="false">http://cisconinja.wordpress.com/?p=749</guid>
		<description><![CDATA[In this post we will look at what happens when a router using VLSM attempts to advertise the variably subnetted address space with RIPv1.  We will also look at what happens when opposite ends of a link are configured with different subnet masks in RIPv1.  The topology and configurations are shown below: R1: interface Loopback1 [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cisconinja.wordpress.com&amp;blog=5591147&amp;post=749&amp;subd=cisconinja&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>In this post we will look at what happens when a router using VLSM attempts to advertise the variably subnetted address space with RIPv1.  We will also look at what happens when opposite ends of a link are configured with different subnet masks in RIPv1.  The topology and configurations are shown below:</p>
<p><img class="alignnone size-full wp-image-750" title="ripv1-vlsm" src="http://cisconinja.files.wordpress.com/2009/04/ripv1-vlsm.png?w=485&#038;h=230" alt="ripv1-vlsm" width="485" height="230" /></p>
<p><code><span style="color:#0000ff;">R1:<br />
interface Loopback1<br />
 ip address 10.1.1.1 255.255.255.0<br />
!<br />
interface Loopback2<br />
 ip address 10.1.2.1 255.255.255.0<br />
!<br />
interface Loopback3<br />
 ip address 10.1.3.1 255.255.255.0<br />
!<br />
interface Loopback4<br />
 ip address 10.1.4.1 255.255.255.0<br />
!<br />
interface Loopback5<br />
 ip address 10.1.5.1 255.255.255.192<br />
!<br />
interface Loopback6<br />
 ip address 10.1.6.65 255.255.255.192<br />
!<br />
interface Loopback7<br />
 ip address 10.1.7.129 255.255.255.192<br />
!<br />
interface Loopback8<br />
 ip address 10.1.8.193 255.255.255.192<br />
!<br />
interface Serial0/0<br />
 ip address 10.0.12.1 255.255.255.0</span><br />
</code></p>
<p><code><span style="color:#0000ff;">R2:<br />
interface Loopback1<br />
 ip address 10.2.1.2 255.255.255.0<br />
!<br />
interface Loopback2<br />
 ip address 10.2.2.2 255.255.255.0<br />
!<br />
interface Loopback3<br />
 ip address 10.2.3.2 255.255.255.0<br />
!<br />
interface Loopback4<br />
 ip address 10.2.4.2 255.255.255.0<br />
!<br />
interface Loopback5<br />
 ip address 10.2.5.2 255.255.255.192<br />
!<br />
interface Loopback6<br />
 ip address 10.2.6.65 255.255.255.192<br />
!<br />
interface Loopback7<br />
 ip address 10.2.7.129 255.255.255.192<br />
!<br />
interface Loopback8<br />
 ip address 10.2.8.193 255.255.255.192<br />
!<br />
interface Serial0/0<br />
 ip address 10.0.12.2 255.255.255.0<br />
</span></code></p>
<p>We will enable RIPv1 for the 10.0.0.0 network on each router.  We will also configure all loopback interfaces as passive interfaces so that there isn&#8217;t so much debug output:</p>
<p><code><span style="color:#0000ff;">R1:<br />
router rip<br />
 passive-interface default<br />
 no passive-interface Serial0/0<br />
 network 10.0.0.0</span><br />
</code></p>
<p><code><span style="color:#0000ff;">R2:<br />
router rip<br />
 passive-interface default<br />
 no passive-interface Serial0/0<br />
 network 10.0.0.0</span><br />
</code></p>
<p>R1 and R2 send only routes that have the same mask as the outgoing interface.  All /24 networks are sent and added to each other&#8217;s routing tables, and neither has knowledge of the other /26 networks:</p>
<p><code><span style="color:#0000ff;">R1#debug ip rip</span><br />
*Mar 1 <span style="color:#ff0000;">00:26:03.619</span>: RIP: sending v1 update to 10.0.12.2 via Serial0/0 (10.0.12.1)<br />
*Mar 1 <span style="color:#ff0000;">00:26:03.623</span>: RIP: build update entries<br />
*Mar 1 <span style="color:#ff0000;">00:26:03.623</span>: subnet 10.1.1.0 metric 1<br />
*Mar 1 <span style="color:#ff0000;">00:26:03.623</span>: subnet 10.1.2.0 metric 1<br />
*Mar 1 <span style="color:#ff0000;">00:26:03.623</span>: subnet 10.1.3.0 metric 1<br />
*Mar 1 <span style="color:#ff0000;">00:26:03.627</span>: subnet 10.1.4.0 metric 1<br />
*Mar 1 <span style="color:#ff0000;">00:26:05.643</span>: RIP: received v1 update from 10.0.12.2 on Serial0/0<br />
*Mar 1 <span style="color:#ff0000;">00:26:05.643</span>: 10.2.1.0 in 1 hops<br />
*Mar 1 <span style="color:#ff0000;">00:26:05.647</span>: 10.2.2.0 in 1 hops<br />
*Mar 1 <span style="color:#ff0000;">00:26:05.651</span>: 10.2.3.0 in 1 hops<br />
*Mar 1 <span style="color:#ff0000;">00:26:05.651</span>: 10.2.4.0 in 1 hops<br />
</code></p>
<p><img class="alignnone size-full wp-image-751" title="1-r1-route-table" src="http://cisconinja.files.wordpress.com/2009/04/1-r1-route-table.png?w=501&#038;h=220" alt="1-r1-route-table" width="501" height="220" /></p>
<p><img class="alignnone size-full wp-image-752" title="1-r2-route-table" src="http://cisconinja.files.wordpress.com/2009/04/1-r2-route-table.png?w=500&#038;h=224" alt="1-r2-route-table" width="500" height="224" /></p>
<p> </p>
<p>Next, we will change R2 to use a /26 mask on S0/0:</p>
<p><code><span style="color:#0000ff;">R2:<br />
interface Serial0/0<br />
 ip address 10.0.12.2 255.255.255.192</span><br />
</code></p>
<p>R2 stops sending the /24 routes in updates and begins sending the /26 routes:</p>
<p><code><span style="color:#0000ff;">R2#debug ip rip</span><br />
*Mar 1 <span style="color:#ff0000;">00:36:36.751</span>: RIP: received v1 update from 10.0.12.1 on Serial0/0<br />
*Mar 1 <span style="color:#ff0000;">00:36:36.751</span>: 10.1.1.0 in 1 hops<br />
*Mar 1 <span style="color:#ff0000;">00:36:36.751</span>: 10.1.2.0 in 1 hops<br />
*Mar 1 <span style="color:#ff0000;">00:36:36.751</span>: 10.1.3.0 in 1 hops<br />
*Mar 1 <span style="color:#ff0000;">00:36:36.751</span>: 10.1.4.0 in 1 hops<br />
*Mar 1 <span style="color:#ff0000;">00:36:58.327</span>: RIP: sending v1 update to 255.255.255.255 via Serial0/0 (10.0.12.2)<br />
*Mar 1 <span style="color:#ff0000;">00:36:58.327</span>: RIP: build update entries<br />
*Mar 1 <span style="color:#ff0000;">00:36:58.331</span>: subnet 10.2.5.0 metric 1<br />
*Mar 1 <span style="color:#ff0000;">00:36:58.331</span>: subnet 10.2.6.64 metric 1<br />
*Mar 1 <span style="color:#ff0000;">00:36:58.331</span>: subnet 10.2.7.128 metric 1<br />
*Mar 1 <span style="color:#ff0000;">00:36:58.331</span>: subnet 10.2.8.192 metric 1<br />
</code></p>
<p>Because mask information is not carried in routing updates in RIPv1, the mask of the receiving interface is also used for determining the mask of received routes.  R2 interprets R1&#8242;s routes as all having /26 masks.  As a result, only the first 1/4 of the address space of each route is reachable from R2.  Once the flush timer expires for the old routes after changing the mask, R2&#8242;s route table now looks like this:</p>
<p><img class="alignnone size-full wp-image-753" title="2-r2-route-table" src="http://cisconinja.files.wordpress.com/2009/04/2-r2-route-table.png?w=502&#038;h=221" alt="2-r2-route-table" width="502" height="221" /></p>
<p>R1 interprets all the routes received from R2 as having /24 masks.  Of the 4 routes received from R2, only 10.2.5.0 is a valid subnet address using a /24 mask.  Since the other 3 are invalid /24 subnets, they are instead interpreted as host routes and added with a /32 mask:</p>
<p><img class="alignnone size-full wp-image-754" title="2-r1-route-table" src="http://cisconinja.files.wordpress.com/2009/04/2-r1-route-table.png?w=516&#038;h=221" alt="2-r1-route-table" width="516" height="221" /></p>
<p>The result is that R1 will attempt to route traffic in the range 10.2.5.64 &#8211; 10.2.5.255 to R2 when it should not, and will not route any traffic to the other 3 /26 networks when it should.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cisconinja.wordpress.com/749/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cisconinja.wordpress.com/749/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cisconinja.wordpress.com/749/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cisconinja.wordpress.com/749/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/cisconinja.wordpress.com/749/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/cisconinja.wordpress.com/749/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/cisconinja.wordpress.com/749/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/cisconinja.wordpress.com/749/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cisconinja.wordpress.com/749/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cisconinja.wordpress.com/749/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cisconinja.wordpress.com/749/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cisconinja.wordpress.com/749/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cisconinja.wordpress.com/749/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cisconinja.wordpress.com/749/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cisconinja.wordpress.com&amp;blog=5591147&amp;post=749&amp;subd=cisconinja&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://cisconinja.wordpress.com/2009/04/12/vlsm-usage-and-mismatched-subnet-masks-in-ripv1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">cisconinja</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/04/ripv1-vlsm.png" medium="image">
			<media:title type="html">ripv1-vlsm</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/04/1-r1-route-table.png" medium="image">
			<media:title type="html">1-r1-route-table</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/04/1-r2-route-table.png" medium="image">
			<media:title type="html">1-r2-route-table</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/04/2-r2-route-table.png" medium="image">
			<media:title type="html">2-r2-route-table</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/04/2-r1-route-table.png" medium="image">
			<media:title type="html">2-r1-route-table</media:title>
		</media:content>
	</item>
		<item>
		<title>Some Strange Static Routing Issues</title>
		<link>http://cisconinja.wordpress.com/2009/04/08/some-strange-static-routing-issues/</link>
		<comments>http://cisconinja.wordpress.com/2009/04/08/some-strange-static-routing-issues/#comments</comments>
		<pubDate>Thu, 09 Apr 2009 00:51:01 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
				<category><![CDATA[Static Routing]]></category>

		<guid isPermaLink="false">http://cisconinja.wordpress.com/?p=731</guid>
		<description><![CDATA[In this post we will look at two static routing issues that I have yet to find an explanation for.  R1 and R2 are connected by 3 serial interfaces, one using a subnet of a class A network, one a class B, and one a class C: R1: interface Serial0/0  ip address 10.0.12.1 255.255.255.252 interface [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cisconinja.wordpress.com&amp;blog=5591147&amp;post=731&amp;subd=cisconinja&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>In this post we will look at two static routing issues that I have yet to find an explanation for.  R1 and R2 are connected by 3 serial interfaces, one using a subnet of a class A network, one a class B, and one a class C:</p>
<p><img class="alignnone size-full wp-image-732" title="static-routing-topology2" src="http://cisconinja.files.wordpress.com/2009/04/static-routing-topology2.png?w=424&#038;h=210" alt="static-routing-topology2" width="424" height="210" /></p>
<p><code><span style="color:#0000ff;">R1:<br />
interface Serial0/0<br />
 ip address 10.0.12.1 255.255.255.252<br />
interface Serial0/1<br />
 ip address 172.16.12.1 255.255.255.252<br />
interface Serial0/2<br />
 ip address 192.168.12.1 255.255.255.252</span><br />
</code></p>
<p><code><span style="color:#0000ff;">R2:<br />
interface Serial0/0<br />
 ip address 10.0.12.2 255.255.255.252<br />
interface Serial0/1<br />
 ip address 172.16.12.2 255.255.255.252<br />
interface Serial0/2<br />
 ip address 192.168.12.2 255.255.255.252</span><br />
</code></p>
<p>The first issue occurs when all of the following are true:</p>
<p> </p>
<ul>
<li>
<div style="padding-left:30px;">The static route is configured with a next-hop address</div>
</li>
</ul>
<p style="padding-left:30px;"> </p>
<ul>
<li>
<div style="padding-left:30px;">At least 1 subnet of the major network specified by the next-hop address in the static route statement is present in the routing table, but no subnets that match the specific IP address</div>
</li>
</ul>
<p style="padding-left:30px;"> </p>
<ul>
<li>
<div style="padding-left:30px;">The best match for the IP address specified in the static route is the default route</div>
</li>
</ul>
<p style="padding-left:30px;"> </p>
<ul>
<li>
<div style="padding-left:30px;">The default route is configured with an exit interface</div>
</li>
</ul>
<p> </p>
<p>Static routes matching all of these conditions are not entered in the routing table even though there is a match for the next-hop address using the default route.  If no subnets of the major network exist in the routing table, or if the best match is anything but the default route and is configured with an exit interface, the static route will be installed.  Let&#8217;s look at a few examples.  First we will add the default route using an exit interface:</p>
<p><code><span style="color:#0000ff;">R1:<br />
ip route 0.0.0.0 0.0.0.0 Serial0/0</span><br />
</code></p>
<p><img class="alignnone size-full wp-image-733" title="1-show-ip-route" src="http://cisconinja.files.wordpress.com/2009/04/1-show-ip-route.png?w=534&#038;h=199" alt="1-show-ip-route" width="534" height="199" /></p>
<p>Next we will add a couple static routes with random next-hop addresses:</p>
<p><code><span style="color:#0000ff;">R1:<br />
ip route 1.0.0.0 255.0.0.0 21.1.1.1<br />
ip route 2.0.0.0 255.0.0.0 22.1.1.1</span><br />
</code></p>
<p>The next-hop for both routes resolves to the default route.  No subnets of 21.0.0.0/8 or 22.0.0.0/8 exist in the routing table.  Both routes are installed:</p>
<p><code><span style="color:#0000ff;">R1#debug ip routing</span><br />
Mar 1 <span style="color:#ff0000;">00:25:16.899</span>: RT: SET_LAST_RDB for 1.0.0.0/8<br />
NEW rdb: via 21.1.1.1<br />
Mar 1 <span style="color:#ff0000;">00:25:16.899</span>: RT: add 1.0.0.0/8 via 21.1.1.1, static metric [1/0]<br />
Mar 1 <span style="color:#ff0000;">00:25:16.903</span>: RT: NET-RED 1.0.0.0/8<br />
Mar 1 <span style="color:#ff0000;">00:25:19.275</span>: RT: SET_LAST_RDB for 2.0.0.0/8<br />
NEW rdb: via 22.1.1.1<br />
Mar 1 <span style="color:#ff0000;">00:25:19.275</span>: RT: add 2.0.0.0/8 via 22.1.1.1, static metric [1/0]<br />
Mar 1 <span style="color:#ff0000;">00:25:19.275</span>: RT: NET-RED 2.0.0.0/8<br />
</code></p>
<p>Next we will try to add static routes with next-hop addresses in the same major networks as the directly connected subnets used on the serial links:</p>
<p><code><span style="color:#0000ff;">R1:<br />
ip route 3.0.0.0 255.0.0.0 10.255.255.50<br />
ip route 4.0.0.0 255.0.0.0 172.16.255.50<br />
ip route 5.0.0.0 255.0.0.0 192.168.12.50</span><br />
</code></p>
<p>One subnet of each classful network exists, but none of them match the next-hop address.  The best match on all 3 next-hop addresses should be the default route.  However, none of these 3 routes are installed in the routing table:</p>
<p><img class="alignnone size-full wp-image-734" title="2-show-ip-route" src="http://cisconinja.files.wordpress.com/2009/04/2-show-ip-route.png?w=534&#038;h=224" alt="2-show-ip-route" width="534" height="224" /></p>
<p>If we add a static route to 21.21.21.0/24 with a next-hop of another random address, the route is added just like the first 2 routes because no subnets of the major network exist.  However, this also causes the 1.0.0.0 network to be removed after several seconds when the router realizes it now has a subnet of 21.0.0.0/8, but no specific subnet of the classful network to reach 21.1.1.1 &#8211; the next-hop for 1.0.0.0:</p>
<p><code><span style="color:#0000ff;">R1:<br />
ip route 21.21.21.0 255.255.255.0 23.1.1.1</span><br />
</code></p>
<p><code><span style="color:#0000ff;">R1#debug ip routing</span><br />
Mar 1 <span style="color:#ff0000;">00:38:03.331</span>: RT: SET_LAST_RDB for 21.21.21.0/24<br />
NEW rdb: via 23.1.1.1<br />
Mar 1 <span style="color:#ff0000;">00:38:03.331</span>: RT: add 21.21.21.0/24 via 23.1.1.1, static metric [1/0]<br />
Mar 1 <span style="color:#ff0000;">00:38:03.335</span>: RT: NET-RED 21.21.21.0/24<br />
Mar 1 <span style="color:#ff0000;">00:38:55.619</span>: RT: del 1.0.0.0 via 21.1.1.1, static metric [1/0]<br />
Mar 1 <span style="color:#ff0000;">00:38:55.619</span>: RT: delete network route to 1.0.0.0<br />
Mar 1 <span style="color:#ff0000;">00:38:55.619</span>: RT: NET-RED 1.0.0.0/8<br />
Mar 1 <span style="color:#ff0000;">00:38:55.623</span>: RT: NET-RED 0.0.0.0/0<br />
</code></p>
<p><img class="alignnone size-full wp-image-735" title="3-show-ip-route" src="http://cisconinja.files.wordpress.com/2009/04/3-show-ip-route.png?w=533&#038;h=232" alt="3-show-ip-route" width="533" height="232" /></p>
<p>This classful behavior only occurs when the best match is the default route.  If we add two /1 networks to cover the entire range covered by the default route and configure them with exit interfaces just like the default route, all of the static routes we configured match one of the two /1 static routes and are added to the routing table:</p>
<p><code><span style="color:#0000ff;">R1:<br />
ip route 0.0.0.0 128.0.0.0 Serial0/0<br />
ip route 128.0.0.0 128.0.0.0 Serial0/0</span><br />
</code></p>
<p><img class="alignnone size-full wp-image-736" title="4-show-ip-route" src="http://cisconinja.files.wordpress.com/2009/04/4-show-ip-route.png?w=535&#038;h=300" alt="4-show-ip-route" width="535" height="300" /></p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p>The second issue occurs when all of the following things are true:</p>
<p> </p>
<ul>
<li>
<div style="padding-left:30px;">The static route is configured with a next-hop address</div>
</li>
</ul>
<p style="padding-left:30px;"> </p>
<ul>
<li>
<div style="padding-left:30px;">The best match for the IP address specified in the static route is another static route configured with a next-hop address or a route learned from a routing protocol</div>
</li>
</ul>
<p style="padding-left:30px;"> </p>
<ul>
<li>
<div style="padding-left:30px;">The best match route uses a less specific mask than the route being configured</div>
</li>
</ul>
<p style="padding-left:30px;"> </p>
<ul>
<li>
<div style="padding-left:30px;">The range of the best match route includes the range of the route being configured</div>
</li>
</ul>
<p> </p>
<p>Static routes meeting all of these conditions are not installed in the routing table, even though the next-hop address may resolve to a valid route.  Let&#8217;s look at a couple examples of this.  First we will remove all of the static route statements from the previous example:</p>
<p><code><span style="color:#0000ff;">R1:<br />
no ip route 0.0.0.0 0.0.0.0 Serial0/0<br />
no ip route 0.0.0.0 128.0.0.0 Serial0/0<br />
no ip route 1.0.0.0 255.0.0.0 21.1.1.1<br />
no ip route 2.0.0.0 255.0.0.0 22.1.1.1<br />
no ip route 3.0.0.0 255.0.0.0 10.255.255.50<br />
no ip route 4.0.0.0 255.0.0.0 172.16.255.50<br />
no ip route 5.0.0.0 255.0.0.0 192.168.12.50<br />
no ip route 21.21.21.0 255.255.255.0 23.1.1.1<br />
no ip route 128.0.0.0 128.0.0.0 Serial0/0<br />
</span></code></p>
<p>We will enable RIP between R1 and R2 on S0/0 and create a loopback interface on R2 to be advertised with RIP. We will also create a static route with a next-hop of R2&#8242;s S0/0 interface IP address:</p>
<p><code><span style="color:#0000ff;">R1:<br />
router rip<br />
 network 10.0.0.0<br />
!<br />
ip route 4.0.0.0 255.0.0.0 10.0.12.2<br />
</span></code></p>
<p><code><span style="color:#0000ff;">R2:<br />
interface Loopback0<br />
 ip address 2.2.2.2 255.0.0.0<br />
!<br />
router rip<br />
 network 2.0.0.0<br />
 network 10.0.0.0<br />
</span></code></p>
<p>R1 adds both routes with a next-hop of 10.0.12.2:</p>
<p><img class="alignnone size-full wp-image-737" title="5-show-ip-route" src="http://cisconinja.files.wordpress.com/2009/04/5-show-ip-route.png?w=533&#038;h=210" alt="5-show-ip-route" width="533" height="210" /></p>
<p>Next we will create some static routes with next-hop addresses that match these 2 routes:</p>
<p><code><span style="color:#0000ff;">R1:<br />
ip route 2.0.0.0 254.0.0.0 2.255.255.1<br />
ip route 2.0.0.0 255.128.0.0 2.255.255.1<br />
ip route 4.0.0.0 254.0.0.0 4.255.255.1<br />
ip route 4.0.0.0 255.128.0.0 4.255.255.1<br />
ip route 4.0.0.0 255.128.0.0 4.1.1.1</span><br />
</code></p>
<p>Only the 1st and 3rd routes are installed in the routing table.  These two routes both use a less specific mask than the best match for their next-hop addresses:</p>
<p><img class="alignnone size-full wp-image-738" title="6-show-ip-route" src="http://cisconinja.files.wordpress.com/2009/04/6-show-ip-route.png?w=533&#038;h=232" alt="6-show-ip-route" width="533" height="232" /></p>
<p>The three /9 routes, which use a more specific mask than the best match for their next-hop, are not installed.  There is the risk that a route could be self-recursive if, after being installed, the best route to it&#8217;s next hop is itself.  We can see that this is true for the 4.0.0.0/9 route with a next-hop of 4.1.1.1.  If installed, the best route to it&#8217;s next-hop address would be itself.  However the other two /9 routes do not have this problem since their next-hop addresses are both outside of their own range.  If installed, their next-hop would resolve to the two /8 routes, both of which are valid. </p>
<p>This issue only occurs when the matching route uses a next-hop address.  If we change 4.0.0.0/8 to use an exit interface rather than a next-hop address, R1 installs the route to 4.0.0.0/9 via 4.255.255.1 several seconds later after it&#8217;s next scan of the routing table.  The other, self-recursive route to 4.0.0.0/9 via 4.1.1.1 remains uninstalled, as it should:</p>
<p><code><span style="color:#0000ff;">R1:<br />
no ip route 4.0.0.0 255.0.0.0 10.0.12.2<br />
ip route 4.0.0.0 255.0.0.0 Serial0/0</span><br />
</code></p>
<p><code><span style="color:#0000ff;">R1#debug ip routing</span><br />
Mar 1 <span style="color:#ff0000;">01:24:57.171</span>: RT: SET_LAST_RDB for 4.0.0.0/8<br />
NEW rdb: is directly connected<br />
Mar 1 <span style="color:#ff0000;">01:24:57.171</span>: RT: add 4.0.0.0/8 via 0.0.0.0, static metric [1/0]<br />
Mar 1 <span style="color:#ff0000;">01:24:57.171</span>: RT: NET-RED 4.0.0.0/8<br />
Mar 1 <span style="color:#ff0000;">01:25:34.571</span>: RT: network 4.0.0.0 is now variably masked<br />
Mar 1 <span style="color:#ff0000;">01:25:34.571</span>: RT: SET_LAST_RDB for 4.0.0.0/9<br />
NEW rdb: via 4.255.255.1<br />
Mar 1 <span style="color:#ff0000;">01:25:34.575</span>: RT: add 4.0.0.0/9 via 4.255.255.1, static metric [1/0]<br />
Mar 1 <span style="color:#ff0000;">01:25:34.575</span>: RT: NET-RED 4.0.0.0/9<br />
</code></p>
<p><img class="alignnone size-full wp-image-739" title="7-show-ip-route" src="http://cisconinja.files.wordpress.com/2009/04/7-show-ip-route.png?w=533&#038;h=255" alt="7-show-ip-route" width="533" height="255" /></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cisconinja.wordpress.com/731/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cisconinja.wordpress.com/731/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cisconinja.wordpress.com/731/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cisconinja.wordpress.com/731/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/cisconinja.wordpress.com/731/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/cisconinja.wordpress.com/731/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/cisconinja.wordpress.com/731/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/cisconinja.wordpress.com/731/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cisconinja.wordpress.com/731/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cisconinja.wordpress.com/731/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cisconinja.wordpress.com/731/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cisconinja.wordpress.com/731/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cisconinja.wordpress.com/731/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cisconinja.wordpress.com/731/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cisconinja.wordpress.com&amp;blog=5591147&amp;post=731&amp;subd=cisconinja&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://cisconinja.wordpress.com/2009/04/08/some-strange-static-routing-issues/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">cisconinja</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/04/static-routing-topology2.png" medium="image">
			<media:title type="html">static-routing-topology2</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/04/1-show-ip-route.png" medium="image">
			<media:title type="html">1-show-ip-route</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/04/2-show-ip-route.png" medium="image">
			<media:title type="html">2-show-ip-route</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/04/3-show-ip-route.png" medium="image">
			<media:title type="html">3-show-ip-route</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/04/4-show-ip-route.png" medium="image">
			<media:title type="html">4-show-ip-route</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/04/5-show-ip-route.png" medium="image">
			<media:title type="html">5-show-ip-route</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/04/6-show-ip-route.png" medium="image">
			<media:title type="html">6-show-ip-route</media:title>
		</media:content>

		<media:content url="http://cisconinja.files.wordpress.com/2009/04/7-show-ip-route.png" medium="image">
			<media:title type="html">7-show-ip-route</media:title>
		</media:content>
	</item>
	</channel>
</rss>
