<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE rfc [
<!ENTITY nbsp "&#160;">
<!ENTITY zwsp "&#8203;">
<!ENTITY nbhy "&#8209;">
<!ENTITY wj "&#8288;">
]>
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
<?rfc toc="yes"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes"?>
<?rfc iprnotified="no"?>
<?rfc strict="yes"?>
<?rfc compact="yes"?>
<?rfc subcompact="no"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" category="std" docName="draft-song-broadband-ancp-tsf-00" ipr="trust200902" submissionType="IETF" obsoletes="" updates="" xml:lang="en" tocInclude="true" symRefs="true" sortRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.22.0 -->
  <front>
    <title abbrev="ANCP Extensions for TSF">TSF Extensions to ANCP in CU Separation Broadband Networks</title>
    <seriesInfo name="Internet-Draft" value="draft-song-broadband-ancp-tsf-00"/>
    <author fullname="Xueyan Song" initials="X." surname="Song">
      <organization>ZTE Corp.</organization>
      <address>
	   <postal>
	    <country>CN</country>
	   </postal>
        <email>song.xueyan2@zte.com.cn</email>
      </address>
    </author>
    <date/>

  <abstract>
      <t>
	  This document specifies a Traffic Steering Function (TSF) capability
   extension to the Access Node Control Protocol (ANCP), to discover and manage disaggregated
   user-plane (UP) functions in control/user plane separated networks,
   including the Access Network User Plane (AN-UP) and the Network Access Server User Plane (NAS-UP).  
      </t>
    </abstract>
	
  </front>
      <!-- end of abstract -->	
	  
  <middle>
   <section anchor="motivation" numbered="true" toc="default">
     <name>Background and Motivation</name>	  
	 <t>
   ANCP <xref target="RFC6320"/> was designed for communication between the Access Node (AN, e.g., a DSLAM) and the
   Network Access Server (NAS, e.g., a BNG).  With the cloudification
   of metro networks, both the AN and the NAS are gradually evolving into
   control/user plane separated network functions.
   For example, an OLT is decomposed into AN-CP and AN-UP functions,
   and a BNG is decomposed into NAS-CP (BNG-CP) and NAS-UP (BNG-UP)
   functions.	 
	 </t>
	 <t>
   The BBF TR-474 architecture defines Session
   Steering Context (SSC), in which a User Plane Selection Function (UPSF)
   acts as the policy hub that selects the optimal user-plane
   functions for subscriber sessions.  TR-474 defines the functional
   roles and requirements, but does not specify a protocol for user-
   plane discovery and capability reporting between the UPSF and the
   control-plane functions.
	 </t>
     <t>
   ANCP already runs between access control entities, and it has an extensible
   TLV machinery and a capability negotiation mechanism in the
   Adjacency message.  This document defines a TSF
   capability extension to ANCP that allows AN-CP and NAS-CP to
   report the device information, capabilities, connectivity, and
   status of the user-plane functions they manage (AN-UP on the OLT,
   NAS-UP on the BNG) to a UPSF.
     </t>
	</section>
    <!-- end of introduction -->
	

    <section numbered="true" toc="default">
      <name>Conventions and Definitions</name>

     <t>
   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
   "OPTIONAL" in this document are to be interpreted as described in
   BCP 14 <xref target="RFC2119"/><xref target="RFC8174"/> when, and only when, they appear in all
   capitals, as shown here.
     </t>
     <t>
   This section repeats some definitions from <xref target="RFC6320"/> and <xref target="RFC6934"/>
   and adds terms from BBF TR-474.
     </t>   
		
     <t>Access Node Control Plane (AN-CP): The control-plane function of TSF.
         In the BBF TR-474 architecture, the TSF-CP corresponds to the
         Traffic Steering Function control plane (TSF-CP).</t>  
     <t>Access Node User Plane (AN-UP): The user-plane function of a disaggregated Access Node,
         e.g., the forwarding function of an OLT.  In the BBF TR-474 architecture, the AN-UP corresponds to the
         Traffic Steering Function user plane (TSF-UP).</t> 
     <t>Network Access Server Control Plane (NAS-CP): The control-plane function of a disaggregated NAS, e.g., the
         BNG-CP.  In the BBF TR-474 architecture, the NAS-CP corresponds
         to the Service Gateway control plane (SG-CP), which can be BNG-CP, FMIF-CP, AGF-CP, etc.</t> 
     <t>Network Access Server User Plane (NAS-UP): The user-plane function of a disaggregated NAS, e.g., the
         BNG-UP, FMIF-UP, AGF-UP, etc.</t>	  
     <t>Traffic Steering Function (TSF): The access-side function defined in BBF TR-474 that decides
         which user-plane instance a subscriber session should be
         steered to.</t>	
     <t>User Plane Selection Function (UPSF): The policy hub defined in BBF TR-474 that collects user-plane
         information and establishes subscriber-to-user-plane
         mappings.</t>	
     <t>Subscriber Session Context (SSC): The BBF TR-474 framework for dynamically steering subscriber
         sessions to optimal user-plane instances based on policy
         (e.g., QoS, load, location).</t>			 		
    </section>
    <!-- end of terminology -->

