<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<?rfc toc="yes"?>
<?rfc tocompact="yes"?>
<?rfc tocdepth="3"?>
<?rfc tocindent="yes"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<?rfc compact="yes"?>
<?rfc subcompact="no"?>
<rfc category="std" docName="draft-li-apn-ipv6-encap-05" ipr="trust200902">
  <front>
    <title abbrev="APN6 Encapsulation">Application-aware IPv6 Networking
    (APN6) Encapsulation</title>

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

      <address>
        <postal>
          <street/>

          <city>Beijing</city>

          <code>100095</code>

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

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

    <author fullname="Shuping Peng" initials="S." surname="Peng">
      <organization>Huawei Technologies</organization>

      <address>
        <postal>
          <street/>

          <city>Beijing</city>

          <code>100095</code>

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

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

    <author fullname="Chongfeng Xie" initials="C." surname="Xie">
      <organization>China Telecom</organization>

      <address>
        <postal>
          <street/>

          <city/>

          <region/>

          <code/>

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

        <phone/>

        <facsimile/>

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

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

    <date day="1" month="June" year="2022"/>

    <abstract>
      <t>Application-aware IPv6 Networking (APN6) makes use of IPv6
      encapsulation to convey the APN Attribute along with data packets and
      make the network aware of data flow requirements at different
      granularity levels. The APN attribute can be encapsulated in the APN
      header. This document defines the encapsulation of the APN header in the
      IPv6 data plane.</t>
    </abstract>

  </front>

  <middle>
    <section title="Introduction">
      <t>Application-aware Networking (APN) is introduced in <xref
      target="I-D.li-apn-framework"/> and <xref
      target="I-D.li-apn-problem-statement-usecases"/>. APN conveys an
      attribute along with data packets into the network and make the network
      aware of data flow requirements at different granularity levels. Such
      an attribute is acquired, constructed as a structured value, and then
      encapsulated in the packets. Such a structured value is treated as an
      opaque object in the network, to which the network operator applies
      policies in various nodes/service functions along the path, providing corresponding services.</t>

      <t><xref target="I-D.li-apn-header"/> defines the application-aware
      networking (APN) header which can be used in different data planes to
      carry the APN attribute. This document defines the encapsulation of the
      APN header in the IPv6 data plane.</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="Terminologies">
      <t>APN: Application-aware Networking</t>

      <t>APN6: Application-aware IPv6 Networking, i.e., the data plane of APN
      is IPv6</t>

      <t>APN Attribute: Application-aware information. It is added at the edge
      devices of an APN domain along with any tunnel encapsulation.</t>

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

      <t>APN Para: Application-aware Networking Parameters</t>
	  
	  <t>SRH: Segment Routing Header <xref target="RFC8754">RFC 8754</xref></t>
    </section>

    <section title="The APN Option">
      <t>To support Application-aware IPv6 networking, one IPv6 Header option <xref target="RFC8200">RFC 8200</xref>, the APN option, is defined.</t>

      <t>The APN option has the following format:</t>

      <t><figure align="center">
          <artwork><![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
                                +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                                |Opt Type = TBD1|  Opt Data Len | 
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
.                                                               .
.                       APN Header (Variable)                   .
.                                                               .
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                     Figure 1. The APN Option


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

      <t>where:</t>

      <t>o Opt Type: Type value is TBD1 (suggested value 0x13), an 8-bit unsigned integer. Identifier of the type of this APN Option.</t>

      <t>o Opt Data Len: An 8-bit unsigned integer. Length of the Option Data
      field of this option, that is, length of the APN header.</t>

      <t>o APN Header: Option-Type-specific data. It carries the APN header.
      Variable-length field as specified in <xref target="I-D.li-apn-header"/>.</t>
    </section>

    <section title="Locations for the APN Option">
      <t>The APN IPv6 Header option can be placed in two locations in an IPv6 packet header <xref target="RFC8200">RFC 8200</xref> depend upon the scenario and implementation requirements. These are defined in the subsections below.</t>

      <section title="IPv6 Hop-by-Hop Options Header (HBH)">
        <t>The APN option can be carried in the IPv6 Hop-by-Hop Options Header. By using the HBH Options Header, the information carried can be read by every node along the path.</t>
      </section>

      <section title="IPv6 Destination Options Header (DOH)">
        <t>The APN option can be carried in the IPv6 Destination Options Header. By using the DOH Options Header, the information carried can be read by the destination node but would not normally be seen by other nodes along the path.</t>
      </section>
    </section>

    <section title="APN TLV for the SRH">
      <t><xref target="RFC8754"/> defines the segment routing header (SRH) and
      the SRH TLV. The SRH TLV provides meta-data for segment processing. The
      APN header can be placed in the SRH as the value of one type of SRH TLV
      following the Segment List. By using the SRH, the information carried
      can be read by the specified segment destinations along the SRv6 path.</t>

      <t>The APN TLV is OPTIONAL and has the following format:</t>

      <figure align="center">
        <artwork><![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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  Type = TBD2  |     Length    |D|        RESERVED             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
.                                                               .
.                       APN Header (Variable)                   .
.                                                               .
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                   Figure 2. The APN SRH TLV
]]></artwork>
      </figure>

      <t>where:</t>

      <t>o Type: TBD2 (suggested value 0x13).</t>

      <t>o Length: The length of the variable length data in bytes.</t>

      <t>o D: 1 bit. When it is set, it indicates the Destination Address
      verification is disabled due to use of a reduced segment list.</t>

      <t>o RESERVED: 15 bits. MUST be 0 on transmission and ignored on receipt.</t>

      <t>o APN Header: It carries the APN header as specified in <xref target="I-D.li-apn-header"/>. A variable-length field.</t>
    </section>

    <section anchor="IANA" title="IANA Considerations">
      <t>IANA is requested to assign two code points as below.</t>

      <section title="IPv6 Header Option">
        <t>IANA is requested to assign an IPv6 Header Option as follows:</t>
		
      <figure align="center">
        <artwork><![CDATA[ 

    Hex     Binary Value
   Value    act chg  rest          Description              Reference
   -----    --- --- -----  ----------------------------  ---------------
    0x13     00   0 10011  Application-aware Networking  [this document]

]]></artwork>
      </figure>		
				
		
      </section>

      <section title="SRH TLV Type">
        <t>IANA is requested to assign an SRH TLV Type from the range of type values for TLVs that do not change en route (2-127) as follows: </t>
		
      <figure align="center">
        <artwork><![CDATA[ 
 
   Value          Description                 Reference
   -----   ----------------------------   -----------------
    0x13   Application-aware Networking    [this document]

 
]]></artwork>
      </figure>			
      </section>
    </section>



    <section anchor="Security" title="Security Considerations">
	
      <t>The Security Considerations are described in <xref
      target="I-D.li-apn-problem-statement-usecases"/>.</t>
    </section>
  </middle>

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

      <?rfc include='reference.RFC.8754'?>
	  
	  <?rfc include='reference.RFC.8200'?>

      <?rfc include='reference.I-D.li-apn-header'?>
	  
	  <?rfc include='reference.I-D.li-apn-framework'?>
    </references>

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


    </references>
  </back>
</rfc>
