RIPng Holddown Timer

RIPng Holddown Timer

Definition of Holddown timer: The Holddown timer is the time during which a router does not accept any updates from its neighbors about a route which has either changed its state or metric. Although, the router continues to advertise this route to its neighbors.

In Cisco IOS, the Holddown timer is set to 0 by default.

Consider the following-

Routers R1 and R2 are connected to each other via fastethernet interfaces. RIPng is enabled between them.

Case 1: Holddown timer is set to default value 0

Timers are not changed on R1 or R2.

R1# show ipv6 rip

RIP process "TEST", port 521, multicast-group FF02::9, pid 153

Administrative distance is 120. Maximum paths is 16

Updates every 30 seconds, expire after 180

Holddown lasts 0 seconds, garbage collect after 120

Split horizon is on; poison reverse is off

Default routes are not generated

Periodic updates 2, trigger updates 4

Interfaces:

FastEthernet0/0

Redistribution:

None

After Neighbor Discovery, both routers share their routing tables using RIPng.

R1# show ipv6 route

IPv6 Routing Table - 6 entries

Codes: C - Connected, L - Local, S - Static, R - RIP, B - BGP

U - Per-user Static route

I1 - ISIS L1, I2 - ISIS L2, IA - ISIS interarea, IS - ISIS summary

O - OSPF intra, OI - OSPF inter, OE1 - OSPF ext 1, OE2 - OSPF ext 2

ON1 - OSPF NSSA ext 1, ON2 - OSPF NSSA ext 2

C 2001:ABAB::/64 [0/0]

via ::, FastEthernet0/0

L 2001:ABAB::D203:10FF:FE38:0/128 [0/0]

via ::, FastEthernet0/0

R 2002:ABAB::/64 [120/2]

via FE80::D202:10FF:FE38:0, FastEthernet0/0

R 2003:ABAB::/64 [120/2]

via FE80::D202:10FF:FE38:0, FastEthernet0/0

L FE80::/10 [0/0]

via ::, Null0

L FF00::/8 [0/0]

via ::, Null0

When the Loopback 0 interface of R2 router is shut down administratively, it sends out a triggered update to all its neighbors i.e. R1 that Loopback 0 interface is down. It sends the update with prefix of Loopback 0 interface and metric set to 16.

R1 router receives the update and immediately deletes the prefix from its routing table. Since the holddown timer is not set, it accepts any updates about the prefix while the garbage collect timer has not expired. Once the garbage collect timer expires, the prefix is removed from the RIP database.

R1#

*Mar 1 00:07:01.347: RIPng: response received from FE80::D202:10FF:FE38:0 on FastEthernet0/0 for TEST

*Mar 1 00:07:01.347: src=FE80::D202:10FF:FE38:0 (FastEthernet0/0)

*Mar 1 00:07:01.347: dst=FF02::9

*Mar 1 00:07:01.351: sport=521, dport=521, length=32

*Mar 1 00:07:01.351: command=2, version=1, mbz=0, #rte=1

*Mar 1 00:07:01.351: tag=0, metric=16, prefix=2003:ABAB::/64

*Mar 1 00:07:01.351: RIPng: 2003:ABAB::/64, path FE80::D202:10FF:FE38:0/FastEthernet0/0 unreachable

*Mar 1 00:07:01.351: IPv6RT0: rip TEST, Delete 2003:ABAB::/64 from table

*Mar 1 00:07:01.355: RIPng: 2003:ABAB::/64, expired, ttg is 120

R1#

*Mar 1 00:07:01.355: RIPng: Triggered update requested

*Mar 1 00:07:01.359: IPv6RT0: Event: 2003:ABAB::/64, Del, owner rip, previous None

Note the router does not initiate the Holddown timer since it is set to 0.

The show ipv6 rip TEST database command shows the timers for each RIPng entry. It indicates that 2003:ABAB::/64 prefix is set with holddown timer 0 and will be advertised for another 114 seconds.

R1# show ipv6 rip TEST database

RIP process "TEST", local RIB

2002:ABAB::/64, metric 2, installed

FastEthernet0/0/FE80::D202:10FF:FE38:0, expires in 160 secs

