| rfc8677xml2.original.xml | rfc8677.xml | |||
|---|---|---|---|---|
| <?xml version="1.0" encoding="US-ASCII"?> | <?xml version='1.0' encoding='utf-8'?> | |||
| <!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent"> | ||||
| <!DOCTYPE rfc SYSTEM "rfc2629.dtd" [ | <?rfc toc="yes"?> | |||
| <?rfc symrefs="yes"?> | ||||
| <!ENTITY rfc2119 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference. | <?rfc sortrefs="yes"?> | |||
| RFC.2119.xml'> | <?rfc compact="yes"?> | |||
| <!ENTITY rfc7665 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference. | <?rfc subcompact="no"?> | |||
| RFC.7665.xml'> | <?rfc private=""?> | |||
| <!ENTITY rfc8174 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference. | <?rfc topblock="yes"?> | |||
| RFC.8174.xml'> | <?rfc comments="no"?> | |||
| <!ENTITY rfc8300 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference. | <rfc xmlns:xi="http://www.w3.org/2001/XInclude" | |||
| RFC.8300.xml'> | submissionType="independent" ipr="trust200902" category="info" | |||
| <!ENTITY rfc8279 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference. | number="8677" obsoletes="" updates="" | |||
| RFC.8279.xml'> | docName="draft-trossen-sfc-name-based-sff-07" xml:lang="en" tocInclude="tru | |||
| e" symRefs="true" sortRefs="true" version="3"> | ||||
| ]> | <!-- xml2rfc v2v3 conversion 2.34.0 --> | |||
| <rfc submissionType="independent" ipr="trust200902" category="info" number="XXXX | ||||
| "> | ||||
| <?rfc toc="yes"?> | ||||
| <?rfc symrefs="yes"?> | ||||
| <?rfc sortrefs="yes"?> | ||||
| <?rfc compact="yes"?> | ||||
| <?rfc subcompact="no"?> | ||||
| <?rfc private=""?> | ||||
| <?rfc topblock="yes"?> | ||||
| <?rfc comments="no"?> | ||||
| <front> | <front> | |||
| <title abbrev="Name Based SFF">Name-Based Service Function Forwarder | <title abbrev="Name-Based SFF">Name-Based Service Function Forwarder | |||
| (nSFF) Component within Service Function Chaining (SFC) Framework</title> | (nSFF) Component within a Service Function Chaining (SFC) Fra | |||
| mework</title> | ||||
| <author fullname="Dirk Trossen" initials="D." surname="Trossen"> | <seriesInfo name="RFC" value="8677"/> | |||
| <organization> InterDigital Europe, Ltd </organization> | <author fullname="Dirk Trossen" initials="D." surname="Trossen"> | |||
| <organization> InterDigital Europe, Ltd</organization> | ||||
| <address> | <address> | |||
| <postal> | <postal> | |||
| <street>64 Great Eastern Street, 1st Floor</street> | <street>64 Great Eastern Street, 1st Floor</street> | |||
| <city>London</city> | <city>London</city> | |||
| <code>EC2A 3QR</code> | <code>EC2A 3QR</code> | |||
| <country>United Kingdom</country> | <country>United Kingdom</country> | |||
| </postal> | </postal> | |||
| <email>Dirk.Trossen@InterDigital.com</email> | <email>Dirk.Trossen@InterDigital.com</email> | |||
| <uri> </uri> | <uri> </uri> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <author initials="D." surname="Purkayastha" fullname="Debashish Purkayastha" | ||||
| <author initials="D." surname="Purkayastha" fullname="Debashish Purkayast | > | |||
| ha"> | ||||
| <organization>InterDigital Communications, LLC</organization> | <organization>InterDigital Communications, LLC</organization> | |||
| <address> | <address> | |||
| <postal> | <postal> | |||
| <street>1001 E Hector St</street> | <street>1001 E Hector St</street> | |||
| <city>Conshohocken</city> | <city>Conshohocken</city> | |||
| <code></code> | <code/> | |||
| <country>United States of America</country> | <country>United States of America</country> | |||
| <region></region> | <region/> | |||
| </postal> | </postal> | |||
| <phone></phone> | <phone/> | |||
| <email>Debashish.Purkayastha@InterDigital.com</email> | <email>Debashish.Purkayastha@InterDigital.com</email> | |||
| <uri></uri> | <uri/> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <author initials="A." surname="Rahman" fullname="Akbar Rahman"> | <author initials="A." surname="Rahman" fullname="Akbar Rahman"> | |||
| <organization>InterDigital Communications, LLC</organization> | <organization>InterDigital Communications, LLC</organization> | |||
| <address> | <address> | |||
| <postal> | <postal> | |||
| <street>1000 Sherbrooke Street West</street> | <street>1000 Sherbrooke Street West</street> | |||
| <city>Montreal</city> | <city>Montreal</city> | |||
| <code></code> | <code/> | |||
| <country>Canada</country> | <country>Canada</country> | |||
| <region></region> | <region/> | |||
| </postal> | </postal> | |||
| <phone></phone> | <phone/> | |||
| <email>Akbar.Rahman@InterDigital.com</email> | <email>Akbar.Rahman@InterDigital.com</email> | |||
| <uri></uri> | <uri/> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <date year="2019" month="November"/> | ||||
| <area/> | ||||
| <workgroup/> | ||||
| <date year="2019" month="August" /> | <keyword>service function, SF, SFF, nSFF, SFC, SFP, NSH, FQDN, 5G, NSSAI, | |||
| CCNF, NSSF, 3GPP</keyword> | ||||
| <area></area> | ||||
| <workgroup></workgroup> | ||||
| <!-- [rfced] Please insert any keywords (beyond those that appear in | ||||
| the title) for use on https://www.rfc-editor.org/search. --> | ||||
| <keyword>example</keyword> | ||||
| <abstract> | <abstract> | |||
| <t> | <t> | |||
| Adoption of cloud and fog technology allows operators to deploy a single | Adoption of cloud and fog technology allows operators to deploy a | |||
| "Service Function" to multiple "Execution locations". | single "Service Function" (SF) to multiple "execution locations". The | |||
| The decision to steer traffic to a specific location may change freque | decision to steer traffic to a specific location may change frequently | |||
| ntly based on load, proximity etc. Under the current | based on load, proximity, etc. Under the current Service Function | |||
| SFC framework, steering traffic dynamically to the different execution | Chaining (SFC) framework, steering traffic dynamically to the different | |||
| end points require a specific 're-chaining', i.e., | execution endpoints requires a specific "rechaining", i.e., a change in | |||
| a change in the service function path reflecting the different IP endp | the service function path reflecting the different IP endpoints to be | |||
| oints to be used for the new execution points. | used for the new execution points. This procedure may be complex and | |||
| This procedure may be complex and take time. In order to simplify re-c | take time. In order to simplify rechaining and reduce the time to | |||
| haining and reduce the time to complete the procedure, | complete the procedure, we discuss separating the logical Service | |||
| we discuss separating the logical Service Function Path from the speci | Function Path (SFP) from the specific execution endpoints. This can be | |||
| fic execution end points. This can be done by identifying | done by identifying the SFs using a name rather than a | |||
| the Service Functions using a name rather than a routable IP endpoint | routable IP endpoint (or Layer 2 address). This document describes the | |||
| (or Layer 2 address). This document describes the necessary | necessary extensions, additional functions, and protocol details in SFF | |||
| extensions, additional functions and protocol details in SFF (Service | (Service Function Forwarder) to handle name-based relationships. | |||
| Function Forwarder) to handle name based relationships. | </t> | |||
| </t> | <t> | |||
| This document presents InterDigital's approach to name-based SFC. | ||||
| <t> | It does not represent IETF consensus and is presented here so that | |||
| This document presents InterDigital's approach to name-based service f | the SFC community may benefit from considering this mechanism and | |||
| unction chaining. It does not represent IETF consensus | the possibility of its use in the edge data centers. | |||
| and is presented here so that the SFC community may benefit from consi | ||||
| dering this mechanism and the possibility of its use in | ||||
| the edge data centers. | ||||
| </t> | </t> | |||
| </abstract> | </abstract> | |||
| </front> | </front> | |||
| <middle> | <middle> | |||
| <section anchor="introduction" numbered="true" toc="default"> | ||||
| <name>Introduction</name> | ||||
| <t> | ||||
| 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 manage | ||||
| d | ||||
| 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. | ||||
| <section anchor="introduction" title="Introduction"> | 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 <xref target="Schlinker2017" format="default"/> | ||||
| to push content. | ||||
| </t> | ||||
| <t> | <t> | |||
| The requirements on today's networks are very diverse, enabling multiple | The Service Function Chaining (SFC) framework <xref target="RFC7665" | |||
| use cases such as IoT, Content Distribution, Gaming and Network functions such | format="default"/> allows network operators as well as service | |||
| as Cloud RAN and 5G control planes based on a service-based architecture. These | providers to compose new services by chaining individual "service | |||
| services are deployed, provisioned and managed using Cloud based techniques as s | functions". Such chains are expressed through explicit relationships | |||
| een in the IT world. Virtualization of compute and storage resources is at the h | of functional components (the SFs) realized through their direct Layer | |||
| eart of providing (often web) services to end users with the ability to quickly | 2 (e.g., Media Access Control (MAC) address) or Layer 3 (e.g., IP | |||
| provisioning such virtualized service endpoints through, e.g., container based t | address) relationship as defined through next-hop information that is | |||
| echniques. This creates a dynamicity with the capability to dynamically compose | being defined by the network operator. See <xref target="Bkgnd" | |||
| new services from available services as well as move a service instance in respo | format="default"/> for more background on SFC. | |||
| nse to user mobility or resource availability where desirable. When moving from | ||||
| a pure 'distant cloud' model to one of localized micro data centers with regiona | ||||
| l, metro or even street level, often called 'edge' data centers, such virtualize | ||||
| d service instances can be instantiated in topologically different locations wit | ||||
| h the overall 'distant' data center now being transformed into a network of dist | ||||
| ributed ones. The reaction of content providers, like Facebook, Google, NetFlix | ||||
| and others, are not just relying on deploying content server at the ingress of t | ||||
| he customer network. Instead the trend is towards deploying multiple POPs within | ||||
| the customer network, those POPs being connected through proprietary mechanisms | ||||
| <xref target="Schlinker2017" /> to push content. | ||||
| </t> | </t> | |||
| <t> | <t> | |||
| The Service Function Chaining (SFC) framework <xref target="RFC7665" /> | In a dynamic service environment of distributed data centers such as | |||
| allows network operators as well as service providers to compose new services by | the one outlined above, with the ability to create and recreate | |||
| chaining individual "Service Functions (SFs)". Such chains are expressed throug | service endpoints frequently, the SFC framework requires | |||
| h explicit relationships of functional components (the service functions), reali | reconfiguring the existing chain through information based on the new | |||
| zed through their direct Layer 2 (e.g., MAC address) or Layer 3 (e.g., IP addres | relationships, causing overhead in a number of components, | |||
| s) relationship as defined through next hop information that is being defined by | specifically the orchestrator that initiates the initial SFC and any | |||
| the network operator, see Section 4 for more background on SFC. | possible reconfiguration. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| In a dynamic service environment of distributed data centers as the one | ||||
| outlined above, with the ability to create and recreate service endpoints frequ | This document describes how such changes can be handled without involving the | |||
| ently, the SFC framework requires to reconfigure the existing chain through info | initiation of new and reconfigured SFCs. This is accomplished by lifting the | |||
| rmation based on the new relationships, causing overhead in a number of componen | chaining relationship from Layer 2 and Layer 3 information to that of SF | |||
| ts, specifically the orchestrator that initiates the initial service function ch | "names", which can, for instance, be expressed as URIs. | |||
| ain and any possible reconfiguration. | ||||
| 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 <xref target="RFC7665" format="default"/>. 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. | ||||
| </t> | </t> | |||
| </section> | ||||
| <section anchor="terminology" numbered="true" toc="default"> | ||||
| <name>Terminology</name> | ||||
| <t> | <t> | |||
| This document describes how such changes can be handled without involvin | The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQU | |||
| g the initiation of new and reconfigured SFCs by lifting the chaining relationsh | IRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL | |||
| ip from Layer 2 and 3 information to that of service function 'names', such as n | NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14> | |||
| ames for instance being expressed as URIs. In order to transparently support suc | RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", | |||
| h named relationships, we propose to embed the necessary functionality directly | "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to | |||
| into the Service Function Forwarder (SFF), as described in <xref target="RFC7665 | be interpreted as | |||
| " />). With that, the SFF described in this document allows for keeping an exist | described in BCP 14 <xref target="RFC2119" format="default"/> <xref tar | |||
| ing SFC intact, as described by its service function path (SFP), while enabling | get="RFC8174" format="default"/> | |||
| the selection of an appropriate service function endpoint(s) during the traversa | when, and only when, they appear in all capitals, as shown here. | |||
| l 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. | ||||
| </t> | </t> | |||
| </section> | </section> | |||
| <section anchor="Use_Case" numbered="true" toc="default"> | ||||
| <name>Example Use Case: 5G Control-Plane Services</name> | ||||
| <t> | ||||
| 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) <xref target | ||||
| ="SDO-3GPP-SBA" format="default"/>, <xref target="SDO-3GPP-SBA-ENHANCEMENT" form | ||||
| at="default"/>. 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 <xref target="SDO-3GPP-SBA" format="default"/>. 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. | ||||
| </t> | ||||
| <section anchor="terminology" title="Terminology"> | <t> | |||
| <t> | This move from a network function model (in pre-Release 15 | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL | systems of 3GPP) to a service-based model is motivated through | |||
| NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", | the proliferation of data-center operations for mobile network | |||
| "MAY", and "OPTIONAL" in this document are to be interpreted as | control-plane services. In other words, typical IT-based methods | |||
| described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> | to service provisioning, particularly that of virtualization of | |||
| when, and only when, they appear in all capitals, as shown here. | entire compute resources, are envisioned to being used in future | |||
| </t> | 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. | ||||
| </t> | ||||
| <t> | ||||
| 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). | ||||
| </t> | ||||
| </section> | <t> | |||
| 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. | ||||
| <section anchor="Use_Case" title="Example Use Case: 5G Control-Plane Service | It is a service-layer concept and can possibly work over any Virtual network | |||
| s"> | layer and corresponding underlay network. The underlay network can be IP or | |||
| <t> | alternatively any Layer 2 technology. | |||
| We exemplify the need for chaining service functions at the level of | ||||
| a service name through a use case stemming from the current 3GPP Rel 16 work on | At the service layer, SFs are identified using a path identifier | |||
| Service Based Architecture (SBA) <xref target="_3GPP_SBA"/>, <xref target="_3GPP | and an index. Eventually, this index is translated to an IP address (or MAC | |||
| _SBA_ENHANCEMENT"/>. In this work, mobile network control planes are proposed to | address) of the host where the SF is running. Because of this, | |||
| be realized by replacing the traditional network function interfaces with a ful | any change-of-service function instance is likely to require a change of the | |||
| ly service-based one. HTTP was chosen as the application layer protocol for exch | path information since either the IP address (in the case of changing the | |||
| anging suitable service requests <xref target="_3GPP_SBA"/>. With this in mind, | execution from one data center to another) or MAC address will change due to | |||
| the exchange between, say the 3GPP (Rel. 15) defined Session Management Function | the newly selected SF instance. | |||
| (SMF) and the Access and Mobility management Function (AMF) in a 5G control pla | ||||
| ne is being described as a set of web service like requests which are in turn em | ||||
| bedded into HTTP requests. Hence, interactions in a 5G control plane can be mode | ||||
| lled based on service function chains where the relationship is between the spec | ||||
| ific (IP-based) service function endpoints that implement the necessary service | ||||
| endpoints in the SMF and AMF. The service functions are exposed through URIs wit | ||||
| h work ongoing to define the used naming conventions for such URIs. | ||||
| </t> | </t> | |||
| <t> | ||||
| This move from a network function model (in pre-Rel 15 systems of 3G | ||||
| PP) to a service-based model is motivated through the proliferation of data cent | ||||
| er operations for mobile network control-plane services. In other words, typical | ||||
| IT-based methods to service provisioning, in particular that of virtualization | ||||
| of entire compute resources, are envisioned to being used in future operations o | ||||
| f mobile networks. Hence, operators of such future mobile networks desire to vir | ||||
| tualize service function endpoints and direct (control-plane) traffic to the mos | ||||
| t appropriate current service instance in the most appropriate (local) data cent | ||||
| re, such data centre envisioned as being interconnected through a software-defin | ||||
| ed wide area network (SD-WAN). 'Appropriate' here can be defined by topological | ||||
| or geographical proximity of the service initiator to the service function endpo | ||||
| int. Alternatively, network or service instance compute load can be used to dire | ||||
| ct 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 offi | ||||
| ce' approach, where micro data centers provide virtualizable resources that can | ||||
| be used in the service execution, creating a larger degree of freedom when choos | ||||
| ing the 'most appropriate' service endpoint for a particular incoming service re | ||||
| quest. | ||||
| </t> | ||||
| <t> | ||||
| While the move to a service-based model aligns well with the framewo | ||||
| rk of SFC, choosing the most appropriate service instance at runtime requires so | ||||
| -called 're-chaining' of the SFC since the relationships in said SFC are defined | ||||
| through Layer 2 or 3 identifiers, which in turn are likely to be different if t | ||||
| he chosen service instances reside in different parts of the network (e.g., in a | ||||
| regional data center). | ||||
| </t> | ||||
| <t> | ||||
| Hence, when a traffic flow is forwarded over a service chain expressed | ||||
| as an SFC-compliant Service Function Path (SFP), packets in the traffic flow are | ||||
| processed by the various service function instances, with each service function | ||||
| instance applying a service function prior to forwarding the packets to the nex | ||||
| t network node. It is a Service layer concept and can possibly work over any Vir | ||||
| tual network layer and an Underlay network, possibly IP or any Layer 2 technolog | ||||
| y. At the service layer, Service Functions are identified using a path identifie | ||||
| r and an index. Eventually this index is translated to an IP address (or MAC add | ||||
| ress) of the host where the service function is running. Because of this, any ch | ||||
| ange of service function instance is likely to require a change of the path info | ||||
| rmation since either IP address (in the case of changing the execution from one | ||||
| data centre to another) or MAC address will change due to the newly selected ser | ||||
| vice function instance. | ||||
| </t> | ||||
| <t> | ||||
| 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 setup user plane bearers. The connection request may flow throu | ||||
| gh service functions over a service chain in the Control plane, as deployed by n | ||||
| etwork 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 Core Network Slices may exist. A device may access multip | ||||
| le Network Slices simultaneously through a single RAN. The device may provide Ne | ||||
| twork Slice Selection Assistance Information (NSSAI) parameters to the network t | ||||
| o 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), the Network Slice Sel | ||||
| ection Function (NSSF) is in charge of selecting core Network Slice instances. T | ||||
| he Classifier, as described in SFC architecture, may reside in the user terminal | ||||
| or at the eNB. These service functions can be configured to be part of a Servi | ||||
| ce Function Chain. We can also say that some of the configurations of the Servic | ||||
| e Function Path may change at the execution time. For example, the SMF may be re | ||||
| located as user moves and a new SMF may be included in the Service Function Path | ||||
| based on user location. The following diagram in Figure 1 shows the example Ser | ||||
| vice Function Chain described here. | ||||
| </t> | ||||
| <t> | ||||
| <figure anchor="fig-sfc-1" align="center" title="Mapping SFC onto Se | ||||
| rvice Function Execution Points along a Service Function Path"> | ||||
| <artwork align="center"> | ||||
| +------+ +---------+ +-----+ +-----+ | <t> 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. <xref | ||||
| target="fig-sfc-1" format="default"/> shows the example SFC described here. | ||||
| </t> | ||||
| <figure anchor="fig-sfc-1"> | ||||
| <name>Mapping SFC onto Service Function Execution Points along a Service | ||||
| Function Path</name> | ||||
| <artwork align="center" name="" type="" alt=""><![CDATA[+------+ +---- | ||||
| -----+ +-----+ +-----+ | ||||
| | User | | Slice | | | | | | | User | | Slice | | | | | | |||
| | App |-->| Control |->| AMF |-->| SMF |--> | | App |-->| Control |->| AMF |-->| SMF |--> | |||
| | Fn | | Function| | | | | | | Fn | | Function| | | | | | |||
| +------+ +---------+ +-----+ +-----+ | +------+ +---------+ +-----+ +-----+]]></artwork> | |||
| </figure> | ||||
| </section> | ||||
| <section anchor="Bkgnd" numbered="true" toc="default"> | ||||
| <name>Background</name> | ||||
| <t> | ||||
| <xref target="RFC7665" format="default"/> 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. | ||||
| </t> | ||||
| <section anchor="Arch" numbered="true" toc="default"> | ||||
| <name>Relevant Part of SFC Architecture</name> | ||||
| <t> | ||||
| </artwork> | The SFC architecture, as defined in <xref target="RFC7665" | |||
| </figure> | format="default"/>, 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. | ||||
| </t> | ||||
| <t> | ||||
| 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. | ||||
| </t> | ||||
| </section> | ||||
| <section anchor="Challenges" numbered="true" toc="default"> | ||||
| <name>Challenges with Current Framework</name> | ||||
| <t> | ||||
| 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. | ||||
| </t> | ||||
| <t> | ||||
| 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. | ||||
| </t> | ||||
| <t> | ||||
| 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. | ||||
| </t> | </t> | |||
| </section> | ||||
| <section anchor="Bkgnd" title="Background"> | ||||
| <t> | ||||
| <xref target="RFC7665" /> describes an architecture for the specificat | ||||
| ion, creation and ongoing maintenance of Service Function Chains (SFCs). It inc | ||||
| ludes architectural concepts, principles, and components used in the constructio | ||||
| n of composite services through deployment of SFCs. In the following, we outline | ||||
| the parts of this SFC architecture relevant for our proposed extension, followe | ||||
| d by the challenges with this current framework in the light of our example use | ||||
| case. | ||||
| </t> | ||||
| <section anchor="Arch" title="Relevant Part of SFC Architecture"> | ||||
| <t> | <t> | |||
| SFC Architecture, as defined in <xref target="RFC7665" />, desc | ||||
| ribes architectural components such as Service Function (SF), Classifier, and Se | ||||
| rvice Function Forwarder (SFF). It describes the Service Function Path (SFP) as | ||||
| the logical path of an SFC. Forwarding traffic along such SFP is the responsibil | ||||
| ity of the SFF. For this, the SFFs in a network maintain the requisite SFP forwa | ||||
| rding information. Such SFP forwarding information is associated with a service | ||||
| path identifier (SPI) that is used to uniquely identify an SFP. The service fo | ||||
| rwarding state is represented by the Service Index (SI) and enables an SFF to id | ||||
| entify which SFs of a given SFP should be applied, and in what order. The SFF al | ||||
| so has information that allows it to forward packets to the next SFF after apply | ||||
| ing local service functions. | ||||
| </t> | ||||
| <t> | ||||
| The operational steps to forward traffic are then as follows: Tr | ||||
| affic 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 encapsu | ||||
| lation. 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 enca | ||||
| psulates 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. | ||||
| </t> | ||||
| </section> | ||||
| <section anchor="Challenges" title="Challenges with Current Framework"> | ||||
| <t> | ||||
| As outlined in previous section, the Service Function Path defines an | ||||
| ordered sequence of specific Service Functions instances being used for the inte | ||||
| raction between initiator and service functions along the SFP. These service fun | ||||
| ctions are addressed by IP (or any L2/MAC) addresses and defined as next hop inf | ||||
| ormation in the network locator maps of traversing SFF nodes. | ||||
| </t> | ||||
| <t> | ||||
| As outlined in our use case, however, the service provider may want to pr | ||||
| ovision SFC nodes based on dynamically spun up service function instances so tha | ||||
| t these (now virtualized) service functions can be reached in the SFC domain usi | ||||
| ng the SFC underlay layer. | ||||
| </t> | ||||
| <t> | ||||
| Following the original model of SFC, any change in a specific execution p | ||||
| oint for a specific Service Function along the SFP will require a change of the | ||||
| SFP information (since the new service function execution point likely carries d | ||||
| ifferent IP or L2 address information) and possibly even the Next Hop informatio | ||||
| n in SFFs along the SFP. In case the availability of new service function instan | ||||
| ces is rather dynamic (e.g., through the use of container-based virtualization t | ||||
| echniques), the current model and realization of SFC could lead to reducing the | ||||
| flexibility of service providers and increasing the management complexity incurr | ||||
| ed 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) w | ||||
| ill need to go through suitable management cycles. | ||||
| </t> | ||||
| <t> | ||||
| To address these challenges through a suitable solution, we identify the following requirements: | To address these challenges through a suitable solution, we identify the following requirements: | |||
| <list style="symbols"> | </t> | |||
| <t> | <ul spacing="normal"> | |||
| Relations between Service Execution Points MUST be abst | <li> | |||
| racted so that, from an SFP point of view, the Logical Path never changes. | Relations between Service Execution Points <bcp14>MUST< | |||
| </t> | /bcp14> be | |||
| <t> | abstracted so that, from an SFP point of view, the | |||
| Deriving the Service Execution Points from the abstract | Logical Path never changes. | |||
| SFP SHOULD be fast and incur minimum delay. | </li> | |||
| </t> | <li> | |||
| <!-- [rfced] In the following sentence, should RFC 2119 keyword "SHOULD not" be | Deriving the Service Execution Points from the | |||
| "SHOULD NOT"? | abstract SFP <bcp14>SHOULD</bcp14> be fast and incur mi | |||
| nimum delay. | ||||
| </li> | ||||
| Original: | <li> | |||
| Identification of the Service Execution Points SHOULD not use a combination | Identification of the Service Execution Points | |||
| of Layer 2 or Layer 3 mechanisms. | <bcp14>SHOULD NOT</bcp14> use a combination of Layer 2 | |||
| <t> | or Layer 3 | |||
| Identification of the Service Execution Points SHOULD n | mechanisms. | |||
| ot use a combination of Layer 2 or Layer 3 mechanisms. | </li> | |||
| </t> | </ul> | |||
| </list> | <t> | |||
| </t> | The next section outlines a solution to address the issue, allowing for | |||
| <t> | keeping SFC information (represented in its SFP) intact while | |||
| The next section outlines a solution to address the issue, allowing for k | addressing the desired flexibility of the service provider. | |||
| eeping SFC information (represented in its SFP) intact while addressing the desi | </t> | |||
| red flexibility of the service provider. | </section> | |||
| </t> | </section> | |||
| </section> | <section anchor="nop" numbered="true" toc="default"> | |||
| </section> | <name>Name-Based Operation in SFF</name> | |||
| <section anchor="General" numbered="true" toc="default"> | ||||
| <name>General Idea</name> | ||||
| <t> | ||||
| 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 informat | ||||
| ion | ||||
| 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 <xref target="RFC7665" | ||||
| format="default"/>. In the following sections, we outline these two | ||||
| components of our solution. | ||||
| </t> | ||||
| <section anchor="nop" title="Name-Based Operation in SFF"> | <t> | |||
| <section anchor="General" title="General Idea"> | If the next-hop information in the Network Locator Map (NLM) is | |||
| <t> | described using an L2/L3 identifier, the name-based SFF (nSFF) may | |||
| The general idea is two-pronged. Firstly, we elevate the definition of | operate as described for (traditional) SFF, as defined in <xref | |||
| a Service Function Path onto the level of 'name-based interactions' rather than | target="RFC7665" format="default"/>. On the other hand, if the | |||
| limiting SFPs to Layer 3 or Layer 2 information only. Secondly, we extend the o | next-hop information in the NLM is described as a name, then the | |||
| perations of the SFF to allow for forwarding decisions that take into account su | nSFF operates as described in the following sections. | |||
| ch name-based interaction while remaining backward compatible to the current SFC | </t> | |||
| architecture, as defined in <xref target="RFC7665" />. In the following section | <t> | |||
| s, we outline these two components of our solution. | ||||
| </t> | ||||
| <t> | ||||
| If the next hop information in the Network Locator Map (NLM) is descr | ||||
| ibed using L2/L3 identifier, the name-based SFF (nSFF) may operate as described | ||||
| for [traditional] SFF, as defined in <xref target="RFC7665" />. On the other ha | ||||
| nd, if the next hop information in the NLM is described as a name, then the nSFF | ||||
| operates as described in the following sections. | ||||
| </t> | ||||
| <t> | ||||
| In the following sections, we outline the two components of our solut ion. | In the following sections, we outline the two components of our solut ion. | |||
| </t> | </t> | |||
| </section> | </section> | |||
| <section anchor="nsfp" title="Name-Based Service Function Path (nSFP)"> | <section anchor="nsfp" numbered="true" toc="default"> | |||
| <t> | <name>Name-Based Service Function Path (nSFP)</name> | |||
| The existing SFC framework is defined in <xref target="RFC7665" / | <t> | |||
| >. Section 4 outlines that the SFP information is representing path information | The existing SFC framework is defined in <xref | |||
| based on Layer 2 or 3 information, i.e., MAC or IP addresses, causing the aforem | target="RFC7665" format="default"/>. <xref target="Bkgnd" | |||
| entioned frequent adaptations in cases of execution point changes. Instead, we i | format="default"/> outlines that the SFP information is | |||
| ntroduce the notion of a "name-based service function path (nSFP)". | representing path information based on Layer 2 or Layer 3 | |||
| </t> | information, i.e., MAC or IP addresses, causing the | |||
| <t> | aforementioned frequent adaptations in cases of | |||
| In today's networking terms, any identifier can be treated as a name b | execution-point changes. Instead, we introduce the notion of a | |||
| ut we will illustrate the realization of a "Name based SFP" through extended SFF | "name-based Service Function Path (nSFP)". | |||
| operations (see Section 6) based on URIs as names and HTTP as the protocol of e | </t> | |||
| xchanging information. Here, URIs are being used to name for a Service Function | <t> | |||
| along the nSFP. It is to be noted that the Name based SFP approach is not restri | In today's networking terms, any identifier can be treated as a name, | |||
| cted to HTTP (as the protocol) and URIs (as next hop identifier within the SFP). | but we will illustrate the realization of a "Name-based SFP" through | |||
| Other identifiers such as an IP address itself can also be used and are interpr | extended SFF operations (see <xref target="nsfffwd" format="default"/>) | |||
| eted as a 'name' in the nSFP. IP addresses as well as fully qualified domain nam | based on URIs as names and | |||
| es forming complex URIs (uniform resource identifiers), such as www.example.com/ | HTTP as the protocol of exchanging information. Here, URIs are being | |||
| service_name1, are all captured by the notion of 'name' in this document. | 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. | ||||
| </t> | </t> | |||
| <t> | <t> | |||
| Generally, nSFPs are defined as an ordered sequence of the "name" of Ser | Generally, nSFPs are defined as an ordered sequence of the "name" of | |||
| vice Functions (SF) and a typical name-based Service Function Path may look like | SFs, and a typical nSFP may look like: 192.0.x.x -> www.example.com | |||
| : | -> www.example2.com/service1 -> www.example2.com/service2. | |||
| 192.0.x.x -> www.example.com -> www.example2.com/service1 -> www.examp | </t> | |||
| le2.com/service2. | <t> | |||
| </t> | Our use case in <xref target="Use_Case" format="default"/> can then be | |||
| <t> | represented as an ordered named sequence. An example for a session | |||
| Our use case in Section 3 can then be represented as an ordered named se | initiation that involves an authentication procedure, this could look | |||
| quence. An example for a session initiation that involves an authentication proc | like 192.0.x.x -> smf.example.org/session_initiate -> | |||
| edure, this could look like | amf.example.org/auth -> smf.example.org/session_complete -> | |||
| 192.0.x.x -> smf.example.org/session_initiate -> amf.example.org/auth -> | 192.0.x.x. (Note that this example is only a conceptual one since the | |||
| smf.example.org/session_complete -> 192.0.x.x. | exact nature of any future SBA-based exchange of 5G control-plane | |||
| [Note that this example is only a conceptual one, since the exact | functions is yet to be defined by standardization bodies such as | |||
| nature of any future SBA-based exchange of 5G control-plane functions is yet to | 3GPP). | |||
| be defined by standardization bodies such as 3GPP]. | </t> | |||
| </t> | <t> | |||
| <t> | In accordance with our use case in <xref target="Use_Case" format="defau | |||
| In accordance with our use case in Section 3, any of these named service | lt"/>, any of these named | |||
| s can potentially be realized through more than one replicated SF instances. Thi | services can potentially be realized through more than one replicated | |||
| s leads to make dynamic decision on where to send packets along the SAME service | SF instance. This leads to making dynamic decisions on where to send | |||
| function path information, being provided during the execution of the SFC. Thr | packets along the SAME SFP information, being | |||
| ough elevating the SFP onto the notion of name-based interactions, the SFP will | provided during the execution of the SFC. Through elevating the SFP | |||
| remain the same even if those specific execution points change for a specific se | onto the notion of name-based interactions, the SFP will remain the | |||
| rvice interaction. | same even if those specific execution points change for a specific | |||
| </t> | service interaction. | |||
| <t> | </t> | |||
| The following diagram in Figure 2, describes this name-based SFP concept | <t> | |||
| and the resulting mapping of those named interactions onto (possibly) replicate | The following diagram in <xref target="fig-sfc-2" format="default"/> des | |||
| d instances. | cribes this nSFP | |||
| <figure anchor="fig-sfc-2" align="center" title="Mapping SFC ont | concept and the resulting mapping of those named interactions onto | |||
| o Service Function Execution Points along a Service Function Path based on Virtu | (possibly) replicated instances. | |||
| alized Service Function Instance"> | </t> | |||
| <artwork align="center"> | <figure anchor="fig-sfc-2"> | |||
| +---------------------------------------------------------------+ | <name>Mapping SFC onto Service Function Execution Points along a Servi | |||
| |SERVICE LAYER | | ce Function Path Based on Virtualized Service Function Instance</name> | |||
| <artwork align="center" name="" type="" alt=""><![CDATA[ +------------ | ||||
| ---------------------------------------------------+ | ||||
| |Service Layer | | ||||
| | 192.0.x.x --> www.example.com --> www.example2.com --> | | | 192.0.x.x --> www.example.com --> www.example2.com --> | | |||
| | || || | | | || || | | |||
| +----------------------||--------------||-----------------------+ | +----------------------||--------------||-----------------------+ | |||
| || || | || || | |||
| || || | || || | |||
| +----------------------||--------------||-----------------------+ | +----------------------||--------------||-----------------------+ | |||
| | Underlay network \/ \/ | | |Underlay Network \/ \/ | | |||
| | +--+ +--+ +--+ +--+ +--+ +--+ | | | +--+ +--+ +--+ +--+ +--+ +--+ | | |||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |||
| | +--+ +--+ +--+ +--+ +--+ +--+ | | | +--+ +--+ +--+ +--+ +--+ +--+ | | |||
| | Compute and Compute and | | | Compute and Compute and | | |||
| | storage nodes storage nodes | | | storage nodes storage nodes | | |||
| +---------------------------------------------------------------+ | +---------------------------------------------------------------+]]></artwork> | |||
| </figure> | ||||
| </artwork> | </section> | |||
| </figure> | <section anchor="nnlm" numbered="true" toc="default"> | |||
| </t> | <name>Name-Based Network Locator Map (nNLM)</name> | |||
| </section> | <t> | |||
| <section anchor="nnlm" title="Name-Based Network Locator Map (nNLM)"> | In order to forward a packet within an nSFP, we need to | |||
| <t> | extend the NLM as defined in <xref target="RFC8300" format="default"/> | |||
| In order to forward a packet within a name-based SFP, we need to extend | with the ability to consider name relations based on URIs as well as | |||
| the network locator map as defined in <xref target="RFC8300" /> with the ability | high-level transport protocols such as HTTP for means of SFC packet | |||
| to consider name relations based on URIs as well as high-level transport protoc | forwarding. Another example for SFC packet forwarding could be that of | |||
| ols such as HTTP for means of SFC packet forwarding. Another example for SFC pac | Constrained Application Protocol (CoAP). | |||
| ket forwarding could be that of CoAP. | </t> | |||
| </t> | <t> | |||
| <t> | The extended NLM or name-based Network Locator Map | |||
| The extended Network Locator Map or name-based Network Locator Map (nNL | (nNLM) is shown in <xref target="fig-sfc-3" format="default"/> as an ex | |||
| M) is shown in Figure 3 as an example for www.example.com being part of the nSFP | ample for www.example.com being | |||
| . Such extended nNLM is stored at each SFF throughout the SFC domain with suitab | part of the nSFP. Such extended nNLM is stored at each SFF throughout | |||
| le information populated to the nNLM during the configuration phase. | the SFC domain with suitable information populated to the nNLM during | |||
| </t> | the configuration phase. | |||
| <t> | </t> | |||
| <figure anchor="fig-sfc-3" align="center" title="Name-Based Netw | ||||
| ork Locator Map"> | ||||
| <artwork align="center"> | ||||
| +------+------+---------------------+-----------------------------+ | ||||
| | 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 | | ||||
| +------+------+---------------------+-----------------------------+ | ||||
| </artwork> | ||||
| </figure> | ||||
| </t> | ||||
| <t> | ||||
| Alternatively, the extended network locator map may be defined with i | ||||
| mplicit name information rather than explicit URIs as in Figure 3. In the exampl | ||||
| e of Figure 4 below, the next hop is represented as a generic HTTP service witho | ||||
| ut a specific URI being identified in the extended network locator map. 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 inf | ||||
| ormation to determine the destination host/service. | ||||
| </t> | ||||
| <t> | ||||
| <figure anchor="fig-sfc-4" align="center" title="Name-based Netw | ||||
| ork Locator Map with Implicit Name information"> | ||||
| <artwork align="center"> | ||||
| +------+------+---------------------+-----------------------------+ | ||||
| | 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 | | ||||
| +------+------+---------------------+-----------------------------+ | ||||
| </artwork> | <table anchor="fig-sfc-3"> | |||
| </figure> | <name>Name-Based Network Locator Map</name> | |||
| </t> | <thead> | |||
| <tr> | ||||
| <th>SPI</th> | ||||
| <th>SI</th> | ||||
| <th>Next Hop(s)</th> | ||||
| <th>Transport Encapsulation (TE)</th> | ||||
| </tr> | ||||
| </thead> | ||||
| <tbody> | ||||
| <tr> | ||||
| <td>10</td> | ||||
| <td>255</td> | ||||
| <td>192.0.2.1</td> | ||||
| <td>VXLAN-gpe</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td>10</td> | ||||
| <td>254</td> | ||||
| <td>198.51.100.10</td> | ||||
| <td>GRE</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td>10</td> | ||||
| <td>253</td> | ||||
| <td>www.example.com</td> | ||||
| <td>HTTP</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td>40</td> | ||||
| <td>251</td> | ||||
| <td>198.51.100.15</td> | ||||
| <td>GRE</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td>50</td> | ||||
| <td>200</td> | ||||
| <td>01:23:45:67:89:ab</td> | ||||
| <td>Ethernet</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td>15</td> | ||||
| <td>212</td> | ||||
| <td>Null (end of path)</td> | ||||
| <td>None</td> | ||||
| </tr> | ||||
| </tbody> | ||||
| </table> | ||||
| </section> | <t> | |||
| Alternatively, the extended NLM may be defined with implicit name | ||||
| information rather than explicit URIs as in <xref | ||||
| target="fig-sfc-3" format="default"/>. In the example of <xref | ||||
| target="fig-sfc-4" format="default"/>, 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. | ||||
| </t> | ||||
| <section anchor="nsff" title="Name-Based Service Function Forwarder (nS | <table anchor="fig-sfc-4"> | |||
| FF)"> | <name>Name-Based Network Locator Map with Implicit Name Information</name> | |||
| <t> | <thead> | |||
| It is desirable to extend the SFF of the SFC underlay to handle nSFP | <tr> | |||
| s transparently and without the need to insert any service function into the nSF | <th>SPI</th> | |||
| P. Such extended name-based SFF would then be responsible for forwarding a packe | <th>SI</th> | |||
| t in the SFC domain as per the definition of the (extended) nSFP. | <th>Next Hop(s)</th> | |||
| </t> | <th>Transport Encapsulation (TE)</th> | |||
| <t> | </tr> | |||
| In our exemplary realization for an extended SFF, the solution described | </thead> | |||
| in this document uses HTTP as the protocol of forwarding SFC packets to the ne | <tbody> | |||
| xt (name-based) hop in the nSFP. The URI in the HTTP transaction are the names i | <tr> | |||
| n our nSFP information, which will be used for name based forwarding. | <td>10</td> | |||
| </t> | <td>255</td> | |||
| <t> | <td>192.0.2.1</td> | |||
| Following our reasoning so far, HTTP requests (and more specifically the | <td>VXLAN-gpe</td> | |||
| plain text encoded requests above) are the equivalent of Packets that enter the | </tr> | |||
| SFC domain. In the existing SFC framework, typically an IP payload is assumed t | <tr> | |||
| o be a packet entering the SFC domain. This packet is forwarded to destination n | <td>10</td> | |||
| odes using the L2 encapsulation. Any layer 2 network can be used as an underlay | <td>254</td> | |||
| network. This notion is now extended to packets being possibly part of a entire | <td>198.51.100.10</td> | |||
| higher layer application, such as HTTP requests. The handling of any intermediat | <td>GRE</td> | |||
| e layers such as TCP, IP is left to the realization of the (extended) SFF operat | </tr> | |||
| ions towards the next (named) hop. For this, we will first outline the general l | <tr> | |||
| ifecycle of an SFC packet in the following subsection, followed by two examples | <td>10</td> | |||
| for determining next hop information in Section 6.2.3, finalized by a layered vi | <td>253</td> | |||
| ew on the realization of the nSFF in Section 6.2.4. | <td>HTTP Service</td> | |||
| </t> | <td>HTTP</td> | |||
| </section> | </tr> | |||
| <section anchor="arch" title="High-Level Architecture"> | <tr> | |||
| <t> | <td>40</td> | |||
| <td>251</td> | ||||
| <td>198.51.100.15</td> | ||||
| <td>GRE</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td>50</td> | ||||
| <td>200</td> | ||||
| <td>01:23:45:67:89:ab</td> | ||||
| <td>Ethernet</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td>15</td> | ||||
| <td>212</td> | ||||
| <td>Null (end of path)</td> | ||||
| <td>None</td> | ||||
| </tr> | ||||
| </tbody> | ||||
| </table> | ||||
| <figure anchor="fig-sfc-5" align="center" title="High-level arch | </section> | |||
| itecture"> | <section anchor="nsff" numbered="true" toc="default"> | |||
| <artwork align="center"> | <name>Name-Based Service Function Forwarder (nSFF)</name> | |||
| <t> | ||||
| 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. | ||||
| </t> | ||||
| <t> | ||||
| 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. | ||||
| </t> | ||||
| <t> | ||||
| 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 realizati | ||||
| on | ||||
| 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 <xref target="localfwd" format="default"/>, fini | ||||
| shed up by a layered view on | ||||
| the realization of the nSFF in <xref target="httpresp" format="default"/ | ||||
| >. | ||||
| </t> | ||||
| </section> | ||||
| <section anchor="arch" numbered="true" toc="default"> | ||||
| <name>High-Level Architecture</name> | ||||
| <figure anchor="fig-sfc-5"> | ||||
| <name>High-Level Architecture</name> | ||||
| <artwork align="center" name="" type="" alt=""><![CDATA[ | ||||
| +----------+ | +----------+ | |||
| | SF1 | +--------+ +------+ | | SF1 | +--------+ +------+ | |||
| | instance |\ | NR | | SF2 | | | instance |\ | NR | | SF2 | | |||
| +----------+ \ +--------+ +------+ | +----------+ \ +--------+ +------+ | |||
| \ || || | \ || || | |||
| +------------+ \ +-------+ +---------+ +---------+ +-------+ | +------------+ \ +-------+ +---------+ +---------+ +-------+ | |||
| | Classifier |---| nSFF1 |---|Forwarder|---|Forwarder|---| nSFF2 | | | Classifier |---| nSFF1 |---|Forwarder|---|Forwarder|---| nSFF2 | | |||
| +------------+ +-------+ +---------+ +---------+ +-------+ | +------------+ +-------+ +---------+ +---------+ +-------+ | |||
| || | || | |||
| +----------+ | +----------+ | |||
| | Boundary | | | Boundary | | |||
| | node | | | node | | |||
| +----------+ | +----------+]]></artwork | |||
| > | ||||
| </artwork> | </figure> | |||
| </figure> | <t> | |||
| The high-level architecture for name-based operation shown in | ||||
| <xref target="fig-sfc-5" format="default"/> is very similar to the | ||||
| SFC architecture as described in <xref target="RFC7665" | ||||
| format="default"/>. Two new functions are introduced, as shown in | ||||
| the above diagram: namely, the nSFF and the Name Resolver (NR). | ||||
| </t> | </t> | |||
| <t> | <t> | |||
| The high-level architecture for name based operation shown in Figure | The nSFF is an extension of the existing SFF and is capable of | |||
| 5 is very similar to the SFC architecture, as described in <xref target="RFC7665 | processing SFC packets based on nNLM information, determining | |||
| " />. Two new functions are introduced, as shown in the above diagram, namely th | the next SF where the packet should be forwarded, and the | |||
| e name-based Service Function Forwarder (nSFF) and the Name Resolver (NR). | required transport encapsulation (TE). Like standard SFF operatio | |||
| </t> | n, | |||
| <t> | it adds TE to the SFC packet and forwards | |||
| nSFF (name-based Service Function Forwarder) is an extension of t | it. | |||
| he existing SFF and is capable of processing SFC packets based on name-based net | </t> | |||
| work locator map (nNLM) information, determining the next SF, where the packet s | <t> | |||
| hould be forwarded and the required transport encapsulation. Like standard SFF o | The NR is a new functional component, capable of | |||
| peration, it adds transport encapsulation to the SFC packet and forwards it. | identifying the execution endpoints, where a "named SF" is | |||
| </t> | running, triggered by suitable resolution requests sent by the | |||
| <t> | nSFF. Though this is similar to DNS function, it is not | |||
| The Name Resolver is a new functional component, capable of ident | same. It does not use DNS protocols or data records. A new | |||
| ifying the execution end points, where a "named SF" is running, triggered by sui | procedure to determine the suitable routing/forwarding | |||
| table resolution requests sent by the nSFF. Though this is similar to DNS functi | information towards the nSFF serving the next | |||
| on, but it is not same. It does not use DNS protocols or data records. A new pro | hop of the SFP is used. The details are | |||
| cedure to determine the suitable routing/forwarding information towards the Nsff | described later. | |||
| (name-based SFF) serving the next hop of the SFP (Service Function Path) is use | </t> | |||
| d. The details is described later. | <t> | |||
| </t> | The other functional components, such as classifier and SF, are the same | |||
| <t> | as | |||
| The other functional components such as Classifier, SF are same as descr | described in SFC architecture, as defined in <xref target="RFC7665" form | |||
| ibed in SFC architecture, as defined in <xref target="RFC7665" />, while the For | at="default"/>, while the Forwarders shown in the above diagram are traditional | |||
| warders shown in the above diagram are traditional Layer 2 switches. | Layer 2 switches. | |||
| </t> | </t> | |||
| </section> | </section> | |||
| <section anchor="steps" numbered="true" toc="default"> | ||||
| <section anchor="steps" title="Operational Steps"> | <name>Operational Steps</name> | |||
| <t> | <t> | |||
| In the proposed solution, the operations are realized by the nam | In the proposed solution, the operations are realized by the | |||
| e-based SFF, called nSFF. We utilize the high-level architecture in Figure 5 to | name-based SFF, called "nSFF". We utilize the high-level | |||
| describe the traversal between two service function instances of an nSFP-based t | architecture in <xref target="fig-sfc-5" format="default"/> | |||
| ransactions in an example chain of : 192.0.x.x -> SF1 (www.example.com) -> SF2 | to describe the traversal between two SF | |||
| (www.example2.com) -> SF3 -> ... Service Function 3 (SF3)is assumed to be a cla | instances of an nSFP-based transaction in an example chain | |||
| ssical Service Function, hence existing SFC mechanisms can be used to reach it a | of: 192.0.x.x -> SF1 (www.example.com) -> SF2 | |||
| nd will not be considered in this example. | (www.example2.com) -> SF3 -> ... | |||
| </t> | </t> | |||
| <t> | <t>Service Function 3 (SF3) is assumed to be a classical SF; | |||
| According to the SFC lifecycle, as defined in <xref target="RFC7665" /> | hence, existing SFC mechanisms can be used to reach it and will not be | |||
| , based on our example chain above, the traffic originates from a Classifier or | considered in this example. | |||
| 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. | ||||
| </t> | </t> | |||
| <t> | <t> | |||
| <list style="symbols"> | According to the SFC lifecycle, as defined in <xref target="RFC7665" | |||
| <t> | format="default"/>, based on our example chain above, the traffic | |||
| Step 1: At nSFF1 the following nNLM is assumed | originates from a classifier or another SFF on the left. The traffic | |||
| <figure anchor="fig-sfc-6" align="center" title="nNLM at nSF | is processed by the incoming nSFF1 (on the left side) through the | |||
| F1"> | following steps. The traffic exits at nSFF2. | |||
| <artwork align="center"> | </t> | |||
| <ol spacing="normal" type="Step %d:" group="steps" indent="9"> | ||||
| <li anchor="step1"> | ||||
| +------+------+---------------------+----------------------------+ | At nSFF1, the following nNLM is assumed:</li> | |||
| | 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 | | ||||
| +------+------+---------------------+----------------------------+ | ||||
| </artwork> | </ol> | |||
| </figure> | <table anchor="fig-sfc-6"> | |||
| <name>nNLM at nSFF1</name> | ||||
| <thead> | ||||
| <tr> | ||||
| <th>SPI</th> | ||||
| <th>SI</th> | ||||
| <th>Next Hop(s)</th> | ||||
| <th>Transport Encapsulation (TE)</th> | ||||
| </tr> | ||||
| </thead> | ||||
| <tbody> | ||||
| <tr> | ||||
| <td>10</td> | ||||
| <td>255</td> | ||||
| <td>192.0.2.1</td> | ||||
| <td>VXLAN-gpe</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td>10</td> | ||||
| <td>254</td> | ||||
| <td>198.51.100.10</td> | ||||
| <td>GRE</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td>10</td> | ||||
| <td>253</td> | ||||
| <td>www.example.com</td> | ||||
| <td>HTTP</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td>10</td> | ||||
| <td>252</td> | ||||
| <td>www.example2.com</td> | ||||
| <td>HTTP</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td>40</td> | ||||
| <td>251</td> | ||||
| <td>198.51.100.15</td> | ||||
| <td>GRE</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td>50</td> | ||||
| <td>200</td> | ||||
| <td>01:23:45:67:89:ab </td> | ||||
| <td>Ethernet</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td>15</td> | ||||
| <td>212</td> | ||||
| <td>Null (end of path)</td> | ||||
| <td>None</td> | ||||
| </tr> | ||||
| </tbody> | ||||
| </table> | ||||
| <ol spacing="normal" type="Step %d:" group="steps" indent="9"> | ||||
| <li anchor="step2">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). | ||||
| </li> | ||||
| <li anchor="step3"> | ||||
| nSFF1 then processes the Network Service Header (NSH) | ||||
| information, as defined in <xref target="RFC8300" | ||||
| format="default"/>, to identify the next SF at the nSFP | ||||
| level by mapping the NSH information to the appropriate | ||||
| entry in its nNLM (see <xref target="fig-sfc-6" | ||||
| format="default"/>) based on the provided SPI/SI | ||||
| information in the NSH (see <xref target="Bkgnd" | ||||
| format="default"/>) 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 <xref target="nnlm" format="default"/>. | ||||
| </li> | ||||
| </t> | <li anchor="step4"> | |||
| <t>Step 2: nSFF1 removes the previous transport encapsulation | The SF1 instance then processes the received SFC packet | |||
| (TE) for any traffic originating from another SFF or classifier (traffic from an | according to its service semantics and modifies the NSH by | |||
| SF instance does not carry any TE and is therefore directly processed at the nS | setting SPI = 10 and SI = 252 for forwarding the packet along the | |||
| FF). | SFP. It then forwards the SFC packet to its local nSFF, i.e., | |||
| </t> | nSFF1. | |||
| <t> | </li> | |||
| Step 3: nSFF1 then processes the Network Service Header (NSH) | <li anchor="step5">nSSF1 processes the NSH of the SFC packet again, | |||
| information, as defined in <xref target="RFC8300" />, to identify the next SF | now with the NSH modified (SPI = 10, SI = 252) by the SF1 | |||
| at the nSFP level by mapping the NSH information to the appropriate entry in its | instance. It retrieves the next-hop information from its | |||
| nNLM (see Figure 6) based on the provided SPI/SI information in the NSH (see Se | nNLM in <xref target="fig-sfc-6" format="default"/> to be www. | |||
| ction 4) in order to determine the name-based identifier of the next hop SF. Wit | example2.com. Due to this SF | |||
| h such nNLM in mind, the nSFF searches the map for SPI = 10 and SI = 253. It ide | not being locally available, the nSFF consults any locally | |||
| ntifies the next hop as = www.example.com and HTTP as the protocol to be used. G | available information regarding routing/forwarding towards | |||
| iven the next hop resides locally, the SFC packet is forwarded to the SF1 instan | a suitable nSFF that can serve this next hop. | |||
| ce of www.example.com. Note that the next hop could also be identified from the | </li> | |||
| provided HTTP request, if the next hop information was identified as a generic H | <li anchor="step6">If such information exists, the Packet (plus the | |||
| TTP service, as defined in Section 5.3. | NSH information) is marked to be sent towards the nSFF serving the | |||
| </t> | next hop based on such information in <xref target="step8" | |||
| <t> | format="none">Step 8</xref>.</li> | |||
| Step 4: The SF1 instance then processes the received SFC packet acc | <li anchor="step7">If such information does not exist, nSFF1 | |||
| ording to its service semantics and modifies the NSH by setting SPI = 10, SI = 2 | consults the NR to determine the suitable routing/forwarding | |||
| 52 for forwarding the packet along the SFP. It then forwards the SFC packet to i | information towards the identified nSFF serving the next hop of the | |||
| ts local nSFF, i.e., nSFF1. | SFP. For future SFC packets towards this next hop, such resolved | |||
| </t> | information may be locally cached, avoiding contacting the NR for | |||
| <t>Step 5: nSSF1 processes the NSH of the SFC packet again, no | every SFC packet forwarding. The packet is now marked to be sent via | |||
| w with the NSH modified (SPI = 10, SI = 252) by the SF1 instance. It retrieves t | the network in <xref target="step8" format="none">Step 8</xref>. | |||
| he next hop information from its nNLM in Figure 6, to be www.example2.com. Due t | </li> | |||
| o this SF not being locally available, the nSFF consults any locally available i | <li anchor="step8">Utilizing the forwarding information | |||
| nformation regarding routing/forwarding towards a suitable nSFF that can serve t | determined in Steps <xref target="step6" | |||
| his next hop. | format="none">6</xref> or <xref target="step7" | |||
| </t> | format="none">7</xref>, nSFF1 adds the suitable TE for | |||
| <t>Step 6: If such information exists, the Packet (plus the NS | the SFC packet before forwarding via the forwarders in the network | |||
| H information) is marked to be sent towards the nSFF serving the next hop based | towards the next nSFF22.</li> | |||
| on such information in step 8.</t> | ||||
| <t>Step 7: If such information does not exist, nSFF1 consults the Nam | ||||
| e Resolver (NR) to determine the suitable routing/forwarding information towards | ||||
| the identified nSFF serving the next hop of the SFP. For future SFC packets to | ||||
| wards this next hop, such resolved information may be locally cached, avoiding t | ||||
| o contact the Name Resolver for every SFC packet forwarding. The packet is now m | ||||
| arked to be sent via the network in step 8. | ||||
| </t> | ||||
| <t>Step 8: Utilizing the forwarding information determined in steps 6 | ||||
| or 7, nSFF1 adds the suitable transport encapsulation (TE) for the SFC packet b | ||||
| efore forwarding via the forwarders in the network towards the next nSFF22.</t> | ||||
| <t>Step 9: When the Packet (+NSH+TE) arrives at the outgoing nSFF2, i | ||||
| .e., the nSFF serving the identified next hop of the SFP, removes the TE and pro | ||||
| cesses the NSH to identify the next hop information. At nSFF2 the nNLM in Figure | ||||
| 7 is assumed. Based on this nNLM and NSH information where SPI = 10 and SI = 25 | ||||
| 2, nSFF2 identifies the next SF as www.example2.com. | ||||
| <figure anchor="fig-sfc-7" align="center" title="nNLM at SFF | ||||
| 2"> | ||||
| <artwork align="center"> | ||||
| +------+------+---------------------+-----------------------------+ | <li anchor="step9"> | |||
| | SPI | SI | Next Hop(s) | Transport Encapsulation (TE)| | 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 | |||
| | 10 | 252 | www.example2.com | HTTP | | nSFF2 the nNLM in <xref target="fig-sfc-7" format="default"/> is | |||
| | | | | | | assumed. Based on this nNLM and NSH information where SPI = 10 and | |||
| | 40 | 251 | 198.51.100.15 | GRE | | SI = 252, nSFF2 identifies the next SF as www.example2.com. | |||
| | | | | | | </li></ol> | |||
| | 50 | 200 | 01:23:45:67:89:ab | Ethernet | | ||||
| | | | | | | ||||
| | 15 | 212 | Null (end of path) | None | | ||||
| +------+------+---------------------+-----------------------------+ | ||||
| </artwork> | <table anchor="fig-sfc-7"> | |||
| </figure> | <name>nNLM at SFF2</name> | |||
| </t> | <thead> | |||
| <t>Step 10: If the next hop is locally registered at the nSFF, | <tr> | |||
| it forwards the packet (+NSH) to the service function instance, using suitable | <th>SPI</th> | |||
| IP/MAC methods for doing so.</t> | <th>SI</th> | |||
| <t>Step 11: Otherwise, the outgoing nSFF adds a new TE information to | <th>Next Hop(s)</th> | |||
| the packet and forwards the packet (+NSH+TE) to the next SFF or boundary node, | <th>Transport Encapsulation (TE)</th> | |||
| as shown in Figure 7.</t> | </tr> | |||
| </list> | </thead> | |||
| </t> | <tbody> | |||
| </section> | <tr> | |||
| </section> | <td>10</td> | |||
| <td>252</td> | ||||
| <td>www.example2.com</td> | ||||
| <td>HTTP</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td>40</td> | ||||
| <td>251</td> | ||||
| <td>198.51.100.15</td> | ||||
| <td>GRE</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td>50</td> | ||||
| <td>200</td> | ||||
| <td>01:23:45:67:89:ab</td> | ||||
| <td>Ethernet</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td>15</td> | ||||
| <td>212</td> | ||||
| <td>Null (end of path)</td> | ||||
| <td>None</td> | ||||
| </tr> | ||||
| </tbody> | ||||
| </table> | ||||
| <section anchor="nsfffwd" title="nSFF Forwarding Operations"> | <ol spacing="normal" type="Step %d:" group="steps" | |||
| <t> | indent="9" start="10"> | |||
| This section outlines the realization of various nSFF forwarding | <li anchor="step10">If the next hop is locally registered at the | |||
| operations in Section 5.6. Although the operations in Section 5 utilize the not | nSFF, it forwards the packet (+NSH) to the SF | |||
| ion of name-based transactions in general, we exemplify the operations here in S | instance using suitable IP/MAC methods for doing so.</li> | |||
| ection 5 specifically for HTTP-based transactions to ground our description into | ||||
| a specific protocol for such name-based transaction. We will refer to the vario | ||||
| us steps in each of the following sub-sections. | ||||
| </t> | ||||
| <section anchor="proto" title="nSFF Protocol Layers"> | ||||
| <t> | ||||
| Figure 8 shows the protocol layers, based on the high-level arch | ||||
| itecture in Figure 5. | ||||
| </t> | ||||
| <t> | ||||
| <figure anchor="fig-sfc-8" align="center" title="Protocol layers"> | ||||
| <artwork align="center"> | ||||
| +-------+ +------+----+ +----+-----+ | <li anchor="step11">If the next hop is not locally registered at the n | |||
| SFF, | ||||
| 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 <xref target="fig-sfc-7" format="default"/>.</li> | ||||
| </ol> | ||||
| </section> | ||||
| </section> | ||||
| <section anchor="nsfffwd" numbered="true" toc="default"> | ||||
| <name>nSFF Forwarding Operations</name> | ||||
| <t> | ||||
| This section outlines the realization of various nSFF | ||||
| forwarding operations in <xref target="steps" format="default"/> | ||||
| . Although the | ||||
| operations in <xref target="nop" format="default"/> utilize the | ||||
| notion of | ||||
| name-based transactions in general, we exemplify the | ||||
| operations here in <xref target="nop" format="default"/> specifi | ||||
| cally 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. | ||||
| </t> | ||||
| <section anchor="proto" numbered="true" toc="default"> | ||||
| <name>nSFF Protocol Layers</name> | ||||
| <t> | ||||
| <xref target="fig-sfc-8" format="default"/> shows the protocol layers based | ||||
| on the high-level architecture in <xref target="fig-sfc-5" format="default"/>. | ||||
| </t> | ||||
| <figure anchor="fig-sfc-8"> | ||||
| <name>Protocol Layers</name> | ||||
| <artwork align="center" name="" type="" alt=""><![CDATA[+-------+ +-- | ||||
| ----+----+ +----+-----+ | ||||
| |App | | | | +--------+ | | | | |App | | | | +--------+ | | | | |||
| |HTTP | |--------> | | NR | |nSFF----->|-- | |HTTP | |--------> | | NR | |nSFF----->|-- | |||
| |TCP |->| TCP |nSFF| +---/\---+ | | TCP | | | |TCP |->| TCP |nSFF| +---/\---+ | | TCP | | | |||
| |IP | | IP | | || | | IP | | | |IP | | IP | | || | | IP | | | |||
| +-------+ +------+----+ +---------+ +---------+ +----------+ | | +-------+ +------+----+ +---------+ +---------+ +----------+ | | |||
| | L2 | | L2 |->|Forwarder|-->|Forwarder|-->| L2 | | | | L2 | | L2 |->|Forwarder|-->|Forwarder|-->| L2 | | | |||
| +-------+ +------+----+ +---------+ +---------+ +----------+ | | +-------+ +------+----+ +---------+ +---------+ +----------+ | | |||
| SF1 nSFF1 nSFF2 | | SF1 nSFF1 nSFF2 | | |||
| +-------+ | | +-------+ | | |||
| | App |/ | | | App |/ | | |||
| | HTTP | -----------+ | | HTTP | -----------+ | |||
| | TCP |\ | | TCP |\ | |||
| | IP | | | IP | | |||
| | L2 | | | L2 | | |||
| +-------+ | +-------+ | |||
| SF2 | SF2]]></artwork> | |||
| </figure> | ||||
| </artwork> | <t> | |||
| </figure> | The nSFF component here is shown as implementing a full | |||
| </t> | incoming/outgoing TCP/IP protocol stack towards the local SFs, | |||
| <t> | while implementing the nSFF-NR and nSFF-nSFF protocols based on | |||
| The nSFF component here is shown as implementing a full incoming/out | the descriptions in <xref target="localfwd" format="default"/>. | |||
| going TCP/IP protocol stack towards the local service functions, while implement | </t> | |||
| ing the nSFF-NR and nSFF-nSFF protocols based on the descriptions in Section 6.2 | <t> | |||
| .3. | For the exchange of HTTP-based SF transactions, | |||
| </t> | the nSFF terminates incoming TCP connections as well as | |||
| <t> | outgoing TCP connections to local SFs, e.g., the TCP | |||
| For the exchange of HTTP-based service function transactions, th | connection from SF1 terminates at nSFF1, and nSFF1 may store | |||
| e nSFF terminates incoming TCP connections from as well as outgoing TCP connecti | the connection information such as socket information. It | |||
| ons to local SFs, e.g., the TCP connection from SF1 terminates at nSFF1, and nSF | also maintains the mapping information for the HTTP request | |||
| F1 may store the connection information, such as socket information. It also mai | such as originating SF, destination SF, and socket ID. nSFF1 | |||
| ntains the mapping information for the HTTP request such as originating SF, dest | may implement sending keep-alive messages over the socket to | |||
| ination SF and socket ID. nSFF1 may implement sending keep-alive messages over t | maintain the connection to SF1. Upon arrival of an HTTP | |||
| he socket to maintain the connection to SF1. Upon arrival of an HTTP request fro | request from SF1, nSFF1 extracts the HTTP Request and | |||
| m SF1, nSFF1 extracts the HTTP Request and forwards it towards the next node, as | forwards it towards the next node as outlined in <xref target="n | |||
| outlined in Section 6.2. Any returning response is mapped onto the suitable ope | sffoperation" format="default"/>. Any returning response is mapped onto the suit | |||
| n socket (for the original request) and send towards SF1. | able open | |||
| </t> | socket (for the original request) and sent towards SF1. | |||
| <t> | </t> | |||
| At the outgoing nSFF2, the destination SF2/Host is identified from t | <t> | |||
| he HTTP request message. If no TCP connection exists to the SF2, a new TCP conne | At the outgoing nSFF2, the destination SF2/Host is identified | |||
| ction is opened towards the destination SF2 and the HTTP request is sent over sa | from the HTTP request message. If no TCP connection exists to the | |||
| id TCP connection. The nSFF2 may also save the TCP connection information (such | SF2, a new TCP connection is opened towards the destination SF2 | |||
| as socket information) and maintain the mapping of the socket information to the | and the HTTP request is sent over said TCP connection. The nSFF2 | |||
| destination SF2. When an HTTP response is received from SF2 over the TCP connec | may also save the TCP connection information (such as socket | |||
| tion, nSFF2 extracts the HTTP response, which is forwarded to the next node. nSF | information) and maintain the mapping of the socket information | |||
| F2 may maintain the TCP connection through keep-alive messages. | 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. | ||||
| </t> | ||||
| </section> | ||||
| <section anchor="nsffoperation" title="nSFF Operations"> | ||||
| <t> | ||||
| In this section, we present three key aspects of operations for the re | ||||
| alization 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 loca | ||||
| l SFs (for step 3 and 4 as well as 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) f | ||||
| or 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 | ||||
| others issues. | ||||
| </t> | </t> | |||
| <section anchor="nsfnr" title="Forwarding between nSFFs and nSFF- | </section> | |||
| NR"> | <section anchor="nsffoperation" numbered="true" toc="default"> | |||
| <t> | <name>nSFF Operations</name> | |||
| Forwarding between the distributed nSFFs as well as between nSFF and N | <t> | |||
| R is realized over the operator network via a path-based approach. A path-based | In this section, we present three key aspects of operations for the | |||
| approach utilizes path information provided by the source of the packet for forw | realization of the steps in <xref target="steps" format="default"/>, n | |||
| arding said packet in the network. This is similar to segment routing albeit dif | amely, (i) the registration | |||
| fering in the type of information provided for such source-based forwarding, as | of local SFs (for <xref target="step3" format="none">Step 3</xref> in | |||
| described in this section. In this approach, the forwarding information to a rem | <xref target="steps"/>), (ii) the forwarding of SFC | |||
| ote nSFF or the NR is defined as a 'path identifier' (pathID) of a defined lengt | packets to and from local SFs (for Steps <xref | |||
| h where said "Length" field indicates the full pathID length. The payload of the | target="step3" format="none">3</xref>, <xref target="step4" | |||
| packet is defined by the various operations outlined in the following sub-secti | format="none">4</xref>, and <xref target="step10" format="none">10</xre | |||
| ons, resulting in an overall packet being transmitted. With this, the generic fo | f> in | |||
| rwarding format (GFF) for transport over the operator network is defined in Figu | <xref target="steps" format="default"/>), (iii) the | |||
| re 9 with the length field defining the length of the pathID provided. | forwarding to a remote SF (for Steps <xref target="step5" | |||
| format="none">5</xref>, <xref target="step6" | ||||
| format="none">6</xref>, and <xref target="step7" | ||||
| format="none">7</xref> in <xref target="steps"/>) and to the NR as well | ||||
| as (iv) for the lookup | ||||
| of a suitable remote SF (for <xref target="step7" | ||||
| format="none">Step 7</xref> in <xref target="steps" format="default"/>) | ||||
| . We also cover | ||||
| aspects of maintaining local lookup information for reducing lookup | ||||
| latency and other issues. | ||||
| </t> | </t> | |||
| <t> | ||||
| <figure anchor="fig-sfc-9" align="center" title="Generic Forwa | ||||
| rding Format(GFF)"> | ||||
| <artwork align="center"> | ||||
| <section anchor="nsfnr" numbered="true" toc="default"> | ||||
| <name>Forwarding between nSFFs and nSFF-NRs</name> | ||||
| <t> | ||||
| 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 <xref target="fig-sfc-9" format="defaul | ||||
| t"/> with the length field | ||||
| defining the length of the pathID provided. | ||||
| </t> | ||||
| <figure anchor="fig-sfc-9"> | ||||
| <name>Generic Forwarding Format (GFF)</name> | ||||
| <artwork align="center" name="" type="" alt=""><![CDATA[ | ||||
| +---------+-----------------+------------------------//------------+ | +---------+-----------------+------------------------//------------+ | |||
| | | | // | | | | | // | | |||
| | Length | Path ID | Payload // | | | Length | Path ID | Payload // | | |||
| |(12 bit) | | // | | |(12 bits)| | // | | |||
| +---------+-----------------+--------------------//----------------+ | +---------+-----------------+--------------------//----------------+]]></artwork | |||
| > | ||||
| </figure> | ||||
| <ul spacing="normal"> | ||||
| <li> | ||||
| Length (12 bits): Defines the length of the pathID, i.e., up to 4096 | ||||
| bits | ||||
| </li> | ||||
| <li> | ||||
| Path ID: Variable-length bit field derived from | ||||
| IPv6 source and destination address | ||||
| </li> | ||||
| </ul> | ||||
| </artwork> | ||||
| </figure> | ||||
| </t> | ||||
| <t> | ||||
| <list style="symbols"> | ||||
| <t> | <t> | |||
| Length (12 bits): Defines the length of the pathID, i.e., up to 4096 | For the pathID information, solutions such as those in <xref | |||
| bits | target="Reed2016" format="default"/> can be used. Here, the | |||
| </t> | IPv6 source and destination addresses are used to realize a | |||
| <t> | so-called path-based forwarding from the incoming to the | |||
| Path ID (): Variable length field, Bit field derived from IPv6 | outgoing nSFF or the NR. The forwarders in <xref | |||
| source and destination address | target="fig-sfc-8" format="default"/> are realized via SDN | |||
| </t> | (software-defined networking) switches, implementing an | |||
| AND/CMP operation based on arbitrary wildcard matching over | ||||
| the IPv6 source and destination addresses as outlined in | ||||
| <xref target="Reed2016" format="default"/>. 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 <xref target="fig-sfc-8" | ||||
| format="default"/> is realized by utilizing the provided | ||||
| (existing) IP header (which was used for the purpose of the | ||||
| path-based forwarding in <xref target="Reed2016" | ||||
| format="default"/>) for the purpose of next-hop forwarding | ||||
| such as that of IP-based routing. As described in <xref | ||||
| target="step8" format="none">Step 8</xref> 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. | ||||
| </list> | The next-hop nSFF (see <xref target="fig-sfc-8" | |||
| </t> | format="default"/>) will restore the IP header of the packet | |||
| <t> | with the relevant IP information used to forward the SFC | |||
| For the pathID information, solutions such as those in <xref ta | packet to SF2, or it will create suitable TE information to | |||
| rget="Reed2016" /> can be used. Here, the IPv6 source and destination addresses | forward the information to another nSFF or boundary | |||
| are used to realize a so-called path-based forwarding from the incoming to the o | node. Forwarding operations at the intermediary forwarders, | |||
| utgoing nSFF or the NR. The forwarders in Figure 8 are realized via SDN (softwar | i.e., SDN switches, examine the pathID information through a | |||
| e-defined networking) switches, implementing an AND/CMP operation based on arbit | flow-matching rule in which a specific switch-local output | |||
| rary wildcard matching over the IPv6 source and destination addresses, as outlin | port is represented through the specific assigned bit | |||
| ed in <xref target="Reed2016" />. Note that in the case of using IPv6 address in | position in the pathID. Upon a positive match in said rule, | |||
| formation for path-based forwarding, the step of removing the transport encapsul | the packet is forwarded on said output port. | |||
| ation at the outgoing nSFF in Figure 8 is realized by utilizing the provided (ex | ||||
| isting) IP header (which was used for the purpose of the path-based forwarding i | ||||
| n <xref target="Reed2016" />) for the purpose of next hop forwarding, such as th | ||||
| at of IP-based routing. As described in step 8 of the extended nSFF operations, | ||||
| this forwarding information is used as traffic encapsulation. With the forwardin | ||||
| g information utilizing existing IPv6 information, IP headers are utilized as TE | ||||
| in this case. The next hop nSFF (see Figure 8) will restore the IP header of th | ||||
| e packet with the relevant IP information used to forward the SFC packet to SF2 | ||||
| or it will create a suitable TE (Transport Encapsulation) 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 thro | ||||
| ugh a flow matching rule in which a specific switch-local output port is represe | ||||
| nted through the specific assigned bit position in the pathID. Upon a positive m | ||||
| atch in said rule, the packet is forwarded on said output port. | ||||
| </t> | ||||
| <t> | ||||
| Alternatively, the solution in <xref target="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 (plus the NSH) header with BIER-based traffic encapsulation into | ||||
| the BIER underlay with each of the forwarders in Figure 8 being realized as a so | ||||
| -called Bit-Forwarding Router (BFR) <xref target="RFC8279"/>. | ||||
| </t> | ||||
| <section anchor="transport" title="Transport Protocol Considerati | ||||
| ons"> | ||||
| <t> | ||||
| Given that the proposed solution operates at the 'named transac | ||||
| tion' level, particularly for HTTP transactions, forwarding between nSFFs and/or | ||||
| NR SHOULD be implemented via a transport protocol between nSFFs and/or NR in or | ||||
| der to provide reliability, segmentation of large GFF packets, and flow control, | ||||
| with the GFF in Figure 9 being the basic forwarding format for this. | ||||
| </t> | ||||
| <t> | ||||
| Note that the nSFFs act as TCP proxies at ingress and egress, t | ||||
| hus terminating incoming and initiating outgoing HTTP sessions to SFs. | ||||
| </t> | ||||
| <t> | ||||
| Figure 10 shows the packet format being used for the transmissi | ||||
| on of data, being adapted from the TCP header. Segmentation of large transaction | ||||
| s into single transport protocol packets is realized through maintaining a 'Sequ | ||||
| ence number'. A 'Checksum' is calculated over a single data packet with the ones | ||||
| -complement TCP checksum calculation being used. The 'Window Size' field indicat | ||||
| es the current maximum number of transport packets that are allowed in-flight by | ||||
| the egress nSFF. A data packet is sent without 'Data' field to indicate the end | ||||
| of (e.g., HTTP) transaction. | ||||
| </t> | </t> | |||
| <t> | <t> | |||
| Note that in order to support future named transactions based on othe | Alternatively, the solution in <xref target="I-D.ietf-bier-mult | |||
| r application protocols, such as CoAP, future versions of the transport protocol | icast-http-response" format="default"/> suggests using a so-called BIER | |||
| MAY introduce a 'Type' field that indicates the type of application protocol be | (Binary Indexed Explicit Replication) underlay. Here, the | |||
| ing used between SF and nSFF with 'Type' 0x01 proposed for HTTP. This is being l | nSFF would be realized at the ingress to the BIER underlay, | |||
| eft for future study. | injecting the SFC packet header (plus the Network Service | |||
| </t> | Header (NSH)) with BIER-based traffic encapsulation into the | |||
| <t> | BIER underlay with each of the forwarders in <xref target="fig- | |||
| <figure anchor="fig-sfc-10" align="center" title="Transport pr | sfc-8" format="default"/> being realized as a so-called | |||
| otocol data packet format"> | Bit-Forwarding Router (BFR) <xref target="RFC8279" format="defa | |||
| <artwork align="center"> | ult"/>. | |||
| </t> | ||||
| <section anchor="transport" numbered="true" toc="default"> | ||||
| <name>Transport Protocol Considerations</name> | ||||
| <t> | ||||
| Given that the proposed solution operates at the | ||||
| "named-transaction" level, particularly for HTTP | ||||
| transactions, forwarding between nSFFs and/or NRs | ||||
| <bcp14>SHOULD</bcp14> 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 <xref target="fig-sfc-9" | ||||
| format="default"/> being the basic forwarding format for | ||||
| this. | ||||
| </t> | ||||
| <t> | ||||
| Note that the nSFFs act as TCP proxies at ingress and | ||||
| egress, thus terminating incoming and initiating outgoing | ||||
| HTTP sessions to SFs. | ||||
| </t> | ||||
| <t> | ||||
| <xref target="fig-sfc-10" format="default"/> shows the packet f | ||||
| ormat 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. | ||||
| </t> | ||||
| <t> | ||||
| 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 <bcp14>MAY</bcp14> introduce a "Type" field that i | ||||
| ndicates the | ||||
| type of application protocol being used between SF and nSFF with | ||||
| "Type" 0x01 proposed for HTTP. This is being left for future study. | ||||
| </t> | ||||
| | 16 bit | 16 bit | | <figure anchor="fig-sfc-10"> | |||
| <name>Transport Protocol Data Packet Format</name> | ||||
| <artwork align="center" name="" type="" alt=""><![CDATA[ | ||||
| +----------------------------------------------+ | ||||
| | 16 bits | 16 bits | | ||||
| +----------------------------------------------+ | +----------------------------------------------+ | |||
| | Sequence number | | | Sequence number | | |||
| +----------------------------------------------+ | +----------------------------------------------+ | |||
| | Checksum | Window Size | | | Checksum | Window Size | | |||
| +----------------------------------------------+ | +----------------------------------------------+ | |||
| | ... | | | ... | | |||
| | Data (Optional) | | | Data (Optional) | | |||
| +----------------------------------------------+ | +----------------------------------------------+]]></artwork> | |||
| </artwork> | </figure> | |||
| </figure> | <t> | |||
| </t> | Given the path-based forwarding being used between nSFFs, | |||
| <t> | the transport protocol between nSFFs utilizes negative | |||
| Given the path-based forwarding being used between nSFFs, the t | acknowledgements from the egress nSFF towards the ingress | |||
| ransport protocol between nSFFs utilizes negative acknowledgements from the egre | nSFF. The transport protocol negative Acknowledgment | |||
| ss nSFF towards the ingress nSFF. The transport protocol NACK packet carries the | (NACK) packet carries the number | |||
| number of NACKs as well as the specific sequence numbers being indicated as los | of NACKs as well as the specific sequence numbers being | |||
| t in the 'NACK number' field(s), as shown in Figure 11. | indicated as lost in the "NACK number" field(s) as shown in | |||
| </t> | <xref target="fig-sfc-11" format="default"/>. | |||
| <t> | </t> | |||
| <figure anchor="fig-sfc-11" align="center" title="Transport pr | <figure anchor="fig-sfc-11"> | |||
| otocol NACK packet format"> | <name>Transport Protocol NACK Packet Format</name> | |||
| <artwork align="center"> | <artwork align="center" name="" type="" alt=""><![CDATA[ | |||
| +-----------------------+----------------------+ | ||||
| | 16 bit | 16 bit | | | 16 bits | 16 bits | | |||
| +----------------------------------------------+ | +----------------------------------------------+ | |||
| | Number of NACKs | + | | Number of NACKs | + | |||
| +----------------------------------------------+ | +----------------------------------------------+ | |||
| | NACK number | | | NACK number | | |||
| +----------------------------------------------+ | +----------------------------------------------+ | |||
| + ... NACK Number + | + ... NACK number + | |||
| +----------------------------------------------+ | +----------------------------------------------+]]></artwork> | |||
| </artwork> | </figure> | |||
| </figure> | ||||
| </t> | ||||
| <t> | ||||
| If the indicated number of NACKs in a received NACK packet in non-zero, | ||||
| the ingress nSFF will retransmit all sequence numbers signalled in the packet, w | ||||
| hile decreasing its congestion window size for future transmissions. | ||||
| </t> | ||||
| <t> | ||||
| If the indicated number of NACKs in a received NACK packet in zero, it w | ||||
| ill indicate the current congestion window as being successfully (and completely | ||||
| ) being transmitted, increasing the congestion window size if smaller than the a | ||||
| dvertised 'Window Size' in Figure 10. | ||||
| </t> | ||||
| <t> | ||||
| The maintenance of the congestion window is subject to realization at th | ||||
| e ingress nSFF and left for further study in nSFF realizations. | ||||
| </t> | ||||
| </section> | ||||
| </section> | ||||
| <section anchor="registration" title="SF Registration"> | ||||
| <t> | ||||
| As outlined in step 3 and 10 of Section 5.6, the nSFF needs to | ||||
| determine if the SF derived from the nNLM is locally reachable or whether the | ||||
| packet needs forwarding 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 t | ||||
| his: | ||||
| </t> | ||||
| <t> | ||||
| 1. SF-initiated: We assume that the SF registers its FQDN to the loc | ||||
| al nSFF. As local mechanisms, we foresee that either a REST-based interface over | ||||
| the link-local link or configuration of the nSFF (through configuration files o | ||||
| r management consoles) can be utilized. Such local registration event leads to t | ||||
| he nSFF to register the given FQDN with the NR in combination with a system-uniq | ||||
| ue nSFF identifier that is being used for path computation purposes in the NR. F | ||||
| or the registration, the packet format in Figure 12 is used (inserted as the pay | ||||
| load in the GFF of Figure 9 with the pathID towards the NR). | ||||
| </t> | ||||
| <t> | ||||
| <figure anchor="fig-sfc-12" align="center" title="Registration | ||||
| packet format"> | ||||
| <artwork align="center"> | ||||
| +---------+-----------------+------------------+ | ||||
| | | | | | ||||
| | R/D | hash(FQDN) | nSFF_ID | | ||||
| | (1 bit) | (16 bit) | (8 bit) | | ||||
| +---------+-----------------+------------------+ | ||||
| </artwork> | ||||
| </figure> | ||||
| </t> | ||||
| <t> | ||||
| <list style="symbols"> | ||||
| <t> | <t> | |||
| R/D: 1 bit length (0 for Register, 1 for De-register) | 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. | ||||
| </t> | </t> | |||
| <t> | ||||
| Hash(FQDN): 16 bit length for a hash over the FQDN of the | ||||
| SF | ||||
| </t> | ||||
| <t> | <t> | |||
| nSFF_ID: 8 bit for a system-unique identifier for the | If the indicated number of NACKs in a received NACK packet is zero, it | |||
| SFF related to the SF. | will indicate the current congestion window as being successfully (and | |||
| </t> | completely) being transmitted, increasing the congestion window size | |||
| </list> | if smaller than the advertised "Window Size" in <xref target="fig-sfc-10 | |||
| " format="default"/>. | ||||
| </t> | ||||
| <t> | ||||
| The maintenance of the congestion window is subject to realization at | ||||
| the ingress nSFF and left for further study in nSFF realizations. | ||||
| </t> | ||||
| </section> | ||||
| </section> | ||||
| <section anchor="registration" numbered="true" toc="default"> | ||||
| <name>SF Registration</name> | ||||
| <t> | ||||
| As outlined in Steps <xref target="step3" | ||||
| format="none">3</xref> and <xref target="step10" | ||||
| format="none">10</xref> of <xref target="steps" format="default"/>, | ||||
| 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: | ||||
| </t> | </t> | |||
| <t> | ||||
| We assume that the pathID towards the NR is known to the nSFF through | <ol group="my_count" spacing="normal" indent="6"> | |||
| configuration means. | <li> | |||
| </t> | 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) i | ||||
| nterface 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 <xref target="fig-sfc-12" | ||||
| format="default"/> is used (inserted as the payload in the GFF of | ||||
| <xref target="fig-sfc-9" format="default"/> with the pathID | ||||
| towards the NR). | ||||
| </li> | ||||
| </ol> | ||||
| <ul empty="true"> | ||||
| <li> | ||||
| <ul empty="true" spacing="normal"> | ||||
| <li> | ||||
| <ul empty="true"> | ||||
| <li> | ||||
| <figure anchor="fig-sfc-12"> | ||||
| <name>Registration Packet Format</name> | ||||
| <artwork align="center" name="" type="" alt=""><![CDATA[+---------+- | ||||
| -----------------+----------------+ | ||||
| | | | | | ||||
| | R/D | hash(FQDN) | nSFF_ID | | ||||
| | (1 bit) | (16 bits) | (8 bits) | | ||||
| +---------+------------------+----------------+]]></artwork> | ||||
| </figure> | ||||
| <ul spacing="normal"> | ||||
| <li> | ||||
| R/D: 1-bit length (0 for Register, 1 for Deregister) | ||||
| </li> | ||||
| <li> | ||||
| hash(FQDN): 16-bit length for a hash over the FQDN of the SF | ||||
| </li> | ||||
| <li> | ||||
| nSFF_ID: 8-bit length for a system-unique identifier for the SFF r | ||||
| elated to the SF | ||||
| </li> | ||||
| </ul> | ||||
| </li> | ||||
| </ul> | ||||
| </li> | ||||
| <li> | ||||
| <ul empty="true"> | ||||
| <li> | ||||
| We assume that the pathID towards the NR is known to the nSFF through configurat | ||||
| ion means. | ||||
| </li> | ||||
| <li> | ||||
| 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. | ||||
| </li> | ||||
| </ul> | ||||
| </li> | ||||
| </ul> | ||||
| </li> | ||||
| </ul> | ||||
| <ol group="my_count" spacing="normal" indent="6"> | ||||
| <li> | ||||
| 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. | ||||
| </li> | ||||
| </ol> | ||||
| </section> | ||||
| <section anchor="localfwd" numbered="true" toc="default"> | ||||
| <name>Local SF Forwarding</name> | ||||
| <t> | <t> | |||
| The NR maintains an internal table that associates the ha | There are two cases of local SF forwarding, namely, the SF | |||
| sh(FQDN), the nSFF_id information as well as the pathID information being used f | sending an SFC packet to the local nSFF (incoming requests) | |||
| or communication between nSFF and NR. The nSFF locally maintains a mapping of re | or the nSFF sending a packet to the SF (outgoing requests) | |||
| gistered FQDNs to IP addresses, for the latter using link-local private IP addre | as part of Steps <xref target="step3" | |||
| sses. | format="none">3</xref> and <xref target="step10" | |||
| </t> | format="none">10</xref> in <xref target="steps" format="default"/>. In | |||
| <t> | the following, | |||
| 2. Orchestration-based: in this mechanism, we assume that SFC | we outline the operation for HTTP as an example-named | |||
| to be orchestrated and the chain being provided through an orchestration templa | transaction. | |||
| te with FQDN information associated to a compute/storage resource that is being | ||||
| deployed by the orchestrator. We also assume knowledge at the orchestrator of th | ||||
| e resource topology. Based on this, the orchestrator can now use the same REST-b | ||||
| ased 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. | ||||
| </t> | ||||
| </section> | ||||
| <section anchor="localfwd" title="Local SF Forwarding "> | ||||
| <t> | ||||
| There are two cases of local SF forwarding, namely the SF send | ||||
| ing an SFC packet to the local nSFF (incoming requests) or the nSFF sending a pa | ||||
| cket 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 | ||||
| . | ||||
| </t> | ||||
| <t> | ||||
| As shown in Figure 8, 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 (utilizi | ||||
| ng the URI of the request) for HTTP response association. | ||||
| </t> | </t> | |||
| <t> | <t> | |||
| For outgoing HTTP requests, the nSFF utilizes the maintained | As shown in <xref target="fig-sfc-8" format="default"/>, incoming HT | |||
| mapping of locally registered FQDNs to link-local IP addresses (see Section 6.2. | TP requests from SFs are | |||
| 2 option 1). Hence, upon receiving an SFC packet from a remote nSFF (in step 9 o | extracted by terminating the incoming TCP connection at their | |||
| f Section 5.6), the nSFF determines the local existence of the SF through the re | local nSFFs at the TCP level. The nSFF <bcp14>MUST</bcp14> maintain | |||
| gistration mechanisms in Section 6.2.2. If said SF does exist locally, the HTTP | a mapping of | |||
| (+NSH) packet, after stripping the TE, is sent to the local SF as step 10 in Sec | open TCP sockets to HTTP requests (utilizing the URI of the | |||
| tion 5.6 via a TCP-level connection. Outgoing nSFF SHOULD keep TCP connections o | request) for HTTP response association. | |||
| pen to local SFs for improving SFC packet delivery in subsequent transactions. | ||||
| </t> | ||||
| </section> | ||||
| <section anchor="httpresp" title="Handling of HTTP Responses"> | ||||
| <t> | ||||
| When executing step 3 and 10 in Section 5.6, the SFC packet wi | ||||
| ll 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 li | ||||
| st of link-local connection information, e.g., sockets to the local SF and the p | ||||
| athID on which the request was received. Once receiving the response, nSFF consu | ||||
| lts the table to determine the pathID of the original request, forming a suitabl | ||||
| e GFF-based packet to be returned to the previous nSFF. | ||||
| </t> | ||||
| <t> | ||||
| When receiving the HTTP response at the previous nSFF, the nSFF cons | ||||
| ults the table of (locally) open sockets to determine the suitable local SF conn | ||||
| ection, mapping the received HTTP response URI to the stored request URI. Utiliz | ||||
| ing the found socket, the HTTP response is forwarded to the locally registered S | ||||
| F. | ||||
| </t> | </t> | |||
| </section> | <t> | |||
| <section anchor="remotefwd" title="Remote SF Forwarding"> | For outgoing HTTP requests, the nSFF utilizes the | |||
| <t> | maintained mapping of locally registered FQDNs to | |||
| In steps 5, 6, 7, and 8 of Section 5.6, an SFC packet is forwa | link-local IP addresses (see <xref target="registration" form | |||
| rded to a remote nSFF based on the nNLM information for the next hop of the nSFP | at="default"/>, option | |||
| . Section 6.2.5.1 handles the case of suitable forwarding information to the rem | 1). Hence, upon receiving an SFC packet from a remote nSFF | |||
| ote nSFF not existing, therefore consulting the NR to obtain suitable informatio | (in <xref target="step9" | |||
| n, while Section 6.2.5.2 describes the maintenance of forwarding information at | format="none">Step 9</xref> of <xref target="steps" format="default"/>) | |||
| the local nSFF, while Section 6.2.5.3 describes the update of stale forwarding i | , the nSFF determines the local | |||
| nformation. Note that the forwarding described in Section 6.2.1 is used for the | existence of the SF through the registration mechanisms in | |||
| actual forwarding to the various nSFF components. Ultimately, Section 6.2.5.4 d | <xref target="registration" format="default"/>. If said SF do | |||
| escribes the forwarding to the remote nSFF via the forwarder network. | es exist locally, the HTTP | |||
| </t> | (+NSH) packet, after stripping the TE, is sent to the | |||
| <section anchor="remotedisc" title="Remote SF Discovery"> | local SF as <xref target="step10" | |||
| <t> | format="none">Step 10</xref> in <xref target="steps" format="default"/> | |||
| The nSFF communicates with the NR for two purposes, namely th | via a TCP-level | |||
| e registration and discovery of FQDNs. The packet format for the former was show | connection. Outgoing nSFFs <bcp14>SHOULD</bcp14> keep TCP con | |||
| n in Figure 10 in Section 6.2.2, while Figure 13 outlines the packet format for | nections open | |||
| the discovery request. | to local SFs for improving SFC packet delivery in | |||
| </t> | subsequent transactions. | |||
| <t> | </t> | |||
| <figure anchor="fig-sfc-13" align="center" title="Discovery packet fo | </section> | |||
| rmat"> | <section anchor="httpresp" numbered="true" toc="default"> | |||
| <artwork align="center"> | <name>Handling of HTTP Responses</name> | |||
| <t> | ||||
| When executing Steps <xref target="step3" | ||||
| format="none">3</xref> and <xref target="step10" | ||||
| format="none">10</xref> in <xref target="steps" format="default"/>, 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. | ||||
| </t> | ||||
| <t> | ||||
| 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. | ||||
| </t> | ||||
| </section> | ||||
| <section anchor="remotefwd" numbered="true" toc="default"> | ||||
| <name>Remote SF Forwarding</name> | ||||
| <t> | ||||
| In Steps <xref target="step5" | ||||
| format="none">5</xref>, <xref target="step6" | ||||
| format="none">6</xref>, <xref target="step7" | ||||
| format="none">7</xref>, and <xref target="step8" | ||||
| format="none">8</xref> of <xref target="steps" format="default"/>, an S | ||||
| FC | ||||
| packet is forwarded to a remote nSFF based on the nNLM | ||||
| information for the next hop of the nSFP. <xref target="remote | ||||
| disc" format="default"/> handles the case of suitable | ||||
| forwarding information to the remote nSFF not existing, | ||||
| therefore consulting the NR to obtain suitable information. | ||||
| <xref target="maintain" format="default"/> describes the maint | ||||
| enance | ||||
| of forwarding information at the local nSFF. <xref target="up | ||||
| date" format="default"/> describes the update of stale forwarding | ||||
| information. Note that the forwarding described in <xref targe | ||||
| t="nsfnr" format="default"/> is used for the actual forwarding to the | ||||
| various nSFF components. Ultimately, <xref target="fwd" forma | ||||
| t="default"/> | ||||
| describes the forwarding to the remote nSFF via the | ||||
| forwarder network. | ||||
| </t> | ||||
| <section anchor="remotedisc" numbered="true" toc="default"> | ||||
| <name>Remote SF Discovery</name> | ||||
| <t> | ||||
| 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 <xref target="fig-sfc-12" format= | ||||
| "default"/> in | ||||
| <xref target="registration" format="default"/>, | ||||
| while <xref target="fig-sfc-13" format="default"/> outlines t | ||||
| he packet format for the | ||||
| discovery request. | ||||
| </t> | ||||
| <figure anchor="fig-sfc-13"> | ||||
| <name>Discovery Packet Format</name> | ||||
| <artwork align="center" name="" type="" alt=""><![CDATA[ | ||||
| +--------------+-------------+ +--------+-----------------//--------+ | +--------------+-------------+ +--------+-----------------//--------+ | |||
| | | | | | // | | | | | | | // | | |||
| | hash(FQDN) | nSFF_ID | | Length | pathID // | | | hash(FQDN) | nSFF_ID | | Length | pathID // | | |||
| | (16 bit) | (8 bit) | | (4 bit)| // | | | (16 bits) | (8 bits) | |(4 bits)| // | | |||
| +--------------+-------------+ +--------+-------------//------------+ | +--------------+-------------+ +--------+-------------//------------+ | |||
| Path Request Path Response | Path Request Path Response]]></artwork> | |||
| </figure> | ||||
| </artwork> | ||||
| </figure> | ||||
| </t> | ||||
| <t> | ||||
| For Path Request: | ||||
| <list style="symbols"> | ||||
| <t> | <t> | |||
| Hash(FQDN): 16 bit length for a hash over the FQDN of the SF | For Path Request: | |||
| </t> | </t> | |||
| <t> | <ul spacing="normal"> | |||
| nSFF_ID: 8 bit for a system-unique identifier for the SFF | <li> | |||
| related to the SF | hash(FQDN): 16-bit length for a hash over the FQDN of the SF | |||
| </t> | </li> | |||
| </list> | <li> | |||
| </t> | nSFF_ID: 8-bit length for a system-unique identifier for the SFF r | |||
| <t> | elated to the SF | |||
| </li> | ||||
| </ul> | ||||
| <t> | ||||
| For Path Response: | For Path Response: | |||
| <list style="symbols"> | </t> | |||
| <ul spacing="normal"> | ||||
| <li> | ||||
| Length: 4-bit length that defines the length of the pathID | ||||
| </li> | ||||
| <li> | ||||
| Path ID: Variable-length bit field derived from IPv6 source | ||||
| and destination address | ||||
| </li> | ||||
| </ul> | ||||
| <t> | <t> | |||
| Length (4 bits): Defines the length of the pathID | 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 <bcp14>SHOULD</bcp14> maintai | ||||
| n 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. | ||||
| </t> | </t> | |||
| <t> | <t> | |||
| Path ID (): Variable length field, Bit field derived from | The discovery request for an FQDN that has not previously been | |||
| IPv6 source and destination address | served at the nSFF (or for an FQDN whose pathID information has | |||
| </t> | been flushed as a result of the update operations in <xref | |||
| </list> | target="update" format="default"/>) results in an initial latency | |||
| </t> | incurred by this discovery through the NR, while any SFC packet | |||
| <t> | sent over the same SFP in a subsequent transaction will utilize | |||
| A path to a specific FQDN is requested by sending a hash of the FQDN | the nSFF-local mapping table. Such initial latency can be avoided | |||
| to the NR together with its nSFF_id, receiving as a response a pathID with a len | by prepopulating the FQDN-pathID mapping proactively as part of | |||
| gth identifier. The NR SHOULD maintain a table of discovery requests that map di | the overall orchestration procedure, e.g., alongside the | |||
| scovered (hash of) FQDN to the nSFF_id that requested it and the pathID that is | distribution of the nNLM information to the nSFF. | |||
| being calculated as a result of the discovery request. | </t> | |||
| </t> | </section> | |||
| <t> | <section anchor="maintain" numbered="true" toc="default"> | |||
| The discovery request for an FQDN that has not previously been serve | <name>Maintaining Forwarding Information at Local nSFF</name> | |||
| d at the nSFF (or for an FQDN whose pathID information has been flushed as a res | ||||
| ult 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 sa | ||||
| me SFP in a subsequent transaction will utilize the nSFF local mapping table. Su | ||||
| ch initial latency can be avoided by pre-populating the FQDN-pathID mapping proa | ||||
| ctively as part of the overall orchestration procedure, e.g., alongside the dist | ||||
| ribution of the nNLM information to the nSFF. | ||||
| </t> | ||||
| </section> | ||||
| <section anchor="maintain" title="Maintaining Forwarding Inform | ||||
| ation at Local nSFF"> | ||||
| <t> | ||||
| Each nSFF MUST maintain an internal table that maps the (hash | ||||
| of the) FQDN information to a suitable pathID information. As outlined in step | ||||
| 7 of Section 5.6, if a suitable entry does not exist for a given FQDN, the pathI | ||||
| D information is requested with the operations in Section 6.2.5.1 and the suitab | ||||
| le entry is locally created upon receiving a reply with the forwarding operation | ||||
| being executed as described in Section 6.2.1. | ||||
| </t> | ||||
| <t> | ||||
| If such 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. | ||||
| </t> | ||||
| </section> | ||||
| <section anchor="update" title="Updating Forwarding Information | ||||
| at nSFF"> | ||||
| <t> | ||||
| The forwarding information maintained at each nSFF (see Section 6 | ||||
| .2.5.2) might need to be updated for three reasons: | ||||
| <list style="symbols"> | ||||
| <t> | ||||
| An existing SF is no longer reachable: In this case, th | ||||
| e nSFF with which the SF is locally registered, de-registers the SF explicitly a | ||||
| t the NR by sending the packet in Figure 10 with the hashed FQDN and the R/D bit | ||||
| set to 1 (for de-register). | ||||
| </t> | ||||
| <t> | ||||
| Another SF instance has become reachable in the network | ||||
| (and therefore might provide a better alternative to the existing SF): in this c | ||||
| ase, the NR has received another packet with format defined in Figure 11 but a d | ||||
| ifferent nSFF_id value. | ||||
| </t> | ||||
| <t> | ||||
| Links along paths might no longer be reachable: the NR | ||||
| might use suitable southbound interface to transport networks to detect link fai | ||||
| lures, which it associates to the appropriate pathID bit position. | ||||
| </t> | ||||
| </list> | ||||
| </t> | ||||
| <t> | ||||
| For this purpose, the packet format in Figure 14 is sent from the NR | ||||
| to all affected nSFFs, using the generic format in Figure 9. | ||||
| </t> | ||||
| <t> | ||||
| <figure anchor="fig-sfc-14" align="center" title="Path update | ||||
| format"> | ||||
| <artwork align="center"> | ||||
| <t> | ||||
| Each nSFF <bcp14>MUST</bcp14> maintain an internal table | ||||
| that maps the (hash of the) FQDN information to a suitable | ||||
| pathID. As outlined in <xref target="step7" | ||||
| format="none">Step 7</xref> of <xref target="steps" | ||||
| format="default"/>, if a suitable entry does not exist for | ||||
| a given FQDN, the pathID information is requested with the | ||||
| operations in <xref target="remotedisc" format="default"/> | ||||
| and the suitable entry is locally created upon receiving a | ||||
| reply with the forwarding operation being executed as | ||||
| described in <xref target="nsfnr" format="default"/>. | ||||
| </t> | ||||
| <t> | ||||
| If such an entry does exist (i.e., <xref target="step6" | ||||
| format="none">Step 6</xref> of <xref target="steps" format="default"/>) | ||||
| , the pathID | ||||
| is locally retrieved and used for the forwarding operation in | ||||
| <xref target="nsfnr" format="default"/>. | ||||
| </t> | ||||
| </section> | ||||
| <section anchor="update" numbered="true" toc="default"> | ||||
| <name>Updating Forwarding Information at nSFF</name> | ||||
| <t> | ||||
| The forwarding information maintained at each nSFF (see | ||||
| <xref target="maintain" format="default"/>) might need to be upda | ||||
| ted for three reasons: | ||||
| </t> | ||||
| <ol spacing="normal" indent="6"> | ||||
| <li> | ||||
| 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 <xref target="fig-sfc-10" | ||||
| format="default"/> with the hashed FQDN and the R/D | ||||
| bit set to 1 (for deregister). | ||||
| </li> | ||||
| <li> | ||||
| 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 | ||||
| <xref target="fig-sfc-11" format="default"/> but a diffe | ||||
| rent nSFF_id value. | ||||
| </li> | ||||
| <li> | ||||
| 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. | ||||
| </li> | ||||
| </ol> | ||||
| <t> | ||||
| For this purpose, the packet format in <xref target="fig-sfc-14" for | ||||
| mat="default"/> is sent from the | ||||
| NR to all affected nSFFs, using the generic format in <xref target=" | ||||
| fig-sfc-9" format="default"/>. | ||||
| </t> | ||||
| <figure anchor="fig-sfc-14"> | ||||
| <name>Path Update Format</name> | ||||
| <artwork align="center" name="" type="" alt=""><![CDATA[ | ||||
| +---------+-----------------+--------------//----+ | +---------+-----------------+--------------//----+ | |||
| | | | // | | | | | // | | |||
| | Type | #IDs | IDs // | | | Type | #IDs | IDs // | | |||
| | (1 bit) | (8 bit) | // | | | (1 bit) | (8 bits) | // | | |||
| +---------+-----------------+----------//--------+ | +---------+-----------------+----------//--------+]]></artwork> | |||
| </figure> | ||||
| </artwork> | <ul spacing="normal"> | |||
| </figure> | <li> | |||
| </t> | Type: 1-bit length (0 for Nsff ID, 1 for Link ID) | |||
| <t> | </li> | |||
| <list style="symbols"> | <li> | |||
| #IDs: 8-bit length for number of IDs in the list | ||||
| </li> | ||||
| <li> | ||||
| IDs: List of IDs (Nsff ID or Link ID) | ||||
| </li> | ||||
| </ul> | ||||
| <t> | <t> | |||
| Type: 1 bit length (0 for Nsff ID, 1 for 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 <xref target="registration" format="default" | ||||
| />. | ||||
| </t> | </t> | |||
| <t> | <t> | |||
| #IDs: 8 bit length for number of IDs in the list | The pathID may include the type of information being updated | |||
| </t> | (e.g., node identifiers of leaf nodes or link identifiers for | |||
| <t> | removed links). The node identifier itself may be a special | |||
| IDs: List of IDs (Nsff ID or Link ID) | identifier to signal "ALL NODES" as being affected. The node | |||
| </t> | identifier may signal changes to the network that are substantial | |||
| </list> | (e.g., parallel link failures). The node identifier may trigger | |||
| </t> | (e.g., recommend) purging of the entire path table (e.g., rather | |||
| <t> | than the selective removal of a few nodes only). | |||
| The pathID to the affected nSFFs is computed as the binar | </t> | |||
| y OR over all pathIDs to those nSFF_ids affected where the pathID information to | <t> | |||
| the affected nSFF_id values is determined from the NR-local table maintained in | It will include the information according to the type. The | |||
| the registration/deregistration operation of Section 6.2.2. | included information may also be related to the type and length | |||
| </t> | information for the number of identifiers being provided. | |||
| </t> | ||||
| <t> | <t> | |||
| The pathID may include the type of information being updated (e.g., | In cases 1 and 2, the Type bit is set to 1 (type nSFF_id) and the | |||
| node identifiers of leaf nodes or link identifiers for removed links). The node | affected nSFFs are determined by those nSFFs that have previously | |||
| identifier itself may be a special identifier to signal "ALL NODES" as being aff | sent SF discovery requests, utilizing the optional table mapping | |||
| ected. The node identifier may signal changes to the network that are substanti | previously registered FQDNs to nSFF_id values. If no table mapping | |||
| al (e.g., parallel link failures). The node identifier may trigger (e.g., recom | the (hash of) FQDN to nSFF_id is maintained, the update is sent to | |||
| mend) purging of the entire path table (e.g., rather than the selective removal | all nSFFs. Upon receiving the path update at the affected nSFF, | |||
| of a few nodes only). | all appropriate nSFF-local mapping entries to pathIDs for the | |||
| </t> | hash(FQDN) identifiers provided will be removed, leading to a new | |||
| <t> | NR discovery request at the next remote nSFF forwarding to the | |||
| It will include the information according to the type. The included | appropriate FQDN. | |||
| information may also be related to the type and length information for the numbe | </t> | |||
| r of identifiers being provided. | <t> | |||
| </t> | In case 3, the Type bit is set to 0 (type linkID) and the affected | |||
| <t> | nSFFs are determined by those nSFFs whose discovery requests have | |||
| In case 1 and 2, the Type bit is set to 1 (type nSFF_id) and the aff | previously resulted in pathIDs that include the affected link, | |||
| ected nSFFs are determined by those nSFFs that have previously sent SF discovery | utilizing the optional table mapping previously registered FQDNs | |||
| requests, utilizing the optional table mapping previously registered FQDNs to n | to pathID values (see <xref target="remotedisc" format="default"/>). | |||
| SFF_id values. If no table mapping the (hash of) FQDN to nSFF_id is maintained, | Upon receiving the node | |||
| the update is sent to all nSFFs. Upon receiving the path update at the affected | identifier information in the path update, the affected nSFF will | |||
| nSFF, all appropriate nSFF-local mapping entries to pathIDs for the hash(FQDN) | check its internal table that maps FQDNs to pathIDs to determine | |||
| identifiers provided will be removed, leading to a new NR discovery request at t | those pathIDs affected by the link problems and remove path | |||
| he next remote nSFF forwarding to the appropriate FQDN. | information that includes the received node identifier(s). For | |||
| </t> | this, the pathID entries of said table are checked against the | |||
| <t> | linkID values provided in the ID entry of the path update through | |||
| In case 3, the Type bit is set to 0 (type linkID) and the affected n | a binary AND/CMP operation to check the inclusion of the link in | |||
| SFFs are determined by those nSFFs whose discovery requests have previously resu | the pathIDs to the FQDNs. If any pathID is affected, the | |||
| lted in pathIDs which include the affected link, utilizing the optional table ma | FQDN-pathID entry is removed, leading to a new NR discovery | |||
| pping previously registered FQDNs to pathID values (see Section 6.2.5.1). Upon r | request at the next remote nSFF forwarding to the appropriate | |||
| eceiving the node identifier information in the path update, the affected nSFF w | FQDN. | |||
| ill check its internal table that maps FQDNs to pathIDs to determine those pathI | </t> | |||
| Ds affected by the link problems and remove path information that includes the r | </section> | |||
| eceived node identifier(s). For this, the pathID entries of said table are check | <section anchor="fwd" numbered="true" toc="default"> | |||
| ed against the linkID values provided in the ID entry of the path update through | <name>Forwarding to Remote nSFF</name> | |||
| a binary AND/CMP operation to check the inclusion of the link in the pathIDs to | <t> | |||
| the FQDNs. If any pathID is affected, the FQDN-pathID entry is removed, leading | Once Steps <xref target="step5" | |||
| to a new NR discovery request at the next remote nSFF forwarding to the appropr | format="none">5</xref>, <xref target="step6" | |||
| iate FQDN. | format="none">6</xref>, and <xref target="step7" | |||
| </t> | format="none">7</xref> in <xref target="steps" format="default"/> are b | |||
| </section> | eing executed, | |||
| <section anchor="fwd" title="Forwarding to remote nSFF"> | <xref target="step8" | |||
| <t> | format="none">Step 8</xref> finally sends the SFC packet to the remote | |||
| Once step 5, 6, and 7 in Section 5.6 are being executed, step | nSFF, | |||
| 8 finally sends the SFC packet to the remote nSFF, utilizing the pathID returne | utilizing the pathID returned in the discovery request | |||
| d in the discovery request (Section 6.2.5.1) or retrieved from the local pathID | (<xref target="remotedisc" format="default"/>) or retrieved f | |||
| mapping table. The SFC packet is placed in the payload of the generic forwarding | rom the local pathID | |||
| format in Figure 9 together with the pathID and the nSFF eventually executes th | mapping table. The SFC packet is placed in the payload of | |||
| e forwarding operations in Section 6.2.1. | the generic forwarding format in <xref target="fig-sfc-9" for | |||
| </t> | mat="default"/> together with | |||
| </section> | the pathID, and the nSFF eventually executes the forwarding | |||
| operations in <xref target="nsfnr" format="default"/>. | ||||
| </section> | </t> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| </section> | ||||
| <section anchor="IANA" title="IANA Considerations"> | </section> | |||
| <section anchor="IANA" numbered="true" toc="default"> | ||||
| <t>This document requests no IANA actions. | <name>IANA Considerations</name> | |||
| <t>This document has no IANA actions. | ||||
| </t> | </t> | |||
| </section> | </section> | |||
| <section anchor="Security" numbered="true" toc="default"> | ||||
| <section anchor="Security" title="Security Considerations"> | <name>Security Considerations</name> | |||
| <t>Sections <xref target="nop" format="counter"/> and <xref target="nsfffw | ||||
| <t>The operations in Sections 5 and 6 describes the forwarding of SFC pack | d" format="counter"/> describe the forwarding of SFC | |||
| ets between named SFs based on URIs exchanged in HTTP messages. | packets between named SFs based on URIs exchanged in HTTP messages. | |||
| For security considerations, TLS is sufficient between originating node | Security is needed to protect the communications between originating | |||
| and Nsff, Nsff to Nsff, Nsff to destination. TLS handshake | node and Ssff, between one Nsff and the next Nsff, and between Nsff and | |||
| allows to determine the FQDN, which in turn is enough for the service r | destination. TLS is sufficient for this and <bcp14>SHOULD</bcp14> be used. | |||
| outing decision. Supporting TLS also allows the possibility of HTTPS based trans | The TLS | |||
| actions.</t> | 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.</t> | ||||
| <t> It should be noted (per <xref target="RFC3986" format="default"/>) tha | ||||
| t 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 "hi-jacked" 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 hi-jacking is a new attack surface introduced by using a | ||||
| separate NR. | ||||
| </t> | ||||
| </section> | </section> | |||
| </middle> | </middle> | |||
| <back> | <back> | |||
| <references title="Normative References"> | <displayreference target="I-D.ietf-bier-multicast-http-response" | |||
| &rfc2119; | to="BIER-MULTICAST"/> | |||
| &rfc7665; | <references> | |||
| &rfc8174; | <name>References</name> | |||
| &rfc8300; | <references> | |||
| &rfc8279; | <name>Normative References</name> | |||
| </references> | <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | |||
| ence.RFC.2119.xml"/> | ||||
| <references title="Informative References"> | ||||
| <!-- &I-D.ietf-bier-multicast-http-response; I-D Exists --> | ||||
| <reference anchor='BIER-MULTICAST'> | ||||
| <front> | ||||
| <title>Applicability of BIER Multicast Overlay for Adaptive Streaming Services</ | ||||
| title> | ||||
| <author initials='D' surname='Trossen' fullname='Dirk Trossen'> | ||||
| <organization /> | ||||
| </author> | ||||
| <author initials='A' surname='Rahman' fullname='Akbar Rahman'> | ||||
| <organization /> | ||||
| </author> | ||||
| <author initials='C' surname='Wang' fullname='Chonggang Wang'> | ||||
| <organization /> | ||||
| </author> | ||||
| <author initials='T' surname='Eckert' fullname='Toerless Eckert'> | ||||
| <organization /> | ||||
| </author> | ||||
| <date month='June' day='28' year='2019' /> | ||||
| <abstract><t>HTTP Level multicast, using BIER, is described as a use case in the | ||||
| BIER Use cases document. HTTP Level Multicast is used in today's video streami | ||||
| ng and delivery services such as HLS, AR/VR etc., generally realized over IP Mul | ||||
| ticast as well as other use cases such as software update delivery. A realizati | ||||
| on of "HTTP Multicast" over "IP Multicast" is described for the video delivery u | ||||
| se case. IP multicast is commonly used for IPTV services. DVB and BBF is also | ||||
| developing a reference architecture for IP Multicast service. A few problems wi | ||||
| th IPMC, such as waste of transmission bandwidth, increase in signaling when the | ||||
| re are few users are described. Realization over BIER, through a BIER Multicast | ||||
| Overlay Layer, is described as an alternative. How BIER Multicast Overlay oper | ||||
| ation improves over IP Multicast, such as reduction in signaling, dynamic creati | ||||
| on of multicast groups to reduce signaling and bandwidth wastage is described. | ||||
| We conclude with few next steps.</t></abstract> | ||||
| </front> | ||||
| <seriesInfo name='Work in Progress,' value='draft-ietf-bier-multicast-http-respo | ||||
| nse-01' /> | ||||
| </reference> | ||||
| <!-- [rfced] [Reed2016] URL provided is correct - Also found URL https://ieeexpl | ||||
| ore.ieee.org/document/7511036 DOI: 10.1109/ICC.2016.7511036 --> | ||||
| <reference anchor="Reed2016" target="https://arxiv.org/pdf/1511.06069.p | ||||
| df"> | ||||
| <front> | ||||
| <title> Stateless multicast switching in software defined networks </t | ||||
| itle> | ||||
| <author initials="M.J." surname="Reed" /> | ||||
| <author initials="M." surname="Al-Naday" /> | ||||
| <author initials="N." surname="Thomas" /> | ||||
| <author initials="D." surname="Trossen" /> | ||||
| <author initials="S." surname="Spirou" /> | ||||
| <date year="2016"/> | ||||
| </front> | ||||
| <seriesInfo name="ICC" value="2016"/> | ||||
| </reference> | ||||
| <!-- [rfced] [Schlinker2017] URL provided is correct - also found URL https://dl | <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | |||
| .acm.org/citation.cfm?id=3098853 --> | ence.RFC.3986.xml"/> | |||
| <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
| ence.RFC.7665.xml"/> | ||||
| <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
| ence.RFC.8174.xml"/> | ||||
| <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
| ence.RFC.8300.xml"/> | ||||
| <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
| ence.RFC.8279.xml"/> | ||||
| </references> | ||||
| <references> | ||||
| <name>Informative References</name> | ||||
| <!-- &I-D.ietf-bier-multicast-http-response; I-D Exists --> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml3/reference.I-D.ietf | ||||
| -bier-multicast-http-response.xml"/> | ||||
| <reference anchor="Schlinker2017" target="https://research.fb.com/wp-co | <reference anchor="Reed2016" target="https://ieeexplore.ieee.org/documen | |||
| ntent/uploads/2017/08/sigcomm17-final177-2billion.pdf"> | t/7511036"> | |||
| <front> | <front> | |||
| <title> Engineering Egress with Edge Fabric, Steering Oceans of Conten | <title> Stateless multicast switching in software defined networks < | |||
| t to the World </title> | /title> | |||
| <author initials="B." surname="Schlinker" /> | <author initials="M.J." surname="Reed"/> | |||
| <author initials="H." surname="Kim" /> | <author initials="M." surname="Al-Naday"/> | |||
| <author initials="T." surname="Cui" /> | <author initials="N." surname="Thomas"/> | |||
| <author initials="E." surname="Katz-Bassett" /> | <author initials="D." surname="Trossen"/> | |||
| <author initials="Harsha V." surname="Madhyastha" /> | <author initials="G." surname="Petropoulos"/> | |||
| <author initials="I." surname="Cunha" /> | <author initials="S." surname="Spirou"/> | |||
| <author initials="J." surname="Quinn" /> | <date month="May" year="2016"/> | |||
| <author initials="S." surname="Hassan" /> | ||||
| <author initials="P." surname="Lapukhov" /> | ||||
| <author initials="H." surname="Zeng" /> | ||||
| <date year="2017"/> | ||||
| </front> | ||||
| <seriesInfo name="ACM SIGCOMM" value="2017"/> | ||||
| </reference> | ||||
| <!-- [rfced] [_3GPP_SBA] URL provided is correct - also found https://www.etsi.o | </front> | |||
| rg/deliver/etsi_ts/129500_129599/129500/15.00.00_60/ts_129500v150000p.pdf --> | <seriesInfo name="DOI" value="10.1109/ICC.2016.7511036"/> | |||
| <refcontent>IEEE ICC 2016</refcontent> | ||||
| </reference> | ||||
| <reference anchor="_3GPP_SBA" target="http://www.3gpp.org/ftp/Specs/htm | <reference anchor="Schlinker2017" target="https://research.fb.com/wp-content/up | |||
| l-info/29500.htm"> | loads/2017/08/sigcomm17-final177-2billion.pdf"> | |||
| <front> | <front> | |||
| <title> Technical Realization of Service Based Architecture </title> | <title> Engineering Egress with Edge Fabric, Steering Oceans of Cont | |||
| <author> | ent to the World </title> | |||
| <organization>3GPP</organization> | <author initials="B." surname="Schlinker"/> | |||
| </author> | <author initials="H." surname="Kim"/> | |||
| <date day="1" month="January" year="2018"/> | <author initials="T." surname="Cui"/> | |||
| </front> | <author initials="E." surname="Katz-Bassett"/> | |||
| <seriesInfo name="3GPP TS 29.500" value="0.4.0"/> | <author initials="Harsha V." surname="Madhyastha"/> | |||
| <format type="" target="http://www.3gpp.org/ftp/Specs/html-info/29500.ht | <author initials="I." surname="Cunha"/> | |||
| m"/> | <author initials="J." surname="Quinn"/> | |||
| </reference> | <author initials="S." surname="Hassan"/> | |||
| <author initials="P." surname="Lapukhov"/> | ||||
| <author initials="H." surname="Zeng"/> | ||||
| <date month="August" year="2017"/> | ||||
| </front> | ||||
| <refcontent>ACM SIGCOMM 2017</refcontent> | ||||
| </reference> | ||||
| <!-- [rfced] [_3GPP_SBA_ENHANCEMENT] Link is to a zip file which I did not check | <reference anchor="SDO-3GPP-SBA" target="https://www.3gpp.org/ftp/Specs/ | |||
| --> | html-info/29500.htm"> | |||
| <front> | ||||
| <title> Technical Realization of Service Based Architecture </title> | ||||
| <seriesInfo name="3GPP" value="TS 29.500 V15.5.0"/> | ||||
| <author> | ||||
| <organization>3GPP</organization> | ||||
| </author> | ||||
| <date month="September" year="2019"/> | ||||
| </front> | ||||
| </reference> | ||||
| <reference anchor="_3GPP_SBA_ENHANCEMENT" target="http://www.3gpp.org/ftp/ | <reference anchor="SDO-3GPP-SBA-ENHANCEMENT" target="https://www.3gpp.or | |||
| tsg_sa/WG2_Arch/TSGS2_126_Montreal/Docs/S2-182904.zip"> | g/ftp/tsg_sa/WG2_Arch/TSGS2_126_Montreal/Docs/S2-182904.zip"> | |||
| <front> | <front> | |||
| <title> New SID for Enhancements to the Service-Based 5G System Archit | <title> New SID for Enhancements to the Service-Based 5G System Arch | |||
| ecture </title> | itecture </title> | |||
| <author> | <seriesInfo name="3GPP" value="S2-182904"/> | |||
| <organization>3GPP</organization> | <author> | |||
| </author> | <organization>3GPP</organization> | |||
| <date day="26" month="February" year="2018"/> | </author> | |||
| </front> | <date month="February" year="2018"/> | |||
| <seriesInfo name="3GPP S2-182904" value=""/> | </front> | |||
| <format type="" target="http://www.3gpp.org/ftp/tsg_sa/WG2_Arch/TSGS2_12 | </reference> | |||
| 6_Montreal/Docs/S2-182904.zip"/> | </references> | |||
| </reference> | ||||
| </references> | </references> | |||
| <section anchor="Ack" numbered="false" toc="default"> | ||||
| <section anchor="Ack" title="Acknowledgements" numbered="no"> | <name>Acknowledgements</name> | |||
| <t> | <t> | |||
| The authors would like to thank Dirk von Hugo and Andrew Malis for | The authors would like to thank Dirk von Hugo and Andrew Malis for | |||
| their reviews and valuable comments. We would also like to thank | their reviews and valuable comments. We would also like to thank | |||
| Joel Halpern, the chair of the SFC WG, and Adrian Farrel for | Joel Halpern, the chair of the SFC WG, and Adrian Farrel for | |||
| guiding us through the IETF Independent Submission Editor (ISE) | guiding us through the IETF Independent Submission Editor (ISE) | |||
| path. | path. | |||
| </t> | </t> | |||
| </section> | </section> | |||
| <!-- [rfced] This document uses both "Control Plane" (uppercase) and "control | ||||
| plane" (lowercase) seemingly without a difference. Should these be made | ||||
| uniform? | ||||
| Original: | ||||
| ...may start with signaling in the Control Plane to setup user plane | ||||
| bearers. | ||||
| ... | ||||
| Part of the control plane, the Common Control Network Function (CCNF)... | ||||
| </back> | </back> | |||
| </rfc> | </rfc> | |||
| End of changes. 106 change blocks. | ||||
| 1317 lines changed or deleted | 1612 lines changed or added | |||
This html diff was produced by rfcdiff 1.45. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||