<!-- ===================================================================== -->

    <section anchor="architecture" numbered="true" toc="default">
      <name>Reference Architecture</name>
      <t>
     Figure 1 shows the reference architecture for TSF functionaility used in C/U separation broadband networks.
      </t>

    <figure anchor="tsf-capability-extension">
        <name>Reference Architecture for TSF Capability Extension</name>
        <artwork name="" type="" align="left" alt="">
    <![CDATA[
                         +------------------+
                         |      UPSF        |
                         |  (TR-474 policy  |
                         |      hub)        |
                         +--------+---------+
                 TSF adjacency|    |TSF adjacency
            +-----------------+    +---------------+
            |                                      |
   +--------+---------+                    +-------+--------+
   |      AN-CP       |                    |     NAS-CP     |
   |  (TSF-CP, on OLT |                    |  (SG-CP,       |
   |   control plane) |                    |   BNG-CP)      |
   +--------+---------+                    +-------+--------+
            | management/                        | management/
            | provisioning                       | provisioning
   +--------+---------+                    +-------+--------+
   |      AN-UP       |   AN-UP <-> NAS-UP |     NAS-UP     |
   |  (OLT forwarding,|   user-plane path  |   (BNG-UP)     |
   |   e.g., PON)     |<------------------>|                |
   +------------------+                    +----------------+ 

       ]]></artwork>
       </figure>
        <t>
       Two new ANCP adjacencies are introduced:
        </t>
        <t>
       UPSF to AN-CP: the UPSF discovers and manages the AN-UP
      functions administered by the AN-CP (e.g., the OLT user plane).
        </t>
        <t>
       UPSF to NAS-CP: the UPSF discovers and manages the NAS-UP
      functions administered by the NAS-CP (e.g., BNG-UP instances).
        </t>		
    </section>  

	<section numbered="true" toc="default">
     <name>TSF Capability in the ANCP Adjacency Message</name>
      <t>
     Capability negotiation uses the ANCP Adjacency message (Message
   Type which has value 10) defined in Section 3.5.1 of <xref target="RFC6320"/>.  A new capability is
   defined:
      </t>

      <t>Capability Type: TSF (Traffic Steering Function)</t>
      <t>Access technology: 0 (Not technology dependent) </t>
      <t>Length: The number of bytes of data contained
      in the Capability Data sub-field, excluding padding.  If the
      definition of a particular capability includes no capability data,
      the value of the Capability Length sub-field is zero.</t> 
      <t>Capability Data: Contains data
      associated with the capability as specified for that capability.</t>	
   <t>
   A node advertises the TSF capability only on adjacencies that are
   provisioned for TSF operation, i.e., toward a peer that is known
   to implement this extension (e.g., a UPSF).  Per the capability
   negotiation rules of <xref target="RFC6320"/>, if the TSF capability is not
   advertised by both peers, TSF procedures MUST NOT be used on that
   adjacency, and TSF messages received on such an adjacency MUST be
   silently discarded.  
   </t>	
	</section>  

