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
|
Independent Submission D. Trossen
Request for Comments: 8677 InterDigital Europe, Ltd
Category: Informational D. Purkayastha
ISSN: 2070-1721 A. Rahman
InterDigital Communications, LLC
November 2019
Name-Based Service Function Forwarder (nSFF) Component within a
Service Function Chaining (SFC) Framework
Abstract
Adoption of cloud and fog technology allows operators to deploy a
single "Service Function" (SF) to multiple "execution locations".
The decision to steer traffic to a specific location may change
frequently based on load, proximity, etc. Under the current Service
Function Chaining (SFC) framework, steering traffic dynamically to
the different execution endpoints requires a specific "rechaining",
i.e., a change in the service function path reflecting the different
IP endpoints to be used for the new execution points. This procedure
may be complex and take time. In order to simplify rechaining and
reduce the time to complete the procedure, we discuss separating the
logical Service Function Path (SFP) from the specific execution
endpoints. This can be done by identifying the SFs using a name
rather than a routable IP endpoint (or Layer 2 address). This
document describes the necessary extensions, additional functions,
and protocol details in the Service Function Forwarder (SFF) to
handle name-based relationships.
This document presents InterDigital's approach to name-based SFC. It
does not represent IETF consensus and is presented here so that the
SFC community may benefit from considering this mechanism and the
possibility of its use in the edge data centers.
Status of This Memo
This document is not an Internet Standards Track specification; it is
published for informational purposes.
This is a contribution to the RFC Series, independently of any other
RFC stream. The RFC Editor has chosen to publish this document at
its discretion and makes no statement about its value for
implementation or deployment. Documents approved for publication by
the RFC Editor are not candidates for any level of Internet Standard;
see Section 2 of RFC 7841.
Information about the current status of this document, any errata,
and how to provide feedback on it may be obtained at
https://www.rfc-editor.org/info/rfc8677.
Copyright Notice
Copyright (c) 2019 IETF Trust and the persons identified as the
document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents
(https://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect
to this document.
Table of Contents
1. Introduction
2. Terminology
3. Example Use Case: 5G Control-Plane Services
4. Background
4.1. Relevant Part of SFC Architecture
4.2. Challenges with Current Framework
5. Name-Based Operation in SFF
5.1. General Idea
5.2. Name-Based Service Function Path (nSFP)
5.3. Name-Based Network Locator Map (nNLM)
5.4. Name-Based Service Function Forwarder (nSFF)
5.5. High-Level Architecture
5.6. Operational Steps
6. nSFF Forwarding Operations
6.1. nSFF Protocol Layers
6.2. nSFF Operations
6.2.1. Forwarding between nSFFs and nSFF-NRs
6.2.2. SF Registration
6.2.3. Local SF Forwarding
6.2.4. Handling of HTTP Responses
6.2.5. Remote SF Forwarding
7. IANA Considerations
8. Security Considerations
9. References
9.1. Normative References
9.2. Informative References
Acknowledgements
Authors' Addresses
1. Introduction
The requirements on today's networks are very diverse, enabling
multiple use cases such as the Internet of Things (IoT), Content
Distribution, Gaming, and Network functions such as Cloud Radio
Access Network (RAN) and 5G control planes based on a Service-Based
Architecture (SBA). These services are deployed, provisioned, and
managed using Cloud-based techniques as seen in the IT world.
Virtualization of compute and storage resources is at the heart of
providing (often web) services to end users with the ability to
quickly provision virtualized service endpoints through, e.g.,
container-based techniques. This creates the ability to dynamically
compose new services from existing services. It also allows an
operator to move a service instance in response to user mobility or
to change resource availability. When moving from a purely "distant
cloud" model to one of localized micro data centers with regional,
metro, or even street level, often called "edge" data centers, such
virtualized service instances can be instantiated in topologically
different locations with the overall "distant" data center now being
transformed into a network of distributed ones. The reaction of
content providers, like Facebook, Google, NetFlix, and others, is not
just to rely on deploying content servers at the ingress of the
customer network. Instead, the trend is towards deploying multiple
Point of Presences (POPs) within the customer network, those POPs
being connected through proprietary mechanisms [Schlinker2017] to
push content.
The Service Function Chaining (SFC) framework [RFC7665] allows
network operators as well as service providers to compose new
services by chaining individual "service functions". Such chains are
expressed through explicit relationships of functional components
(the SFs) realized through their direct Layer 2 (e.g., Media Access
Control (MAC) address) or Layer 3 (e.g., IP address) relationship as
defined through next-hop information that is being defined by the
network operator. See Section 4 for more background on SFC.
In a dynamic service environment of distributed data centers such as
the one outlined above, with the ability to create and recreate
service endpoints frequently, the SFC framework requires
reconfiguring the existing chain through information based on the new
relationships, causing overhead in a number of components,
specifically the orchestrator that initiates the initial SFC and any
possible reconfiguration.
This document describes how such changes can be handled without
involving the initiation of new and reconfigured SFCs. This is
accomplished by lifting the chaining relationship from Layer 2 and
Layer 3 information to that of SF "names", which can, for instance,
be expressed as URIs. In order to transparently support such named
relationships, we propose to embed the necessary functionality
directly into the Service Function Forwarder (SFF) as described in
[RFC7665]. With that, the SFF described in this document allows for
keeping an existing SFC intact, as described by its Service Function
Path (SFP), while enabling the selection of appropriate service
function endpoint(s) during the traversal of packets through the SFC.
This document is an Independent Submission to the RFC Editor. It is
not an output of the IETF SFC WG.
2. Terminology
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
"OPTIONAL" in this document are to be interpreted as described in
BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all
capitals, as shown here.
3. Example Use Case: 5G Control-Plane Services
We exemplify the need for chaining SFs at the level of a service name
through a use case stemming from the current 3GPP Release 16 work on
Service Based Architecture (SBA) [SDO-3GPP-SBA],
[SDO-3GPP-SBA-ENHANCEMENT]. In this work, mobile network control
planes are proposed to be realized by replacing the traditional
network function interfaces with a fully service-based one. HTTP was
chosen as the application-layer protocol for exchanging suitable
service requests [SDO-3GPP-SBA]. With this in mind, the exchange
between, for example, the 3GPP-defined (Rel. 15) Session Management
Function (SMF) and the Access and Mobility Management Function (AMF)
in a 5G control plane is being described as a set of web-service-like
requests that are, in turn, embedded into HTTP requests. Hence,
interactions in a 5G control plane can be modeled based on SFCs where
the relationship is between the specific (IP-based) SF endpoints that
implement the necessary service endpoints in the SMF and AMF. The
SFs are exposed through URIs with work ongoing to define the used
naming conventions for such URIs.
This move from a network function model (in pre-Release 15 systems of
3GPP) to a service-based model is motivated through the proliferation
of data-center operations for mobile network control-plane services.
In other words, typical IT-based methods to service provisioning,
particularly that of virtualization of entire compute resources, are
envisioned to being used in future operations of mobile networks.
Hence, operators of such future mobile networks desire to virtualize
SF endpoints and direct (control-plane) traffic to the most
appropriate current service instance in the most appropriate (local)
data center. Such a data center is envisioned as being
interconnected through a software-defined wide area network (SD-WAN).
"Appropriate" here can be defined by topological or geographical
proximity of the service initiator to the SF endpoint.
Alternatively, network or service instance compute load can be used
to direct a request to a more appropriate (in this case less loaded)
instance to reduce possible latency of the overall request. Such
data-center-centric operation is extended with the trend towards
regionalization of load through a "regional office" approach, where
micro data centers provide virtualizable resources that can be used
in the service execution, creating a larger degree of freedom when
choosing the "most appropriate" service endpoint for a particular
incoming service request.
While the move to a service-based model aligns well with the
framework of SFC, choosing the most appropriate service instance at
runtime requires so-called "rechaining" of the SFC since the
relationships in said SFC are defined through Layer 2 or Layer 3
identifiers, which, in turn, are likely to be different if the chosen
service instances reside in different parts of the network (e.g., in
a regional data center).
Hence, when a traffic flow is forwarded over a service chain
expressed as an SFC-compliant SFP, packets in the traffic flow are
processed by the various SF instances, with each SF instance applying
an SF prior to forwarding the packets to the next network node. It
is a service-layer concept and can possibly work over any Virtual
network layer and corresponding underlay network. The underlay
network can be IP or alternatively any Layer 2 technology. At the
service layer, SFs are identified using a path identifier and an
index. Eventually, this index is translated to an IP address (or MAC
address) of the host where the SF is running. Because of this, any
change-of-service function instance is likely to require a change of
the path information since either the IP address (in the case of
changing the execution from one data center to another) or MAC
address will change due to the newly selected SF instance.
Returning to our 5G control-plane example, a user's connection
request to access an application server in the Internet may start
with signaling in the control plane to set up user-plane bearers.
The connection request may flow through SFs over a service chain in
the control plane, as deployed by a network operator. Typical SFs in
a 5G control plane may include "RAN termination / processing", "Slice
Selection Function", "AMF", and "SMF". A "Network Slice" is a
complete logical network including Radio Access Network (RAN) and
Core Network (CN). Distinct RAN and CN Slices may exist. A device
may access multiple Network Slices simultaneously through a single
RAN. The device may provide Network Slice Selection Assistance
Information (NSSAI) parameters to the network to help it select a RAN
and a Core Network part of a slice instance. Part of the control
plane, the Common Control Network Function (CCNF), includes the
Network Slice Selection Function (NSSF), which is in charge of
selecting core Network Slice instances. The classifier, as described
in SFC architecture, may reside in the user terminal or at the
Evolved Node B (eNB). These SFs can be configured to be part of an
SFC. We can also say that some of the configurations of the SFP may
change at the execution time. For example, the SMF may be relocated
as the user moves and a new SMF may be included in the SFP based on
user location. Figure 1 shows the example SFC described here.
+------+ +---------+ +-----+ +-----+
| User | | Slice | | | | |
| App |-->| Control |->| AMF |-->| SMF |-->
| Fn | | Function| | | | |
+------+ +---------+ +-----+ +-----+
Figure 1: Mapping SFC onto Service Function Execution Points
along a Service Function Path
4. Background
[RFC7665] describes an architecture for the specification, creation,
and ongoing maintenance of SFCs. It includes architectural concepts,
principles, and components used in the construction of composite
services through deployment of SFCs. In the following, we outline
the parts of this SFC architecture relevant for our proposed
extension, followed by the challenges with this current framework in
the light of our example use case.
4.1. Relevant Part of SFC Architecture
The SFC architecture, as defined in [RFC7665], describes
architectural components such as SF, classifier, and SFF. It
describes the SFP as the logical path of an SFC. Forwarding traffic
along such an SFP is the responsibility of the SFF. For this, the
SFFs in a network maintain the requisite SFP forwarding information.
Such SFP forwarding information is associated with a service path
identifier (SPI) that is used to uniquely identify an SFP. The
service forwarding state is represented by the Service Index (SI) and
enables an SFF to identify which SFs of a given SFP should be
applied, and in what order. The SFF also has information that allows
it to forward packets to the next SFF after applying local SFs.
The operational steps to forward traffic are then as follows: Traffic
arrives at an SFF from the network. The SFF determines the
appropriate SF the traffic should be forwarded to via information
contained in the SFC encapsulation. After SF processing, the traffic
is returned to the SFF and, if needed, is forwarded to another SF
associated with that SFF. If there is another non-local hop (i.e.,
to an SF with a different SFF) in the SFP, the SFF further
encapsulates the traffic in the appropriate network transport
protocol and delivers it to the network for delivery to the next SFF
along the path. Related to this forwarding responsibility, an SFF
should be able to interact with metadata.
4.2. Challenges with Current Framework
As outlined in previous sections, the SFP defines an ordered sequence
of specific SF instances being used for the interaction between
initiator and SFs along the SFP. These SFs are addressed by IP (or
any L2/MAC) addresses and defined as next-hop information in the
network locator maps of traversing SFF nodes.
As outlined in our use case, however, the service provider may want
to provision SFC nodes based on dynamically spun-up SF instances so
that these (now virtualized) SFs can be reached in the SFC domain
using the SFC underlay layer.
Following the original model of SFC, any change in a specific
execution point for a specific SF along the SFP will require a change
of the SFP information (since the new SF execution point likely
carries different IP or L2 address information) and possibly even the
next-hop information in SFFs along the SFP. In case the availability
of new SF instances is rather dynamic (e.g., through the use of
container-based virtualization techniques), the current model and
realization of SFC could lead to reducing the flexibility of service
providers and increasing the management complexity incurred by the
frequent changes of (service) forwarding information in the
respective SFF nodes. This is because any change of the SFP (and
possibly next-hop info) will need to go through suitable management
cycles.
To address these challenges through a suitable solution, we identify
the following requirements:
* Relations between Service Execution Points MUST be abstracted so
that, from an SFP point of view, the Logical Path never changes.
* Deriving the Service Execution Points from the abstract SFP SHOULD
be fast and incur minimum delay.
* Identification of the Service Execution Points SHOULD NOT use a
combination of Layer 2 or Layer 3 mechanisms.
The next section outlines a solution to address the issue, allowing
for keeping SFC information (represented in its SFP) intact while
addressing the desired flexibility of the service provider.
5. Name-Based Operation in SFF
5.1. General Idea
The general idea is two pronged. Firstly, we elevate the definition
of an SFP onto the level of "name-based interactions" rather than
limiting SFPs to Layer 2 or Layer 3 information only. Secondly, we
extend the operations of the SFF to allow for forwarding decisions
that take into account such name-based interaction while remaining
backward compatible to the current SFC architecture as defined in
[RFC7665]. In the following sections, we outline these two
components of our solution.
If the next-hop information in the Network Locator Map (NLM) is
described using an L2/L3 identifier, the name-based SFF (nSFF) may
operate as described for (traditional) SFF, as defined in [RFC7665].
On the other hand, if the next-hop information in the NLM is
described as a name, then the nSFF operates as described in the
following sections.
In the following sections, we outline the two components of our
solution.
5.2. Name-Based Service Function Path (nSFP)
The existing SFC framework is defined in [RFC7665]. Section 4
outlines that the SFP information is representing path information
based on Layer 2 or Layer 3 information, i.e., MAC or IP addresses,
causing the aforementioned frequent adaptations in cases of
execution-point changes. Instead, we introduce the notion of a
"name-based Service Function Path (nSFP)".
In today's networking terms, any identifier can be treated as a name,
but we will illustrate the realization of a "Name-based SFP" through
extended SFF operations (see Section 6) based on URIs as names and
HTTP as the protocol of exchanging information. Here, URIs are being
used to name for an SF along the nSFP. Note that the nSFP approach
is not restricted to HTTP (as the protocol) and URIs (as next-hop
identifier within the SFP). Other identifiers such as an IP address
itself can also be used and are interpreted as a "name" in the nSFP.
IP addresses as well as fully qualified domain names forming complex
URIs (uniform resource identifiers), such as www.example.com/
service_name1, are all captured by the notion of "name" in this
document.
Generally, nSFPs are defined as an ordered sequence of the "name" of
SFs, and a typical nSFP may look like: 192.0.x.x -> www.example.com
-> www.example2.com/service1 -> www.example2.com/service2.
Our use case in Section 3 can then be represented as an ordered named
sequence. An example for a session initiation that involves an
authentication procedure, this could look like 192.0.x.x ->
smf.example.org/session_initiate -> amf.example.org/auth ->
smf.example.org/session_complete -> 192.0.x.x. (Note that this
example is only a conceptual one since the exact nature of any future
SBA-based exchange of 5G control-plane functions is yet to be defined
by standardization bodies such as 3GPP).
In accordance with our use case in Section 3, any of these named
services can potentially be realized through more than one replicated
SF instance. This leads to making dynamic decisions on where to send
packets along the SAME SFP information, being provided during the
execution of the SFC. Through elevating the SFP onto the notion of
name-based interactions, the SFP will remain the same even if those
specific execution points change for a specific service interaction.
The following diagram in Figure 2 describes this nSFP concept and the
resulting mapping of those named interactions onto (possibly)
replicated instances.
+---------------------------------------------------------------+
|Service Layer |
| 192.0.x.x --> www.example.com --> www.example2.com --> |
| || || |
+----------------------||--------------||-----------------------+
|| ||
|| ||
+----------------------||--------------||-----------------------+
|Underlay Network \/ \/ |
| +--+ +--+ +--+ +--+ +--+ +--+ |
| | | | | | | | | | | | | |
| +--+ +--+ +--+ +--+ +--+ +--+ |
| Compute and Compute and |
| storage nodes storage nodes |
+---------------------------------------------------------------+
Figure 2: Mapping SFC onto Service Function Execution Points
along a Service Function Path Based on Virtualized Service
Function Instance
5.3. Name-Based Network Locator Map (nNLM)
In order to forward a packet within an nSFP, we need to extend the
NLM as defined in [RFC8300] with the ability to consider name
relations based on URIs as well as high-level transport protocols
such as HTTP for means of SFC packet forwarding. Another example for
SFC packet forwarding could be that of Constrained Application
Protocol (CoAP).
The extended NLM or name-based Network Locator Map (nNLM) is shown in
Table 1 as an example for www.example.com being part of the nSFP.
Such extended nNLM is stored at each SFF throughout the SFC domain
with suitable information populated to the nNLM during the
configuration phase.
+-----+-----+--------------------+------------------------------+
| SPI | SI | Next Hop(s) | Transport Encapsulation (TE) |
+=====+=====+====================+==============================+
| 10 | 255 | 192.0.2.1 | VXLAN-gpe |
+-----+-----+--------------------+------------------------------+
| 10 | 254 | 198.51.100.10 | GRE |
+-----+-----+--------------------+------------------------------+
| 10 | 253 | www.example.com | HTTP |
+-----+-----+--------------------+------------------------------+
| 40 | 251 | 198.51.100.15 | GRE |
+-----+-----+--------------------+------------------------------+
| 50 | 200 | 01:23:45:67:89:ab | Ethernet |
+-----+-----+--------------------+------------------------------+
| 15 | 212 | Null (end of path) | None |
+-----+-----+--------------------+------------------------------+
Table 1: Name-Based Network Locator Map
Alternatively, the extended NLM may be defined with implicit name
information rather than explicit URIs as in Table 1. In the example
of Table 2, the next hop is represented as a generic HTTP service
without a specific URI being identified in the extended NLM. In this
scenario, the SFF forwards the packet based on parsing the HTTP
request in order to identify the host name or URI. It retrieves the
URI and may apply policy information to determine the destination
host/service.
+-----+-----+--------------------+------------------------------+
| SPI | SI | Next Hop(s) | Transport Encapsulation (TE) |
+=====+=====+====================+==============================+
| 10 | 255 | 192.0.2.1 | VXLAN-gpe |
+-----+-----+--------------------+------------------------------+
| 10 | 254 | 198.51.100.10 | GRE |
+-----+-----+--------------------+------------------------------+
| 10 | 253 | HTTP Service | HTTP |
+-----+-----+--------------------+------------------------------+
| 40 | 251 | 198.51.100.15 | GRE |
+-----+-----+--------------------+------------------------------+
| 50 | 200 | 01:23:45:67:89:ab | Ethernet |
+-----+-----+--------------------+------------------------------+
| 15 | 212 | Null (end of path) | None |
+-----+-----+--------------------+------------------------------+
Table 2: Name-Based Network Locator Map with Implicit Name
Information
5.4. Name-Based Service Function Forwarder (nSFF)
It is desirable to extend the SFF of the SFC underlay to handle nSFPs
transparently and without the need to insert any SF into the nSFP.
Such extended nSFFs would then be responsible for forwarding a packet
in the SFC domain as per the definition of the (extended) nSFP.
In our example realization for an extended SFF, the solution
described in this document uses HTTP as the protocol of forwarding
SFC packets to the next (name-based) hop in the nSFP. The URI in the
HTTP transaction is the name in our nSFP information, which will be
used for name-based forwarding.
Following our reasoning so far, HTTP requests (and more specifically,
the plaintext-encoded requests above) are the equivalent of packets
that enter the SFC domain. In the existing SFC framework, an IP
payload is typically assumed to be a packet entering the SFC domain.
This packet is forwarded to destination nodes using the L2
encapsulation. Any layer 2 network can be used as an underlay
network. This notion is now extended to packets being possibly part
of an entire higher-layer application such as HTTP requests. The
handling of any intermediate layers, such as TCP and IP, is left to
the realization of the (extended) SFF operations towards the next
(named) hop. For this, we will first outline the general lifecycle
of an SFC packet in the following subsection, followed by two
examples for determining next-hop information in Section 6.2.3,
finished up by a layered view on the realization of the nSFF in
Section 6.2.4.
5.5. High-Level Architecture
+----------+
| SF1 | +--------+ +------+
| instance |\ | NR | | SF2 |
+----------+ \ +--------+ +------+
\ || ||
+------------+ \ +-------+ +---------+ +---------+ +-------+
| Classifier |---| nSFF1 |---|Forwarder|---|Forwarder|---| nSFF2 |
+------------+ +-------+ +---------+ +---------+ +-------+
||
+----------+
| Boundary |
| node |
+----------+
Figure 3: High-Level Architecture
The high-level architecture for name-based operation shown in
Figure 3 is very similar to the SFC architecture as described in
[RFC7665]. Two new functions are introduced, as shown in the above
diagram: namely, the nSFF and the Name Resolver (NR).
The nSFF is an extension of the existing SFF and is capable of
processing SFC packets based on nNLM information, determining the
next SF where the packet should be forwarded, and the required
transport encapsulation (TE). Like standard SFF operation, it adds
TE to the SFC packet and forwards it.
The NR is a new functional component, capable of identifying the
execution endpoints, where a "named SF" is running, triggered by
suitable resolution requests sent by the nSFF. Though this is
similar to DNS function, it is not same. It does not use DNS
protocols or data records. A new procedure to determine the suitable
routing/forwarding information towards the nSFF serving the next hop
of the SFP is used. The details are described later.
The other functional components, such as classifier and SF, are the
same as described in SFC architecture, as defined in [RFC7665], while
the Forwarders shown in the above diagram are traditional Layer 2
switches.
5.6. Operational Steps
In the proposed solution, the operations are realized by the name-
based SFF, called "nSFF". We utilize the high-level architecture in
Figure 3 to describe the traversal between two SF instances of an
nSFP-based transaction in an example chain of: 192.0.x.x -> SF1
(www.example.com) -> SF2 (www.example2.com) -> SF3 -> ...
Service Function 3 (SF3) is assumed to be a classical SF; hence,
existing SFC mechanisms can be used to reach it and will not be
considered in this example.
According to the SFC lifecycle, as defined in [RFC7665], based on our
example chain above, the traffic originates from a classifier or
another SFF on the left. The traffic is processed by the incoming
nSFF1 (on the left side) through the following steps. The traffic
exits at nSFF2.
Step 1: At nSFF1, the following nNLM is assumed:
+-----+-----+--------------------+------------------------------+
| SPI | SI | Next Hop(s) | Transport Encapsulation (TE) |
+=====+=====+====================+==============================+
| 10 | 255 | 192.0.2.1 | VXLAN-gpe |
+-----+-----+--------------------+------------------------------+
| 10 | 254 | 198.51.100.10 | GRE |
+-----+-----+--------------------+------------------------------+
| 10 | 253 | www.example.com | HTTP |
+-----+-----+--------------------+------------------------------+
| 10 | 252 | www.example2.com | HTTP |
+-----+-----+--------------------+------------------------------+
| 40 | 251 | 198.51.100.15 | GRE |
+-----+-----+--------------------+------------------------------+
| 50 | 200 | 01:23:45:67:89:ab | Ethernet |
+-----+-----+--------------------+------------------------------+
| 15 | 212 | Null (end of path) | None |
+-----+-----+--------------------+------------------------------+
Table 3: nNLM at nSFF1
Step 2: nSFF1 removes the previous transport encapsulation (TE) for
any traffic originating from another SFF or classifier
(traffic from an SF instance does not carry any TE and is
therefore directly processed at the nSFF).
Step 3: nSFF1 then processes the Network Service Header (NSH)
information, as defined in [RFC8300], to identify the next
SF at the nSFP level by mapping the NSH information to the
appropriate entry in its nNLM (see Table 3) based on the
provided SPI/SI information in the NSH (see Section 4) in
order to determine the name-based identifier of the next-hop
SF. With such nNLM in mind, the nSFF searches the map for
SPI = 10 and SI = 253. It identifies the next hop as =
www.example.com and HTTP as the protocol to be used. Given
that the next hop resides locally, the SFC packet is
forwarded to the SF1 instance of www.example.com. Note that
the next hop could also be identified from the provided HTTP
request, if the next-hop information was identified as a
generic HTTP service, as defined in Section 5.3.
Step 4: The SF1 instance then processes the received SFC packet
according to its service semantics and modifies the NSH by
setting SPI = 10 and SI = 252 for forwarding the packet
along the SFP. It then forwards the SFC packet to its local
nSFF, i.e., nSFF1.
Step 5: nSFF1 processes the NSH of the SFC packet again, now with
the NSH modified (SPI = 10, SI = 252) by the SF1 instance.
It retrieves the next-hop information from its nNLM in
Table 3 to be www.example2.com. Due to this SF not being
locally available, the nSFF consults any locally available
information regarding routing/forwarding towards a suitable
nSFF that can serve this next hop.
Step 6: If such information exists, the Packet (plus the NSH
information) is marked to be sent towards the nSFF serving
the next hop based on such information in Step 8.
Step 7: If such information does not exist, nSFF1 consults the NR to
determine the suitable routing/forwarding information
towards the identified nSFF serving the next hop of the SFP.
For future SFC packets towards this next hop, such resolved
information may be locally cached, avoiding contacting the
NR for every SFC packet forwarding. The packet is now
marked to be sent via the network in Step 8.
Step 8: Utilizing the forwarding information determined in Steps 6
or 7, nSFF1 adds the suitable TE for the SFC packet before
forwarding via the forwarders in the network towards the
next nSFF22.
Step 9: When the Packet (+NSH+TE) arrives at the outgoing nSFF2,
i.e., the nSFF serving the identified next hop of the SFP,
it removes the TE and processes the NSH to identify the
next-hop information. At nSFF2 the nNLM in Table 4 is
assumed. Based on this nNLM and NSH information where SPI =
10 and SI = 252, nSFF2 identifies the next SF as
www.example2.com.
+-----+-----+--------------------+------------------------------+
| SPI | SI | Next Hop(s) | Transport Encapsulation (TE) |
+=====+=====+====================+==============================+
| 10 | 252 | www.example2.com | HTTP |
+-----+-----+--------------------+------------------------------+
| 40 | 251 | 198.51.100.15 | GRE |
+-----+-----+--------------------+------------------------------+
| 50 | 200 | 01:23:45:67:89:ab | Ethernet |
+-----+-----+--------------------+------------------------------+
| 15 | 212 | Null (end of path) | None |
+-----+-----+--------------------+------------------------------+
Table 4: nNLM at SFF2
Step 10: If the next hop is locally registered at the nSFF, it
forwards the packet (+NSH) to the SF instance using suitable
IP/MAC methods for doing so.
Step 11: If the next hop is not locally registered at the nSFF, the
outgoing nSFF adds new TE information to the packet and
forwards the packet (+NSH+TE) to the next SFF or boundary
node, as shown in Table 4.
6. nSFF Forwarding Operations
This section outlines the realization of various nSFF forwarding
operations in Section 5.6. Although the operations in Section 5
utilize the notion of name-based transactions in general, we
exemplify the operations here in Section 5 specifically for HTTP-
based transactions to ground our description into a specific protocol
for such name-based transaction. We will refer to the various steps
in each of the following subsections.
6.1. nSFF Protocol Layers
Figure 4 shows the protocol layers based on the high-level
architecture in Figure 3.
+-------+ +------+----+ +----+-----+
|App | | | | +--------+ | | |
|HTTP | |--------> | | NR | |nSFF----->|--
|TCP |->| TCP |nSFF| +---/\---+ | | TCP | |
|IP | | IP | | || | | IP | |
+-------+ +------+----+ +---------+ +---------+ +----------+ |
| L2 | | L2 |->|Forwarder|-->|Forwarder|-->| L2 | |
+-------+ +------+----+ +---------+ +---------+ +----------+ |
SF1 nSFF1 nSFF2 |
+-------+ |
| App |/ |
| HTTP | -----------+
| TCP |\
| IP |
| L2 |
+-------+
SF2
Figure 4: Protocol Layers
The nSFF component here is shown as implementing a full incoming/
outgoing TCP/IP protocol stack towards the local SFs, while
implementing the nSFF-NR and nSFF-nSFF protocols based on the
descriptions in Section 6.2.3.
For the exchange of HTTP-based SF transactions, the nSFF terminates
incoming TCP connections as well as outgoing TCP connections to local
SFs, e.g., the TCP connection from SF1 terminates at nSFF1, and nSFF1
may store the connection information such as socket information. It
also maintains the mapping information for the HTTP request such as
originating SF, destination SF, and socket ID. nSFF1 may implement
sending keep-alive messages over the socket to maintain the
connection to SF1. Upon arrival of an HTTP request from SF1, nSFF1
extracts the HTTP Request and forwards it towards the next node as
outlined in Section 6.2. Any returning response is mapped onto the
suitable open socket (for the original request) and sent towards SF1.
At the outgoing nSFF2, the destination SF2/Host is identified from
the HTTP request message. If no TCP connection exists to the SF2, a
new TCP connection is opened towards the destination SF2 and the HTTP
request is sent over said TCP connection. The nSFF2 may also save
the TCP connection information (such as socket information) and
maintain the mapping of the socket information to the destination
SF2. When an HTTP response is received from SF2 over the TCP
connection, nSFF2 extracts the HTTP response, which is forwarded to
the next node. nSFF2 may maintain the TCP connection through keep-
alive messages.
6.2. nSFF Operations
In this section, we present three key aspects of operations for the
realization of the steps in Section 5.6, namely, (i) the registration
of local SFs (for Step 3 in Section 5.6), (ii) the forwarding of SFC
packets to and from local SFs (for Steps 3, 4, and 10 in
Section 5.6), (iii) the forwarding to a remote SF (for Steps 5, 6,
and 7 in Section 5.6) and to the NR as well as (iv) for the lookup of
a suitable remote SF (for Step 7 in Section 5.6). We also cover
aspects of maintaining local lookup information for reducing lookup
latency and other issues.
6.2.1. Forwarding between nSFFs and nSFF-NRs
Forwarding between the distributed nSFFs as well as between nSFFs and
NRs is realized over the operator network via a path-based approach.
A path-based approach utilizes path information provided by the
source of the packet for forwarding said packet in the network. This
is similar to segment routing albeit differing in the type of
information provided for such source-based forwarding as described in
this section. In this approach, the forwarding information to a
remote nSFF or the NR is defined as a "path identifier" (pathID) of a
defined length where said length field indicates the full pathID
length. The payload of the packet is defined by the various
operations outlined in the following subsections, resulting in an
overall packet being transmitted. With this, the generic forwarding
format (GFF) for transport over the operator network is defined in
Figure 5 with the length field defining the length of the pathID
provided.
+---------+-----------------+------------------------//------------+
| | | // |
| Length | Path ID | Payload // |
|(12 bits)| | // |
+---------+-----------------+--------------------//----------------+
Figure 5: Generic Forwarding Format (GFF)
* Length (12 bits): Defines the length of the pathID, i.e., up to
4096 bits
* Path ID: Variable-length bit field derived from IPv6 source and
destination address
For the pathID information, solutions such as those in [Reed2016] can
be used. Here, the IPv6 source and destination addresses are used to
realize a so-called path-based forwarding from the incoming to the
outgoing nSFF or the NR. The forwarders in Figure 4 are realized via
SDN (software-defined networking) switches, implementing an AND/CMP
operation based on arbitrary wildcard matching over the IPv6 source
and destination addresses as outlined in [Reed2016]. Note that in
the case of using IPv6 address information for path-based forwarding,
the step of removing the TE at the outgoing nSFF in Figure 4 is
realized by utilizing the provided (existing) IP header (which was
used for the purpose of the path-based forwarding in [Reed2016]) for
the purpose of next-hop forwarding such as that of IP-based routing.
As described in Step 8 of the extended nSFF operations, this
forwarding information is used as traffic encapsulation. With the
forwarding information utilizing existing IPv6 information, IP
headers are utilized as TE in this case. The next-hop nSFF (see
Figure 4) will restore the IP header of the packet with the relevant
IP information used to forward the SFC packet to SF2, or it will
create suitable TE information to forward the information to another
nSFF or boundary node. Forwarding operations at the intermediary
forwarders, i.e., SDN switches, examine the pathID information
through a flow-matching rule in which a specific switch-local output
port is represented through the specific assigned bit position in the
pathID. Upon a positive match in said rule, the packet is forwarded
on said output port.
Alternatively, the solution in [BIER-MULTICAST] suggests using a so-
called BIER (Binary Indexed Explicit Replication) underlay. Here,
the nSFF would be realized at the ingress to the BIER underlay,
injecting the SFC packet header (plus the Network Service Header
(NSH)) with BIER-based traffic encapsulation into the BIER underlay
with each of the forwarders in Figure 4 being realized as a so-called
Bit-Forwarding Router (BFR) [RFC8279].
6.2.1.1. Transport Protocol Considerations
Given that the proposed solution operates at the "named-transaction"
level, particularly for HTTP transactions, forwarding between nSFFs
and/or NRs SHOULD be implemented via a transport protocol between
nSFFs and/or NRs in order to provide reliability, segmentation of
large GFF packets, and flow control, with the GFF in Figure 5 being
the basic forwarding format for this.
Note that the nSFFs act as TCP proxies at ingress and egress, thus
terminating incoming and initiating outgoing HTTP sessions to SFs.
Figure 6 shows the packet format being used for the transmission of
data, being adapted from the TCP header. Segmentation of large
transactions into single transport protocol packets is realized
through maintaining a "Sequence number". A "Checksum" is calculated
over a single data packet with the ones-complement TCP checksum
calculation being used. The "Window Size" field indicates the
current maximum number of transport packets that are allowed in-
flight by the egress nSFF. A data packet is sent without a "Data"
field to indicate the end of the (e.g., HTTP) transaction.
Note that, in order to support future named transactions based on
other application protocols, such as Constrained Application Protocol
(CoAP), future versions of the transport protocol MAY introduce a
"Type" field that indicates the type of application protocol being
used between SF and nSFF with "Type" 0x01 proposed for HTTP. This is
being left for future study.
+----------------------------------------------+
| 16 bits | 16 bits |
+----------------------------------------------+
| Sequence number |
+----------------------------------------------+
| Checksum | Window Size |
+----------------------------------------------+
| ... |
| Data (Optional) |
+----------------------------------------------+
Figure 6: Transport Protocol Data Packet Format
Given the path-based forwarding being used between nSFFs, the
transport protocol between nSFFs utilizes negative acknowledgements
from the egress nSFF towards the ingress nSFF. The transport
protocol negative Acknowledgment (NACK) packet carries the number of
NACKs as well as the specific sequence numbers being indicated as
lost in the "NACK number" field(s) as shown in Figure 7.
+-----------------------+----------------------+
| 16 bits | 16 bits |
+----------------------------------------------+
| Number of NACKs | +
+----------------------------------------------+
| NACK number |
+----------------------------------------------+
+ ... NACK number +
+----------------------------------------------+
Figure 7: Transport Protocol NACK Packet Format
If the indicated number of NACKs in a received NACK packet is
nonzero, the ingress nSFF will retransmit all sequence numbers
signaled in the packet while decreasing its congestion window size
for future transmissions.
If the indicated number of NACKs in a received NACK packet is zero,
it will indicate the current congestion window as being successfully
(and completely) being transmitted, increasing the congestion window
size if smaller than the advertised "Window Size" in Figure 6.
The maintenance of the congestion window is subject to realization at
the ingress nSFF and left for further study in nSFF realizations.
6.2.2. SF Registration
As outlined in Steps 3 and 10 of Section 5.6, the nSFF needs to
determine if the SF derived from the Name-Based Network Locator
(nNLM) is locally reachable or whether the packet needs to be
forwarded to a remote SFF. For this, a registration mechanism is
provided for such local SF with the local nSFF. Two mechanisms can
be used for this:
1. SF-initiated: We assume that the SF registers its Fully
Qualified Domain Name (FQDN) to the local nSFF. As local
mechanisms, we foresee that either a Representational State
Transfer (REST-based) interface over the link-local link or
configuration of the nSFF (through configuration files or
management consoles) can be utilized. Such local registration
events lead to the nSFF registering the given FQDN with the NR
in combination with a system-unique nSFF identifier that is
being used for path-computation purposes in the NR. For the
registration, the packet format in Figure 8 is used (inserted
as the payload in the GFF of Figure 5 with the pathID towards
the NR).
+---------+------------------+----------------+
| | | |
| R/D | hash(FQDN) | nSFF_ID |
| (1 bit) | (16 bits) | (8 bits) |
+---------+------------------+----------------+
Figure 8: Registration Packet Format
+ R/D: 1-bit length (0 for Register, 1 for Deregister)
+ hash(FQDN): 16-bit length for a hash over the FQDN of the
SF
+ nSFF_ID: 8-bit length for a system-unique identifier for
the SFF related to the SF
We assume that the pathID towards the NR is known to the
nSFF through configuration means.
The NR maintains an internal table that associates the
hash(FQDN), the nSFF_id information, as well as the pathID
information being used for communication between nSFFs and
NRs. The nSFF locally maintains a mapping of registered
FQDNs to IP addresses for the latter using link-local
private IP addresses.
2. Orchestration-based: In this mechanism, we assume that SFC to
be orchestrated and the chain to be provided through an
orchestration template with FQDN information associated to a
compute/storage resource that is being deployed by the
orchestrator. We also assume knowledge at the orchestrator of
the resource topology. Based on this, the orchestrator can now
use the same REST-based protocol defined in option 1 to
instruct the NR to register the given FQDN, as provided in the
template, at the nSFF it has identified as being the locally
servicing nSFF, provided as the system-unique nSFF identifier.
6.2.3. Local SF Forwarding
There are two cases of local SF forwarding, namely, the SF sending an
SFC packet to the local nSFF (incoming requests) or the nSFF sending
a packet to the SF (outgoing requests) as part of Steps 3 and 10 in
Section 5.6. In the following, we outline the operation for HTTP as
an example-named transaction.
As shown in Figure 4, incoming HTTP requests from SFs are extracted
by terminating the incoming TCP connection at their local nSFFs at
the TCP level. The nSFF MUST maintain a mapping of open TCP sockets
to HTTP requests (utilizing the URI of the request) for HTTP response
association.
For outgoing HTTP requests, the nSFF utilizes the maintained mapping
of locally registered FQDNs to link-local IP addresses (see
Section 6.2.2, option 1). Hence, upon receiving an SFC packet from a
remote nSFF (in Step 9 of Section 5.6), the nSFF determines the local
existence of the SF through the registration mechanisms in
Section 6.2.2. If said SF does exist locally, the HTTP (+NSH)
packet, after stripping the TE, is sent to the local SF as Step 10 in
Section 5.6 via a TCP-level connection. Outgoing nSFFs SHOULD keep
TCP connections open to local SFs for improving SFC packet delivery
in subsequent transactions.
6.2.4. Handling of HTTP Responses
When executing Steps 3 and 10 in Section 5.6, the SFC packet will be
delivered to the locally registered next hop. As part of the HTTP
protocol, responses to the HTTP request will need to be delivered on
the return path to the originating nSFF (i.e., the previous hop).
For this, the nSFF maintains a list of link-local connection
information, e.g., sockets to the local SF and the pathID on which
the request was received. Once receiving the response, nSFF consults
the table to determine the pathID of the original request, forming a
suitable GFF-based packet to be returned to the previous nSFF.
When receiving the HTTP response at the previous nSFF, the nSFF
consults the table of (locally) open sockets to determine the
suitable local SF connection, mapping the received HTTP response URI
to the stored request URI. Utilizing the found socket, the HTTP
response is forwarded to the locally registered SF.
6.2.5. Remote SF Forwarding
In Steps 5, 6, 7, and 8 of Section 5.6, an SFC packet is forwarded to
a remote nSFF based on the nNLM information for the next hop of the
nSFP. Section 6.2.5.1 handles the case of suitable forwarding
information to the remote nSFF not existing, therefore consulting the
NR to obtain suitable information. Section 6.2.5.2 describes the
maintenance of forwarding information at the local nSFF.
Section 6.2.5.3 describes the update of stale forwarding information.
Note that the forwarding described in Section 6.2.1 is used for the
actual forwarding to the various nSFF components. Ultimately,
Section 6.2.5.4 describes the forwarding to the remote nSFF via the
forwarder network.
6.2.5.1. Remote SF Discovery
The nSFF communicates with the NR for two purposes: namely, the
registration and discovery of FQDNs. The packet format for the
former was shown in Figure 8 in Section 6.2.2, while Figure 9
outlines the packet format for the discovery request.
+--------------+-------------+ +--------+-----------------//--------+
| | | | | // |
| hash(FQDN) | nSFF_ID | | Length | pathID // |
| (16 bits) | (8 bits) | |(4 bits)| // |
+--------------+-------------+ +--------+-------------//------------+
Path Request Path Response
Figure 9: Discovery Packet Format
For Path Request:
* hash(FQDN): 16-bit length for a hash over the FQDN of the SF
* nSFF_ID: 8-bit length for a system-unique identifier for the SFF
related to the SF
For Path Response:
* Length: 4-bit length that defines the length of the pathID
* Path ID: Variable-length bit field derived from IPv6 source and
destination address
A path to a specific FQDN is requested by sending a hash of the FQDN
to the NR together with its nSFF_id, receiving as a response a pathID
with a length identifier. The NR SHOULD maintain a table of
discovery requests that map discovered (hash of) FQDN to the nSFF_id
that requested it and the pathID that is being calculated as a result
of the discovery request.
The discovery request for an FQDN that has not previously been served
at the nSFF (or for an FQDN whose pathID information has been flushed
as a result of the update operations in Section 6.2.5.3) results in
an initial latency incurred by this discovery through the NR, while
any SFC packet sent over the same SFP in a subsequent transaction
will utilize the nSFF-local mapping table. Such initial latency can
be avoided by prepopulating the FQDN-pathID mapping proactively as
part of the overall orchestration procedure, e.g., alongside the
distribution of the nNLM information to the nSFF.
6.2.5.2. Maintaining Forwarding Information at Local nSFF
Each nSFF MUST maintain an internal table that maps the (hash of the)
FQDN information to a suitable pathID. As outlined in Step 7 of
Section 5.6, if a suitable entry does not exist for a given FQDN, the
pathID information is requested with the operations in
Section 6.2.5.1 and the suitable entry is locally created upon
receiving a reply with the forwarding operation being executed as
described in Section 6.2.1.
If such an entry does exist (i.e., Step 6 of Section 5.6), the pathID
is locally retrieved and used for the forwarding operation in
Section 6.2.1.
6.2.5.3. Updating Forwarding Information at nSFF
The forwarding information maintained at each nSFF (see
Section 6.2.5.2) might need to be updated for three reasons:
1. An existing SF is no longer reachable: In this case, the nSFF
with which the SF is locally registered deregisters the SF
explicitly at the NR by sending the packet in Figure 6 with the
hashed FQDN and the R/D bit set to 1 (for deregister).
2. Another SF instance has become reachable in the network (and,
therefore, might provide a better alternative to the existing
SF): In this case, the NR has received another packet with a
format defined in Figure 7 but a different nSFF_id value.
3. Links along paths might no longer be reachable: The NR might
use a suitable southbound interface to transport networks to
detect link failures, which it associates to the appropriate
pathID bit position.
For this purpose, the packet format in Figure 10 is sent from the NR
to all affected nSFFs, using the generic format in Figure 5.
+---------+-----------------+--------------//----+
| | | // |
| Type | #IDs | IDs // |
| (1 bit) | (8 bits) | // |
+---------+-----------------+----------//--------+
Figure 10: Path Update Format
* Type: 1-bit length (0 for Nsff ID, 1 for Link ID)
* #IDs: 8-bit length for number of IDs in the list
* IDs: List of IDs (Nsff ID or Link ID)
The pathID to the affected nSFFs is computed as the binary OR over
all pathIDs to those nSFF_ids affected where the pathID information
to the affected nSFF_id values is determined from the NR-local table
maintained in the registration/deregistration operation of
Section 6.2.2.
The pathID may include the type of information being updated (e.g.,
node identifiers of leaf nodes or link identifiers for removed
links). The node identifier itself may be a special identifier to
signal "ALL NODES" as being affected. The node identifier may signal
changes to the network that are substantial (e.g., parallel link
failures). The node identifier may trigger (e.g., recommend) purging
of the entire path table (e.g., rather than the selective removal of
a few nodes only).
It will include the information according to the type. The included
information may also be related to the type and length information
for the number of identifiers being provided.
In cases 1 and 2, the Type bit is set to 1 (type nSFF_id) and the
affected nSFFs are determined by those nSFFs that have previously
sent SF discovery requests, utilizing the optional table mapping
previously registered FQDNs to nSFF_id values. If no table mapping
the (hash of) FQDN to nSFF_id is maintained, the update is sent to
all nSFFs. Upon receiving the path update at the affected nSFF, all
appropriate nSFF-local mapping entries to pathIDs for the hash(FQDN)
identifiers provided will be removed, leading to a new NR discovery
request at the next remote nSFF forwarding to the appropriate FQDN.
In case 3, the Type bit is set to 0 (type linkID) and the affected
nSFFs are determined by those nSFFs whose discovery requests have
previously resulted in pathIDs that include the affected link,
utilizing the optional table mapping previously registered FQDNs to
pathID values (see Section 6.2.5.1). Upon receiving the node
identifier information in the path update, the affected nSFF will
check its internal table that maps FQDNs to pathIDs to determine
those pathIDs affected by the link problems and remove path
information that includes the received node identifier(s). For this,
the pathID entries of said table are checked against the linkID
values provided in the ID entry of the path update through a binary
AND/CMP operation to check the inclusion of the link in the pathIDs
to the FQDNs. If any pathID is affected, the FQDN-pathID entry is
removed, leading to a new NR discovery request at the next remote
nSFF forwarding to the appropriate FQDN.
6.2.5.4. Forwarding to Remote nSFF
Once Steps 5, 6, and 7 in Section 5.6 are being executed, Step 8
finally sends the SFC packet to the remote nSFF, utilizing the pathID
returned in the discovery request (Section 6.2.5.1) or retrieved from
the local pathID mapping table. The SFC packet is placed in the
payload of the generic forwarding format in Figure 5 together with
the pathID, and the nSFF eventually executes the forwarding
operations in Section 6.2.1.
7. IANA Considerations
This document has no IANA actions.
8. Security Considerations
Sections 5 and 6 describe the forwarding of SFC packets between named
SFs based on URIs exchanged in HTTP messages. Security is needed to
protect the communications between originating node and Ssff, between
one Nsff and the next Nsff, and between Nsff and destination. TLS is
sufficient for this and SHOULD be used. The TLS handshake allows to
determine the FQDN, which, in turn, is enough for the service routing
decision. Supporting TLS also allows the possibility of HTTPS-based
transactions.
It should be noted (per [RFC3986]) that what a URI resolves to is not
necessarily stable. This can allow flexibility in deployment, as
described in this document, but may also result in unexpected
behavior and could provide an attack vector as the resolution of a
URI could be "hijacked" resulting in packets being steered to the
wrong place. This could be particularly important if the SFC is
intended to send packets for processing at security functions. Such
hijacking is a new attack surface introduced by using a separate NR.
9. References
9.1. Normative References
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997,
<https://www.rfc-editor.org/info/rfc2119>.
[RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform
Resource Identifier (URI): Generic Syntax", STD 66,
RFC 3986, DOI 10.17487/RFC3986, January 2005,
<https://www.rfc-editor.org/info/rfc3986>.
[RFC7665] Halpern, J., Ed. and C. Pignataro, Ed., "Service Function
Chaining (SFC) Architecture", RFC 7665,
DOI 10.17487/RFC7665, October 2015,
<https://www.rfc-editor.org/info/rfc7665>.
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
May 2017, <https://www.rfc-editor.org/info/rfc8174>.
[RFC8279] Wijnands, IJ., Ed., Rosen, E., Ed., Dolganow, A.,
Przygienda, T., and S. Aldrin, "Multicast Using Bit Index
Explicit Replication (BIER)", RFC 8279,
DOI 10.17487/RFC8279, November 2017,
<https://www.rfc-editor.org/info/rfc8279>.
[RFC8300] Quinn, P., Ed., Elzur, U., Ed., and C. Pignataro, Ed.,
"Network Service Header (NSH)", RFC 8300,
DOI 10.17487/RFC8300, January 2018,
<https://www.rfc-editor.org/info/rfc8300>.
9.2. Informative References
[BIER-MULTICAST]
Trossen, D., Rahman, A., Wang, C., and T. Eckert,
"Applicability of BIER Multicast Overlay for Adaptive
Streaming Services", Work in Progress, Internet-Draft,
draft-ietf-bier-multicast-http-response-01, 28 June 2019,
<https://tools.ietf.org/html/draft-ietf-bier-multicast-
http-response-01>.
[Reed2016] Reed, M.J., Al-Naday, M., Thomas, N., Trossen, D.,
Petropoulos, G., and S. Spirou, "Stateless multicast
switching in software defined networks", IEEE ICC 2016,
DOI 10.1109/ICC.2016.7511036, May 2016,
<https://ieeexplore.ieee.org/document/7511036>.
[Schlinker2017]
Schlinker, B., Kim, H., Cui, T., Katz-Bassett, E.,
Madhyastha, H., Cunha, I., Quinn, J., Hassan, S.,
Lapukhov, P., and H. Zeng, "Engineering Egress with Edge
Fabric, Steering Oceans of Content to the World", ACM
SIGCOMM 2017, August 2017, <https://research.fb.com/wp-
content/uploads/2017/08/sigcomm17-final177-2billion.pdf>.
[SDO-3GPP-SBA]
3GPP, "Technical Realization of Service Based
Architecture", 3GPP TS 29.500 V15.5.0, September 2019,
<https://www.3gpp.org/ftp/Specs/html-info/29500.htm>.
[SDO-3GPP-SBA-ENHANCEMENT]
3GPP, "New SID for Enhancements to the Service-Based 5G
System Architecture", 3GPP S2-182904, February 2018,
<https://www.3gpp.org/ftp/tsg_sa/WG2_Arch/
TSGS2_126_Montreal/Docs/S2-182904.zip>.
Acknowledgements
The authors would like to thank Dirk von Hugo and Andrew Malis for
their reviews and valuable comments. We would also like to thank
Joel Halpern, the chair of the SFC WG, and Adrian Farrel for guiding
us through the Independent Submission Editor (ISE) path.
Authors' Addresses
Dirk Trossen
InterDigital Europe, Ltd
64 Great Eastern Street, 1st Floor
London
EC2A 3QR
United Kingdom
Email: Dirk.Trossen@InterDigital.com
Debashish Purkayastha
InterDigital Communications, LLC
1001 E Hector St
Conshohocken, PA
United States of America
Email: Debashish.Purkayastha@InterDigital.com
Akbar Rahman
InterDigital Communications, LLC
1000 Sherbrooke Street West
Montreal
Canada
Email: Akbar.Rahman@InterDigital.com
|