[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