<!-- ===================================================================== -->

	   
  <section anchor="tsf-report-message" numbered="true" toc="default">
      <name>TSF UP Report Message</name>
	  <t>
     The TSF UP Report message is used by AN-CP and NAS-CP to report
   the information of the user-plane functions they manage to the
   UPSF.  The format follows the format of the ANCP Port Up and Port Down Event 
   messages defined in section 6.3 of <xref target="RFC6320"/>.
      </t>	  

    <figure anchor="tsf-up-report">
        <name>TSF UP Report Message Format</name>
        <artwork name="" type="" align="left" alt="">
    <![CDATA[
     0                   1                   2                   3
     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |     TCP/IP Encapsulating Header  (section 3.2 of RFC6320)     |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                ANCP General Message Header                    |
    +                (section 3.6.1 of RFC6320)                     +
    |                                                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |x|x|x|x|x|x|x|x| Message Type  |   Tech Type   |  Reserved     |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |     # of TLVs                 | Extension Block length (bytes)|
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                                                               |
    ~                     TSF TLVs (Section 6)                      ~
    |                                                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
       ]]></artwork>
       </figure>	  
	  <t>
     In the ANCP general message header, the Message Type field MUST be
   set to TBD2.  The Result
   field MUST be set to zero (Ignore), the
   Result Code and Transaction Identifier fields MUST be set to zero.
      </t>		  

          <t>Extension Flags (8 bits): reserved, MUST be set to zero.</t>
          <t>Message Type (8 bits): TBD2.</t>
          <t>Tech Type (8 bits): MUST be set to 0 (Not technology dependent).</t> 
          <t>Reserved (8 bits): set as described in Section 3.4 of <xref target="RFC6320"/>.</t>
          <t># of TLVs (16 bits): number of TLVs that follow.</t>
          <t>Extension Block Length (16 bits): total length of the TLVs in
   bytes, including padding.</t>
          <t>A TSF UP Report message contains at least one or more UP report TLV
   identifying the reported user-plane function.  It is sent to the</t>
         <t>UPSF: once, for each managed UP function, after the TSF-capable
      adjacency has been established; and whenever the reported information changes (e.g., UP status
      change, new capability, connectivity change).</t>	  		 		  
	</section> 
	
	<section numbered="true" toc="default">
       <name>TSF TLVs</name>
	  <t>
     All TLVs use the TLV format of <xref target="RFC6320"/> Section 3.6.2 (16-bit
   Type, 16-bit Length, variable Value). The Type values below are suggested to be included to report TSF data.
   which are marked TBD3 through TBD6.
      </t>	
	  
	   <section numbered="true" toc="default">
        <name>UP-Device-Info TLV</name>

          <t>Type: TBD3</t>
          <t>Description: Identifies a user-plane function managed by the
      sending AN-CP or NAS-CP, e.g., an AN-UP on an OLT or a NAS-UP
      (BNG-UP) instance.</t>
          <t>Length: Variable</t> 
          <t>Value: locally unique within the scope of the
      sending control-plane function (e.g., a device identifier in
      the style of the circuit identifiers defined in BBF TR156).</t>  		 
	   </section> 
	   
	   <section numbered="true" toc="default">
        <name>UP-Capability TLV</name>
          <t>Type: TBD4</t>
          <t>Description: Lists the capability descriptors of the reported
      user-plane function.</t>
          <t>Length: Variable</t> 
          <t>Value: One or more capability descriptors, each of the form as figure below:</t>  		 
	
     <figure anchor="capability-tlv">
        <name>Capability TLV</name>
        <artwork name="" type="" align="left" alt="">
    <![CDATA[
         +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
         |      Capability Type (16)     |    Length (16)|
         +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
         ~              Value (optional)                 ~
         +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

       ]]></artwork>
       </figure>
	  <t>
      Capability Type is taken from the "ANCP TSF Capability Type"
      registry. Initial values:
      </t>	
          <t>1 = low-latency forwarding</t>
          <t>2 = high-throughput forwarding</t>
          <t>3 = low-loss forwarding</t> 
          <t>4 = customized service (operator-defined)</t>  		 
	  <t>
      Value is optional and carries a parameter for the capability
      (e.g., a latency class), its semantics are capability-specific.
      </t>			
	   </section> 	   
	   
	   
	   <section numbered="true" toc="default">
        <name>UP-Connection-Info TLV</name>

          <t>Type: TBD5</t>
          <t>Description: Describes how the reported user-plane function is
      reachable, i.e., the network-side (NNI-side) connectivity that
      a peer user-plane function would use to reach it.</t>
          <t>Length: Variable</t> 
          <t>Value: One or more connection descriptors, each of the form:</t>  		 

     <figure anchor="conection-tlv">
        <name>Conection TLV</name>
        <artwork name="" type="" align="left" alt="">
    <![CDATA[
         +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
         |      Connection Type (16)     |    Length (16)|
         +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
         ~                   Value                       ~
         +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

       ]]></artwork>
       </figure>
	  <t>
      Connection Type is taken from the "ANCP TSF Connection Type"
      registry.  Initial values:
      </t>	

          <t>1 = physical port (Value: port identifier)</t>
          <t>2 = VLAN interface (Value: 4-byte VLAN ID, network byte
             order)</t>
          <t>3 = tunnel (Value: opaque tunnel identifier, e.g., an MPLS
             label or SRv6 SID)</t>  	 
	  <t>
      Value is optional and carries a parameter for the connection information.
      </t>			
	   </section> 	   
	   
	   <section numbered="true" toc="default">
        <name>UP-Status TLV</name>
          <t>Type: TBD6</t>
          <t>Description: Reports the status of the reported user-plane
      function.</t>
          <t>Length: 1 byte</t> 
          <t>Value: 0 = up, 1 = down, 2 = admin-down, 3 = unknown</t>  			 
	   </section> 
    </section> 
	
    <!-- end of ANCP TLVs -->

