summaryrefslogtreecommitdiff
path: root/doc/rfc/rfc5974.txt
blob: c7418431202a63ca266e9ae3eba14425afac434d (plain) (blame)
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
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
2213
2214
2215
2216
2217
2218
2219
2220
2221
2222
2223
2224
2225
2226
2227
2228
2229
2230
2231
2232
2233
2234
2235
2236
2237
2238
2239
2240
2241
2242
2243
2244
2245
2246
2247
2248
2249
2250
2251
2252
2253
2254
2255
2256
2257
2258
2259
2260
2261
2262
2263
2264
2265
2266
2267
2268
2269
2270
2271
2272
2273
2274
2275
2276
2277
2278
2279
2280
2281
2282
2283
2284
2285
2286
2287
2288
2289
2290
2291
2292
2293
2294
2295
2296
2297
2298
2299
2300
2301
2302
2303
2304
2305
2306
2307
2308
2309
2310
2311
2312
2313
2314
2315
2316
2317
2318
2319
2320
2321
2322
2323
2324
2325
2326
2327
2328
2329
2330
2331
2332
2333
2334
2335
2336
2337
2338
2339
2340
2341
2342
2343
2344
2345
2346
2347
2348
2349
2350
2351
2352
2353
2354
2355
2356
2357
2358
2359
2360
2361
2362
2363
2364
2365
2366
2367
2368
2369
2370
2371
2372
2373
2374
2375
2376
2377
2378
2379
2380
2381
2382
2383
2384
2385
2386
2387
2388
2389
2390
2391
2392
2393
2394
2395
2396
2397
2398
2399
2400
2401
2402
2403
2404
2405
2406
2407
2408
2409
2410
2411
2412
2413
2414
2415
2416
2417
2418
2419
2420
2421
2422
2423
2424
2425
2426
2427
2428
2429
2430
2431
2432
2433
2434
2435
2436
2437
2438
2439
2440
2441
2442
2443
2444
2445
2446
2447
2448
2449
2450
2451
2452
2453
2454
2455
2456
2457
2458
2459
2460
2461
2462
2463
2464
2465
2466
2467
2468
2469
2470
2471
2472
2473
2474
2475
2476
2477
2478
2479
2480
2481
2482
2483
2484
2485
2486
2487
2488
2489
2490
2491
2492
2493
2494
2495
2496
2497
2498
2499
2500
2501
2502
2503
2504
2505
2506
2507
2508
2509
2510
2511
2512
2513
2514
2515
2516
2517
2518
2519
2520
2521
2522
2523
2524
2525
2526
2527
2528
2529
2530
2531
2532
2533
2534
2535
2536
2537
2538
2539
2540
2541
2542
2543
2544
2545
2546
2547
2548
2549
2550
2551
2552
2553
2554
2555
2556
2557
2558
2559
2560
2561
2562
2563
2564
2565
2566
2567
2568
2569
2570
2571
2572
2573
2574
2575
2576
2577
2578
2579
2580
2581
2582
2583
2584
2585
2586
2587
2588
2589
2590
2591
2592
2593
2594
2595
2596
2597
2598
2599
2600
2601
2602
2603
2604
2605
2606
2607
2608
2609
2610
2611
2612
2613
2614
2615
2616
2617
2618
2619
2620
2621
2622
2623
2624
2625
2626
2627
2628
2629
2630
2631
2632
2633
2634
2635
2636
2637
2638
2639
2640
2641
2642
2643
2644
2645
2646
2647
2648
2649
2650
2651
2652
2653
2654
2655
2656
2657
2658
2659
2660
2661
2662
2663
2664
2665
2666
2667
2668
2669
2670
2671
2672
2673
2674
2675
2676
2677
2678
2679
2680
2681
2682
2683
2684
2685
2686
2687
2688
2689
2690
2691
2692
2693
2694
2695
2696
2697
2698
2699
2700
2701
2702
2703
2704
2705
2706
2707
2708
2709
2710
2711
2712
2713
2714
2715
2716
2717
2718
2719
2720
2721
2722
2723
2724
2725
2726
2727
2728
2729
2730
2731
2732
2733
2734
2735
2736
2737
2738
2739
2740
2741
2742
2743
2744
2745
2746
2747
2748
2749
2750
2751
2752
2753
2754
2755
2756
2757
2758
2759
2760
2761
2762
2763
2764
2765
2766
2767
2768
2769
2770
2771
2772
2773
2774
2775
2776
2777
2778
2779
2780
2781
2782
2783
2784
2785
2786
2787
2788
2789
2790
2791
2792
2793
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
2804
2805
2806
2807
2808
2809
2810
2811
2812
2813
2814
2815
2816
2817
2818
2819
2820
2821
2822
2823
2824
2825
2826
2827
2828
2829
2830
2831
2832
2833
2834
2835
2836
2837
2838
2839
2840
2841
2842
2843
2844
2845
2846
2847
2848
2849
2850
2851
2852
2853
2854
2855
2856
2857
2858
2859
2860
2861
2862
2863
2864
2865
2866
2867
2868
2869
2870
2871
2872
2873
2874
2875
2876
2877
2878
2879
2880
2881
2882
2883
2884
2885
2886
2887
2888
2889
2890
2891
2892
2893
2894
2895
2896
2897
2898
2899
2900
2901
2902
2903
2904
2905
2906
2907
2908
2909
2910
2911
2912
2913
2914
2915
2916
2917
2918
2919
2920
2921
2922
2923
2924
2925
2926
2927
2928
2929
2930
2931
2932
2933
2934
2935
2936
2937
2938
2939
2940
2941
2942
2943
2944
2945
2946
2947
2948
2949
2950
2951
2952
2953
2954
2955
2956
2957
2958
2959
2960
2961
2962
2963
2964
2965
2966
2967
2968
2969
2970
2971
2972
2973
2974
2975
2976
2977
2978
2979
2980
2981
2982
2983
2984
2985
2986
2987
2988
2989
2990
2991
2992
2993
2994
2995
2996
2997
2998
2999
3000
3001
3002
3003
3004
3005
3006
3007
3008
3009
3010
3011
3012
3013
3014
3015
3016
3017
3018
3019
3020
3021
3022
3023
3024
3025
3026
3027
3028
3029
3030
3031
3032
3033
3034
3035
3036
3037
3038
3039
3040
3041
3042
3043
3044
3045
3046
3047
3048
3049
3050
3051
3052
3053
3054
3055
3056
3057
3058
3059
3060
3061
3062
3063
3064
3065
3066
3067
3068
3069
3070
3071
3072
3073
3074
3075
3076
3077
3078
3079
3080
3081
3082
3083
3084
3085
3086
3087
3088
3089
3090
3091
3092
3093
3094
3095
3096
3097
3098
3099
3100
3101
3102
3103
3104
3105
3106
3107
3108
3109
3110
3111
3112
3113
3114
3115
3116
3117
3118
3119
3120
3121
3122
3123
3124
3125
3126
3127
3128
3129
3130
3131
3132
3133
3134
3135
3136
3137
3138
3139
3140
3141
3142
3143
3144
3145
3146
3147
3148
3149
3150
3151
3152
3153
3154
3155
3156
3157
3158
3159
3160
3161
3162
3163
3164
3165
3166
3167
3168
3169
3170
3171
3172
3173
3174
3175
3176
3177
3178
3179
3180
3181
3182
3183
3184
3185
3186
3187
3188
3189
3190
3191
3192
3193
3194
3195
3196
3197
3198
3199
3200
3201
3202
3203
3204
3205
3206
3207
3208
3209
3210
3211
3212
3213
3214
3215
3216
3217
3218
3219
3220
3221
3222
3223
3224
3225
3226
3227
3228
3229
3230
3231
3232
3233
3234
3235
3236
3237
3238
3239
3240
3241
3242
3243
3244
3245
3246
3247
3248
3249
3250
3251
3252
3253
3254
3255
3256
3257
3258
3259
3260
3261
3262
3263
3264
3265
3266
3267
3268
3269
3270
3271
3272
3273
3274
3275
3276
3277
3278
3279
3280
3281
3282
3283
3284
3285
3286
3287
3288
3289
3290
3291
3292
3293
3294
3295
3296
3297
3298
3299
3300
3301
3302
3303
3304
3305
3306
3307
3308
3309
3310
3311
3312
3313
3314
3315
3316
3317
3318
3319
3320
3321
3322
3323
3324
3325
3326
3327
3328
3329
3330
3331
3332
3333
3334
3335
3336
3337
3338
3339
3340
3341
3342
3343
3344
3345
3346
3347
3348
3349
3350
3351
3352
3353
3354
3355
3356
3357
3358
3359
3360
3361
3362
3363
3364
3365
3366
3367
3368
3369
3370
3371
3372
3373
3374
3375
3376
3377
3378
3379
3380
3381
3382
3383
3384
3385
3386
3387
3388
3389
3390
3391
3392
3393
3394
3395
3396
3397
3398
3399
3400
3401
3402
3403
3404
3405
3406
3407
3408
3409
3410
3411
3412
3413
3414
3415
3416
3417
3418
3419
3420
3421
3422
3423
3424
3425
3426
3427
3428
3429
3430
3431
3432
3433
3434
3435
3436
3437
3438
3439
3440
3441
3442
3443
3444
3445
3446
3447
3448
3449
3450
3451
3452
3453
3454
3455
3456
3457
3458
3459
3460
3461
3462
3463
3464
3465
3466
3467
3468
3469
3470
3471
3472
3473
3474
3475
3476
3477
3478
3479
3480
3481
3482
3483
3484
3485
3486
3487
3488
3489
3490
3491
3492
3493
3494
3495
3496
3497
3498
3499
3500
3501
3502
3503
3504
3505
3506
3507
3508
3509
3510
3511
3512
3513
3514
3515
3516
3517
3518
3519
3520
3521
3522
3523
3524
3525
3526
3527
3528
3529
3530
3531
3532
3533
3534
3535
3536
3537
3538
3539
3540
3541
3542
3543
3544
3545
3546
3547
3548
3549
3550
3551
3552
3553
3554
3555
3556
3557
3558
3559
3560
3561
3562
3563
3564
3565
3566
3567
3568
3569
3570
3571
3572
3573
3574
3575
3576
3577
3578
3579
3580
3581
3582
3583
3584
3585
3586
3587
3588
3589
3590
3591
3592
3593
3594
3595
3596
3597
3598
3599
3600
3601
3602
3603
3604
3605
3606
3607
3608
3609
3610
3611
3612
3613
3614
3615
3616
3617
3618
3619
3620
3621
3622
3623
3624
3625
3626
3627
3628
3629
3630
3631
3632
3633
3634
3635
3636
3637
3638
3639
3640
3641
3642
3643
3644
3645
3646
3647
3648
3649
3650
3651
3652
3653
3654
3655
3656
3657
3658
3659
3660
3661
3662
3663
3664
3665
3666
3667
3668
3669
3670
3671
3672
3673
3674
3675
3676
3677
3678
3679
3680
3681
3682
3683
3684
3685
3686
3687
3688
3689
3690
3691
3692
3693
3694
3695
3696
3697
3698
3699
3700
3701
3702
3703
3704
3705
3706
3707
3708
3709
3710
3711
3712
3713
3714
3715
3716
3717
3718
3719
3720
3721
3722
3723
3724
3725
3726
3727
3728
3729
3730
3731
3732
3733
3734
3735
3736
3737
3738
3739
3740
3741
3742
3743
3744
3745
3746
3747
3748
3749
3750
3751
3752
3753
3754
3755
3756
3757
3758
3759
3760
3761
3762
3763
3764
3765
3766
3767
3768
3769
3770
3771
3772
3773
3774
3775
3776
3777
3778
3779
3780
3781
3782
3783
3784
3785
3786
3787
3788
3789
3790
3791
3792
3793
3794
3795
3796
3797
3798
3799
3800
3801
3802
3803
3804
3805
3806
3807
3808
3809
3810
3811
3812
3813
3814
3815
3816
3817
3818
3819
3820
3821
3822
3823
3824
3825
3826
3827
3828
3829
3830
3831
3832
3833
3834
3835
3836
3837
3838
3839
3840
3841
3842
3843
3844
3845
3846
3847
3848
3849
3850
3851
3852
3853
3854
3855
3856
3857
3858
3859
3860
3861
3862
3863
3864
3865
3866
3867
3868
3869
3870
3871
3872
3873
3874
3875
3876
3877
3878
3879
3880
3881
3882
3883
3884
3885
3886
3887
3888
3889
3890
3891
3892
3893
3894
3895
3896
3897
3898
3899
3900
3901
3902
3903
3904
3905
3906
3907
3908
3909
3910
3911
3912
3913
3914
3915
3916
3917
3918
3919
3920
3921
3922
3923
3924
3925
3926
3927
3928
3929
3930
3931
3932
3933
3934
3935
3936
3937
3938
3939
3940
3941
3942
3943
3944
3945
3946
3947
3948
3949
3950
3951
3952
3953
3954
3955
3956
3957
3958
3959
3960
3961
3962
3963
3964
3965
3966
3967
3968
3969
3970
3971
3972
3973
3974
3975
3976
3977
3978
3979
3980
3981
3982
3983
3984
3985
3986
3987
3988
3989
3990
3991
3992
3993
3994
3995
3996
3997
3998
3999
4000
4001
4002
4003
4004
4005
4006
4007
4008
4009
4010
4011
4012
4013
4014
4015
4016
4017
4018
4019
4020
4021
4022
4023
4024
4025
4026
4027
4028
4029
4030
4031
4032
4033
4034
4035
4036
4037
4038
4039
4040
4041
4042
4043
4044
4045
4046
4047
4048
4049
4050
4051
4052
4053
4054
4055
4056
4057
4058
4059
4060
4061
4062
4063
4064
4065
4066
4067
4068
4069
4070
4071
4072
4073
4074
4075
4076
4077
4078
4079
4080
4081
4082
4083
4084
4085
4086
4087
4088
4089
4090
4091
4092
4093
4094
4095
4096
4097
4098
4099
4100
4101
4102
4103
4104
4105
4106
4107
4108
4109
4110
4111
4112
4113
4114
4115
4116
4117
4118
4119
4120
4121
4122
4123
4124
4125
4126
4127
4128
4129
4130
4131
4132
4133
4134
4135
4136
4137
4138
4139
4140
4141
4142
4143
4144
4145
4146
4147
4148
4149
4150
4151
4152
4153
4154
4155
4156
4157
4158
4159
4160
4161
4162
4163
4164
4165
4166
4167
4168
4169
4170
4171
4172
4173
4174
4175
4176
4177
4178
4179
4180
4181
4182
4183
4184
4185
4186
4187
4188
4189
4190
4191
4192
4193
4194
4195
4196
4197
4198
4199
4200
4201
4202
4203
4204
4205
4206
4207
4208
4209
4210
4211
4212
4213
4214
4215
4216
4217
4218
4219
4220
4221
4222
4223
4224
4225
4226
4227
4228
4229
4230
4231
4232
4233
4234
4235
4236
4237
4238
4239
4240
4241
4242
4243
4244
4245
4246
4247
4248
4249
4250
4251
4252
4253
4254
4255
4256
4257
4258
4259
4260
4261
4262
4263
4264
4265
4266
4267
4268
4269
4270
4271
4272
4273
4274
4275
4276
4277
4278
4279
4280
4281
4282
4283
4284
4285
4286
4287
4288
4289
4290
4291
4292
4293
4294
4295
4296
4297
4298
4299
4300
4301
4302
4303
4304
4305
4306
4307
4308
4309
4310
4311
4312
4313
4314
4315
4316
4317
4318
4319
4320
4321
4322
4323
4324
4325
4326
4327
4328
4329
4330
4331
4332
4333
4334
4335
4336
4337
4338
4339
4340
4341
4342
4343
4344
4345
4346
4347
4348
4349
4350
4351
4352
4353
4354
4355
4356
4357
4358
4359
4360
4361
4362
4363
4364
4365
4366
4367
4368
4369
4370
4371
4372
4373
4374
4375
4376
4377
4378
4379
4380
4381
4382
4383
4384
4385
4386
4387
4388
4389
4390
4391
4392
4393
4394
4395
4396
4397
4398
4399
4400
4401
4402
4403
4404
4405
4406
4407
4408
4409
4410
4411
4412
4413
4414
4415
4416
4417
4418
4419
4420
4421
4422
4423
4424
4425
4426
4427
4428
4429
4430
4431
4432
4433
4434
4435
4436
4437
4438
4439
4440
4441
4442
4443
4444
4445
4446
4447
4448
4449
4450
4451
4452
4453
4454
4455
4456
4457
4458
4459
4460
4461
4462
4463
4464
4465
4466
4467
4468
4469
4470
4471
4472
4473
4474
4475
4476
4477
4478
4479
4480
4481
4482
4483
4484
4485
4486
4487
4488
4489
4490
4491
4492
4493
4494
4495
4496
4497
4498
4499
4500
4501
4502
4503
4504
4505
4506
4507
4508
4509
4510
4511
4512
4513
4514
4515
4516
4517
4518
4519
4520
4521
4522
4523
4524
4525
4526
4527
4528
4529
4530
4531
4532
4533
4534
4535
4536
4537
4538
4539
4540
4541
4542
4543
4544
4545
4546
4547
4548
4549
4550
4551
4552
4553
4554
4555
4556
4557
4558
4559
4560
4561
4562
4563
4564
4565
4566
4567
4568
4569
4570
4571
4572
4573
4574
4575
4576
4577
4578
4579
4580
4581
4582
4583
4584
4585
4586
4587
4588
4589
4590
4591
4592
4593
4594
4595
4596
4597
4598
4599
4600
4601
4602
4603
4604
4605
4606
4607
4608
4609
4610
4611
4612
4613
4614
4615
4616
4617
4618
4619
4620
4621
4622
4623
4624
4625
4626
4627
4628
4629
4630
4631
4632
4633
4634
4635
4636
4637
4638
4639
4640
4641
4642
4643
4644
4645
4646
4647
4648
4649
4650
4651
4652
4653
4654
4655
4656
4657
4658
4659
4660
4661
4662
4663
4664
4665
4666
4667
4668
4669
4670
4671
4672
4673
4674
4675
4676
4677
4678
4679
4680
4681
4682
4683
4684
4685
4686
4687
4688
4689
4690
4691
4692
4693
4694
4695
4696
4697
4698
4699
4700
4701
4702
4703
4704
4705
4706
4707
4708
4709
4710
4711
4712
4713
4714
4715
4716
4717
4718
4719
4720
4721
4722
4723
4724
4725
4726
4727
4728
4729
4730
4731
4732
4733
4734
4735
4736
4737
4738
4739
4740
4741
4742
4743
4744
4745
4746
4747
4748
4749
4750
4751
4752
4753
4754
4755
4756
4757
4758
4759
4760
4761
4762
4763
4764
4765
4766
4767
4768
4769
4770
4771
4772
4773
4774
4775
4776
4777
4778
4779
4780
4781
4782
4783
4784
4785
4786
4787
4788
4789
4790
4791
4792
4793
4794
4795
4796
4797
4798
4799
4800
4801
4802
4803
4804
4805
4806
4807
4808
4809
4810
4811
4812
4813
4814
4815
4816
4817
4818
4819
4820
4821
4822
4823
4824
4825
4826
4827
4828
4829
4830
4831
4832
4833
4834
4835
4836
4837
4838
4839
4840
4841
4842
4843
4844
4845
4846
4847
4848
4849
4850
4851
4852
4853
4854
4855
4856
4857
4858
4859
4860
4861
4862
4863
4864
4865
4866
4867
4868
4869
4870
4871
4872
4873
4874
4875
4876
4877
4878
4879
4880
4881
4882
4883
4884
4885
4886
4887
4888
4889
4890
4891
4892
4893
4894
4895
4896
4897
4898
4899
4900
4901
4902
4903
4904
4905
4906
4907
4908
4909
4910
4911
4912
4913
4914
4915
4916
4917
4918
4919
4920
4921
4922
4923
4924
4925
4926
4927
4928
4929
4930
4931
4932
4933
4934
4935
4936
4937
4938
4939
4940
4941
4942
4943
4944
4945
4946
4947
4948
4949
4950
4951
4952
4953
4954
4955
4956
4957
4958
4959
4960
4961
4962
4963
4964
4965
4966
4967
4968
4969
4970
4971
4972
4973
4974
4975
4976
4977
4978
4979
4980
4981
4982
4983
4984
4985
4986
4987
4988
4989
4990
4991
4992
4993
4994
4995
4996
4997
4998
4999
5000
5001
5002
5003
5004
5005
5006
5007
5008
5009
5010
5011
5012
5013
5014
5015
5016
5017
5018
5019
5020
5021
5022
5023
5024
5025
5026
5027
5028
5029
5030
5031
5032
5033
5034
5035
5036
5037
5038
5039
5040
5041
5042
5043
5044
5045
5046
5047
5048
5049
5050
5051
5052
5053
5054
5055
5056
5057
5058
5059
5060
5061
5062
5063
5064
5065
5066
5067
5068
5069
5070
5071
5072
5073
5074
5075
5076
5077
5078
5079
5080
5081
5082
5083
5084
5085
5086
5087
5088
5089
5090
5091
5092
5093
5094
5095
5096
5097
5098
5099
5100
5101
5102
5103
5104
5105
5106
5107
5108
5109
5110
5111
5112
5113
5114
5115
5116
5117
5118
5119
5120
5121
5122
5123
5124
5125
5126
5127
5128
5129
5130
5131
5132
5133
5134
5135
5136
5137
5138
5139
5140
5141
5142
5143
5144
5145
5146
5147
5148
5149
5150
5151
5152
5153
5154
5155
5156
5157
5158
5159
5160
5161
5162
5163
5164
5165
5166
5167
5168
5169
5170
5171
5172
5173
5174
5175
5176
5177
5178
5179
5180
5181
5182
5183
5184
5185
5186
5187
5188
5189
5190
5191
5192
5193
5194
5195
5196
5197
5198
5199
5200
5201
5202
5203
5204
5205
5206
5207
5208
5209
5210
5211
5212
5213
5214
5215
5216
5217
5218
5219
5220
5221
5222
5223
5224
5225
5226
5227
5228
5229
5230
5231
5232
5233
5234
5235
5236
5237
5238
5239
5240
5241
5242
5243
5244
5245
5246
5247
5248
5249
5250
5251
5252
5253
5254
5255
5256
5257
5258
5259
5260
5261
5262
5263
5264
5265
5266
5267
5268
5269
5270
5271
5272
5273
5274
5275
5276
5277
5278
5279
5280
5281
5282
5283
5284
5285
5286
5287
5288
5289
5290
5291
5292
5293
5294
5295
5296
5297
5298
5299
5300
5301
5302
5303
5304
5305
5306
5307
5308
5309
5310
5311
5312
5313
5314
5315
5316
5317
5318
5319
5320
5321
5322
5323
5324
5325
5326
5327
5328
5329
5330
5331
5332
5333
5334
5335
5336
5337
5338
5339
5340
5341
5342
5343
5344
5345
5346
5347
5348
5349
5350
5351
5352
5353
5354
5355
5356
5357
5358
5359
5360
5361
5362
5363
5364
5365
5366
5367
5368
5369
5370
5371
5372
5373
5374
5375
5376
5377
5378
5379
5380
5381
5382
5383
5384
5385
5386
5387
5388
5389
5390
5391
5392
5393
5394
5395
5396
5397
5398
5399
5400
5401
5402
5403
5404
5405
5406
5407
5408
5409
5410
5411
5412
5413
5414
5415
5416
5417
5418
5419
5420
5421
5422
5423
5424
5425
5426
5427
5428
5429
5430
5431
5432
5433
5434
5435
5436
5437
5438
5439
5440
5441
5442
5443
5444
5445
5446
5447
5448
5449
5450
5451
5452
5453
5454
5455
5456
5457
5458
5459
5460
5461
5462
5463
5464
5465
5466
5467
5468
5469
5470
5471
5472
5473
5474
5475
5476
5477
5478
5479
5480
5481
5482
5483
5484
5485
5486
5487
5488
5489
5490
5491
5492
5493
5494
5495
5496
5497
5498
5499
5500
5501
5502
5503
5504
5505
5506
5507
5508
5509
5510
5511
5512
5513
5514
5515
5516
5517
5518
5519
5520
5521
5522
5523
5524
5525
5526
5527
5528
5529
5530
5531
5532
5533
5534
5535
5536
5537
5538
5539
5540
5541
5542
5543
5544
5545
5546
5547
5548
5549
5550
5551
5552
5553
5554
5555
5556
5557
5558
5559
5560
5561
5562
5563
5564
5565
5566
5567
5568
5569
5570
5571
5572
5573
5574
5575
5576
5577
5578
5579
5580
5581
5582
5583
5584
5585
5586
5587
5588
5589
5590
5591
5592
5593
5594
5595
5596
5597
5598
5599
5600
5601
5602
5603
5604
5605
5606
5607
5608
5609
5610
5611
5612
5613
5614
5615
5616
5617
5618
5619
5620
5621
5622
5623
5624
5625
5626
5627
5628
5629
5630
5631
5632
5633
5634
5635
5636
5637
5638
5639
5640
5641
5642
5643
5644
5645
5646
5647
5648
5649
5650
5651
5652
5653
5654
5655
5656
5657
5658
5659
5660
5661
5662
5663
5664
5665
5666
5667
5668
5669
5670
5671
5672
5673
5674
5675
5676
5677
5678
5679
5680
5681
5682
5683
5684
5685
5686
5687
5688
5689
5690
5691
5692
5693
5694
5695
5696
5697
5698
5699
5700
5701
5702
5703
5704
5705
5706
5707
5708
5709
5710
5711
5712
5713
5714
5715
Internet Engineering Task Force (IETF)                         J. Manner
Request for Comments: 5974                              Aalto University
Category: Experimental                                    G. Karagiannis
ISSN: 2070-1721                            University of Twente/Ericsson
                                                             A. McDonald
                                                                    Roke
                                                            October 2010


 NSIS Signaling Layer Protocol (NSLP) for Quality-of-Service Signaling

Abstract

   This specification describes the NSIS Signaling Layer Protocol (NSLP)
   for signaling Quality of Service (QoS) reservations in the Internet.
   It is in accordance with the framework and requirements developed in
   NSIS.  Together with General Internet Signaling Transport (GIST), it
   provides functionality similar to RSVP and extends it.  The QoS NSLP
   is independent of the underlying QoS specification or architecture
   and provides support for different reservation models.  It is
   simplified by the elimination of support for multicast flows.  This
   specification explains the overall protocol approach, describes the
   design decisions made, and provides examples.  It specifies object,
   message formats, and processing rules.

Status of This Memo

   This document is not an Internet Standards Track specification; it is
   published for examination, experimental implementation, and
   evaluation.

   This document defines an Experimental Protocol for the Internet
   community.  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).  Not
   all documents approved by the IESG are a candidate for any level of
   Internet Standard; see Section 2 of RFC 5741.

   Information about the current status of this document, any errata,
   and how to provide feedback on it may be obtained at
   http://www.rfc-editor.org/info/rfc5974.









