Dear WG, I agree with Henk in his previous email that a new message type can be defined for carrying the local-rib.
Typically, it’s implementation-efficient to reuse the existing message type for carrying new information, however, as I try to understand the interpretation/mapping of the local-rib information into each existing message type, I find it a little bit difficult to follow. More specifically, the peer definition for the local-rib per-peer head is changed from the “actual peer” to an emulated peer. Since all peers are emulated, the associated peer up/down notifications and route monitoring messages are all fabricated. I understand that such implementation can be technically workable, but for me it’s a little bit deviated from the “monitoring” purpose of BMP. In fact, the above mentioned concerns can be solved by a straightforward idea of proposing a new message type for carrying the local-rib. Thus, we can save the inconvenience of transforming the BGP speaker–based local-rib into the peer-based format messages. Back to the new “local-rib message”, as Henk also suggested, the new message can be designed as TLV based. I think that using the TLV based format is more flexible for carrying non-route information in addition to the route information within either local-rib, rib-in or rib-out messages. For example, in order to better understand how the routing policy configured actually worked, an action/policy TLV can be defined and added to each route. The need for carrying the routing policy and actions/decisions taken has also been raised by Ruediger and Thomas in previous emails. I think it will be quite beneficial to the operators to understand how their routing policies actually worked and thus it’s worth taking the need into consideration during the BMP design. In addition, considering the format consistency perspective, except for the pre-policy rib-in, which can be encapsulated using the original BGP Update PDUs and sent to the monitoring station, all the other rib, i.e., post-policy, local-rib and rib-out, need to be first transformed from the rib format into the Update PDU format and then encapsulated with BMP headers, thus we might as well transform the rib into TLVs. Besides the above comments, I also have one more question regarding the idea of using the new Local-Rib instance peer. Different peers are emulated for different VRF instances and for different address families. Although it’s mentioned in Section 6.1.1 that different peers are emulated for multiple address families of the same local-rib, there is currently no flag in the per peer header indicating address family (Previously, in RFC7854, the flag V in the per peer header is used to distinguish IPv4 and IPv6). So can the authors explain how to distinguish different address families in both peer up/down notifications for the emulated peers? Best regards, Yunan Gu Huawei Technologies Co. Ltd Beijing IP Technology Research Division From: GROW [mailto:[email protected]] On Behalf Of Job Snijders Sent: 2018年4月22日 8:28 To: Henk Smit <[email protected]> Cc: [email protected] Subject: Re: [GROW] The new BMP drafts and new BMP functionality Dear WG, I’d like to encourage the authors and stakeholders of current BMP work to assess the below feedback and get back to the working group. Kind regards, Job On Mon, 26 Mar 2018 at 15:24, Henk Smit <[email protected]<mailto:[email protected]>> wrote: 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]<mailto:[email protected]> https://www.ietf.org/mailman/listinfo/grow
_______________________________________________ GROW mailing list [email protected] https://www.ietf.org/mailman/listinfo/grow