<!-- ===================================================================== -->

<section numbered="true" toc="default">
      <name>Security Considerations </name>
        <t>
       This document does not introduce additional security
   considerations beyond those discussed in <xref target="RFC6320" format="default"/> 
   and <xref target="RFC6934" format="default"/>.
   TSF UP Report messages reveal network topology, user-plane
   capabilities, and connectivity information; they SHOULD be
   exchanged only over the trusted control-plane connectivity used
   for ANCP adjacencies, and adjacency formation SHOULD follow the
   validation rules of <xref target="RFC6320" format="default"/>.
        </t>
    </section>
    <!-- end of security -->

<!-- ===================================================================== -->
	  
	   
<section numbered="true" toc="default">
      <name>IANA Considerations </name>
        <t>
       This document requests IANA to make the following allocations in
   the "Access Node Control Protocol (ANCP) Parameters" registries.
        </t>
		
	<section numbered="true" toc="default">
      <name>ANCP Capability Type Registry</name>	
             <t>Type: TBD1</t>
             <t>Name: TSF Capability</t>  
             <t>Length: 0 or 2 bytes</t>
             <t>Value: TSF capability data</t> 
             <t>Reference: This document</t>		 	
	</section>
		
	<section numbered="true" toc="default">
      <name>ANCP Message Type Registry</name>	
             <t>Type: TBD2</t>
             <t>Name: TSF UP Report</t>  
             <t>Length: 0 or 2 bytes</t>
             <t>Value: A TSF UP Report message contains at least one UP-Device-Info TLV
   identifying the reported user-plane function. </t> 
             <t>Reference: This document</t>		
	</section>
	
	<section numbered="true" toc="default">
      <name>ANCP TLV Type Registry</name>			
       <table anchor="ANCP-TLV" align="center">
        <name>ANCP TLV Type Registry</name>
        <thead>
          <tr>
            <th align="left">Type Code</th>
            <th align="left">TLV Name  </th>				
            <th align="left">Reference</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">TBD3</td>
            <td align="left">UP-Device-Info</td>			
            <td align="left">This document</td>
          </tr>
          <tr>
            <td align="left">TBD4</td>
            <td align="left">UP-Capability </td>			
            <td align="left">This document</td>
          </tr>          
		  <tr>
            <td align="left">TBD5</td>
            <td align="left">UP-Connection-Info </td>			
            <td align="left">This document</td>
          </tr>
          <tr>
            <td align="left">TBD6</td>
            <td align="left">UP-Status</td>			
            <td align="left">This document</td>
          </tr>
         </tbody>
      </table>
    </section>
</section>
    <!-- end of IANA -->

<!-- ===================================================================== --> 


  </middle>  
    <!-- end of middle -->	  
	
  <back>
  <references>
     <name>References</name>	  
	  <references>
      <name>Normative References</name>	  
        <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml"/>
        <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml"/>
        <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.6320.xml"/>
	  </references>	
	  <references>
      <name>Informative References</name>
         <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.6934.xml"/>
	  </references>
  </references>
  </back>
    <!-- end of middle -->	 
	
  </rfc>