Manner, et al.                Experimental                      [Page 1]
^L
RFC 5974                        QoS NSLP                    October 2010


Copyright Notice

   Copyright (c) 2010 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
   (http://trustee.ietf.org/license-info) in effect on the date of
   publication of this document.  Please review these documents
   carefully, as they describe your rights and restrictions with respect
   to this document.  Code Components extracted from this document must
   include Simplified BSD License text as described in Section 4.e of
   the Trust Legal Provisions and are provided without warranty as
   described in the Simplified BSD License.

Table of Contents

   1.  Introduction . . . . . . . . . . . . . . . . . . . . . . . . .  4
   2.  Terminology  . . . . . . . . . . . . . . . . . . . . . . . . .  5
   3.  Protocol Overview  . . . . . . . . . . . . . . . . . . . . . .  6
     3.1.  Overall Approach . . . . . . . . . . . . . . . . . . . . .  6
       3.1.1.  Protocol Messages  . . . . . . . . . . . . . . . . . .  9
       3.1.2.  QoS Models and QoS Specifications  . . . . . . . . . . 10
       3.1.3.  Policy Control . . . . . . . . . . . . . . . . . . . . 12
     3.2.  Design Background  . . . . . . . . . . . . . . . . . . . . 13
       3.2.1.  Soft States  . . . . . . . . . . . . . . . . . . . . . 13
       3.2.2.  Sender and Receiver Initiation . . . . . . . . . . . . 13
       3.2.3.  Protection against Message Re-ordering and
               Duplication  . . . . . . . . . . . . . . . . . . . . . 14
       3.2.4.  Explicit Confirmations . . . . . . . . . . . . . . . . 14
       3.2.5.  Reduced Refreshes  . . . . . . . . . . . . . . . . . . 14
       3.2.6.  Summary Refreshes and Summary Tear . . . . . . . . . . 15
       3.2.7.  Message Scoping  . . . . . . . . . . . . . . . . . . . 15
       3.2.8.  Session Binding  . . . . . . . . . . . . . . . . . . . 16
       3.2.9.  Message Binding  . . . . . . . . . . . . . . . . . . . 16
       3.2.10. Layering . . . . . . . . . . . . . . . . . . . . . . . 17
       3.2.11. Support for Request Priorities . . . . . . . . . . . . 18
       3.2.12. Rerouting  . . . . . . . . . . . . . . . . . . . . . . 19
       3.2.13. Preemption . . . . . . . . . . . . . . . . . . . . . . 24
     3.3.  GIST Interactions  . . . . . . . . . . . . . . . . . . . . 24
       3.3.1.  Support for Bypassing Intermediate Nodes . . . . . . . 25
       3.3.2.  Support for Peer Change Identification . . . . . . . . 25
       3.3.3.  Support for Stateless Operation  . . . . . . . . . . . 26
       3.3.4.  Priority of Signaling Messages . . . . . . . . . . . . 26
       3.3.5.  Knowledge of Intermediate QoS-NSLP-Unaware Nodes . . . 26
   4.  Examples of QoS NSLP Operation . . . . . . . . . . . . . . . . 26
     4.1.  Sender-Initiated Reservation . . . . . . . . . . . . . . . 27
     4.2.  Sending a Query  . . . . . . . . . . . . . . . . . . . . . 28



Manner, et al.                Experimental                      [Page 2]
^L
RFC 5974                        QoS NSLP                    October 2010


     4.3.  Basic Receiver-Initiated Reservation . . . . . . . . . . . 29
     4.4.  Bidirectional Reservations . . . . . . . . . . . . . . . . 31
     4.5.  Aggregate Reservations . . . . . . . . . . . . . . . . . . 33
     4.6.  Message Binding  . . . . . . . . . . . . . . . . . . . . . 34
     4.7.  Reduced-State or Stateless Interior Nodes  . . . . . . . . 38
       4.7.1.  Sender-Initiated Reservation . . . . . . . . . . . . . 38
       4.7.2.  Receiver-Initiated Reservation . . . . . . . . . . . . 40
     4.8.  Proxy Mode . . . . . . . . . . . . . . . . . . . . . . . . 41
   5.  QoS NSLP Functional Specification  . . . . . . . . . . . . . . 42
     5.1.  QoS NSLP Message and Object Formats  . . . . . . . . . . . 42
       5.1.1.  Common Header  . . . . . . . . . . . . . . . . . . . . 42
       5.1.2.  Message Formats  . . . . . . . . . . . . . . . . . . . 44
       5.1.3.  Object Formats . . . . . . . . . . . . . . . . . . . . 47
     5.2.  General Processing Rules . . . . . . . . . . . . . . . . . 60
       5.2.1.  State Manipulation . . . . . . . . . . . . . . . . . . 61
       5.2.2.  Message Forwarding . . . . . . . . . . . . . . . . . . 62
       5.2.3.  Standard Message Processing Rules  . . . . . . . . . . 62
       5.2.4.  Retransmissions  . . . . . . . . . . . . . . . . . . . 62
       5.2.5.  Rerouting  . . . . . . . . . . . . . . . . . . . . . . 63
     5.3.  Object Processing  . . . . . . . . . . . . . . . . . . . . 65
       5.3.1.  Reservation Sequence Number (RSN)  . . . . . . . . . . 65
       5.3.2.  Request Identification Information (RII) . . . . . . . 66
       5.3.3.  BOUND-SESSION-ID . . . . . . . . . . . . . . . . . . . 67
       5.3.4.  REFRESH-PERIOD . . . . . . . . . . . . . . . . . . . . 67
       5.3.5.  INFO-SPEC  . . . . . . . . . . . . . . . . . . . . . . 68
       5.3.6.  SESSION-ID-LIST  . . . . . . . . . . . . . . . . . . . 70
       5.3.7.  RSN-LIST . . . . . . . . . . . . . . . . . . . . . . . 71
       5.3.8.  QSPEC  . . . . . . . . . . . . . . . . . . . . . . . . 71
     5.4.  Message Processing Rules . . . . . . . . . . . . . . . . . 72
       5.4.1.  RESERVE Messages . . . . . . . . . . . . . . . . . . . 72
       5.4.2.  QUERY Messages . . . . . . . . . . . . . . . . . . . . 77
       5.4.3.  RESPONSE Messages  . . . . . . . . . . . . . . . . . . 78
       5.4.4.  NOTIFY Messages  . . . . . . . . . . . . . . . . . . . 79
   6.  IANA Considerations  . . . . . . . . . . . . . . . . . . . . . 80
     6.1.  QoS NSLP Message Type  . . . . . . . . . . . . . . . . . . 81
     6.2.  NSLP Message Objects . . . . . . . . . . . . . . . . . . . 81
     6.3.  QoS NSLP Binding Codes . . . . . . . . . . . . . . . . . . 82
     6.4.  QoS NSLP Error Classes and Error Codes . . . . . . . . . . 82
     6.5.  QoS NSLP Error Source Identifiers  . . . . . . . . . . . . 83
     6.6.  NSLP IDs and Router Alert Option Values  . . . . . . . . . 83
   7.  Security Considerations  . . . . . . . . . . . . . . . . . . . 83
     7.1.  Trust Relationship Model . . . . . . . . . . . . . . . . . 85
     7.2.  Authorization Model Examples . . . . . . . . . . . . . . . 87
       7.2.1.  Authorization for the Two-Party Approach . . . . . . . 87
       7.2.2.  Token-Based Three-Party Approach . . . . . . . . . . . 88
       7.2.3.  Generic Three-Party Approach . . . . . . . . . . . . . 90
     7.3.  Computing the Authorization Decision . . . . . . . . . . . 90
   8.  Acknowledgments  . . . . . . . . . . . . . . . . . . . . . . . 91



Manner, et al.                Experimental                      [Page 3]
^L
RFC 5974                        QoS NSLP                    October 2010


   9.  Contributors . . . . . . . . . . . . . . . . . . . . . . . . . 91
   10. References . . . . . . . . . . . . . . . . . . . . . . . . . . 91
     10.1. Normative References . . . . . . . . . . . . . . . . . . . 91
     10.2. Informative References . . . . . . . . . . . . . . . . . . 91
   Appendix A.  Abstract NSLP-RMF API . . . . . . . . . . . . . . . . 94
     A.1.  Triggers from QOS-NSLP towards RMF . . . . . . . . . . . . 94
     A.2.  Triggers from RMF/QOSM towards QOS-NSLP  . . . . . . . . . 96
     A.3.  Configuration Interface  . . . . . . . . . . . . . . . . . 99
   Appendix B.  Glossary  . . . . . . . . . . . . . . . . . . . . .  100

1.  Introduction

   This document defines a Quality of Service (QoS) NSIS Signaling Layer
   Protocol (NSLP), henceforth referred to as the "QoS NSLP".  This
   protocol establishes and maintains state at nodes along the path of a
   data flow for the purpose of providing some forwarding resources for
   that flow.  It is intended to satisfy the QoS-related requirements of
   RFC 3726 [RFC3726].  This QoS NSLP is part of a larger suite of
   signaling protocols, whose structure is outlined in the NSIS
   framework [RFC4080].  The abstract NTLP has been developed into a
   concrete protocol, GIST (General Internet Signaling Transport)
   [RFC5971].  The QoS NSLP relies on GIST to carry out many aspects of
   signaling message delivery.

   The design of the QoS NSLP is conceptually similar to RSVP [RFC2205]
   and uses soft-state peer-to-peer refresh messages as the primary
   state management mechanism (i.e., state installation/refresh is
   performed between pairs of adjacent NSLP nodes, rather than in an
   end-to-end fashion along the complete signaling path).  The QoS NSLP
   extends the set of reservation mechanisms to meet the requirements of
   RFC 3726 [RFC3726], in particular, support of sender- or receiver-
   initiated reservations, as well as a type of bidirectional
   reservation and support of reservations between arbitrary nodes,
   e.g., edge-to-edge, end-to-access, etc.  On the other hand, there is
   currently no support for IP multicast.

   A distinction is made between the operation of the signaling protocol
   and the information required for the operation of the Resource
   Management Function (RMF).  This document describes the signaling
   protocol, whilst [RFC5975] describes the RMF-related information
   carried in the QSPEC (QoS Specification) object in QoS NSLP messages.
   This is similar to the decoupling between RSVP and the IntServ
   architecture [RFC1633].  The QSPEC carries information on resources
   available, resources required, traffic descriptions, and other
   information required by the RMF.






Manner, et al.                Experimental                      [Page 4]
^L
RFC 5974                        QoS NSLP                    October 2010


   This document is structured as follows.  The overall protocol design
   is outlined in Section 3.1.  The operation and use of the QoS NSLP is
   described in more detail in the rest of Section 3.  Section 4 then
   clarifies the protocol by means of a number of examples.  These
   sections should be read by people interested in the overall protocol
   capabilities.  The functional specification in Section 5 contains
   more detailed object and message formats and processing rules and
   should be the basis for implementers.  The subsequent sections
   describe IANA allocation issues and security considerations.

2.  Terminology

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
   document are to be interpreted as described in RFC 2119 [RFC2119].

   The terminology defined by GIST [RFC5971] applies to this document.

   In addition, the following terms are used:

   QNE: an NSIS Entity (NE), which supports the QoS NSLP.

   QNI: the first node in the sequence of QNEs that issues a reservation
   request for a session.

   QNR: the last node in the sequence of QNEs that receives a
   reservation request for a session.

   P-QNE: Proxy-QNE, a node set to reply to messages with the PROXY
   scope flag set.

   Session: A session defines an association between a QNI and QNR
   related to a data flow.  Intermediate QNEs on the path, the QNI, and
   the QNR use the same identifier to refer to the state stored for the
   association.  The same QNI and QNR may have more than one session
   active at any one time.

   Session Identification (SESSION-ID, SID): This is a cryptographically
   random and (probabilistically) globally unique identifier of the
   application-layer session that is associated with a certain flow.
   Often, there will only be one data flow for a given session, but in
   mobility/multihoming scenarios, there may be more than one, and they
   may be differently routed [RFC4080].

   Source or message source: The one of two adjacent NSLP peers that is
   sending a signaling message (maybe the upstream or the downstream
   peer).  Note that this is not necessarily the QNI.




Manner, et al.                Experimental                      [Page 5]
^L
RFC 5974                        QoS NSLP                    October 2010


   QoS NSLP operation state: State used/kept by the QoS NSLP processing
   to handle messaging aspects.

   QoS reservation state: State used/kept by the Resource Management
   Function to describe reserved resources for a session.

   Flow ID: This is essentially the Message Routing Information (MRI) in
   GIST for path-coupled signaling.

   Figure 1 shows the components that have a role in a QoS NSLP
   signaling session.  The flow sender and receiver would in most cases
   be part of the QNI and QNR nodes.  Yet, these may be separate nodes,
   too.

                        QoS NSLP nodes
  IP address            (QoS-unaware NSIS nodes are          IP address
  = Flow                 not shown)                          = Flow
  Source                 |          |            |           Destination
  Address                |          |            |           Address
                         V          V            V
  +--------+  Data +------+      +------+       +------+     +--------+
  |  Flow  |-------|------|------|------|-------|------|---->|  Flow  |
  | Sender |  Flow |      |      |      |       |      |     |Receiver|
  +--------+       | QNI  |      | QNE  |       | QNR  |     +--------+
                   |      |      |      |       |      |
                   +------+      +------+       +------+
                           =====================>
                           <=====================
                                 Signaling
                                   Flow

             Figure 1: Components of the QoS NSLP Architecture

   A glossary of terms and abbreviations used in this document can be
   found in Appendix B.

3.  Protocol Overview

3.1.  Overall Approach

   This section presents a logical model for the operation of the QoS
   NSLP and associated provisioning mechanisms within a single node.
   The model is shown in Figure 2.








Manner, et al.                Experimental                      [Page 6]
^L
RFC 5974                        QoS NSLP                    October 2010


                                     +-----------------+
                                     |      Local      |
                                     | Applications or |
                                     |Management (e.g.,|
                                     | for aggregates) |
                                     +-----------------+
                                              ^
                                              V
                                              V
               +----------+             +----------+      +---------+
               | QoS NSLP |             | Resource |      | Policy  |
               |Processing|<<<<<<>>>>>>>|Management|<<<>>>| Control |
               +----------+             +----------+      +---------+
                 .  ^   |              *      ^
                 |  V   .            *        ^
               +----------+        *          ^
               |   NTLP   |       *           ^
               |Processing|       *           V
               +----------+       *           V
                 |      |         *           V
     ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
                 .      .         *           V
                 |      |         *     .............................
                 .      .         *     .   Traffic Control         .
                 |      |         *     .                +---------+.
                 .      .         *     .                |Admission|.
                 |      |         *     .                | Control |.
       +----------+    +------------+   .                +---------+.
   <-.-|  Input   |    | Outgoing   |-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.->
       |  Packet  |    | Interface  |   .+----------+    +---------+.
   ===>|Processing|====| Selection  |===.|  Packet  |====| Packet  |.==>
       |          |    |(Forwarding)|   .|Classifier|     Scheduler|.
       +----------+    +------------+   .+----------+    +---------+.
                                        .............................
           <.-.-> = signaling flow
           =====> = data flow (sender --> receiver)
           <<<>>> = control and configuration operations
           ****** = routing table manipulation

                       Figure 2: QoS NSLP in a Node

   This diagram shows an example implementation scenario where QoS
   conditioning is performed on the output interface.  However, this
   does not limit the possible implementations.  For example, in some
   cases, traffic conditioning may be performed on the incoming
   interface, or it may be split over the input and output interfaces.





Manner, et al.                Experimental                      [Page 7]
^L
RFC 5974                        QoS NSLP                    October 2010


   Also, the interactions with the Policy Control component may be more
   complex, involving interaction with the Resource Management Function,
   and the AAA infrastructure.

   From the perspective of a single node, the request for QoS may result
   from a local application request or from processing an incoming QoS
   NSLP message.  The request from a local application includes not only
   user applications but also network management and the policy control
   module.  For example, a request could come from multimedia
   applications, initiate a tunnel to handle an aggregate, interwork
   with some other reservation protocol (such as RSVP), and contain an
   explicit teardown triggered by a AAA policy control module.  In this
   sense, the model does not distinguish between hosts and routers.

   Incoming messages are captured during input packet processing and
   handled by GIST.  Only messages related to QoS are passed to the QoS
   NSLP.  GIST may also generate triggers to the QoS NSLP (e.g.,
   indications that a route change has occurred).  The QoS request is
   handled by the RMF, which coordinates the activities required to
   grant and configure the resource.  It also handles policy-specific
   aspects of QoS signaling.

   The grant processing involves two local decision modules, 'policy
   control' and 'admission control'.  Policy control determines whether
   the user is authorized to make the reservation.  Admission control
   determines whether the network of the node has sufficient available
   resources to supply the requested QoS.  If both checks succeed,
   parameters are set in the packet classifier and in the link-layer
   interface (e.g., in the packet scheduler) to obtain the desired QoS.
   Error notifications are passed back to the request originator.  The
   Resource Management Function may also manipulate the forwarding
   tables at this stage to select (or at least pin) a route; this must
   be done before interface-dependent actions are carried out (including
   sending outgoing messages over any new route), and is in any case
   invisible to the operation of the protocol.

   Policy control is expected to make use of the authentication
   infrastructure or the authentication protocols external to the node
   itself.  Some discussion can be found in a separate document on
   authorization issues [qos-auth].  More generally, the processing of
   policy and Resource Management Functions may be outsourced to an
   external node, leaving only 'stubs' co-located with the NSLP node;
   this is not visible to the protocol operation.  A more detailed
   discussion of authentication and authorization can be found in
   Section 3.1.3.






Manner, et al.                Experimental                      [Page 8]
^L
RFC 5974                        QoS NSLP                    October 2010


   Admission control, packet scheduling, and any part of policy control
   beyond simple authorization have to be implemented using specific
   definitions for types and levels of QoS.  A key assumption is made
   that the QoS NSLP is independent of the QoS parameters (e.g., IntServ
   service elements).  These are captured in a QoS model and interpreted
   only by the resource management and associated functions, and are
   opaque to the QoS NSLP itself.  QoS models are discussed further in
   Section 3.1.2.

   The final stage of processing for a resource request is to indicate
   to the QoS NSLP protocol processing that the required resources have
   been configured.  The QoS NSLP may generate an acknowledgment message
   in one direction, and may forward the resource request in the other.
   Message routing is carried out by the GIST module.  Note that while
   Figure 2 shows a unidirectional data flow, the signaling messages can
   pass in both directions through the node, depending on the particular
   message and orientation of the reservation.

3.1.1.  Protocol Messages

   The QoS NSLP uses four message types:

   RESERVE: The RESERVE message is the only message that manipulates QoS
   NSLP reservation state.  It is used to create, refresh, modify, and
   remove such state.  The result of a RESERVE message is the same
   whether a message is received once or many times.

   QUERY: A QUERY message is used to request information about the data
   path without making a reservation.  This functionality can be used to
   make reservations or to support certain QoS models.  The information
   obtained from a QUERY may be used in the admission control process of
   a QNE (e.g., in case of measurement-based admission control).  Note
   that a QUERY does not change existing reservation state.

   RESPONSE: The RESPONSE message is used to provide information about
   the result of a previous QoS NSLP message.  This includes explicit
   confirmation of the state manipulation signaled in the RESERVE
   message, and the response to a QUERY message or an error code if the
   QNE or QNR is unable to provide the requested information or if the
   response is negative.  The RESPONSE message does not cause any
   reservation state to be installed or modified.

   NOTIFY: NOTIFY messages are used to convey information to a QNE.
   They differ from RESPONSE messages in that they are sent
   asynchronously and need not refer to any particular state or
   previously received message.  The information conveyed by a NOTIFY





Manner, et al.                Experimental                      [Page 9]
^L
RFC 5974                        QoS NSLP                    October 2010


   message is typically related to error conditions.  Examples would be
   notification to an upstream peer about state being torn down or
   notification when a reservation has been preempted.

   QoS NSLP messages are sent peer-to-peer.  This means that a QNE
   considers its adjacent upstream or downstream peer to be the source
   of each message.

   Each protocol message has a common header which indicates the message
   type and contains various flag bits.  Message formats are defined in
   Section 5.1.2.  Message processing rules are defined in Section 5.4.

   QoS NSLP messages contain three types of objects:

   1.  Control Information: Control information objects carry general
       information for the QoS NSLP processing, such as sequence numbers
       or whether a response is required.

   2.  QoS specifications (QSPECs): QSPEC objects describe the actual
       resources that are required and depend on the QoS model being
       used.  Besides any resource description, they may also contain
       other control information used by the RMF's processing.

   3.  Policy objects: Policy objects contain data used to authorize the
       reservation of resources.

   Object formats are defined in Section 5.1.3.  Object processing rules
   are defined in Section 5.3.

3.1.2.  QoS Models and QoS Specifications

   The QoS NSLP provides flexibility over the exact patterns of
   signaling messages that are exchanged.  The decoupling of QoS NSLP
   and QSPEC allows the QoS NSLP to be ignorant about the ways in which
   traffic, resources, etc., are described, and it can treat the QSPEC
   as an opaque object.  Various QoS models can be designed, and these
   do not affect the specification of the QoS NSLP protocol.  Only the
   RMF specific to a given QoS model will need to interpret the QSPEC.
   The Resource Management Function (RMF) reserves resources for each
   flow.

   The QSPEC fulfills a similar purpose to the TSpec, RSpec, and AdSpec
   objects used with RSVP and specified in RFC 2205 [RFC2205] and RFC
   2210 [RFC2210].  At each QNE, the content of the QSPEC is interpreted
   by the Resource Management Function and the Policy Control Function
   for the purposes of traffic and policy control (including admission
   control and configuration of the packet classifier and scheduler).




Manner, et al.                Experimental                     [Page 10]
^L
RFC 5974                        QoS NSLP                    October 2010


   The QoS NSLP does not mandate any particular behavior for the RMF,
   instead providing interoperability at the signaling-protocol level
   whilst leaving the validation of RMF behavior to contracts external
   to the protocol itself.  The RMF may make use of various elements
   from the QoS NSLP message, not only the QSPEC object.

   Still, this specification assumes that resource sharing is possible
   between flows with the same SESSION-ID that originate from the same
   QNI or between flows with a different SESSION-ID that are related
   through the BOUND-SESSION-ID object.  For flows with the same
   SESSION-ID, resource sharing is only applicable when the existing
   reservation is not just replaced (which is indicated by the REPLACE
   flag in the common header).  We assume that the QoS model supports
   resource sharing between flows.  A QoS Model may elect to implement a
   more general behavior of supporting relative operations on existing
   reservations, such as ADDING or SUBTRACTING a certain amount of
   resources from the current reservation.  A QoS Model may also elect
   to allow resource sharing more generally, e.g., between all flows
   with the same Differentiated Service Code Point (DSCP).

   The QSPEC carries a collection of objects that can describe QoS
   specifications in a number of different ways.  A generic template is
   defined in [RFC5975] and contains object formats for generally useful
   elements of the QoS description, which is designed to ensure
   interoperability when using the basic set of objects.  A QSPEC
   describing the resources requested will usually contain objects that
   need to be understood by all implementations, and it can also be
   enhanced with additional objects specific to a QoS model to provide a
   more exact definition to the RMF, which may be better able to use its
   specific resource management mechanisms (which may, e.g., be link
   specific) as a result.

   A QoS Model defines the behavior of the RMF, including inputs and
   outputs, and how QSPEC information is used to describe resources
   available, resources required, traffic descriptions, and control
   information required by the RMF.  A QoS Model also describes the
   minimum set of parameters QNEs should use in the QSPEC when signaling
   about this QoS Model.

   QoS Models may be local (private to one network), implementation/
   vendor specific, or global (implementable by different networks and
   vendors).  All QSPECs should follow the design of the QSPEC template.

   The definition of a QoS model may also have implications on how local
   behavior should be implemented in the areas where the QoS NSLP gives
   freedom to implementers.  For example, it may be useful to identify
   recommended behavior for how a forwarded RESERVE message relates to a
   received one, or for when additional signaling sessions should be



Manner, et al.                Experimental                     [Page 11]
^L
RFC 5974                        QoS NSLP                    October 2010


   started based on existing sessions, such as required for aggregate
   reservations.  In some cases, suggestions may be made on whether
   state that may optionally be retained should be held in particular
   scenarios.  A QoS model may specify reservation preemption, e.g., an
   incoming resource request may cause removal of an earlier established
   reservation.

3.1.3.  Policy Control

   Getting access to network resources, e.g., network access in general
   or access to QoS, typically involves some kind of policy control.
   One example of this is authorization of the resource requester.
   Policy control for QoS NSLP resource reservation signaling is
   conceptually organized as illustrated below in Figure 3.

                                  +-------------+
                                  | Policy      |
                                  | Decision    |
                                  | Point (PDP) |
                                  +------+------+
                                         |
                                 /-\-----+-----/\
                             ////                \\\\
                           ||                        ||
                          |      Policy transport      |
                           ||                        ||
                             \\\\                ////
                                 \-------+------/
                                         |
   +-------------+ QoS signaling  +------+------+
   |  Entity     |<==============>| QNE = Policy|<=========>
   |  requesting | Data Flow      | Enforcement |
   |  resource   |----------------|-Point (PEP)-|---------->
   +-------------+                +-------------+

           Figure 3: Policy Control with the QoS NSLP Signaling

   From the QoS NSLP point of view, the policy control model is
   essentially a two-party model between neighboring QNEs.  The actual
   policy decision may depend on the involvement of a third entity (the
   Policy Decision Point, PDP), but this happens outside of the QoS NSLP
   protocol by means of existing policy infrastructure (Common Open
   Policy Service (COPS), Diameter, etc.).  The policy control model for
   the entire end-to-end chain of QNEs is therefore one of transitivity,
   where each of the QNEs exchanges policy information with its QoS NSLP
   policy peer.





Manner, et al.                Experimental                     [Page 12]
^L
RFC 5974                        QoS NSLP                    October 2010


   The authorization of a resource request often depends on the identity
   of the entity making the request.  Authentication may be required.
   The GIST channel security mechanisms provide one way of
   authenticating the QoS NSLP peer that sent the request, and so may be
   used in making the authorization decision.

   Additional information might also be provided in order to assist in
   making the authorization decision.  This might include alternative
   methods of authenticating the request.

   The QoS NSLP does not currently contain objects to carry
   authorization information.  At the time of writing, there exists a
   separate individual work [NSIS-AUTH] that defines this functionality
   for the QoS NSLP and the NAT and firewall (NATFW) NSLP.

   It is generally assumed that policy enforcement is likely to
   concentrate on border nodes between administrative domains.  This may
   mean that nodes within the domain are "Policy-Ignorant Nodes" that
   perform no per-request authentication or authorization, relying on
   the border nodes to perform the enforcement.  In such cases, the
   policy management between ingress and egress edge of a domain relies
   on the internal chain of trust between the nodes in the domain.  If
   this is not acceptable, a separate signaling session can be set up
   between the ingress and egress edge nodes in order to exchange policy
   information.

3.2.  Design Background

   This section presents some of the key functionality behind the
   specification of the QoS NSLP.

3.2.1.  Soft States

   The NSIS protocol suite takes a soft-state approach to state
   management.  This means that reservation state in QNEs must be
   periodically refreshed.  The frequency with which state installation
   is refreshed is expressed in the REFRESH-PERIOD object.  This object
   contains a value in milliseconds indicating how long the state that
   is signaled for remains valid.  Maintaining the reservation beyond
   this lifetime can be done by sending a RESERVE message periodically.

3.2.2.  Sender and Receiver Initiation

   The QoS NSLP supports both sender-initiated and receiver-initiated
   reservations.  For a sender-initiated reservation, RESERVE messages
   travel in the same direction as the data flow that is being signaled
   for (the QNI is at the side of the source of the data flow).  For a




Manner, et al.                Experimental                     [Page 13]
^L
RFC 5974                        QoS NSLP                    October 2010


   receiver-initiated reservation, RESERVE messages travel in the
   opposite direction (the QNI is at the side of the receiver of the
   data flow).

   Note: these definitions follow the definitions in Section 3.3.1 of
   RFC 4080 [RFC4080].  The main issue is about which node is in charge
   of requesting and maintaining the resource reservation.  In a
   receiver-initiated reservation, even though the sender sends the
   initial QUERY, the receiver is still in charge of making the actual
   resource request and maintaining the reservation.

3.2.3.  Protection against Message Re-ordering and Duplication

   RESERVE messages affect the installed reservation state.  Unlike
   NOTIFY, QUERY, and RESPONSE messages, the order in which RESERVE
   messages are received influences the eventual reservation state that
   will be stored at a QNE; that is, the most recent RESERVE message
   replaces the current reservation.  Therefore, in order to protect
   against RESERVE message re-ordering or duplication, the QoS NSLP uses
   a Reservation Sequence Number (RSN).  The RSN has local significance
   only, i.e., between a QNE and its downstream peers.

3.2.4.  Explicit Confirmations

   A QNE may require a confirmation that the end-to-end reservation is
   in place, or a reply to a query along the path.  For such requests,
   it must be able to keep track of which request each response refers
   to.  This is supported by including a Request Identification
   Information (RII) object in a QoS NSLP message.

3.2.5.  Reduced Refreshes

   For scalability, the QoS NSLP supports an abbreviated form of refresh
   RESERVE message.  In this case, the refresh RESERVE references the
   reservation using the RSN and the SESSION-ID, and does not include
   the full reservation specification (including QSPEC).  By default,
   state refresh should be performed with reduced refreshes in order to
   save bytes during transmission.  Stateless QNEs will require full
   refresh since they do not store the whole reservation information.

   If the stateful QNE does not support reduced refreshes, or there is a
   mismatch between the local and received RSN, the stateful QNE must
   reply with a RESPONSE carrying an INFO-SPEC indicating the error.
   Furthermore, the QNE must stop sending reduced refreshes to this peer
   if the error indicates that support for this feature is lacking.






Manner, et al.                Experimental                     [Page 14]
^L
RFC 5974                        QoS NSLP                    October 2010


3.2.6.  Summary Refreshes and Summary Tear

   For limiting the number of individual messages, the QoS NSLP supports
   summary refresh and summary tear messages.  When sending a refreshing
   RESERVE for a certain (primary) session, a QNE may include a SESSION-
   ID-LIST object where the QNE indicates (secondary) sessions that are
   also refreshed.  An RSN-LIST object must also be added.  The SESSION-
   IDs and RSNs are stacked in the objects such that the index in both
   stacks refer to the same reservation state, i.e., the SESSION-ID and
   RSN at index i in both objects refers to the same session.  If the
   receiving stateful QNE notices unknown SESSION-IDs or a mismatch with
   RSNs for a session, it will reply back to the upstream stateful QNE
   with an error.

   In order to tear down several sessions at once, a QNE may include
   SESSION-ID-LIST and RSN-LIST objects in a tearing reserve.  The
   downstream stateful QNE must then also tear down the other sessions
   indicated.  The downstream stateful QNE must silently ignore any
   unknown SESSION-IDs.

   GIST provides a SII-Handle for every downstream session.  The SII-
   Handle identifies a peer and should be the same for all sessions
   whose downstream peer is the same.  The QoS NSLP uses this
   information to decide whether summary refresh messages can be sent or
   when a summary tear is possible.

3.2.7.  Message Scoping

   A QNE may use local policy when deciding whether to propagate a
   message or not.  For example, the local policy can define/configure
   that a QNE is, for a particular session, a QNI and/or a QNR.  The QoS
   NSLP also includes an explicit mechanism to restrict message
   propagation by means of a scoping mechanism.

   For a RESERVE or a QUERY message, two scoping flags limit the part of
   the path on which state is installed on the downstream nodes that can
   respond.  When the SCOPING flag is set to zero, it indicates that the
   scope is "whole path" (default).  When set to one, the scope is
   "single hop".  When the PROXY scope flag is set, the path is
   terminated at a pre-defined Proxy QNE (P-QNE).  This is similar to
   the Localized RSVP [lrsvp].

   The propagation of a RESPONSE message is limited by the RII object,
   which ensures that it is not forwarded back along the path further
   than the node that requested the RESPONSE.






Manner, et al.                Experimental                     [Page 15]
^L
RFC 5974                        QoS NSLP                    October 2010


3.2.8.  Session Binding

   Session binding is defined as the enforcement of a relation between
   different QoS NSLP sessions (i.e., signaling flows with different
   SESSION-IDs (SIDs) as defined in GIST [RFC5971]).

   Session binding indicates a unidirectional dependency relation
   between two or more sessions by including a BOUND-SESSION-ID object.
   A session with SID_A (the binding session) can express its
   unidirectional dependency relation to another session with SID_B (the
   bound session) by including a BOUND-SESSION-ID object containing
   SID_B in its messages.

   The concept of session binding is used to indicate the unidirectional
   dependency relation between the end-to-end session and the aggregate
   session in case of aggregate reservations.  In case of bidirectional
   reservations, it is used to express the unidirectional dependency
   relation between the sessions used for forward and reverse
   reservation.  Typically, the dependency relation indicated by session
   binding is purely informative in nature and does not automatically
   trigger any implicit action in a QNE.  A QNE may use the dependency
   relation information for local resource optimization or to explicitly
   tear down reservations that are no longer useful.  However, by using
   an explicit binding code (see Section 5.1.3.4), it is possible to
   formalize this dependency relation, meaning that if the bound session
   (e.g., session with SID_B) is terminated, the binding session (e.g.,
   the session with SID_A) must be terminated also.

   A message may include more than one BOUND-SESSION-ID object.  This
   may happen, e.g., in certain aggregation and bidirectional
   reservation scenarios, where an end-to-end session has a
   unidirectional dependency relation with an aggregate session and at
   the same time it has a unidirectional dependency relation with
   another session used for the reverse path.

3.2.9.  Message Binding

   QoS NSLP supports binding of messages in order to allow for
   expressing dependencies between different messages.  The message
   binding can indicate either a unidirectional or bidirectional
   dependency relation between two messages by including the MSG-ID
   object in one message ("binding message") and the BOUND-MSG-ID object
   in the other message ("bound message").  The unidirectional
   dependency means that only RESERVE messages are bound to each other
   whereas a bidirectional dependency means that there is also a
   dependency for the related RESPONSE messages.  The message binding
   can be used to speed up signaling by starting two signaling exchanges
   simultaneously that are synchronized later by using message IDs.



Manner, et al.                Experimental                     [Page 16]
^L
RFC 5974                        QoS NSLP                    October 2010


   This can be used as an optimization technique, for example, in
   scenarios where aggregate reservations are used.  Section 4.6
   provides more details.

3.2.10.  Layering

   The QoS NSLP supports layered reservations.  Layered reservations may
   occur when certain parts of the network (domains) implement one or
   more local QoS models or when they locally apply specific transport
   characteristics (e.g., GIST unreliable transfer mode instead of
   reliable transfer mode).  They may also occur when several per-flow
   reservations are locally combined into an aggregate reservation.

3.2.10.1.  Local QoS Models

   A domain may have local policies regarding QoS model implementation,
   i.e., it may map incoming traffic to its own locally defined QoS
   models.  The QSPEC allows this functionality, and the operation is
   transparent to the QoS NSLP.  The use of local QoS models within a
   domain is performed in the RMF.

3.2.10.2.  Local Control Plane Properties

   The way signaling messages are handled is mainly determined by the
   parameters that are sent over the GIST-NSLP API and by the domain
   internal configuration.  A domain may have a policy to implement
   local transport behavior.  It may, for instance, elect to use an
   unreliable transport locally in the domain while still keeping end-
   to-end reliability intact.

   The QoS NSLP supports this situation by allowing two sessions to be
   set up for the same reservation.  The local session has the desired
   local transport properties and is interpreted in internal QNEs.  This
   solution poses two requirements: the end-to-end session must be able
   to bypass intermediate nodes, and the egress QNE needs to bind both
   sessions together.  Bypassing intermediate nodes is achieved with
   GIST.  The local session and the end-to-end session are bound at the
   egress QNE by means of the BOUND-SESSION-ID object.

3.2.10.3.  Aggregate Reservations

   In some cases, it is desirable to create reservations for an
   aggregate, rather than on a per-flow basis, in order to reduce the
   amount of reservation state needed as well as the processing load for
   signaling messages.  Note that the QoS NSLP does not specify how
   reservations need to be combined in an aggregate or how end-to-end
   properties need to be computed, but only provides signaling support
   for aggregate reservations.



Manner, et al.                Experimental                     [Page 17]
^L
RFC 5974                        QoS NSLP                    October 2010


   The essential difference with the layering approaches described in
   Sections 3.2.10.1 and 3.2.10.2 is that the aggregate reservation
   needs a MRI that describes all traffic carried in the aggregate
   (e.g., a DSCP in case of IntServ over Diffserv).  The need for a
   different MRI mandates the use of two different sessions, as
   described in Section 3.2.10.2 and in the RSVP aggregation solution in
   RFC 3175 [RFC3175].

   Edge QNEs of the aggregation domain that want to maintain some end-
   to-end properties may establish a peering relation by sending the
   end-to-end message transparently over the domain (using the
   intermediate node bypass capability described above).  Updating the
   end-to-end properties in this message may require some knowledge of
   the aggregated session (e.g., for updating delay values).  For this
   purpose, the end-to-end session contains a BOUND-SESSION-ID carrying
   the SESSION-ID of the aggregate session.

3.2.11.  Support for Request Priorities

   This specification acknowledges the fact that in some situations,
   some messages or reservations may be more important than others, and
   therefore it foresees mechanisms to give these messages or
   reservations priority.

   Priority of certain signaling messages over others may be required in
   mobile scenarios when a message loss during call setup is less
   harmful than during handover.  This situation only occurs when GIST
   or QoS NSLP processing is the congested part or scarce resource.

   Priority of certain reservations over others may be required when QoS
   resources are oversubscribed.  In that case, existing reservations
   may be preempted in order to make room for new higher-priority
   reservations.  A typical approach to deal with priority and
   preemption is through the specification of a setup priority and
   holding priority for each reservation.  The Resource Management
   Function at each QNE then keeps track of the resource consumption at
   each priority level.  Reservations are established when resources, at
   their setup priority level, are still available.  They may cause
   preemption of reservations with a lower holding priority than their
   setup priority.

   Support of reservation priority is a QSPEC parameter and therefore
   outside the scope of this specification.  The GIST specification
   provides a mechanism to support a number of levels of message
   priority that can be requested over the NSLP-GIST API.






Manner, et al.                Experimental                     [Page 18]
^L
RFC 5974                        QoS NSLP                    October 2010


3.2.12.  Rerouting

   The QoS NSLP needs to adapt to route changes in the data path.  This
   assumes the capability to detect rerouting events, create a QoS
   reservation on the new path, and optionally tear down reservations on
   the old path.

   From an NSLP perspective, rerouting detection can be performed in two
   ways.  It can either come through NetworkNotification from GIST, or
   from information seen at the NSLP.  In the latter case, the QoS NSLP
   node is able to detect changes in its QoS NSLP peers by keeping track
   of a Source Identification Information (SII) handle that provides
   information similar in nature to the RSVP_HOP object described in RFC
   2205 [RFC2205].  When a RESERVE message with an existing SESSION-ID
   and a different SII is received, the QNE knows its upstream or
   downstream peer has changed, for sender-oriented and receiver-
   oriented reservations, respectively.

   Reservation on the new path happens when a RESERVE message arrives at
   the QNE beyond the point where the old and new paths diverge.  If the
   QoS NSLP suspects that a reroute has occurred, then a full RESERVE
   message (including the QSPEC) would be sent.  A refreshing RESERVE
   (with no QSPEC) will be identified as an error by a QNE on the new
   path, which does not have the reservation installed (i.e., it was not
   on the old path) or which previously had a different previous-hop
   QNE.  It will send back an error message that results in a full
   RESERVE message being sent.  Rapid recovery at the NSLP layer
   therefore requires short refresh periods.  Detection before the next
   RESERVE message arrives is only possible at the IP layer or through
   monitoring of GIST peering relations (e.g., by monitoring the Time to
   Live (TTL), i.e., the number of GIST hops between NSLP peers, or
   observing the changes in the outgoing interface towards GIST peer).
   These mechanisms can provide implementation-specific optimizations
   and are outside the scope of this specification.

   When the QoS NSLP is aware of the route change, it needs to set up
   the reservation on the new path.  This is done by sending a new
   RESERVE message.  If the next QNE is in fact unchanged, then this
   will be used to refresh/update the existing reservation.  Otherwise,
   it will lead to the reservation being installed on the new path.

   Note that the operation for a receiver-initiated reservation session
   differs a bit from the above description.  If the routing changes in
   the middle of the path, at some point (i.e., the divergence point)
   the QNE that notices that its downstream path has changed (indicated
   by a NetworkNotification from GIST), and it must send a QUERY with
   the R-flag downstream.  The QUERY will be processed as above, and at
   some point hits a QNE for which the path downstream towards the QNI



Manner, et al.                Experimental                     [Page 19]
^L
RFC 5974                        QoS NSLP                    October 2010


   remains (i.e., the convergence point).  This node must then send a
   full RESERVE upstream to set up the reservation state along the new
   path.  It should not send the QUERY further downstream, since this
   would have no real use.  Similarly, when the QNE that sent the QUERY
   receives the RESERVE, it should not send the RESERVE further
   upstream.

   After the reservation on the new path is set up, the branching node
   may want to tear down the reservation on the old path (sooner than
   would result from normal soft-state timeout).  This functionality is
   supported by keeping track of the old SII-Handle provided over the
   GIST API.  This handle can be used by the QoS NSLP to route messages
   explicitly to the next node.

   If the old path is downstream, the QNE can send a tearing RESERVE
   using the old SII-Handle.  If the old path is upstream, the QNE can
   send a NOTIFY with the code for "Route Change".  This is forwarded
   upstream until it hits a QNE that can issue a tearing RESERVE
   downstream.  A separate document discusses in detail the effect of
   mobility on the QoS NSLP signaling [NSIS-MOB].

   A QNI or a branch node may wish to keep the reservation on the old
   branch.  For instance, this could be the case when a mobile node has
   experienced a mobility event and wishes to keep reservation to its
   old attachment point in case it moves back there.  For this purpose,
   a REPLACE flag is provided in the QoS NSLP common header, which, when
   not set, indicates that the reservation on the old branch should be
   kept.

   Note that keeping old reservations affects the resources available to
   other nodes.  Thus, the operator of the access network must make the
   final decision on whether this behavior is allowed.  Also, the QNEs
   in the access network may add this flag even if the mobile node has
   not used the flag initially.

   The latency in detecting that a new downstream peer exists or that
   truncation has happened depends on GIST.  The default QUERY message
   transmission interval is 30 seconds.  More details on how NSLPs are
   able to affect the discovery of new peers or rerouting can be found
   in the GIST specification.

3.2.12.1.  Last Node Behavior

   The design of the QoS NSLP allows reservations to be installed at a
   subset of the nodes along a path.  In particular, usage scenarios
   include cases where the data flow endpoints do not support the QoS
   NSLP.




Manner, et al.                Experimental                     [Page 20]
^L
RFC 5974                        QoS NSLP                    October 2010


   In the case where the data flow receiver does not support the QoS
   NSLP, some particular considerations must be given to node discovery
   and rerouting at the end of the signaling path.

   There are three cases for the last node on the signaling path:

   1)  the last node is the data receiver,

   2)  the last node is a configured proxy for the data receiver, or

   3)  the last node is not the data receiver and is not explicitly
       configured to act as a signaling proxy on behalf of the data
       receiver.

   Cases (1) and (2) can be handled by the QoS NSLP itself during the
   initial path setup, since the QNE knows that it should terminate the
   signaling.  Case (3) requires some assistance from GIST, which
   provides messages across the API to indicate that no further GIST
   nodes that support QoS NSLP are present downstream, and that probing
   of the downstream route change needs to continue once the reservation
   is installed to detect any changes in this situation.

   Two particular scenarios need to be considered in this third case.
   In the first, referred to as "Path Extension", rerouting occurs such
   that an additional QNE is inserted into the signaling path between
   the old last node and the data receiver, as shown in Figure 4.

           /-------\   Initial route
          /         v
              /-\
           /--|B|--\                +-+
          /   \-/   \               |x| = QoS NSLP aware
       +-+           /-\            +-+
   ----|A|           |D|
       +-+           \-/            /-\
          \   +-+   /               |x| = QoS NSLP unaware
           \--|C|--/                \-/
              +-+
          \         ^
           \-------/   Updated route

                         Figure 4: Path Extension

   When rerouting occurs, the data path changes from A-B-D to A-C-D.
   Initially the signaling path ends at A.  Despite initially being the
   last node, node A needs to continue to attempt to send messages
   downstream to probe for path changes, unless it has been explicitly




