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.

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.

| improve this answer | |
  • 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 3: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
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---

| improve this answer | |
  • 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 8: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 8:48
  • I'll add more detail, hopefully that will help. – cpt_fink Dec 29 '14 at 15:40

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.