<?xml version="1.0" encoding="us-ascii"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd"[]>
<?rfc toc="yes" ?>
<?rfc tocompact="yes"?>
<?rfc tocdepth="4"?>
<?rfc tocindent="yes"?>
<?rfc symrefs="yes" ?>
<?rfc sortrefs="no"?>
<?rfc rfcedstyle="yes"?>
<?rfc subcompact="no"?>
<?rfc compact="yes" ?>
<?rfc iprnotified="Yes" ?>
<?rfc strict="no" ?>
<rfc ipr="trust200902" category="std" docName="draft-li-rtgwg-apn-framework-01" obsoletes="" updates="" submissionType="IETF" xml:lang="en">
  <front>
    <title abbrev="APN Framework">Application-aware Networking (APN)
    Framework</title>

    <author fullname="Zhenbin Li" initials="Z. " surname="Li">
      <organization>Huawei Technologies</organization>

      <address>
        <postal>
          <street/>

          <city/>

          <code/>

          <country>China</country>
        </postal>

        <email>lizhenbin@huawei.com</email>
      </address>
    </author>

    <author fullname="Daniel Voyer" initials="D." surname="Voyer">
      <organization>Bell Canada</organization>

      <address>
        <postal>
          <street/>

          <city/>

          <region/>

          <code/>

          <country>Canada</country>
        </postal>

        <phone/>

        <facsimile/>

        <email>daniel.voyer@bell.ca</email>

        <uri/>
      </address>
    </author>

    <author fullname="Cong Li" initials="C." surname="Li">
      <organization>China Telecom</organization>

      <address>
        <postal>
          <street/>

          <city/>

          <region/>

          <code/>

          <country>China</country>
        </postal>

        <phone/>

        <facsimile/>

        <email>licong@chinatelecom.cn</email>

        <uri/>
      </address>
    </author>

    <author fullname="Peng Liu" initials="P." surname="Liu">
      <organization>China Mobile</organization>

      <address>
        <postal>
          <street/>

          <city/>

          <region/>

          <code/>

          <country>China</country>
        </postal>

        <phone/>

        <facsimile/>

        <email>liupengyjy@chinamobile.com</email>

        <uri/>
      </address>
    </author>

    <author fullname="Chang Cao" initials="C." surname="Cao">
      <organization>China Unicom</organization>

      <address>
        <postal>
          <street/>

          <city/>

          <region/>

          <code/>

          <country>China</country>
        </postal>

        <phone/>

        <facsimile/>

        <email>caoc15@chinaunicom.cn</email>

        <uri/>
      </address>
    </author>

    <author fullname="Gyan Mishra" initials="G." surname="Mishra">
      <organization>Verizon Inc.</organization>

      <address>
        <postal>
          <street/>

          <city/>

          <region/>

          <code/>

          <country>USA</country>
        </postal>

        <phone/>

        <facsimile/>

        <email>gyan.s.mishra@verizon.com</email>

        <uri/>
      </address>
    </author>

    <author fullname="Nan Geng" initials="N. " surname="Geng">
      <organization>Huawei Technologies</organization>

      <address>
        <postal>
          <street/>

          <city/>

          <code/>

          <country>China</country>
        </postal>

        <email>gengnan@huawei.com</email>
      </address>
    </author>

    <date  />

    <abstract>
      <t>A multitude of applications are carried over the network, which have
      varying needs for network bandwidth, latency, jitter, and packet loss,
      etc. Some new emerging applications have very demanding performance
      requirements. However, in current networks, the network and applications
      are decoupled, that is, the network is not aware of the applications'
      requirements in a fine granularity. Therefore, it is difficult to
      provide truly fine-granularity traffic operations for the applications
      and guarantee their SLA requirements.</t>

      <t>This document proposes a new framework, named Application-aware
      Networking (APN), where application-aware information (i.e. APN
      attribute) including APN identification (ID) and/or APN parameters (e.g.
      network performance requirements) is encapsulated at network edge
      devices and carried in packets traversing an APN domain in order to
      facilitate service provisioning, perform fine-granularity traffic
      steering and network resource adjustment.</t>
    </abstract>
  </front>

  <middle>
    <section title="Introduction">
      <t>A multitude of applications are carried over the network, which have
      varying needs for network bandwidth, latency, jitter, and packet loss,
      etc. Some applications such as online gaming and live video streaming
      have very demanding network requirements and therefore require special
      treatment in the network. However, in current networks, the network and
      applications are decoupled, that is, the network is not aware of the
      applications' requirements in a fine granularity. Therefore, it is
      difficult to provide truly fine-granularity traffic operations for the
      applications and guarantee their SLA requirements accordingly. <xref
      target="I-D.li-apn-problem-statement-usecases"/> describes the
      challenges of traditional differentiated service provisioning methods,
      such as five tuples used for ACL/PBR causing coarse granularity as well
      as orchestration and SDN-based solution causing long control loops.</t>

      <t>This document proposes a new framework, named Application-aware
      Networking (APN), where application-aware information (APN attribute)
      including application-aware identification (APN ID) and
      application-aware parameters (APN Parameters), is encapsulated at
      network edge devices and carried along with the encapsulation of the
      tunnel used by the packet when traversing the APN domain. By APN domain we intend the operator infrastructure where APN is used from edge to edge (ingress to egress) and where the packet is encapsulated using an outer header incorporating the APN information. The APN
      attribute will facilitate service provisioning and provide
      fine-granularity services in the APN domain.</t>

      <t>The APN attribute is acquired at the ingress of the APN domain based on the existing information in the incoming packet header (i.e. source and destination addresses, incoming L2	(or) MPLS encapsulation, incoming physical/virtual port information, the other fields of the 5-tuple if they are not encrypted) in the edge devices. The APN information is then added to the data packets along with the tunnel encapsulation. The packet traverses the domain and, when exiting the domain, the outer header along with the APN information is removed.</t>

      <t>APN aims to leverage the ability to apply policies to traffic flows entering into the infrastructure (APN domain). For example, at the headend (ingress) traffic is steered into a given path/policy, at a midpoint node the corresponding performance measurement data is collected, and at a service node a given function is executed.</t>

      <t>APN assumes traffic is tunnel encapsulated edge-to-edge tunnel encapsulation within a limited trusted domain. It means that the source and destination addresses of the packet are the endpoints of the tunnel (i.e. the domain edges), and nothing about the payload source and destination can be deduced, which substantially reduces the privacy concerns. Typically, an APN domain
      is defined as a Network Operator controlled limited domain (see Figure
      1), in which MPLS, VXLAN, SR/SRv6 and other tunnel technologies are
      adopted to provide network services.</t>
    </section>