Manner, et al.                Experimental                     [Page 21]
^L
RFC 5974                        QoS NSLP                    October 2010


   configured as a signaling proxy for the data flow receiver.  This is
   required so that the signaling path change is detected, and C will
   become the new last QNE.

   In a second case, referred to as "Path Truncation", rerouting occurs
   such that the QNE that was the last node on the signaling path is no
   longer on the data path.  This is shown in Figure 5.

           /-------\   Initial route
          /         v
              +-+
           /--|B|--\                 +-+
          /   +-+   \                |x| = QoS NSLP aware
       +-+           /-\             +-+
   ----|A|           |D|
       +-+           \-/             /-\
          \   /-\   /                |x| = QoS NSLP unaware
           \--|C|--/                 \-/
              \-/
          \         ^
           \-------/   Updated route

                         Figure 5: Path Truncation

   When rerouting occurs, the data path again changes from A-B-D to
   A-C-D.  The signaling path initially ends at B, but this node is not
   on the new path.  In this case, the normal GIST path change detection
   procedures at A will detect the path change and notify the QoS NSLP.
   GIST will also notify the signaling application that no downstream
   GIST nodes supporting the QoS NSLP are present.  Node A will take
   over as the last node on the signaling path.

3.2.12.2.  Handling Spurious Route Change Notifications

   The QoS NSLP is notified by GIST (with the NetworkNotification
   primitive) when GIST believes that a rerouting event may have
   occurred.  In some cases, events that are detected as possible route
   changes will turn out not to be.  The QoS NSLP will not always be
   able to detect this, even after receiving messages from the 'new'
   peer.

   As part of the RecvMessage API primitive, GIST provides an SII-Handle
   that can be used by the NSLP to direct a signaling message to a
   particular peer.  The current SII-Handle will change if the signaling
   peer changes.  However, it is not guaranteed to remain the same after
   a rerouting event where the peer does not change.  Therefore, the QoS
   NSLP mechanism for reservation maintenance after a route change




Manner, et al.                Experimental                     [Page 22]
^L
RFC 5974                        QoS NSLP                    October 2010


   includes robustness mechanisms to avoid accidentally tearing down a
   reservation in situations where the peer QNE has remained the same
   after a 'route change' notification from GIST.

   A simple example that illustrates the problem is shown in Figure 6
   below.

           (1)                         +-+
         /-----\                       |x| = QoS NSLP aware
       +-+     /-\ (3) +-+             +-+
   ----|A|     |B|-----|C|----
       +-+     \-/     +-+             /-\
         \-----/                       |x| = QoS NSLP unaware
           (2)                         \-/

                    Figure 6: Spurious Reroute Alerting

   In this example, the initial route A-B-C uses links (1) and (3).
   After link (1) fails, the path is rerouted using links (2) and (3).
   The set of QNEs along the path is unchanged (it is A-C in both cases,
   since B does not support the QoS NSLP).

   When the outgoing interface at A has changes, GIST may signal across
   its API to the NSLP with a NetworkNotification.  The QoS NSLP at A
   will then attempt to repair the path by installing the reservation on
   the path (2),(3).  In this case, however, the old and new paths are
   the same.

   To install the new reservation, A will send a RESERVE message, which
   GIST will transport to C (discovering the new next peer as
   appropriate).  The RESERVE also requests a RESPONSE from the QNR.
   When this RESERVE message is received through the RecvMessage API
   call from GIST at the QoS NSLP at C, the SII-Handle will be unchanged
   from its previous communications from A.

   A RESPONSE message will be sent by the QNR, and be forwarded from C
   to A.  This confirms that the reservation was installed on the new
   path.  The SII-Handle passed with the RecvMessage call from GIST to
   the QoS NSLP will be different to that seen previously, since the
   interface being used on A has changed.

   At this point, A can attempt to tear down the reservation on the old
   path.  The RESERVE message with the TEAR flag set is sent down the
   old path by using the GIST explicit routing mechanism and specifying
   the SII-Handle relating to the 'old' peer QNE.






Manner, et al.                Experimental                     [Page 23]
^L
RFC 5974                        QoS NSLP                    October 2010


   If RSNs were being incremented for each of these RESERVE and RESERVE-
   with-TEAR messages, the reservation would be torn down at C and any
   QNEs further along the path.  To avoid this, the RSN is used in a
   special way.  The RESERVE down the new path is sent with the new
   current RSN set to the old RSN plus 2.  The RESERVE-with-TEAR down
   the old path is sent with an RSN set to the new current RSN minus 1.
   This is the peer from which it was receiving RESERVE messages (see
   for more details).

3.2.13.  Preemption

   The QoS NSLP provides building blocks to implement preemption.  This
   specification does not define how preemption should work, but only
   provides signaling mechanisms that can be used by QoS models.  For
   example, an INFO-SPEC object can be added to messages to indicate
   that the signaled session was preempted.  A BOUND-SESSION-ID object
   can carry the Session ID of the flow that caused the preemption of
   the signaled session.  How these are used by QoS models is out of
   scope of the QoS NSLP specification.

3.3.  GIST Interactions

   The QoS NSLP uses GIST for delivery of all its messages.  Messages
   are passed from the NSLP to GIST via an API (defined in Appendix B of
   [RFC5971]), which also specifies additional information, including an
   identifier for the signaling application (e.g., 'QoS NSLP'), session
   identifier, MRI, and an indication of the intended direction (towards
   data sender or receiver).  On reception, GIST provides the same
   information to the QoS NSLP.  In addition to the NSLP message data
   itself, other meta-data (e.g., session identifier and MRI) can be
   transferred across this interface.

   The QoS NSLP keeps message and reservation state per session.  A
   session is identified by a Session Identifier (SESSION-ID).  The
   SESSION-ID is the primary index for stored NSLP state and needs to be
   constant and unique (with a sufficiently high probability) along a
   path through the network.  The QoS NSLP picks a value for Session-ID.

   This value is subsequently used by GIST and the QoS NSLP to refer to
   this session.

   Currently, the QoS NSLP specification considers mainly the path-
   coupled MRM.  However, extensions may specify how other types of MRMs
   may be applied in combination with the QoS NSLP.

   When GIST passes the QoS NSLP data to the NSLP for processing, it
   must also indicate the value of the 'D' (Direction) flag for that
   message in the MRI.



Manner, et al.                Experimental                     [Page 24]
^L
RFC 5974                        QoS NSLP                    October 2010


   The QoS NSLP does not provide any method of interacting with
   firewalls or Network Address Translators (NATs).  It assumes that a
   basic NAT traversal service is provided by GIST.

3.3.1.  Support for Bypassing Intermediate Nodes

   The QoS NSLP may want to restrict the handling of its messages to
   specific nodes.  This functionality is needed to support layering
   (explained in Section 3.2.10), when only the edge QNEs of a domain
   process the message.  This requires a mechanism at the GIST level
   (which can be invoked by the QoS NSLP) to bypass intermediate nodes
   between the edges of the domain.

   The intermediate nodes are bypassed using multiple levels of the
   router alert option.  In that case, internal routers are configured
   to handle only certain levels of router alerts.  This is accomplished
   by marking this message at the ingress, i.e., modifying the QoS NSLP
   default NSLPID value to an NSLPID predefined value (see Section 6.6).
   The egress stops this marking process by reassigning the QoS NSLP
   default NSLPID value to the original RESERVE message.  The exact
   operation of modifying the NSLPID must be specified in the relevant
   QoS model specification.

3.3.2.  Support for Peer Change Identification

   There are several circumstances where it is necessary for a QNE to
   identify the adjacent QNE peer, which is the source of a signaling
   application message.  For example, it may be to apply the policy that
   "state can only be modified by messages from the node that created
   it" or it might be that keeping track of peer identity is used as a
   (fallback) mechanism for rerouting detection at the NSLP layer.

   This functionality is implemented in the GIST service interface with
   SII-handle.  As shown in the above example, we assume the SII-
   handling will support both its own SII and its peer's SII.

   Keeping track of the SII of a certain reservation also provides a
   means for the QoS NSLP to detect route changes.  When a QNE receives
   a RESERVE referring to existing state but with a different SII, it
   knows that its upstream peer has changed.  It can then use the old
   SII to initiate a teardown along the old section of the path.  This
   functionality is supported in the GIST service interface when the
   peer's SII (which is stored on message reception) is passed to GIST
   upon message transmission.







Manner, et al.                Experimental                     [Page 25]
^L
RFC 5974                        QoS NSLP                    October 2010


3.3.3.  Support for Stateless Operation

   Stateless or reduced-state QoS NSLP operation makes the most sense
   when some nodes are able to operate in a stateless way at the GIST
   level as well.  Such nodes should not worry about keeping reverse
   state, message fragmentation and reassembly (at GIST), congestion
   control, or security associations.  A stateless or reduced-state QNE
   will be able to inform the underlying GIST of this situation.  GIST
   service interface supports this functionality with the Retain-State
   attribute in the MessageReceived primitive.

3.3.4.  Priority of Signaling Messages

   The QoS NSLP will generate messages with a range of performance
   requirements for GIST.  These requirements may result from a
   prioritization at the QoS NSLP (Section 3.2.11) or from the
   responsiveness expected by certain applications supported by the QoS
   NSLP.  GIST service interface supports this with the 'priority'
   transfer attribute.

