-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathdraft-ietf-lsvr-bgp-spf-14.xml
1913 lines (1762 loc) · 88 KB
/
draft-ietf-lsvr-bgp-spf-14.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
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<?xml version="1.0" encoding="US-ASCII"?>
<!-- This template is for creating an Internet Draft using xml2rfc,
which is available here: http://xml.resource.org. -->
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!-- One method to get references from the online citation libraries.
There has to be one entity for each item to be referenced.
An alternate method (rfc include) is described in the references. -->
<!ENTITY RFC1997 SYSTEM
"http://xml.resource.org/public/rfc/bibxml/reference.RFC.1997.xml">
<!ENTITY RFC2119 SYSTEM
"http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC2328 SYSTEM
"http://xml.resource.org/public/rfc/bibxml/reference.RFC.2328.xml">
<!ENTITY RFC2629 SYSTEM
"http://xml.resource.org/public/rfc/bibxml/reference.RFC.2629.xml">
<!ENTITY RFC3392 SYSTEM
"http://xml.resource.org/public/rfc/bibxml/reference.RFC.3392.xml">
<!ENTITY RFC3552 SYSTEM
"http://xml.resource.org/public/rfc/bibxml/reference.RFC.3552.xml">
<!ENTITY RFC4271 SYSTEM
"http://xml.resource.org/public/rfc/bibxml/reference.RFC.4271.xml">
<!ENTITY RFC4272 SYSTEM
"http://xml.resource.org/public/rfc/bibxml/reference.RFC.4272.xml">
<!ENTITY RFC4456 SYSTEM
"http://xml.resource.org/public/rfc/bibxml/reference.RFC.4456.xml">
<!ENTITY RFC4486 SYSTEM
"http://xml.resource.org/public/rfc/bibxml/reference.RFC.4486.xml">
<!ENTITY RFC4593 SYSTEM
"http://xml.resource.org/public/rfc/bibxml/reference.RFC.4593.xml">
<!ENTITY RFC4724 SYSTEM
"http://xml.resource.org/public/rfc/bibxml/reference.RFC.4724.xml">
<!ENTITY RFC4750 SYSTEM
"http://xml.resource.org/public/rfc/bibxml/reference.RFC.4750.xml">
<!ENTITY RFC4760 SYSTEM
"http://xml.resource.org/public/rfc/bibxml/reference.RFC.4760.xml">
<!ENTITY RFC4915 SYSTEM
"http://xml.resource.org/public/rfc/bibxml/reference.RFC.4915.xml">
<!ENTITY RFC5065 SYSTEM
"http://xml.resource.org/public/rfc/bibxml/reference.RFC.5065.xml">
<!ENTITY RFC5286 SYSTEM
"http://xml.resource.org/public/rfc/bibxml/reference.RFC.5286.xml">
<!ENTITY RFC5492 SYSTEM
"http://xml.resource.org/public/rfc/bibxml/reference.RFC.5492.xml">
<!ENTITY RFC5549 SYSTEM
"http://xml.resource.org/public/rfc/bibxml/reference.RFC.5549.xml">
<!ENTITY RFC5880 SYSTEM
"http://xml.resource.org/public/rfc/bibxml/reference.RFC.5880.xml">
<!ENTITY RFC5925 SYSTEM
"http://xml.resource.org/public/rfc/bibxml/reference.RFC.5925.xml">
<!ENTITY RFC6793 SYSTEM
"http://xml.resource.org/public/rfc/bibxml/reference.RFC.6793.xml">
<!ENTITY RFC6811 SYSTEM
"http://xml.resource.org/public/rfc/bibxml/reference.RFC.6811.xml">
<!ENTITY RFC6952 SYSTEM
"http://xml.resource.org/public/rfc/bibxml/reference.RFC.6952.xml">
<!ENTITY RFC7752 SYSTEM
"http://xml.resource.org/public/rfc/bibxml/reference.RFC.7752.xml">
<!ENTITY RFC7606 SYSTEM
"http://xml.resource.org/public/rfc/bibxml/reference.RFC.7606.xml">
<!ENTITY RFC7911 SYSTEM
"http://xml.resource.org/public/rfc/bibxml/reference.RFC.7911.xml">
<!ENTITY RFC7938 SYSTEM
"http://xml.resource.org/public/rfc/bibxml/reference.RFC.7938.xml">
<!ENTITY RFC7942 SYSTEM
"http://xml.resource.org/public/rfc/bibxml/reference.RFC.7942.xml">
<!ENTITY RFC8665 SYSTEM
"http://xml.resource.org/public/rfc/bibxml/reference.RFC.8665.xml">
<!ENTITY RFC8174 SYSTEM
"http://xml.resource.org/public/rfc/bibxml/reference.RFC.8174.xml">
<!ENTITY RFC8205 SYSTEM
"http://xml.resource.org/public/rfc/bibxml/reference.RFC.8205.xml">
<!ENTITY RFC8405 SYSTEM
"http://xml.resource.org/public/rfc/bibxml/reference.RFC.8405.xml">
<!ENTITY RFC8502 SYSTEM
"http://xml.resource.org/public/rfc/bibxml/reference.RFC.8502.xml">
<!ENTITY RFC8654 SYSTEM
"http://xml.resource.org/public/rfc/bibxml/reference.RFC.8654.xml">
<!ENTITY I-D.ietf-lsvr-applicability SYSTEM
"http://xml.resource.org/public/rfc/bibxml3/reference.I-D.draft-ietf-lsvr-applicability-05.xml">
<!ENTITY I-D.psarkar-lsvr-bgp-spf-impl SYSTEM
"http://xml.resource.org/public/rfc/bibxml3/reference.I-D.draft-psarkar-lsvr-bgp-spf-impl-00.xml">
]>
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
<!-- used by XSLT processors -->
<!-- For a complete list and description of processing instructions (PIs),
please see http://xml.resource.org/authoring/README.html. -->
<!-- Below are generally applicable Processing Instructions (PIs) that
most I-Ds might want to use.
(Here they are set differently than their defaults in xml2rfc v1.32) -->
<?rfc strict="yes" ?>
<!-- give errors regarding ID-nits and DTD validation -->
<!-- control the table of contents (ToC) -->
<?rfc toc="yes"?>
<!-- generate a ToC -->
<?rfc tocdepth="4"?>
<!-- the number of levels of subsections in ToC. default: 3 -->
<!-- control references -->
<?rfc symrefs="yes"?>
<!-- use symbolic references tags, i.e, [RFC2119] instead of [1] -->
<?rfc sortrefs="yes" ?>
<!-- sort the reference entries alphabetically -->
<!-- control vertical white space
(using these PIs as follows is recommended by the RFC Editor) -->
<?rfc compact="yes" ?>
<!-- do not start each main section on a new page -->
<?rfc subcompact="no" ?>
<!-- keep one blank line between list items -->
<!-- end of list of popular I-D processing instructions -->
<rfc category="std" docName="draft-ietf-lsvr-bgp-spf-14"
ipr="trust200902">
<!-- category values: std, bcp, info, exp, and historic
ipr values: full3667, noModification3667, noDerivatives3667
you can add the attributes updates="NNNN" and obsoletes="NNNN"
they will automatically be output with "(if approved)" -->
<!-- ***** FRONT MATTER ***** -->
<front>
<title abbrev="BGP Link-State SPF Routing">
BGP Link-State Shortest Path First (SPF) Routing</title>
<!-- add 'role="editor"' below for the editors if appropriate -->
<!-- Another author who claims to be an editor -->
<author fullname="Keyur Patel" initials="K"
surname="Patel">
<organization>Arrcus, Inc.</organization>
<address>
<email>[email protected]</email>
</address>
</author>
<author fullname="Acee Lindem" initials="A"
surname="Lindem">
<organization>Cisco Systems</organization>
<address>
<postal>
<street>301 Midenhall Way</street>
<city>Cary</city>
<region>NC</region>
<code>27513</code>
<country>USA</country>
</postal>
<email>[email protected]</email>
</address>
</author>
<author fullname="Shawn Zandi" initials="S"
surname="Zandi">
<organization>LinkedIn</organization>
<address>
<postal>
<street>222 2nd Street</street>
<city>San Francisco</city>
<region>CA</region>
<code>94105</code>
<country>USA</country>
</postal>
<email>[email protected]</email>
</address>
</author>
<author fullname="Wim Henderickx" initials="W"
surname="Henderickx">
<organization>Nokia</organization>
<address>
<postal>
<street></street>
<city>Antwerp</city>
<region></region>
<code></code>
<country>Belgium</country>
</postal>
<email>[email protected]</email>
</address>
</author>
<date/>
<!-- Meta-data Declarations -->
<area>General</area>
<workgroup>Network Working Group</workgroup>
<keyword>IDR</keyword>
<!-- Keywords will be incorporated into HTML output
files in a meta tag but they have no effect on text or nroff
output. If you submit your draft to the RFC Editor, the
keywords will be used for the search engine. -->
<abstract>
<t>
Many Massively Scaled Data Centers (MSDCs) have converged on simplified
layer 3 routing. Furthermore, requirements for operational simplicity
have led many of these MSDCs to converge on BGP as their single routing
protocol for both their fabric routing and their Data Center Interconnect
(DCI) routing. This document describes extensions to BGP to use BGP
Link-State distribution and the Shortest Path First (SPF) algorithm used
by Internal Gateway Protocols (IGPs) such as OSPF. In doing this, it allows
BGP to be efficiently used as both the underlay protocol and the overlay protocol in
MSDCs.
</t>
</abstract>
</front>
<middle>
<section anchor="introduction" title="Introduction">
<t>
Many Massively Scaled Data Centers (MSDCs) have converged on simplified
layer 3 routing. Furthermore, requirements for operational simplicity
have led many of these MSDCs to converge on BGP <xref target="RFC4271"/>
as their single routing protocol for both their fabric routing and
their Data Center Interconnect (DCI) routing <xref target="RFC7938"/>.
This document describes an alternative solution which leverages
BGP-LS <xref target="RFC7752"/> and the Shortest Path First algorithm used by
Internal Gateway Protocols (IGPs) such as OSPF <xref target="RFC2328"/>.
</t>
<t>This document leverages both the BGP protocol <xref target="RFC4271"/> and
the BGP-LS <xref target="RFC7752"/> protocols. The relationship, as well as
the scope of changes are described respectively in <xref target="BGP-base"/>
and <xref target="BGP-LS"/>. The modifications to <xref target="RFC4271"/>
for BGP SPF described herein only apply to IPv4 and IPv6 as underlay unicast
Subsequent Address Families Identifiers (SAFIs).
Operations for any other BGP SAFIs are outside the scope of this document.
</t>
<t>
This solution avails the benefits of both BGP and SPF-based IGPs.
These include TCP based flow-control, no periodic link-state refresh, and
completely incremental NLRI advertisement. These advantages can reduce the
overhead in MSDCs where there is a high degree of Equal Cost Multi-Path
(ECMPs) and the topology is very stable.
Additionally, using an SPF-based computation can support fast convergence and
the computation of Loop-Free Alternatives (LFAs). The SPF LFA extensions defined
in <xref target="RFC5286"/> can be similarly applied to BGP SPF calculations.
However, the details are a matter of implementation detail.
Furthermore, a BGP-based solution lends itself to multiple peering models
including those incorporating route-reflectors <xref target="RFC4456"/>
or controllers.
</t>
<section anchor="terms" title="Terminology">
<t>This specification reuses terms defined in section 1.1 of <xref target="RFC4271"/>
including BGP speaker, NLRI, and Route.</t>
<t>Additionally, this document introduces the following terms:
<list style="hanging">
<t hangText="BGP SPF Routing Domain:"> A set of BGP routers that are under a single
administrative domain and exchange link-state information using the BGP-LS-SPF SAFI
and compute routes using BGP SPF as described herein.</t>
<t hangText="BGP-LS-SPF NLRI:"> This refers to BGP-LS Network Layer Reachability
Information (NLRI) that is being advertised in the BGP-LS-SPF SAFI (<xref target="SAFI"/>)
and is being used for BGP SPF route computation.</t>
<t hangText="Dijkstra Algorithm:"> An algorithm for computing the shortest path from
a given node in a graph to every other node in the graph. At each iteration of the
algorithm, there is a list of candidate vertices. Paths from the root to these
vertices have been found, but not necessarily the shortest ones. However, the paths
to the candidate vertex that is closest to the root are guaranteed to be shortest; this
vertex is added to the shortest-path tree, removed from the
candidate list, and its adjacent vertices are examined for
possible addition to/modification of the candidate list. The
algorithm then iterates again. It terminates when the candidate
list becomes empty. <xref target="RFC2328"/></t>
</list></t>
</section>
<section title="BGP Shortest Path First (SPF) Motivation">
<t>
Given that <xref target="RFC7938"/> already describes how BGP could be used
as the sole routing protocol in an MSDC, one might question the motivation for
defining an alternate BGP deployment model when a mature solution exists.
For both alternatives, BGP offers the operational benefits of a single
routing protocol as opposed to the combination of an IGP for the underlay
and BGP as an overlay. However, BGP SPF offers some unique advantages above
and beyond standard BGP distance-vector routing. With BGP SPF, the standard
hop-by-hop peering model is relaxed.
</t>
<t>
A primary advantage is that all BGP SPF speakers in the BGP SPF routing domain
will have a complete view of the topology. This will allow support for ECMP,
IP fast-reroute (e.g., Loop-Free Alternatives), Shared Risk Link Groups
(SRLGs), and other routing enhancements without advertisement of additional
BGP paths <xref target="RFC7911"/> or other extensions. In short, the advantages
of an IGP such as OSPF <xref target="RFC2328"/> are availed in BGP.
</t>
<t>
With the simplified BGP decision process as defined in
<xref target="bgp-decision"/>, NLRI changes can be disseminated throughout the BGP
routing domain much more rapidly (equivalent to IGPs with the proper
implementation). The added advantage of BGP using TCP for reliable transport leverages
TCP's inherent flow-control and guaranteed in-order delivery.
</t>
<t>
Another primary advantage is a potential reduction in NLRI advertisement.
With standard BGP distance-vector routing, a single link failure may impact
100s or 1000s prefixes and result in the withdrawal or re-advertisement of
the attendant NLRI. With BGP SPF, only the BGP SPF speakers corresponding to
the link NLRI need to withdraw the corresponding BGP-LS-SPF Link NLRI. Additionally,
the changed NLRI will be advertised immediately as opposed to normal BGP where it
is only advertised after the best route selection. These advantages will afford
NLRI dissemination throughout the BGP SPF routing domain with efficiencies similar
to link-state protocols.
</t>
<t>
With controller and route-reflector peering models, BGP SPF advertisement
and distributed computation require a minimal number of sessions and
copies of the NLRI since only the latest version of the NLRI from the
originator is required. Given that verification of the adjacencies is done
outside of BGP (see <xref target="peering-models"/>), each BGP SPF speaker will
only need as many sessions and copies of the NLRI as required for
redundancy (see <xref target="peering-models"/>).
Additionally, a controller could inject topology that
is learned outside the BGP SPF routing domain.
</t>
<t>
Given that controllers are already consuming BGP-LS NLRI
<xref target="RFC7752"/>, this functionality can be reused for BGP-LS-SPF NLRI.
</t>
<t>
Another advantage of BGP SPF is that both IPv6 and IPv4 can
be supported using the BGP-LS-SPF SAFI with the same BGP-LS-SPF NLRIs. In many
MSDC fabrics, the IPv4 and IPv6 topologies are congruent, refer to
<xref target="Link-NLRI"/> and <xref target="Prefix-NLRI"/>.
Although beyond the scope of this document, multi-topology extensions could
be used to support separate IPv4, IPv6, unicast, and multicast topologies
while sharing the same NLRI.
</t>
<t>
Finally, the BGP SPF topology can be used as an underlay for other BGP
SAFIs (using the existing model) and realize all the above
advantages.
</t>
</section>
<section title="Document Overview">
<t>
The document begins with sections defining the precise relationship that BGP SPF has
with both the base BGP protocol <xref target="RFC4271"/> (<xref target="BGP-base"/>) and the
BGP Link-State (BGP-LS) extensions <xref target="RFC7752"/>
(<xref target="BGP-LS"/>). This is required to dispel the
notion that BGP SPF is an independent protocol. The BGP peering models, as well as the
their respective trade-offs are then discussed in
<xref target="peering-models"/>. The remaining sections, which make up the bulk of the
document, define the protocol enhancements necessary to support BGP SPF. The BGP-LS extensions
to support BGP SPF are
defined in <xref target="protocol-extend"/>. The replacement of the base BGP decision process
with the SPF computation is specified in <xref target="bgp-decision"/>. Finally, BGP SPF error
handling is defined in <xref target="error-handling"/>
</t>
</section>
<section 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"/> <xref target="RFC8174"/>
when, and only when, they appear in all capitals, as shown here.</t>
</section>
</section> <!-- for Introductions section -->
<section anchor="BGP-base" title="Base BGP Protocol Relationship">
<t>
With the exception of the decision process, the BGP SPF extensions leverage the BGP
protocol <xref target="RFC4271"/> without change. This includes the BGP protocol
Finite State Machine, BGP messages and their encodings, processing of BGP messages,
BGP attributes and path attributes, BGP NLRI encodings, and any error handling
defined in the <xref target="RFC4271"/> and
<xref target="RFC7606"/>.
</t>
<t>
Due to the changes to the decision
process, there are mechanisms and encodings that are no longer applicable.
While not necessarily required for computation, the ORIGIN, AS_PATH,
MULTI_EXIT_DISC, LOCAL_PREF, and NEXT_HOP path attributes are mandatory and will
be validated. The ATOMIC_AGGEGATE, and AGGREGATOR are not applicable within the
context of BGP SPF and SHOULD NOT be advertised. However, if they are advertised,
they will be accepted, validated,
and propagated consistent with the BGP protocol.
</t>
<t>
Section 9 of <xref target="RFC4271"/> defines the decision process that
is used to select routes for subsequent advertisement
by applying the policies in the local Policy Information Base (PIB) to the
routes stored in its Adj-RIBs-In. The output of the Decision Process is the
set of routes that are announced by a BGP speaker to its peers. These
selected routes are stored by a BGP speaker in the speaker's Adj-RIBs-Out
according to policy.
</t>
<t>
The BGP SPF extension fundamentally changes the decision process, as described
herein, to be more like a link-state protocol
(e.g., OSPF <xref target="RFC2328"/>). Specifically:
<list style="numbers">
<t>
BGP advertisements are readvertised to neighbors immediately without waiting
or dependence on the route computation as specified in phase 3 of the base BGP
decision process. Multiple peering models are supported as specified in
<xref target="peering-models"/>.
</t>
<t>
Determining the degree of preference for BGP routes for the SPF calculation as
described in phase 1 of the base BGP decision process is replaced with the mechanisms
in <xref target="Phase-1"/>.
</t>
<t>
Phase 2 of the base BGP protocol decision process is replaced with the
Shortest Path First (SPF) algorithm, also known as the Dijkstra algorithm
<xref target="terms"/>.
</t>
</list>
</t>
</section> <!-- for BGP relationship section -->
<section anchor="BGP-LS" title="BGP Link-State (BGP-LS) Relationship">
<t>
<xref target="RFC7752"/> describes a mechanism by which link-state and TE information can
be collected from networks and shared with external entities using BGP.
This is achieved by defining NLRI advertised using the BGP-LS AFI. The BGP-LS extensions defined in
<xref target="RFC7752"/> make use of the decision process defined in
<xref target="RFC4271"/>. This document reuses NLRI and TLVs defined in <xref target="RFC7752"/>.
Rather than reusing the BGP-LS SAFI, the BGP-LS-SPF SAFI
<xref target="SAFI"/> is introduced to insure backward compatibility for the BGP-LS SAFI usage.
</t>
<t>
The BGP SPF extensions reuse the Node, Link, and Prefix NLRI defined
in <xref target="RFC7752"/>. The usage of the BGP-LS
NLRI, attributes, and attribute extensions is described in
<xref target="NLRI-Use"/>. The usage of others BGP-LS attributes is not precluded and is,
in fact, expected. However, the details are beyond the scope of this document and will be
specified in future documents.
</t>
<t>
Support for Multiple Topology Routing (MTR) similar to the OSPF MTR computation described in
<xref target="RFC4915"/> is beyond the scope of this document. Consequently, the usage of the
Multi-Topology TLV as described in section 3.2.1.5 of <xref target="RFC7752"/> is not specified.
</t>
<t>
The rules for setting the NLRI next-hop path attribute for the BGP-LS-SPF SAFI will follow
the BGP-LS SAFI as specified in section 3.4 of <xref target="RFC7752"/>.
</t>
</section> <!-- for BGP-LS relationship section -->
<section anchor="peering-models" title="BGP Peering Models">
<t>
Depending on the topology, scaling, capabilities of the BGP SPF speakers, and redundancy
requirements, various peering models are supported. The only requirements are that all BGP
SPF speakers in the BGP SPF routing domain exchange BGP-LS-SPF NLRI, run an SPF calculation,
and update their routing table appropriately.
</t>
<section title="BGP Single-Hop Peering on Network Node Connections">
<t>
The simplest peering model is the one where
EBGP single-hop sessions are established over direct point-to-point links
interconnecting the nodes in the BGP SPF routing domain. Once the single-hop BGP session has been
established and the BGP-LS-SPF AFI/SAFI capability has been exchanged
<xref target="RFC4760"/> for the corresponding session, then the link is considered up from
a BGP SPF perspective and the corresponding BGP-LS-SPF Link NLRI is advertised.
If the session goes down, the corresponding Link NLRI will be withdrawn. Topologically,
this would be equivalent to the peering model in <xref target="RFC7938"/> where there
is a BGP session on every link in the data center switch fabric. The content of the Link NLRI
is described in <xref target="Link-NLRI"/>.
</t>
</section>
<section title="BGP Peering Between Directly-Connected Nodes">
<t>
In this model, BGP SPF speakers peer with all directly-connected
nodes but the sessions may be between loopback addresses (i.e.,
two-hop sessions) and the direct connection
discovery and liveliness detection for the interconnecting links are
independent of the BGP protocol.
For example, liveliness detection could be
done using the BFD protocol <xref target="RFC5880"/>. Precisely how discovery
and liveliness detection is accomplished is outside the scope of this document.
Consequently, there will be a single BGP session even if there are multiple
direct connections between BGP SPF speakers. BGP-LS-SPF Link NLRI is advertised
as long as a BGP session has been established, the BGP-LS-SPF AFI/SAFI
capability has been exchanged <xref target="RFC4760"/>, and
the link is operational as determined using liveliness detection mechanisms
outside the scope of this document.
This is much like the previous peering model only peering is between
loopback addresses and the interconnecting links can be unnumbered. However,
since there are BGP sessions between every directly-connected node in the
BGP SPF routing domain, there is only a reduction in BGP sessions when there
are parallel links between nodes.
</t>
</section>
<section title="BGP Peering in Route-Reflector or Controller Topology">
<t>
In this model, BGP SPF speakers peer solely with one or more Route Reflectors
<xref target="RFC4456"/> or controllers. As in the previous model, direct
connection discovery and liveliness detection for those links in the BGP
SPF routing domain are done outside of the BGP protocol.
BGP-LS-SPF Link NLRI is advertised as long as the corresponding link is
considered up as per the chosen liveness detection mechanism.
</t>
<t>
This peering model, known as sparse peering, allows for fewer BGP sessions
and, consequently, fewer instances of the same NLRI received from multiple peers.
Normally, the route-reflectors or controller BGP sessions would be on directly-connected
links to avoid dependence on another routing protocol for session connectivity. However,
multi-hop peering is not precluded. The number of BGP sessions is dependent
on the redundancy requirements and the stability of the BGP sessions. This is
discussed in greater detail in <xref target="I-D.ietf-lsvr-applicability"/>.
</t>
</section>
</section>
<section anchor="protocol-extend" title="BGP Shortest Path Routing (SPF) Protocol Extensions">
<section anchor="SAFI" title="BGP-LS Shortest Path Routing (SPF) SAFI">
<t>
In order to replace the existing BGP decision process with an SPF-based decision process
in a backward compatible manner by not impacting the BGP-LS SAFI, this document
introduces the BGP-LS-SPF SAFI.
The BGP-LS-SPF (AFI 16388 / SAFI 80) <xref target="RFC4760"/> is allocated by IANA
as specified in the <xref target="IANA"/>.
In order for two BGP SPF speakers to exchange BGP SPF NLRI, they MUST exchange
the Multiprotocol Extensions Capability <xref target="RFC5492"/> <xref target="RFC4760"/>
to ensure that they are both capable of properly processing such NLRI. This is done with
AFI 16388 / SAFI 80 for BGP-LS-SPF advertised within the BGP SPF Routing Domain.
The BGP-LS-SPF SAFI is used to carry
IPv4 and IPv6 prefix information in a format facilitating an SPF-based
decision process.
</t>
<section anchor="BGP-LS-TLV" title="BGP-LS-SPF NLRI TLVs">
<t>
The NLRI format of BGP-LS-SPF SAFI uses exactly same format as the BGP-LS AFI
<xref target="RFC7752"/>. In other words,
all the TLVs used in BGP-LS AFI are applicable and used for the BGP-LS-SPF SAFI.
These TLVs within BGP-LS-SPF NLRI advertise information that describes links,
nodes, and prefixes comprising IGP link-state information.
</t>
<t>
In order to compare the NLRI efficiently, it is REQUIRED that all the TLVs within
the given NLRI must be ordered in ascending order by the TLV type. For multiple
TLVs of same type within a single NLRI, it is REQUIRED that these TLVs are ordered
in ascending order by the TLV value field. Comparison of the value fields is
performed by treating the entire value field as a hexadecimal string. NLRIs
having TLVs which do not follow the ordering rules MUST be considered as malformed and
discarded with appropriate error logging.
</t>
<t>
<xref target="RFC7752"/> defines certain NLRI TLVs as a mandatory TLVs. These TLVs
are considered mandatory for the BGP-LS-SPF SAFI as well. All the other TLVs are considered
as an optional TLVs.
</t>
<t>
Given that there is a single BGP-LS Attribute for all the BGP-LS-SPF NLRI in a
BGP Update, Section 3.3, <xref target="RFC7752"/>, a BGP Update will
normally contain a single BGP-LS-SPF NLRI since advertising multiple NLRI
would imply identical attributes.
</t>
</section>
<section title="BGP-LS Attribute">
<t>
The BGP-LS attribute of the BGP-LS-SPF SAFI uses exactly same format of the BGP-LS AFI
<xref target="RFC7752"/>. In
other words, all the TLVs used in BGP-LS attribute of the BGP-LS AFI are applicable
and used for the BGP-LS attribute of the BGP-LS-SPF SAFI. This attribute is an optional,
non-transitive BGP attribute that is used to carry link, node, and prefix
properties and attributes. The BGP-LS attribute is a set of TLVs.
</t>
<t>
The BGP-LS attribute may potentially grow large in size depending on
the amount of link-state information associated with a single Link-
State NLRI. The BGP specification <xref target="RFC4271"/> mandates a maximum BGP
message size of 4096 octets. It is RECOMMENDED that an
implementation support <xref target="RFC8654"/> in order to accommodate larger size
of information within the BGP-LS Attribute. BGP SPF speakers MUST
ensure that they limit the TLVs included in the BGP-LS Attribute to
ensure that a BGP update message for a single Link-State NLRI does
not cross the maximum limit for a BGP message. The determination of
the types of TLVs to be included by the BGP SPF speaker
originating the attribute is outside the scope of this document.
When a BGP SPF speaker finds that it
is exceeding the maximum BGP message size due to addition or update
of some other BGP Attribute (e.g., AS_PATH), it MUST consider the
BGP-LS Attribute to be malformed and the attribute discard handling of
<xref target="RFC7606"/> applies.
</t>
<t>
In order to compare the BGP-LS attribute efficiently, it is REQUIRED that all the
TLVs within the given attribute must be ordered in ascending order by
the TLV type. For multiple TLVs of same type within a single attribute, it is
REQUIRED that these TLVs are ordered in ascending order by the TLV value field.
Comparison of the value fields is performed by treating the entire value field
as a hexadecimal string. Attributes having TLVs which do not follow the ordering
rules MUST NOT be considered as malformed.
</t>
<t>
All TLVs within the BGP-LS Attribute are considered optional unless specified otherwise.
</t>
</section>
</section>
<section anchor="NLRI-Use" title="Extensions to BGP-LS">
<t>
<xref target="RFC7752"/> describes a mechanism by which link-state and TE
information can be collected from IGPs and shared with external components
using the BGP protocol. It describes both the definition of the BGP-LS NLRI
that advertise links, nodes, and prefixes comprising IGP link-state
information and the definition of a BGP path attribute (BGP-LS
attribute) that carries link, node, and prefix properties and
attributes, such as the link and prefix metric or auxiliary
Router-IDs of nodes, etc. This document extends the usage of BGP-LS NLRI for
the purpose of BGP SPF calculation via advertisement in the BGP-LS-SPF SAFI.
</t>
<t>
The protocol identifier specified in the Protocol-ID field <xref target="RFC7752"/>
will represent the origin of the advertised NLRI. For Node NLRI and Link NLRI,
this MUST be the direct protocol (4). Node or Link NLRI with a Protocol-ID other than
direct will be considered malformed. For Prefix NLRI, the specified Protocol-ID
MUST be the origin of the prefix. The local and remote node descriptors for all NLRI MUST
include the BGP Identifier (TLV 516) and the AS Number (TLV 512)
<xref target="RFC7752"/>. The BGP Confederation Member (TLV 517)
<xref target="RFC7752"/> is not appliable and SHOULD not be included. If TLV 517
is included, it will be ignored.
</t>
<section title="Node NLRI Usage">
<t>
The Node NLRI MUST be advertised unconditionally by all routers in
the BGP SPF routing domain.
</t>
<section anchor="node-spf-cap-tlv" title="BGP-LS-SPF Node NLRI Attribute SPF Capability TLV">
<t>
The SPF capability is an additional Node Attribute TLV.
This attribute TLV MUST be included with the
BGP-LS-SPF SAFI and SHOULD NOT be used for other SAFIs.
The TLV type 1180 will be assigned by IANA. The Node
Attribute TLV will contain a single-octet SPF algorithm as defined
in <xref target="RFC8665"/>.
</t>
<t>
<figure align="center">
<artwork align="left"><![CDATA[
0 1 2 3
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 (1180) | Length - (1 Octet) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| SPF Algorithm |
+-+-+-+-+-+-+-+-+
]]></artwork>
</figure>
</t>
<t>The SPF algorithm inherits the values from the IGP Algorithm Types
registry <xref target="RFC8665"/>. Algorithm 0, (Shortest Path Algorithm (SPF)
based on link metric, is supported and described in <xref target="BGP-SPF"/>.
Support for other algorithm types is beyond the scope of this specification.
</t>
<t>
When computing the SPF for a given BGP routing domain, only BGP nodes
advertising the SPF capability TLV with same SPF algorithm
will be included in the Shortest Path Tree (SPT) <xref target="BGP-SPF"/>.
An implementation MAY optionally
log detection of a BGP node that has either not advertised the SPF capability TLV
or is advertising the SPF capability TLV with an algorithm type other than 0.
</t>
</section>
<section anchor="node-status-tlv" title="BGP-LS-SPF Node NLRI Attribute SPF Status TLV">
<t>
A BGP-LS Attribute TLV of the BGP-LS-SPF Node NLRI is defined to indicate the status of
the node with respect to the BGP SPF calculation. This will be used to rapidly take a
node out of service <xref target="node-failure"/> or to indicate the node is not to be
used for transit (i.e., non-local) traffic <xref target="BGP-SPF"/>. If the
SPF Status TLV is not included with the Node NLRI, the node is considered to be up
and is available for transit traffic. The SPF status is acted upon with the execution of
the next SPF calculation <xref target="BGP-SPF"/>.
A single TLV type will be shared by the BGP-LS-SPF Node, Link, and Prefix NLRI.
The TLV type 1184 will be assigned by IANA.
</t>
<t>
<figure align="center">
<artwork align="left"><![CDATA[
0 1 2 3
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 (1184) | Length (1 Octet) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| SPF Status |
+-+-+-+-+-+-+-+-+
BGP Status Values: 0 - Reserved
1 - Node Unreachable with respect to BGP SPF
2 - Node does not support transit with respect
to BGP SPF
3-254 - Undefined
255 - Reserved
]]></artwork>
</figure>
</t>
<t>
The BGP-LS-SPF Node Attribute SPF Status TLV, Link Attribute SPF Status TLV,
and Prefix Attribute SPF Status TLV use the same TLV Type (1184). This implies
that a BGP Update cannot contain multiple NLRI with differing status.
If the BGP-LS-SPF Status TLV is advertised and the advertised value is not defined
for all NLRI included in the BGP update, then the SPF Status TLV is ignored
and not used in SPF computation but is still announced to other BGP SPF speakers.
An implementation MAY log an error for further analysis.
</t>
<t>
If a BGP SPF speaker received the Node NLRI but
the SPF Status TLV is not received, then any previously received information is
considered as implicitly withdrawn and the update is propagated to other BGP SPF speakers.
A BGP SPF speaker receiving a BGP Update containing
a SPF Status TLV in the BGP-LS attribute <xref target="RFC7752"/> with a value
that is outside the range of defined values SHOULD be processed and announced to other
BGP SPF speakers. However, a BGP SPF speaker MUST NOT use the Status TLV in its SPF computation.
An implementation MAY log this condition for further analysis.
</t>
</section>
</section>
<section anchor="Link-NLRI" title="Link NLRI Usage">
<t>
The criteria for advertisement of Link NLRI are discussed in
<xref target="peering-models"/>.
</t>
<t>
Link NLRI is advertised with unique local and remote node descriptors
dependent on the IP addressing. For IPv4 links, the
link's local IPv4 (TLV 259) and remote IPv4 (TLV 260) addresses will be used.
For IPv6 links, the local IPv6 (TLV 261) and remote IPv6 (TLV 262) addresses
will be used. For unnumbered links, the link local/remote identifiers (TLV 258)
will be used. For links supporting having both IPv4 and IPv6 addresses, both sets
of descriptors MAY be included in the same Link NLRI. The link identifiers are
described in table 5 of <xref target="RFC7752"/>.
</t>
<t>
For a link to be used in Shortest Path Tree (SPT) for a given address family,
i.e., IPv4 or IPv6, both routers connecting the link MUST have an address in the
same subnet for that address family. However, an IPv4 or IPv6 prefix associated
with the link MAY be installed without the corresponding address on the other
side of link.
</t>
<t>
The link IGP metric attribute TLV (TLV 1095) MUST be advertised. If a BGP SPF speaker
receives a Link NLRI without an IGP metric attribute TLV, then it SHOULD consider
the received NLRI as a malformed and the receiving BGP SPF speaker MUST handle such
malformed NLRI as 'Treat-as-withdraw' <xref target="RFC7606"/>.
The BGP SPF metric length is 4 octets.
Like OSPF <xref target="RFC2328"/>, a cost is associated with the output side of each
router interface. This cost is configurable by the system administrator. The
lower the cost, the more likely the interface is to be used to forward data traffic.
One possible default for metric would be to give each interface a cost of 1
making it effectively a hop count.
Algorithms such as setting the metric inversely to the link speed as supported in the
OSPF MIB <xref target="RFC4750"/> MAY be supported. However, this is beyond the scope
of this document. Refer to <xref target="link-metric-config"/> for
operational guidance.
</t>
<t>
The usage of other link attribute TLVs is beyond the scope of this document.
</t>
<section title="BGP-LS-SPF Link NLRI Attribute Prefix-Length TLVs">
<t>
Two BGP-LS Attribute TLVs of the BGP-LS-SPF Link NLRI are defined to advertise the prefix length
associated with the IPv4 and IPv6 link prefixes derived from the link descriptor addresses.
The prefix length is used for the optional installation of prefixes corresponding to
Link NLRI as defined in <xref target="BGP-SPF"/>.
</t>
<t>
<figure align="center">
<artwork align="left"><![CDATA[
0 1 2 3
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|IPv4 (1182) or IPv6 Type (1183)| Length (1 Octet) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Prefix-Length |
+-+-+-+-+-+-+-+-+
Prefix-length - A one-octet length restricted to 1-32 for IPv4
Link NLRI endpoint prefixes and 1-128 for IPv6
Link NLRI endpoint prefixes.
]]></artwork>
</figure>
</t>
<t>
The Prefix-Length TLV is only relevant to Link NLRIs. The Prefix-Length TLVs MUST be
discarded as an error and not passed to other BGP peers as
specified in <xref target="RFC7606"/> when received with any NLRIs other
than Link NRLIs. An implementation MAY log an error for further analysis.
</t>
<t>
The maximum prefix-length for IPv4 Prefix-Length TLV is 32 bits. A prefix-length field
indicating a larger value than 32 bits MUST be discarded as an error and the
received TLV is not passed to other BGP peers as
specified in <xref target="RFC7606"/>. The corresponding Link NLRI is
considered as malformed and MUST be handled as 'Treat-as-withdraw'. An
implementation MAY log an error for further analysis.
</t>
<t>
The maximum prefix-length for IPv6 Prefix-Length Type is 128 bits. A prefix-length field
indicating a larger value than 128 bits MUST be discarded as an error and the
received TLV is not passed to other BGP peers as
specified in <xref target="RFC7606"/>. The corresponding Link NLRI is
considered as malformed and MUST be handled as 'Treat-as-withdraw'. An
implementation MAY log an error for further analysis.
</t>
</section>
<section anchor="link-status-tlv" title="BGP-LS-SPF Link NLRI Attribute SPF Status TLV">
<t>
A BGP-LS Attribute TLV of the BGP-LS-SPF Link NLRI is defined to indicate the status of
the link with respect to the BGP SPF calculation. This will be used to expedite
convergence for link failures as discussed in <xref target="failure-converge"/>. If the
SPF Status TLV is not included with the Link NLRI, the link is considered
up and available. The SPF status is acted upon with the execution of the
next SPF calculation <xref target="BGP-SPF"/>.
A single TLV type will be shared by the Node, Link, and Prefix NLRI.
The TLV type 1184 will be assigned by IANA.
</t>
<t>
<figure align="center">
<artwork align="left"><![CDATA[
0 1 2 3
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 (1184) | Length (1 Octet) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| SPF Status |
+-+-+-+-+-+-+-+-+
BGP Status Values: 0 - Reserved
1 - Link Unreachable with respect to BGP SPF
2-254 - Undefined
255 - Reserved
]]></artwork>
</figure>
</t>
<t>
The BGP-LS-SPF Node Attribute SPF Status TLV, Link Attribute SPF Status TLV,
and Prefix Attribute SPF Status TLV use the same TLV Type (1184). This implies
that a BGP Update cannot contain multiple NLRI with differing status.
If the BGP-LS-SPF Status TLV is advertised and the advertised value is not defined
for all NLRI included in the BGP update, then the SPF Status TLV is ignored
and not used in SPF computation but is still announced to other BGP SPF speakers.
An implementation MAY log an error for further analysis.
</t>
<t>
If a BGP SPF speaker received the Link NLRI but
the SPF Status TLV is not received, then any previously received information is
considered as implicitly withdrawn and the update is propagated to other BGP SPF speakers.
A BGP SPF speaker receiving a BGP Update containing
an SPF Status TLV in the BGP-LS attribute <xref target="RFC7752"/> with a value
that is outside the range of defined values SHOULD be processed and announced to other
BGP SPF speakers. However, a BGP SPF speaker MUST NOT use the Status TLV in its SPF computation.
An implementation MAY log this information for further analysis.
</t>
</section>
</section>
<section anchor="Prefix-NLRI" title="IPv4/IPv6 Prefix NLRI Usage">
<t>
IPv4/IPv6 Prefix NLRI is advertised with a Local Node Descriptor and
the prefix and length. The Prefix Descriptors field includes the IP Reachability
Information TLV (TLV 265) as described in <xref target="RFC7752"/>.
The Prefix Metric attribute TLV (TLV 1155) MUST be advertised.
The IGP Route Tag TLV (TLV 1153) MAY be advertised. The usage of other
attribute TLVs is beyond the scope of this document. For loopback prefixes, the metric
should be 0. For non-loopback prefixes, the setting of the metric is a local matter and
beyond the scope of this document.
</t>
<section anchor="prefix-status-tlv" title="BGP-LS-SPF Prefix NLRI Attribute SPF Status TLV">
<t>
A BGP-LS Attribute TLV to BGP-LS-SPF Prefix NLRI is defined to indicate the status of
the prefix with respect to the BGP SPF calculation. This will be used to expedite
convergence for prefix unreachability as discussed in <xref target="failure-converge"/>.
If the SPF Status TLV is not included with the Prefix NLRI, the prefix is considered
reachable.
A single TLV type will be shared by the Node, Link, and Prefix NLRI.
The TLV type 1184 will be assigned by IANA.
</t>
<t>
<figure align="center">
<artwork align="left"><![CDATA[
0 1 2 3
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 (1184) | Length (1 Octet) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| SPF Status |
+-+-+-+-+-+-+-+-+
BGP Status Values: 0 - Reserved
1 - Prefix Unreachable with respect to SPF
2-254 - Undefined
255 - Reserved
]]></artwork>
</figure>
</t>
<t>
The BGP-LS-SPF Node Attribute SPF Status TLV, Link Attribute SPF Status TLV,
and Prefix Attribute SPF Status TLV use the same TLV Type (1184). This implies
that a BGP Update cannot contain multiple NLRI with differing status.
If the BGP-LS-SPF Status TLV is advertised and the advertised value is not defined
for all NLRI included in the BGP update, then the SPF Status TLV is ignored
and not used in SPF computation but is still announced to other BGP SPF speakers.
An implementation MAY log an error for further analysis.
</t>
<t>
If a BGP SPF speaker received the Prefix NLRI but
the SPF Status TLV is not received, then any previously received information is
considered as implicitly withdrawn and the update is propagated to other BGP SPF speakers.
A BGP SPF speaker receiving a BGP Update containing
an SPF Status TLV in the BGP-LS attribute <xref target="RFC7752"/> with a value
that is outside the range of defined values SHOULD be processed and announced to other
BGP SPF speakers. However, a BGP SPF speaker MUST NOT use the Status TLV in its
SPF computation. An implementation MAY log this information for further analysis.
</t>
</section>
</section>
<section title="BGP-LS Attribute Sequence-Number TLV">
<t>
A BGP-LS Attribute TLV of the BGP-LS-SPF NLRI types is defined to assure the most
recent version of a given NLRI is used in the SPF computation. The Sequence-Number TLV is
mandatory for BGP-LS-SPF NLRI.
The TLV type 1181 has been assigned by IANA. The BGP-LS
Attribute TLV will contain an 8-octet sequence number. The usage of the Sequence Number TLV
is described in <xref target="Phase-1"/>.
</t>
<t>
<figure align="center">
<artwork align="left"><![CDATA[
0 1 2 3
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 (1181) | Length (8 Octets) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Sequence Number (High-Order 32 Bits) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Sequence Number (Low-Order 32 Bits) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
</figure>
</t>
<t>
Sequence Number <vspace blankLines="1" />
The 64-bit strictly-increasing sequence number MUST be incremented for every
self-originated version of BGP-LS-SPF NLRI. BGP SPF speakers implementing this specification
MUST use available mechanisms to preserve the sequence number's strictly increasing property
for the deployed life of the BGP SPF speaker (including cold restarts).
One mechanism for accomplishing this would be to use the high-order 32 bits of the
sequence number as a wrap/boot count that is incremented any time the BGP router
loses its sequence number state or the low-order 32 bits wrap.
</t>
<t>
When incrementing the sequence number for each self-originated NLRI,
the sequence number should be treated as an unsigned 64-bit
value. If the lower-order 32-bit value wraps, the higher-order 32-bit value should
be incremented and saved in non-volatile storage. If a BGP SPF speaker completely
loses its sequence number state (e.g., the BGP SPF speaker hardware
is replaced or experiences a cold-start), the BGP NLRI selection rules
(see <xref target="Phase-1"/>) will insure convergence, albeit not immediately.
</t>
<t>
The Sequence-Number TLV is mandatory for BGP-LS-SPF NLRI. If the Sequence-Number TLV
is not received then the corresponding Link NLRI is considered as malformed and
MUST be handled as 'Treat-as-withdraw'. An implementation MAY log an error for
further analysis.