7

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.

Silviu
  • 403
  • 2
  • 4
  • 8

2 Answers2

5

The only useful example I could find for split-horizon/poison-reverse is multi-access routed segments (point-to-multipoint frame relay or an ethernet segment with >2 routers).

Both the RIP RFC (section 2.2.1), Cisco's EIGRP doc and Juniper's RIP document all show multi-access examples. Cisco's EIGRP RFC doesn't detail it's split horizon or poison-reverse implementation.

---Edit to remove previous incorrect info---

cpt_fink
  • 1,470
  • 7
  • 17
  • This is not the case.Let's assume EIGRP is running. If link AB fails, and B does not have a feasible successor to netX, B will query it's neighbors about netX and will find a route through D. – Silviu Dec 29 '14 at 08:43
  • In this topology, a poison reverse will be sent for example by router B to router A when link netX-A fails and A sends a route poisoning to routers B and C. But in this case the B's poison reverse is useless, as netX was already deleted from router A routing table. – Silviu Dec 29 '14 at 08:48
  • I'll add more detail, hopefully that will help. – cpt_fink Dec 29 '14 at 15:40
4

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.

jch
  • 400
  • 1
  • 5
  • Can you use poison-reverse without split-horizon? After going back and reading about poison-reverse to correct my answer, I didn't see any implementations that used poison-reverse without split-horizon. In this example you would depend on split-horizon and holddown timers. – cpt_fink Jan 12 '15 at 03:13
  • Poison reverse implies split horizon — the poison route is being sent instead of the route suppressed by split horizon. – jch Jan 13 '15 at 11:02