Hello all,

I've read the 2 new BMP drafts.
I don't like them very much.
I think we can do better.


What the new drafts propose:
----
The new drafts introduce new ways to report routes from the Adj-RIB-Out
and Loc-RIB to bmp-stations.

The Adj-RIB-Out draft does that by using a flag from the BMP per-peer
header's flag-field. This new flag indicates that a reported route is
from the Adj-RIB-Out in stead of the Adj-RIB-In.
I don't like this.

The flags-field has only 8 bits. We were using 3 of them. This draft
uses a 4th. And the Loc-RIB draft introduces yet another flag. We'll
be running out of flags soon.

The Loc-RIB draft introduces a new peer-type, the so-called
"Loc-RIB Instance Peer". Note, we already had a "Local Instance Peer".
I don't find this naming very clear. I also don't like mixing three
different types of routes (In, Out, Loc) in the same message-type.


What I propose:
----
We have 256 message-types. We are using 7 of those now.
I think it would be wiser to introduce a new message-type for
reporting Adj-RIB-Out routes. That is 1) a bit cleaner, and 2) it
allows us to use the flags in the flag-field for more important or
more useful things.

If we are introducing a new message-type for Adj-RIB-Out, we can just
as well introduce a new message type for Loc-RIB routes. That makes
the distinction between the 3 different types of routes a lot cleaner.


What about the old route-monitoring message ?
----
Modern protocols are developed using TLVs.
BMP does have TLVs in some of its messages too (init, term, peer-up, etc).
However, the most important message in BMP, the route-monitoring message
is fixed format. I think that is a bug.
The route-monitoring message consists of:
1) the small common BMP header
2) the per-peer header
3) the reported route(s), encapsulated in a BGP update-message.

There is no flexibility here to add more information.
That is a short-coming.
The whole body of the message should be TLV-based.
Therefor I propose we use the following message-format for the
new route-report messages.

1) small common BMP header
2) the per-peer header
3) TLVs, these consist of:
   a) zero or more informational TLVs.
these can include tags, reason why a route was dropped or accepted, did this route win best-path computation ? is the route installed in the GRT/RIB/RTM ? we can add any new information here, in the future,
      by just defining a new TLV.
   b) a TLV which holds the BGP update-message.


This format should apply to all 3 new message-types, for Adj-RIB-In,
Adj-RIB-Out and Loc-RIB.


What is the impact of this change ?
----
The BMP protocol remains largely the same.
The common BMP header and the per-peer header stay the same.
The init and termination messages stay the same.
The peer-up and peer-down messages stay the same.
These last 4 messages are already really TLV-based.
Only the route-monitoring messages need to change.

Sending and parsing of the route-monitoring is largely the same
as it is today. The only difference is that a bunch of TLVs can
be sent along with the BGP update message. Existing bmp-station
implementations can be easily altered to accept the 3 new route-monitoring
messages, and just skip the TLVs. That's less than a day's work.
If a bmp-station implementation wants to know about the new TLVs, new
code can be written and introduced to parse and process the extra
information on a TLV-by-TLV bases. The BMP protocol is now extensible.


Do we need to bump BMP to version 4 ?
----
It might be nice to do this.
But technically there is no need. Old bmp-station implementations will
accept the 3 new BMP messages, and (hopefully) skip the message-types they
don't know about. Routers can have a configuration knob to send only
old-fashioned route-monitoring messages (type 0). Or they could send
routes in the 3 new message-formats. This is straight-forward to implement.


Flags in the flags-field in the per-peer header
----
The flags-field in the per-peer header has 8 bits.
Currently we use 3 of those.
V-bit indicates the peer uses an IPv6 address.
L-bit indicates post-policy
A-bit indicates 2-byte as-path

I'd like to use a few more bits.

1) We have a bit to indicate that a route is sent with pre-policy attributes or with post-policy attributes. If we want to send both, we have to send 2 BMP messages. If the attributes are unaltered, we still have to send
   2 messages.
I'd like to see 2 bits in stead of 1 bit. One for post-policy, and a new bit for pre-policy. This will allow us to report the same route only once
   in stead of twice.

2) It might be nice to have a bit indicating that a post-policy route
   was denied into the BGP-RIB by policy. This could also be done via a
TLV in the new route-monitoring messages. So maybe we shouldn't use a bit
   for this.

3) This is a personal one. When parsing a BGP update-message in a BMP
route-monitoring message, you need to know if the prefix has a path-id
   in front of it or not. The only way to know this is by looking at the
   OPEN messages in the BMP peer-up messages. This is fine for elaborate
   bmp-station implementations like OpenBMP. But for state-less software
that looks at BMP messages, it is impossible to parse route-mon messages. This is a problem for sniffers like WireShark or tcpdump. E.g. the peer-up message might have been sent hours or days ago. Also developing simple
   tools for testing or trouble-shooting or development is a pain when
   add-paths is configured.
   Therefor I'd like to dedicate one bit in the flags-field to indicate
   that the NLRI inside the bgp-updates messages have a path-id.
We have a similar bit to distinguish between 2-byte and 4-byte ASNs. Having
   a bit to indicate add-paths is kinda the same.


My apologies for the long email.
Thanks for your attention,

henk.


====
About myself (because this is the first email I'm sending to the IETF in 20 years).
----
I work for a router-vendor.
At the IETF I represent myself, not my employer.
Lately I've been working on a BMP implementation.
Router-side, where BGP in a router sends BMP-messages to bmp-stations.
(For those who recognize my employer's version numbering:
 our BMP will be released 1-2 months from now, in release 16.0R1).


_______________________________________________
GROW mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/grow

Reply via email to