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
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
|
Internet Engineering Task Force (IETF) C. Filsfils
Request for Comments: 9256 K. Talaulikar, Ed.
Updates: 8402 Cisco Systems, Inc.
Category: Standards Track D. Voyer
ISSN: 2070-1721 Bell Canada
A. Bogdanov
British Telecom
P. Mattes
Microsoft
July 2022
Segment Routing Policy Architecture
Abstract
Segment Routing (SR) allows a node to steer a packet flow along any
path. Intermediate per-path states are eliminated thanks to source
routing. SR Policy is an ordered list of segments (i.e.,
instructions) that represent a source-routed policy. Packet flows
are steered into an SR Policy on a node where it is instantiated
called a headend node. The packets steered into an SR Policy carry
an ordered list of segments associated with that SR Policy.
This document updates RFC 8402 as it details the concepts of SR
Policy and steering into an SR Policy.
Status of This Memo
This is an Internet Standards Track document.
This document is a product of the Internet Engineering Task Force
(IETF). It represents the consensus of the IETF community. It has
received public review and has been approved for publication by the
Internet Engineering Steering Group (IESG). Further information on
Internet Standards is available in Section 2 of RFC 7841.
Information about the current status of this document, any errata,
and how to provide feedback on it may be obtained at
https://www.rfc-editor.org/info/rfc9256.
Copyright Notice
Copyright (c) 2022 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 Revised BSD License text as described in Section 4.e of the
Trust Legal Provisions and are provided without warranty as described
in the Revised BSD License.
Table of Contents
1. Introduction
1.1. Requirements Language
2. SR Policy
2.1. Identification of an SR Policy
2.2. Candidate Path and Segment List
2.3. Protocol-Origin of a Candidate Path
2.4. Originator of a Candidate Path
2.5. Discriminator of a Candidate Path
2.6. Identification of a Candidate Path
2.7. Preference of a Candidate Path
2.8. Validity of a Candidate Path
2.9. Active Candidate Path
2.10. Validity of an SR Policy
2.11. Instantiation of an SR Policy in the Forwarding Plane
2.12. Priority of an SR Policy
2.13. Summary
3. Segment Routing Database
4. Segment Types
4.1. Explicit Null
5. Validity of a Candidate Path
5.1. Explicit Candidate Path
5.2. Dynamic Candidate Path
5.3. Composite Candidate Path
6. Binding SID
6.1. BSID of a Candidate Path
6.2. BSID of an SR Policy
6.3. Forwarding Plane
6.4. Non-SR Usage of Binding SID
7. SR Policy State
8. Steering into an SR Policy
8.1. Validity of an SR Policy
8.2. Drop-upon-Invalid SR Policy
8.3. Incoming Active SID is a BSID
8.4. Per-Destination Steering
8.5. Recursion on an On-Demand Dynamic BSID
8.6. Per-Flow Steering
8.7. Policy-Based Routing
8.8. Optional Steering Modes for BGP Destinations
9. Recovering from Network Failures
9.1. Leveraging TI-LFA Local Protection of the Constituent IGP
Segments
9.2. Using an SR Policy to Locally Protect a Link
9.3. Using a Candidate Path for Path Protection
10. Security Considerations
11. Manageability Considerations
12. IANA Considerations
12.1. Guidance for Designated Experts
13. References
13.1. Normative References
13.2. Informative References
Acknowledgement
Contributors
Authors' Addresses
1. Introduction
Segment Routing (SR) [RFC8402] allows a node to steer a packet flow
along any path. The headend is a node where the instructions for
source routing (i.e., segments) are written into the packet. It
hence becomes the starting node for a specific segment routing path.
Intermediate per-path states are eliminated thanks to source routing.
A Segment Routing Policy (SR Policy) [RFC8402] is an ordered list of
segments (i.e., instructions) that represent a source-routed policy.
The headend node is said to steer a flow into an SR Policy. The
packets steered into an SR Policy have an ordered list of segments
associated with that SR Policy written into them. [RFC8660]
describes the representation and processing of this ordered list of
segments as an MPLS label stack for SR-MPLS, while [RFC8754] and
[RFC8986] describe the same for Segment Routing over IPv6 (SRv6) with
the use of the Segment Routing Header (SRH).
[RFC8402] introduces the SR Policy construct and provides an overview
of how it is leveraged for Segment Routing use cases. This document
updates [RFC8402] to specify detailed concepts of SR Policy and
steering packets into an SR Policy. It applies equally to the SR-
MPLS and SRv6 instantiations of segment routing.
1.1. Requirements Language
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 [RFC2119] [RFC8174] when, and only when, they appear in all
capitals, as shown here.
2. SR Policy
The general concept of SR Policy provides a framework that enables
the instantiation of an ordered list of segments on a node for
implementing a source routing policy for the steering of traffic for
a specific purpose (e.g., for a specific Service Level Agreement
(SLA)) from that node.
The Segment Routing architecture [RFC8402] specifies that any
instruction can be bound to a segment. Thus, an SR Policy can be
built using any type of Segment Identifier (SID) including those
associated with topological or service instructions.
This section defines the key aspects and constituents of an SR
Policy.
2.1. Identification of an SR Policy
An SR Policy MUST be identified through the tuple <Headend, Color,
Endpoint>. In the context of a specific headend, an SR Policy MUST
be identified by the <Color, Endpoint> tuple.
The headend is the node where the policy is instantiated/implemented.
The headend is specified as an IPv4 or IPv6 address and MUST resolve
to a unique node in the SR domain [RFC8402].
The endpoint indicates the destination of the policy. The endpoint
is specified as an IPv4 or IPv6 address and SHOULD resolve to a
unique node in the domain. In a specific case (refer to
Section 8.8.1), the endpoint can be the unspecified address (0.0.0.0
for IPv4, :: for IPv6) and in this case, the destination of the
policy is indicated by the last segment in the segment list(s).
The color is an unsigned non-zero 32-bit integer value that
associates the SR Policy with an intent or objective (e.g., low
latency).
The endpoint and the color are used to automate the steering of
service or transport routes on SR Policies (refer to Section 8).
An implementation MAY allow the assignment of a symbolic name
comprising printable ASCII [RFC0020] characters (i.e., 0x20 to 0x7E)
to an SR Policy to serve as a user-friendly attribute for debugging
and troubleshooting purposes. Such symbolic names may identify an SR
Policy when the naming scheme ensures uniqueness. The SR Policy name
MAY also be signaled along with a candidate path of the SR Policy
(refer to Section 2.2). An SR Policy MAY have multiple names
associated with it in the scenario where the headend receives
different SR Policy names along with different candidate paths for
the same SR Policy via the same or different sources.
2.2. Candidate Path and Segment List
An SR Policy is associated with one or more candidate paths. A
candidate path is the unit for signaling of an SR Policy to a headend
via protocol extensions like the Path Computation Element
Communication Protocol (PCEP) [RFC8664] [PCEP-SR-POLICY-CP] or BGP SR
Policy [BGP-SR-POLICY].
A segment list represents a specific source-routed path to send
traffic from the headend to the endpoint of the corresponding SR
Policy.
A candidate path is either dynamic, explicit, or composite.
An explicit candidate path is expressed as a segment list or a set of
segment lists.
A dynamic candidate path expresses an optimization objective and a
set of constraints for a specific data plane (i.e., SR-MPLS or SRv6).
The headend (potentially with the help of a PCE) computes a solution
segment list (or set of segment lists) that solves the optimization
problem.
If a candidate path is associated with a set of segment lists, each
segment list is associated with weight for weighted load balancing
(refer to Section 2.11 for details). The default weight is 1.
A composite candidate path acts as a container for grouping SR
Policies. The composite candidate path construct enables the
combination of SR Policies, each with explicit candidate paths and/or
dynamic candidate paths with potentially different optimization
objectives and constraints, for load-balanced steering of packet
flows over its constituent SR Policies. The following criteria apply
for inclusion of constituent SR Policies using a composite candidate
path under a parent SR Policy:
* The endpoints of the constituent SR Policies and the parent SR
Policy MUST be identical.
* The colors of each of the constituent SR Policies and the parent
SR Policy MUST be different.
* The constituent SR Policies MUST NOT use composite candidate
paths.
Each constituent SR Policy of a composite candidate path is
associated with weight for load-balancing purposes (refer to
Section 2.11 for details). The default weight is 1.
Section 2.13 illustrates an information model for hierarchical
relationships between the SR Policy constructs described in this
section.
2.3. Protocol-Origin of a Candidate Path
A headend may be informed about a candidate path for an SR Policy
<Color, Endpoint> by various means including: via configuration, PCEP
[RFC8664] [PCEP-SR-POLICY-CP], or BGP [BGP-SR-POLICY].
Protocol-Origin of a candidate path is an 8-bit value associated with
the mechanism or protocol used for signaling/provisioning the SR
Policy. It helps identify the protocol/mechanism that provides or
signals the candidate path and indicates its preference relative to
other protocols/mechanisms.
The headend assigns different Protocol-Origin values to each source
of SR Policy information. The Protocol-Origin value is used as a
tiebreaker between candidate paths of equal Preference, as described
in Section 2.9. The table below specifies the RECOMMENDED default
values of Protocol-Origin:
+=================+===================+
| Protocol-Origin | Description |
+=================+===================+
| 10 | PCEP |
+-----------------+-------------------+
| 20 | BGP SR Policy |
+-----------------+-------------------+
| 30 | Via Configuration |
+-----------------+-------------------+
Table 1: Protocol-Origin Default Values
Note that the above order is to satisfy the need for having a clear
ordering, and implementations MAY allow modifications of these
default values assigned to protocols on the headend along similar
lines as a routing administrative distance. Its application in the
candidate path selection is described in Section 2.9.
2.4. Originator of a Candidate Path
The Originator identifies the node that provisioned or signaled the
candidate path on the headend. The Originator is expressed in the
form of a 160-bit numerical value formed by the concatenation of the
fields of the tuple <Autonomous System Number (ASN), node-address> as
below:
Autonomous System Number (ASN): represented as a 4-byte number. If
2-byte ASNs are in use, the low-order 16 bits MUST be used, and
the high-order bits MUST be set to 0.
Node Address: represented as a 128-bit value. IPv4 addresses MUST
be encoded in the lowest 32 bits, and the high-order bits MUST be
set to 0.
Its application in the candidate path selection is described in
Section 2.9.
When provisioning is via configuration, the ASN and node address MAY
be set to either the headend or the provisioning controller/node ASN
and address. The default value is 0 for both AS and node address.
When signaling is via PCEP, it is the IPv4 or IPv6 address of the
PCE, and the AS number is expected to be set to 0 by default when not
available or known.
When signaling is via BGP SR Policy, the ASN and node address are
provided by BGP (refer to [BGP-SR-POLICY]) on the headend.
2.5. Discriminator of a Candidate Path
The Discriminator is a 32-bit value associated with a candidate path
that uniquely identifies it within the context of an SR Policy from a
specific Protocol-Origin as specified below:
* When provisioning is via configuration, this is a unique
identifier for a candidate path; it is specific to the
implementation's configuration model. The default value is 0.
* When signaling is via PCEP, the method to uniquely signal an
individual candidate path along with its Discriminator is
described in [PCEP-SR-POLICY-CP]. The default value is 0.
* When signaling is via BGP SR Policy, the BGP process receiving the
route provides the distinguisher (refer to [BGP-SR-POLICY]) as the
Discriminator. Note that the BGP best path selection is applied
before the route is supplied as a candidate path, so only a single
candidate path for a given SR Policy will be seen for a given
Discriminator.
Its application in the candidate path selection is described in
Section 2.9.
2.6. Identification of a Candidate Path
A candidate path is identified in the context of a single SR Policy.
A candidate path is not shared across SR Policies.
A candidate path is not identified by its segment list(s).
| If CP1 is a candidate path of SR Policy Pol1 and CP2 is a
| candidate path of SR Policy Pol2, then these two candidate
| paths are independent, even if they happen to have the same
| segment list. The segment list does not identify a candidate
| path. The segment list is an attribute of a candidate path.
The identity of a candidate path MUST be uniquely established in the
context of an SR Policy <Headend, Color, Endpoint> to handle add,
delete, or modify operations on them in an unambiguous manner
regardless of their source(s).
The tuple <Protocol-Origin, Originator, Discriminator> uniquely
identifies a candidate path.
Candidate paths MAY also be assigned or signaled with a symbolic name
comprising printable ASCII [RFC0020] characters (i.e., 0x20 to 0x7E)
to serve as a user-friendly attribute for debugging and
troubleshooting purposes. Such symbolic names MUST NOT be considered
as identifiers for a candidate path. The signaling of the candidate
path name via BGP and PCEP is described in [BGP-SR-POLICY] and
[PCEP-SR-POLICY-CP], respectively.
2.7. Preference of a Candidate Path
The Preference of the candidate path is used to select the best
candidate path for an SR Policy. It is a 32-bit value where a higher
value indicates higher preference and the default Preference value is
100.
It is RECOMMENDED that each candidate path of a given SR Policy has a
different Preference.
The signaling of the candidate path Preference via BGP and PCEP is
described in [BGP-SR-POLICY] and [PCEP-SR-POLICY-CP], respectively.
2.8. Validity of a Candidate Path
A candidate path is usable when it is valid. The RECOMMENDED
candidate path validity criterion is the validity of at least one of
its constituent segment lists. The validation rules are specified in
Section 5.
2.9. Active Candidate Path
A candidate path is selected when it is valid and it is determined to
be the best path of the SR Policy. The selected path is referred to
as the "active path" of the SR Policy in this document.
Whenever a new path is learned or an active path is deleted, the
validity of an existing path changes, or an existing path is changed,
the selection process MUST be re-executed.
The candidate path selection process operates primarily on the
candidate path Preference. A candidate path is selected when it is
valid and it has the highest Preference value among all the valid
candidate paths of the SR Policy.
In the case of multiple valid candidate paths of the same Preference,
the tie-breaking rules are evaluated on the identification tuple in
the following order until only one valid best path is selected:
1. The higher value of Protocol-Origin is selected.
2. If specified by configuration, prefer the existing installed
path.
3. The lower value of the Originator is selected.
4. Finally, the higher value of the Discriminator is selected.
The rules are framed with multiple protocols and sources in mind and
hence may not follow the logic of a single protocol (e.g., BGP best
path selection). The motivation behind these rules are as follows:
* The Preference, being the primary criterion, allows an operator to
influence selection across paths thus allowing provisioning of
multiple path options, e.g., CP1 is preferred as its Preference
value is the highest, and if it becomes invalid, then CP2 with the
next highest Preference value is selected, and so on. Since
Preference works across protocol sources, it also enables (where
necessary) selective override of the default Protocol-Origin
preference, e.g., to prefer a path signaled via BGP SR Policy over
what is configured.
* The Protocol-Origin allows an operator to set up a default
selection mechanism across protocol sources, e.g., to prefer
configured paths over paths signaled via BGP SR Policy or PCEP.
* The Originator allows an operator to have multiple redundant
controllers and still maintain a deterministic behavior over which
of them are preferred even if they are providing the same
candidate paths for the same SR policies to the headend.
* The Discriminator performs the final tie-breaking step to ensure a
deterministic outcome of selection regardless of the order in
which candidate paths are signaled across multiple transport
channels or sessions.
[SR-POLICY-CONSID] provides a set of examples to illustrate the
active candidate path selection rules.
2.10. Validity of an SR Policy
An SR Policy is valid when it has at least one valid candidate path.
2.11. Instantiation of an SR Policy in the Forwarding Plane
Generally, only valid SR policies are instantiated in the forwarding
plane.
Only the active candidate path MUST be used for forwarding traffic
that is being steered onto that policy except for certain scenarios
such as fast reroute where a backup candidate path may be used as
described in Section 9.3.
If a set of segment lists is associated with the active path of the
policy, then the steering is per flow and weighted-ECMP (W-ECMP)
based according to the relative weight of each segment list.
The fraction of the flows associated with a given segment list is
w/Sw, where w is the weight of the segment list and Sw is the sum of
the weights of the segment lists of the selected path of the SR
Policy.
When a composite candidate path is active, the fraction of flows
steered into each constituent SR Policy is equal to the relative
weight of each constituent SR Policy. Further load-balancing of
flows steered into a constituent SR Policy is performed based on the
weights of the segment list of the active candidate path of that
constituent SR Policy.
The accuracy of the weighted load-balancing depends on the platform
implementation.
2.12. Priority of an SR Policy
Upon topological change, many policies could be re-computed or
revalidated. An implementation MAY provide a per-policy priority
configuration. The operator may set this field to indicate the order
in which the policies should be re-computed. Such a priority is
represented by an integer in the range (0, 255) where the lowest
value is the highest priority. The default value of priority is 128.
An SR Policy may comprise multiple candidate paths received from the
same or different sources. A candidate path MAY be signaled with a
priority value. When an SR Policy has multiple candidate paths with
distinct signaled non-default priority values and the SR Policy
itself does not have a priority value configured, the SR Policy as a
whole takes the lowest value (i.e., the highest priority) amongst
these signaled priority values.
2.13. Summary
In summary, the information model is the following:
SR Policy POL1 <Headend = H1, Color = 1, Endpoint = E1>
Candidate Path CP1 <Protocol-Origin = 20, Originator =
64511:192.0.2.1, Discriminator = 1>
Preference 200
Priority 10
Segment List 1 <SID11...SID1i>, Weight W1
Segment List 2 <SID21...SID2j>, Weight W2
Candidate Path CP2 <Protocol-Origin = 20, Originator =
64511:192.0.2.2, Discriminator = 2>
Preference 100
Priority 10
Segment List 3 <SID31...SID3i>, Weight W3
Segment List 4 <SID41...SID4j>, Weight W4
The SR Policy POL1 is identified by the tuple <Headend, Color,
Endpoint>. It has two candidate paths: CP1 and CP2. Each is
identified by a tuple <Protocol-Origin, Originator, Discriminator>
within the scope of POL1. CP1 is the active candidate path (it is
valid and has the highest Preference). The two segment lists of CP1
are installed as the forwarding instantiation of SR Policy POL1.
Traffic steered on POL1 is flow-based hashed on segment list
<SID11...SID1i> with a ratio W1/(W1+W2).
The information model of SR Policy POL100 having a composite
candidate path is the following:
SR Policy POL100 <Headend = H1, Color = 100, Endpoint = E1>
Candidate Path CP1 <Protocol-Origin = 20, Originator =
64511:192.0.2.1, Discriminator = 1>
Preference 200
SR Policy <Color = 1>, Weight W1
SR Policy <Color = 2>, Weight W2
The constituent SR Policies POL1 and POL2 have an information model
as described at the start of this section. They are referenced only
by color in the composite candidate path since their headend and
endpoint are identical to the POL100. The valid segment lists of the
active candidate path of POL1 and POL2 are installed in the
forwarding. Traffic steered on POL100 is hashed on a per-flow basis
on POL1 with a proportion W1/(W1+W2). Within the POL1, the flow-
based hashing over its segment lists are performed as described
earlier in this section.
3. Segment Routing Database
An SR Policy computation node (e.g., headend or controller) maintains
the Segment Routing Database (SR-DB). The SR-DB is a conceptual
database to illustrate the various pieces of information and their
sources that may help in SR Policy computation and validation. There
is no specific requirement for an implementation to create a new
database as such.
An SR headend leverages the SR-DB to validate explicit candidate
paths and compute dynamic candidate paths.
The information in the SR-DB may include:
* IGP information (topology, IGP metrics based on IS-IS [RFC1195]
and OSPF [RFC2328] [RFC5340])
* Segment Routing information (such as Segment Routing Global Block,
Segment Routing Local Block, Prefix-SIDs, Adj-SIDs, BGP Peering
SID, SRv6 SIDs) [RFC8402] [RFC8986]
* TE Link Attributes (such as TE metric, Shared Risk Link Groups,
attribute-flag, extended admin group) [RFC5305] [RFC3630]
[RFC5329]
* Extended TE Link attributes (such as latency, loss) [RFC8570]
[RFC7471]
* Inter-AS Topology information [RFC9086]
The attached domain topology may be learned via protocol/mechanisms
such as IGP, Border Gateway Protocol - Link State (BGP-LS), or
NETCONF.
A non-attached (remote) domain topology may be learned via protocol/
mechanisms such as BGP-LS or NETCONF.
In some use cases, the SR-DB may only contain the attached domain
topology while in others, the SR-DB may contain the topology of
multiple domains and in this case, it is multi-domain capable.
The SR-DB may also contain the SR Policies instantiated in the
network. This can be collected via BGP-LS [BGP-LS-TE-POLICY] or PCEP
[RFC8231] (along with [PCEP-SR-POLICY-CP] and [PCEP-BSID-LABEL]).
This information allows to build an end-to-end policy on the basis of
intermediate SR policies (see Section 6 for further details).
The SR-DB may also contain the Maximum SID Depth (MSD) capability of
nodes in the topology. This can be collected via IS-IS [RFC8491],
OSPF [RFC8476], BGP-LS [RFC8814], or PCEP [RFC8664].
The use of the SR-DB for path computation and for the validation of
optimization objective and constraints of paths is outside the scope
of this document. Some implementation aspects related to path
computation are covered in [SR-POLICY-CONSID].
4. Segment Types
A segment list is an ordered set of segments represented as <S1, S2,
... Sn> where S1 is the first segment.
Based on the desired data plane, either the MPLS label stack or the
SRv6 Segment Routing Header [RFC8754] is built from the segment list.
However, the segment list itself can be specified using different
segment-descriptor types and the following are currently defined:
Type A: SR-MPLS Label:
An MPLS label corresponding to any of the segment types defined
for SR-MPLS (as defined in [RFC8402] or other SR-MPLS
specifications) can be used. Additionally, special purpose
labels like explicit-null or in general any MPLS label MAY also
be used. For example, this type can be used to specify a label
representation that maps to an optical transport path on a
packet transport node.
Type B: SRv6 SID:
An IPv6 address corresponding to any of the SID behaviors for
SRv6 (as defined in [RFC8986] or other SRv6 specifications) can
be used. Optionally, the SRv6 SID behavior (as defined in
[RFC8986] or other SRv6 specifications) and structure (as
defined in [RFC8986]) MAY also be provided for the headend to
perform validation of the SID when using it for building the
segment list.
Type C: IPv4 Prefix with optional SR Algorithm:
In this case, the headend is required to resolve the specified
IPv4 Prefix Address to the SR-MPLS label corresponding to its
Prefix SID segment (as defined in [RFC8402]). The SR algorithm
(refer to Section 3.1.1 of [RFC8402]) to be used MAY also be
provided.
Type D: IPv6 Global Prefix with optional SR Algorithm for SR-MPLS:
In this case, the headend is required to resolve the specified
IPv6 Global Prefix Address to the SR-MPLS label corresponding
to its Prefix SID segment (as defined in [RFC8402]). The SR
Algorithm (refer to Section 3.1.1 of [RFC8402]) to be used MAY
also be provided.
Type E: IPv4 Prefix with Local Interface ID:
This type allows for identification of an Adjacency SID or BGP
Peer Adjacency SID (as defined in [RFC8402]) SR-MPLS label for
point-to-point links including IP unnumbered links. The
headend is required to resolve the specified IPv4 Prefix
Address to the node originating it and then use the Local
Interface ID to identify the point-to-point link whose
adjacency is being referred to. The Local Interface ID link
descriptor follows semantics as specified in [RFC5307]. This
type can also be used to indicate indirection into a layer 2
interface (i.e., without IP address) like a representation of
an optical transport path or a layer 2 Ethernet port or circuit
at the specified node.
Type F: IPv4 Addresses for link endpoints as Local, Remote pair:
This type allows for identification of an Adjacency SID or BGP
Peer Adjacency SID (as defined in [RFC8402]) SR-MPLS label for
links. The headend is required to resolve the specified IPv4
Local Address to the node originating it and then use the IPv4
Remote Address to identify the link adjacency being referred
to. The Local and Remote Address pair link descriptors follow
semantics as specified in [RFC7752].
Type G: IPv6 Prefix and Interface ID for link endpoints as Local,
Remote pair for SR-MPLS:
This type allows for identification of an Adjacency SID or BGP
Peer Adjacency SID (as defined in [RFC8402]) label for links
including those with only Link-Local IPv6 addresses. The
headend is required to resolve the specified IPv6 Prefix
Address to the node originating it and then use the Local
Interface ID to identify the point-to-point link whose
adjacency is being referred to. For other than point-to-point
links, additionally the specific adjacency over the link needs
to be resolved using the Remote Prefix and Interface ID. The
Local and Remote pair of Prefix and Interface ID link
descriptor follows semantics as specified in [RFC7752]. This
type can also be used to indicate indirection into a layer 2
interface (i.e., without IP address) like a representation of
an optical transport path or a layer 2 Ethernet port or circuit
at the specified node.
Type H: IPv6 Addresses for link endpoints as Local, Remote pair
for SR-MPLS:
This type allows for identification of an Adjacency SID or BGP
Peer Adjacency SID (as defined in [RFC8402]) label for links
with Global IPv6 addresses. The headend is required to resolve
the specified Local IPv6 Address to the node originating it and
then use the Remote IPv6 Address to identify the link adjacency
being referred to. The Local and Remote Address pair link
descriptors follow semantics as specified in [RFC7752].
Type I: IPv6 Global Prefix with optional SR Algorithm for SRv6:
The headend is required to resolve the specified IPv6 Global
Prefix Address to an SRv6 SID corresponding to a Prefix SID
segment (as defined in [RFC8402]), such as a SID associated
with the End behavior (as defined in [RFC8986]) of the node
that is originating the prefix. The SR Algorithm (refer to
Section 3.1.1 of [RFC8402]), the SRv6 SID behavior (as defined
in [RFC8986] or other SRv6 specifications), and structure (as
defined in [RFC8986]) MAY also be provided.
Type J: IPv6 Prefix and Interface ID for link endpoints as Local,
Remote pair for SRv6:
This type allows for identification of an SRv6 SID
corresponding to an Adjacency SID or BGP Peer Adjacency SID (as
defined in [RFC8402]), such as a SID associated with the End.X
behavior (as defined in [RFC8986]) associated with link or
adjacency with only Link-Local IPv6 addresses. The headend is
required to resolve the specified IPv6 Prefix Address to the
node originating it and then use the Local Interface ID to
identify the point-to-point link whose adjacency is being
referred to. For other than point-to-point links, additionally
the specific adjacency needs to be resolved using the Remote
Prefix and Interface ID. The Local and Remote pair of Prefix
and Interface ID link descriptor follows semantics as specified
in [RFC7752]. The SR Algorithm (refer to Section 3.1.1 of
[RFC8402]), the SRv6 SID behavior (as defined in [RFC8986] or
other SRv6 specifications), and structure (as defined in
[RFC8986]) MAY also be provided.
Type K: IPv6 Addresses for link endpoints as Local, Remote pair
for SRv6:
This type allows for identification of an SRv6 SID
corresponding to an Adjacency SID or BGP Peer Adjacency SID (as
defined in [RFC8402]), such as a SID associated with the End.X
behavior (as defined in [RFC8986]) associated with link or
adjacency with Global IPv6 addresses. The headend is required
to resolve the specified Local IPv6 Address to the node
originating it and then use the Remote IPv6 Address to identify
the link adjacency being referred to. The Local and Remote
Address pair link descriptors follow semantics as specified in
[RFC7752]. The SR Algorithm (refer to Section 3.1.1 of
[RFC8402]), the SRv6 SID behavior (as defined in [RFC8986] or
other SRv6 specifications), and structure (as defined in
[RFC8986]) MAY also be provided.
When the algorithm is not specified for the SID types above which
optionally allow for it, the headend SHOULD use the Strict Shortest
Path algorithm if available and otherwise, it SHOULD use the default
Shortest Path algorithm. The specification of the algorithm enables
the use of SIDs specific to the IGP Flex Algorithm [IGP-FLEX-ALGO] in
SR Policy.
For SID types C through K, a SID value MAY also be optionally
provided to the headend for verification purposes. Section 5.1
describes the resolution and verification of the SIDs and segment
lists on the headend.
When building the MPLS label stack or the SRv6 SID list from the
segment list, the node instantiating the policy MUST interpret the
set of Segments as follows:
* The first Segment represents the topmost MPLS label or the first
SRv6 SID. It identifies the active segment the traffic will be
directed toward along the explicit SR path.
* The last segment represents the bottommost MPLS label or the last
SRv6 SID the traffic will be directed toward along the explicit SR
path.
4.1. Explicit Null
A Type A SID MAY be any MPLS label, including special purpose labels.
For example, assuming that the desired traffic-engineered path from a
headend 1 to an endpoint 4 can be expressed by the segment list
<16002, 16003, 16004> where 16002, 16003, and 16004, respectively,
refer to the IPv4 Prefix SIDs bound to nodes 2, 3, and 4, then IPv6
traffic can be traffic-engineered from nodes 1 to 4 via the
previously described path using an SR Policy with segment list
<16002, 16003, 16004, 2> where the MPLS label value of 2 represents
the "IPv6 Explicit NULL Label".
The penultimate node before node 4 will pop 16004 and will forward
the frame on its directly connected interface to node 4.
The endpoint receives the traffic with the top label "2", which
indicates that the payload is an IPv6 packet.
When steering unlabeled IPv6 BGP destination traffic using an SR
Policy composed of segment list(s) based on IPv4 SIDs, the Explicit
Null Label Policy is processed as specified in [BGP-SR-POLICY]. When
an "IPv6 Explicit NULL label" is not present as the bottom label, the
headend SHOULD automatically impose one. Refer to Section 8 for more
details.
5. Validity of a Candidate Path
5.1. Explicit Candidate Path
An explicit candidate path is associated with a segment list or a set
of segment lists.
An explicit candidate path is provisioned by the operator directly or
via a controller.
The computation/logic that leads to the choice of the segment list is
external to the SR Policy headend. The SR Policy headend does not
compute the segment list. The SR Policy headend only confirms its
validity.
An explicit candidate path MAY consist of a single explicit segment
list containing only an implicit-null label to indicate pop-and-
forward behavior. The Binding SID (BSID) is popped and the traffic
is forwarded based on the inner label or an IP lookup in the case of
unlabeled IP packets. Such an explicit path can serve as a fallback
or path of last resort for traffic being steered into an SR Policy
using its BSID (refer to Section 8.3).
A segment list of an explicit candidate path MUST be declared invalid
when any of the following is true:
* It is empty.
* Its weight is 0.
* It comprises a mix of SR-MPLS and SRv6 segment types.
* The headend is unable to perform path resolution for the first SID
into one or more outgoing interface(s) and next-hop(s).
* The headend is unable to perform SID resolution for any non-first
SID of type C through K into an MPLS label or an SRv6 SID.
* The headend verification fails for any SID for which verification
has been explicitly requested.
"Unable to perform path resolution" means that the headend has no
path to the SID in its SR database.
SID verification is performed when the headend is explicitly
requested to verify SID(s) by the controller via the signaling
protocol used. Implementations MAY provide a local configuration
option to enable verification on a global or per-policy or per-
candidate path basis.
"Verification fails" for a SID means any of the following:
* The headend is unable to find the SID in its SR-DB
* The headend detects a mismatch between the SID value provided and
the SID value resolved by context provided for SIDs of type C
through K in its SR-DB.
* The headend is unable to perform SID resolution for any non-first
SID of type C through K into an MPLS label or an SRv6 SID.
In multi-domain deployments, it is expected that the headend may be
unable to verify the reachability of the SIDs in remote domains.
Types A or B MUST be used for the SIDs for which the reachability
cannot be verified. Note that the first SID MUST always be reachable
regardless of its type.
Additionally, a segment list MAY be declared invalid when both of the
conditions below are met :
* Its last segment is not a Prefix SID (including BGP Peer Node-SID)
advertised by the node specified as the endpoint of the
corresponding SR Policy.
* Its last segment is not an Adjacency SID (including BGP Peer
Adjacency SID) of any of the links present on neighbor nodes and
that terminate on the node specified as the endpoint of the
corresponding SR Policy.
An explicit candidate path is invalid as soon as it has no valid
segment list.
Additionally, an explicit candidate path MAY be declared invalid when
its constituent segment lists (valid or invalid) are using segment
types of different SR data planes.
5.2. Dynamic Candidate Path
A dynamic candidate path is specified as an optimization objective
and a set of constraints.
The headend of the policy leverages its SR database to compute a
segment list ("solution segment list") that solves this optimization
problem for either the SR-MPLS or the SRv6 data plane as specified.
The headend re-computes the solution segment list any time the inputs
to the problem change (e.g., topology changes).
When the local computation is not possible (e.g., a policy's tail end
is outside the topology known to the headend) or not desired, the
headend may rely on an external entity. For example, a path
computation request may be sent to a PCE supporting PCEP extensions
specified in [RFC8664].
If no solution is found to the optimization objective and
constraints, then the dynamic candidate path MUST be declared
invalid.
[SR-POLICY-CONSID] discusses some of the optimization objectives and
constraints that may be considered by a dynamic candidate path. It
illustrates some of the desirable properties of the computation of
the solution segment list.
5.3. Composite Candidate Path
A composite candidate path is specified as a group of its constituent
SR Policies.
A composite candidate path is valid when it has at least one valid
constituent SR Policy.
6. Binding SID
The Binding SID (BSID) is fundamental to Segment Routing [RFC8402].
It provides scaling, network opacity, and service independence.
[SR-POLICY-CONSID] illustrates some of these benefits. This section
describes the association of BSID with an SR Policy.
6.1. BSID of a Candidate Path
Each candidate path MAY be defined with a BSID.
Candidate paths of the same SR Policy SHOULD have the same BSID.
Candidate paths of different SR Policies MUST NOT have the same BSID.
6.2. BSID of an SR Policy
The BSID of an SR Policy is the BSID of its active candidate path.
When the active candidate path has a specified BSID, the SR Policy
uses that BSID if this value (label in MPLS, IPv6 address in SRv6) is
available. A BSID is available when its value is not associated with
any other usage, e.g., a label used by some other MPLS forwarding
entry or an SRv6 SID used in some other context (such as to another
segment, to another SR Policy, or that it is outside the range of
SRv6 Locators).
In the case of SR-MPLS, SRv6 BSIDs (e.g., with the behavior End.BM
[RFC8986]) MAY be associated with the SR Policy in addition to the
MPLS BSID. In the case of SRv6, multiple SRv6 BSIDs (e.g., with
different behaviors like End.B6.Encaps and End.B6.Encaps.Red
[RFC8986]) MAY be associated with the SR Policy.
Optionally, instead of only checking that the BSID of the active path
is available, a headend MAY check that it is available within the
given SID range i.e., Segment Routing Local Block (SRLB) as specified
in [RFC8402].
When the specified BSID is not available (optionally is not in the
SRLB), an alert message MUST be generated via mechanisms like syslog.
In the cases (as described above) where SR Policy does not have a
BSID available, the SR Policy MAY dynamically bind a BSID to itself.
Dynamically bound BSIDs SHOULD use an available SID outside the SRLB.
Assuming that at time t the BSID of the SR Policy is B1, if at time
t+dt a different candidate path becomes active and this new active
path does not have a specified BSID or its BSID is specified but is
not available (e.g., it is in use by something else), then the SR
Policy MAY keep the previous BSID B1.
The association of an SR Policy with a BSID thus MAY change over the
life of the SR Policy (e.g., upon active path change). Hence, the
BSID SHOULD NOT be used as an identification of an SR Policy.
6.2.1. Frequent Use Case : Unspecified BSID
All the candidate paths of the same SR Policy can have an unspecified
BSID.
In such a case, a BSID MAY be dynamically bound to the SR Policy as
soon as the first valid candidate path is received. That BSID is
kept through the life of the SR Policy and across changes of the
active candidate path.
6.2.2. Frequent Use Case: All Specified to the Same BSID
All the paths of the SR Policy can have the same specified BSID.
6.2.3. Specified-BSID-only
An implementation MAY support the configuration of the Specified-
BSID-only restrictive behavior on the headend for all SR Policies or
individual SR Policies. Further, this restrictive behavior MAY also
be signaled on a per-SR-Policy basis to the headend.
When this restrictive behavior is enabled, if the candidate path has
an unspecified BSID or if the specified BSID is not available when
the candidate path becomes active, then no BSID is bound to it and
the candidate path is considered invalid. An alert MUST be triggered
for this error via mechanisms like syslog. Other candidate paths
MUST then be evaluated for becoming the active candidate path.
6.3. Forwarding Plane
A valid SR Policy results in the installation of a BSID-keyed entry
in the forwarding plane with the action of steering the packets
matching this entry to the selected path of the SR Policy.
If the Specified-BSID-only restrictive behavior is enabled and the
BSID of the active path is not available (optionally not in the
SRLB), then the SR Policy does not install any entry indexed by a
BSID in the forwarding plane.
6.4. Non-SR Usage of Binding SID
An implementation MAY choose to associate a Binding SID with any type
of interface (e.g., a layer 3 termination of an Optical Circuit) or a
tunnel (e.g., IP tunnel, GRE tunnel, IP/UDP tunnel, MPLS RSVP-TE
tunnel, etc). This enables the use of other non-SR-enabled
interfaces and tunnels as segments in an SR Policy segment list
without the need of forming routing protocol adjacencies over them.
The details of this kind of usage are beyond the scope of this
document. A specific packet-optical integration use case is
described in [POI-SR].
7. SR Policy State
The SR Policy state is maintained on the headend to represent the
state of the policy and its candidate paths. This is to provide an
accurate representation of whether the SR Policy is being
instantiated in the forwarding plane and which of its candidate paths
and segment list(s) are active. The SR Policy state MUST also
reflect the reason when a policy and/or its candidate path is not
active due to validation errors or not being preferred. The
operational state information reported for SR Policies are specified
in [SR-POLICY-YANG].
The SR Policy state can be reported by the headend node via BGP-LS
[BGP-LS-TE-POLICY] or PCEP [RFC8231] [PCEP-BSID-LABEL].
SR Policy state on the headend also includes traffic accounting
information for the flows being steered via the policies. The
details of the SR Policy accounting are beyond the scope of this
document. The aspects related to the SR traffic counters and their
usage in the broader context of traffic accounting in an SR network
are covered in [SR-TRAFFIC-COUNTERS] and [SR-TRAFFIC-ACCOUNTING],
respectively.
Implementations MAY support an administrative state to control
locally provisioned policies via mechanisms like command-line
interface (CLI) or NETCONF.
8. Steering into an SR Policy
A headend can steer a packet flow into a valid SR Policy in various
ways:
* Incoming packets have an active SID matching a local BSID at the
headend.
* Per-Destination Steering: incoming packets match a BGP/Service
route, which recurses on an SR Policy.
* Per-Flow Steering: incoming packets match or recurse on a
forwarding array of which some of the entries are SR Policies.
* Policy-Based Steering: incoming packets match a routing policy
that directs them on an SR Policy.
8.1. Validity of an SR Policy
An SR Policy is invalid when all its candidate paths are invalid as
described in Sections 2.10 and 5.
By default, upon transitioning to the invalid state,
* an SR Policy and its BSID are removed from the forwarding plane.
* any steering of a service (Pseudowire (PW)), destination (BGP-
VPN), flow or packet on the related SR Policy is disabled and the
related service, destination, flow, or packet is routed per the
classic forwarding table (e.g., longest match to the destination
or the recursing next-hop).
8.2. Drop-upon-Invalid SR Policy
An SR Policy MAY be enabled for the Drop-Upon-Invalid behavior. This
would entail the following:
* an invalid SR Policy and its BSID is kept in the forwarding plane
with an action to drop.
* any steering of a service (PW), destination (BGP-VPN), flow, or
packet on the related SR Policy is maintained with the action to
drop all of this traffic.
The Drop-Upon-Invalid behavior has been deployed in use cases where
the operator wants some PW to only be transported on a path with
specific constraints. When these constraints are no longer met, the
operator wants the PW traffic to be dropped. Specifically, the
operator does not want the PW to be routed according to the IGP
shortest path to the PW endpoint.
8.3. Incoming Active SID is a BSID
Let us assume that headend H has a valid SR Policy P of segment list
<S1, S2, S3> and BSID B.
In the case of SR-MPLS, when H receives a packet K with label stack
<B, L2, L3>, H pops B and pushes <S1, S2, S3> and forwards the
resulting packet according to SID S1.
| "Forwards the resulting packet according to SID S1" means: If
| S1 is an Adj-SID or a PHP-enabled prefix SID advertised by a
| neighbor, H sends the resulting packet with label stack <S2,
| S3, L2, L3> on the outgoing interface associated with S1; Else,
| H sends the resulting packet with label stack <S1, S2, S3, L2,
| L3> along the path of S1.
In the case of SRv6, the processing is similar and follows the SR
Policy headend behaviors as specified in Section 5 of [RFC8986].
H has steered the packet into the SR Policy P.
H did not have to classify the packet. The classification was done
by a node upstream of H (e.g., the source of the packet or an
intermediate ingress edge node of the SR domain) and the result of
this classification was efficiently encoded in the packet header as a
BSID.
This is another key benefit of the segment routing in general and the
binding SID in particular: the ability to encode a classification and
the resulting steering in the packet header to better scale and
simplify intermediate aggregation nodes.
When Drop-Upon-Invalid (refer to Section 8.2) is not in use, for an
invalid SR Policy P, its BSID B is not in the forwarding plane and
hence, the packet K is dropped by H.
8.4. Per-Destination Steering
This section describes how a headend applies steering of flows
corresponding to BGP routes over SR Policy using the Color Extended
community [RFC9012].
In the case of SR-MPLS, let us assume that headend H:
* learns a BGP route R/r via next-hop N, Color Extended community C,
and VPN label V.
* has a valid SR Policy P to (color = C, endpoint = N) of segment
list <S1, S2, S3> and BSID B.
* has a BGP policy that matches on the Color Extended community C
and allows its usage as SLA steering information.
If all these conditions are met, H installs R/r in RIB/FIB with next-
hop = SR Policy P of BSID B instead of via N.
Indeed, H's local BGP policy and the received BGP route indicate that
the headend should associate R/r with an SR Policy path to endpoint N
with the SLA associated with color C. The headend, therefore,
installs the BGP route on that policy.
This can be implemented by using the BSID as a generalized next-hop
and installing the BGP route on that generalized next-hop.
When H receives a packet K with a destination matching R/r, H pushes
the label stack <S1, S2, S3, V> and sends the resulting packet along
the path to S1.
Note that any SID associated with the BGP route is inserted after the
segment list of the SR Policy (i.e., <S1, S2, S3, V>).
In the case of SRv6, the processing is similar and follows the SR
Policy headend behaviors as specified in Section 5 of [RFC8986].
The same behavior applies to any type of service route: any AFI/SAFI
of BGP [RFC4760] or the Locator/ID Separation Protocol (LISP)
[RFC6830] for both IPv4/IPv6.
In a BGP multi-path scenario, the BGP route MAY be resolved over a
mix of paths that include those that are steered over SR Policies and
others resolved via the normal BGP next-hop resolution.
Implementations MAY provide options to prefer one type over the other
or other forms of local policy to determine the paths that are
selected.
8.4.1. Multiple Colors
When a BGP route has multiple Color Extended communities each with a
valid SR Policy, the BGP process installs the route on the SR Policy
giving preference to the Color Extended community with the highest
numerical value.
Let us assume that headend H:
* learns a BGP route R/r via next-hop N, Color Extended communities
C1 and C2.
* has a valid SR Policy P1 to (color = C1, endpoint = N) of segment
list <S1, S2, S3> and BSID B1.
* has a valid SR Policy P2 to (color = C2, endpoint = N) of segment
list <S4, S5, S6> and BSID B2.
* has a BGP policy that matches the Color Extended communities C1
and C2 and allows their usage as SLA steering information
If all these conditions are met, H installs R/r in RIB/FIB with next-
hop = SR Policy P2 of BSID=B2 (instead of N) because C2 > C1.
When the SR Policy with a specific color is not instantiated or in
the down/inactive state, the SR Policy with the next highest
numerical value of color is considered.
8.5. Recursion on an On-Demand Dynamic BSID
In the previous section, it was assumed that H had a pre-established
"explicit" SR Policy (color C, endpoint N).
In this section, independent of the a priori existence of any
explicit candidate path of the SR Policy (C, N), it is to be noted
that the BGP process at headend node H triggers the instantiation of
a dynamic candidate path for the SR Policy (C, N) as soon as:
* the BGP process learns of a route R/r via N and with Color
Extended community C.
* a local policy at node H authorizes the on-demand SR Policy path
instantiation and maps the color to a dynamic SR Policy path
optimization template.
8.5.1. Multiple Colors
When a BGP route R/r via N has multiple Color Extended communities Ci
(with i=1 ... n), an individual on-demand SR Policy dynamic path
request (color Ci, endpoint N) is triggered for each color Ci. The
SR Policy that is used for steering is then determined as described
in Section 8.4.1.
8.6. Per-Flow Steering
This section provides an example of how a headend might apply per-
flow steering in practice.
Let us assume that headend H:
* has a valid SR Policy P1 to (color = C1, endpoint = N) of segment
list <S1, S2, S3> and BSID B1.
* has a valid SR Policy P2 to (color = C2, endpoint = N) of segment
list <S4, S5, S6> and BSID B2.
* is configured to instantiate an array of paths to N where the
entry 0 is the IGP path to N, color C1 is the first entry, and
color C2 is the second entry. The index into the array is called
a Forwarding Class (FC). The index can have values 0 to 7,
especially when derived from the MPLS TC bits [RFC5462].
* is configured to match flows in its ingress interfaces (upon any
field such as Ethernet destination/source/VLAN/TOS or IP
destination/source/Differentiated Services Code Point (DSCP), or
transport ports etc.), and color them with an internal per-packet
forwarding-class variable (0, 1, or 2 in this example).
If all these conditions are met, H installs in RIB/FIB:
* N via recursion on an array A (instead of the immediate outgoing
link associated with the IGP shortest path to N).
* Entry A(0) set to the immediate outgoing link of the IGP shortest
path to N.
* Entry A(1) set to SR Policy P1 of BSID=B1.
* Entry A(2) set to SR Policy P2 of BSID=B2.
H receives three packets K, K1, and K2 on its incoming interface.
These three packets either longest match on N or more likely on a
BGP/service route that recurses on N. H colors these 3 packets
respectively with forwarding-class 0, 1, and 2.
As a result, for SR-MPLS:
* H forwards K along the shortest path to N (i.e., pushes the
Prefix-SID of N).
* H pushes <S1, S2, S3> on packet K1 and forwards the resulting
frame along the shortest path to S1.
* H pushes <S4, S5, S6> on packet K2 and forwards the resulting
frame along the shortest path to S4.
For SRv6, the processing is similar and the segment lists of the
individual SR Policies P1 and P2 are enforced for packets K1 and K2
using the SR Policy headend behaviors as specified in Section 5 of
[RFC8986].
If the local configuration does not specify any explicit forwarding
information for an entry of the array, then this entry is filled with
the same information as entry 0 (i.e., the IGP shortest path).
If the SR Policy mapped to an entry of the array becomes invalid,
then this entry is filled with the same information as entry 0. When
all the array entries have the same information as entry 0, the
forwarding entry for N is updated to bypass the array and point
directly to its outgoing interface and next-hop.
The array index values (e.g., 0, 1, and 2) and the notion of
forwarding class are implementation specific and only meant to
describe the desired behavior. The same can be realized by other
mechanisms.
This realizes per-flow steering: different flows bound to the same
BGP endpoint are steered on different IGP or SR Policy paths.
A headend MAY support options to apply per-flow steering only for
traffic matching specific prefixes (e.g., specific IGP or BGP
prefixes).
8.7. Policy-Based Routing
Finally, headend H MAY be configured with a local routing policy that
overrides any BGP/IGP path and steers a specified packet on an SR
Policy. This includes the use of mechanisms like IGP Shortcut for
automatic routing of IGP prefixes over SR Policies intended for such
purpose.
8.8. Optional Steering Modes for BGP Destinations
8.8.1. Color-Only BGP Destination Steering
In the previous section, it is seen that the steering on an SR Policy
is governed by the matching of the BGP route's next-hop N and the
authorized Color Extended community C with an SR Policy defined by
the tuple (N, C).
This is the most likely form of BGP destination steering and the one
recommended for most use cases.
This section defines an alternative steering mechanism based only on
the Color Extended community.
Three types of steering modes are defined.
For the default, Type 0, the BGP destination is steered as follows:
IF there is a valid SR Policy (N, C) where N is the IPv4 or IPv6
endpoint address and C is a color;
Steer into SR Policy (N, C);
ELSE;
Steer on the IGP path to the next-hop N.
This is the classic case described in this document previously and
what is recommended in most scenarios.
For Type 1, the BGP destination is steered as follows:
IF there is a valid SR Policy (N, C) where N is the IPv4 or IPv6
endpoint address and C is a color;
Steer into SR Policy (N, C);
ELSE IF there is a valid SR Policy (null endpoint, C) of the
same address-family of N;
Steer into SR Policy (null endpoint, C);
ELSE IF there is any valid SR Policy
(any address-family null endpoint, C);
Steer into SR Policy (any null endpoint, C);
ELSE;
Steer on the IGP path to the next-hop N.
For Type 2, the BGP destination is steered as follows:
IF there is a valid SR Policy (N, C) where N is an IPv4 or IPv6
endpoint address and C is a color;
Steer into SR Policy (N, C);
ELSE IF there is a valid SR Policy (null endpoint, C)
of the same address-family of N;
Steer into SR Policy (null endpoint, C);
ELSE IF there is any valid SR Policy
(any address-family null endpoint, C);
Steer into SR Policy (any null endpoint, C);
ELSE IF there is any valid SR Policy (any endpoint, C)
of the same address-family of N;
Steer into SR Policy (any endpoint, C);
ELSE IF there is any valid SR Policy
(any address-family endpoint, C);
Steer into SR Policy (any address-family endpoint, C);
ELSE;
Steer on the IGP path to the next-hop N.
The null endpoint is 0.0.0.0 for IPv4 and :: for IPv6 (all bits set
to the 0 value).
Please refer to [BGP-SR-POLICY] for the updates to the BGP Color
Extended community for the implementation of these mechanisms.
8.8.2. Multiple Colors and CO flags
The steering preference is first based on the highest Color Extended
community value and then Color-Only steering type for the color.
Assuming a Prefix via (NH, C1(CO=01), C2(CO=01)); C1>C2. The
steering preference order is:
* SR Policy (NH, C1).
* SR Policy (null, C1).
* SR Policy (NH, C2).
* SR Policy (null, C2).
* IGP to NH.
8.8.3. Drop-upon-Invalid
This document defined earlier that when all the following conditions
are met, H installs R/r in RIB/FIB with next-hop = SR Policy P of
BSID B instead of via N.
* H learns a BGP route R/r via next-hop N, Color Extended community
C.
* H has a valid SR Policy P to (color = C, endpoint = N) of segment
list <S1, S2, S3> and BSID B.
* H has a BGP policy that matches the Color Extended community C and
allows its usage as SLA steering information.
This behavior is extended by noting that the BGP Policy may require
the BGP steering to always stay on the SR Policy whatever its
validity.
This is the "drop-upon-invalid" option described in Section 8.2
applied to BGP-based steering.
9. Recovering from Network Failures
9.1. Leveraging TI-LFA Local Protection of the Constituent IGP Segments
In any topology, Topology-Independent Loop-Free Alternate (TI-LFA)
[SR-TI-LFA] provides a 50 msec local protection technique for IGP
SIDs. The backup path is computed on a per-IGP-SID basis along the
post-convergence path.
In a network that has deployed TI-LFA, an SR Policy built on the
basis of TI-LFA protected IGP segments leverages the local protection
of the constituent segments. Since TI-LFA protection is based on IGP
computation, there are cases where the path used during the fast-
reroute time window may not meet the exact constraints of the SR
Policy.
In a network that has deployed TI-LFA, an SR Policy instantiated only
with non-protected Adj SIDs does not benefit from any local
protection.
9.2. Using an SR Policy to Locally Protect a Link
1----2-----6----7
| | | |
4----3-----9----8
Figure 1: Local Protection Using SR Policy
An SR Policy can be instantiated at node 2 to protect link 2-to-6. A
typical explicit segment list would be <3, 9, 6>.
A typical use case occurs for links outside an IGP domain: e.g., 1,
2, 3, and 4 are part of IGP/SR sub-domain 1 while 6, 7, 8, and 9 are
part of IGP/SR sub-domain 2. In such a case, links 2-to-6 and 3to9
cannot benefit from TI-LFA automated local protection. The SR Policy
with segment list <3, 9, 6> on node 2 can be locally configured to be
a fast-reroute backup path for the link 2-to-6.
9.3. Using a Candidate Path for Path Protection
An SR Policy allows for multiple candidate paths, of which at any
point in time there is a single active candidate path that is
provisioned in the forwarding plane and used for traffic steering.
However, another (lower preference) candidate path MAY be designated
as the backup for a specific or all (active) candidate path(s). The
following options are possible:
* A pair of disjoint candidate paths are provisioned with one of
them as primary and the other identified as its backup.
* A specific candidate path is provisioned as the backup for any
(active) candidate path.
* The headend picks the next (lower) preference valid candidate path
as the backup for the active candidate path.
The headend MAY compute a priori and validate such backup candidate
paths as well as provision them into the forwarding plane as a backup
for the active path. The backup candidate path may be dynamically
computed or explicitly provisioned in such a way that they provide
the most appropriate alternative for the active candidate path. A
fast-reroute mechanism MAY then be used to trigger sub-50 msec
switchover from the active to the backup candidate path in the
forwarding plane. Mechanisms like Bidirectional Forwarding Detection
(BFD) MAY be used for fast detection of such failures.
10. Security Considerations
This document specifies in detail the SR Policy construct introduced
in [RFC8402] and its instantiation on a router supporting SR along
with descriptions of mechanisms for the steering of traffic flows
over it. Therefore, the security considerations of [RFC8402] apply.
The security consideration related to SR-MPLS [RFC8660] and SRv6
[RFC8754] [RFC8986] also apply.
The endpoint of the SR Policy, other than in the case of a null
endpoint, uniquely identifies the tail-end node of the segment routed
path. If an address that is used as an endpoint for an SR Policy is
advertised by more than one node due to a misconfiguration or
spoofing and the same is advertised via an IGP, the traffic steered
over the SR Policy may end up getting diverted to an undesired node
resulting in misrouting. Mechanisms for detection of duplicate
prefix advertisement can be used to identify and correct such
scenarios. The details of these mechanisms are outside the scope of
this document.
Section 8 specifies mechanisms for the steering of traffic flows
corresponding to BGP routes over SR Policies matching the color value
signaled via the BGP Color Extended Community attached with the BGP
routes. Misconfiguration or error in setting of the Color Extended
Community with the BGP routes can result in the forwarding of packets
for those routes along undesired paths.
In Sections 2.1 and 2.6, the document mentions that a symbolic name
MAY be signaled along with a candidate path for the SR Policy and for
the SR Policy Candidate Path, respectively. While the value of
symbolic names for display clarity is indisputable, as with any
unrestricted free-form text received from external parties, there can
be no absolute assurance that the information the text purports to
show is accurate or even truthful. For this reason, users of
implementations that display such information would be well advised
not to rely on it without question and to use the specific
identifiers of the SR Policy and SR Policy Candidate Path for
validation. Furthermore, implementations that display such
information might wish to display it in such a fashion as to
differentiate it from known-good information. (Such display
conventions are inherently implementation specific; one example might
be use of a distinguished text color or style for information that
should be treated with caution.)
This document does not define any new protocol extensions and does
not introduce any further security considerations.
11. Manageability Considerations
This document specifies in detail the SR Policy construct introduced
in [RFC8402] and its instantiation on a router supporting SR along
with descriptions of mechanisms for the steering of traffic flows
over it. Therefore, the manageability considerations of [RFC8402]
apply.
A YANG model for the configuration and operation of SR Policy has
been defined in [SR-POLICY-YANG].
12. IANA Considerations
IANA has created a new subregistry called "Segment Types" under the
"Segment Routing" registry that was created by [RFC8986]. This
subregistry maintains the alphabetic identifiers for the segment
types (as specified in Section 4) that may be used within a segment
list of an SR Policy. The alphabetical identifiers run from A to Z
and may be extended on exhaustion with the identifiers AA to AZ, BA
to BZ, and so on, through ZZ. This subregistry follows the
Specification Required allocation policy as specified in [RFC8126].
The initial registrations for this subregistry are as follows:
+=======+=============================================+===========+
| Value | Description | Reference |
+=======+=============================================+===========+
| A | SR-MPLS Label | RFC 9256 |
+-------+---------------------------------------------+-----------+
| B | SRv6 SID | RFC 9256 |
+-------+---------------------------------------------+-----------+
| C | IPv4 Prefix with optional SR Algorithm | RFC 9256 |
+-------+---------------------------------------------+-----------+
| D | IPv6 Global Prefix with optional SR | RFC 9256 |
| | Algorithm for SR-MPLS | |
+-------+---------------------------------------------+-----------+
| E | IPv4 Prefix with Local Interface ID | RFC 9256 |
+-------+---------------------------------------------+-----------+
| F | IPv4 Addresses for link endpoints as Local, | RFC 9256 |
| | Remote pair | |
+-------+---------------------------------------------+-----------+
| G | IPv6 Prefix and Interface ID for link | RFC 9256 |
| | endpoints as Local, Remote pair for SR-MPLS | |
+-------+---------------------------------------------+-----------+
| H | IPv6 Addresses for link endpoints as Local, | RFC 9256 |
| | Remote pair for SR-MPLS | |
+-------+---------------------------------------------+-----------+
| I | IPv6 Global Prefix with optional SR | RFC 9256 |
| | Algorithm for SRv6 | |
+-------+---------------------------------------------+-----------+
| J | IPv6 Prefix and Interface ID for link | RFC 9256 |
| | endpoints as Local, Remote pair for SRv6 | |
+-------+---------------------------------------------+-----------+
| K | IPv6 Addresses for link endpoints as Local, | RFC 9256 |
| | Remote pair for SRv6 | |
+-------+---------------------------------------------+-----------+
Table 2: Segment Types
12.1. Guidance for Designated Experts
The Designated Expert (DE) is expected to ascertain the existence of
suitable documentation (a specification) as described in [RFC8126]
and to verify that the document is permanently and publicly
available. The DE is also expected to check the clarity of purpose
and use of the requested assignment. Additionally, the DE must
verify that any request for one of these assignments has been made
available for review and comment within the IETF: the DE will post
the request to the SPRING Working Group mailing list (or a successor
mailing list designated by the IESG). If the request comes from
within the IETF, it should be documented in an Internet-Draft.
Lastly, the DE must ensure that any other request for a code point
does not conflict with work that is active or already published
within the IETF.
13. References
13.1. Normative References
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997,
<https://www.rfc-editor.org/info/rfc2119>.
[RFC7752] Gredler, H., Ed., Medved, J., Previdi, S., Farrel, A., and
S. Ray, "North-Bound Distribution of Link-State and
Traffic Engineering (TE) Information Using BGP", RFC 7752,
DOI 10.17487/RFC7752, March 2016,
<https://www.rfc-editor.org/info/rfc7752>.
[RFC8126] Cotton, M., Leiba, B., and T. Narten, "Guidelines for
Writing an IANA Considerations Section in RFCs", BCP 26,
RFC 8126, DOI 10.17487/RFC8126, June 2017,
<https://www.rfc-editor.org/info/rfc8126>.
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
May 2017, <https://www.rfc-editor.org/info/rfc8174>.
[RFC8402] Filsfils, C., Ed., Previdi, S., Ed., Ginsberg, L.,
Decraene, B., Litkowski, S., and R. Shakir, "Segment
Routing Architecture", RFC 8402, DOI 10.17487/RFC8402,
July 2018, <https://www.rfc-editor.org/info/rfc8402>.
[RFC8660] Bashandy, A., Ed., Filsfils, C., Ed., Previdi, S.,
Decraene, B., Litkowski, S., and R. Shakir, "Segment
Routing with the MPLS Data Plane", RFC 8660,
DOI 10.17487/RFC8660, December 2019,
<https://www.rfc-editor.org/info/rfc8660>.
[RFC8754] Filsfils, C., Ed., Dukes, D., Ed., Previdi, S., Leddy, J.,
Matsushima, S., and D. Voyer, "IPv6 Segment Routing Header
(SRH)", RFC 8754, DOI 10.17487/RFC8754, March 2020,
<https://www.rfc-editor.org/info/rfc8754>.
[RFC8986] Filsfils, C., Ed., Camarillo, P., Ed., Leddy, J., Voyer,
D., Matsushima, S., and Z. Li, "Segment Routing over IPv6
(SRv6) Network Programming", RFC 8986,
DOI 10.17487/RFC8986, February 2021,
<https://www.rfc-editor.org/info/rfc8986>.
[RFC9012] Patel, K., Van de Velde, G., Sangli, S., and J. Scudder,
"The BGP Tunnel Encapsulation Attribute", RFC 9012,
DOI 10.17487/RFC9012, April 2021,
<https://www.rfc-editor.org/info/rfc9012>.
13.2. Informative References
[BGP-LS-TE-POLICY]
Previdi, S., Talaulikar, K., Ed., Dong, J., Ed., Chen, M.,
Gredler, H., and J. Tantsura, "Distribution of Traffic
Engineering (TE) Policies and State using BGP-LS", Work in
Progress, Internet-Draft, draft-ietf-idr-te-lsp-
distribution-17, April 2022,
<https://datatracker.ietf.org/doc/html/draft-ietf-idr-te-
lsp-distribution-17>.
[BGP-SR-POLICY]
Previdi, S., Filsfils, C., Talaulikar, K., Ed., Mattes,
P., Jain, D., and S. Lin, "Advertising Segment Routing
Policies in BGP", Work in Progress, Internet-Draft, draft-
ietf-idr-segment-routing-te-policy-18, June 2022,
<https://datatracker.ietf.org/doc/html/draft-ietf-idr-
segment-routing-te-policy-18>.
[IGP-FLEX-ALGO]
Psenak, P., Ed., Hegde, S., Filsfils, C., Talaulikar, K.,
and A. Gulko, "IGP Flexible Algorithm", Work in Progress,
Internet-Draft, draft-ietf-lsr-flex-algo-20, May 2022,
<https://datatracker.ietf.org/doc/html/draft-ietf-lsr-
flex-algo-20>.
[PCEP-BSID-LABEL]
Sivabalan, S., Filsfils, C., Tantsura, J., Previdi, S.,
and C. Li, Ed., "Carrying Binding Label/Segment Identifier
(SID) in PCE-based Networks.", Work in Progress, Internet-
Draft, draft-ietf-pce-binding-label-sid-15, March 2022,
<https://datatracker.ietf.org/doc/html/draft-ietf-pce-
binding-label-sid-15>.
[PCEP-SR-POLICY-CP]
Koldychev, M., Sivabalan, S., Barth, C., Peng, S., and H.
Bidgoli, "PCEP extension to support Segment Routing Policy
Candidate Paths", Work in Progress, Internet-Draft, draft-
ietf-pce-segment-routing-policy-cp-07, 21 April 2022,
<https://datatracker.ietf.org/doc/html/draft-ietf-pce-
segment-routing-policy-cp-07>.
[POI-SR] Anand, M., Bardhan, S., Subrahmaniam, R., Tantsura, J.,
Mukhopadhyaya, U., and C. Filsfils, "Packet-Optical
Integration in Segment Routing", Work in Progress,
Internet-Draft, draft-anand-spring-poi-sr-08, 29 July
2019, <https://datatracker.ietf.org/doc/html/draft-anand-
spring-poi-sr-08>.
[RFC0020] Cerf, V., "ASCII format for network interchange", STD 80,
RFC 20, DOI 10.17487/RFC0020, October 1969,
<https://www.rfc-editor.org/info/rfc20>.
[RFC1195] Callon, R., "Use of OSI IS-IS for routing in TCP/IP and
dual environments", RFC 1195, DOI 10.17487/RFC1195,
December 1990, <https://www.rfc-editor.org/info/rfc1195>.
[RFC2328] Moy, J., "OSPF Version 2", STD 54, RFC 2328,
DOI 10.17487/RFC2328, April 1998,
<https://www.rfc-editor.org/info/rfc2328>.
[RFC3630] Katz, D., Kompella, K., and D. Yeung, "Traffic Engineering
(TE) Extensions to OSPF Version 2", RFC 3630,
DOI 10.17487/RFC3630, September 2003,
<https://www.rfc-editor.org/info/rfc3630>.
[RFC4760] Bates, T., Chandra, R., Katz, D., and Y. Rekhter,
"Multiprotocol Extensions for BGP-4", RFC 4760,
DOI 10.17487/RFC4760, January 2007,
<https://www.rfc-editor.org/info/rfc4760>.
[RFC5305] Li, T. and H. Smit, "IS-IS Extensions for Traffic
Engineering", RFC 5305, DOI 10.17487/RFC5305, October
2008, <https://www.rfc-editor.org/info/rfc5305>.
[RFC5307] Kompella, K., Ed. and Y. Rekhter, Ed., "IS-IS Extensions
in Support of Generalized Multi-Protocol Label Switching
(GMPLS)", RFC 5307, DOI 10.17487/RFC5307, October 2008,
<https://www.rfc-editor.org/info/rfc5307>.
[RFC5329] Ishiguro, K., Manral, V., Davey, A., and A. Lindem, Ed.,
"Traffic Engineering Extensions to OSPF Version 3",
RFC 5329, DOI 10.17487/RFC5329, September 2008,
<https://www.rfc-editor.org/info/rfc5329>.
[RFC5340] Coltun, R., Ferguson, D., Moy, J., and A. Lindem, "OSPF
for IPv6", RFC 5340, DOI 10.17487/RFC5340, July 2008,
<https://www.rfc-editor.org/info/rfc5340>.
[RFC5462] Andersson, L. and R. Asati, "Multiprotocol Label Switching
(MPLS) Label Stack Entry: "EXP" Field Renamed to "Traffic
Class" Field", RFC 5462, DOI 10.17487/RFC5462, February
2009, <https://www.rfc-editor.org/info/rfc5462>.
[RFC6830] Farinacci, D., Fuller, V., Meyer, D., and D. Lewis, "The
Locator/ID Separation Protocol (LISP)", RFC 6830,
DOI 10.17487/RFC6830, January 2013,
<https://www.rfc-editor.org/info/rfc6830>.
[RFC7471] Giacalone, S., Ward, D., Drake, J., Atlas, A., and S.
Previdi, "OSPF Traffic Engineering (TE) Metric
Extensions", RFC 7471, DOI 10.17487/RFC7471, March 2015,
<https://www.rfc-editor.org/info/rfc7471>.
[RFC8231] Crabbe, E., Minei, I., Medved, J., and R. Varga, "Path
Computation Element Communication Protocol (PCEP)
Extensions for Stateful PCE", RFC 8231,
DOI 10.17487/RFC8231, September 2017,
<https://www.rfc-editor.org/info/rfc8231>.
[RFC8476] Tantsura, J., Chunduri, U., Aldrin, S., and P. Psenak,
"Signaling Maximum SID Depth (MSD) Using OSPF", RFC 8476,
DOI 10.17487/RFC8476, December 2018,
<https://www.rfc-editor.org/info/rfc8476>.
[RFC8491] Tantsura, J., Chunduri, U., Aldrin, S., and L. Ginsberg,
"Signaling Maximum SID Depth (MSD) Using IS-IS", RFC 8491,
DOI 10.17487/RFC8491, November 2018,
<https://www.rfc-editor.org/info/rfc8491>.
[RFC8570] Ginsberg, L., Ed., Previdi, S., Ed., Giacalone, S., Ward,
D., Drake, J., and Q. Wu, "IS-IS Traffic Engineering (TE)
Metric Extensions", RFC 8570, DOI 10.17487/RFC8570, March
2019, <https://www.rfc-editor.org/info/rfc8570>.
[RFC8664] Sivabalan, S., Filsfils, C., Tantsura, J., Henderickx, W.,
and J. Hardwick, "Path Computation Element Communication
Protocol (PCEP) Extensions for Segment Routing", RFC 8664,
DOI 10.17487/RFC8664, December 2019,
<https://www.rfc-editor.org/info/rfc8664>.
[RFC8814] Tantsura, J., Chunduri, U., Talaulikar, K., Mirsky, G.,
and N. Triantafillis, "Signaling Maximum SID Depth (MSD)
Using the Border Gateway Protocol - Link State", RFC 8814,
DOI 10.17487/RFC8814, August 2020,
<https://www.rfc-editor.org/info/rfc8814>.
[RFC9086] Previdi, S., Talaulikar, K., Ed., Filsfils, C., Patel, K.,
Ray, S., and J. Dong, "Border Gateway Protocol - Link
State (BGP-LS) Extensions for Segment Routing BGP Egress
Peer Engineering", RFC 9086, DOI 10.17487/RFC9086, August
2021, <https://www.rfc-editor.org/info/rfc9086>.
[SR-POLICY-CONSID]
Filsfils, C., Talaulikar, K., Ed., Krol, P., Horneffer,
M., and P. Mattes, "SR Policy Implementation and
Deployment Considerations", Work in Progress, Internet-
Draft, draft-filsfils-spring-sr-policy-considerations-09,
24 April 2022, <https://datatracker.ietf.org/doc/html/
draft-filsfils-spring-sr-policy-considerations-09>.
[SR-POLICY-YANG]
Raza, K., Ed., Sawaya, S., Shunwan, Z., Voyer, D.,
Durrani, M., Matsushima, S., and V. Beeram, "YANG Data
Model for Segment Routing Policy", Work in Progress,
Internet-Draft, draft-ietf-spring-sr-policy-yang-01, April
2021, <https://datatracker.ietf.org/doc/html/draft-ietf-
spring-sr-policy-yang-01>.
[SR-TI-LFA]
Litkowski, S., Bashandy, A., Filsfils, C., Francois, P.,
Decraene, B., and D. Voyer, "Topology Independent Fast
Reroute using Segment Routing", Work in Progress,
Internet-Draft, draft-ietf-rtgwg-segment-routing-ti-lfa-
08, 21 January 2022,
<https://datatracker.ietf.org/doc/html/draft-ietf-rtgwg-
segment-routing-ti-lfa-08>.
[SR-TRAFFIC-ACCOUNTING]
Ali, Z., Filsfils, C., Talaulikar, K., Sivabalan, S.,
Horneffer, M., Raszuk, R., Litkowski, S., Voyer, D.,
Morton, R., and G. Dawra, "Traffic Accounting in Segment
Routing Networks", Work in Progress, Internet-Draft,
draft-ali-spring-sr-traffic-accounting-07, May 2022,
<https://datatracker.ietf.org/doc/html/draft-ali-spring-
sr-traffic-accounting-07>.
[SR-TRAFFIC-COUNTERS]
Filsfils, C., Ali, Z., Ed., Horneffer, M., Voyer, D.,
Durrani, M., and R. Raszuk, "Segment Routing Traffic
Accounting Counters", Work in Progress, Internet-Draft,
draft-filsfils-spring-sr-traffic-counters-02, October
2021, <https://datatracker.ietf.org/doc/html/draft-
filsfils-spring-sr-traffic-counters-02>.
Acknowledgement
The authors would like to thank Tarek Saad, Dhanendra Jain, Ruediger
Geib, Rob Shakir, Cheng Li, Dhruv Dhody, Gyan Mishra, Nandan Saha,
Jim Guichard, Martin Vigoureux, Benjamin Schwartz, David Schinazi,
Matthew Bocci, Cullen Jennings, and Carlos J. Bernardos for their
review, comments, and suggestions.
Contributors
The following people have contributed to this document:
Siva Sivabalan
Cisco Systems
Email: msiva@cisco.com
Zafar Ali
Cisco Systems
Email: zali@cisco.com
Jose Liste
Cisco Systems
Email: jliste@cisco.com
Francois Clad
Cisco Systems
Email: fclad@cisco.com
Kamran Raza
Cisco Systems
Email: skraza@cisco.com
Mike Koldychev
Cisco Systems
Email: mkoldych@cisco.com
Shraddha Hegde
Juniper Networks
Email: shraddha@juniper.net
Steven Lin
Google, Inc.
Email: stevenlin@google.com
Przemyslaw Krol
Google, Inc.
Email: pkrol@google.com
Martin Horneffer
Deutsche Telekom
Email: martin.horneffer@telekom.de
Dirk Steinberg
Steinberg Consulting
Email: dws@steinbergnet.net
Bruno Decraene
Orange Business Services
Email: bruno.decraene@orange.com
Stephane Litkowski
Orange Business Services
Email: stephane.litkowski@orange.com
Luay Jalil
Verizon
Email: luay.jalil@verizon.com
Authors' Addresses
Clarence Filsfils
Cisco Systems, Inc.
Pegasus Parc
De kleetlaan 6a
1831 Diegem
Belgium
Email: cfilsfil@cisco.com
Ketan Talaulikar (editor)
Cisco Systems, Inc.
India
Email: ketant.ietf@gmail.com
Daniel Voyer
Bell Canada
671 de la gauchetiere W
Montreal Quebec H3B 2M8
Canada
Email: daniel.voyer@bell.ca
Alex Bogdanov
British Telecom
Email: alex.bogdanov@bt.com
Paul Mattes
Microsoft
One Microsoft Way
Redmond, WA 98052-6399
United States of America
Email: pamattes@microsoft.com
|