Poison Reverse Example in Routing Protocols

protocol-theoryrouting

Can you give me an example when poison reverse is actually necessary?

Distance vector routing protocols employ split horizon with poison reverse to minimize the convergence time when a route is no longer available. The thing is that I can't think of an example when poison reverse is actually useful.

Best Answer

Consider the following topology:

               A
             / |
Internet -- S  |
             \ |
               B

Using RIP, S announces (0.0.0.0/0, 0), and both A and B announce (0.0.0.0/0, 1).

Suppose now that router S fails. Suppose further that you're unlucky, and that A and B both switch their next hops to each other -- they create a routing loop.

  • with plain Bellman-Ford, A and B have no way to get rid of the loop in a timely manner — they need to count to infinity;
  • with split horizon, A and B immediately stop announcing the default route to each other — they get rid of the loop as soon as the route times out;
  • with poison reverse, A and B announce an infinite metric default route to each other, which gets rid of the routing loop as soon as an update is successfully transmitted.

Note that poison reverse has a drawback ­— it increases the size of updates, sometimes dramatically so (especially from stub routers). Note further that poison reverse only gets rid of loops of size two — in order to get rid of larger loops in a timely manner, you need a feasibility condition, as in EIGRP or Babel.