2003:ABAB::/64, metric 16, expired, [advertise 114/hold 0]

FastEthernet0/0/FE80::D202:10FF:FE38:0

Meanwhile, before the garbage-collection timer expires, R2's Loopback 0 interface is enabled. R2 sends another triggered update with prefix 2003:ABAB::/64 and metric 1.

R1#

*Mar 1 00:07:17.211: RIPng: response received from FE80::D202:10FF:FE38:0 on FastEthernet0/0 for TEST

*Mar 1 00:07:17.211: src=FE80::D202:10FF:FE38:0 (FastEthernet0/0)

*Mar 1 00:07:17.211: dst=FF02::9

*Mar 1 00:07:17.215: sport=521, dport=521, length=32

*Mar 1 00:07:17.215: command=2, version=1, mbz=0, #rte=1

*Mar 1 00:07:17.215: tag=0, metric=1, prefix=2003:ABAB::/64

R1 receives this update and since the holddown timer has already expired but the garbage-collection timer is still ON, it will accept the update and install the prefix in its routing table.

R1#

*Mar 1 00:07:17.215: RIPng: 2003:ABAB::/64, metric changed to 2

*Mar 1 00:07:17.215: RIPng: 2003:ABAB::/64, added path FE80::D202:10FF:FE38:0/FastEthernet0/0

*Mar 1 00:07:17.219: IPv6RT0: rip TEST, Route add 2003:ABAB::/64 [new]

*Mar 1 00:07:17.219: IPv6RT0: rip TEST, Add 2003:ABAB::/64 to table

*Mar 1 00:07:17.219: IPv6RT0: rip TEST, Adding next-hop FE80::D202:10FF:FE38:0 over FastEthernet0/0 for 2003:ABAB::/64, [120/2]

*Mar 1 00:07:17.223: RIPng: Triggered update requested

*Mar 1 00:07:17.223: IPv6RT0: Event: 2003:ABAB::/64, Add, owner rip, previous None

The routing table of R1 indicates the prefix has been installed with metric 2.

R1# show ipv6 route

IPv6 Routing Table - 6 entries

Codes: C - Connected, L - Local, S - Static, R - RIP, B - BGP

U - Per-user Static route

I1 - ISIS L1, I2 - ISIS L2, IA - ISIS interarea, IS - ISIS summary

O - OSPF intra, OI - OSPF inter, OE1 - OSPF ext 1, OE2 - OSPF ext 2

ON1 - OSPF NSSA ext 1, ON2 - OSPF NSSA ext 2

C 2001:ABAB::/64 [0/0]

via ::, FastEthernet0/0

L 2001:ABAB::D203:10FF:FE38:0/128 [0/0]

via ::, FastEthernet0/0

R 2002:ABAB::/64 [120/2]

via FE80::D202:10FF:FE38:0, FastEthernet0/0

R 2003:ABAB::/64 [120/2]

via FE80::D202:10FF:FE38:0, FastEthernet0/0

L FE80::/10 [0/0]

via ::, Null0

L FF00::/8 [0/0]

via ::, Null0

Case 2: Holddown timer is changed to 20 seconds on R1 and R2

R1(config)# ipv6 router rip TEST

R1(config-rtr)# timers 30 180 20 120 [ Periodic update interval is 30, expire timer is 180, Holddown timer is 20 and Garbage-collection timer is 120]

R1# show ipv6 rip

RIP process "TEST", port 521, multicast-group FF02::9, pid 153

Administrative distance is 120. Maximum paths is 16

Updates every 30 seconds, expire after 180

Holddown lasts 20 seconds, garbage collect after 120

Split horizon is on; poison reverse is off

Default routes are not generated

Periodic updates 19, trigger updates 12

Interfaces:

FastEthernet0/0

Redistribution:

None

Again, when R2's Loopback 0 interface is manually shut down, it sends a triggered update which R1 receives.

R1#

*Mar 1 00:14:44.999: RIPng: response received from FE80::D202:10FF:FE38:0 on FastEthernet0/0 for TEST

*Mar 1 00:14:44.999: src=FE80::D202:10FF:FE38:0 (FastEthernet0/0)

*Mar 1 00:14:44.999: dst=FF02::9

