Step 8. Hold-down timer¶
Demonstrate that routing loops can be prevented by using holddown (and the holddown timer) in cases when other methods, such as split horizon / splithorizon with poisoned reverse are not effective.
This step uses the same network as the previous one.
The configuration in
omnetpp.ini is the following:
[Config Step8] description = "Garbage-collection (hold-down) timer" extends = Step7 # Enabling split horizon with/without poison reverse alone does not solve the problem # -> because there are loops -> a router does not send the update to where it received # it from, but another router in the loop can. # But we have seen this in step7 so split horizon is not needed here (actually, # does not make a difference, but it is easier to demonstrate hold-down without it) #*.router*.rip.ripConfig = xml("<config> <interface hosts='router*' mode='SplitHorizon' /> </config>") # without split horizon, router2 sends the no longer working route to router3, with a # metric of 3. # since the route in router3 is in hold-down, it does not update it -> it might be more # visible this way. *.router*.rip.holdDownTime = 30s
The 10.0.0.24/29 network becomes unreachable, the route in router1 is set to metric 16. This is propagated to router3 (it also sets the route to 10.0.0.24/29 to metric 16). The update from router2 contains the route with metric 3, but its not updated in router1 because the route is in holddown. (TODO: this is essentially the same as the paragraph below)
Thus routing loops are prevented.
On the following image,
router2 sends a RIP Response message to
router3. The message contains the route to the (currently
unreachable) 10.0.0.24/29 network, with a metric of 3. Also,
has a route to the network with a metric of 16. The route will not be
router3, as the route is in holddown. The details of the
RIP Response message and
router3’s RIP table are highlighted (click
on the image to enlarge):