-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdraft-ietf-grow-bmp-path-marking-tlv.xml
487 lines (380 loc) · 19.9 KB
/
draft-ietf-grow-bmp-path-marking-tlv.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
<?xml version="1.0" encoding="US-ASCII"?>
<?rfc toc="yes"?>
<?rfc tocompact="yes"?>
<?rfc tocdepth="3"?>
<?rfc tocindent="yes"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<?rfc compact="yes"?>
<?rfc subcompact="no"?>
<rfc category="std" docName="draft-ietf-grow-bmp-path-marking-tlv-latest"
ipr="trust200902">
<front>
<title abbrev="BMP path status tlv">BMP Extension for Path Status
TLV</title>
<author fullname="Camilo Cardona" initials="C." surname="Cardona">
<organization>NTT</organization>
<address>
<postal>
<street>164-168, Carrer de Numancia</street>
<city>Barcelona</city>
<code>08029</code>
<country>Spain</country>
</postal>
<email>[email protected]</email>
</address>
</author>
<author fullname="Paolo Lucente" initials="P." surname="Lucente">
<organization>NTT</organization>
<address>
<postal>
<street>Siriusdreef 70-72</street>
<city>Hoofddorp</city>
<region>WT</region>
<code>2132</code>
<country>Netherlands</country>
</postal>
<phone/>
<facsimile/>
<email>[email protected]</email>
<uri/>
</address>
</author>
<author fullname="Pierre Francois" initials="P." surname="Francois">
<organization>INSA-Lyon</organization>
<address>
<postal>
<street/>
<city>Lyon</city>
<code/>
<country>France</country>
</postal>
<email>[email protected]</email>
</address>
</author>
<author fullname="Yunan Gu" initials="Y. " surname="Gu">
<organization>Huawei</organization>
<address>
<postal>
<street>Huawei Bld., No.156 Beiqing Rd.</street>
<city>Beijing</city>
<code>100095</code>
<country>China</country>
</postal>
<email>[email protected]</email>
</address>
</author>
<author fullname="Thomas Graf" initials="T. " surname="Graf">
<organization>Swisscom</organization>
<address>
<postal>
<street>Binzring 17</street>
<city>Zurich</city>
<code>8045</code>
<country>Switzerland</country>
</postal>
<email>[email protected]</email>
</address>
</author>
<date day="16" month="September" year="2024"/>
<abstract>
<t>The BGP Monitoring Protocol (BMP) provides an interface for obtaining
BGP Path information. BGP Path Information is conveyed within BMP Route
Monitoring (RM) messages. This document proposes an extension to BMP to
convey the status of a path after being processed by the BGP process.
This extension makes use of the TLV mechanims described in <xref
target="I-D.ietf-grow-bmp-tlv">draft-ietf-grow-bmp-tlv</xref> and <xref
target="I-D.ietf-grow-bmp-tlv-ebit">draft-ietf-grow-bmp-tlv-ebit</xref>.
</t>
</abstract>
<note title="Requirements Language">
<t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
"OPTIONAL" in this document are to be interpreted as described in BCP 14
<xref target="RFC2119">RFC 2119</xref> <xref target="RFC8174">RFC
8174</xref> when, and only when, they appear in all capitals, as shown
here.</t>
</note>
</front>
<middle>
<section title="Introduction">
<t>For a given prefix, multiple paths with different path status, e.g.,
the "best-path", "back-up path", "invalid", and so on, may co-exist in
the BGP RIBs after being processed by the BGP decision process.
The path status information is currently not carried in the BGP Update
Message <xref target="RFC4271">RFC4271</xref> or in the BMP Update
Message <xref target="RFC7854">RFC7854</xref>.</t>
<t>External systems can use the path status for various applications.
The path status is commonly checked by operators when performing
troubleshooting. Having such status stored in a centralized system can
enable the development of tools that facilitate this process.
Optimisation systems can include the path status in their process, and
also use the status as a validation source (since it can compare the
calculated state to the actual outcome of the network, such as primary
and backup path). As a final example, path status information can
complement other centralized sources of data, for example, flow
collectors.</t>
<t>This document defines a so-called Path Status TLV to convey the BGP
path status to the BMP server. The BMP Path Status TLV is carried in the
BMP Route Monitoring (RM) Message.</t>
</section>
<section title="Path Status TLV">
<t>This document defines two types of Path Status TLVs: one is the
IANA-registered Path Status TLV, and the other is the
Enterprise-specific Path Status TLV.</t>
<section title="IANA-registered Path Status TLV">
<t><figure>
<artwork align="center"><![CDATA[ 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
+-------------------------------+-------------------------------+
|E| Type (15 bits) | Length (2 octets) |
+---------------------------------------------------------------+
| Index (2 octets) |
+-------------------------------+-------------------------------+
| Path Status (4 octets) |
+---------------------------------------------------------------+
| Reason Code (2 octets, optional) |
+---------------------------------------------------------------+
Figure 2: Encoding of IANA-Registered Path Status TLV ]]></artwork>
</figure><list style="symbols">
<t>E bit: For an IANA-registered TLV, the E bit MUST be set to
0 <xref target="I-D.ietf-grow-bmp-tlv-ebit"/>.</t>
<t>Type = TBD2 (15 Bits): indicates that it is the IANA-registered
Path Status TLV.</t>
<t>Length (2 Octets): indicates the length of the value field of
the Path Status TLV. The value field further consists of the
Path-Status field and Reason Code field.</t>
<t>Index (2 Octets): indicates the prefix that this TLV is describing.
Please see <xref target="I-D.ietf-grow-bmp-tlv"/> for details of
the use of the index field to associate the path marking content with one or
more NLRIs.</t>
<t>Path Status (4 Octets): indicates the path status of the BGP
Update PDU encapsulated in the RM Message. Currently 10 types of
path status are defined, as shown in Table 1. All zeros are
reserved.</t>
<t>Reason Code (2 Octets, optional): indicates the reason of
the path status indicated in the Path Status field. The reason
code field is optional. If no reason code is carried, this field
is empty. If a reason code is carried, the reason code is
indicated by a 2-byte value, which is defined in Table 2.</t>
</list><figure anchor="status_codes">
<artwork align="center"><![CDATA[+------------+-----------------------------+
| Value | Path type |
+------------------------------------------+
| 0x00000001 | Invalid |
| 0x00000002 | Best |
| 0x00000004 | Non-selected |
| 0x00000008 | Primary |
| 0x00000010 | Backup |
| 0x00000020 | Non-installed |
| 0x00000040 | Best-external |
| 0x00000080 | Add-Path |
| 0x00000100 | Filtered in inbound policy |
| 0x00000200 | Filtered in outbound policy |
| 0x00000400 | Invalid ROV |
| 0x00000800 | Stale |
| 0x00001000 | Suppressed |
+------------+-----------------------------+
Table 1: IANA-Registered Path Type ]]></artwork>
</figure>The Path Status field contains a bitmap where each bit
encodes a specific role of the path. Multiple bits may be set
when multiple path status apply to a path.</t>
<t><list style="symbols">
<t>The best-path is defined in <xref
target="RFC4271">RFC4271</xref> and the best-external path is
defined in <xref
target="I-D.ietf-idr-best-external">draft-ietf-idr-best-external</xref>.</t>
<t>An invalid path is a route that does not enter the BGP decision
process.</t>
<t>A non-selected path is a route that is not selected in the BGP
decision process. Back-up routes are considered non-selected,
while the best and ECMP routes are not considered as
non-selected.</t>
<t>A primary path is a recursive or non-recursive path whose
nexthop resolution ends with an adjacency <xref
target="I-D.ietf-rtgwg-bgp-pic">draft-ietf-rtgwg-bgp-pic</xref>. A
prefix can have more than one primary path if multipath is
configured <xref
target="I-D.lapukhov-bgp-ecmp-considerations">draft-lapukhov-bgp-ecmp-considerations</xref>.
A best-path is also considered as a primary path.</t>
<t>A backup path is also installed in the RIB, but it is not used
until some or all primary paths become unreachable. Backup paths
are used for fast convergence in the event of failures.</t>
<t>A non-installed path refers to the route that is not installed
into the IP routing table.</t>
<t>For the advertisement of multiple paths for the same address
prefix without the new paths implicitly replacing any previous
ones, the add-path status is applied <xref target="RFC7911"/>.</t>
<t>Stale refers to a path which has been declared stale by the BGP
Graceful Restart mechanism as described in Section 4.1 of <xref
target="RFC4724"/>.</t>
<t>Suppressed refers to a path which has been declared suppressed
by the BGP Route Flap Damping mechanism as described in Section
2.2 of <xref target="RFC2439"/>.</t>
</list>
The path status TLV does not force a BMP client to send any of
these paths. It just provides a method to mark the paths that are
available with their status.
<figure anchor="reasons_codes">
<artwork align="center"><![CDATA[+----------+-----------------------------------------------------+
| Value | Reason code |
+----------------------------------------------------------------+
| [0x0001] | invalid for AS loop |
| [0x0002] | invalid for unresolvable nexthop |
| [0x0003] | not preferred for Local preference |
| [0x0004] | not preferred for AS Path Length |
| [0x0005] | not preferred for origin |
| [0x0006] | not preferred for MED |
| [0x0007] | not preferred for peer type |
| [0x0008] | not preferred for IGP cost |
| [0x0009] | not preferred for router ID |
| [0x000A] | not preferred for peer address |
| [0x000B] | not preferred for AIGP |
+----------+-----------------------------------------------------+
Table 2: IANA-Registered Reason Code ]]></artwork>
</figure></t>
</section>
<section title="Enterprise-specific Path Status TLV">
<t><figure>
<artwork><![CDATA[ 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
+-------------------------------+-------------------------------+
|E| Type (15 bits) | Length (2 octets) |
+-------------------------------+-------------------------------+
| PEN number (4 octets) |
+---------------------------------------------------------------+
| Index (2 octets) |
+---------------------------------------------------------------+
| Path Status (4 octets) |
+---------------------------------------------------------------+
| Reason Code (2 octets, optional) |
+---------------------------------------------------------------+
Figure 3: Encoding of Enterprise-specific Path Status TLV]]></artwork>
</figure><list style="symbols">
<t>E bit: For an Enterprise-specific TLV, the E bit MUST be set to
1 <xref target="I-D.ietf-grow-bmp-tlv-ebit"/>.</t>
<t>Type = 1 (15 Bits): indicates that it's the Enterprise-specific
Path Status TLV.</t>
<t>Length (2 Octets): indicates the length of the value field of
the Path Status TLV. The value field further consists of the
Path-Status field and Reason Code field.</t>
<t>Index (2 Octets): indicates the prefix that this TLV is describing.
The index is the encapsulation order, starting from 0, of the
prefix in the BGP Update PDU.</t>
<t>PEN Number (4 octets): indicates the IANA enterprise number
IANA-PEN.</t>
<t>Path Status (4 Octets): indicates the enterprise-specific path
status. The format is to be determined w.r.t. each PEN number.</t>
<t>Reason Code (2 octets, optional): indicates the reasons/explanations of
the path status indicated in the Path Status field. The format is
to be determined w.r.t. each PEN number.</t>
</list></t>
</section>
</section>
<section title="Implementation notes">
<t>The BMP path marking TLV remains optional within BMP
implementations.</t>
<t>An implementation of the BMP path marking TLV may not fully support
marking of all status defined in table <xref target="status_codes"/> or
any future extensions. Similarly, an implementation may choose to
support the inclusion of the reason code (for which support is also
optional), without necessarily incorporating any of the reason codes
defined in table <xref target="reasons_codes"/> or future
extensions.</t>
<t>This document refrains from defining mechanisms for signaling the
status or reason codes an implementation supports. This could be
established through external means (e.g. documentation) or
potentially addressed in a subsequent document.</t>
<t>The remainder of this section encompasses additional points related
to the implementation of the BMP Path marking TLV.</t>
<section title="Configuration of BMP path marking">
<t>Implementations supporting the BMP path marking TLV SHOULD
provide an option for enabling or disabling the Path Marking
TLV over BMP sessions. Furthermore, the configuration options
for this TLV SHOULD provide the means to enable and disable the
transmission of reason codes, if the reason code are supported by the
implementation.</t>
</section>
<section title="Paths with no markings">
<t>Some BGP routes might not require any type of status or reasons.
For example, an unfiltered path obtained via the Adj-RIB-IN may
fall under this category since there is really nothing to mark for
that path. We suggest a couple of approaches for signaling
that a path has no markings: (1) An implicit form of marking,
achieved by abstaining from appending any BMP marking TLV pointing
toward the route. (2) Alternatively, an explicit marking of the
packet through a TLV containing no marked status and no associated
reason code.</t>
</section>
<section title="Significance of status and origin RIBs">
<t>This document refrains from imposing any implementation to mark
specific status from specific RIBs. We recognize the diversity
among implementations; some might be able to mark some status over
one RIB while other do it on others. For instance, some might be
able to mark Adj-RIB-in filtered routes when obtained from the
Adj-RIB-IN pre, while other could do it only from the Adj-RIB-IN
post. To remove ambiguities in implementations, we recommend the
meaning of status (and reason codes) to not depend on the
origin RIB of a route.</t>
</section>
<section title="Enterprise-specific status and reasons" anchor="ebit_mixed">
<t>Implementations introducing their own status and reason codes
are advised to adhere to <xref
target="I-D.ietf-grow-bmp-tlv-ebit"/> and use ebit and vendor
specific status and reasons. Additionally, we recommend all
implementations to provide comprehensive documentation for
these codes.</t>
<t>For scenarios where a path state combines a standard status with
an enterprise-specific reason code (or vice versa), the
following alternatives are presented:</t>
<t>
<ul spacing="compact">
<li>Replication of the standard
definitions within the enterprise-specific space, thus permitting
direct marking within the same packet using the ebit.</li>
<li>Assigning two TLVs to the same path(s): one containing the standard
part and another housing the vendor-specific part.</li>
</ul>
</t>
</section>
<section title="Multiple TLVs assigned to the same route.">
<t>We advocate for the employment of TLV grouping wherever
feasible. The inclusion of all marking information within a
single message is recommended, except on the case described in
section <xref target="ebit_mixed"/>. In situations where
multiple TLVs are associated with a single route, all
markings will be applicable to that route.</t>
</section>
</section>
<section title="Acknowledgments">
<t>We would like to thank Jeff Haas and Maxence Younsi for their
valuable comments.</t>
</section>
<section anchor="IANA" title="IANA Considerations">
<t>This document requests that IANA assign the following new parameters
to the BMP parameters name space.</t>
<t>Type = TBD1 (15 Bits): indicates that it is the IANA-registered Path
Status TLV.</t>
</section>
<section anchor="Security" title="Security Considerations">
<t>It is not believed that this document adds any additional security
considerations.</t>
</section>
</middle>
<back>
<references title="Normative References">
<?rfc include="reference.RFC.2119.xml"?>
<?rfc include="reference.RFC.8174.xml"?>
<?rfc include='reference.RFC.4271.xml'?>
<?rfc include='reference.RFC.7854.xml'?>
<?rfc include='reference.I-D.ietf-idr-best-external.xml'?>
<?rfc include='reference.I-D.ietf-grow-bmp-tlv.xml'?>
<?rfc include='reference.I-D.ietf-rtgwg-bgp-pic.xml'?>
<?rfc include='reference.I-D.lapukhov-bgp-ecmp-considerations.xml'?>
<?rfc include='reference.RFC.7911.xml'?>
<?rfc include='reference.RFC.4724.xml'?>
<?rfc include='reference.RFC.2439.xml'?>
<?rfc include='reference.I-D.ietf-grow-bmp-tlv-ebit.xml'?>
</references>
</back>
</rfc>