3.3.5.  Knowledge of Intermediate QoS-NSLP-Unaware Nodes

   In some cases, it is useful to know that there are routers along the
   path where QoS cannot be provided.  The GIST service interface
   supports this by keeping track of IP-TTL and Original-TTL in the
   RecvMessage primitive.  A difference between the two indicates the
   number of QoS-NSLP-unaware nodes.  In this case, the QNE that detects
   this difference should set the "B" (BREAK) flag.  If a QNE receives a
   QUERY or RESERVE message with the BREAK flag set, and then generates
   a QUERY, RESERVE, or RESPONSE message, it can set the BREAK flag in
   those messages.  There are however, situations where the egress QNE
   in a local domain may have some other means to provide QoS [RFC5975].
   For example, in a local domain that is aware of RMD-QOSM [RFC5977]
   (or a similar QoS Model) and that uses either NTLP stateless nodes or
   NSIS-unaware nodes, the end-to-end RESERVE or QUERY message bypasses
   these NTLP stateless or NSIS-unaware nodes.  However, the reservation
   within the local domain can be signaled by the RMD-QOSM (or a similar
   QoS Model).  In such situations, the "B" (BREAK) flag in the end-to-
   end RESERVE or QUERY message should not be set by the edges of the
   local domain.

4.  Examples of QoS NSLP Operation

   The QoS NSLP can be used in a number of ways.  The examples here give
   an indication of some of the basic processing.  However, they are not
   exhaustive and do not attempt to cover the details of the protocol
   processing.




Manner, et al.                Experimental                     [Page 26]
^L
RFC 5974                        QoS NSLP                    October 2010


4.1.  Sender-Initiated Reservation

   QNI        QNE        QNE        QNR
    |          |          |          |
    | RESERVE  |          |          |
    +--------->|          |          |
    |          | RESERVE  |          |
    |          +--------->|          |
    |          |          | RESERVE  |
    |          |          +--------->|
    |          |          |          |
    |          |          | RESPONSE |
    |          |          |<---------+
    |          | RESPONSE |          |
    |          |<---------+          |
    | RESPONSE |          |          |
    |<---------+          |          |
    |          |          |          |
    |          |          |          |

               Figure 7: Basic Sender-Initiated Reservation

   To make a new reservation, the QNI constructs a RESERVE message
   containing a QSPEC object, from its chosen QoS model, that describes
   the required QoS parameters.

   The RESERVE message is passed to GIST, which transports it to the
   next QNE.  There, it is delivered to the QoS NSLP processing, which
   examines the message.  Policy control and admission control decisions
   are made.  The exact processing also takes into account the QoS model
   being used.  The node performs appropriate actions (e.g., installing
   the reservation) based on the QSPEC object in the message.

   The QoS NSLP then generates a new RESERVE message (usually based on
   the one received).  This is passed to GIST, which forwards it to the
   next QNE.

   The same processing is performed at further QNEs along the path, up
   to the QNR.  The determination that a node is the QNR may be made
   directly (e.g., that node is the destination for the data flow), or
   using GIST functionality to determine that there are no more QNEs
   between this node and the data flow destination.

   Any node may include a request for a RESPONSE in its RESERVE
   messages.  It does so by including a Request Identification
   Information (RII) object in the RESERVE message.  If the message
   already includes an RII, an interested QNE must not add a new RII
   object or replace the old RII object.  Instead, it needs to remember



Manner, et al.                Experimental                     [Page 27]
^L
RFC 5974                        QoS NSLP                    October 2010


   the RII value so that it can match a RESPONSE message belonging to
   the RESERVE.  When it receives the RESPONSE, it forwards the RESPONSE
   upstream towards the RII originating node.

   In this example, the RESPONSE message is forwarded peer-to-peer along
   the reverse of the path that the RESERVE message took (using GIST
   path state), and so is seen by all the QNEs on this segment of the
   path.  It is only forwarded as far as the node that requested the
   RESPONSE originally.

   The reservation can subsequently be refreshed by sending further
   RESERVE messages containing the complete reservation information, as
   for the initial reservation.  The reservation can also be modified in
   the same way, by changing the QSPEC data to indicate a different set
   of resources to reserve.

   The overhead required to perform refreshes can be reduced, in a
   similar way to that proposed for RSVP in RFC 2961 [RFC2961].  Once a
   RESPONSE message has been received indicating the successful
   installation of a reservation, subsequent refreshing RESERVE messages
   can simply refer to the existing reservation, rather than including
   the complete reservation specification.

4.2.  Sending a Query

   QUERY messages can be used to gather information from QNEs along the
   path.  For example, they can be used to find out what resources are
   available before a reservation is made.

   In order to perform a query along a path, the QNE constructs a QUERY
   message.  This message includes a QSPEC containing the actual query
   to be performed at QNEs along the path.  It also contains an RII
   object used to match the response back to the query, and an indicator
   of the query scope (next node, whole path, proxy).  The QUERY message
   is passed to GIST to forward it along the path.

   A QNE receiving a QUERY message should inspect it and create a new
   message based on it, with the query objects modified as required.
   For example, the query may request information on whether a flow can
   be admitted, and so a node processing the query might record the
   available bandwidth.  The new message is then passed to GIST for
   further forwarding (unless it knows it is the QNR or is the limit for
   the scope in the QUERY).

   At the QNR, a RESPONSE message must be generated if the QUERY message
   includes an RII object.  Various objects from the received QUERY
   message have to be copied into the RESPONSE message.  It is then
   passed to GIST to be forwarded peer-to-peer back along the path.



Manner, et al.                Experimental                     [Page 28]
^L
RFC 5974                        QoS NSLP                    October 2010


   Each QNE receiving the RESPONSE message should inspect the RII object
   to see if it 'belongs' to it (i.e., it was the one that originally
   created it).  If it does not, then it simply passes the message back
   to GIST to be forwarded upstream.

   If there was an error in processing a RESERVE, instead of an RII, the
   RESPONSE may carry an RSN.  Thus, a QNE must also be prepared to look
   for an RSN object if no RII was present, and act based on the error
   code set in the INFO-SPEC of the RESPONSE.

4.3.  Basic Receiver-Initiated Reservation

   As described in the NSIS framework [RFC4080], in some signaling
   applications, a node at one end of the data flow takes responsibility
   for requesting special treatment -- such as a resource reservation --
   from the network.  Both ends then agree whether sender- or receiver-
   initiated reservation is to be done.  In case of a receiver-initiated
   reservation, both ends agree whether a "One Pass With Advertising"
   (OPWA) [opwa95] model is being used.  This negotiation can be
   accomplished using mechanisms that are outside the scope of NSIS.

   To make a receiver-initiated reservation, the QNR constructs a QUERY
   message, which MUST contain a QSPEC object from its chosen QoS model
   (see Figure 8).  The QUERY must have the RESERVE-INIT flag set.  This
   QUERY message does not need to trigger a RESPONSE message and
   therefore, the QNI must not include the RII object (Section 5.4.2) in
   the QUERY message.  The QUERY message may be used to gather
   information along the path, which is carried by the QSPEC object.  An
   example of such information is the "One Pass With Advertising" (OPWA)
   model [opwa95].  This QUERY message causes GIST reverse-path state to
   be installed.




















Manner, et al.                Experimental                     [Page 29]
^L
RFC 5974                        QoS NSLP                    October 2010


    QNR        QNE        QNE        QNI
   sender                          receiver
     |          |          |          |
     | QUERY    |          |          |
     +--------->|          |          |
     |          | QUERY    |          |
     |          +--------->|          |
     |          |          | QUERY    |
     |          |          +--------->|
     |          |          |          |
     |          |          | RESERVE  |
     |          |          |<---------+
     |          | RESERVE  |          |
     |          |<---------+          |
     | RESERVE  |          |          |
     |<---------+          |          |
     |          |          |          |
     | RESPONSE |          |          |
     +--------->|          |          |
     |          | RESPONSE |          |
     |          +--------->|          |
     |          |          | RESPONSE |
     |          |          +--------->|
     |          |          |          |

              Figure 8: Basic Receiver-Initiated Reservation

   The QUERY message is transported by GIST to the next downstream QoS
   NSLP node.  There, it is delivered to the QoS NSLP processing, which
   examines the message.  The exact processing also takes into account
   the QoS model being used and may include gathering information on
   path characteristics that may be used to predict the end-to-end QoS.

   The QNE generates a new QUERY message (usually based on the one
   received).  This is passed to GIST, which forwards it to the next
   QNE.  The same processing is performed at further QNEs along the
   path, up to the flow receiver.  The receiver detects that this QUERY
   message carries the RESERVE-INIT flag and by using the information
   contained in the received QUERY message, such as the QSPEC,
   constructs a RESERVE message.

   The RESERVE is forwarded peer-to-peer along the reverse of the path
   that the QUERY message took (using GIST reverse-path state).  Similar
   to the sender-initiated approach, any node may include an RII in its
   RESERVE messages.  The RESPONSE is sent back to confirm that the
   resources are set up.  The reservation can subsequently be refreshed
   with RESERVE messages in the upstream direction.




Manner, et al.                Experimental                     [Page 30]
^L
RFC 5974                        QoS NSLP                    October 2010


4.4.  Bidirectional Reservations

   The term "bidirectional reservation" refers to two different cases
   that are supported by this specification:

   o  Binding two sender-initiated reservations together, e.g., one
      sender-initiated reservation from QNE A to QNE B and another one
      from QNE B to QNE A (Figure 9).

   o  Binding a sender-initiated and a receiver-initiated reservation
      together, e.g., a sender-initiated reservation from QNE A towards
      QNE B, and a receiver-initiated reservation from QNE A towards QNE
      B for the data flow in the opposite direction (from QNE B to QNE
      A).  This case is particularly useful when one end of the
      communication has all required information to set up both sessions
      (Figure 10).

   Both ends have to agree on which bidirectional reservation type they
   need to use.  This negotiation can be accomplished using mechanisms
   that are outside the scope of NSIS.

   The scenario with two sender-initiated reservations is shown in
   Figure 9.  Note that RESERVE messages for both directions may visit
   different QNEs along the path because of asymmetric routing.  Both
   directions of the flows are bound by inserting the BOUND-SESSION-ID
   object at the QNI and QNR.  RESPONSE messages are optional and not
   shown in the picture for simplicity.

      A          QNE        QNE        B
      |          |  FLOW-1  |          |
      |===============================>|
      |RESERVE-1 |          |          |
   QNI+--------->|RESERVE-1 |          |
      |          +-------------------->|QNR
      |          |          |          |
      |          |  FLOW-2  |          |
      |<===============================|
      |          |          |RESERVE-2 |
      |  RESERVE-2          |<---------+QNI
   QNR|<--------------------+          |
      |          |          |          |

      Figure 9: Bidirectional Reservation for Sender+Sender Scenario








Manner, et al.                Experimental                     [Page 31]
^L
RFC 5974                        QoS NSLP                    October 2010


   The scenario with a sender-initiated and a receiver-initiated
   reservation is shown in Figure 10.  In this case, QNI A sends out two
   RESERVE messages, one for the sender-initiated and one for the
   receiver-initiated reservation.  Note that the sequence of the two
   RESERVE messages may be interleaved.

          A          QNE        QNE        B
          |          |  FLOW-1  |          |
          |===============================>|
          |RESERVE-1 |          |          |
       QNI+--------->|RESERVE-1 |          |
          |          +-------------------->|QNR
          |          |          |          |
          |          |  FLOW-2  |          |
          |<===============================|
          |          |          |  QUERY-2 |
          |          |  QUERY-2 |<---------+QNR
       QNI|<--------------------+          |
          |          |          |          |
          |RESERVE-2 |          |          |
       QNI+--------->|RESERVE-2 |          |
          |          +-------------------->|QNR
          |          |          |          |

     Figure 10: Bidirectional Reservation for Sender+Receiver Scenario


























Manner, et al.                Experimental                     [Page 32]
^L
RFC 5974                        QoS NSLP                    October 2010


4.5.  Aggregate Reservations

   In order to reduce signaling and per-flow state in the network, the
   reservations for a number of flows may be aggregated.

   QNI        QNE      QNE/QNI'     QNE'    QNR'/QNE      QNR
                     aggregator           deaggregator
    |          |          |          |          |          |
    | RESERVE  |          |          |          |          |
    +--------->|          |          |          |          |
    |          | RESERVE  |          |          |          |
    |          +--------->|          |          |          |
    |          |          | RESERVE  |          |          |
    |          |          +-------------------->|          |
    |          |          | RESERVE' |          |          |
    |          |          +=========>| RESERVE' |          |
    |          |          |          +=========>| RESERVE  |
    |          |          |          |          +--------->|
    |          |          |          | RESPONSE'|          |
    |          |          | RESPONSE'|<=========+          |
    |          |          |<=========+          |          |
    |          |          |          |          | RESPONSE |
    |          |          |          | RESPONSE |<---------+
    |          |          |<--------------------+          |
    |          | RESPONSE |          |          |          |
    |          |<---------+          |          |          |
    | RESPONSE |          |          |          |          |
    |<---------+          |          |          |          |
    |          |          |          |          |          |
    |          |          |          |          |          |

         Figure 11: Sender-Initiated Reservation with Aggregation

   An end-to-end per-flow reservation is initiated with the messages
   shown in Figure 11 as "RESERVE".

   At the aggregator, a reservation for the aggregated flow is initiated
   (shown in Figure 11 as "RESERVE'").  This may use the same QoS model
   as the end-to-end reservation but has an MRI identifying the
   aggregated flow (e.g., tunnel) instead of for the individual flows.

   This document does not specify how the QSPEC of the aggregate session
   can be derived from the QSPECs of the end-to-end sessions.

   The messages used for the signaling of the individual reservation
   need to be marked such that the intermediate routers will not inspect
   them.  In the QoS NSLP, the following marking policy is applied; see
   also RFC 3175.



Manner, et al.                Experimental                     [Page 33]
^L
RFC 5974                        QoS NSLP                    October 2010


   All routers use essentially the same algorithm for which messages
   they process, i.e., all messages at aggregation level 0.  However,
   messages have their aggregation level incremented on entry to an
   aggregation region and decremented on exit.  In this technique, the
   interior routers are not required to do any rewriting of the RAO
   values.  However, the aggregating/deaggregating routers must
   distinguish the interfaces and associated aggregation levels.  These
   routers also perform message rewriting at these boundaries.

   In particular, the Aggregator performs the marking by modifying the
   QoS NSLP default NSLPID value to an NSLPID predefined value; see
   Section 6.6.  A RAO value is then uniquely derivable from each
   predefined NSLPID.  However, the RAO does not have to have a one-to-
   one relation to a specific NSLPID.


             Aggregator                    Deaggregator

                +---+     +---+     +---+     +---+
                |QNI|-----|QNE|-----|QNE|-----|QNR|         aggregate
                +---+     +---+     +---+     +---+         reservation

   +---+     +---+     .....     .....     +---+     +---+
   |QNI|-----|QNE|-----.   .-----.   .-----|QNE|-----|QNR|  end-to-end
   +---+     +---+     .....     .....     +---+     +---+  reservation

                    Figure 12: Reservation Aggregation

   The deaggregator acts as the QNR for the aggregate reservation.
   Session binding information carried in the RESERVE message enables
   the deaggregator to associate the end-to-end and aggregate
   reservations with one another (using the BOUND-SESSION-ID).

   The key difference between this example and the one shown in
   Section 4.7.1 is that the flow identifier for the aggregate is
   expected to be different to that for the end-to-end reservation.  The
   aggregate reservation can be updated independently of the per-flow
   end-to-end reservations.

4.6.  Message Binding

   Section 4.5 sketches the interaction of an aggregated end-to-end flow
   and an aggregate.  For this scenario, and probably others, it is
   useful to have a method for synchronizing the exchanges of signaling
   messages of different sessions.  This can be used to speed up
   signaling, because some message exchanges can be started
   simultaneously and can be processed in parallel until further
   processing of a message from one particular session depends on



