Internet DRAFT - draft-hsmit-bmp-extensible-routemon-msgs
draft-hsmit-bmp-extensible-routemon-msgs
GROW Working Group H. Smit, Ed.
Internet-Draft Nokia
Intended status: Standards Track July 18, 2018
Expires: January 19, 2019
BMP Extensible Route-Monitoring Messages
draft-hsmit-bmp-extensible-routemon-msgs-00
Abstract
The BGP Monitoring Protocol (BMP) is defined in RFC7854. Most of the
types of messages in BMP are extensible via the mechanism of TLVs.
However, the most important type of message, the route-monitoring
message, has a fixed format.
This document proposes a relatively small change to the format of BMP
route-monitoring messages. The new format of route-monitoring
messages is no longer fixed-format, but tlv-encoded. This document
also proposes to split the route-monitoring message-type into 3 new
message-types. For Adj-RIB-In, Adj-RIB-Out and Loc-RIB.
This document proposes two types of TLVs to be used in this new
format. A TLV to report the BGP update message itself. And a flags-
field TLV, to report state of the reported routes.
Requirements Language
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in RFC 2119 [1].
Status of This Memo
This Internet-Draft is submitted in full conformance with the
provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet-
Drafts is at https://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress."
This Internet-Draft will expire on January 19, 2019.
Smit Expires January 19, 2019 [Page 1]
Internet-Draft BMP Extensible Route-Monitoring Messages July 2018
Copyright Notice
Copyright (c) 2018 IETF Trust and the persons identified as the
document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents
(https://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License.
Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2
2. Limitations of the current route-monitoring message format . 3
3. Proposed changes . . . . . . . . . . . . . . . . . . . . . . 4
4. New Message-types . . . . . . . . . . . . . . . . . . . . . . 5
5. TLV-encoding . . . . . . . . . . . . . . . . . . . . . . . . 5
6. BGP Update Message TLV . . . . . . . . . . . . . . . . . . . 6
7. Flags-field TLV . . . . . . . . . . . . . . . . . . . . . . . 6
7.1. Two flags per piece of state . . . . . . . . . . . . . . 6
7.2. Proposed flags in the flag-field TLV . . . . . . . . . . 7
7.3. Reporting state in the flags-field TLV that is already
known . . . . . . . . . . . . . . . . . . . . . . . . . . 8
8. Example of layout of a tlv-encoded BMP route-monitoring
message . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
9. Security Considerations . . . . . . . . . . . . . . . . . . . 9
10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 9
11. Contributor Addresses . . . . . . . . . . . . . . . . . . . . 9
12. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 9
13. References . . . . . . . . . . . . . . . . . . . . . . . . . 9
13.1. Normative References . . . . . . . . . . . . . . . . . . 9
13.2. Informative References . . . . . . . . . . . . . . . . . 9
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 10
1. Introduction
The BGP Monitoring Protocol (BMP) is defined in RFC 7854 [2]. One of
the message-types is the Route-Monitoring message. The route-
monitoring message consists of:
o generic bmp header
o per-peer bmp header
Smit Expires January 19, 2019 [Page 2]
Internet-Draft BMP Extensible Route-Monitoring Messages July 2018
o a full BGP update message
This means that route-monitoring messages have a fixed format. This
brings some limitations to the BMP protocol regarding extensibility.
Many protocols use a tlv-encoding for the format of their messages.
IS-IS is a prime example. But also BGP itself uses a form of tlv-
encoding, namely when encoding path-attributes.
BMP also uses TLVs, but not for all message. Initiation,
termination, peer-up and peer-down messages all use tlv-encoding.
Stats-messages consists of counters, where those counters are tlv-
encoded. But the route-monitoring messages are not tlv-encoded.
This document proposes a new format for BMP Adj-RIB-In route-
monitoring messages, which uses tlv-encoding.
There are currently two other proposals to enhance BMP. The original
BMP specification in RFC7854 defines how a router can report incoming
BGP routes (Adj-RIB-In) to a BMP collector. One draft describes a
new proposal how to report outgoing routes (Adj-RIB-Out) [4]. A
second draft proposes how to report routes that are in BGP's own RIB
(Loc-RIB) [3]. This document proposes to use 2 more new message-
types to report these Adj-RIB-Out and Loc-RIB routes.
This document does not propose any changes to BMP messages other than
route-monitoring messages.
2. Limitations of the current route-monitoring message format
There are a few short-comings with the current format of Route-
Monitoring messages. These short-comings also apply to the new
formats proposed in the Adj-RIB-Out and Loc-RIB drafts.
1) The format of route-monitoring message is fixed. This prevents
us from adding more information to each reported route. This
extra information can be simple state in the form of a simple bit.
Examples of this are whether a route:
* route has passed a policy or filter or not,
* route has won BGP's best path selection for that NLRI or not
* route is installed in the global routing table or not
* route has a valid next-hop or not
Smit Expires January 19, 2019 [Page 3]
Internet-Draft BMP Extensible Route-Monitoring Messages July 2018
More elaborate state can also be reported together with the route
itself. E.g.:
* if a route was rejected because of a policy or filter, BMP
could report why the route was rejected. E.g. it could report
the policy's name or identifier, and the line-number or entry-
number that caused the route to be rejected.
* if a route did not win best-path selection, BMP could report
why it didn't win. E.g. this route had a longer as-path, a
lower local-preference, or it lost because the IGP cost to the
next-hop is higher.
2) Some state of a route is reported in BMP's per-peer header.
One would expect that the per-peer header would hold state about
the peer itself. E.g. whether the peer's ip-address is IPv4 or
IPv6. Not how a BGP update-message is encoded (with 4-byte ASNs)
or whether the attributes of a route are pre-policy or post-
policy. But the real limitation is that the per-peer header has
only 8 bits in its flags-field. There is only a limited amount of
state we can store in those 8 bits. And half of them are used up
already.
3) The route-monitoring message is overloaded. We use it for
routes from the Adj-RIB-In, Adj-RIB-Out and Loc-RIB. E.g. to
determine that a route-monitoring message holds a route in the
Loc-RIB, the peer-type in the per-peer header is set to a special
value (TBD), and a number of fields are set blank. This means
that the BMP collector now knows which route is in the BGP-Loc-
RIB, but it still doesn't know where that route came from.
Putting all three different types of routes in the same message-
type will make it harder to deal with them, when these types of
routes require different treatment.
3. Proposed changes
1) Define a new tlv-based encoding for route-monitoring messages.
This means that the encoding is not backwards compatible with the old
fixed-format encoding. Therefor we need to define a new message-
type.
2) When we are defining a new message-type for Adj-RIB-In messages,
we can just as well define 3 different message-types: one for Adj-
RIB-In messages, one for Adj-RIB-Out messages, and one for Loc-RIB
messages.
Smit Expires January 19, 2019 [Page 4]
Internet-Draft BMP Extensible Route-Monitoring Messages July 2018
3) There must be a TLV that holds the original content of a route-
monitoring message: namely the original BGP update message itself.
4) This document proposes another new TLV, namely the flags-field
TLV. The flags-field TLV consists of a variable number of bits,
where each bit represents some state of that route. The flags-field
TLV is variable in length. Therefor we can add state in the future,
almost indefinitely.
4. New Message-types
We need 3 new message-types. For Adj-RIB-In, Adj-RIB-Out and Loc-RIB
routes. The old route-monitoring message (type 0) can be deprecated
over time. The new values are TBD. But obvious values would be 7
(Adj-RIB-In), 8 (Adj-RIB-Out) and 9 (Loc-RIB).
In the mean time, BMP collectors can accept all 4 message-types.
When they receive an old route-monitoring message, they know the
content consists of just a BGP update message. So they can parse the
message. When a BMP collector receives one of the new 3 message-
types, they know the message body consists of TLVs, and they can
parse those. Therefor BMP collectors do not require any
configuration to deal with routers that do and do not support the new
tlv-encoding. Routers will need a configuration options, so that
providers can configure their routers to send only type 0 route-
monitoring messages to old collectors that do not understand the tlv-
encoding (yet).
5. TLV-encoding
The Adj-RIB-In, Adj-RIB-Out and Loc-RIB route-monitoring messages use
tlv-encoding as defined in RFC7854. This means that the body of the
route-monitoring message consists of one or more TLVs. A TLV
consists of:
o 2 octets of TLV-type,
o 2 octets of TLV-length,
o 0 or more octets of TLV value.
Smit Expires January 19, 2019 [Page 5]
Internet-Draft BMP Extensible Route-Monitoring Messages July 2018
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type (2 octets) | Length (2 octets) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Value (variable, between, 0 and 65535 octets) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 1
TLVs in the body of a route-monitoring message MAY be sent in any
order. At least one TLV MUST be present in the body of the message.
Preferably the BGP update message TLV. Sending a flags-field TLV is
highly recommended (SHOULD).
6. BGP Update Message TLV
TLV-type is TBD. Suggest value is 1.
The content of the BGP update message TLV is simply a full BGP update
message. The content of this TLV should be the same as when a router
would send the BGP update message in the old non-tlv-encoded format,
as in route-monitoring messages of type 0. The length of the BGP
message in the BGP header should be the same as the length of the TLV
in the TLV-length field.
7. Flags-field TLV
TLV-type is TBD. Suggested value is 2.
The length of this TLV is 0 more bytes. A BMP collector MUST be
prepared to receive a flags-field TLV with any length. When a BMP
collector receives more bits in the flags-field TLV than it knows the
definition of, it can ignore the additional bits.
The flags-field TLV is used in both Adj-RIB-In, Adj-RIB-Out and Loc-
RIB messages. The flags keep their meaning between message-types.
If a flag does not have any practical meaning for the message-type,
it should be ignored. An example of this are the pre-policy and
post-policy flags for the Loc-RIB routes.
7.1. Two flags per piece of state
For most state, the flags-field TLV has 2 bits. One bit to state if
something is true, and another bit to state that something is not
true. E.g. there are 2 flags to state that a route has won the BGP
best-path selection. The reason for this is that when we have 2
Smit Expires January 19, 2019 [Page 6]
Internet-Draft BMP Extensible Route-Monitoring Messages July 2018
bits, a router can report a state when it knows that state. Or it
can decide to not report that state. E.g. because it doesn't know
the state (yet). Suppose a router reports an Adj-RIB-In route after
it received that route, but before it has ran best-path computation.
The 2 flags for best-route can be set to 0. Later, after BGP has run
best-path computation for that NLRI, the router can report a Loc-RIB
message to the collector, and set one of the two flags indicating
whether a route won best-path or not.
Having 2 bits per state has the advantage that not all routers are
required to support all flags. Unsupported state can always be set
to zero. It also allows a router to send all state in a single
message, if it can do that. E.g. when a router reports Adj-RIB-In
routes after it has run best-path computation and after the BGP route
was installed in the global routing table, BMP can report all that
state in a single message.
7.2. Proposed flags in the flag-field TLV
1) path-attributes are pre-policy
2) path-attributes are post-policy
3) route is valid
4) route in invalid (e.g. next-hop is unreachable)
5) route is accepted by policy
6) route is rejected by policy
7) route is best BGP route after best-path selection
8) route is not best BGP route after best-path selection
9) route is installed in global (or VRF's) routing table
10) route is not installed in global routing table
11) as-path is in 4-byte ASN notation
12) unused
13) NLRI have path-id (add-paths)
14) NLRI do not have path-id (add-paths)
15) route in global routing table is used/best
Smit Expires January 19, 2019 [Page 7]
Internet-Draft BMP Extensible Route-Monitoring Messages July 2018
16) route in global routing table is not used/not best
The exact meaning of each flag needs further discussion. More flags
can be added to this document, if necessary. Or added later, as part
of future extensions of the BMP protocol.
7.3. Reporting state in the flags-field TLV that is already known
This document proposes some flags in the flags-field TLV that are not
absolutely necessary. E.g. there are 2 flags to indicate whether
NLRI in the BGP update message are encoding with a path-id (add-
paths).
A BMP collector can know this already, when it has kept state from
the BGP OPEN messages in the BMP peer-up messages. However, this can
have practical limitations. Parsing a BMP message now requires
state. It would be nice if BMP messages can be parsed without any
priory state. E.g. this would make sniffing BMP packets with tools
like tcpdump or WireShark a lot easier.
RFC7854 has a single bit to indicate whether a reported route has
pre-policy or post-policy attributes with the route. This document
proposes to use 2 bits. This way a router can report both pre-policy
and post-policy routes in a single BMP message, if the attributes are
unchanged by policy.
8. Example of layout of a tlv-encoded BMP route-monitoring message
A BMP Adj-RIB-In route-monitoring message can look like:
o generic bmp header, 6 bytes
o per-peer bmp header, 42 bytes
o tlv-header, type = BGP update message TLV
o tlv-content: bgp update message, including bgp header and marker
o tvl-header, type = Flags-field TLV, length is 2
o tlv-content: 16 bits of flags
o potentially more TLVs, to be defined in future drafts
Smit Expires January 19, 2019 [Page 8]
Internet-Draft BMP Extensible Route-Monitoring Messages July 2018
9. Security Considerations
This draft has no implications on the security aspect of BMP
10. Acknowledgements
The author would like to express thanks to Alejandro Ayala and Gunter
Van De Velde for their suggestions and comments.
11. Contributor Addresses
Below is a list of other contributing authors in alphabetical order:
Figure 2
12. IANA Considerations
This document requests three new message-types in BMP.
This document creates a new list of TLVs to be used in the three new
route-monitoring messages
This document defines an extensible TLV, called the Flags-field TLV.
New meaning to bits in the Flags-field TLV can be assigned in the
future.
13. References
13.1. Normative References
[1] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, March 1997,
<http://xml.resource.org/public/rfc/html/rfc2119.html>.
[2] Scudder, J., Ed., Fernando, R., and S. Stuart, "BGP
Monitoring Protocol (BMP)", RFC 7854,
DOI 10.17487/RFC7854, June 2016,
<https://www.rfc-editor.org/info/rfc7854>.
13.2. Informative References
[3] Evens, T., Bayraktar, S., and P. Lucente, "Support for
Local RIB in BGP Monitoring Protocol (BMP)", February
2018.
Smit Expires January 19, 2019 [Page 9]
Internet-Draft BMP Extensible Route-Monitoring Messages July 2018
[4] Evens, T., Bayraktar, S., Lucente, P., Mi, P., and S.
Zhuang, "Support for Adj-RIB-Out in BGP Monitoring
Protocol (BMP)", March 2018.
Author's Address
Henk Smit (editor)
Nokia
Antwerp
Belgium
Email: henk_hw.smit@nokia.com
Smit Expires January 19, 2019 [Page 10]