Subject: [babel] Making aggregation possible in Babel (Chouasne's algorithm)

From: Juliusz Chroboczek <[email-masked]>
Date: Wed, 28 Jun 2017 18:36:23 +0200

I've just written up the algorithm that allows using aggregation in Babel
without endangering loop-freedom.  I've chosen to MUST the very minimal
behaviour that has a chance to avoid loops, and to SHOULD either the old
behaviour (hold time) or Chouasne's algorithm, either of which guarantees
the absence of loops in this case.

Please see

  https://github.com/jech/babel-drafts/commit/ee693a718f18925b7a1c1fdcf5a578511be6744f

I'm not very happy with the wording.

-- Juliusz

---

From: David Schinazi <[email-masked]>
Date: Wed, 28 Jun 2017 16:40:06 -0700

Juliusz,

Thanks for writing this up! The wording does feel heavy though.

Here's an attempt at refactoring it based on your text:
https://github.com/jech/babel-drafts/pull/4/files <https://github.com/jech/babel-drafts/pull/4/files>

Here's the resulting text, let me know what you think.

3.5.5.  Hold Time

   When a prefix P is retracted, because all routes are unfeasible or
   have an infinite metric (whether due to the expiry timer or to other
   reasons), and a shorter prefix P' that covers P is reachable, P'
   cannot in general be used for routing packets destined to P without
   running the risk of creating a routing loop (Section 2.8).

   To avoid this issue, whenever a prefix P is retracted, a routing
   table entry with infinite metric is inserted as described in
   Section 3.5.4 above.  As long as this entry is maintained, packets
   destined to an address within P MUST NOT be forwarded by following a
   route for a shorter prefix.  The infinite metric entry MUST be
   maintained at least until it is guaranteed that no neighbour has
   selected the current node as next-hop for prefix P.  This can be
   achieved by either:

   o  waiting until the route's expiry timer has expired (Section 3.5.4)

   o  sending a retraction with an acknowledgement request (Section 3.3)
      to every neighbour that has not explicitly retracted prefix P and
      waiting for all acknowledgements

   The former option is simpler and ensures that at that point, any
   routes for prefix P pointing at the current node have expired.
   However, since the expiry time can be as high as a few minutes, doing
   that prevents automatic aggregation by creating spurious black-holes
   for aggregated routes.  The latter option is RECOMMENDED as it
   reduces convergence time.

   Additionally, if a finite-metric feasible update for prefix P is
   received and the resulting route selected, the infinite-metric entry
   is overridden and removed.

Thanks,
David Schinazi

> On Jun 28, 2017, at 09:36, Juliusz Chroboczek <[email-masked]> wrote:
> 
> _______________________________________________
> babel mailing list
> [email-masked]
> https://www.ietf.org/mailman/listinfo/babel

---

From: Juliusz Chroboczek <[email-masked]>
Date: Thu, 29 Jun 2017 20:49:18 +0200

> https://github.com/jech/babel-drafts/pull/4/files

Pulled, thanks.  The only problem with your text is how you had pushed the
overriding case to the end, I've moved it backwards.  Feel free to do more
word-smithing.

-- Juliusz

---

From: David Schinazi <[email-masked]>
Date: Thu, 29 Jun 2017 12:23:21 -0700

The reordering you performed makes sense to me, thanks!

David Schinazi

> On Jun 29, 2017, at 11:49, Juliusz Chroboczek <[email-masked]> wrote:
>