<section title="Requirements Language">
      <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">RFC 2119</xref> <xref target="RFC8174">RFC 8174</xref> when, and only when, they appear in all
capitals, as shown here. </t>
    </section>

    <section title="Terminology">
      <t>ACL: Access Control List</t>

      <t>APN: Application-aware Networking</t>

      <t>APN6: Application-aware Networking for IPv6/SRv6</t>

      <t>LB: Load Balancing</t>

      <t>MPLS: Multiprotocol Label Switching</t>

      <t>PBR: Policy Based Routing</t>

      <t>QoE: Quality of Experience</t>

      <t>SDN: Software Defined Networking</t>

      <t>SLA: Service Level Agreement</t>

      <t>SR: Segment Routing</t>

      <t>SR-MPLS: Segment Routing over MPLS dataplane</t>

      <t>SRv6: Segment Routing over IPv6 dataplane</t>
    </section>

    <section title="APN Framework and Key Components">
      <t>The APN framework is shown in <xref target="FRAMEWORKFIG"/>. The key
      components include App-aware Edge Device (APN-Edge), App-aware-process
      Head-End (APN-Head), App-aware-process Mid-Point (APN-Midpoint),
      App-aware-process End-Point (APN-Endpoint), and APN-Controller. The key
      interfaces include both the Northbound Interface (NBI) and the Southbound 
	  Interface (SBI) of the APN-Controller. </t>

      <t>Packets carry application characteristic information (i.e. APN
      attribute) which includes the following information:</t>

      <t><list style="symbols">
          <t>Application-aware identification (APN ID): identifies the set of
          attributes, indicating that all packets belonging to the same flow
          will be given the same treatment by the network. APN ID is mandatory. </t>

          <t>Application-aware parameters (APN parameters): The typical
          application-aware parameters are the network performance requirement
          parameters including bandwidth, delay, delay variation, packet loss
          ratio, etc. APN parameters are optional. </t>
        </list><figure align="center" anchor="FRAMEWORKFIG"
          title="Framework and Key Components">
          <artwork><![CDATA[	  
		  
                          +------------------+
                          |   APN-Customer   |
                          +------------------+
                                   | 
                                   | NBI
                                   | 
                          +------------------+
                   -------|  APN-Controller  |--------
                  /       +------------------+        \
Client           /       /         |          \        \           Server
+-----+         /       /          | SBI       \        \          +-----+
|App x|-\      |       |           |            |        |      /->|App x|
+-----+ |   +-----+ +-----+   +---------+   +--------+ +-----+  |  +-----+
         \->|APN  | |APN  |-A-|APN      |-A-|APN     | |APN  |->/        
User side   |-    |-|-    |-B-|-        |-B-|-       |-|-    |      
         /->|Edge | |Head |-C-|Midpoint |-C-|Endpoint| |Edge |->\        
+-----+ |   +-----+ +-----+   +---------+   +--------+ +-----+  |   +-----+
|App y|-/      |------------------APN Domain--------------|      \->|App y|
+-----+                                                             +-----+

]]></artwork>
        </figure></t>

      <t>The key components are introduced as follows.<list style="symbols">
          <t>App-aware Edge Device (APN-Edge): this network device receives
          packets from applications and obtains the APN attribute based on the
          configuration on this device according to the existing information
          in the packet header, such as 5-tuple, VLAN or double VLAN tagging
          (C-VLAN and S-VLAN). The APN-Edge device adds the APN attribute in
          the tunnel encapsulation. The packets carrying the APN attribute
          will be sent to the APN-Head, and the APN attribute will be used to
          apply various policies in different nodes along the network path
          onto the traffic flow, e.g., at the headend to steer into
          corresponding path satisfying SLAs, at the midpoint to collect
          corresponding performance measurement data, at the service function
          to execute particular policies. When the packets leave the APN
          domain, the APN attribute will be removed together with the tunnel
          encapsulation.</t>

          <t>App-aware-process Head-End (APN-Head): This network device
          receives packets from the APN-Edge, obtains the APN attribute, and
          initiates the corresponding process. Generally, in order to satisfy
          different SLA requirements, a set of paths, tunnels or SR policies,
          are set up between the APN-Head and the APN-Endpoint. These multiple
          parallel paths have different SLA guarantees. The APN-Head maintains
          the matching relationship between the APN attribute and the paths
          between the APN-Head and the APN-Endpoint. The APN-Head determines
          the path between the APN-Head and the APN-Endpoint according to the
          APN attribute carried in the packets and the matching relationship
          with it, which satisfies the service requirements of the
          applications. The APN-Head forwards the packets along the path. The
          APN attribute conveyed by the packet received from the APN-Edge can
          also be copied or be mapped to the outgoing packet header.</t>

          <t>App-aware-process Mid-Point (APN-Midpoint): the APN-Midpoint
          provides the path service and enforces various policies according to
          the APN attribute carried in the packets. The APN-Midpoint may also
          adjust the resource locally to guarantee the service requirements
          depending on a specific policy and the APN attribute conveyed by the
          packet. Policy definitions and mechanisms are out of the scope of
          this document.</t>

          <t>App-aware-process End-Point (APN-Endpoint): the process of the
          specific service path will end at the APN-Endpoint. If the outer
          tunnel header for the path between the APN-Head and the APN-Endpoint
          exists, it will be removed by the APN-Endpoint. If the APN attribute
          is copied or mapped to the outer tunnel header by the APN-Head, it
          will also be removed along with the outer tunnel header.</t>
		  
		          </list></t>
		  
		  <t>Note that, the APN-Edge can co-exist
      with the APN-Head or APN-Endpoint, that is, one network device can
      implement the functionalities of both APN-Edge and the APN-Head/APN-Endpoint.</t>
	  
		  <t><list style="symbols">
		  <t>APN-Controller: the APN-Controller is a functional block
      responsible for planning and execution of how the APN attribute
      are allocated and maintained. It collects the service requirements using a NBI (northbound interface) and signals the APN related policies to the network devices using SBI (southbound interfaces). To be more specific, the APN related policies include the APN-marking policy (i.e., the matching state in order for the node to classify and encapsulate the incoming packet with the desired APN Information) being pushed on the APN-Edge, and the APN-servicing policy (i.e., the APN state in order to fulfill the service requirements using e.g. traffic steering and performance measurement) on the APN-Head, APN-Midpoint, APN-Endpoint. </t>
		  
		  <t>APN-Customer: the APN-Customer manages the APN network services <xref
          target="I-D.li-apn-problem-statement-usecases"/> using the 
		  APN customer service model, which describes the requirements on the APN 
		  network services from the point of view of the APN customer. </t>
		  
        </list></t>
	  
	  <t>The key interfaces are introduced as follows.<list style="symbols">
          <t>The Northbound Interface (NBI) of the APN-Controller: the requirements 
		  described in the APN service model by the APN-Customer is enforced via this 
		  interface to the APN-Controller, which will be translated into the APN policies, 
		  i.e., the APN-marking policy and the APN-servicing policy, in the APN-Controller.</t>

          <t>The Southbound Interface (SBI) of the APN-Controller: the APN-marking policy 
		  and the APN-servicing policy are enforced via this interface from the APN-Controller 
		  to the relevant network devices. The candidate protocols for this interface are 
		  PCEP, BGP, YANG-based protocols (NETCONF/RESTCONF), etc. </t>
		  
        </list></t>
		
		<t>These interfaces also include the operational status and monitoring information. </t>
    </section>

    <section anchor="REQUIREMENTS" title="APN Requirements ">
      <t>This section specifies the requirements for supporting the APN
      framework, including the requirements for conveying and handling the APN
      attribute.</t>

      <section title="APN Attribute Conveying Requirements">
        <t>The APN attribute consists of APN ID and APN parameters.</t>

        <t>APN ID includes the following identifiers (IDs),<list
            style="symbols">
            <t>Application Group ID: identifies an application group of the
            traffic.</t>

            <t>User Group ID: identifies the user group of the traffic.</t>
          </list></t>

        <t>APN ID can be acquired through different ways. In the APN framework it
        MUST be acquired according to the existing available information in
        the packet header without inspection of the payload.</t>

        <t>The different combinations of the IDs can be used to provide
        different granularity of the service provisioning and SLA guarantee
        for the traffic.</t>

        <t>The APN parameters are the network performance requirement
        parameters. The network service requirement can include the following
        parameters:<list style="symbols">
            <t>Bandwidth: the bandwidth requirement</t>

            <t>Latency: the latency requirement</t>

            <t>Packet loss ratio: the packet loss ratio requirement</t>

            <t>Jitter: the jitter requirement</t>
          </list>The different combinations of the parameters are for further
        expressing the more detailed service requirements, conveyed together
        with the APN ID, which can be used to match to appropriate tunnels/SR
        Policies and queues that can satisfy these service requirements.</t>

        <t>APN attribute MUST be encapsulated within tunnels in the network
        layer. The tunnels include but not limit to MPLS, VxLAN, SR-MPLS, and
        SRv6. It can be extended according to requirements in the future.</t>

        <t>[REQ 1a]. APN ID SHOULD include Application Group ID to indicate
        the application group that the packet belongs to.</t>

        <t>[REQ 1b]. APN ID SHOULD include User Group ID to indicate the user
        group that the packet belongs to.</t>

        <t>[REQ 1c]. APN ID MUST include either Application Group ID or User
        Group ID.</t>

        <t>[REQ 1d]. APN ID MUST be acquired from the existing available
        information of the packet header without interference into the
        payload.</t>

        <t>[REQ 1e]. APN parameters is OPTIONAL.</t>

        <t>[REQ 1f]. APN attribute MUST be carried by the outer tunnel
        encapsulation.</t>

        <t>[REQ 1g]. All the nodes along the path SHOULD be able to process
        the APN attribute if needed.</t>

        <t>[REQ 1h]. The APN attribute is generated by the APN-Edge though
        local policy.</t>

        <t>[REQ 1i]. The APN attribute SHOULD be kept intact when directly
        copied at the APN-Head and carried in the tunnel encapsulation.</t>

        <t>[REQ 1j]. The APN attribute MUST be removed along with the tunnel
        encapsulation by the APN-Edge when the packets leave the APN
        domain.</t>
		
		<t>[REQ 1k]. The APN attribute MUST NOT be encrypted when the APN packet is itself encrypted (e.g., the APN tunnel across the APN domain uses IPsec). </t>

        <section title="Protocol Extensions Requirements">
          <t>The APN attribute is conveyed with the tunnel encapsulation.
          There are two typical types of tunnels: <list style="symbols">
              <t>MPLS-based tunnel: LDP tunnel, RSVP-TE tunnel, SR-MPLS tunnel
              or policy, etc.</t>

              <t>IPv6-based tunnel: IPv6-based VxLAN tunnel, IPv6-based UDP
              tunnel, IPv6-based GRE tunnel, SRv6 tunnel or policy, etc.</t>
            </list> In order to support encapsulation of APN attribute, the
          MPLS data plane and IPv6 data plane need to be extended.</t>

          <t>In order to support acquiring the APN attribute according to the
          existing available information in the packet header, YANG models
          should be defined to configure the mapping between the
          application/user group ID and the existing information in the packet
          header and configure the corresponding APN attribute for the
          application/user group. It can also be implemented with protocol
          extensions such as BGP/BGP-LS and PCEP which can advertise the information
          from the central controller to the APN-Edge.</t>

          <t>In addition, in the APN domain, the above-mentioned mapping and
          applying APN parameters may also be advertised from the
          APN-Edge/APN-Head to other devices or from the network devices to
          the central controller in the APN domain. IGP extensions or BGP-LS
          extensions should be introduced to achieve the purposes.</t>

          <t>[REQ 1-1a] MPLS encapsulation SHOULD be extended to be able to
          carry the APN attribute for MPLS-based tunnels.</t>

          <t>[REQ 1-1b] IPv6 encapsulation SHOULD be extended to be able to
          carry the APN attribute for IPv6-based tunnels.</t>

          <t>[REQ 1-1c] YANG models SHOULD be defined to implement the mapping
          between the application/user group ID and the existing available
          information in the packet header and configure the corresponding APN
          parameters.</t>

          <t>[REQ 1-1d] BGP extensions SHOULD be defined to advertise the
          mapping between the application/user group ID and the existing
          available information in the packet header and the corresponding APN
          parameters from the central controller to the APN-Edge in the APN
          domain.</t>

          <t>[REQ 1-1e] PCEP extensions SHOULD be defined to advertise the
          mapping between the application/user group ID and the existing
          available information in the packet header and the corresponding APN
          parameters from the central controller to the APN-Edge in the APN
          domain.</t>

          <t>[REQ 1-1f] IGP extensions SHOULD be defined to advertise the
          mapping between the application/user group ID and the existing
          available information in the packet header and the corresponding APN
          parameters from the APN-Edge to the network devices in the APN
          domain.</t>

          <t>[REQ 1-1g] BGP-LS extensions SHOULD be defined to advertise the
          mapping between the application/user group ID and the existing
          available information in the packet header and the corresponding APN
          parameters from the network devices to the central controller in the
          APN domain.</t>
        </section>
      </section>

      <section title="APN attribute Handling Requirements">
        <t>The APN Head and APN-Midpoint perform matching operation against
        the APN attribute, that is, to match IDs and/or service requirements
        to the corresponding network resources such as tunnels/SR policies and
        queues.</t>

        <section title="Fine granular SLA Guarantee">
          <t>In order to achieve better Quality of Experience (QoE) of end
          users and engage customers, the network needs to be able to provide
          fine-granularity SLA guarantee <xref
          target="I-D.li-apn-problem-statement-usecases"/>.</t>

          <t>[REQ 2-1a]. With the APN attribute, the APN-Head SHOULD be able
          to steer the traffic to the tunnel/SR policy that satisfies the
          matching operation.</t>

          <t>[REQ 2-1b]. With the APN attribute, the APN-Head SHOULD be able
          to trigger the setup of the tunnel/SR policy that satisfies the
          matching operation.</t>

          <t>[REQ 2-1c]. With the APN attribute, the APN-Head and APN-Midpoint
          SHOULD be able to steer the traffic to the queue that satisfies the
          matching operation.</t>

          <t>[REQ 2-1d]. With the APN attribute, the APN-Head and APN-Midpoint
          SHOULD be able to trigger the configuration of the queue that
          satisfies the matching operation.</t>

          <t>[REQ 2-1e]. If the tunnels are used to satisfy the performance
          requirements, the APN-Head SHOULD be able to copy or map the APN
          attribute conveyed by the packet received from the APN-Edge to the
          outer tunnel header.</t>

          <t>[REQ 2-1f]. If the tunnels are used to satisfy the performance
          requirements and the APN attribute are conveyed along with the outer
          tunnel, the APN-Endpoint MUST remove the APN attribute along with
          the outer tunnel.</t>
        </section>

        <section title="Fine granular network slicing">
          <t>Network Slicing provides the ability to define a number of isolated network slices having different set of requirements.</t>

          <t>APN is to help the operator of a network to steer some of the
          traffic tagged with an APN attribute to a certain network slice
          based on the SLA agreement with its customer.</t>

          <t>[REQ 2-2a]. With the APN attribute, the APN-Head SHOULD be able
          to steer the traffic to the slice that satisfies the matching
          operation.</t>

          <t>[REQ 2-2b]. With the APN attribute, the APN-Midpoint SHOULD be
          able to associate the traffic to the resources in the slice that
          satisfies the matching operation.</t>
        </section>

        <section title="Fine granular deterministic networking ">
          <t>Along the path each node needs to provide guaranteed bandwidth,
          bounded latency, and other properties relevant to the transport of
          time-sensitive data for the Detnet flows that coexist with the
          best-effort traffic.</t>

          <t>APN is to help the operator of a network to steer some of the
          traffic tagged with an APN attribute to a certain deterministic path
          based on the SLA agreement with its customer.</t>

          <t>[REQ 2-3a]. With the APN attribute, the APN-Head MUST be able
          to steer the traffic to the appropriate path that satisfies the
          matching operation.</t>

          <t>[REQ 2-3b]. With the APN attribute, the APN-Head MUST be able
          to trigger the setup of the appropriate path that satisfies the
          matching operation for the Detnet flows.</t>

          <t>[REQ 2-3c]. With the APN attribute, the APN-Midpoint MUST be
          able to associate the traffic to the resources along the path that
          satisfies the performance guarantee.</t>

          <t>[REQ 2-3d]. With the APN attribute, the APN-Midpoint MUST be
          able to reserve the resources for the Detnet flows along the path
          that satisfies the performance guarantee.</t>
        </section>

        <section title="Fine granular service function chaining">
          <t>The end-to-end service delivery often needs to go through various
          service functions, including traditional network service functions
          such as firewalls, LB as well as new application-specific functions,
          both physical and virtual. SFC is applicable to both fixed and
          mobile networks as well as data center networks.</t>

          <t>APN is to help the operator of a network to steer some of the
          traffic tagged with an APN attribute to a certain service function
          chain based on the SLA agreement with its customer. On each service
          function along the service function chain, the policy can be
          enforced based on the APN attribute in the outer header.</t>

          <t>[REQ 2-4a]. With the APN attribute, the App-aware-process devices
          SHOULD be able to steer the traffic to the appropriate service
          function.</t>

          <t>[REQ 2-4b]. The App-aware-process devices including VAS SHOULD be
          able to process the APN attribute carried in the packets.</t>
        </section>

        <section title="Fine granular network measurement">
          <t>Network measurement can be used for verifying whether the network
          performance requirements have been satisfied, as well as locating
          silent failure and predicting QoE satisfaction, which enables
          real-time SLA awareness/proactive OAM and potential resource
          adjustments.</t>

          <t>APN is to help the operator of a network to trigger performance
          measurement for the traffic tagged with an APN attribute based on
          its customer' consent.</t>

          <t>[REQ 2-5a]. The App-aware-process devices SHOULD be able to
          perform IOAM based on the APN attribute.</t>

          <t>[REQ 2-5b]. The network measurement results can be reported based
          on the APN attribute and verify whether the performance requirements
          are satisfied.</t>
        </section>
      </section>
    </section>

    <section title="Illustration">
      <t>In order to better clarify what APN can enable with the introduced
      APN attribute compared to the existing network without APN, we
      illustrate how APN works through an example use case, which is also a
      typical network service being provisioned nowadays, i.e. the Cloud
      Leased Line service. In order to make the tunnel description much easier
      to understand, we use the recent technology in IETF, i.e. SRv6.</t>

      <section title="Example use case description">
        <t>We take the "SRv6-based Cloud Leased Line Service" as an
        illustrative example to show how APN is needed and can be
        beneficial.</t>

        <t>Enterprises usually buy Cloud Leased Line Service to interconnect
        their local sites to Cloud. Generally, the Cloud Leased Line Service
        needs to go across multiple domains which are owned by the same
        operator and can be controlled by multiple controllers and an
        orchestrator/super-controller.</t>

        <t>Due to management reasons, the network information in the
        intermediate domain cannot be advertised to other domains, so the
        ingress node cannot set up an appropriate E2E path. In that case, the
        intermediate domain is treated as a black box, and no fine grain
        traffic steering and other services can be provisioned.</t>

        <t>The example of the network to provide the cloud leased lined
        service reference diagram is shown as the following figure. The
        network is composed by three network domains including the two metro
        networks in the City A and City B and the backbone network which
        connects the two metro networks. The cloud leased line services is
        provided to the specific enterprise whose branches located in
        different cities need to access the cloud-based service located in the
        City B. </t>
		
		<figure align="center" anchor="Illustration"
          title="Reference diagram for the example use case illustration">
          <artwork><![CDATA[	  

               Domain 1                Domain 2              Domain 3
            /-------------\         /------------\         /-----------\
         +-/-+   City A  +-\-+   +-/-+   IPv6   +-\-+   +-/-+ City B  +-\-+
Branch---|PE1|           |CR1|---|CR2|          |CR3|---|CR4|         |PE2|--Cloud
         +-\-+    Metro  +-/-+   +-\-+ Backbone +-/-+   +-\-+  Metro  +-/-+
            \-------------/         \------------/         \-----------/

          |<--OSPF/ISIS-->|<-EBGP->|<- IPv6/SRv6 ->|<-EBGP->|<-OSPF/ISIS->|
          |<----------------------- EBGP VPNv4 Peer --------------------->|
          |<----------------------- L3VPN over SRv6 --------------------->|
	   

]]></artwork>
        </figure>

        <t/>
      </section>

      <section title="User Group and Application Group Design">
        <t>The user groups can be designed as follows:</t>

        <figure>
          <artwork><![CDATA[                                         User Group
   Enterprise A/Branch 1/Office Users    001001001
   Enterprise A/Branch 1/R&D Users       001001002
   Enterprise A/Branch 1/IT Users        001001003
   Enterprise A/Branch 1/VIP Users       001001004
   Enterprise A/Branch 2/Office Users    001002001
   Enterprise A/Branch 2/R&D Users       001002002
   Enterprise A/Branch 2/IT Users        001002003
   Enterprise A/Branch 2/VIP Users       001002004
   Enterprise A/Branch 3/Office Users    001003001
   Enterprise A/Branch 3/R&D Users       001003002
   Enterprise A/Branch 3/IT Users        001003003
   Enterprise A/Branch 3/VIP Users       001003004
]]></artwork>
        </figure>

        <t>In the IP address design, the IPv6 address blocks allocated to the
        branches are as follows :</t>

        <figure>
          <artwork><![CDATA[                                               IPv6 Address
   Enterprise A/Branch 1/Office Users       2001:DB8:A:11::/56  
   Enterprise A/Branch 1/R&D Users          2001:DB8:A:12::/56
   Enterprise A/Branch 1/IT Users           2001:DB8:A:13::/56
   Enterprise A/Branch 1/VIP Users          2001:DB8:A:1D::/56
   Enterprise A/Branch 2/Office Users       2001:DB8:A:21::/56 
   Enterprise A/Branch 2/R&D Users          2001:DB8:A:22::/56
   Enterprise A/Branch 2/IT Users           2001:DB8:A:23::/56
   Enterprise A/Branch 2/VIP Users          2001:DB8:A:2D::/56
   Enterprise A/Branch 3/Office Users       2001:DB8:A:31::/ 56
   Enterprise A/Branch 3/R&D Users          2001:DB8:A:32::/56
   Enterprise A/Branch 3/IT Users           2001:DB8:A:33::/56
   Enterprise A/Branch 3/VIP Users          2001:DB8:A:3D::/56

]]></artwork>
        </figure>

        <t> The application groups provided by the cloud can be designed as
        follows:</t>

        <figure>
          <artwork><![CDATA[                                               Application Group
   Enterprise A/Office Audio Applications          101001001
   Enterprise A/Office Video Applications          101001002
   Enterprise A/Office Data Applications           101001003
   Enterprise A/R&D Audio Applications             101002001
   Enterprise A/R&D Video Applications             101002002
   Enterprise A/R&D Data Applications              101002003
   Enterprise A/IT Audio Applications              101003001
   Enterprise A/IT Video Applications              101003002
   Enterprise A/IT Data Applications               101003003
]]></artwork>
        </figure>

        <t>In the address design, the IPv6 address blocks allocated to the
        applications of Enterprise A in the cloud is
        2001:DB8:A1::/48A1::A:/16. The port number can be used to identify
        different applications.</t>

        <figure>
          <artwork><![CDATA[                                                     IPv6 Address        Port Number
     Enterprise A/Office Audio Applications      2001:DB8:A1:A1::/64     1718, 1719
     Enterprise A/Office Video Applications      2001:DB8:A1:A1::/64     5060, 5061
     Enterprise A/Office Data Applications       2001:DB8:A1:A1::/64       21, 80
     Enterprise A/R&D Audio Applications         2001:DB8:A1:A2::/64     1718, 1719
     Enterprise A/R&D Video Applications         2001:DB8:A1:A2::/64     5060, 5061
     Enterprise A/R&D Data Applications          2001:DB8:A1:A2::/64       21, 80
     Enterprise A/IT Audio Applications          2001:DB8:A1:A3::/64     1718, 1719
     Enterprise A/IT Video Applications          2001:DB8:A1:A3::/64     5060, 5061
     Enterprise A/IT Data Applications           2001:DB8:A1:A3::/64       21, 80
]]></artwork>
        </figure>

        <t/>
      </section>

      <section title="Derive the User Group and User Group at APN Edge">
        <t>The cloud leased line service adopts the SRv6-based L3VPN to
        traverse the network. The following policy can be applied at the APN
        edges of the City A1:</t>

        <figure>
          <artwork><![CDATA[   Match:
     VPN1 
     Source Address 2001:DB8:A:11::/56  
   Action
     Set user-group 001001001

   Match:
     VPN1 
     destination Address 2001:DB8:A1:A1::/64
     destination port 1718,1719
   Action
     Set app-group 101001001
]]></artwork>
        </figure>

        <t/>
      </section>

      <section title="Access Right Check at the edge of the backbone network">
        <t>The following check can be applied at the edge of the IP backbone
        network:</t>

        <figure>
          <artwork><![CDATA[   Match:
     user-group 001001001
     app-group  101002001, 101002002, 101002003, 101003001, 101003002, 101003003 
   Action
     Deny

   Match:
     user-group 001001001
     app-group  101001001, 101001002, 101001003
   Action
     Permit
]]></artwork>
        </figure>

        <t>The policy means that the office users of the branch 1 can only
        access the office applications.</t>

        <t>If the address allocation is changed. For example, one office user
        of the branch1&rsquo;s IPv6 address is changed to 2001:DB8:A:15::/56
        because of the mobile office.</t>

        <t>We only need to add the following policy at the APN edge:</t>

        <figure>
          <artwork><![CDATA[   Match:
     VPN1 
     Source Address 2001:DB8:A:15::/56 
   Action
     Set user-group 001001001
]]></artwork>
        </figure>

        <t>The policy in the backbone network which is based on the user group
        and the application group is not necessary to change.</t>
      </section>

      <section title="SLA Guarantee in the backbone network">
        <t> Due to management reasons, the network information in the
        intermediate domain cannot be advertised to other domains, so the
        ingress node cannot set up an appropriate TE path, the intermediate
        domain is treated as a black box and no fine grain traffic steering
        can be performed. </t>

        <t> In this case, we consider fine grain traffic steering in Domain 2
        on top of the SRv6-based Cloud Leased Line Service for the purpose of
        SLA Guarantee. </t>

        <section title="Network Measurement">
          <t>In order to guarantee SLA for the VIP users, the following
          network measurement policy can be applied in the backbone
          network:</t>

          <figure>
            <artwork><![CDATA[   Match:
     User-group 001001004 application group 101001002
     User-group 001002004 application group 101002002
     User-group 001003004 application group 101003002
   Action
     Apply IOAM
]]></artwork>
          </figure>

          <t>The policy is to apply the IOAM as the network measurement for
          the VIP users of the branches to access the video applications. From
          the above illustration, there is the following observation: </t>

          <t>When there is no APN deployed, at CR2, the 5 tuples of the
          original packets will need to be resolved since they have been
          encapsulated, and then IOAM can be triggered based on the 5 tuples.
          This resolution process is costly and consumes a lot of hardware
          resources. If Domain 3 needs to trigger IOAM, the same resolution
          process will have to be done at CR4. </t>

          <t>When there is APN deployed, at CR1, the APN attribute is tagged.
          When these packets arrive at CR2, only the APN attribute in the
          outer header will be read out, based on which the IOAM can be
          triggered in Domain 2. That is, no 5-tuple resolution process is
          needed at CR2 but only checking the APN attribute in the outer
          header. </t>
        </section>

        <section title="Traffic Steering">
          <t>If the SLA guarantee of the VIP users accessing the video
          applications does not satisfy the requirements through the network
          measurement based on the IOAM, the SRv6 policy can be setup. For
          example, the SRv6 policy 1 which can satisfy the SLA requirement is
          set up. Then the following policy can be downloaded to the edge:</t>

          <figure>
            <artwork><![CDATA[   Match:
     User-group 001001004 application group 101001002
     User-group 001002004 application group 101002002
     User-group 001003004 application group 101003002
   Action
     Redirect SRv6 Policy 1
]]></artwork>
          </figure>

          <t>The policy is to steer the traffic of the VIP users to the SRv6
          policy in the backbone to satisfy the requirement .</t>

          <t>From the above illustration, there is the similar observation as
          the network measurement: </t>

          <t>When there is no APN deployed, at CR2, the 5 tuples of the
          original packets will need to be resolved since they have been
          encapsulated, and then the traffic can be steered into SRv6 policy 2
          based on the 5 tuples. This resolution process is costly and
          consumes a lot of hardware resources. </t>

          <t> When there is APN deployed, at CR1, the APN attribute is tagged
          When these packets arrive at CR2, only the APN attribute in the
          outer header will be read out, based on which the traffic can be
          steered into SRv6 policy 2 in Domain 2. </t>
        </section>
      </section>
    </section>

    <section title="Benefits">
      <t>The APN attribute allows the network devices to only look at one
      easily-accessible field in the outer header, without having to resolve
      the 5 tuples of the original packets that are deeply encapsulated in the
      tunnel encapsulation.</t>

      <t>The APN attribute allows to simplify the policy control at every
      policy enforcement point within the network. The APN attribute allows to
      reducing each matching entry of policy filter since it is only one field
      and hardware resources are saved. Since APN attribute is relatively
      stable, it introduces the possibilities of eliminating the "stale"
      policy filter entries. In most cases, the APN attribute is centralized
      configured and distributed to all the policy enforcement points, which
      saves the policy filter configurations per node and simplifies the
      OM.</t>

      <t>The structured APN attribute allows to express fine granular service
      requirements, e.g. MKT-user-group/app-group, RD-user-group/app-group,
      latency.</t>

      <t>The structured APN attribute allows to match to the evolving fine
      granular differentiated network capabilities, e.g. SR policy with low
      latency and high reliability guaranteed.</t>

      <t>In a tunnel across multiple domains of the same operator using the
      APN attribute in the outer header the operator can easily support
      multiple services not just a single one in a particular domain as
      illustrated in the use case illustration section.</t>

      <t>When there is no APN, to achieve the same, now the operator may have
      two options: 1. Add all the policy identifiers at the tunnel headend
      with various further encapsulations and enforce the policies based on
      them at the intermediate policy enforcement nodes along the tunnel, 2.
      Resolve the original 5 tuples being encapsulated inside the tunnel which
      will be very costly and sometimes impossible.</t>

      <t>Moreover, the policy enforcement table in the intermediate policy
      enforcement nodes is significantly reduced. Because before operator
      needs to resolve the 5 tuple but now with APN, operator only needs to
      read the APN attribute in one field of the outer header.</t>

      <t>Since the 5 tuples of the traffic are changing frequently due to
      service deployment or management issues the policy enforcement table in
      the policy enforcement nodes is not stable and there is always a lot of
      stale entries in the table. But now since the APN attribute is a mapping
      of the 5 tuples operator will have a relatively stable policy
      enforcement table on their nodes.</t>
    </section>

    <section anchor="IANA" title="IANA Considerations">
      <t>This document does not include an IANA request.</t>
    </section>

    <section anchor="Security" title="Security Considerations">
      <t>In the APN work, in order to reduce the privacy and security issues,
      the following specifications are defined:</t>

      <t>[S1]. The APN attribute MUST be conveyed along with the tunnel
      information in the APN domain. The APN attribute is encapsulated and
      removed at the APN-Edge.</t>

      <t>[S2]. The APN ID (including the Application Group ID and the User
      Group ID) MUST be acquired from the existing available information in
      the packet header without interference into the payload.</t>

      <t>According to the above specifications, the APN attribute is only
      produced and used locally within the APN domain without the involvement
      of the host/application side.</t>

      <t>In order to prevent the malicious attack through the APN attribute,
      the following policies can be configured at the network devices of the
      APN domain:</t>

      <t>[P1]. If the APN attribute is conveyed without the tunnel
      information, the packet MUST be dropped.</t>

      <t>[P2]. If the APN attribute is not known to the APN domain, it should
      trigger the alarm information. The packet can be forwarded without being
      processed or dropped depending on the local policy.</t>

      <t>[P3]. If the network service requirements exceed the specification
      for the specific Application Group ID and/or User Group ID, it should
      trigger the alarm information. The packet should be discarded to prevent
      abusing of the resources.</t>

      <t>[P4]. There should be rate-limiting policy at the APN-Edge to prevent
      the traffic belonging to a specific Application Group ID and/or User
      Group ID from exceeding the preset limit.</t>
    </section>

    <section title="Acknowledgements">
      <t>The authors would like to acknowledge Robert Raszuk (Bloomberg LP), Yukito Ueno (NTT Communications Corporation), and Dhruv Dhody for their valuable reviews and comments.</t>
    </section>
  
	
	    <section title="Co-authors">
      <t><figure>
          <artwork><![CDATA[Kentaro Ebisawa
Toyota Motor Corporation
Japan
]]></artwork>
        </figure></t>

      <t>Email: ebisawa@toyota-tokyo.tech</t>

      <t><figure>
          <artwork><![CDATA[Stefano Previdi
Huawei Technologies
Italy
]]></artwork>
        </figure></t>

      <t>Email: stefano@previdi.net</t>

      <t><figure>
          <artwork><![CDATA[James N Guichard
Futurewei Technologies Ltd.
USA
]]></artwork>
        </figure></t>

      <t>Email: jguichar@futurewei.com</t>

    </section>

    <section title="Contributors">
      <t><figure>
          <artwork><![CDATA[Daniel Bernier
Bell Canada
]]></artwork>
        </figure></t>

      <t>Email: daniel.bernier@bell.ca</t>

      <t><figure>
          <artwork><![CDATA[Chongfeng Xie
China Telecom
]]></artwork>
        </figure></t>

      <t>Email: xiechf@chinatelecom.cn</t>

      <t><figure>
          <artwork><![CDATA[Feng Yang
China Mobile
]]></artwork>
        </figure></t>

      <t>Email: yangfeng@chinamobile.com</t>

      <t><figure>
          <artwork><![CDATA[Zhuangzhuang Qin
China Unicom
]]></artwork>
        </figure></t>

      <t>Email: qinzhuangzhuang@chinaunicom.cn</t>

      <t><figure>
          <artwork><![CDATA[Chang Liu
China Unicom
]]></artwork>
        </figure></t>

      <t>Email: liuc131@chinaunicom.cn</t>

      <t><figure>
          <artwork><![CDATA[Gyan Mishra
Verizon
]]></artwork>
        </figure></t>

      <t>Email: hayabusagsm@gmail.com</t>

      <t><figure>
          <artwork><![CDATA[Luis M. Contreras
Telefonica
]]></artwork>
        </figure></t>

      <t>Email: contreras.ietf@gmail.com</t>

      <t><figure>
          <artwork><![CDATA[Luc-Fabrice Ndifor Ngwa
MTN
]]></artwork>
        </figure></t>

      <t>Email: Luc-Fabrice.Ndifor@mtn.com</t>
    </section>
  </middle>

  <back>
    <references title="Normative References">
      <?rfc include="reference.RFC.2119"?>
	  
	  <?rfc include="reference.RFC.8174"?>

    </references>

    <references title="Informative References">
      <?rfc include='reference.I-D.li-apn-problem-statement-usecases'?>
	  
    </references>
  </back>
</rfc>