Manner, et al.                Experimental                     [Page 34]
^L
RFC 5974                        QoS NSLP                    October 2010


   another message from a different session.  For instance, Figure 11
   shows a case where inclusion of a new reservation requires that the
   capacity of the encompassing aggregate be increased first.  So the
   RESERVE (bound message) for the individual flow arriving at the
   deaggregator should wait until the RESERVE' (binding message) for the
   aggregate arrived successfully (otherwise, the individual flow cannot
   be included in the existing aggregate and cannot be admitted).
   Another alternative would be to increase the aggregate first and then
   to reserve resources for a set of aggregated individual flows.  In
   this case, the binding and synchronization between the (RESERVE and
   RESERVE') messages are not needed.

   A message binding may be used (depending an the aggregators policy)
   as follows: a QNE (aggregator QNI' in Figure 14) generates randomly a
   128-bit MSG-ID (same rules apply as for generating a SESSION-ID) and
   includes it as BOUND-MSG-ID object into the bound signaling message
   (RESERVE (1) in Figure 13) that should wait for the arrival of a
   related binding signaling message (RESERVE' (3) in Figure 13) that
   carries the associated MSG-ID object.  The BOUND-SESSION-ID should
   also be set accordingly.  Only one MSG-ID or BOUND-MSG-ID object per
   message is allowed.  If the dependency relation between the two
   messages is bidirectional, then the Message_Binding_Type flag is SET
   (value is 1).  Otherwise, the Message_Binding_Type flag is UNSET.  In
   most cases, an RII object must be included in order to get a
   corresponding RESPONSE back.

   Depending on the arrival sequence of the bound signaling message
   (RESERVE (1) in Figure 13) and the "triggering" binding signaling
   message (RESERVE' (3) in Figure 13), different situations can be
   identified:

   o  The bound signaling (RESERVE (1)) arrives first.  The receiving
      QNE enqueues (probably after some pre-processing) the signaling
      (RESERVE (1)) message for the corresponding session.  It also
      starts a MsgIDWait timer in order to discard the message in case
      the related "triggering" message (RESERVE' in Figure 13) does not
      arrive.  The timeout period for this time SHOULD be set to the
      default retransmission timeout period (QOSNSLP_REQUEST_RETRY).  In
      case a retransmitted RESERVE message arrives before the timeout,
      it will simply override the waiting message (i.e., the latter is
      discarded, and the new message is now waiting with the MsgIDWait
      timer being reset).

   At the same time, the "triggering" message including a MSG-ID object,
   carrying the same value as the BOUND-MSG-ID object is sent by the
   same initiating QNE (QNI' in Figure 13).  The intermediate QNE' sees
   the MSG-ID object, but can determine that it is not the endpoint for
   the session (QNR') and therefore simply forwards the message after



Manner, et al.                Experimental                     [Page 35]
^L
RFC 5974                        QoS NSLP                    October 2010


   normal processing.  The receiving QNE (QNR') as endpoint for the
   aggregate session (i.e., deaggregator) interprets the MSG-ID object
   and looks for a corresponding waiting message with a BOUND-MSG-ID of
   the same value whose waiting condition is satisfied now.  Depending
   on successful processing of the RESERVE' (3), processing of the
   waiting RESERVE will be resumed, and the MsgIDWait timer will be
   stopped as soon as the related RESERVE' arrived.

      QNI        QNE      QNE/QNI'     QNE'    QNR'/QNE      QNR
                        aggregator           deaggregator
       |          |          |          |          |          |
       | RESERVE  |          |          |          |          |
       +--------->|          |          |          |          |
       |          | RESERVE  |          |          |          |
       |          +--------->|          |          |          |
       |          |          | RESERVE  |          |          |
       |          |          |   (1)    |          |          |
       |          |          +-------------------->|          |
       |          |          | RESERVE' |          |          |
       |          |          |   (2)    |          |          |
       |          |          +=========>| RESERVE' |          |
       |          |          |          |   (3)    |          |
       |          |          |          +=========>| RESERVE  |
       |          |          |          |          |   (4)    |
       |          |          |          |          +--------->|
       |          |          |          | RESPONSE'|          |
       |          |          | RESPONSE'|<=========+          |
       |          |          |<=========+          |          |
       |          |          |          |          | RESPONSE |
       |          |          |          | RESPONSE |<---------+
       |          |          |<--------------------+          |
       |          | RESPONSE |          |          |          |
       |          |<---------+          |          |          |
       | RESPONSE |          |          |          |          |
       |<---------+          |          |          |          |
       |          |          |          |          |          |
       |          |          |          |          |          |


   (1):     RESERVE:  SESSION-ID=F, BOUND-MSG-ID=x, BOUND-SESSION-ID=A
   (2)+(3): RESERVE': SESSION-ID=A, MSG-ID=x
   (4):     RESERVE:  SESSION-ID=F  (MSG-ID object was removed)

               Figure 13: Example for Using Message Binding







Manner, et al.                Experimental                     [Page 36]
^L
RFC 5974                        QoS NSLP                    October 2010


   Several further cases have to be considered in this context:

   o  "Triggering message" (3) arrives before waiting (bound) message
      (1): In this case, the processing of the triggering message
      depends on the value of the Message_Binding_Type flag.  If
      Message_Binding_Type is UNSET (value is 0), then the triggering
      message can be processed normally, but the MSG-ID and the result
      (success or failure) should be saved for the waiting message.
      Thus, the RESPONSE' can be sent by the QNR' immediately.  If the
      waiting message (1) finally arrives at the QNR', it can be
      detected that the waiting condition was already satisfied because
      the triggering message already arrived earlier.  If
      Message_Binding_Type is SET (value is 1), then the triggering
      message interprets the MSG-ID object and looks for the
      corresponding waiting message with a BOUND-MSG-ID of the same
      value, which in this case has not yet arrived.  It then starts a
      MsgIDWait timer in order to discard the message in case the
      related message (RESERVE (1) in Figure 14) does not arrive.
      Depending on successful processing of the RESERVE (1), processing
      of the waiting RESERVE' will be resumed, the MsgIDWait timer will
      be stopped as soon as the related RESERVE arrives and the
      RESPONSE' can be sent by the QNR' towards the QNI'.

   o  The "triggering message" (3) does not arrive at all: this may be
      due to message loss (which will cause a retransmission by the QNI'
      if the RII object is included) or due to a reservation failure at
      an intermediate node (QNE' in the example).  The MsgIDWait timeout
      will then simply discard the waiting message at QNR'.  In this
      case, the QNR' MAY send a RESPONSE message towards the QNI
      informing it that the synchronization of the two messages has
      failed.

   o  Retransmissions should use the same MSG-ID because usually only
      one of the two related messages is retransmitted.  As mentioned
      above: retransmissions will only occur if the RII object is set in
      the RESERVE.  If a retransmitted message with a MSG-ID arrives
      while a bound message with the same MSG-ID is still waiting, the
      retransmitted message will replace the bound message.

   For a receiving node, there are conceptually two lists indexed by
   message IDs.  One list contains the IDs and results of triggering
   messages (those carrying a MSG-ID object), the other list contains
   the IDs and message contents of the bound waiting messages (those who
   carried a BOUND-MSG-ID).  The former list is used when a triggering
   message arrives before the bound message.  The latter list is used
   when a bound message arrives before a triggering message.





Manner, et al.                Experimental                     [Page 37]
^L
RFC 5974                        QoS NSLP                    October 2010


4.7.  Reduced-State or Stateless Interior Nodes

   This example uses a different QoS model within a domain, in
   conjunction with GIST and NSLP functionality that allows the interior
   nodes to avoid storing GIST and QoS NSLP state.  As a result, the
   interior nodes only store the QSPEC-related reservation state or even
   no state at all.  This allows the QoS model to use a form of
   "reduced-state" operation, where reservation states with a coarser
   granularity (e.g., per-class) are used, or a "stateless" operation
   where no QoS NSLP state is needed (or created).  This is useful,
   e.g., for measurement-based admission control schemes.

   The key difference between this example and the use of different QoS
   models in Section 4.5 is the transport characteristics for the
   reservation, i.e., GIST can be used in a different way for the edge-
   to-edge and hop-by-hop sessions.  The reduced-state reservation can
   be updated independently of the per-flow end-to-end reservations.

4.7.1.  Sender-Initiated Reservation

   The QNI initiates a RESERVE message (see Figure 14).  At the QNEs on
   the edges of the stateless or reduced-state region, the processing is
   different and the nodes support two QoS models.  At the ingress, the
   original RESERVE message is forwarded but ignored by the stateless or
   reduced-state nodes.  This is accomplished by marking this message at
   the ingress, i.e., modifying the QoS NSLP default NSLPID value to an
   NSLPID predefined value (see Section 4.6).  The egress must reassign
   the QoS NSLP default NSLPID value to the original end-to-end RESERVE
   message.  An example of such operation is given in [RFC5977].

   The egress node is the next QoS-NSLP hop for the end-to-end RESERVE
   message.  Reliable GIST transfer mode can be used between the ingress
   and egress without requiring GIST state in the interior.  At the
   egress node, the RESERVE message is then forwarded normally.

   At the ingress, a second RESERVE' message is also built (Figure 14).
   This makes use of a QoS model suitable for a reduced-state or
   stateless form of operation (such as the RMD per-hop reservation).
   Since the original RESERVE and the RESERVE' messages are addressed
   identically, the RESERVE' message also arrives at the same egress QNE
   that was also traversed by the RESERVE message.  Message binding is
   used to synchronize the messages.

   When processed by interior (stateless) nodes, the QoS NSLP processing
   exercises its options to not keep state wherever possible, so that no
   per-flow QoS NSLP state is stored.  Some state, e.g., per class, for
   the QSPEC-related data may be held at these interior nodes.  The QoS
   NSLP also requests that GIST use different transport characteristics



Manner, et al.                Experimental                     [Page 38]
^L
RFC 5974                        QoS NSLP                    October 2010


   (e.g., sending of messages in unreliable GIST transfer mode).  It
   also requests the local GIST processing not to retain messaging
   association state or reverse message routing state.

   Nodes, such as those in the interior of the stateless or reduced-
   state domain, that do not retain reservation state cannot send back
   RESPONSE messages (and so cannot use the refresh reduction
   extension).

   At the egress node, the RESERVE' message is interpreted in
   conjunction with the reservation state from the end-to-end RESERVE
   message (using information carried in the message to correlate the
   signaling flows).  The RESERVE message is only forwarded further if
   the processing of the RESERVE' message was successful at all nodes in
   the local domain; otherwise, the end-to-end reservation is regarded
   as having failed to be installed.  This can be realized by using the
   message binding functionality described in Section 4.6 to synchronize
   the arrival of the bound signaling message (end-to-end RESERVE) and
   the binding signaling message (local RESERVE').

           QNE             QNE             QNE            QNE
         ingress         interior        interior        egress
     GIST stateful  GIST stateless  GIST stateless  GIST stateful
            |               A               B              |
    RESERVE |               |               |              |
   -------->| RESERVE       |               |              |
            +--------------------------------------------->|
            | RESERVE'      |               |              |
            +-------------->|               |              |
            |               | RESERVE'      |              |
            |               +-------------->|              |
            |               |               | RESERVE'     |
            |               |               +------------->|
            |               |               |  RESPONSE'   |
            |<---------------------------------------------+
            |               |               |              | RESERVE
            |               |               |              +-------->
            |               |               |              | RESPONSE
            |               |               |              |<--------
            |               |               |     RESPONSE |
            |<---------------------------------------------+
    RESPONSE|               |               |              |
   <--------|               |               |              |

    Figure 14: Sender-Initiated Reservation with Reduced-State Interior
                                   Nodes





Manner, et al.                Experimental                     [Page 39]
^L
RFC 5974                        QoS NSLP                    October 2010


   Resource management errors in the example above are reflected in the
   QSPEC and QoS model processing.  For example, if the RESERVE' fails
   at QNE A, it cannot send an error message back to the ingress QNE.
   Thus, the RESERVE' is forwarded along the intended path, but the
   QSPEC includes information for subsequent QNEs telling them an error
   happened upstream.  It is up to the QoS model to determine what to
   do.  Eventually, the RESERVE' will reach the egress QNE, and again,
   the QoS model then determines the response.

4.7.2.  Receiver-Initiated Reservation

   Since NSLP neighbor relationships are not maintained in the reduced-
   state region, only sender-initiated signaling can be supported within
   the reduced-state region.  If a receiver-initiated reservation over a
   stateless or reduced-state domain is required, this can be
   implemented as shown in Figure 15.

           QNE            QNE            QNE
         ingress        interior        egress
     GIST stateful  GIST stateless  GIST stateful
            |               |               |
    QUERY   |               |               |
   -------->| QUERY         |               |
            +------------------------------>|
            |               |               | QUERY
            |               |               +-------->
            |               |               | RESERVE
            |               |               |<--------
            |               |      RESERVE  |
            |<------------------------------+
            | RESERVE'      | RESERVE'      |
            |-------------->|-------------->|
            |               |     RESPONSE' |
            |<------------------------------+
    RESERVE |               |               |
   <--------|               |               |

   Figure 15: Receiver-Initiated Reservation with Reduced-State Interior
                                   Nodes

   The RESERVE message that is received by the egress QNE of the
   stateless domain is sent transparently to the ingress QNE (known as
   the source of the QUERY message).  When the RESERVE message reaches
   the ingress, the ingress QNE needs to send a sender-initiated
   RESERVE' over the stateless domain.  The ingress QNE needs to wait
   for a RESPONSE'.  If the RESPONSE' notifies that the reservation was
   accomplished successfully, then the ingress QNE sends a RESERVE
   message further upstream.



Manner, et al.                Experimental                     [Page 40]
^L
RFC 5974                        QoS NSLP                    October 2010


4.8.  Proxy Mode

   Besides the sender- and receiver-initiated reservations, the QoS NSLP
   includes a functionality we refer to as Proxy Mode.  Here a QNE is
   set by administrator assignment to work as a proxy QNE (P-QNE) for a
   certain region, e.g., for an administrative domain.  A node
   initiating the signaling may set the PROXY scope flag to indicate
   that the signaling is meant to be confined within the area controlled
   by the proxy, e.g., the local access network.

   The Proxy Mode has two uses.  First, it allows the QoS NSLP signaling
   to be confined to a pre-defined section of the path.  Second, it
   allows a node to make reservations for an incoming data flow.

   For outgoing data flows and sender-initiated reservations, the end
   host is the QNI, and sends a RESERVE with the PROXY scope flag set.
   The P-QNE is the QNR; it will receive the RESERVE, notice the PROXY
   scope flag is set and reply with a RESPONSE (if requested).  This
   operation is the same as illustrated in Figure 7.  The receiver-
   oriented reservation for outgoing flows works the same way as in
   Figure 8, except that the P-QNE is the QNI.

   For incoming data flows, the end host is the QNI, and it sends a
   RESERVE towards the data sender with the PROXY scope flag set.  Here
   the end host sets the MRI so that it indicates the end host as the
   receiver of the data, and sets the D-flag.

   GIST is able to send messages towards the data sender if there is
   existing message routing state or it is able to use the Upstream
   Q-mode Encapsulation.  In some cases, GIST will be unable to
   determine the appropriate next hop for the message, and so will
   indicate a failure to deliver it (by sending an error message).  This
   may occur, for example, if GIST attempts to determine an upstream
   next hop and there are multiple possible inbound routes that could be
   used.

   Bidirectional reservations can be used, as discussed in Section 4.4.
   The P-QNE will be the QNR or QNI for reservations.

   If the PROXY scope flag is set in an incoming QoS NSLP message, the
   QNE must set the same flag in all QoS NSLP messages it sends that are
   related to this session.









Manner, et al.                Experimental                     [Page 41]
^L
RFC 5974                        QoS NSLP                    October 2010


5.  QoS NSLP Functional Specification

5.1.  QoS NSLP Message and Object Formats

   A QoS NSLP message consists of a common header, followed by a body
   consisting of a variable number of variable-length, typed "objects".
   The common header and other objects are encapsulated together in a
   GIST NSLP-Data object.  The following subsections define the formats
   of the common header and each of the QoS NSLP message types.  In the
   message formats, the common header is denoted as COMMON-HEADER.

   For each QoS NSLP message type, there is a set of rules for the
   permissible choice of object types.  These rules are specified using
   the Augmented Backus-Naur Form (ABNF) specified in RFC 5234
   [RFC5234].  The ABNF implies an order for the objects in a message.
   However, in many (but not all) cases, object order makes no logical
   difference.  An implementation SHOULD create messages with the
   objects in the order shown here, but MUST accept the objects in any
   order.

5.1.1.  Common Header

   All GIST NSLP-Data objects for the QoS NSLP MUST contain this common
   header as the first 32 bits of the object (this is not the same as
   the GIST Common Header).

    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | Message Type  | Message Flags |      Generic Flags            |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   The fields in the common header are as follows:

   Msg Type: 8 bits

      1 = RESERVE

      2 = QUERY

      3 = RESPONSE

      4 = NOTIFY

   Message-specific flags: 8 bits

      These flags are defined as part of the specification of individual
      messages, and, thus, are different with each message type.



Manner, et al.                Experimental                     [Page 42]
^L
RFC 5974                        QoS NSLP                    October 2010


   Generic flags: 16 bits

      Generic flags have the same meaning for all message types.  There
      exist currently four generic flags: the (next hop) Scoping flag
      (S), the Proxy scope flag (P), the Acknowledgement Requested flag
      (A), and the Break flag (B).

   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |         Reserved      |B|A|P|S|
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   SCOPING (S) - when set, indicates that the message is scoped and
   should not travel down the entire path but only as far as the next
   QNE (scope="next hop").  By default, this flag is not set (default
   scope="whole path").

   PROXY (P) - when set, indicates that the message is scoped, and
   should not travel down the entire path but only as far as the P-QNE.
   By default, this flag is not set.

   ACK-REQ (A) - when set, indicates that the message should be
   acknowledged by the receiving peer.  The flag is only used between
   stateful peers, and only used with RESERVE and QUERY messages.
   Currently, the flag is only used with refresh messages.  By default,
   the flag is not set.

   BREAK (B) - when set, indicates that there are routers along the path
   where QoS cannot be provided.

   The set of appropriate flags depends on the particular message being
   processed.  Any bit not defined as a flag for a particular message
   MUST be set to zero on sending and MUST be ignored on receiving.

   The ACK-REQ flag is useful when a QNE wants to make sure the messages
   received by the downstream QNE are truly processed by the QoS NSLP,
   not just delivered by GIST.  This is useful for faster dead peer
   detection on the NSLP layer.  This liveliness test can only be used
   with refresh RESERVE messages.  The ACK-REQ flag must not be set for
   RESERVE messages that already include an RII object, since a
   confirmation has already been requested from the QNR.  Reliable
   transmission of messages between two QoS NSLP peers should be handled
   by GIST, not the NSLP by itself.









Manner, et al.                Experimental                     [Page 43]
^L
RFC 5974                        QoS NSLP                    October 2010


5.1.2.  Message Formats

5.1.2.1.  RESERVE

   The format of a RESERVE message is as follows:

      RESERVE = COMMON-HEADER
                RSN [ RII ] [ REFRESH-PERIOD ] [ *BOUND-SESSION-ID ]
                [ SESSION-ID-LIST [ RSN-LIST ] ]
                [ MSG-ID / BOUND-MSG-ID ] [ INFO-SPEC ]
                [ [ PACKET-CLASSIFIER ] QSPEC ]

   The RSN is the only mandatory object and MUST always be present in
   all cases.  A QSPEC MUST be included in the initial RESERVE sent
   towards the QNR.  A PACKET-CLASSIFIER MAY be provided.  If the
   PACKET-CLASSIFIER is not provided, then the full set of information
   provided in the GIST MRI for the session should be used for packet
   classification purposes.

   Subsequent RESERVE messages meant as reduced refreshes, where no
   QSPEC is provided, MUST NOT include a PACKET-CLASSIFIER either.

   There are no requirements on transmission order, although the above
   order is recommended.

   Two message-specific flags are defined for use in the common header
   with the RESERVE message.  These are:

   +-+-+-+-+-+-+-+-+
   |Reserved   |T|R|
   +-+-+-+-+-+-+-+-+

   TEAR (T) - when set, indicates that reservation state and QoS NSLP
   operation state should be torn down.  The former is indicated to the
   RMF.  Depending on the QoS model, the tear message may include a
   QSPEC to further specify state removal, e.g., for an aggregation, the
   QSPEC may specify the amount of resources to be removed from the
   aggregate.

   REPLACE (R) - when set, the flag has two uses.  First, it indicates
   that a RESERVE with different MRI (but same SID) replaces an existing
   one, so the old one MAY be torn down immediately.  This is the
   default situation.  This flag may be unset to indicate a desire from
   an upstream node to keep an existing reservation on an old branch in
   place.  Second, this flag is also used to indicate whether the
   reserved resources on the old branch should be torn down or not when
   a data path change happens.  In this case, the MRI is the same and
   only the route path changes.



Manner, et al.                Experimental                     [Page 44]
^L
RFC 5974                        QoS NSLP                    October 2010


   If the REFRESH-PERIOD is not present, a default value of 30 seconds
   is assumed.

   If the session of this message is bound to another session, then the
   RESERVE message MUST include the SESSION-ID of that other session in
   a BOUND-SESSION-ID object.  In the situation of aggregated tunnels,
   the aggregated session MAY not include the SESSION-ID of its bound
   sessions in BOUND-SESSION-ID(s).

   The negotiation of whether to perform sender- or receiver-initiated
   signaling is done outside the QoS NSLP.  Yet, in theory, it is
   possible that a "reservation collision" may occur if the sender
   believes that a sender-initiated reservation should be performed for
   a flow, whilst the other end believes that it should be starting a
   receiver-initiated reservation.  If different session identifiers are
   used, then this error condition is transparent to the QoS NSLP,
   though it may result in an error from the RMF.  Otherwise, the
   removal of the duplicate reservation is left to the QNIs/QNRs for the
   two sessions.

   If a reservation is already installed and a RESERVE message is
   received with the same session identifier from the other direction
   (i.e., going upstream where the reservation was installed by a
   downstream RESERVE message, or vice versa), then an error indicating
   "RESERVE received from wrong direction" MUST be sent in a RESPONSE
   message to the signaling message source for this second RESERVE.

   A refresh right along the path can be forced by requesting a RESPONSE
   from the far end (i.e., by including an RII object in the RESERVE
   message).  Without this, a refresh RESERVE would not trigger RESERVE
   messages to be sent further along the path, as each hop has its own
   refresh timer.

   A QNE may ask for confirmation of a tear operation by including an
   RII object.  QoS NSLP retransmissions SHOULD be disabled.  A QNE
   sending a tearing RESERVE with an RII included MAY ask GIST to use
   reliable transport.  When the QNE sends out a tearing RESERVE, it
   MUST NOT send refresh messages anymore.

   If the routing path changed due to mobility and the mobile node's IP
   address changed, and it sent a Mobile IP binding update, the
   resulting refresh is a new RESERVE.  This RESERVE includes a new MRI
   and will be propagated end-to-end; there is no need to force end-to-
   end forwarding by including an RII.







Manner, et al.                Experimental                     [Page 45]
^L
RFC 5974                        QoS NSLP                    October 2010


   Note: It is possible for a host to use this mechanism to constantly
   force the QNEs on the path to send refreshing RESERVE messages.  It
   may, therefore, be appropriate for QNEs to perform rate-limiting on
   the refresh messages that they send.

5.1.2.2.  QUERY

   The format of a QUERY message is as follows:

      QUERY = COMMON-HEADER
              [ RII ] [ *BOUND-SESSION-ID ]
              [ PACKET-CLASSIFIER ] [ INFO-SPEC ] QSPEC [ QSPEC ]

   QUERY messages MUST always include a QSPEC.  QUERY messages MAY
   include a PACKET-CLASSIFIER when the message is used to trigger a
   receiver-initiated reservation.  If a PACKET-CLASSIFIER is not
   included then the full GIST MRI should be used for packet
   classification purposes in the subsequent RESERVE.  A QUERY message
   MAY contain a second QSPEC object.

   A QUERY message for requesting information about network resources
   MUST contain an RII object to match an incoming RESPONSE to the
   QUERY.

   The QSPEC object describes what is being queried for and may contain
   objects that gather information along the data path.  There are no
   requirements on transmission order, although the above order is
   recommended.

   One message-specific flag is defined for use in the common header
   with the QUERY message.  It is:

   +-+-+-+-+-+-+-+-+
   |Reserved     |R|
   +-+-+-+-+-+-+-+-+

   RESERVE-INIT (R) - when this is set, the QUERY is meant as a trigger
   for the recipient to make a resource reservation by sending a
   RESERVE.

   If the session of this message is bound to another session, then the
   RESERVE message MUST include the SESSION-ID of that other session in
   a BOUND-SESSION-ID object.  In the situation of aggregated tunnels,
   the aggregated session MAY not include the SESSION-ID of its bound
   sessions in BOUND-SESSION-ID(s).






Manner, et al.                Experimental                     [Page 46]
^L
RFC 5974                        QoS NSLP                    October 2010


5.1.2.3.  RESPONSE

   The format of a RESPONSE message is as follows:

      RESPONSE = COMMON-HEADER
                 [ RII / RSN ] INFO-SPEC [SESSION-ID-LIST [ RSN-LIST ] ]
                 [ QSPEC ]

   A RESPONSE message MUST contain an INFO-SPEC object that indicates
   the success of a reservation installation or an error condition.
   Depending on the value of the INFO-SPEC, the RESPONSE MAY also
   contain a QSPEC object.  The value of an RII or an RSN object was
   provided by some previous QNE.  There are no requirements on
   transmission order, although the above order is recommended.

   No message-specific flags are defined for use in the common header
   with the RESPONSE message.

5.1.2.4.  NOTIFY

   The format of a NOTIFY message is as follows:

      NOTIFY = COMMON-HEADER
               INFO-SPEC [ QSPEC ]

   A NOTIFY message MUST contain an INFO-SPEC object indicating the
   reason for the notification.  Depending on the INFO-SPEC value, it
   MAY contain a QSPEC object providing additional information.

   No message-specific flags are defined for use with the NOTIFY
   message.

5.1.3.  Object Formats

   The QoS NSLP uses a Type-Length-Value (TLV) object format similar to
   that used by GIST.  Every object consists of one or more 32-bit words
   with a one-word header.  For convenience, the standard object header
   is shown here:

    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |A|B|r|r|         Type          |r|r|r|r|        Length         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+







Manner, et al.                Experimental                     [Page 47]
^L
RFC 5974                        QoS NSLP                    October 2010


   The value for the Type field comes from the shared NSLP object type
   space; the various objects are presented in subsequent sections.  The
   Length field is given in units of 32-bit words and measures the
   length of the Value component of the TLV object (i.e., it does not
   include the standard header).

   The bits marked 'A' and 'B' are flags used to signal the desired
   treatment for objects whose treatment has not been defined in the
   protocol specification (i.e., whose Type field is unknown at the
   receiver).  The following four categories of object have been
   identified, and are described here.

      AB=00 ("Mandatory"): If the object is not understood, the entire
      message containing it MUST be rejected, and an error message sent
      back.

      AB=01 ("Ignore"): If the object is not understood, it MUST be
      deleted and the rest of the message processed as usual.

      AB=10 ("Forward"): If the object is not understood, it MUST be
      retained unchanged in any message forwarded as a result of message
      processing, but not stored locally.

      AB=11 ("Refresh"): If the object is not understood, it should be
      incorporated into the locally stored QoS NSLP signaling
      application operational state for this flow/session, forwarded in
      any resulting message, and also used in any refresh or repair
      message that is generated locally.  The contents of this object
      does not need to be interpreted, and should only be stored as
      bytes on the QNE.

   The remaining bits marked 'r' are reserved.  These SHALL be set to 0
   and SHALL be ignored on reception.  The extensibility flags AB are
   similar to those used in the GIST specification.  All objects defined
   in this specification MUST be understood by all QNEs; thus, they MUST
   have the AB-bits set to "00".  A QoS NSLP implementation must
   recognize objects of the following types: RII, RSN, REFRESH-PERIOD,
   BOUND-SESSION-ID, INFO-SPEC, and QSPEC.

   The object header is followed by the Value field, which varies for
   different objects.  The format of the Value field for currently
   defined objects is specified below.

   The object diagrams here use '//' to indicate a variable-sized field.







Manner, et al.                Experimental                     [Page 48]
^L
RFC 5974                        QoS NSLP                    October 2010


5.1.3.1.  Request Identification Information (RII)

   Type: 0x001

   Length: Fixed - 1 32-bit word

   Value: An identifier that MUST be (probabilistically) unique within
   the context of a SESSION-ID and SHOULD be different every time a
   RESPONSE is desired.  Used by a QNE to match back a RESPONSE to a
   request in a RESERVE or QUERY message.

    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |            Request Identification Information (RII)           |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

5.1.3.2.  Reservation Sequence Number (RSN)

   Type: 0x002

   Length: Fixed - 2 32-bit words

   Value: An incrementing sequence number that indicates the order in
   which state-modifying actions are performed by a QNE, and an epoch
   identifier to allow the identification of peer restarts.  The RSN has
   local significance only, i.e., between a QNE and its downstream
   stateful peers.  The RSN is not reset when the downstream peer
   changes.

    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |               Reservation Sequence Number (RSN)               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                       Epoch Identifier                        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

5.1.3.3.  Refresh Period (REFRESH-PERIOD)

   Type: 0x003

   Length: Fixed - 1 32-bit word

   Value: The refresh timeout period R used to generate this message; in
   milliseconds.





Manner, et al.                Experimental                     [Page 49]
^L
RFC 5974                        QoS NSLP                    October 2010


    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                      Refresh Period (R)                       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

5.1.3.4.  Bound Session ID (BOUND-SESSION-ID)

   Type: 0x004

   Length: Fixed - 5 32-bit words

   Value: contains an 8-bit Binding_Code that indicates the nature of
   the binding.  The rest specifies the SESSION-ID (as specified in GIST
   [RFC5971]) of the session that MUST be bound to the session
   associated with the message carrying this object.

    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                  RESERVED                     |  Binding Code |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               |
   +                                                               +
   |                                                               |
   +                          Session ID                           +
   |                                                               |
   +                                                               +
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   Currently defined Binding Codes are:

   o  0x01 - Tunnel and end-to-end sessions

   o  0x02 - Bidirectional sessions

   o  0x03 - Aggregate sessions

   o  0x04 - Dependent sessions (binding session is alive only if the
      other session is also alive)

   o  0x05 - Indicated session caused preemption

   More binding codes may be defined based on the above five atomic
   binding actions.  Note a message may include more than one BOUND-
   SESSION-ID object.  This may be needed in case one needs to define
   more specifically the reason for binding, or if the session depends



Manner, et al.                Experimental                     [Page 50]
^L
RFC 5974                        QoS NSLP                    October 2010


   on more than one other session (with possibly different reasons).
   Note that a session with, e.g., SID_A (the binding session), can
   express its unidirectional dependency relation to another session
   with, e.g., SID_B (the bound session), by including a
   BOUND-SESSION-ID object containing SID_B in its messages.

5.1.3.5.  Packet Classifier (PACKET-CLASSIFIER)

   Type: 0x005

   Length: Variable

   Value: Contains variable-length MRM-specific data

    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   //          Method-specific classifier data (variable)         //
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   At this stage, the QoS NSLP only uses the path-coupled routing MRM.
   The method-specific classifier data is four bytes long and consists
   of a set of flags:

    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |X|Y|P|T|F|S|A|B|                      Reserved                |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   The flags are:

   X - Source Address and Prefix

   Y - Destination Address and Prefix

   P - Protocol

   T - Diffserv Code Point

   F - Flow Label

   S - SPI

   A - Source Port

   B - Destination Port




Manner, et al.                Experimental                     [Page 51]
^L
RFC 5974                        QoS NSLP                    October 2010


   The flags indicate which fields from the MRI MUST be used by the
   packet classifier.  This allows a subset of the information in the
   MRI to be used for identifying the set of packets that are part of
   the reservation.  Flags MUST only be set if the data is present in
   the MRI (i.e., where there is a corresponding flag in the GIST MRI,
   the flag can only be set if the corresponding GIST MRI flag is set).
   It should be noted that some flags in the PACKET-CLASSIFIER (X and Y)
   relate to data that is always present in the MRI, but are optional to
   use for QoS NSLP packet classification.  The appropriate set of flags
   set may depend, to some extent, on the QoS model being used.

   As mentioned earlier in this section, the QoS NSLP is currently only
   defined for use with the Path-Coupled Message Routing Method (MRM) in
   GIST.  Future work may extend the QoS NSLP to additional routing
   mechanisms.  Such MRMs must include sufficient information in the MRI
   to allow the subset of packets for which QoS is to be provided to be
   identified.  When QoS NSLP is extended to support a new MRM,
   appropriate method-specific classifier data for the PACKET-CLASSIFIER
   object MUST be defined.

5.1.3.6.  Information Object (INFO-SPEC) and Error Codes

   Type: 0x006

   Length: Variable

   Value: Contains 8 reserved bits, an 8-bit error code, a 4-bit error
   class, a 4-bit error source identifier type, and an 8-bit error
   source identifier length (in 32-bit words), an error source
   identifier, and optionally variable-length error-specific
   information.

    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |    Reserved   |  Error Code   |E-Class|ESI Typ|   ESI-Length  |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   //                   Error Source Identifier                   //
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   //             Optional error-specific information             //
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   Class Field:

   The four E-Class bits of the object indicate the error severity
   class.  The currently defined error classes are:





Manner, et al.                Experimental                     [Page 52]
^L
RFC 5974                        QoS NSLP                    October 2010


   o  1 - Informational

   o  2 - Success

   o  3 - Protocol Error

   o  4 - Transient Failure

   o  5 - Permanent Failure

   o  6 - QoS Model Error

   Error field:

   Within each error severity class, a number of Error Code values are
   defined.

   o Informational:

      *  0x01 -  Unknown BOUND-SESSION-ID: the message refers to an
                 unknown SESSION-ID in its BOUND-SESSION-ID object.

      *  0x02 -  Route Change: possible route change occurred on
                 downstream path.

      *  0x03 -  Reduced refreshes not supported; full QSPEC required.

      *  0x04 -  Congestion situation: Possible congestion situation
                 occurred on downstream path.

      *  0x05 -  Unknown SESSION-ID in SESSION-ID-LIST.

      *  0x06 -  Mismatching RSN in RSN-LIST.

   o Success:

      *  0x01 -  Reservation successful

      *  0x02 -  Teardown successful

      *  0x03 -  Acknowledgement

      *  0x04 -  Refresh successful








Manner, et al.                Experimental                     [Page 53]
^L
RFC 5974                        QoS NSLP                    October 2010


   o Protocol Error:

      *  0x01 -  Illegal message type: the type given in the Message
                 Type field of the common header is unknown.

      *  0x02 -  Wrong message length: the length given for the message
                 does not match the length of the message data.

      *  0x03 -  Bad flags value: an undefined flag or combination of
                 flags was set in the generic flags.

      *  0x04 -  Bad flags value: an undefined flag or combination of
                 flags was set in the message-specific flags.

      *  0x05 -  Mandatory object missing: an object required in a
                 message of this type was missing.

      *  0x06 -  Illegal object present: an object was present that must
                 not be used in a message of this type.

      *  0x07 -  Unknown object present: an object of an unknown type
                 was present in the message.

      *  0x08 -  Wrong object length: the length given for the object
                 did not match the length of the object data present.

      *  0x09 -  RESERVE received from wrong direction.

      *  0x0a -  Unknown object field value: a field in an object had an
                 unknown value.

      *  0x0b -  Duplicate object present.

      *  0x0c -  Malformed QSPEC.

      *  0x0d -  Unknown MRI.

      *  0x0e -  Erroneous value in the TLV object's value field.

      *  0x0f -  Incompatible QSPEC.

   o Transient Failure:

      *  0x01 -  No GIST reverse-path forwarding state

      *  0x02 -  No path state for RESERVE, when doing a receiver-
                 oriented reservation




Manner, et al.                Experimental                     [Page 54]
^L
RFC 5974                        QoS NSLP                    October 2010


      *  0x03 -  RII conflict

      *  0x04 -  Full QSPEC required

      *  0x05 -  Mismatch synchronization between end-to-end RESERVE and
                 intra-domain RESERVE

      *  0x06 -  Reservation preempted

      *  0x07 -  Reservation failure

      *  0x08 -  Path truncated - Next peer dead

   o Permanent Failure:

      *  0x01 -  Internal or system error

      *  0x02 -  Authorization failure

   o QoS Model Error:

      This error class can be used by QoS models to add error codes
      specific to the QoS model being used.  All these errors and events
      are created outside the QoS NSLP itself.  The error codes in this
      class are defined in QoS model specifications.  Note that this
      error class may also include codes that are not purely errors, but
      rather some non-fatal information.

   Error Source Identifier (ESI)

   The Error Source Identifier is for diagnostic purposes and its
   inclusion is OPTIONAL.  It is suggested that implementations use this
   for the IP address, host name, or other identifier of the QNE
   generating the INFO-SPEC to aid diagnostic activities.  A QNE SHOULD
   NOT be used in any purpose other than error logging or being
   presented to the user as part of any diagnostic information.  A QNE
   SHOULD NOT attempt to send a message to that address.

   If no Error Source Identifier is included, the Error Source
   Identifier Type field must be zero.

   Currently three Error Source Identifiers have been defined: IPv4,
   IPv6, and FQDN.

   Error Source Identifier: IPv4

   Error Source Identifier Type: 0x1




Manner, et al.                Experimental                     [Page 55]
^L
RFC 5974                        QoS NSLP                    October 2010


    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                      32-bit IPv4 address                      |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   Error Source Identifier: IPv6

   Error Source Identifier Type: 0x2

    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               |
   +                                                               +
   |                                                               |
   +                      128-bit IPv6 address                     +
   |                                                               |
   +                                                               +
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   Error Source Identifier: FQDN in UTF-8

   Error Source Identifier Type: 0x3

    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   //                            FQDN                             //
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   If the length of the FQDN is not a multiple of 32-bits, the field is
   padded with zero octets to the next 32-bit boundary.

   If a QNE encounters protocol errors, it MAY include additional
   information, mainly for diagnostic purposes.  Additional information
   MAY be included if the type of an object is erroneous, or a field has
   an erroneous value.

   If the type of an object is erroneous, the following optional error-
   specific information may be included at the end of the INFO-SPEC.









Manner, et al.                Experimental                     [Page 56]
^L
RFC 5974                        QoS NSLP                    October 2010


   Object Type Info:

    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |         Object Type           |           Reserved            |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   This object provides information about the type of object that caused
   the error.

   If a field in an object had an incorrect value, the following
   Optional error-specific information may be added at the end of the
   INFO-SPEC.

   Object Value Info:

    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | Rsvd  |  Real Object Length   |            Offset             |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   //                           Object                            //
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   Real Object Length: Since the length in the original TLV header may
   be inaccurate, this field provides the actual length of the object
   (including the TLV Header) included in the error message.

   Offset: Indicates which part of the erroneous object is included.
   When this field is set to "0", the complete object is included.  If
   Offset is bigger than "0", the erroneous object from offset
   (calculated from the beginning of the object) to the end of the
   object is included.

   Object: The invalid TLV object (including the TLV Header).

   This object carries information about a TLV object that was found to
   be invalid in the original message.  An error message may contain
   more than one Object Value Info object.

5.1.3.7.  SESSION-ID List (SESSION-ID-LIST)

   Type: 0x007

   Length: Variable





Manner, et al.                Experimental                     [Page 57]
^L
RFC 5974                        QoS NSLP                    October 2010


   Value: A list of 128-bit SESSION-IDs used in summary refresh and
   summary tear messages.  All SESSION-IDs are concatenated together.

    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               |
   +                                                               +
   |                                                               |
   +                          Session ID 1                         +
   |                                                               |
   +                                                               +
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   :                                                               :
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               |
   +                                                               +
   |                                                               |
   +                          Session ID n                         +
   |                                                               |
   +                                                               +
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

5.1.3.8.  Reservation Sequence Number (RSN) List (RSN-LIST)

   Type: 0x008

   Length: Variable

   Value: A list of 32-bit Reservation Sequence Number (RSN) values.
   All RSN are concatenated together.

    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                       Epoch Identifier                        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |             Reservation Sequence Number 1 (RSN1)              |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   :                                                               :
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |             Reservation Sequence Number n (RSNn)              |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+






Manner, et al.                Experimental                     [Page 58]
^L
RFC 5974                        QoS NSLP                    October 2010


5.1.3.9.  Message ID (MSG-ID)

   Type: 0x009

   Length: Fixed - 5 32-bit words

   Value: contains a 1-bit Message_Binding_Type (D) that indicates the
   dependency relation of a message binding.  The rest specifies a
   128-bit randomly generated value that "uniquely" identifies this
   particular message.

       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
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                  RESERVED                                   |D|
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                                                               |
      +                                                               +
      |                                                               |
      +                          Message ID                           +
      |                                                               |
      +                                                               +
      |                                                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   The Message Binding Codes are:

   * 0 - Unidirectional binding dependency

   * 1 - Bidirectional binding dependency

5.1.3.10.  Bound Message ID (BOUND-MSG-ID)

   Type: 0x00A

   Length: Fixed - 5 32-bit words

   Value: contains a 1-bit Message_Binding_Type (D) that indicates the
   dependency relation of a message binding.  The rest specifies a
   128-bit randomly generated value that refers to a Message ID in
   another message.










Manner, et al.                Experimental                     [Page 59]
^L
RFC 5974                        QoS NSLP                    October 2010


       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
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                  RESERVED                                   |D|
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                                                               |
      +                                                               +
      |                                                               |
      +                        Bound Message ID                       +
      |                                                               |
      +                                                               +
      |                                                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   The Message Binding Codes are:

   * 0 - Unidirectional binding dependency

   * 1 - Bidirectional binding dependency

5.1.3.11.  QoS Specification (QSPEC)

   Type: 0x00B

   Length: Variable

   Value: Variable-length QSPEC (QoS specification) information, which
   is dependent on the QoS model.

   The contents and encoding rules for this object are specified in
   other documents.  See [RFC5975].

    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               |
   //                         QSPEC Data                          //
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

5.2.  General Processing Rules

   This section provides the general processing rules used by QoS-NSLP.
   The triggers communicated between RM/QOSM and QoS-NSLP
   functionalities are given in Appendices Appendix A.1, Appendix A.2,
   and Appendix A.3.





Manner, et al.                Experimental                     [Page 60]
^L
RFC 5974                        QoS NSLP                    October 2010


5.2.1.  State Manipulation

   The processing of a message and its component objects involves
   manipulating the QoS NSLP and reservation state of a QNE.

   For each flow, a QNE stores (RMF-related) reservation state that
   depends on:

   o  the QoS model / QSPEC used,

   o  the QoS NSLP operation state, which includes non-persistent state
      (e.g., the API parameters while a QNE is processing a message),
      and

   o  the persistent state, which is kept as long as the session is
      active.

   The persistent QoS NSLP state is conceptually organized in a table
   with the following structure.  The primary key (index) for the table
   is the SESSION-ID:

   SESSION-ID
      A 128-bit identifier.

   The state information for a given key includes:

   Flow ID
      Based on GIST MRI.  Several entries are possible in case of
      mobility events.

   SII-Handle for each upstream and downstream peer
      The SII-Handle is a local identifier generated by GIST and passed
      over the API.  It is a handle that allows to refer to a particular
      GIST next hop.  See SII-Handle in [RFC5971] for more information.

   RSN from the upstream peer
      The RSN is a 32-bit counter.

   The latest local RSN
      A 32-bit counter.

   List of RII for outstanding responses with processing information.
      The RII is a 32-bit number.

   State lifetime
      The state lifetime indicates how long the state that is being
      signaled for remains valid.




Manner, et al.                Experimental                     [Page 61]
^L
RFC 5974                        QoS NSLP                    October 2010


   List of bound sessions
      A list of BOUND-SESSION-ID 128-bit identifiers for each session
      bound to this state.

   Scope of the signaling
      If the Proxy scope is used, a flag is needed to identify all
      signaling of this session as being scoped.

   Adding the state requirements of all these items gives an upper bound
   on the state to be kept by a QNE.  The need to keep state depends on
   the desired functionality at the NSLP layer.

5.2.2.  Message Forwarding

   QoS NSLP messages are sent peer-to-peer along the path.  The QoS NSLP
   does not have the concept of a message being sent directly to the end
   of the path.  Instead, messages are received by a QNE, which may then
   send another message (which may be identical to the received message
   or contain some subset of objects from it) to continue in the same
   direction (i.e., towards the QNI or QNR) as the message received.

   The decision on whether to generate a message to forward may be
   affected by the value of the SCOPING or PROXY flags, or by the
   presence of an RII object.

5.2.3.  Standard Message Processing Rules

   If a mandatory object is missing from a message then the receiving
   QNE MUST NOT propagate the message any further.  It MUST construct a
   RESPONSE message indicating the error condition and send it back to
   the peer QNE that sent the message.

   If a message contains an object of an unrecognised type, then the
   behavior depends on the AB extensibility flags.

   If the Proxy scope flag was set in an incoming QoS NSLP message, the
   QNE must set the same flag in all QoS NSLP messages it sends that are
   related to this session.

5.2.4.  Retransmissions

   Retransmissions may happen end-to-end (e.g., between QNI and QNR
   using an RII object) or peer-to-peer (between two adjacent QNEs).
   When a QNE transmits a RESERVE with an RII object set, it waits for a
   RESPONSE from the responding QNE.  QoS NSLP messages for which a
   response is requested by including an RII object, but that fail to
   elicit a response are retransmitted.  Similarly, a QNE may include
   the ACK-REQ flag to request confirmation of a refresh message



Manner, et al.                Experimental                     [Page 62]
^L
RFC 5974                        QoS NSLP                    October 2010


   reception from its immediate peer.  The retransmitted message should
   be exactly the same as the original message, e.g., the RSN is not
   modified with each retransmission.

   The initial retransmission occurs after a QOSNSLP_REQUEST_RETRY wait
   period.  Retransmissions MUST be made with exponentially increasing
   wait intervals (doubling the wait each time).  QoS NSLP messages
   SHOULD be retransmitted until either a RESPONSE (which might be an
   error) has been obtained, or until QOSNSLP_RETRY_MAX seconds after
   the initial transmission.  In the latter case, a failure SHOULD be
   indicated to the signaling application.  The default values for the
   above-mentioned timers are:

   QOSNSLP_REQUEST_RETRY: 2 seconds      Wait interval before initial
                                         retransmit of the message

   QOSNSLP_RETRY_MAX:    30 seconds      Period to retry sending the
                                         message before giving up

   Retransmissions SHOULD be disabled for tear messages.

5.2.5.  Rerouting

5.2.5.1.  Last Node Behavior

   As discussed in Section 3.2.12, some care needs to be taken to handle
   cases where the last node on the path may change.

   A node that is the last node on the path, but not the data receiver
   (or an explicitly configured proxy for it), MUST continue to attempt
   to send messages downstream to probe for path changes.  This must be
   done in order to handle the "Path Extension" case described in
   Section 5.2.5.1.

   A node on the path, that was not previously the last node, MUST take
   over as the last node on the signaling path if GIST path change
   detection identifies that there are no further downstream nodes on
   the path.  This must be done in order to handle the "Path Truncation"
   case described in Section 5.2.5.1.

5.2.5.2.  Avoiding Mistaken Teardown

   In order to handle the spurious route change problem described in
   Section 3.2.12.2, the RSN must be used in a particular way when
   maintaining the reservation after a route change is believed to have
   occurred.

   We assume that the current RSN (RSN[current]) is initially RSN0.



Manner, et al.                Experimental                     [Page 63]
^L
RFC 5974                        QoS NSLP                    October 2010


   When a route change is believed to have occurred, the QNE SHOULD send
   a RESERVE message, including the full QSPEC.  This must contain an
   RSN which is RSN[current] = RSN0 + 2.  It SHOULD include an RII to
   request a response from the QNR.  An SII-Handle MUST NOT be specified
   when passing this message over the API to GIST, so that the message
   is correctly routed to the new peer QNE.

   When the QNE receives the RESPONSE message that relates to the
   RESERVE message sent down the new path, it SHOULD send a RESERVE
   message with the TEAR flag sent down the old path.  To do so, it MUST
   request GIST to use its explicit routing mechanism, and the QoS NSLP
   MUST supply an SII-Handle relating to the old peer QNE.  When sending
   this RESERVE message, it MUST contain an RSN that is RSN[current] -
   1.  (RSN[current] remains unchanged.)

   If the RESPONSE received after sending the RESERVE down the new path
   contains the code "Refresh successful" in the INFO-SPEC, then the QNE
   MAY elect not to send the tearing RESERVE, since this indicates that
   the path is unchanged.

5.2.5.3.  Upstream Route Change Notification

   GIST may notify the QoS NSLP that a possible upstream route change
   has occurred over the GIST API.  On receiving such a notification,
   the QoS NSLP SHOULD send a NOTIFY message with Informational code
   0x02 for signaling sessions associated with the identified MRI.  If
   this is sent, it MUST be sent to the old peer using the GIST explicit
   routing mechanism through the use of the SII-Handle.

   On receiving such a NOTIFY message, the QoS NSLP SHOULD use the
   InvalidateRoutingState API call to inform GIST that routing state may
   be out of date.  The QoS NSLP SHOULD send a NOTIFY message upstream.
   The NOTIFY message should be propagated back to the QNI or QNR.

5.2.5.4.  Route Change Oscillation

   In some circumstances, a route change may occur, but the path then
   falls back to the original route.

   After a route change the routers on the old path will continue to
   refresh the reservation until soft state times out or an explicit
   TEAR is received.

   After detecting an upstream route change, a QNE SHOULD consider the
   new upstream peer as current and not fall back to the old upstream
   peer unless:





Manner, et al.                Experimental                     [Page 64]
^L
RFC 5974                        QoS NSLP                    October 2010


   o  it stops receiving refreshes from the old upstream peer for at
      least the soft-state timeout period and then starts receiving
      messages from the old upstream peer again, or

   o  it stops receiving refreshes from the new upstream peer for at
      least the soft-state timeout period.

   GIST routing state keeps track of the latest upstream peer it has
   seen, and so may spuriously indicate route changes occur when the old
   upstream peer refreshes its routing state until the state at that
   node is explicitly torn down or times out.

5.3.  Object Processing

   This section presents processing rules for individual QoS NSLP
   objects.

5.3.1.  Reservation Sequence Number (RSN)

   A QNE's own RSN is a sequence number which applies to a particular
   signaling session (i.e., with a particular SESSION-ID).  It MUST be
   incremented for each new RESERVE message where the reservation for
   the session changes.  The RSN is manipulated using the serial number
   arithmetic rules from [RFC1982], which also defines wrapping rules
   and the meaning of 'equals', 'less than', and 'greater than' for
   comparing sequence numbers in a circular sequence space.

   The RSN starts at zero.  It is stored as part of the per-session
   state, and it carries on incrementing (i.e., it is not reset to zero)
   when a downstream peer change occurs.  (Note that Section 5.2.5.2
   provides some particular rules for use when a downstream peer
   changes.)

   The RSN object also contains an Epoch Identifier, which provides a
   method for determining when a peer has restarted (e.g., due to node
   reboot or software restart).  The exact method for providing this
   value is implementation defined.  Options include storing a serial
   number that is incremented on each restart, picking a random value on
   each restart, or using the restart time.

   On receiving a RESERVE message a QNE examines the Epoch Identifier to
   determine if the peer sending the message has restarted.  If the
   Epoch Identifier is different to that stored for the reservation then
   the RESERVE message MUST be treated as an updated reservation (even
   if the RSN is less than the current stored value), and the stored RSN
   and Epoch Identifier MUST be updated to the new values.





Manner, et al.                Experimental                     [Page 65]
^L
RFC 5974                        QoS NSLP                    October 2010


   When receiving a RESERVE message, a QNE uses the RSN given in the
   message to determine whether the state being requested is different
   to that already stored.  If the RSN is equal to that stored for the
   current reservation, the current state MUST be refreshed.  If the RSN
   is greater than the current stored value, the current reservation
   MUST be modified appropriately as specified in the QSPEC (provided
   that admission control and policy control succeed), and the stored
   RSN value updated to that for the new reservation.  If the RSN is
   greater than the current stored value and the RESERVE was a reduced
   refresh, the QNE SHOULD send upstream a transient error message "Full
   QSPEC required".  If the RSN is less than the current value, then it
   indicates an out-of-order message, and the RESERVE message MUST be
   discarded.

   If the QNE does not store per-session state (and so does not keep any
   previous RSN values), then it MAY ignore the value of the RSN.  It
   MUST also copy the same RSN into the RESERVE message (if any) that it
   sends as a consequence of receiving this one.

5.3.2.  Request Identification Information (RII)

   A QNE sending QUERY or RESERVE messages may require a response to be
   sent.  It does so by including a Request Identification Information
   (RII) object.  When creating an RII object, the QNE MUST select the
   value for the RII such that it is probabilistically unique within the
   given session.  A RII object is typically set by the QNI.

   A number of choices are available when implementing this.
   Possibilities might include using a random value, or a node
   identifier together with a counter.  If the value collides with one
   selected by another QNE for a different QUERY, then RESPONSE messages
   may be incorrectly terminated, and may not be passed back to the node
   that requested them.

   The node that created the RII object MUST remember the value used in
   the RII in order to match back any RESPONSE it will receive.  The
   node SHOULD use a timer to identify situations where it has taken too
   long to receive the expected RESPONSE.  If the timer expires without
   receiving a RESPONSE, the node MAY perform a retransmission as
   discussed in Section 5.2.4.  In this case, the QNE MUST NOT generate
   any RESPONSE or NOTIFY message to notify this error.

   If an intermediate QNE wants to receive a response for an outgoing
   message, but the message already included an RII when it arrived, the
   QNE MUST NOT add a new RII object nor replace the old RII object, but
   MUST simply remember this RII in order to match a later RESPONSE
   message.  When it receives the RESPONSE, it forwards the RESPONSE
   upstream towards the RII originating node.  Note that only the node



Manner, et al.                Experimental                     [Page 66]
^L
RFC 5974                        QoS NSLP                    October 2010


   that originally created the RII can set up a retransmission timer.
   Thus, if an intermediate QNE decides to use the RII already contained
   in the message, it MUST NOT set up a retransmission timer, but rely
   on the retransmission timer set up by the QNE that inserted the RII.

   When receiving a message containing an RII object the node MUST send
   a RESPONSE if

      o The SCOPING flag is set ('next hop' scope),

      o The PROXY scope flag is set and the QNE is the P-QNE, or

      o This QNE is the last one on the path for the given session.

   and the QNE keeps per-session state for the given session.

   In the rare event that the QNE wants to request a response for a
   message that already included an RII, and this RII value conflicts
   with an existing RII value on the QNE, the node should interrupt the
   processing the message, send an error message upstream to indicate an
   RII collision, and request a retry with a new RII value.

5.3.3.  BOUND-SESSION-ID

   As shown in the examples in Section 4, the QoS NSLP can relate
   multiple sessions together.  It does this by including the SESSION-ID
   from one session in a BOUND-SESSION-ID object in messages in another
   session.

   When receiving a message with a BOUND-SESSION-ID object, a QNE MUST
   copy the BOUND-SESSION-ID object into all messages it sends for the
   same session.  A QNE that stores per-session state MUST store the
   value of the BOUND-SESSION-ID.

   The BOUND-SESSION-ID is only indicative in nature.  However, a QNE
   implementation may use BOUND-SESSION-ID information to optimize
   resource allocation, e.g., for bidirectional reservations.  When
   receiving a teardown message (e.g., a RESERVE message with teardown
   semantics) for an aggregate reservation, the QNE may use this
   information to initiate a teardown for end-to-end sessions bound to
   the aggregate.  A QoS NSLP implementation MUST be ready to process
   more than one BOUND-SESSION-ID object within a single message.

5.3.4.  REFRESH-PERIOD

   Refresh timer management values are carried by the REFRESH-PERIOD
   object, which has local significance only.  At the expiration of a
   "refresh timeout" period, each QNE independently examines its state



Manner, et al.                Experimental                     [Page 67]
^L
RFC 5974                        QoS NSLP                    October 2010


   and sends a refreshing RESERVE message to the next QNE peer where it
   is absorbed.  This peer-to-peer refreshing (as opposed to the QNI
   initiating a refresh that travels all the way to the QNR) allows QNEs
   to choose refresh intervals as appropriate for their environment.
   For example, it is conceivable that refreshing intervals in the
   backbone, where reservations are relatively stable, are much larger
   than in an access network.  The "refresh timeout" is calculated
   within the QNE and is not part of the protocol; however, it must be
   chosen to be compatible with the reservation lifetime as expressed by
   the REFRESH-PERIOD and with an assessment of the reliability of
   message delivery.

   The details of timer management and timer changes (slew handling and
   so on) are identical to the ones specified in Section 3.7 of RFC 2205
   [RFC2205].

   There are two time parameters relevant to each QoS NSLP state in a
   node: the refresh period R between generation of successive refreshes
   for the state by the neighbor node, and the local state's lifetime L.
   Each RESERVE message may contain a REFRESH-PERIOD object specifying
   the R value that was used to generate this (refresh) message.  This R
   value is then used to determine the value for L when the state is
   received and stored.  The values for R and L may vary from peer to
   peer.

5.3.5.  INFO-SPEC

   The INFO-SPEC object is carried by the RESPONSE and NOTIFY messages,
   and it is used to report a successful, an unsuccessful, or an error
   situation.  In case of an error situation, the error messages SHOULD
   be generated even if no RII object is included in the RESERVE or in
   the QUERY messages.  Note that when the TEAR flag is set in the
   RESERVE message an error situation SHOULD NOT trigger the generation
   of a RESPONSE message.

   Six classes of INFO-SPEC objects are identified and specified in
   Section 5.1.3.6.  The message processing rules for each class are
   defined below.

   A RESPONSE message MUST carry INFO-SPEC objects towards the QNI.  The
   RESPONSE message MUST be forwarded unconditionally up to the QNI.
   The actions that SHOULD be undertaken by the QNI that receives the
   INFO-SPEC object are specified by the local policy of the QoS model
   supported by this QNE.  The default action is that the QNI that
   receives the INFO-SPEC object SHOULD NOT trigger any other QoS NSLP
   procedure.





Manner, et al.                Experimental                     [Page 68]
^L
RFC 5974                        QoS NSLP                    October 2010


   The Informational INFO-SPEC class MUST be generated by a stateful QoS
   NSLP QNE when an Informational error class is caught.  The
   Informational INFO-SPEC object MUST be carried by a RESPONSE or a
   NOTIFY message.

   In case of a unidirectional reservation, the Success INFO-SPEC class
   MUST be generated by a stateful QoS NSLP QNR when a RESERVE message
   is received and the reservation state installation or refresh
   succeeded.  In case of a bidirectional reservation, the INFO-SPEC
   object SHOULD be generated by a stateful QoS NSLP QNE when a RESERVE
   message is received and the reservation state installation or refresh
   succeeded.  The Success INFO-SPEC object MUST be carried by a
   RESPONSE or a NOTIFY message.

   In case of a unidirectional reservation, the Protocol Error INFO-SPEC
   class MUST be generated by a stateful QoS NSLP QNE when a RESERVE or
   QUERY message is received by the QNE and a protocol error is caught.
   In case of a bidirectional reservation, the Protocol Error INFO-SPEC
   class SHOULD be generated by a stateful QoS NSLP QNE when a RESERVE
   or QUERY message is received by the QNE and a protocol error is
   caught.  A RESPONSE message MUST carry this object, which MUST be
   forwarded unconditionally towards the upstream QNE that generated the
   RESERVE or QUERY message that triggered the generation of this INFO-
   SPEC object.  The default action for a stateless QoS NSLP QNE that
   detects such an error is that none of the QoS NSLP objects SHOULD be
   processed, and the RESERVE or QUERY message SHOULD be forwarded
   downstream.

   In case of a unidirectional reservation, the Transient Failure INFO-
   SPEC class MUST be generated by a stateful QoS NSLP QNE when a
   RESERVE or QUERY message is received by the QNE and one Transient
   failure error code is caught, or when an event happens that causes a
   transient error.  In case of a bidirectional reservation, the
   Transient Failure INFO-SPEC class SHOULD be generated by a stateful
   QoS NSLP QNE when a RESERVE or QUERY message is received by the QNE
   and one Transient failure error code is caught.

   A RESPONSE message MUST carry this object, which MUST be forwarded
   unconditionally towards the upstream QNE that generated the RESERVE
   or QUERY message that triggered the generation of this INFO-SPEC
   object.  The transient RMF-related error MAY also be carried by a
   NOTIFY message.  The default action is that the QNE that receives
   this INFO-SPEC object SHOULD re-trigger the retransmission of the
   RESERVE or QUERY message that triggered the generation of the INFO-
   SPEC object.  The default action for a stateless QoS NSLP QNE that
   detects such an error is that none of the QoS NSLP objects SHOULD be
   processed and the RESERVE or QUERY message SHOULD be forwarded
   downstream.



Manner, et al.                Experimental                     [Page 69]
^L
RFC 5974                        QoS NSLP                    October 2010


   In case of a unidirectional reservation, the Permanent Failure INFO-
   SPEC class MUST be generated by a stateful QoS NSLP QNE when a
   RESERVE or QUERY message is received by a QNE and an internal or
   system error occurred, or authorization failed.  In case of a
   bidirectional reservation, the Permanent Failure INFO-SPEC class
   SHOULD be generated by a stateful QoS NSLP QNE when a RESERVE or
   QUERY message is received by a QNE and an internal or system error
   occurred, or authorization failed.  A RESPONSE message MUST carry
   this object, which MUST be forwarded unconditionally towards the
   upstream QNE that generated the RESERVE or QUERY message that
   triggered this protocol error.  The internal, system, or permanent
   RMF-related errors MAY also be carried by a NOTIFY message.  The
   default action for a stateless QoS NSLP QNE that detects such an
   error is that none of the QoS NSLP objects SHOULD be processed and
   the RESERVE or QUERY message SHOULD be forwarded downstream.

   The QoS-specific error class may be used when errors outside the QoS
   NSLP itself occur that are related to the particular QoS model being
   used.  The processing rules of these errors are not specified in this
   document.

5.3.6.  SESSION-ID-LIST

   A SESSION-ID-LIST is carried in RESERVE messages.  It is used in two
   cases, to refresh or to tear down the indicated sessions.  A SESSION-
   ID-LIST carries information about sessions that should be refreshed
   or torn down, in addition to the main (primary) session indicated in
   the RESERVE.

   If the primary SESSION-ID is not understood, the SESSION-ID-LIST
   object MUST NOT be processed.

   When a stateful QNE goes through the SESSION-ID-LIST, if it finds one
   or more unknown SESSION-ID values, it SHOULD construct an
   informational RESPONSE message back to the upstream stateful QNE with
   the error code for unknown SESSION-ID in SESSION-ID-LIST, and include
   all unknown SESSION-IDs in a SESSION-ID-LIST.

   If the RESERVE is a tear, for each session in the SESSION-ID-LIST,
   the stateful QNE MUST inform the RMF that the reservation is no
   longer required.  RSN values MUST also be interpreted in order to
   distinguish whether the tear down is valid, or whether it is
   referring to an old state, and, thus, should be silently discarded.

   If the RESERVE is a refresh, the stateful QNE MUST also process the
   RSN-LIST object as detailed in the next section.





Manner, et al.                Experimental                     [Page 70]
^L
RFC 5974                        QoS NSLP                    October 2010


   If the RESERVE is a tear, for each session in the SESSION-ID-LIST,
   the QNE MUST inform the RMF that the reservation is no longer
   required.  RSN values MUST be interpreted.

   Note that a stateless QNE cannot support summary or single reduced
   refreshes, and always needs full single refreshes.

5.3.7.  RSN-LIST

   An RSN-LIST MUST be carried in RESERVE messages when a QNE wants to
   perform a refresh or teardown of several sessions with a single NSLP
   message.  The RSN-LIST object MUST be populated with RSN values of
   the same sessions and in the same order as indicated in the SESSION-
   ID-LIST.  Thus, entries in both objects at position X refer to the
   same session.

   If the primary session and RSN reference in the RESERVE were not
   understood, the stateful QNE MUST NOT process the RSN-LIST.  Instead,
   an error RESPONSE SHOULD be sent back to the upstream stateful QNE.

   On receiving an RSN-LIST object, the stateful QNE should check
   whether the number of items in the SESSION-ID-LIST and RSN-LIST
   objects match.  If there is a mismatch, the stateful QNE SHOULD send
   back a protocol error indicating a bad value in the object.

   While matching the RSN-LIST values to the SESSION-ID-LIST values, if
   one or more RSN values in the RSN-LIST are not in synch with the
   local values, the stateful QNE SHOULD construct an informational
   RESPONSE message with an error code for RSN mismatch in the RSN-LIST.
   The stateful QNE MUST include the erroneous SESSION-ID and RSN values
   in SESSION-ID-LIST and RSN-LIST objects in the RESPONSE.

   If no errors were found in processing the RSN-LIST, the stateful QNE
   refreshes the reservation states of all sessions -- the primary
   single session indicated in the refresh, and all sessions in the
   SESSION-ID-LIST.

   For each successfully processed session in the RESERVE, the stateful
   QNE performs a refresh of the reservation state.  Thus, even if some
   sessions were not in synch, the remaining sessions in the SESSION-ID-
   LIST and RSN-LIST are refreshed.

5.3.8.  QSPEC

   The contents of the QSPEC depend on the QoS model being used.  A
   template for QSPEC objects can be found in [RFC5975].





Manner, et al.                Experimental                     [Page 71]
^L
RFC 5974                        QoS NSLP                    October 2010


   Upon reception, the complete QSPEC is passed to the Resource
   Management Function (RMF), along with other information from the
   message necessary for the RMF processing.  A QNE may also receive an
   INFO-SPEC that includes a partial or full QSPEC.  This will also be
   passed to the RMF.

5.4.  Message Processing Rules

   This section provides rules for message processing.  Not all possible
   error situations are considered.  A general rule for dealing with
   erroneous messages is that a node should evaluate the situation
   before deciding how to react.  There are two ways to react to
   erroneous messages:

   a) Silently drop the message, or

   b) Drop the message, and reply with an error code to the sender.

   The default behavior, in order to protect the QNE from a possible
   denial-of-service attack, is to silently drop the message.  However,
   if the QNE is able to authenticate the sender, e.g., through GIST,
   the QNE may send a proper error message back to the neighbor QNE in
   order to let it know that there is an inconsistency in the states of
   adjacent QNEs.

5.4.1.  RESERVE Messages

   The RESERVE message is used to manipulate QoS reservation state in
   QNEs.  A RESERVE message may create, refresh, modify, or remove such
   state.  A QNE sending a RESERVE MAY require a response to be sent by
   including a Request Identification Information (RII) object; see
   Section 5.3.2.

   RESERVE messages MUST only be sent towards the QNR.  A QNE that
   receives a RESERVE message checks the message format.  In case of
   malformed messages, the QNE MAY send a RESPONSE message with the
   appropriate INFO-SPEC.

   Before performing any state-changing actions, a QNE MUST determine
   whether the request is authorized.  The way to do this check depends
   on the authorization model being used.

   When the RESERVE is authorized, a QNE checks the COMMON-HEADER flags.
   If the TEAR flag is set, the message is a tearing RESERVE that
   indicates complete QoS NSLP state removal (as opposed to a
   reservation of zero resources).  On receiving such a RESERVE message,





Manner, et al.                Experimental                     [Page 72]
^L
RFC 5974                        QoS NSLP                    October 2010


   the QNE MUST inform the RMF that the reservation is no longer
   required.  The RSN value MUST be processed.  After this, there are
   two modes of operation:

   1.  If the tearing RESERVE did not include an RII, i.e., the QNI did
       not want a confirmation, the QNE SHOULD remove the QoS NSLP
       state.  It MAY signal to GIST (over the API) that reverse-path
       state for this reservation is no longer required.  Any errors in
       processing the tearing RESERVE SHOULD NOT be sent back towards
       the QNI since the upstream QNEs will already have removed their
       session states; thus, they are unable to do anything to the
       error.

   2.  If an RII was included, the stateful QNE SHOULD still keep the
       NSLP operational state until a RESPONSE for the tear going
       towards the QNI is received.  This operational state SHOULD be
       kept for one refresh interval, after which the NSLP operational
       state for the session is removed.  Depending on the QoS model,
       the tear message MAY include a QSPEC to further specify state
       removal.  If the QoS model requires a QSPEC, and none is
       provided, the QNE SHOULD reply with an error message and SHOULD
       NOT remove the reservation.

   If the tearing RESERVE includes a QSPEC, but none is required by the
   QoS model, the QNE MAY silently discard the QSPEC and proceed as if
   it did not exist in the message.  In general, a QoS NSLP
   implementation should carefully consider when an error message should
   be sent, and when not.  If the tearing RESERVE did not include an
   RII, then the upstream QNE has removed the RMF and NSLP states, and
   it will not be able to do anything to the error.  If an RII was
   included, the upstream QNE may still have the NSLP operational state,
   but no RMF state.

   If a QNE receives a tearing RESERVE for a session for which it still
   has the operational state, but the RMF state was removed, the QNE
   SHOULD accept the message and forward it downstream as if all is
   well.

   If the tearing RESERVE includes a SESSION-ID-LIST, the stateful QNE
   MUST process the object as described earlier in this document, and
   for each identified session, indicate to the RMF that the reservation
   is no longer required.

   If a QNE receives a refreshing RESERVE for a session for which it
   still has the operational state, but the RMF state was removed, the
   QNE MUST silently drop the message and not forward it downstream.





Manner, et al.                Experimental                     [Page 73]
^L
RFC 5974                        QoS NSLP                    October 2010


   As discussed in Section 5.2.5.2, to avoid incorrect removal of state
   after a rerouting event, a node receiving a RESERVE message that has
   the TEAR flag set and that does not come from the current peer QNE
   (identified by its SII) MUST be ignored and MUST NOT be forwarded.

   If the QNE has reservations that are bound and dependent to this
   session (they contain the SESSION-ID of this session in their BOUND-
   SESSION-ID object and use Binding Code 0x04), it MUST send a NOTIFY
   message for each of the reservations with an appropriate INFO-SPEC.
   If the QNE has reservations that are bound, but that they are not
   dependent to this session (the Binding Code in the BOUND-SESSION-ID
   object has one of the values: 0x01, 0x02, or 0x03), it MAY send a
   NOTIFY message for each of the reservations with an appropriate INFO-
   SPEC.  The QNE MAY elect to send RESERVE messages with the TEAR flag
   set for these reservations.

   The default behavior of a QNE that receives a RESERVE with a
   SESSION-ID for which it already has state installed but with a
   different flow ID is to replace the existing reservation (and to tear
   down the reservation on the old branch if the RESERVE is received
   with a different SII).

   In some cases, this may not be the desired behavior, so the QNI or a
   QNE MAY set the REPLACE flag in the common header to zero to indicate
   that the new session does not replace the existing one.

   A QNE that receives a RESERVE with the REPLACE flag set to zero but
   with the same SII will indicate REPLACE=0 to the RMF (where it will
   be used for the resource handling).  Furthermore, if the QNE
   maintains a QoS NSLP state, then it will also add the new flow ID in
   the QoS NSLP state.  If the SII is different, this means that the QNE
   is a merge point.  In that case, in addition to the operations
   specified above, the value REPLACE=0 is also indicating that a
   tearing RESERVE SHOULD NOT be sent on the old branch.

   When a QNE receives a RESERVE message with an unknown SESSION-ID and
   this message contains no QSPEC because it was meant as a refresh,
   then the node MUST send a RESPONSE message with an INFO-SPEC that
   indicates a missing QSPEC to the upstream peer ("Full QSPEC
   required").  The upstream peer SHOULD send a complete RESERVE (i.e.,
   one containing a QSPEC) on the new path (new SII).

   At a QNE, resource handling is performed by the RMF.  For sessions
   with the REPLACE flag set to zero, we assume that the QoS model
   includes directions to deal with resource sharing.  This may include
   adding the reservations or taking the maximum of the two or more
   complex mathematical operations.




Manner, et al.                Experimental                     [Page 74]
^L
RFC 5974                        QoS NSLP                    October 2010


   This resource-handling mechanism in the QoS model is also applicable
   to sessions that have different SESSION-IDs but that are related
   through the BOUND-SESSION-ID object.  Session replacement is not an
   issue here, but the QoS model may specify whether or not to let the
   sessions that are bound together share resources on common links.

   Finally, it is possible that a RESERVE is received with no QSPEC at
   all.  This is the case of a reduced refresh.  In this case, rather
   than sending a refreshing RESERVE with the full QSPEC, only the
   SESSION-ID and the RSN are sent to refresh the reservation.  Note
   that this mechanism just reduces the message size (and probably eases
   processing).  One RESERVE per session is still needed.  Such a
   reduced refresh may further include a SESSION-ID-LIST and RSN-LIST,
   which indicate further sessions to be refreshed along the primary
   session.  The processing of these objects was described earlier in
   this document.

   If the REPLACE flag is set, the QNE SHOULD update the reservation
   state according to the QSPEC contained in the message (if the QSPEC
   is missing, the QNE SHOULD indicate this error by replying with a
   RESPONSE containing the corresponding INFO-SPEC "Full QSPEC
   required").  It MUST update the lifetime of the reservation.  If the
   REPLACE flag is not set, a QNE SHOULD NOT remove the old reservation
   state if the SII that is passed by GIST over the API is different
   than the SII that was stored for this reservation.  The QNE MAY elect
   to keep sending refreshing RESERVE messages.

   If a stateful QoS NSLP QNE receives a RESERVE message with the BREAK
   flag set, then the BREAK flag of newly generated messages (e.g.,
   RESERVE or RESPONSE) MUST be set.  When a stateful QoS NSLP QNE
   receives a RESERVE message with the BREAK flag not set, then the IP-
   TTL and Original-TTL values in the GIST RecvMessage primitive MUST be
   monitored.  If they differ, it is RECOMMENDED to set the BREAK flag
   in newly generated messages (e.g., RESERVE or RESPONSE).  In
   situations where a QNE or a domain is able to provide QoS using other
   means (see Section 3.3.5), the BREAK flag SHOULD NOT be set.

   If the RESERVE message included an RII, and any of the following are
   true, the QNE MUST send a RESPONSE message:

   o  If the QNE is configured, for a particular session, to be a QNR,

   o  the SCOPING flag is set,

   o  the Proxy scope flag is set and the QNE is a P-QNE, or

   o  the QNE is the last QNE on the path to the destination.




Manner, et al.                Experimental                     [Page 75]
^L
RFC 5974                        QoS NSLP                    October 2010


   When a QNE receives a RESERVE message, its processing may involve
   sending out another RESERVE message.

   If a QNE has received a RESPONSE mandating the use of full refreshes
   from its downstream peer for a session, the QNE MUST continue to use
   full refresh messages.

   If the session of this message is bound to another session, then the
   RESERVE message MUST include the SESSION-ID of that other session in
   a BOUND-SESSION-ID object.  In the situation of aggregated tunnels,
   the aggregated session MAY not include the SESSION-ID of its bound
   sessions in BOUND-SESSION-ID(s).

   In case of receiver-initiated reservations, the RESERVE message must
   follow the same path that has been followed by the QUERY message.
   Therefore, GIST is informed, over the QoS NSLP/GIST API, to pass the
   message upstream, i.e., by setting GIST "D" flag; see GIST [RFC5971].

   The QNE MUST create a new RESERVE and send it to its next peer, when:

   -  A new resource setup was done,

   -  A new resource setup was not done, but the QOSM still defines that
      a RESERVE must be propagated,

   -  The RESERVE is a refresh and includes a new MRI, or

   -  If the RESERVE-INIT flag is included in an arrived QUERY.

   If the QNE sent out a refresh RESERVE with the ACK-REQ flag set, and
   did not receive a RESPONSE from its immediate stateful peer within
   the retransmission period of QOSNSLP_RETRY_MAX, the QNE SHOULD send a
   NOTIFY to its immediate upstream stateful peer and indicate "Path
   truncated - Next peer dead" in the INFO-SPEC.  The ACK-REQ flag
   SHOULD NOT be added to a RESERVE that already include an RII object,
   since a confirmation from the QNR has already been requested.

   Finally, if a received RESERVE requested acknowledgement through the
   ACK-REQ flag in the COMMON HEADER flags and the processing of the
   message was successful, the stateful QNE SHOULD send back a RESPONSE
   with an INFO-SPEC carrying the acknowledgement success code.  The QNE
   MAY include the ACK-REQ flag in the next refresh message it will send
   for the session.  The use of the ACK-REQ-flag for diagnostic purposes
   is a policy issue.  An acknowledged refresh message can be used to
   probe the end-to-end path in order to check that it is still intact.






Manner, et al.                Experimental                     [Page 76]
^L
RFC 5974                        QoS NSLP                    October 2010


5.4.2.  QUERY Messages

   A QUERY message is used to request information about the data path
   without making a reservation.  This functionality can be used to
   'probe' the network for path characteristics or for support of
   certain QoS models, or to initiate a receiver-initiated reservation.

   A QNE sending a QUERY indicates a request for a response by including
   a Request Identification Information (RII) object; see Section 5.3.2.
   A request to initiate a receiver-initiated reservation is done
   through the RESERVE-INIT flag; see Section 5.1.2.2.

   When a QNE receives a QUERY message the QSPEC is passed to the RMF
   for processing.  The RMF may return a modified QSPEC that is used in
   any QUERY or RESPONSE message sent out as a result of the QUERY
   processing.

   When processing a QUERY message, a QNE checks whether the RESERVE-
   INIT flag is set.  If the flag is set, the QUERY is used to install
   reverse-path state.  In this case, if the QNE is not the QNI, it
   creates a new QUERY message to send downstream.  The QSPEC MUST be
   passed to the RMF where it may be modified by the QoS-model-specific
   QUERY processing.  If the QNE is the QNI, the QNE creates a RESERVE
   message, which contains a QSPEC received from the RMF and which may
   be based on the received QSPEC.  If this node was not expecting to
   perform a receiver-initiated reservation, then an error MUST be sent
   back along the path.

   The QNE MUST generate a RESPONSE message and pass it back along the
   reverse of the path used by the QUERY if:

   o  an RII object is present,

   o  the QNE is the QNR,

   o  the SCOPING flag is set, or

   o  the PROXY scope flag is set, and the QNE is a P-QNE.

   If an RII object is present, and if the QNE is the QNR, the SCOPING
   flag is set or the PROXY scope flag is set and the QNE is a P-QNE,
   the QNE MUST generate a RESPONSE message and pass it back along the
   reverse of the path used by the QUERY.

   In other cases, the QNE MUST generate a QUERY message that is then
   forwarded further along the path using the same MRI, Session ID, and
   Direction as provided when the QUERY was received over the GIST API.




Manner, et al.                Experimental                     [Page 77]
^L
RFC 5974                        QoS NSLP                    October 2010


   The QSPEC to be used is that provided by the RMF as described
   previously.  When generating a QUERY to send out to pass the query
   further along the path, the QNE MUST copy the RII object (if present)
   unchanged into the new QUERY message.  A QNE that is also interested
   in the response to the query keeps track of the RII to identify the
   RESPONSE when it passes through it.

   Note that QUERY messages with the RESERVE-INIT flag set MUST be
   answered by the QNR.  This feature may be used, e.g., following
   handovers, to set up new path state in GIST and to request that the
   other party to send a RESERVE back on this new GIST path.

   If a stateful QoS NSLP QNE receives a QUERY message with the RESERVE-
   INIT flag and BREAK flag set, then the BREAK flag of newly generated
   messages (e.g., QUERY, RESERVE, or RESPONSE) MUST be set.  When a
   stateful QoS NSLP QNE receives a QUERY message with the RESERVE-INIT
   flag set and BREAK flag not set, then the IP-TTL and Original-TTL
   values in GIST RecvMessage primitive MUST be monitored.  If they
   differ, it is RECOMMENDED to set the BREAK flag in newly generated
   messages (e.g., QUERY, RESERVE, or RESPONSE).  In situations where a
   QNE or a domain is able to provide QoS using other means (see
   Section 3.3.5), the BREAK flag SHOULD NOT be set.

   Finally, if a received QUERY requested acknowledgement through the
   ACK-REQ flag in the COMMON HEADER flags and the processing of the
   message was successful, the stateful QNE SHOULD send back a RESPONSE
   with an INFO-SPEC carrying the acknowledgement success code.

5.4.3.  RESPONSE Messages

   The RESPONSE message is used to provide information about the result
   of a previous QoS NSLP message, e.g., confirmation of a reservation
   or information resulting from a QUERY.  The RESPONSE message does not
   cause any state to be installed, but may cause state(s) to be
   modified, e.g., if the RESPONSE contains information about an error.

   A RESPONSE message MUST be sent when the QNR processes a RESERVE or
   QUERY message containing an RII object or if the QNE receives a
   scoped RESERVE or a scoped QUERY.  In this case, the RESPONSE message
   MUST contain the RII object copied from the RESERVE or the QUERY.
   Also, if there is an error in processing a received RESERVE, a
   RESPONSE is sent indicating the nature of the error.  In this case,
   the RII and RSN, if available, MUST be included in the RESPONSE.

   On receipt of a RESPONSE message containing an RII object, the
   stateful QoS NSLP QNE MUST attempt to match it to the outstanding
   response requests for that signaling session.  If the match succeeds,
   then the RESPONSE MUST NOT be forwarded further along the path if it



Manner, et al.                Experimental                     [Page 78]
^L
RFC 5974                        QoS NSLP                    October 2010


   contains an Informational or Success INFO-SPEC class.  If the QNE did
   not insert this RII itself, it must forward the RESPONSE to the next
   peer.  Thus, for RESPONSEs indicating success, forwarding should only
   stop if the QNE inserted the RII by itself.  If the RESPONSE carries
   an INFO-SPEC indicating an error, forwarding SHOULD continue upstream
   towards the QNI by using RSNs as described in the next paragraph.

   On receipt of a RESPONSE message containing an RSN object, a stateful
   QoS NSLP QNE MUST compare the RSN to that of the appropriate
   signaling session.  If the match succeeds, then the INFO-SPEC MUST be
   processed.  If the INFO-SPEC object is used to send error
   notifications then the node MUST use the stored upstream peer RSN
   value, associated with the same session, and forward the RESPONSE
   message further along the path towards the QNI.

   If the INFO-SPEC is not used to notify error situations (see above),
   then if the RESPONSE message carries an RSN, the message MUST NOT be
   forwarded further along the path.

   If there is no match for RSN, the message SHOULD be silently dropped.

   On receipt of a RESPONSE message containing neither an RII nor an RSN
   object, the RESPONSE MUST NOT be forwarded further along the path.

   In the typical case, RESPONSE messages do not change the states
   installed in intermediate QNEs.  However, depending on the QoS model,
   there may be situations where states are affected, e.g.,

   -  if the RESPONSE includes an INFO-SPEC describing an error
      situation resulting in reservations to be removed, or

   -  the QoS model allows a QSPEC to define [min,max] limits on the
      resources requested, and downstream QNEs gave less resources than
      their upstream nodes, which means that the upstream nodes may
      release a part of the resource reservation.

   If a stateful QoS NSLP QNE receives a RESPONSE message with the BREAK
   flag set, then the BREAK flag of newly generated message (e.g.,
   RESPONSE) MUST be set.

5.4.4.  NOTIFY Messages

   NOTIFY messages are used to convey information to a QNE
   asynchronously.  NOTIFY messages do not cause any state to be
   installed.  The decision to remove state depends on the QoS model.
   The exact operation depends on the QoS model.  A NOTIFY message does





Manner, et al.                Experimental                     [Page 79]
^L
RFC 5974                        QoS NSLP                    October 2010


   not directly cause other messages to be sent.  NOTIFY messages are
   sent asynchronously, rather than in response to other messages.  They
   may be sent in either direction (upstream or downstream).

   A special case of synchronous NOTIFY is when the upstream QNE is
   asked to use reduced refresh by setting the appropriate flag in the
   RESERVE.  The QNE receiving such a RESERVE MUST reply with a NOTIFY
   and a proper INFO-SPEC code indicating whether the QNE agrees to use
   reduced refresh between the upstream QNE.

   The Transient error code 0x07 "Reservation preempted" is sent to the
   QNI whose resources were preempted.  The NOTIFY message carries
   information to the QNI that one QNE no longer has a reservation for
   the session.  It is up to the QNI to decide what to do based on the
   QoS model being used.  The QNI would normally tear down the preempted
   reservation by sending a RESERVE with the TEAR flag set using the SII
   of the preempted reservation.  However, the QNI can follow other
   procedures as specified in its QoS Model.  More discussion on
   preemption can be found in the QSPEC Template [RFC5975] and the
   individual QoS Model specifications.

6.  IANA Considerations

   This section provides guidance to the Internet Assigned Numbers
   Authority (IANA) regarding registration of values related to the QoS
   NSLP, in accordance with BCP 26, RFC 5226 [RFC5226].

   Per QoS NSLP, IANA has created a number of new registries:

      - QoS NSLP Message Types
      - QoS NSLP Binding Codes
      - QoS NSLP Error Classes
        - Informational Error Codes
        - Success Error Codes
        - Protocol Error Codes
        - Transient Failure Codes
        - Permanent Failure Codes
      - QoS NSLP Error Source Identifiers

   IANA has also registered new values in a number of registries:

      - NSLP Object Types
      - NSLP Identifiers (under GIST Parameters)
      - Router Alert Option Values (IPv4 and IPv6)







Manner, et al.                Experimental                     [Page 80]
^L
RFC 5974                        QoS NSLP                    October 2010


6.1.  QoS NSLP Message Type

   The QoS NSLP Message Type is an 8-bit value.  This specification
   defines four QoS NSLP message types, which form the initial contents
   of this registry: RESERVE (0x01), QUERY (0x02), RESPONSE (0x03), and
   NOTIFY (0x04).

   The value 0 is reserved.  Values 240 to 255 are for Experimental/
   Private Use.  The registration procedure is IETF Review.

   When a new message type is defined, any message flags used with it
   must also be defined.

6.2.  NSLP Message Objects

   A new registry has been created for NSLP Message Objects.  This is a
   12-bit field (giving values from 0 to 4095).  This registry is shared
   between a number of NSLPs.

   Registration procedures are as follows:

      0: Reserved

      1-1023: IETF Review

      1024-1999: Specification Required

   Allocation policies are as follows:

      2000-2047: Private/Experimental Use

      2048-4095: Reserved

   When a new object is defined, the extensibility bits (A/B) must also
   be defined.

   This document defines eleven new NSLP message objects.  These are
   described in Section 5.1.3: RII (0x001), RSN (0x002), REFRESH-PERIOD
   (0x003), BOUND-SESSION-ID (0x004), PACKET-CLASSIFIER (0x005), INFO-
   SPEC (0x006), SESSION-ID-LIST (0x007), RSN-LIST (0x008), MSG-ID
   (0x009), BOUND-MSG-ID (0x00A), and QSPEC (0x00B).

   Additional values are to be assigned from the IETF Review section of
   the NSLP Message Objects registry.







Manner, et al.                Experimental                     [Page 81]
^L
RFC 5974                        QoS NSLP                    October 2010


6.3.  QoS NSLP Binding Codes

   A new registry has been created for the 8-bit Binding Codes used in
   the BOUND-SESSION-ID object.  The initial values for this registry
   are listed in Section 5.1.3.4.

   The registration procedure is IETF Review.  Value 0 is reserved.
   Values 128 to 159 are for Experimental/Private Use.  Other values are
   Reserved.

6.4.  QoS NSLP Error Classes and Error Codes

   In addition, Error Classes and Error Codes for the INFO-SPEC object
   are defined.  These are described in Section 5.1.3.6.

   The Error Class is 4 bits in length.  The initial values are:

      0: Reserved

      1: Informational

      2: Success

      3: Protocol Error

      4: Transient Failure

      5: Permanent Failure

      6: QoS Model Error

      7: Signaling session failure (described in [RFC5973])

      8-15: Reserved

   Additional values are to be assigned based on IETF Review.

   The Error Code is 8 bits in length.  Each Error Code is assigned
   within a particular Error Class.  This requires the creation of a
   registry for Error Codes in each Error Class.  The Error Code 0 in
   each class is Reserved.

   Policies for the error code registries are as follows:

      0-63: IETF Review

      64-127: Specification Required




Manner, et al.                Experimental                     [Page 82]
^L
RFC 5974                        QoS NSLP                    October 2010


      128-191: Experimental/Private Use

      192-255: Reserved

   The initial assignments for the Error Code registries are given in
   Section 5.1.3.6.  Experimental and Reserved values are relevant to
   all Error classes.

6.5.  QoS NSLP Error Source Identifiers

   Section 5.1.3.6 defines Error Source Identifiers, the type of which
   is identified by a 4-bit value.

   The value 0 is reserved.

   Values 1-3 are given in Section 5.1.3.6.

   Values 14 and 15 are for Experimental/Private Use.

   The registration procedure is Specification Required.

6.6.  NSLP IDs and Router Alert Option Values

   This specification defines an NSLP for use with GIST.  Furthermore,
   it specifies that a number of NSLPID values are used for the support
   of bypassing intermediary nodes.  Consequently, new identifiers must
   be assigned for them from the GIST NSLP identifier registry.  As
   required by the QoS NSLP, 32 NSLPID values have been assigned,
   corresponding to QoS NSLP Aggregation Levels 0 to 31.

   The GIST specification also requires that NSLPIDs be associated with
   specific Router Alert Option (RAO) values (although multiple NSLPIDs
   may be associated with the same value).  For the purposes of the QoS
   NSLP, each of its NSLPID values should be associated with a different
   RAO value.  A block of 32 new IPv4 RAO values and a block of 32 new
   IPv6 RAO values have been assigned, corresponding to QoS NSLP
   Aggregation Levels 0 to 31.

7.  Security Considerations

   The security requirement for the QoS NSLP is to protect the signaling
   exchange for establishing QoS reservations against identified
   security threats.  For the signaling problem as a whole, these
   threats have been outlined in NSIS threats [RFC4081]; the NSIS
   framework [RFC4080] assigns a subset of the responsibility to GIST,
   and the remaining threats need to be addressed by NSLPs.  The main
   issues to be handled can be summarized as:




Manner, et al.                Experimental                     [Page 83]
^L
RFC 5974                        QoS NSLP                    October 2010


   Authorization:

      The QoS NSLP must assure that the network is protected against
      theft-of-service by offering mechanisms to authorize the QoS
      reservation requester.  A user requesting a QoS reservation might
      want proper resource accounting and protection against spoofing
      and other security vulnerabilities that lead to denial of service
      and financial loss.  In many cases, authorization is based on the
      authenticated identity.  The authorization solution must provide
      guarantees that replay attacks are either not possible or limited
      to a certain extent.  Authorization can also be based on traits
      that enable the user to remain anonymous.  Support for user
      identity confidentiality can be accomplished.

   Message Protection:

      Signaling message content should be protected against
      modification, replay, injection, and eavesdropping while in
      transit.  Authorization information, such as authorization tokens,
      needs protection.  This type of protection at the NSLP layer is
      necessary to protect messages between NSLP nodes.

   Rate Limitation:

      QNEs should perform rate-limiting on the refresh messages that
      they send.  An attacker could send erroneous messages on purpose,
      forcing the QNE to constantly reply with an error message.
      Authentication mechanisms would help in figuring out if error
      situations should be reported to the sender, or silently ignored.
      If the sender is authenticated, the QNE should reply promptly.

   Prevention of Denial-of-Service Attacks:

      GIST and QoS NSLP nodes have finite resources (state storage,
      processing power, bandwidth).  The protocol mechanisms in this
      document try to minimize exhaustion attacks against these
      resources when performing authentication and authorization for QoS
      resources.

   To some extent, the QoS NSLP relies on the security mechanisms
   provided by GIST, which by itself relies on existing authentication
   and key exchange protocols.  Some signaling messages cannot be
   protected by GIST and hence should be used with care by the QoS NSLP.
   An API must ensure that the QoS NSLP implementation is aware of the
   underlying security mechanisms and must be able to indicate which
   degree of security is provided between two GIST peers.  If a level of
   security protection for QoS NSLP messages that is required goes
   beyond the security offered by GIST or underlying security



Manner, et al.                Experimental                     [Page 84]
^L
RFC 5974                        QoS NSLP                    October 2010


   mechanisms, additional security mechanisms described in this document
   must be used.  Due to the different usage environments and scenarios
   where NSIS is used, it is very difficult to make general statements
   without reducing its flexibility.

7.1.  Trust Relationship Model

   This specification is based on a model that requires trust between
   neighboring NSLP nodes to establish a chain-of-trust along the QoS
   signaling path.  The model is simple to deploy, was used in previous
   QoS authorization environments (such as RSVP), and seems to provide
   sufficiently strong security properties.  We refer to this model as
   the New Jersey Turnpike.

   On the New Jersey Turnpike, motorists pick up a ticket at a toll
   booth when entering the highway.  At the highway exit, the ticket is
   presented and payment is made at the toll booth for the distance
   driven.  For QoS signaling in the Internet, this procedure is roughly
   similar.  In most cases, the data sender is charged for transmitted
   data traffic where charging is provided only between neighboring
   entities.






























Manner, et al.                Experimental                     [Page 85]
^L
RFC 5974                        QoS NSLP                    October 2010


      +------------------+  +------------------+  +------------------+
      |          Network |  |          Network |  |          Network |
      |             X    |  |             Y    |  |             Z    |
      |                  |  |                  |  |                  |
      |              ----------->          ----------->              |
      |                  |  |                  |  |                  |
      |                  |  |                  |  |                  |
      +--------^---------+  +------------------+  +-------+----------+
               |                                          .
               |                                          .
               |                                          v
            +--+---+  Data                   Data      +--+---+
            | Node |  ==============================>  | Node |
            |  A   |  Sender                Receiver   |  B   |
            +------+                                   +------+

        Legend:

        ----> Peering relationship that allows neighboring
              networks/entities to charge each other for the
              QoS reservation and data traffic

        ====> Data flow

        .... Communication to the end host

                   Figure 16: New Jersey Turnpike Model

   The model shown in Figure 16 uses peer-to-peer relationships between
   different administrative domains as a basis for accounting and
   charging.  As mentioned above, based on the peering relationship, a
   chain-of-trust is established.  There are several issues that come to
   mind when considering this type of model:

   o  The model allows authorization on a request basis or on a per-
      session basis.  Authorization mechanisms are elaborated in
      Section 7.2.  The duration for which the QoS authorization is
      valid needs to be controlled.  Combining the interval with the
      soft-state interval is possible.  Notifications from the networks
      also seem to be a viable approach.

   o  The price for a QoS reservation needs to be determined somehow and
      communicated to the charged entity and to the network where the
      charged entity is attached.  Protocols providing "Advice of
      Charge" functionality are out of scope.






Manner, et al.                Experimental                     [Page 86]
^L
RFC 5974                        QoS NSLP                    October 2010


   o  This architecture is simple enough to allow a scalable solution
      (ignoring reverse charging, multicast issues, and price
      distribution).

   Charging the data sender as performed in the model simplifies
   security handling by demanding only peer-to-peer security protection.
   Node A would perform authentication and key establishment.  The
   established security association (together with the session key)
   would allow the user to protect QoS signaling messages.  The identity
   used during the authentication and key establishment phase would be
   used by Network X (see Figure 16) to perform the so-called policy-
   based admission control procedure.  In our context, this user
   identifier would be used to establish the necessary infrastructure to
   provide authorization and charging.  Signaling messages later
   exchanged between the different networks are then also subject to
   authentication and authorization.  However, the authenticated entity
   is thereby the neighboring network and not the end host.

   The New Jersey Turnpike model is attractive because of its
   simplicity.  S. Shenker, et al. [shenker] discuss various accounting
   implications and introduced the edge pricing model.  The edge pricing
   model shows similarity to the model described in this section, with
   the exception that mobility and the security implications are not
   addressed.

7.2.  Authorization Model Examples

   Various authorization models can be used in conjunction with the QoS
   NSLP.

7.2.1.  Authorization for the Two-Party Approach

   The two-party approach (Figure 17) is conceptually the simplest
   authorization model.

   +-------------+  QoS request     +--------------+
   |  Entity     |----------------->| Entity       |
   |  requesting |                  | authorizing  |
   |  resource   |granted / rejected| resource     |
   |             |<-----------------| request      |
   +-------------+                  +--------------+
             ^                           ^
             +...........................+
                     compensation

                       Figure 17: Two-Party Approach





Manner, et al.                Experimental                     [Page 87]
^L
RFC 5974                        QoS NSLP                    October 2010


   In this example, the authorization decision only involves the two
   entities, or makes use of previous authorization using an out-of-band
   mechanism to avoid the need for active participation of an external
   entity during the NSIS protocol execution.

   This type of model may be applicable, e.g., between two neighboring
   networks (inter-domain signaling) where a long-term contract (or
   other out-of-band mechanisms) exists to manage charging and provides
   sufficient information to authorize individual requests.

7.2.2.  Token-Based Three-Party Approach

   An alternative approach makes use of tokens, such as those described
   in RFC 3520 [RFC3520] and RFC 3521 [RFC3521] or used as part of the
   Open Settlement Protocol [osp].  Authorization tokens are used to
   associate two different signaling protocols runs (e.g., SIP and NSIS)
   and their authorization decision with each other.  The latter is a
   form of assertion or trait.  As an example, with the authorization
   token mechanism, some form of authorization is provided by the SIP
   proxy, which acts as the resource-authorizing entity in Figure 18.
   If the request is authorized, then the SIP signaling returns an
   authorization token that can be included in the QoS signaling
   protocol messages to refer to the previous authorization decision.
   The tokens themselves may take a number of different forms, some of
   which may require the entity performing the QoS reservation to query
   the external state.

























Manner, et al.                Experimental                     [Page 88]
^L
RFC 5974                        QoS NSLP                    October 2010


     Authorization
     Token Request   +--------------+
     +-------------->| Entity C     | financial settlement
     |               | authorizing  | <..................+
     |               | resource     |                    .
     |        +------+ request      |                    .
     |        |      +--------------+                    .
     |        |                                          .
     |        |Authorization                             .
     |        |Token                                     .
     |        |                                          .
     |        |                                          .
     |        |                                          .
     |        |      QoS request                         .
   +-------------+ + Authz. Token   +--------------+     .
   |  Entity     |----------------->| Entity B     |     .
   |  requesting |                  | performing   |     .
   |  resource   |granted / rejected| QoS          |  <..+
   |      A      |<-----------------| reservation  |
   +-------------+                  +--------------+

                Figure 18: Token-Based Three-Party Approach

   For the digital money type of systems (e.g., OSP tokens), the token
   represents a limited amount of credit.  So, new tokens must be sent
   with later refresh messages once the credit is exhausted.

























Manner, et al.                Experimental                     [Page 89]
^L
RFC 5974                        QoS NSLP                    October 2010


7.2.3.  Generic Three-Party Approach

   Another method is for the node performing the QoS reservation to
   delegate the authorization decision to a third party, as illustrated
   in Figure 19.  The authorization decision may be performed on a per-
   request basis, periodically, or on a per-session basis.

                                    +--------------+
                                    | Entity C     |
                                    | authorizing  |
                                    | resource     |
                                    | request      |
                                    +-----------+--+
                                       ^        |
                                   QoS |        | QoS
                                  authz|        |authz
                                   req.|        | res.
                      QoS              |        v
   +-------------+    request       +--+-----------+
   |  Entity     |----------------->| Entity B     |
   |  requesting |                  | performing   |
   |  resource   |granted / rejected| QoS          |
   |      A      |<-----------------| reservation  |
   +-------------+                  +--------------+

                      Figure 19: Three-Party Approach

7.3.  Computing the Authorization Decision

   Whenever an authorization decision has to be made there is the
   question about which information serves as an input to the
   authorizing entity.  The following information items have been
   mentioned in the past for computing the authorization decision (in
   addition to the authenticated identity):

      Price

      QoS objects

      Policy rules

   Policy rules take into consideration attributes like time of day,
   subscription to certain services, membership, etc., when computing an
   authorization decision.

   The policies used to make the authorization are outside the scope of
   this document and are implementation/deployment specific.




Manner, et al.                Experimental                     [Page 90]
^L
RFC 5974                        QoS NSLP                    October 2010


8.  Acknowledgments

   The authors would like to thank Eleanor Hepworth, Ruediger Geib,
   Roland Bless, Nemeth Krisztian, Markus Ott, Mayi Zoumaro-Djayoon,
   Martijn Swanink, and Ruud Klaver for their useful comments.  Roland,
   especially, has done deep reviews of the document, making sure the
   protocol is well defined.  Bob Braden provided helpful comments and
   guidance which were gratefully received.

9.  Contributors

   This document combines work from three individual documents.  The
   following authors from these documents also contributed to this
   document: Robert Hancock (Siemens/Roke Manor Research), Hannes
   Tschofenig and Cornelia Kappler (Siemens AG), Lars Westberg and
   Attila Bader (Ericsson), and Maarten Buechli (Dante) and Eric
   Waegeman (Alcatel).  In addition, Roland Bless has contributed
   considerable amounts of text all along the writing of this
   specification.

   Sven Van den Bosch was the initial editor of earlier draft versions
   of this document.  Since version 06 of the document, Jukka Manner has
   taken the editorship.  Yacine El Mghazli (Alcatel) contributed text
   on AAA.  Charles Shen and Henning Schulzrinne suggested the use of
   the reason field in the BOUND-SESSION-ID.

10.  References

10.1.  Normative References

   [RFC1982]    Elz, R. and R. Bush, "Serial Number Arithmetic",
                RFC 1982, August 1996.

   [RFC2119]    Bradner, S., "Key words for use in RFCs to Indicate
                Requirement Levels", BCP 14, RFC 2119, March 1997.

   [RFC5971]    Schulzrinne, H. and R. Hancock, "GIST: General Internet
                Signalling Transport", RFC 5971, October 2010.

   [RFC5975]    Ash, G., Bader, A., Kappler, C., and D. Oran, "QSPEC
                Template for the Quality-of-Service NSIS Signaling Layer
                Protocol (NSLP)", RFC 5975, October 2010.

10.2.  Informative References

   [NSIS-AUTH]  Manner, J., Stiemerling, M., Tschofenig, H., and R.
                Bless, Ed., "Authorization for NSIS Signaling Layer
                Protocols", Work in Progress, May 2010.



Manner, et al.                Experimental                     [Page 91]
^L
RFC 5974                        QoS NSLP                    October 2010


   [NSIS-MOB]   Sanda, T., Fu, X., Jeong, S., Manner, J., and H.
                Tschofenig, "NSIS Protocols operation in Mobile
                Environments", Work in Progress, May 2010.

   [RFC1633]    Braden, B., Clark, D., and S. Shenker, "Integrated
                Services in the Internet Architecture: an Overview",
                RFC 1633, June 1994.

   [RFC2205]    Braden, B., Zhang, L., Berson, S., Herzog, S., and S.
                Jamin, "Resource ReSerVation Protocol (RSVP) -- Version
                1 Functional Specification", RFC 2205, September 1997.

   [RFC2210]    Wroclawski, J., "The Use of RSVP with IETF Integrated
                Services", RFC 2210, September 1997.

   [RFC2961]    Berger, L., Gan, D., Swallow, G., Pan, P., Tommasi, F.,
                and S. Molendini, "RSVP Refresh Overhead Reduction
                Extensions", RFC 2961, April 2001.

   [RFC3175]    Baker, F., Iturralde, C., Le Faucheur, F., and B. Davie,
                "Aggregation of RSVP for IPv4 and IPv6 Reservations",
                RFC 3175, September 2001.

   [RFC3520]    Hamer, L-N., Gage, B., Kosinski, B., and H. Shieh,
                "Session Authorization Policy Element", RFC 3520,
                April 2003.

   [RFC3521]    Hamer, L-N., Gage, B., and H. Shieh, "Framework for
                Session Set-up with Media Authorization", RFC 3521,
                April 2003.

   [RFC3726]    Brunner, M., "Requirements for Signaling Protocols",
                RFC 3726, April 2004.

   [RFC4080]    Hancock, R., Karagiannis, G., Loughney, J., and S. Van
                den Bosch, "Next Steps in Signaling (NSIS): Framework",
                RFC 4080, June 2005.

   [RFC4081]    Tschofenig, H. and D. Kroeselberg, "Security Threats for
                Next Steps in Signaling (NSIS)", RFC 4081, June 2005.

   [RFC5226]    Narten, T. and H. Alvestrand, "Guidelines for Writing an
                IANA Considerations Section in RFCs", BCP 26, RFC 5226,
                May 2008.

   [RFC5234]    Crocker, D. and P. Overell, "Augmented BNF for Syntax
                Specifications: ABNF", STD 68, RFC 5234, January 2008.




Manner, et al.                Experimental                     [Page 92]
^L
RFC 5974                        QoS NSLP                    October 2010


   [RFC5973]    Stiemerling, M., Tschofenig, H., Aoun, C., and E.
                Davies, "NAT/Firewall NSIS Signaling Layer Protocol
                (NSLP)", RFC 5973, October 2010.

   [RFC5977]    Bader, A., Westberg, L., Karagiannis, G., Kappler, C.,
                Tschofenig, H., and T. Phelan, "RMD-QOSM: The NSIS
                Quality-of-Service Model for Resource Management in
                Diffserv", RFC 5977, October 2010.

   [lrsvp]      Manner, J. and K. Raatikainen, "Localized QoS Management
                for Multimedia Applications in Wireless Access
                Networks", IASTED IMSA, Technical Specification 101 321,
                p. 193-200, August 2004.

   [opwa95]     Breslau, L., "Two Issues in Reservation Establishment",
                Proc. ACM SIGCOMM '95, Cambridge MA, August 1995.

   [osp]        ETSI, "Telecommunications and Internet Protocol
                Harmonization Over Networks (TIPHON); Open Settlement
                Protocol (OSP) for Inter-Domain pricing, authorization,
                and usage exchange", Technical Specification 101 321,
                version 4.1.1.

   [qos-auth]   Tschofenig, H., "QoS NSLP Authorization Issues", Work
                in Progress, June 2003.

   [shenker]    Shenker, S., et al., "Pricing in computer networks:
                Reshaping the research agenda", Proc. of TPRC 1995,
                1995.






















Manner, et al.                Experimental                     [Page 93]
^L
RFC 5974                        QoS NSLP                    October 2010


Appendix A.  Abstract NSLP-RMF API

   This appendix is purely informational and provides an abstract API
   between the QoS NSLP and the RMF.  It should not be taken as a strict
   rule for implementors, but rather it helps clarify the interface
   between the NSLP and RMF.

A.1.  Triggers from QOS-NSLP towards RMF

   The QoS-NSLP triggers the RMF/QOSM functionality by using the
   sendrmf() primitive:

   int sendrmf(sid, nslp_req_type, qspec, authorization_info,
   NSLP_objects, filter, features_in, GIST_API_triggers,
   incoming_interface, outgoing_interface)

   o  sid: SESSION-ID - The NSIS session identifier

   o  nslp_req_type: indicates type of request:

      *  RESERVE

      *  QUERY

      *  RESPONSE

      *  NOTIFY

   o  qspec: the QSPEC object, if present

   o  authorization_info: the AUTH_SESSION object, if present

   o  NSLP_objects: data structure that contains a list with received
      QoS-NSLP objects.  This list can be used by, e.g., local
      applications, network management, or policy control modules:

      *  RII

      *  RSN

      *  BOUND-SESSION-ID list

      *  REFRESH-PERIOD

      *  SESSION-ID-LIST

      *  RSN-LIST




Manner, et al.                Experimental                     [Page 94]
^L
RFC 5974                        QoS NSLP                    October 2010


      *  INFO-SPEC

      *  MSG-ID

      *  BOUND-MSG-ID

   o  filter: the information for packet filtering, based on the MRI and
      the PACKET-CLASSIFIER object.

   o  features_in: it represents the flags included in the common header
      of the received QOS-NSLP message, but also additional triggers:

      *  BREAK

      *  REQUEST REDUCED REFRESHES

      *  RESERVE-INIT

      *  TEAR

      *  REPLACE

      *  ACK-REQ

      *  PROXY

      *  SCOPING

      *  synchronization_required: this attribute is set (see Sections
         Section 4.6 and Section 4.7.1, for example) when the QoS-NSLP
         functionality supported by a QNE Egress receives a non-tearing
         RESERVE message that includes a MSG-ID or a BOUND-MSG-ID
         object, and the BINDING_CODE value of the BOUND-SESSION-ID
         object is equal to one of the following values:

         +  Tunnel and end-to-end sessions

         +  Aggregate sessions

      *  GIST_API_triggers: it represents the attributes that are
         provided by GIST to QoS-NSLP via the GIST API:

         +  NSLPID

         +  Routing-State-Check

         +  SII-Handle




Manner, et al.                Experimental                     [Page 95]
^L
RFC 5974                        QoS NSLP                    October 2010


         +  Transfer-Attributes

         +  GIST-Hop-Count

         +  IP-TTL

         +  IP-Distance

   o  incoming_interface: the ID of the incoming interface.  Used only
      when the QNE reserves resources on incoming interface.  Default is
      0 (no reservations on incoming interface)

   o  outgoing_interface: the ID of the outgoing interface.  Used only
      when the QNE reserves resources on outgoing interface.  Default is
      0 (no reservations on outgoing interface)

A.2.  Triggers from RMF/QOSM towards QOS-NSLP

   The RMF triggers the QoS-NSLP functionality using the "recvrmf()" and
   "config()" primitives to perform either all or a subset of the
   features listed below.

   The recvrmf() primitive represents either a response to a request
   that has been sent via the API by the QoS-NSLP or an asynchronous
   notification.  Note that when the RMF/QOSM receives a request via the
   API from the QoS-NSLP function, one or more "recvrmf()" response
   primitives can be sent via the API towards QoS-NSLP.  In this way,
   the QOS-NSLP can generate one or more QoS-NSLP messages that can be
   used, for example, in the situation that the arrival of one end-to-
   end RESERVE triggers the generation of two (or more) RESERVE
   messages: an end-to-end RESERVE message and one (or more) intra-
   domain (local) RESERVE message.

   The config() primitive is used to configure certain features, such as
   QNE type, stateful or stateless operation, or bypassing of end-to-end
   messages.

   Note that the selection of the subset of triggers is controlled by
   the QoS Model.

   int recvrmf(sid, nslp_resp_type, qspec, authorization_info, status,
   NSLP_objects, filter, features_out, GIST_API_triggers
   incoming_interface, outgoing_interface)

   o  sid: SESSION-ID - The NSIS session identifier






Manner, et al.                Experimental                     [Page 96]
^L
RFC 5974                        QoS NSLP                    October 2010


   o  nslp_resp_type: indicates type of response:

      *  RESERVE

      *  QUERY

      *  RESPONSE

      *  NOTIFY

   o  qspec: the QSPEC object, if present

   o  authorization_info: the AUTHO_SESSION object, if present

   o  status: boolean that notifies the status of the reservation and
      can be used by QOS-NSLP to include in the INFO-SPEC object:

      *  RESERVATION_SUCCESSFUL

      *  TEAR_DOWN_SUCCESSFUL

      *  NO RESOURCES

      *  RESERVATION_FAILURE

      *  RESERVATION_PREEMPTED: reservation was preempted

      *  AUTHORIZATION_FAILED: authorizing the request failed

      *  MALFORMED_QSPEC: request failed due to malformed qspec

      *  SYNCHRONIZATION_FAILED: Mismatch synchronization between an
         end-to-end RESERVE and an intra-domain RESERVE (see Sections
         Section 4.6 and Section 4.7.1)

      *  CONGESTION_SITUATION: Possible congestion situation occurred on
         downstream path

      *  QoS Model Error

   o  NSLP_objects: data structure that contains a list with QoS-NSLP
      objects that can be used by QoS-NSLP when the QNE is a QNI, QNR,
      QNI_Ingress, QNR_Ingress, QNI_Egress, or QNR_Egress:

      *  RII

      *  RSN




Manner, et al.                Experimental                     [Page 97]
^L
RFC 5974                        QoS NSLP                    October 2010


      *  BOUND-SESSION-ID list

      *  REFRESH-PERIOD

      *  SESSION-ID-LIST

      *  RSN-LIST

      *  MSG-ID

      *  BOUND-MSG-ID

   o  filter: it represents the MRM-related PACKET CLASSIFIER

   o  features_out: it represents (among others) the flags that can be
      used by the QOS-NSLP for newly generated QoS-NSLP messages:

      *  BREAK

      *  REQUEST REDUCED REFRESHES

      *  RESERVE-INIT

      *  TEAR

      *  REPLACE

      *  ACK-REQ

      *  PROXY

      *  SCOPING

      *  BYPASSING - when the outgoing message should be bypassed, then
         it includes the required bypassing level.  Otherwise, it is
         empty.  It can be set only by QNI_Ingress, QNR_Ingress,
         QNI_Egress, or QNR_Egress.  It can be unset only by
         QNI_Ingress, QNR_Ingress, QNI_Egress, or QNR_Egress.

      *  BINDING () - when BINDING is required, then it includes a
         BOUND-SESSION-ID list.  Otherwise, it is empty.  It can only be
         requested by the following QNE types: QNI, QNR, QNI_Ingress,
         QNR_Ingress, QNI_Egress, or QNR_Egress.








Manner, et al.                Experimental                     [Page 98]
^L
RFC 5974                        QoS NSLP                    October 2010


      *  NEW_SID - it requests to generate a new session with a new
         SESSION-ID.  If the QoS-NSLP generates a new SESSION-ID, then
         the QoS-NSLP has to return the value of this new SESSION-ID to
         the RMF/QOSM.  It can be requested by a QNI, QNR, QNI_Ingress,
         QNI_Egress, QNR_Ingress, or QNR_Egress.

      *  NEW_RSN - it requests to generate a new RSN.  If the QoS-NSLP
         generates a new RSN, then the QoS-NSLP has to return the value
         of this new RSN to the RMF/QOSM.

      *  NEW_RII - it requests to generate a new RII.  If the QoS-NSLP
         generates a new RII, then the QoS-NSLP has to return the value
         of this new RII to the RMF/QOSM.

   o  GIST_API_triggers: it represents the attributes that are provided
      to GIST via QoS-NSLP via the GIST API:

      *  NSLPID

      *  SII-Handle

      *  Transfer-Attributes

      *  GIST-Hop-Count

      *  IP-TTL

      *  ROUTING-STATE-CHECK (if set, it requires that GIST create a
         routing state)

   o  incoming_interface: the ID of the incoming interface.  Used only
      when the QNE reserves resources on the incoming interface.
      Default is 0 (no reservations on the incoming interface).

   o  outgoing_interface: the ID of the outgoing interface.  Used only
      when the QNE reserves resources on the outgoing interface.
      Default is 0 (no reservations on the outgoing interface).

A.3.  Configuration Interface

   The config() function is meant for configuring per-session settings,
   from the RMF towards the NSLP.

   int config(sid, qne_type, state_type, bypassing_type)

   o  sid: SESSION-ID - The NSIS session identifier





Manner, et al.                Experimental                     [Page 99]
^L
RFC 5974                        QoS NSLP                    October 2010


   o  qne_type: it defines the type of a QNE

      *  QNI

      *  QNI_Ingress: the QNE is a QNI and an Ingress QNE

      *  QNE: the QNE is not a QNI or QNR

      *  QNE_Interior: the QNE is an Interior QNE, but it is not a QNI
         or QNR

      *  QNI_Egress: the QNE is a QNI and an Egress QNE

      *  QNR

      *  QNR_Ingress: the QNE is a QNR and an Ingress QNE

      *  QNR_Egress: the QNE is a QNR and an Egress QNE

   o  state_type: it defines if the QNE keeps QoS-NSLP operational
      states

      *  STATEFUL

      *  STATELESS

   o  bypassing_type: it defines if a QNE bypasses end-to-end messages
      or not

Appendix B.  Glossary

   AAA: Authentication, Authorization, and Accounting

   EAP: Extensible Authentication Protocol

   MRI: Message Routing Information (see [RFC5971])

   NAT: Network Address Translator

   NSLP: NSIS Signaling Layer Protocol (see [RFC4080])

   NTLP: NSIS Transport Layer Protocol (see [RFC4080])

   OPWA: One Pass With Advertising

   OSP: Open Settlement Protocol

   PIN: Policy-Ignorant Node



Manner, et al.                Experimental                    [Page 100]
^L
RFC 5974                        QoS NSLP                    October 2010


   QNE: an NSIS Entity (NE), which supports the QoS NSLP (see Section 2)

   QNI: the first node in the sequence of QNEs that issues a reservation
   request for a session (see Section 22)

   QNR: the last node in the sequence of QNEs that receives a
   reservation request for a session (see Section 22)

   QSPEC: Quality-of-Service Specification

   RII: Request Identification Information

   RMD: Resource Management for Diffserv

   RMF: Resource Management Function

   RSN: Reservation Sequence Number

   RSVP: Resource Reservation Protocol (see [RFC2205])

   SII: Source Identification Information

   SIP: Session Initiation Protocol

   SLA: Service Level Agreement


























Manner, et al.                Experimental                    [Page 101]
^L
RFC 5974                        QoS NSLP                    October 2010


Authors' Addresses

   Jukka Manner
   Aalto University
   Department of Communications and Networking (Comnet)
   P.O. Box 13000
   FIN-00076 Aalto
   Finland

   Phone: +358 9 470 22481
   EMail: jukka.manner@tkk.fi
   URI:   http://www.netlab.tkk.fi/~jmanner/


   Georgios Karagiannis
   University of Twente/Ericsson
   P.O. Box 217
   Enschede  7500 AE
   The Netherlands

   EMail: karagian@cs.utwente.nl


   Andrew McDonald
   Roke Manor Research Ltd
   Old Salisbury Lane
   Romsey, Hampshire  S051 0ZN
   United Kingdom

   EMail: andrew.mcdonald@roke.co.uk





















Manner, et al.                Experimental                    [Page 102]
^L