[Babel-users] [babel] Redefining the encoding of source-specific updates

Juliusz Chroboczek jch at pps.univ-paris-diderot.fr
Thu Jun 9 21:46:52 UTC 2016


> I am sufficiently lazy to ask (rather than try to calculate) what the
> difference in compression ratio is and if there are other changes in
> encoding that would make it better under various use cases.

It depends very much on the nature of the network.

> (I was impressed by the bmx7 encodings)

Yes, Alex has done a good job.  However, he's using inter-packet state,
which gives rise to a whole set of tradeoffs.  In Babel, we only keep
parser state within a single packet, and that's not likely to change.

With the current encoding, only the destination address gets compressed,
and source-specific contributes no compression state, which avoids
confusing non-source-specific abwabel:

So if you're announcing

  2001:db8:1234:5678::/64
  2001:db8:1234:5678:dead:beef:f00:ba4/128
  2001:db8:1234:5678::/64 src 2001:db8:1234::/48
  2001:db8:1234:5678::/64 src 2001:db8:5678::/48
  ::/0 src 2001:db8:5678::/48

you only encode

  2001:db8:1234:5678::/64
  (compressed):dead:beef:f00:ba4/128
  (compressed)::/64 src 2001:db8:5678::/48
  (compressed)::/64 src 2001:db8:5678::/48
  ::/0 src 2001:db8:5678::/48

Note how destination prefixes get compressed away, but there's no
compression for the source prefixes.

What Markus and I have in mind is an encoding in which there are separate
compression states for non-specific and source-specific AEs.  So the above
will compress as
  
  2001:db8:1234:5678::/64
  (compressed):dead:beef:f00:ba4/128
  2001:db8:1234:5678::/64 src 2001:db8:1234::/48
  (compressed)::/64 src (compressed):5678::/48
  ::/0 src (compressed)::/48

Note how both destination and source prefixes get compressed, but the
compression state needs to be reestablished for the first source-specific
update (2001:db8:1234:5678 is explicitly encoded twice, once for
non-source-specific and once for source-specific).

The alternative would be to have some unidirectional leaking between
non-source-specific and source-specific, so as to get

  2001:db8:1234:5678::/64
  (compressed):dead:beef:f00:ba4/128
  (compressed)::/64 src 2001:db8:1234::/48
  (compressed)::/64 src (compressed):5678::/48
  ::/0 src (compressed)::/48

This is likely to gain up to 8 octets for each non-default source-specific
route, but at the cost of a much more complex implementation and
specification, and bad compositionality with further extensions
(TOS-specific is likely to happen).  Note that if all source-specific
routes are default routes, the gain is nil.

-- Juliusz



More information about the Babel-users mailing list