*Mar 1 00:14:45.003: sport=521, dport=521, length=32

*Mar 1 00:14:45.003: command=2, version=1, mbz=0, #rte=1

*Mar 1 00:14:45.003: tag=0, metric=16, prefix=2003:ABAB::/64

*Mar 1 00:14:45.003: RIPng: 2003:ABAB::/64, path FE80::D202:10FF:FE38:0/FastEthernet0/0 unreachable

*Mar 1 00:14:45.007: IPv6RT0: rip TEST, Delete 2003:ABAB::/64 from table

*Mar 1 00:14:45.007: RIPng: 2003:ABAB::/64, expired, ttg is 20

*Mar 1 00:14:45.007: RIPng: Triggered update requested, in hold-down

*Mar 1 00:14:45.011: IPv6RT0: Event: 2003:ABAB::/64, Del, owner rip, previous None

Note the router now initiates the Holddown timer indicated by "in hold-down".

R1# show ipv6 rip TEST database

RIP process "TEST", local RIB

2002:ABAB::/64, metric 2, installed

FastEthernet0/0/FE80::D202:10FF:FE38:0, expires in 172 secs

2003:ABAB::/64, metric 16, expired, [advertise 108/hold 8]

FastEthernet0/0/FE80::D202:10FF:FE38:0

Meanwhile, R1 receives an update for prefix 2003:ABAB::/64 about its reachability from R2 but since the Holddown timer is still running, it ignores the update.

R1#

*Mar 1 00:14:53.667: RIPng: response received from FE80::D202:10FF:FE38:0 on FastEthernet0/0 for TEST

*Mar 1 00:14:53.667: src=FE80::D202:10FF:FE38:0 (FastEthernet0/0)

*Mar 1 00:14:53.667: dst=FF02::9

*Mar 1 00:14:53.667: sport=521, dport=521, length=32

*Mar 1 00:14:53.671: command=2, version=1, mbz=0, #rte=1

*Mar 1 00:14:53.671: tag=0, metric=1, prefix=2003:ABAB::/64

*Mar 1 00:14:53.671: RIPng: 2003:ABAB::/64, held-down, ignoring update

However, once the Holddown timer expires and R1 receives another update from R2, this time, it will install the prefix in its routing table.

R1# show ipv6 rip TEST database

RIP process "TEST", local RIB

2002:ABAB::/64, metric 2, installed

FastEthernet0/0/FE80::D202:10FF:FE38:0, expires in 157 secs

2003:ABAB::/64, metric 16, expired, [advertise 94/hold 0]

FastEthernet0/0/FE80::D202:10FF:FE38:0

R1#

*Mar 1 00:15:14.735: RIPng: response received from FE80::D202:10FF:FE38:0 on FastEthernet0/0 for TEST

*Mar 1 00:15:14.735: src=FE80::D202:10FF:FE38:0 (FastEthernet0/0)

*Mar 1 00:15:14.739: dst=FF02::9

*Mar 1 00:15:14.739: sport=521, dport=521, length=52

*Mar 1 00:15:14.739: command=2, version=1, mbz=0, #rte=2

*Mar 1 00:15:14.739: tag=0, metric=1, prefix=2002:ABAB::/64

*Mar 1 00:15:14.739: tag=0, metric=1, prefix=2003:ABAB::/64

*Mar 1 00:15:14.743: RIPng: 2003:ABAB::/64, metric changed to 2

*Mar 1 00:15:14.743: RIPng: 2003:ABAB::/64, added path FE80::D202:10FF:FE38:0/FastEthernet0/0

R1#

*Mar 1 00:15:14.743: IPv6RT0: rip TEST, Route add 2003:ABAB::/64 [new]

*Mar 1 00:15:14.743: IPv6RT0: rip TEST, Add 2003:ABAB::/64 to table

*Mar 1 00:15:14.747: IPv6RT0: rip TEST, Adding next-hop FE80::D202:10FF:FE38:0 over FastEthernet0/0 for 2003:ABAB::/64, [120/2]

*Mar 1 00:15:14.747: RIPng: Triggered update requested, in hold-down

*Mar 1 00:15:14.751: IPv6RT0: Event: 2003:ABAB::/64, Add, owner rip, previous None