<?xml version='1.0' encoding='utf-8'?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" version="3" category="std" consensus="true" docName="draft-ietf-sfc-nsh-integrity-09" indexInclude="true" ipr="trust200902" number="9145" prepTime="2021-12-13T09:06:46" scripts="Common,Latin" sortRefs="true" submissionType="IETF" symRefs="true" tocDepth="4" tocInclude="true" xml:lang="en">
  <link href="https://datatracker.ietf.org/doc/draft-ietf-sfc-nsh-integrity-09" rel="prev"/>
  <link href="https://dx.doi.org/10.17487/rfc9145" rel="alternate"/>
  <link href="urn:issn:2070-1721" rel="alternate"/>
  <front>
    <title abbrev="Integrity Protection for the NSH">Integrity Protection for the Network Service Header (NSH) and Encryption of Sensitive Context Headers</title>
    <seriesInfo name="RFC" value="9145" stream="IETF"/>
    <author fullname="Mohamed Boucadair" initials="M." surname="Boucadair">
      <organization showOnFrontPage="true">Orange</organization>
      <address>
        <postal>
          <street/>
          <city>Rennes</city>
          <code>35000</code>
          <country>France</country>
        </postal>
        <email>mohamed.boucadair@orange.com</email>
      </address>
    </author>
    <author fullname="Tirumaleswar Reddy.K" initials="T." surname="Reddy.K">
      <organization showOnFrontPage="true">Akamai</organization>
      <address>
        <postal>
          <street>Embassy Golf Link Business Park</street>
          <city>Bangalore</city>
          <region>Karnataka</region>
          <code>560071</code>
          <country>India</country>
        </postal>
        <email>kondtir@gmail.com</email>
      </address>
    </author>
    <author fullname="Dan Wing" initials="D." surname="Wing">
      <organization abbrev="Citrix" showOnFrontPage="true">Citrix Systems, Inc.</organization>
      <address>
        <postal>
          <street/>
          <country>USA</country>
        </postal>
        <email>dwing-ietf@fuggles.com</email>
      </address>
    </author>
    <date month="12" year="2021"/>
    <workgroup>SFC</workgroup>
    <keyword>Security</keyword>
    <keyword>Resilience</keyword>
    <keyword>Automation</keyword>
    <keyword>Service delivery</keyword>
    <keyword>Providers</keyword>
    <keyword>Differentiated services</keyword>
    <keyword>Traffic Engineering</keyword>
    <keyword>Attack mitigation</keyword>
    <abstract pn="section-abstract">
      <t indent="0" pn="section-abstract-1">This specification presents an optional method to add integrity
      protection directly to the Network Service Header (NSH) used for Service
      Function Chaining (SFC). Also, this specification allows for the
      encryption of sensitive metadata (MD) that is carried in the NSH.</t>
    </abstract>
    <boilerplate>
      <section anchor="status-of-memo" numbered="false" removeInRFC="false" toc="exclude" pn="section-boilerplate.1">
        <name slugifiedName="name-status-of-this-memo">Status of This Memo</name>
        <t indent="0" pn="section-boilerplate.1-1">
            This is an Internet Standards Track document.
        </t>
        <t indent="0" pn="section-boilerplate.1-2">
            This document is a product of the Internet Engineering Task Force
            (IETF).  It represents the consensus of the IETF community.  It has
            received public review and has been approved for publication by
            the Internet Engineering Steering Group (IESG).  Further
            information on Internet Standards is available in Section 2 of 
            RFC 7841.
        </t>
        <t indent="0" pn="section-boilerplate.1-3">
            Information about the current status of this document, any
            errata, and how to provide feedback on it may be obtained at
            <eref target="https://www.rfc-editor.org/info/rfc9145" brackets="none"/>.
        </t>
      </section>
      <section anchor="copyright" numbered="false" removeInRFC="false" toc="exclude" pn="section-boilerplate.2">
        <name slugifiedName="name-copyright-notice">Copyright Notice</name>
        <t indent="0" pn="section-boilerplate.2-1">
            Copyright (c) 2021 IETF Trust and the persons identified as the
            document authors. All rights reserved.
        </t>
        <t indent="0" pn="section-boilerplate.2-2">
            This document is subject to BCP 78 and the IETF Trust's Legal
            Provisions Relating to IETF Documents
            (<eref target="https://trustee.ietf.org/license-info" brackets="none"/>) in effect on the date of
            publication of this document. Please review these documents
            carefully, as they describe your rights and restrictions with
            respect to this document. Code Components extracted from this
            document must include Revised BSD License text as described in
            Section 4.e of the Trust Legal Provisions and are provided without
            warranty as described in the Revised BSD License.
        </t>
      </section>
    </boilerplate>
    <toc>
      <section anchor="toc" numbered="false" removeInRFC="false" toc="exclude" pn="section-toc.1">
        <name slugifiedName="name-table-of-contents">Table of Contents</name>
        <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1">
          <li pn="section-toc.1-1.1">
            <t indent="0" keepWithNext="true" pn="section-toc.1-1.1.1"><xref derivedContent="1" format="counter" sectionFormat="of" target="section-1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-introduction">Introduction</xref></t>
          </li>
          <li pn="section-toc.1-1.2">
            <t indent="0" keepWithNext="true" pn="section-toc.1-1.2.1"><xref derivedContent="2" format="counter" sectionFormat="of" target="section-2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-terminology">Terminology</xref></t>
          </li>
          <li pn="section-toc.1-1.3">
            <t indent="0" keepWithNext="true" pn="section-toc.1-1.3.1"><xref derivedContent="3" format="counter" sectionFormat="of" target="section-3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-assumptions-and-basic-requi">Assumptions and Basic Requirements</xref></t>
          </li>
          <li pn="section-toc.1-1.4">
            <t indent="0" pn="section-toc.1-1.4.1"><xref derivedContent="4" format="counter" sectionFormat="of" target="section-4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-design-overview">Design Overview</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.4.2">
              <li pn="section-toc.1-1.4.2.1">
                <t indent="0" pn="section-toc.1-1.4.2.1.1"><xref derivedContent="4.1" format="counter" sectionFormat="of" target="section-4.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-supported-security-services">Supported Security Services</xref></t>
                <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.4.2.1.2">
                  <li pn="section-toc.1-1.4.2.1.2.1">
                    <t indent="0" pn="section-toc.1-1.4.2.1.2.1.1"><xref derivedContent="4.1.1" format="counter" sectionFormat="of" target="section-4.1.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-encrypt-all-or-a-subset-of-">Encrypt All or a Subset of Context Headers</xref></t>
                  </li>
                  <li pn="section-toc.1-1.4.2.1.2.2">
                    <t indent="0" pn="section-toc.1-1.4.2.1.2.2.1"><xref derivedContent="4.1.2" format="counter" sectionFormat="of" target="section-4.1.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-integrity-protection">Integrity Protection</xref></t>
                  </li>
                </ul>
              </li>
              <li pn="section-toc.1-1.4.2.2">
                <t indent="0" pn="section-toc.1-1.4.2.2.1"><xref derivedContent="4.2" format="counter" sectionFormat="of" target="section-4.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-one-secret-key-two-security">One Secret Key, Two Security Services</xref></t>
              </li>
              <li pn="section-toc.1-1.4.2.3">
                <t indent="0" pn="section-toc.1-1.4.2.3.1"><xref derivedContent="4.3" format="counter" sectionFormat="of" target="section-4.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-mandatory-to-implement-auth">Mandatory-to-Implement Authenticated Encryption and HMAC Algorithms</xref></t>
              </li>
              <li pn="section-toc.1-1.4.2.4">
                <t indent="0" pn="section-toc.1-1.4.2.4.1"><xref derivedContent="4.4" format="counter" sectionFormat="of" target="section-4.4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-key-management">Key Management</xref></t>
              </li>
              <li pn="section-toc.1-1.4.2.5">
                <t indent="0" pn="section-toc.1-1.4.2.5.1"><xref derivedContent="4.5" format="counter" sectionFormat="of" target="section-4.5"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-new-nsh-variable-length-con">New NSH Variable-Length Context Headers</xref></t>
              </li>
              <li pn="section-toc.1-1.4.2.6">
                <t indent="0" pn="section-toc.1-1.4.2.6.1"><xref derivedContent="4.6" format="counter" sectionFormat="of" target="section-4.6"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-encapsulation-of-nsh-within">Encapsulation of NSH within NSH</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.5">
            <t indent="0" pn="section-toc.1-1.5.1"><xref derivedContent="5" format="counter" sectionFormat="of" target="section-5"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-new-nsh-variable-length-cont">New NSH Variable-Length Context Headers</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.5.2">
              <li pn="section-toc.1-1.5.2.1">
                <t indent="0" pn="section-toc.1-1.5.2.1.1"><xref derivedContent="5.1" format="counter" sectionFormat="of" target="section-5.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-mac1-context-header">MAC#1 Context Header</xref></t>
              </li>
              <li pn="section-toc.1-1.5.2.2">
                <t indent="0" pn="section-toc.1-1.5.2.2.1"><xref derivedContent="5.2" format="counter" sectionFormat="of" target="section-5.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-mac2-context-header">MAC#2 Context Header</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.6">
            <t indent="0" pn="section-toc.1-1.6.1"><xref derivedContent="6" format="counter" sectionFormat="of" target="section-6"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-timestamp-format">Timestamp Format</xref></t>
          </li>
          <li pn="section-toc.1-1.7">
            <t indent="0" pn="section-toc.1-1.7.1"><xref derivedContent="7" format="counter" sectionFormat="of" target="section-7"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-processing-rules">Processing Rules</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.7.2">
              <li pn="section-toc.1-1.7.2.1">
                <t indent="0" pn="section-toc.1-1.7.2.1.1"><xref derivedContent="7.1" format="counter" sectionFormat="of" target="section-7.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-generic-behavior">Generic Behavior</xref></t>
              </li>
              <li pn="section-toc.1-1.7.2.2">
                <t indent="0" pn="section-toc.1-1.7.2.2.1"><xref derivedContent="7.2" format="counter" sectionFormat="of" target="section-7.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-mac-nsh-data-generation">MAC NSH Data Generation</xref></t>
              </li>
              <li pn="section-toc.1-1.7.2.3">
                <t indent="0" pn="section-toc.1-1.7.2.3.1"><xref derivedContent="7.3" format="counter" sectionFormat="of" target="section-7.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-encrypted-nsh-metadata-gene">Encrypted NSH Metadata Generation</xref></t>
              </li>
              <li pn="section-toc.1-1.7.2.4">
                <t indent="0" pn="section-toc.1-1.7.2.4.1"><xref derivedContent="7.4" format="counter" sectionFormat="of" target="section-7.4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-timestamp-for-replay-attack">Timestamp for Replay Attack Prevention</xref></t>
              </li>
              <li pn="section-toc.1-1.7.2.5">
                <t indent="0" pn="section-toc.1-1.7.2.5.1"><xref derivedContent="7.5" format="counter" sectionFormat="of" target="section-7.5"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-nsh-data-validation">NSH Data Validation</xref></t>
              </li>
              <li pn="section-toc.1-1.7.2.6">
                <t indent="0" pn="section-toc.1-1.7.2.6.1"><xref derivedContent="7.6" format="counter" sectionFormat="of" target="section-7.6"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-decryption-of-nsh-metadata">Decryption of NSH Metadata</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.8">
            <t indent="0" pn="section-toc.1-1.8.1"><xref derivedContent="8" format="counter" sectionFormat="of" target="section-8"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-mtu-considerations">MTU Considerations</xref></t>
          </li>
          <li pn="section-toc.1-1.9">
            <t indent="0" pn="section-toc.1-1.9.1"><xref derivedContent="9" format="counter" sectionFormat="of" target="section-9"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-security-considerations">Security Considerations</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.9.2">
              <li pn="section-toc.1-1.9.2.1">
                <t indent="0" pn="section-toc.1-1.9.2.1.1"><xref derivedContent="9.1" format="counter" sectionFormat="of" target="section-9.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-mac1">MAC#1</xref></t>
              </li>
              <li pn="section-toc.1-1.9.2.2">
                <t indent="0" pn="section-toc.1-1.9.2.2.1"><xref derivedContent="9.2" format="counter" sectionFormat="of" target="section-9.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-mac2">MAC#2</xref></t>
              </li>
              <li pn="section-toc.1-1.9.2.3">
                <t indent="0" pn="section-toc.1-1.9.2.3.1"><xref derivedContent="9.3" format="counter" sectionFormat="of" target="section-9.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-time-synchronization">Time Synchronization</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.10">
            <t indent="0" pn="section-toc.1-1.10.1"><xref derivedContent="10" format="counter" sectionFormat="of" target="section-10"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-iana-considerations">IANA Considerations</xref></t>
          </li>
          <li pn="section-toc.1-1.11">
            <t indent="0" pn="section-toc.1-1.11.1"><xref derivedContent="11" format="counter" sectionFormat="of" target="section-11"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-references">References</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.11.2">
              <li pn="section-toc.1-1.11.2.1">
                <t indent="0" pn="section-toc.1-1.11.2.1.1"><xref derivedContent="11.1" format="counter" sectionFormat="of" target="section-11.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-normative-references">Normative References</xref></t>
              </li>
              <li pn="section-toc.1-1.11.2.2">
                <t indent="0" pn="section-toc.1-1.11.2.2.1"><xref derivedContent="11.2" format="counter" sectionFormat="of" target="section-11.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-informative-references">Informative References</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.12">
            <t indent="0" pn="section-toc.1-1.12.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.a"/><xref derivedContent="" format="title" sectionFormat="of" target="name-acknowledgements">Acknowledgements</xref></t>
          </li>
          <li pn="section-toc.1-1.13">
            <t indent="0" pn="section-toc.1-1.13.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.b"/><xref derivedContent="" format="title" sectionFormat="of" target="name-authors-addresses">Authors' Addresses</xref></t>
          </li>
        </ul>
      </section>
    </toc>
  </front>
  <middle>
    <section numbered="true" toc="include" removeInRFC="false" pn="section-1">
      <name slugifiedName="name-introduction">Introduction</name>
      <t indent="0" pn="section-1-1">Many advanced Service Functions (SFs) are enabled for the delivery of
      value-added services. Typically, SFs are used to meet various service
      objectives such as IP address sharing, avoiding covert channels,
      detecting Denial-of-Service (DoS) attacks and protecting network
      infrastructures against them, network slicing, etc. Because of the
      proliferation of such advanced SFs together with complex service
      deployment constraints that demand more agile service delivery
      procedures, operators need to rationalize their service delivery logic
      and control its complexity while optimizing service activation time
      cycles. The overall problem space is described in <xref target="RFC7498" format="default" sectionFormat="of" derivedContent="RFC7498"/>.</t>
      <t indent="0" pn="section-1-2"><xref target="RFC7665" format="default" sectionFormat="of" derivedContent="RFC7665"/> presents a data plane
      architecture addressing the problematic aspects of existing service
      deployments, including topological dependence and configuration
      complexity. It also describes an architecture for the specification,
      creation, and maintenance of Service Function Chains (SFCs) within a
      network, that is, how to define an ordered set of SFs and ordering
      constraints that must be applied to packets/flows selected as a result
      of traffic classification. <xref target="RFC8300" format="default" sectionFormat="of" derivedContent="RFC8300"/>
      specifies the SFC encapsulation: Network Service Header (NSH).</t>
      <t indent="0" pn="section-1-3">The NSH data is unauthenticated and unencrypted, forcing a service
      topology that requires security and privacy to use a transport
      encapsulation that supports such features (<xref target="RFC8300" section="8.2" sectionFormat="of" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8300#section-8.2" derivedContent="RFC8300"/>).</t>
      <t indent="0" pn="section-1-4">Note that some transport encapsulations (e.g., IPsec) only provide
      hop-by-hop security between two SFC data plane elements (e.g., two
      Service Function Forwarders (SFFs), SFF to SF) and do not provide
      SF-to-SF security of NSH metadata. For example, if IPsec is used, SFFs
      or SFs within a Service Function Path (SFP) that are not authorized to
      access the sensitive metadata (e.g., privacy-sensitive information) will
      have access to the metadata. As a reminder, the metadata referred to is
      information that is inserted by Classifiers or intermediate SFs and
      shared with downstream SFs; such information is not visible to the
      communication endpoints (<xref target="RFC7665" section="4.9" sectionFormat="of" format="default" derivedLink="https://rfc-editor.org/rfc/rfc7665#section-4.9" derivedContent="RFC7665"/>).</t>
      <t indent="0" pn="section-1-5">The lack of such capability was reported during the development of
      <xref target="RFC8300" format="default" sectionFormat="of" derivedContent="RFC8300"/> and <xref target="RFC8459" format="default" sectionFormat="of" derivedContent="RFC8459"/>. The reader may refer to <xref target="I-D.arkko-farrell-arch-model-t" section="3.2.1" sectionFormat="of" format="default" derivedLink="https://datatracker.ietf.org/doc/html/draft-arkko-farrell-arch-model-t-04#section-3.2.1" derivedContent="INTERNET-THREAT-MODEL"/> for a discussion on the need for more awareness
      about attacks from within closed domains.</t>
      <t indent="0" pn="section-1-6">This specification fills that gap for SFC (that is, it defines the
      "NSH Variable Header-Based Integrity" option mentioned in <xref target="RFC8300" section="8.2.1" sectionFormat="of" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8300#section-8.2.1" derivedContent="RFC8300"/>). Concretely, this
      document adds integrity protection and optional encryption of sensitive
      metadata directly to the NSH (<xref target="overview" format="default" sectionFormat="of" derivedContent="Section 4"/>). The integrity protection covers the packet payload
      and provides replay protection (<xref target="time" format="default" sectionFormat="of" derivedContent="Section 7.4"/>). Thus, the NSH does not have to rely upon an
      underlying transport encapsulation for security.</t>
      <t indent="0" pn="section-1-7">This specification introduces new Variable-Length Context Headers to
      carry fields necessary for integrity-protected NSH headers and encrypted
      Context Headers (<xref target="new" format="default" sectionFormat="of" derivedContent="Section 5"/>). This
      specification is only applicable to NSH MD Type 0x02 (<xref target="RFC8300" section="2.5" sectionFormat="of" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8300#section-2.5" derivedContent="RFC8300"/>). MTU considerations
      are discussed in <xref target="MTU" format="default" sectionFormat="of" derivedContent="Section 8"/>. This
      specification is not applicable to NSH MD Type 0x01 (<xref target="RFC8300" section="2.4" sectionFormat="of" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8300#section-2.4" derivedContent="RFC8300"/>) because that MD
      Type only allows a Fixed-Length Context Header whose size is 16 bytes;
      that is not sufficient to accommodate both the metadata and message
      integrity of the NSH data.</t>
      <t indent="0" pn="section-1-8">This specification limits access to NSH-supplied information along an
      SFP to entities that have a need to interpret it.</t>
      <t indent="0" pn="section-1-9">The mechanism specified in this document does not preclude the use of
      transport security. Such considerations are deployment specific.</t>
      <t indent="0" pn="section-1-10">It is out of the scope of this document to specify an NSH-aware
      control plane solution.</t>
    </section>
    <section anchor="notation" numbered="true" toc="include" removeInRFC="false" pn="section-2">
      <name slugifiedName="name-terminology">Terminology</name>
      <t indent="0" pn="section-2-1">The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>",
      "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>",
      "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
      "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are
      to be interpreted as described in BCP 14 <xref target="RFC2119" format="default" sectionFormat="of" derivedContent="RFC2119"/> <xref target="RFC8174" format="default" sectionFormat="of" derivedContent="RFC8174"/> when, and
      only when, they appear in all capitals, as shown here.</t>
      <t indent="0" pn="section-2-2">This document makes use of the terms defined in <xref target="RFC7665" format="default" sectionFormat="of" derivedContent="RFC7665"/> and <xref target="RFC8300" format="default" sectionFormat="of" derivedContent="RFC8300"/>. The term "transport encapsulation" used in this
      document refers to the outer encapsulation (e.g., Generic Routing
      Encapsulation (GRE), IPsec, and Generic Protocol Extension for Virtual
      eXtensible Local Area Network (VXLAN-GPE)) that is used to carry
      NSH-encapsulated packets as per <xref target="RFC8300" section="4" sectionFormat="of" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8300#section-4" derivedContent="RFC8300"/>.</t>
      <t indent="0" pn="section-2-3">The document defines the following terms:</t>
      <dl newline="false" spacing="normal" indent="3" pn="section-2-4">
        <dt pn="section-2-4.1">SFC data plane element:</dt>
        <dd pn="section-2-4.2">Refers to NSH-aware SF, SFF,
          the SFC Proxy, or the Classifier as defined in the SFC data plane
          architecture <xref target="RFC7665" format="default" sectionFormat="of" derivedContent="RFC7665"/> and further refined in
          <xref target="RFC8300" format="default" sectionFormat="of" derivedContent="RFC8300"/>.</dd>
        <dt pn="section-2-4.3">SFC control element:</dt>
        <dd pn="section-2-4.4">Is a logical entity that
          instructs one or more SFC data plane elements on how to process NSH
          packets within an SFC-enabled domain.</dd>
        <dt pn="section-2-4.5">Key Identifier:</dt>
        <dd pn="section-2-4.6">Is used to identify keys to authorized entities. See, for example,
        "kid" usage in <xref target="RFC7635" format="default" sectionFormat="of" derivedContent="RFC7635"/>.</dd>
        <dt pn="section-2-4.7">NSH data:</dt>
        <dd pn="section-2-4.8">The NSH is composed of a Base Header, a
          Service Path Header, and optional Context Headers. NSH data refers
          to all the above headers and the packet or frame on which the NSH is
          imposed to realize an SFP.</dd>
        <dt pn="section-2-4.9">NSH imposer:</dt>
        <dd pn="section-2-4.10">Refers to an SFC data plane element that
          is entitled to impose the NSH with the Context Headers defined in
          this document.</dd>
      </dl>
    </section>
    <section anchor="req" numbered="true" toc="include" removeInRFC="false" pn="section-3">
      <name slugifiedName="name-assumptions-and-basic-requi">Assumptions and Basic Requirements</name>
      <t indent="0" pn="section-3-1"><xref target="RFC8300" section="2" sectionFormat="of" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8300#section-2" derivedContent="RFC8300"/> specifies that the NSH
      data can be spread over three headers:</t>
      <dl indent="3" newline="false" spacing="normal" pn="section-3-2">
        <dt pn="section-3-2.1">Base Header:
        </dt>
        <dd pn="section-3-2.2">Provides information about the service header and the payload protocol.
	</dd>
        <dt pn="section-3-2.3">Service Path Header:
        </dt>
        <dd pn="section-3-2.4">Provides path identification and location within an SFP.
	</dd>
        <dt pn="section-3-2.5">Context Header(s):
        </dt>
        <dd pn="section-3-2.6">Carries metadata (i.e., context data) along a service path.
	</dd>
      </dl>
      <t indent="0" pn="section-3-3">The NSH allows sharing context information (a.k.a. metadata) with
      downstream NSH-aware data plane elements on a per-SFC/SFP basis. To that
      aim:</t>
      <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-3-4">
        <li pn="section-3-4.1">The Classifier is instructed by an SFC control element about the
          set of context information to be supplied for a given service
          function chain.</li>
        <li pn="section-3-4.2">An NSH-aware SF is instructed by an SFC control element about any
          metadata it needs to attach to packets for a given service function
          chain. This instruction may occur any time during the validity
          lifetime of an SFC/SFP. For a given service function chain, the
          NSH-aware SF is also provided with an order for consuming a set of
          contexts supplied in a packet.</li>
        <li pn="section-3-4.3">An NSH-aware SF can also be instructed by an SFC control element
          about the behavior it should adopt after consuming context
          information that was supplied in the NSH. For example, the context
          information can be maintained, updated, or stripped.</li>
        <li pn="section-3-4.4">An SFC Proxy may be instructed by an SFC control element about
          the behavior it should adopt to process the context information that
          was supplied in the NSH on behalf of an NSH-unaware SF (e.g., the
          context information can be maintained or stripped). The SFC Proxy
          may also be instructed to add some new context information into the
          NSH on behalf of an NSH-unaware SF.</li>
      </ul>
      <t indent="0" pn="section-3-5">In reference to <xref target="NSH" format="default" sectionFormat="of" derivedContent="Table 1"/>:</t>
      <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-3-6">
        <li pn="section-3-6.1">Classifiers, NSH-aware SFs, and SFC proxies are entitled to
          update the Context Header(s).</li>
        <li pn="section-3-6.2">Only NSH-aware SFs and SFC proxies are entitled to update the
          Service Path Header.</li>
        <li pn="section-3-6.3">SFFs are entitled to modify the Base Header (TTL value, for
          example). Nevertheless, SFFs are not supposed to act on the Context
          Headers or look into the content of the Context Headers (<xref target="RFC7665" section="4.3" sectionFormat="of" format="default" derivedLink="https://rfc-editor.org/rfc/rfc7665#section-4.3" derivedContent="RFC7665"/>).</li>
      </ul>
      <t indent="0" pn="section-3-7">Thus, the following requirements:</t>
      <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-3-8">
        <li pn="section-3-8.1">Only Classifiers, NSH-aware SFs, and SFC proxies must be able to
          encrypt and decrypt a given Context Header.</li>
        <li pn="section-3-8.2">Both encrypted and unencrypted Context Headers may be included in
          the same NSH.</li>
        <li pn="section-3-8.3">The solution must provide integrity protection for the Service
          Path Header.</li>
        <li pn="section-3-8.4">The solution must provide optional integrity protection for the
          Base Header. The implications of disabling such checks are discussed
          in <xref target="mac1" format="default" sectionFormat="of" derivedContent="Section 9.1"/>.</li>
      </ul>
      <table anchor="NSH" align="center" pn="table-1">
        <name slugifiedName="name-summary-of-nsh-actions">Summary of NSH Actions</name>
        <thead>
          <tr>
            <th rowspan="2" colspan="1" align="center">SFC Data Plane Element</th>
            <th colspan="3" align="center" rowspan="1">Insert, remove, or replace the NSH</th>
            <th colspan="2" align="center" rowspan="1">Update the NSH</th>
          </tr>
          <tr>
            <th align="center" colspan="1" rowspan="1">Insert</th>
            <th align="center" colspan="1" rowspan="1">Remove</th>
            <th align="center" colspan="1" rowspan="1">Replace</th>
            <th align="center" colspan="1" rowspan="1">Decrement Service Index</th>
            <th align="center" colspan="1" rowspan="1">Update Context Header(s)</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left" colspan="1" rowspan="1">Classifier</td>
            <td align="center" colspan="1" rowspan="1">+</td>
            <td align="left" colspan="1" rowspan="1"/>
            <td align="center" colspan="1" rowspan="1">+</td>
            <td align="left" colspan="1" rowspan="1"/>
            <td align="center" colspan="1" rowspan="1">+</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">Service Function Forwarder (SFF)</td>
            <td align="left" colspan="1" rowspan="1"/>
            <td align="center" colspan="1" rowspan="1">+</td>
            <td align="left" colspan="1" rowspan="1"/>
            <td align="left" colspan="1" rowspan="1"/>
            <td align="left" colspan="1" rowspan="1"/>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">Service Function (SF)</td>
            <td align="left" colspan="1" rowspan="1"/>
            <td align="left" colspan="1" rowspan="1"/>
            <td align="left" colspan="1" rowspan="1"/>
            <td align="center" colspan="1" rowspan="1">+</td>
            <td align="center" colspan="1" rowspan="1">+</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">Service Function Chaining (SFC) Proxy</td>
            <td align="center" colspan="1" rowspan="1">+</td>
            <td align="center" colspan="1" rowspan="1">+</td>
            <td align="left" colspan="1" rowspan="1"/>
            <td align="center" colspan="1" rowspan="1">+</td>
            <td align="center" colspan="1" rowspan="1">+</td>
          </tr>
        </tbody>
      </table>
    </section>
    <section anchor="overview" numbered="true" toc="include" removeInRFC="false" pn="section-4">
      <name slugifiedName="name-design-overview">Design Overview</name>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-4.1">
        <name slugifiedName="name-supported-security-services">Supported Security Services</name>
        <t indent="0" pn="section-4.1-1">This specification provides the functions described in the
        following subsections.</t>
        <section numbered="true" toc="include" removeInRFC="false" pn="section-4.1.1">
          <name slugifiedName="name-encrypt-all-or-a-subset-of-">Encrypt All or a Subset of Context Headers</name>
          <t indent="0" pn="section-4.1.1-1">The solution allows encrypting all or a subset of NSH Context
          Headers by Classifiers, NSH-aware SFs, and SFC proxies.</t>
          <t indent="0" pn="section-4.1.1-2">As depicted in <xref target="encryption" format="default" sectionFormat="of" derivedContent="Table 2"/>, SFFs are not involved in data
          encryption.</t>
          <table anchor="encryption" align="center" pn="table-2">
            <name slugifiedName="name-encryption-function-support">Encryption Function Supported by SFC Data Plane Elements</name>
            <thead>
              <tr>
                <th align="left" colspan="1" rowspan="1"> Data Plane Element</th>
                <th align="left" colspan="1" rowspan="1"> Base and Service Path Headers Encryption</th>
                <th align="left" colspan="1" rowspan="1">Context Header Encryption</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left" colspan="1" rowspan="1">Classifier</td>
                <td align="left" colspan="1" rowspan="1">No</td>
                <td align="left" colspan="1" rowspan="1">Yes</td>
              </tr>
              <tr>
                <td align="left" colspan="1" rowspan="1">SFF</td>
                <td align="left" colspan="1" rowspan="1">No</td>
                <td align="left" colspan="1" rowspan="1">No</td>
              </tr>
              <tr>
                <td align="left" colspan="1" rowspan="1"> NSH-aware SF</td>
                <td align="left" colspan="1" rowspan="1">No</td>
                <td align="left" colspan="1" rowspan="1">Yes</td>
              </tr>
              <tr>
                <td align="left" colspan="1" rowspan="1">SFC Proxy</td>
                <td align="left" colspan="1" rowspan="1"> No </td>
                <td align="left" colspan="1" rowspan="1">Yes</td>
              </tr>
              <tr>
                <td align="left" colspan="1" rowspan="1">NSH-unaware SF</td>
                <td align="left" colspan="1" rowspan="1">No</td>
                <td align="left" colspan="1" rowspan="1">No</td>
              </tr>
            </tbody>
          </table>
          <t indent="0" pn="section-4.1.1-4">Classifier(s), NSH-aware SFs, and SFC proxies are instructed with
          the set of Context Headers (privacy-sensitive metadata, typically)
          that must be encrypted. Encryption keying material is only provided
          to these SFC data plane elements.</t>
          <t indent="0" pn="section-4.1.1-5">The control plane may indicate the set of SFC data plane elements
          that are entitled to supply a given Context Header (e.g., in
          reference to their identifiers as assigned within the SFC-enabled
          domain). It is out of the scope of this document to elaborate on how
          such instructions are provided to the appropriate SFC data plane
          elements nor to detail the structure used to store the
          instructions.</t>
          <t indent="0" pn="section-4.1.1-6">The Service Path Header (<xref target="RFC8300" section="2" sectionFormat="of" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8300#section-2" derivedContent="RFC8300"/>) is not encrypted because SFFs use the Service
          Index (SI) in conjunction with the Service Path Identifier (SPI) for
          determining the next SF in the path.</t>
        </section>
        <section numbered="true" toc="include" removeInRFC="false" pn="section-4.1.2">
          <name slugifiedName="name-integrity-protection">Integrity Protection</name>
          <t indent="0" pn="section-4.1.2-1">The solution provides integrity protection for the NSH data. Two
          levels of assurance (LoAs) are supported.</t>
          <t indent="0" pn="section-4.1.2-2">The first level of assurance is where all NSH data except the
          Base Header are integrity protected (<xref target="first" format="default" sectionFormat="of" derivedContent="Figure 1"/>).
          In this case, the NSH imposer may be a Classifier, an NSH-aware SF,
          or an SFC Proxy. SFFs are not provided with authentication material.
          Further details are discussed in <xref target="enc1" format="default" sectionFormat="of" derivedContent="Section 5.1"/>.</t>
          <figure anchor="first" align="left" suppress-title="false" pn="figure-1">
            <name slugifiedName="name-first-level-of-assurance">First Level of Assurance</name>
            <artwork align="center" name="" type="" alt="" pn="section-4.1.2-3.1">   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
   |                Transport Encapsulation                |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+...
   |                Base Header                            |  |
+-&gt;+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  N
|  |                Service Path Header                    |  S
|  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  H
|  |                Context Header(s)                      |  |
|  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+...
|  |                Original Packet                        |
+-&gt;+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                          
+------Scope of integrity-protected data                                                
</artwork>
          </figure>
          <t indent="0" pn="section-4.1.2-4">The second level of assurance is where all NSH data, including
          the Base Header, are integrity protected (<xref target="sec" format="default" sectionFormat="of" derivedContent="Figure 2"/>). In this case, the NSH imposer may be a
          Classifier, an NSH-aware SF, an SFF, or an SFC Proxy. Further
          details are provided in <xref target="enc2" format="default" sectionFormat="of" derivedContent="Section 5.2"/>.</t>
          <figure anchor="sec" align="left" suppress-title="false" pn="figure-2">
            <name slugifiedName="name-second-level-of-assurance">Second Level of Assurance</name>
            <artwork align="center" name="" type="" alt="" pn="section-4.1.2-5.1">   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
   |                Transport Encapsulation                |
+-&gt;+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+...
|  |                Base Header                            |  |
|  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  N
|  |                Service Path Header                    |  S
|  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  H
|  |                Context Header(s)                      |  |
|  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+...
|  |                Original Packet                        |
+-&gt;+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                           
+----Scope of integrity-protected data 
                                              
</artwork>
          </figure>
          <t indent="0" pn="section-4.1.2-6">The integrity-protection scope is explicitly signaled to
          NSH-aware SFs, SFFs, and SFC proxies in the NSH by means of a
          dedicated MD Type (<xref target="new" format="default" sectionFormat="of" derivedContent="Section 5"/>).</t>
          <t indent="0" pn="section-4.1.2-7">In both levels of assurance, the Context Headers and the packet
          on which the NSH is imposed are subject to integrity protection.</t>
          <t indent="0" pn="section-4.1.2-8"><xref target="integrity" format="default" sectionFormat="of" derivedContent="Table 3"/> classifies the data plane elements as being involved or not involved in
          providing integrity protection for the NSH.</t>
          <table anchor="integrity" align="center" pn="table-3">
            <name slugifiedName="name-integrity-protection-suppor">Integrity Protection Supported by SFC Data Plane Elements</name>
            <thead>
              <tr>
                <th align="left" colspan="1" rowspan="1">Data Plane Element</th>
                <th align="left" colspan="1" rowspan="1">Integrity Protection</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left" colspan="1" rowspan="1"> Classifier</td>
                <td align="left" colspan="1" rowspan="1"> Yes</td>
              </tr>
              <tr>
                <td align="left" colspan="1" rowspan="1"> SFF</td>
                <td align="left" colspan="1" rowspan="1"> No (first LoA); Yes (second LoA)</td>
              </tr>
              <tr>
                <td align="left" colspan="1" rowspan="1"> NSH-aware SF</td>
                <td align="left" colspan="1" rowspan="1">Yes</td>
              </tr>
              <tr>
                <td align="left" colspan="1" rowspan="1"> SFC Proxy</td>
                <td align="left" colspan="1" rowspan="1">Yes</td>
              </tr>
              <tr>
                <td align="left" colspan="1" rowspan="1"> NSH-unaware SF</td>
                <td align="left" colspan="1" rowspan="1"> No</td>
              </tr>
            </tbody>
          </table>
        </section>
      </section>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-4.2">
        <name slugifiedName="name-one-secret-key-two-security">One Secret Key, Two Security Services</name>
        <t indent="0" pn="section-4.2-1">The Authenticated Encryption with Associated Data (AEAD) interface
        defined in <xref target="RFC5116" section="5" sectionFormat="of" format="default" derivedLink="https://rfc-editor.org/rfc/rfc5116#section-5" derivedContent="RFC5116"/> is used to
        encrypt the Context Headers that carry sensitive metadata and to
        provide integrity protection for the encrypted Context Headers.</t>
        <t indent="0" pn="section-4.2-2">The secondary keys "MAC_KEY" and "ENC_KEY" are generated from the input
        secret key (K) as follows; each of these two keys is an octet
        string:</t>
        <dl newline="false" spacing="normal" indent="3" pn="section-4.2-3">
          <dt pn="section-4.2-3.1">MAC_KEY:</dt>
          <dd pn="section-4.2-3.2">Consists of the initial MAC_KEY_LEN octets
            of K, in order. The MAC_KEY is used for calculating the message
            integrity of the NSH data. In other words, the integrity
            protection provided by the cryptographic mechanism is extended to
            also provide protection for the unencrypted Context Headers and
            the packet on which the NSH is imposed.</dd>
          <dt pn="section-4.2-3.3">ENC_KEY:</dt>
          <dd pn="section-4.2-3.4">Consists of the final ENC_KEY_LEN octets of
            K, in order. The ENC_KEY is used as the symmetric encryption key
            for encrypting the Context Headers.</dd>
        </dl>
        <t indent="0" pn="section-4.2-4">The Hashed Message Authentication Code (HMAC) algorithm discussed
        in <xref target="RFC4868" format="default" sectionFormat="of" derivedContent="RFC4868"/> is used to protect the integrity of
        the NSH data. The algorithm for implementing and validating HMACs is
        provided in <xref target="RFC2104" format="default" sectionFormat="of" derivedContent="RFC2104"/>.</t>
        <t indent="0" pn="section-4.2-5">The advantage of using both AEAD and HMAC algorithms (instead of
        just AEAD) is that NSH-aware SFs and SFC proxies only need to
        recompute the message integrity of the NSH data after decrementing
        the SI and do not have to recompute the ciphertext.
        The other advantage is that SFFs do not have access to the ENC_KEY and
        cannot act on the encrypted Context Headers, and (in the case of the
        second level of assurance) SFFs do have access to the MAC_KEY.
        Similarly, an NSH-aware SF or SFC Proxy not allowed to decrypt the
        Context Headers will not have access to the ENC_KEY.</t>
        <t indent="0" pn="section-4.2-6">The authenticated encryption algorithm or HMAC algorithm to be used
        by SFC data plane elements is typically controlled using the SFC
        control plane. Mandatory-to-implement authenticated encryption and
        HMAC algorithms are listed in <xref target="mti" format="default" sectionFormat="of" derivedContent="Section 4.3"/>.</t>
        <t indent="0" pn="section-4.2-7">The authenticated encryption process takes four inputs, each of
        which is an octet string: a secret key (ENC_KEY, referred to as "K" in
        <xref target="RFC5116" format="default" sectionFormat="of" derivedContent="RFC5116"/>), a plaintext (P), associated data (A)
        (which contains the data to be authenticated but not encrypted), and
        a nonce (N). A ciphertext (C) is generated as an output as discussed
        in <xref target="RFC5116" section="2.1" sectionFormat="of" format="default" derivedLink="https://rfc-editor.org/rfc/rfc5116#section-2.1" derivedContent="RFC5116"/>.</t>
        <t indent="0" pn="section-4.2-8">In order to decrypt and verify, the cipher takes ENC_KEY,
        N, A, and C as input. The output is either the plaintext or an error indicating
        that the decryption failed as described in <xref target="RFC5116" section="2.2" sectionFormat="of" format="default" derivedLink="https://rfc-editor.org/rfc/rfc5116#section-2.2" derivedContent="RFC5116"/>.</t>
      </section>
      <section anchor="mti" numbered="true" toc="include" removeInRFC="false" pn="section-4.3">
        <name slugifiedName="name-mandatory-to-implement-auth">Mandatory-to-Implement Authenticated Encryption and HMAC Algorithms</name>
        <t indent="0" pn="section-4.3-1">Classifiers, NSH-aware SFs, and SFC proxies <bcp14>MUST</bcp14> implement the
        AES_128_GCM <xref target="GCM" format="default" sectionFormat="of" derivedContent="GCM"/><xref target="RFC5116" format="default" sectionFormat="of" derivedContent="RFC5116"/>
        algorithm and <bcp14>SHOULD</bcp14> implement the AES_192_GCM and AES_256_GCM
        algorithms.</t>
        <t indent="0" pn="section-4.3-2">Classifiers, NSH-aware SFs, and SFC proxies <bcp14>MUST</bcp14> implement the
        HMAC-SHA-256-128 algorithm and <bcp14>SHOULD</bcp14> implement the HMAC-SHA-384-192
        and HMAC-SHA-512-256 algorithms.</t>
        <t indent="0" pn="section-4.3-3">SFFs <bcp14>MAY</bcp14> implement the aforementioned cipher suites and HMAC
        algorithms.
        </t>
        <t indent="3" pn="section-4.3-4"> Note: The use of the AES_128_CBC_HMAC_SHA_256 algorithm would
	have avoided the need for a second 128-bit authentication tag, but due
	to the nature of how Cipher Block Chaining (CBC) mode operates,
	AES_128_CBC_HMAC_SHA_256 allows for the malleability of plaintexts. This
	malleability allows for attackers that know the Message Authentication Code (MAC) key but not the
	encryption key to make changes in the ciphertext and, if parts of the
	plaintext are known, create arbitrary blocks of plaintext. This
	specification mandates the use of separate AEAD and MAC protections to
	prevent this type of attack.
        </t>
      </section>
      <section anchor="kms" numbered="true" toc="include" removeInRFC="false" pn="section-4.4">
        <name slugifiedName="name-key-management">Key Management</name>
        <t indent="0" pn="section-4.4-1">The procedure for the allocation/provisioning of secret keys (K)
        and the authenticated encryption algorithm or MAC_KEY and HMAC algorithm
        is outside the scope of this specification. As such, this
        specification does not mandate the support of any specific
        mechanism.</t>
        <t indent="0" pn="section-4.4-2">The document does not assume nor preclude the following:</t>
        <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-4.4-3">
          <li pn="section-4.4-3.1">The same keying material is used for all the service functions
            used within an SFC-enabled domain.</li>
          <li pn="section-4.4-3.2">Distinct keying material is used per SFP by all involved SFC
            data path elements.</li>
          <li pn="section-4.4-3.3">Per-tenant keys are used.</li>
        </ul>
        <t indent="0" pn="section-4.4-4">In order to accommodate deployments relying upon keying material
        per SFC/SFP and also the need to update keys after encrypting NSH data
        for a certain amount of time, this document uses key identifiers to
        unambiguously identify the appropriate keying material and associated
        algorithms for MAC and encryption. This use of in-band identifiers
        addresses the problem of the synchronization of keying material.</t>
        <t indent="0" pn="section-4.4-5">Additional information on manual vs. automated key management and
        when one should be used over the other can be found in <xref target="RFC4107" format="default" sectionFormat="of" derivedContent="RFC4107"/>.</t>
        <t indent="0" pn="section-4.4-6">The risk involved in using a group-shared symmetric key increases
        with the size of the group to which it is shared. Additional security
        issues are discussed in <xref target="Security" format="default" sectionFormat="of" derivedContent="Section 9"/>.</t>
      </section>
      <section anchor="newch" numbered="true" toc="include" removeInRFC="false" pn="section-4.5">
        <name slugifiedName="name-new-nsh-variable-length-con">New NSH Variable-Length Context Headers</name>
        <t indent="0" pn="section-4.5-1">New NSH Variable-Length Context Headers are defined in <xref target="new" format="default" sectionFormat="of" derivedContent="Section 5"/> for NSH data integrity protection and,
        optionally, encryption of Context Headers carrying sensitive metadata.
        Concretely, an NSH imposer includes (1) the key identifier to identify
        the keying material, (2) the timestamp to protect against replay
        attacks (<xref target="time" format="default" sectionFormat="of" derivedContent="Section 7.4"/>), and (3) MAC for the target NSH data (depending on the
        integrity-protection scope) calculated using MAC_KEY and,
        optionally, Context Headers encrypted using ENC_KEY.</t>
        <t indent="0" pn="section-4.5-2">An SFC data plane element that needs to check the integrity of the
        NSH data uses the MAC_KEY and HMAC algorithm for the key identifier
        being carried in the NSH.</t>
        <t indent="0" pn="section-4.5-3">An NSH-aware SF or SFC Proxy that needs to decrypt some Context
        Headers uses ENC_KEY and the decryption algorithm for the key
        identifier being carried in the NSH.</t>
        <t indent="0" pn="section-4.5-4"><xref target="prorules" format="default" sectionFormat="of" derivedContent="Section 7"/> specifies the detailed
        procedure.</t>
      </section>
      <section anchor="nsh-in-nsh" numbered="true" toc="include" removeInRFC="false" pn="section-4.6">
        <name slugifiedName="name-encapsulation-of-nsh-within">Encapsulation of NSH within NSH</name>
        <t indent="0" pn="section-4.6-1">As discussed in <xref target="RFC8459" section="3" sectionFormat="of" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8459#section-3" derivedContent="RFC8459"/>, an
        SFC-enabled domain (called an upper-level domain) may be decomposed into
        many sub-domains (called lower-level domains). In order to avoid
        maintaining state to restore upper-level NSH information at the
        boundaries of lower-level domains, two NSH levels are used: an
        Upper-NSH that is imposed at the boundaries of the upper-level domain
        and a Lower-NSH that is pushed by the Classifier of a lower-level
        domain in front of the original NSH (<xref target="nest" format="default" sectionFormat="of" derivedContent="Figure 3"/>). As
        such, the Upper-NSH information is carried along the lower-level chain
        without modification. The packet is forwarded in the top-level domain
        according to the Upper-NSH, while it is forwarded according to the
        Lower-NSH in a lower-level domain.</t>
        <figure anchor="nest" align="left" suppress-title="false" pn="figure-3">
          <name slugifiedName="name-encapsulation-of-nsh-within-">Encapsulation of NSH within NSH</name>
          <artwork align="center" name="" type="" alt="" pn="section-4.6-2.1">
   +---------------------------------+
   |     Transport Encapsulation     |
+-&gt;+---------------------------------+
|  |        Lower-NSH Header         |
|  +---------------------------------+
|  |        Upper-NSH Header         |
|  +---------------------------------+
|  |          Original Packet        |
+-&gt;+---------------------------------+
|
|                                          
+----Scope of NSH security protection 
     provided by a lower-level domain                                           
</artwork>
        </figure>
        <t indent="0" pn="section-4.6-3">SFC data plane elements of a lower-level domain include the
        Upper-NSH when computing the MAC.</t>
        <t indent="0" pn="section-4.6-4">Keying material used at the upper-level domain <bcp14>SHOULD NOT</bcp14> be the
        same as the one used by a lower-level domain.</t>
      </section>
    </section>
    <section anchor="new" numbered="true" toc="include" removeInRFC="false" pn="section-5">
      <name slugifiedName="name-new-nsh-variable-length-cont">New NSH Variable-Length Context Headers</name>
      <t indent="0" pn="section-5-1">This section specifies the format of new Variable-Length Context
      Headers that are used for NSH integrity protection and, optionally,
      Context Header encryption.</t>
      <t indent="0" pn="section-5-2">In particular, this section defines two "MAC and Encrypted Metadata"
      Context Headers, each having specific deployment constraints. Unlike
      <xref target="enc1" format="default" sectionFormat="of" derivedContent="Section 5.1"/>, the level of assurance provided
      in <xref target="enc2" format="default" sectionFormat="of" derivedContent="Section 5.2"/> requires sharing MAC_KEY with
      SFFs. Both Context Headers have the same format as shown in <xref target="mac" format="default" sectionFormat="of" derivedContent="Figure 4"/>.</t>
      <figure anchor="mac" align="left" suppress-title="false" pn="figure-4">
        <name slugifiedName="name-mac-and-encrypted-metadata-">MAC and Encrypted Metadata Context Header</name>
        <artwork align="center" name="" type="" alt="" pn="section-5-3.1">
    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |          Metadata Class       |      Type     |U|    Length   |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | Key Id Len  |         Key Identifier (Variable)               ~ 
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
   ~                      Timestamp (8 bytes)                      ~ 
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
   | Nonce Length  |           Nonce  (Variable)                   ~
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   
   |     Message Authentication Code and optional Encrypted        |
   ~                  Context Headers (Variable)                   ~
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+</artwork>
      </figure>
      <t indent="0" pn="section-5-4">The "MAC and Encrypted Metadata" Context Headers are padded out to a
      multiple of 4 bytes as per <xref target="RFC8300" section="2.2" sectionFormat="of" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8300#section-2.2" derivedContent="RFC8300"/>.
      The "MAC and Encrypted Metadata" Context
      Header, if included, <bcp14>MUST</bcp14> always be the last Context Header.</t>
      <section anchor="enc1" numbered="true" toc="include" removeInRFC="false" pn="section-5.1">
        <name slugifiedName="name-mac1-context-header">MAC#1 Context Header</name>
        <t indent="0" pn="section-5.1-1">The MAC#1 Context Header is a Variable-Length Context Header that
        carries MAC for the Service Path
        Header, Context Headers, and the inner packet on which NSH is imposed,
        calculated using MAC_KEY and, optionally, Context Headers encrypted
        using ENC_KEY. The scope of the integrity protection provided by this
        Context Header is depicted in <xref target="scope1" format="default" sectionFormat="of" derivedContent="Figure 5"/>.</t>
        <t indent="0" pn="section-5.1-2">This MAC scheme does not require sharing MAC_KEY with SFFs. It does
        not require recomputing the MAC by each SFF because of TTL
        processing. <xref target="mac1" format="default" sectionFormat="of" derivedContent="Section 9.1"/> discusses the possible threat
        associated with this level of assurance.</t>
        <figure anchor="scope1" align="left" suppress-title="false" pn="figure-5">
          <name slugifiedName="name-scope-of-mac1">Scope of MAC#1</name>
          <artwork align="center" name="" type="" alt="" pn="section-5.1-3.1">
    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |Ver|O|U|    TTL    |   Length  |U|U|U|U|MD Type| Next Protocol |    
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+&lt;--+
   |          Service Path Identifier              | Service Index |   |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   |
   ~       Variable-Length Unencrypted Context Headers  (opt.)     ~   |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   |
   |          Metadata Class       |      Type     |U|    Length   |   |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   |
   | Key Id Len  |         Key Identifier (Variable)               ~   |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   |
   ~                      Timestamp (8 bytes)                      ~   |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   |
   | Nonce Length  |           Nonce  (Variable)                   ~   |
+-&gt;+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   |
|  ~                Encrypted Context Headers (opt.)               ~   |
+-&gt;+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   |
|  ~                 Message Authentication Code                   ~   |
|  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   |
|  |                                                               |   |
|  ~               Inner Packet on which NSH is imposed            ~   |
|  |                                                               |   |
|  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+&lt;--|
|                                                                      | 
|                                       Integrity-Protection Scope ----+
+----Encrypted Data                                                
</artwork>
        </figure>
        <t indent="0" pn="section-5.1-4">In reference to <xref target="mac" format="default" sectionFormat="of" derivedContent="Figure 4"/>, the description of the
        fields is as follows:</t>
        <dl newline="false" spacing="normal" indent="12" pn="section-5.1-5">
          <dt pn="section-5.1-5.1">Metadata Class:</dt>
          <dd pn="section-5.1-5.2">
            <bcp14>MUST</bcp14> be set to 0x0 (<xref target="RFC8300" section="2.2" sectionFormat="of" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8300#section-2.2" derivedContent="RFC8300"/>).</dd>
          <dt pn="section-5.1-5.3">Type:</dt>
          <dd pn="section-5.1-5.4">0x02 (see <xref target="IANA" format="default" sectionFormat="of" derivedContent="Section 10"/>).</dd>
          <dt pn="section-5.1-5.5">U:</dt>
          <dd pn="section-5.1-5.6">Unassigned bit (<xref target="RFC8300" section="2.5.1" sectionFormat="of" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8300#section-2.5.1" derivedContent="RFC8300"/>).</dd>
          <dt pn="section-5.1-5.7">Length:</dt>
          <dd pn="section-5.1-5.8">Indicates the length of the variable-length
            metadata in bytes. Padding considerations are discussed in
           <xref target="RFC8300" section="2.5.1" sectionFormat="of" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8300#section-2.5.1" derivedContent="RFC8300"/>.</dd>
          <dt pn="section-5.1-5.9">Key Id Len:</dt>
          <dd pn="section-5.1-5.10">Variable. Carries the length of the key
            identifier in octets.</dd>
          <dt pn="section-5.1-5.11">Key Identifier:</dt>
          <dd pn="section-5.1-5.12">Carries a variable-length Key
            Identifier object used to identify and deliver keys to SFC data
            plane elements. This identifier is helpful for accommodating
            deployments relying upon keying material per SFC/SFP. The key
            identifier helps to resolve the problem of synchronization of
            keying material. A single key identifier is used to look up both
            the ENC_KEY and the MAC_KEY associated with a key, and the
            corresponding encryption and MAC algorithms used with those
            keys.</dd>
          <dt pn="section-5.1-5.13">Timestamp:</dt>
          <dd pn="section-5.1-5.14">Refer to <xref target="timef" format="default" sectionFormat="of" derivedContent="Section 6"/> for
            more details about the structure of this field.</dd>
          <dt pn="section-5.1-5.15">Nonce Length:</dt>
          <dd pn="section-5.1-5.16">Carries the length of the Nonce. If
            the Context Headers are only integrity protected, "Nonce Length"
            is set to zero (that is, no "Nonce" is included).</dd>
          <dt pn="section-5.1-5.17">Nonce:</dt>
          <dd pn="section-5.1-5.18">Carries the Nonce for the authenticated
            encryption operation (<xref target="RFC5116" section="3.1" sectionFormat="of" format="default" derivedLink="https://rfc-editor.org/rfc/rfc5116#section-3.1" derivedContent="RFC5116"/>).</dd>
          <dt pn="section-5.1-5.19">Encrypted Context Headers:</dt>
          <dd pn="section-5.1-5.20">Carries the optional
            encrypted Context Headers.</dd>
          <dt pn="section-5.1-5.21">Message Authentication Code: </dt>
          <dd pn="section-5.1-5.22">Covers the entire NSH
            data, excluding the Base Header.</dd>
        </dl>
      </section>
      <section anchor="enc2" numbered="true" toc="include" removeInRFC="false" pn="section-5.2">
        <name slugifiedName="name-mac2-context-header">MAC#2 Context Header</name>
        <t indent="0" pn="section-5.2-1">The MAC#2 Context Header is a Variable-Length Context Header that
        carries the MAC for the entire NSH data calculated using MAC_KEY and,
        optionally, Context Headers encrypted using ENC_KEY. The scope of the
        integrity protection provided by this Context Header is depicted in
        <xref target="scope2" format="default" sectionFormat="of" derivedContent="Figure 6"/>.</t>
        <figure anchor="scope2" align="left" suppress-title="false" pn="figure-6">
          <name slugifiedName="name-scope-of-mac2">Scope of MAC#2</name>
          <artwork align="center" name="" type="" alt="" pn="section-5.2-2.1">
    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+&lt;--+
   |Ver|O|U|    TTL    |   Length  |U|U|U|U|MD Type| Next Protocol |   |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   |
   |          Service Path Identifier              | Service Index |   |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   |
   ~       Variable-Length Unencrypted Context Headers  (opt.)     ~   |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   |
   |          Metadata Class       |      Type     |U|    Length   |   |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   |
   | Key Id Len  |         Key Identifier (Variable)               ~   |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   |
   ~                      Timestamp (8 bytes)                      ~   |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   |
   | Nonce Length  |           Nonce  (Variable)                   ~   |
+-&gt;+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   |
|  ~                Encrypted Context Headers (opt.)               ~   |
+-&gt;+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   |
|  ~                 Message Authentication Code                   ~   |
|  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   |
|  |                                                               |   |
|  ~               Inner Packet on which NSH is imposed            ~   |
|  |                                                               |   |
|  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+&lt;--|
|                                                                      | 
|                                       Integrity-Protection Scope ----+
+----Encrypted Data                     
</artwork>
        </figure>
        <t indent="0" pn="section-5.2-3">In reference to <xref target="mac" format="default" sectionFormat="of" derivedContent="Figure 4"/>, the description of the
        fields is as follows:</t>
        <dl newline="false" spacing="normal" indent="12" pn="section-5.2-4">
          <dt pn="section-5.2-4.1">Metadata Class:</dt>
          <dd pn="section-5.2-4.2">
            <bcp14>MUST</bcp14> be set to 0x0 (<xref target="RFC8300" section="2.2" sectionFormat="of" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8300#section-2.2" derivedContent="RFC8300"/>).</dd>
          <dt pn="section-5.2-4.3">Type:</dt>
          <dd pn="section-5.2-4.4">0x03 (see <xref target="IANA" format="default" sectionFormat="of" derivedContent="Section 10"/>).</dd>
          <dt pn="section-5.2-4.5">U:</dt>
          <dd pn="section-5.2-4.6">Unassigned bit (<xref target="RFC8300" section="2.5.1" sectionFormat="of" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8300#section-2.5.1" derivedContent="RFC8300"/>).</dd>
          <dt pn="section-5.2-4.7">Length:</dt>
          <dd pn="section-5.2-4.8">Indicates the length of the variable-length
            metadata in bytes. Padding considerations are discussed in
            <xref target="RFC8300" section="2.5.1" sectionFormat="of" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8300#section-2.5.1" derivedContent="RFC8300"/>.</dd>
          <dt pn="section-5.2-4.9">Key Id Len:</dt>
          <dd pn="section-5.2-4.10">See <xref target="enc1" format="default" sectionFormat="of" derivedContent="Section 5.1"/>.</dd>
          <dt pn="section-5.2-4.11">Key Identifier:</dt>
          <dd pn="section-5.2-4.12">See <xref target="enc1" format="default" sectionFormat="of" derivedContent="Section 5.1"/>.</dd>
          <dt pn="section-5.2-4.13">Timestamp:</dt>
          <dd pn="section-5.2-4.14">See <xref target="timef" format="default" sectionFormat="of" derivedContent="Section 6"/>.</dd>
          <dt pn="section-5.2-4.15">Nonce Length:</dt>
          <dd pn="section-5.2-4.16">See <xref target="enc1" format="default" sectionFormat="of" derivedContent="Section 5.1"/>.</dd>
          <dt pn="section-5.2-4.17">Nonce:</dt>
          <dd pn="section-5.2-4.18">See <xref target="enc1" format="default" sectionFormat="of" derivedContent="Section 5.1"/>.</dd>
          <dt pn="section-5.2-4.19">Encrypted Context Headers:</dt>
          <dd pn="section-5.2-4.20">Carries the optional
            encrypted Context Headers.</dd>
          <dt pn="section-5.2-4.21">Message Authentication Code:</dt>
          <dd pn="section-5.2-4.22">Covers the entire NSH
            data.</dd>
        </dl>
      </section>
    </section>
    <section anchor="timef" numbered="true" toc="include" removeInRFC="false" pn="section-6">
      <name slugifiedName="name-timestamp-format">Timestamp Format</name>
      <t indent="0" pn="section-6-1">This section follows the template provided in <xref target="RFC8877" section="3" sectionFormat="of" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8877#section-3" derivedContent="RFC8877"/>.</t>
      <t indent="0" pn="section-6-2">The format of the Timestamp field introduced in <xref target="new" format="default" sectionFormat="of" derivedContent="Section 5"/> is depicted in <xref target="tf" format="default" sectionFormat="of" derivedContent="Figure 7"/>.</t>
      <figure anchor="tf" align="left" suppress-title="false" pn="figure-7">
        <name slugifiedName="name-timestamp-field-format">Timestamp Field Format</name>
        <artwork align="center" name="" type="" alt="" pn="section-6-3.1">
    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                            Seconds                            |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                           Fraction                            |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+</artwork>
      </figure>
      <dl spacing="normal" newline="true" indent="3" pn="section-6-4">
        <dt pn="section-6-4.1">Timestamp field format:</dt>
        <dd pn="section-6-4.2">
          <dl indent="3" newline="false" spacing="normal" pn="section-6-4.2.1">
            <dt pn="section-6-4.2.1.1">Seconds:</dt>
            <dd pn="section-6-4.2.1.2">Specifies the integer portion of the number of seconds
          since the epoch.</dd>
            <dt pn="section-6-4.2.1.3">+ Size:</dt>
            <dd pn="section-6-4.2.1.4"> 32 bits</dd>
            <dt pn="section-6-4.2.1.5">+ Units:</dt>
            <dd pn="section-6-4.2.1.6"> Seconds</dd>
            <dt pn="section-6-4.2.1.7">Fraction:</dt>
            <dd pn="section-6-4.2.1.8"> Specifies the fractional portion of the number of
          seconds since the epoch.</dd>
            <dt pn="section-6-4.2.1.9">+ Size:</dt>
            <dd pn="section-6-4.2.1.10"> 32 bits</dd>
            <dt pn="section-6-4.2.1.11">+ Units:</dt>
            <dd pn="section-6-4.2.1.12">The unit is 2<sup>(-32)</sup> seconds, which is roughly equal to
          233 picoseconds.</dd>
          </dl>
        </dd>
      </dl>
      <dl newline="true" indent="3" spacing="normal" pn="section-6-5">
        <dt pn="section-6-5.1">Epoch:</dt>
        <dd pn="section-6-5.2">The epoch is 1970-01-01T00:00 in UTC time. Note that this epoch
        value is different from the one used in <xref target="RFC5905" section="6" sectionFormat="of" format="default" derivedLink="https://rfc-editor.org/rfc/rfc5905#section-6" derivedContent="RFC5905"/> (which will wrap around in
        2036).</dd>
        <dt pn="section-6-5.3">Leap seconds:</dt>
        <dd pn="section-6-5.4">This timestamp format is affected by leap seconds. The timestamp
          represents the number of seconds elapsed since the epoch minus the
          number of leap seconds.</dd>
        <dt pn="section-6-5.5">Resolution:</dt>
        <dd pn="section-6-5.6">The resolution is 2<sup>(-32)</sup> seconds.</dd>
        <dt pn="section-6-5.7">Wraparound:</dt>
        <dd pn="section-6-5.8">This time format wraps around every 2<sup>32</sup> seconds, which is
          roughly 136 years. The next wraparound will occur in the year
          2106.</dd>
        <dt pn="section-6-5.9">Synchronization aspects:</dt>
        <dd pn="section-6-5.10">It is assumed that SFC data plane elements are synchronized to
          UTC using a synchronization mechanism that is outside the scope of
          this document. In typical deployments, SFC data plane elements use
          NTP <xref target="RFC5905" format="default" sectionFormat="of" derivedContent="RFC5905"/> for synchronization. Thus, the
          timestamp may be derived from the NTP-synchronized clock, allowing
          the timestamp to be measured with respect to the clock of an NTP
          server. Since this time format is specified in terms of UTC, it is
          affected by leap seconds (in a manner analogous to the NTP time
          format, which is similar). Therefore, the value of a timestamp
          during or slightly after a leap second may be temporarily
          inaccurate.</dd>
      </dl>
    </section>
    <section anchor="prorules" numbered="true" toc="include" removeInRFC="false" pn="section-7">
      <name slugifiedName="name-processing-rules">Processing Rules</name>
      <t indent="0" pn="section-7-1">The following subsections describe the processing rules for
      integrity-protected NSH and, optionally, encrypted Context Headers.</t>
      <section anchor="gen" numbered="true" toc="include" removeInRFC="false" pn="section-7.1">
        <name slugifiedName="name-generic-behavior">Generic Behavior</name>
        <t indent="0" pn="section-7.1-1">This document adheres to the recommendations in <xref target="RFC8300" section="8.1" sectionFormat="of" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8300#section-8.1" derivedContent="RFC8300"/> for handling the Context Headers at
        both ingress and egress SFC boundary nodes (i.e., to strip the entire
        NSH, including Context Headers).</t>
        <t indent="0" pn="section-7.1-2">Failures of a Classifier to inject the Context Headers defined in
        this document <bcp14>SHOULD</bcp14> be logged locally while a notification alarm <bcp14>MAY</bcp14>
        be sent to an SFC control element. Failures of an NSH-aware node to
        validate the integrity of the NSH data <bcp14>MUST</bcp14> cause that packet to be
        discarded while a notification alarm <bcp14>MAY</bcp14> be sent to an SFC control
        element. The details of sending notification alarms (i.e., the
        parameters that affect the transmission of the notification alarms
        depending on the information in the Context Header such as frequency,
        thresholds, and content in the alarm) <bcp14>SHOULD</bcp14> be configurable.</t>
        <t indent="0" pn="section-7.1-3">NSH-aware SFs and SFC proxies <bcp14>MAY</bcp14> be instructed to
        strip some encrypted Context Headers from the packet or to pass the
        data to the next SF in the service function chain after processing the
        content of the Context Headers. If no instruction is provided, the
        default behavior for intermediary NSH-aware nodes is to maintain such
        Context Headers so that the information can be passed to the next
        NSH-aware hops.  NSH-aware SFs and SFC proxies <bcp14>MUST</bcp14>
        reapply the integrity protection if any modification is made to the
        Context Headers (e.g., strip a Context Header, update the content of
        an existing Context Header, insert a new Context Header).</t>
        <t indent="0" pn="section-7.1-4">An NSH-aware SF or SFC Proxy that is not allowed to decrypt any
        Context Headers <bcp14>MUST NOT</bcp14> be given access to the ENC_KEY.</t>
        <t indent="0" pn="section-7.1-5">Otherwise, an NSH-aware SF or SFC Proxy that receives encrypted
        Context Headers, for which it is not allowed to consume a specific
        Context Header it decrypts (but consumes others), <bcp14>MUST</bcp14> keep that
        Context Header unaltered when forwarding the packet upstream.</t>
        <t indent="0" pn="section-7.1-6">Only one instance of a "MAC and Encrypted Metadata" Context Header
        (<xref target="new" format="default" sectionFormat="of" derivedContent="Section 5"/>) is allowed in an NSH level. If multiple
        instances of a "MAC and Encrypted Metadata" Context Header are included
        in an NSH level, the SFC data plane element <bcp14>MUST</bcp14> process the first
        instance and ignore subsequent instances and <bcp14>MAY</bcp14> log or increase a
        counter for this event as per <xref target="RFC8300" section="2.5.1" sectionFormat="of" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8300#section-2.5.1" derivedContent="RFC8300"/>. If NSH within NSH is used (<xref target="nsh-in-nsh" format="default" sectionFormat="of" derivedContent="Section 4.6"/>), distinct LoAs may be used for each NSH
        level.</t>
        <t indent="0" pn="section-7.1-7">MTU and fragmentation considerations are discussed in <xref target="MTU" format="default" sectionFormat="of" derivedContent="Section 8"/>.</t>
      </section>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-7.2">
        <name slugifiedName="name-mac-nsh-data-generation">MAC NSH Data Generation</name>
        <t indent="0" pn="section-7.2-1">After performing any Context Header encryption, the HMAC algorithm
        discussed in <xref target="RFC4868" format="default" sectionFormat="of" derivedContent="RFC4868"/> is used to
        integrity protect the target NSH data. An NSH imposer inserts a "MAC
        and Encrypted Metadata" Context Header for integrity protection (<xref target="new" format="default" sectionFormat="of" derivedContent="Section 5"/>).</t>
        <t indent="0" pn="section-7.2-2">The NSH imposer sets the MAC field to zero and then computes the
        message integrity for the target NSH data (depending on the
        integrity-protection scope discussed in <xref target="new" format="default" sectionFormat="of" derivedContent="Section 5"/>) using the MAC_KEY and HMAC algorithm. It inserts
        the computed digest in the MAC field of the "MAC and Encrypted
        Metadata" Context Header. The length of the MAC is decided by the HMAC
        algorithm adopted for the particular key identifier.</t>
        <t indent="0" pn="section-7.2-3">The Message Authentication Code (T) computation process for the
        target NSH data with HMAC-SHA-256-128() can be illustrated as
        follows:</t>
        <artwork name="" type="" align="left" alt="" pn="section-7.2-4">      T = HMAC-SHA-256-128(MAC_KEY, target NSH data)
</artwork>
        <t indent="0" pn="section-7.2-5">An entity in the SFP that updates the NSH <bcp14>MUST</bcp14> follow the above
        behavior to maintain message integrity of the NSH for subsequent
        validations.</t>
      </section>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-7.3">
        <name slugifiedName="name-encrypted-nsh-metadata-gene">Encrypted NSH Metadata Generation</name>
        <t indent="0" pn="section-7.3-1">An NSH imposer can encrypt Context Headers carrying sensitive
        metadata, i.e., encrypted and unencrypted metadata may be carried
        simultaneously in the same NSH packet (Sections <xref format="counter" target="scope1" sectionFormat="of" derivedContent="5"/> and <xref format="counter" target="scope2" sectionFormat="of" derivedContent="6"/>).</t>
        <t indent="0" pn="section-7.3-2">In order to prevent pervasive monitoring <xref target="RFC7258" format="default" sectionFormat="of" derivedContent="RFC7258"/>, it is <bcp14>RECOMMENDED</bcp14> to encrypt all Context
        Headers. All Context Headers carrying privacy-sensitive metadata <bcp14>MUST</bcp14>
        be encrypted; by doing so, privacy-sensitive metadata is not revealed
        to attackers. Privacy-specific threats are discussed in
        <xref target="RFC6973" section="5.2" sectionFormat="of" format="default" derivedLink="https://rfc-editor.org/rfc/rfc6973#section-5.2" derivedContent="RFC6973"/>.</t>
        <t indent="0" pn="section-7.3-3">Using the secret key (ENC_KEY) and authenticated encryption
        algorithm, the NSH imposer encrypts the Context Headers (as set, for
        example, in <xref target="req" format="default" sectionFormat="of" derivedContent="Section 3"/>) and inserts the
        resulting payload in the "MAC and Encrypted Metadata" Context Header
        (<xref target="new" format="default" sectionFormat="of" derivedContent="Section 5"/>). The additional authenticated
        data input to the AEAD function is a zero-length byte string. The
        entire Context Header carrying sensitive metadata is encrypted (that
        is, including the MD Class, Type, Length, and associated metadata of
        each Context Header).</t>
        <t indent="0" pn="section-7.3-4">More details about the exact encryption procedure are provided in
        <xref target="RFC5116" section="2.1" sectionFormat="of" format="default" derivedLink="https://rfc-editor.org/rfc/rfc5116#section-2.1" derivedContent="RFC5116"/>. In this
        case, the associated data (A) input is zero length for AES
        Galois/Counter Mode (AES-GCM).</t>
        <t indent="0" pn="section-7.3-5">An authorized entity in the SFP that updates the content of an
        encrypted Context Header or needs to add a new encrypted Context
        Header <bcp14>MUST</bcp14> also follow the aforementioned behavior.</t>
      </section>
      <section anchor="time" numbered="true" toc="include" removeInRFC="false" pn="section-7.4">
        <name slugifiedName="name-timestamp-for-replay-attack">Timestamp for Replay Attack Prevention</name>
        <t indent="0" pn="section-7.4-1">The Timestamp imposed by an initial Classifier is left untouched
        along an SFP. However, it can be updated when reclassification occurs
        (<xref target="RFC7665" section="4.8" sectionFormat="of" format="default" derivedLink="https://rfc-editor.org/rfc/rfc7665#section-4.8" derivedContent="RFC7665"/>). The same
        considerations for setting the Timestamp are followed in both initial
        classification and reclassification (<xref target="timef" format="default" sectionFormat="of" derivedContent="Section 6"/>).</t>
        <t indent="0" pn="section-7.4-2">The received NSH is accepted by an NSH-aware node if the Timestamp
        (TS) in the NSH is recent enough to the reception time of the NSH
        (TSrt). The following formula is used for this check:</t>
        <artwork name="" type="" align="left" alt="" pn="section-7.4-3">      -Delta &lt; (TSrt - TS) &lt; +Delta
</artwork>
        <t indent="0" pn="section-7.4-4">The Delta interval is a configurable parameter. The default value
        for the allowed Delta is 2 seconds. Special care should be taken when
        setting very low Delta values as this may lead to dropping legitimate
        traffic. If the timestamp is not within the boundaries, then the SFC
        data plane element receiving such packets <bcp14>MUST</bcp14> discard the NSH
        message.</t>
        <t indent="0" pn="section-7.4-5">Replay attacks within the Delta window may be detected by an
        NSH-aware node by recording a unique value derived from the packet,
        such as a unique value from the MAC field value. Such an NSH-aware
        node will detect and reject duplicates. If for legitimate service
        reasons some flows have to be duplicated but still share a portion of
        an SFP with the original flow, legitimate duplicate packets will be
        tagged by NSH-aware nodes involved in that segment as replay packets
        unless sufficient entropy is added to the duplicate packet.  How such
        an entropy is added is implementation specific.</t>
        <t indent="3" pn="section-7.4-6">
Note: Within the timestamp Delta window, defining a sequence number to protect
against replay attacks may be considered. In such a mode, NSH-aware nodes must
discard packets with duplicate sequence numbers within the timestamp Delta
window. However, in deployments with several instances of the same SF (e.g.,
cluster or load-balanced SFs), a mechanism to coordinate among those instances
to discard duplicate sequence numbers is required.  Because the coordination
mechanism to comply with this requirement is service specific, this document
does not include this protection.

        </t>
        <t indent="0" pn="section-7.4-7">All SFC data plane elements must be synchronized among themselves.
        These elements may be synchronized to a global reference time.</t>
      </section>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-7.5">
        <name slugifiedName="name-nsh-data-validation">NSH Data Validation</name>
        <t indent="0" pn="section-7.5-1">When an SFC data plane element that conforms to this specification
        needs to check the validity of the NSH data, it <bcp14>MUST</bcp14> ensure that a
        "MAC and Encrypted Metadata" Context Header is included in a received
        NSH packet. The imposer <bcp14>MUST</bcp14> silently discard the packet and <bcp14>MUST</bcp14> log
        an error at least once per the SPI if at least one of the following is
        observed:</t>
        <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-7.5-2">
          <li pn="section-7.5-2.1">the "MAC and Encrypted Metadata" Context Header is missing,</li>
          <li pn="section-7.5-2.2">the enclosed key identifier is unknown or invalid (e.g., the
            corresponding key expired), or</li>
          <li pn="section-7.5-2.3">the timestamp is invalid (<xref target="time" format="default" sectionFormat="of" derivedContent="Section 7.4"/>).</li>
        </ul>
        <t indent="0" pn="section-7.5-3">If the timestamp check is successfully passed, the SFC data plane
        element proceeds with NSH data integrity validation. After storing the
        value of the MAC field in the "MAC and Encrypted Metadata" Context
        Header, the SFC data plane element fills the MAC field with zeros.
        Then, the SFC data plane element generates the message integrity for
        the target NSH data (depending on the integrity-protection scope
        discussed in <xref target="new" format="default" sectionFormat="of" derivedContent="Section 5"/>) using the MAC_KEY and
        HMAC algorithm. If the value of the newly generated digest is
        identical to the stored one, the SFC data plane element is certain
        that the NSH data has not been tampered with and validation is
        therefore successful.  Otherwise, the NSH packet <bcp14>MUST</bcp14>
        be discarded. The comparison of the computed HMAC value to the stored
        value <bcp14>MUST</bcp14> be done in a constant-time manner to thwart
        timing attacks.</t>
      </section>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-7.6">
        <name slugifiedName="name-decryption-of-nsh-metadata">Decryption of NSH Metadata</name>
        <t indent="0" pn="section-7.6-1">If entitled to consume a supplied encrypted Context Header, an
        NSH-aware SF or SFC Proxy decrypts metadata using (K) and a decryption
        algorithm for the key identifier in the NSH.</t>
        <t indent="0" pn="section-7.6-2">The authenticated encryption algorithm has only a single output, either
        a plaintext or a special symbol (FAIL) that indicates that the inputs
        are not authentic (<xref target="RFC5116" section="2.2" sectionFormat="of" format="default" derivedLink="https://rfc-editor.org/rfc/rfc5116#section-2.2" derivedContent="RFC5116"/>).</t>
      </section>
    </section>
    <section anchor="MTU" numbered="true" toc="include" removeInRFC="false" pn="section-8">
      <name slugifiedName="name-mtu-considerations">MTU Considerations</name>
      <t indent="0" pn="section-8-1">The SFC architecture prescribes that additional information be added
      to packets to: </t>
      <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-8-2">
        <li pn="section-8-2.1">Identify SFPs: this is typically the NSH Base Header and Service
          Path Header.</li>
        <li pn="section-8-2.2">Carry metadata such as that defined in <xref format="default" target="new" sectionFormat="of" derivedContent="Section 5"/>.</li>
        <li pn="section-8-2.3">Steer the traffic along the SFPs: This is realized by means of
        transport encapsulation.</li>
      </ul>
      <t indent="0" pn="section-8-3">This added information increases the size of the packet to be carried
      along an SFP.</t>
      <t indent="0" pn="section-8-4">Aligned with <xref target="RFC8300" section="5" sectionFormat="of" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8300#section-5" derivedContent="RFC8300"/>, it is
      <bcp14>RECOMMENDED</bcp14> that network operators increase the underlying MTU so that
      NSH traffic is forwarded within an SFC-enabled domain without
      fragmentation. The available underlying MTU should be taken into account
      by network operators when providing SFs with the required Context
      Headers to be injected per SFP and the size of the data to be carried in
      these Context Headers.</t>
      <t indent="0" pn="section-8-5">If the underlying MTU cannot be increased to accommodate the NSH
      overhead, network operators may rely upon a transport encapsulation
      protocol with the required fragmentation handling. The impact of
      activating such features on SFFs should be carefully assessed by network
      operators (<xref target="RFC7665" section="5.6" sectionFormat="of" format="default" derivedLink="https://rfc-editor.org/rfc/rfc7665#section-5.6" derivedContent="RFC7665"/>).</t>
      <t indent="0" pn="section-8-6">When dealing with MTU issues, network operators should consider the
      limitations of various tunnel mechanisms such as those discussed in
      <xref target="I-D.ietf-intarea-tunnels" format="default" sectionFormat="of" derivedContent="INTERNET-IP-TUNNELS"/>.</t>
    </section>
    <section anchor="Security" numbered="true" toc="include" removeInRFC="false" pn="section-9">
      <name slugifiedName="name-security-considerations">Security Considerations</name>
      <t indent="0" pn="section-9-1">Data plane SFC-related security considerations, including privacy,
      are discussed in <xref target="RFC7665" section="6" sectionFormat="of" format="default" derivedLink="https://rfc-editor.org/rfc/rfc7665#section-6" derivedContent="RFC7665"/>
      and <xref target="RFC8300" section="8" sectionFormat="of" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8300#section-8" derivedContent="RFC8300"/>. In
      particular, <xref target="RFC8300" section="8.2.2" sectionFormat="of" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8300#section-8.2.2" derivedContent="RFC8300"/>
      states that attached metadata (i.e., Context Headers) should be limited
      to that which is necessary for correct operation of the SFP. Also, that section
      indicates that <xref target="RFC8165" format="default" sectionFormat="of" derivedContent="RFC8165"/> discusses
      metadata considerations that operators can take into account when using
      NSH.</t>
      <t indent="0" pn="section-9-2">The guidelines for cryptographic key management are discussed in
      <xref target="RFC4107" format="default" sectionFormat="of" derivedContent="RFC4107"/>. The group key management
      protocol-related security considerations discussed in <xref target="RFC4046" section="8" sectionFormat="of" format="default" derivedLink="https://rfc-editor.org/rfc/rfc4046#section-8" derivedContent="RFC4046"/> need to be taken into
      consideration.</t>
      <t indent="0" pn="section-9-3">The interaction between the SFC data plane elements and a key
      management system <bcp14>MUST NOT</bcp14> be transmitted unencrypted since
      this would completely destroy the security benefits of the
      integrity-protection solution defined in this document.</t>
      <t indent="0" pn="section-9-4">The secret key (K) must have an expiration time assigned as the
      latest point in time before which the key may be used for integrity
      protection of NSH data and encryption of Context Headers. Prior to the
      expiration of the secret key, all participating NSH-aware nodes <bcp14>SHOULD</bcp14>
      have the control plane distribute a new key identifier and associated
      keying material so that when the secret key is expired, those nodes are
      prepared with the new secret key. This allows the NSH imposer to switch
      to the new key identifier as soon as necessary. It is <bcp14>RECOMMENDED</bcp14> that
      the next key identifier and associated keying material be distributed by
      the control plane well prior to the secret key expiration time.
      Additional guidance for users of AEAD functions about rekeying can be
      found in <xref target="I-D.irtf-cfrg-aead-limits" format="default" sectionFormat="of" derivedContent="AEAD-LIMITS"/>.</t>
      <t indent="0" pn="section-9-5">The security and integrity of the key-distribution mechanism is vital
      to the security of the SFC system as a whole.</t>
      <t indent="0" pn="section-9-6">NSH data is exposed to several threats:</t>
      <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-9-7">
        <li pn="section-9-7.1">An on-path attacker modifying the NSH data.</li>
        <li pn="section-9-7.2">An attacker spoofing the NSH data.</li>
        <li pn="section-9-7.3">An attacker capturing and replaying the NSH data.</li>
        <li pn="section-9-7.4">Data carried in Context Headers revealing privacy-sensitive
          information to attackers.</li>
        <li pn="section-9-7.5">An attacker replacing the packet on which the NSH is imposed with a
          modified or bogus packet.</li>
      </ul>
      <t indent="0" pn="section-9-8">In an SFC-enabled domain where the above attacks are possible, (1)
      NSH data <bcp14>MUST</bcp14> be integrity protected and
      replay protected, and (2) privacy-sensitive NSH metadata
      <bcp14>MUST</bcp14> be encrypted for confidentiality preservation
      purposes. The Base and Service Path Headers are not encrypted.</t>
      <t indent="0" pn="section-9-9">MACs with two levels of assurance are defined in <xref target="new" format="default" sectionFormat="of" derivedContent="Section 5"/>. Considerations specific to each level of assurance
      are discussed in Sections <xref format="counter" target="mac1" sectionFormat="of" derivedContent="9.1"/> and
      <xref format="counter" target="mac2" sectionFormat="of" derivedContent="9.2"/>.</t>
      <t indent="0" pn="section-9-10">The attacks discussed in <xref target="I-D.nguyen-sfc-security-architecture" format="default" sectionFormat="of" derivedContent="ARCH-SFC-THREATS"/> are
      handled based on the solution specified in this document, with the
      exception of attacks dropping packets. Such attacks can be detected
      by relying upon statistical analysis; such analysis is out of the scope of
      this document. Also, if SFFs are not involved in the integrity checks, a
      misbehaving SFF that decrements SI while this should be done by an SF
      (SF bypass attack) will be detected by an upstream SF because the
      integrity check will fail.</t>
      <t indent="0" pn="section-9-11">Some events are logged locally with notification alerts sent by
      NSH-aware nodes to a Control Element. These events <bcp14>SHOULD</bcp14> be
      rate limited.</t>
      <t indent="0" pn="section-9-12">The solution specified in this document does not provide data origin
      authentication.</t>
      <t indent="0" pn="section-9-13">In order to detect compromised nodes, it is assumed that appropriate
      mechanisms to monitor and audit an SFC-enabled domain to detect
      misbehavior and to deter misuse are in place. Compromised nodes can thus
      be withdrawn from active service function chains using appropriate
      control plane mechanisms.</t>
      <section anchor="mac1" numbered="true" toc="include" removeInRFC="false" pn="section-9.1">
        <name slugifiedName="name-mac1">MAC#1</name>
        <t indent="0" pn="section-9.1-1">An active attacker can potentially modify the Base Header (e.g.,
        decrement the TTL so the next SFF in the SFP discards the NSH packet).
        An active attacker can typically also drop NSH packets. As such, this
        attack is not considered an attack against the security mechanism
        specified in the document.</t>
        <t indent="0" pn="section-9.1-2">It is expected that specific devices in the SFC-enabled domain will
        be configured such that no device other than the Classifiers (when
        reclassification is enabled), NSH-aware SFs, and SFC proxies will be
        able to update the integrity-protected NSH data (<xref target="gen" format="default" sectionFormat="of" derivedContent="Section 7.1"/>), and no device other than the
        NSH-aware SFs and SFC proxies will be able to decrypt and update the
        Context Headers carrying sensitive metadata (<xref target="gen" format="default" sectionFormat="of" derivedContent="Section 7.1"/>). In other words, it is expected that the NSH-aware
        SFs and SFC proxies in the SFC-enabled domain are considered fully
        trusted to act on the NSH data. Only these elements can have access to
        sensitive NSH metadata and the keying material used to integrity
        protect NSH data and encrypt Context Headers.</t>
      </section>
      <section anchor="mac2" numbered="true" toc="include" removeInRFC="false" pn="section-9.2">
        <name slugifiedName="name-mac2">MAC#2</name>
        <t indent="0" pn="section-9.2-1">SFFs can detect whether an illegitimate node has altered the
        content of the Base Header. Such messages must be discarded with
        appropriate logs and alarms generated (see <xref target="gen" format="default" sectionFormat="of" derivedContent="Section 7.1"/>).</t>
        <t indent="0" pn="section-9.2-2">Similar to <xref target="mac1" format="default" sectionFormat="of" derivedContent="Section 9.1"/>, no device other than the
        NSH-aware SFs and SFC proxies in the SFC-enabled domain should be able
        to decrypt and update the Context Headers carrying sensitive
        metadata.</t>
      </section>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-9.3">
        <name slugifiedName="name-time-synchronization">Time Synchronization</name>
        <t indent="0" pn="section-9.3-1"><xref target="RFC8633" format="default" sectionFormat="of" derivedContent="RFC8633"/> describes best current practices to
        be considered in deployments where SFC data plane elements use NTP for
        time-synchronization purposes.</t>
        <t indent="0" pn="section-9.3-2">Also, a mechanism to provide cryptographic security for NTP is
        specified in <xref target="RFC8915" format="default" sectionFormat="of" derivedContent="RFC8915"/>.</t>
      </section>
    </section>
    <section anchor="IANA" numbered="true" toc="include" removeInRFC="false" pn="section-10">
      <name slugifiedName="name-iana-considerations">IANA Considerations</name>
      <t indent="0" pn="section-10-1">IANA has added the following types to the "NSH IETF-Assigned Optional
      Variable-Length Metadata Types" registry (0x0000 IETF Base NSH MD Class)
      at <eref brackets="angle" target="https://www.iana.org/assignments/nsh"/>.
      </t>
      <table align="center" pn="table-4">
        <name slugifiedName="name-additions-to-the-nsh-ietf-a">Additions to the NSH IETF-Assigned Optional Variable-Length Metadata Types Registry</name>
        <thead>
          <tr>
            <th align="left" colspan="1" rowspan="1">Value</th>
            <th align="left" colspan="1" rowspan="1">Description</th>
            <th align="left" colspan="1" rowspan="1">Reference</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left" colspan="1" rowspan="1">0x02</td>
            <td align="left" colspan="1" rowspan="1">MAC and Encrypted Metadata #1</td>
            <td align="left" colspan="1" rowspan="1">RFC 9145</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">0x03</td>
            <td align="left" colspan="1" rowspan="1">MAC and Encrypted Metadata #2</td>
            <td align="left" colspan="1" rowspan="1">RFC 9145</td>
          </tr>
        </tbody>
      </table>
    </section>
  </middle>
  <back>
    <displayreference target="I-D.ietf-intarea-tunnels" to="INTERNET-IP-TUNNELS"/>
    <displayreference target="I-D.arkko-farrell-arch-model-t" to="INTERNET-THREAT-MODEL"/>
    <displayreference target="I-D.nguyen-sfc-security-architecture" to="ARCH-SFC-THREATS"/>
    <displayreference target="I-D.irtf-cfrg-aead-limits" to="AEAD-LIMITS"/>
    <references pn="section-11">
      <name slugifiedName="name-references">References</name>
      <references pn="section-11.1">
        <name slugifiedName="name-normative-references">Normative References</name>
        <reference anchor="GCM" quoteTitle="true" target="https://doi.org/10.6028/NIST.SP.800-38D" derivedAnchor="GCM">
          <front>
            <title>Recommendation for Block Cipher Modes of Operation: Galois/Counter Mode (GCM) and GMAC</title>
            <author initials="M." surname="Dworkin">
              <organization showOnFrontPage="true"/>
            </author>
            <date month="November" year="2007"/>
          </front>
          <seriesInfo name="NIST" value="Special Publication 800-38D"/>
          <seriesInfo name="DOI" value="10.6028/NIST.SP.800-38D"/>
        </reference>
        <reference anchor="RFC2104" target="https://www.rfc-editor.org/info/rfc2104" quoteTitle="true" derivedAnchor="RFC2104">
          <front>
            <title>HMAC: Keyed-Hashing for Message Authentication</title>
            <author initials="H." surname="Krawczyk" fullname="H. Krawczyk">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="M." surname="Bellare" fullname="M. Bellare">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="R." surname="Canetti" fullname="R. Canetti">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="1997" month="February"/>
            <abstract>
              <t indent="0">This document describes HMAC, a mechanism for message authentication using cryptographic hash functions. HMAC can be used with any iterative cryptographic hash function, e.g., MD5, SHA-1, in combination with a secret shared key.  The cryptographic strength of HMAC depends on the properties of the underlying hash function.  This memo provides information for the Internet community.  This memo does not specify an Internet standard of any kind</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2104"/>
          <seriesInfo name="DOI" value="10.17487/RFC2104"/>
        </reference>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119" quoteTitle="true" derivedAnchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author initials="S." surname="Bradner" fullname="S. Bradner">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="1997" month="March"/>
            <abstract>
              <t indent="0">In many standards track documents several words are used to signify the requirements in the specification.  These words are often capitalized. This document defines these words as they should be interpreted in IETF documents.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC4107" target="https://www.rfc-editor.org/info/rfc4107" quoteTitle="true" derivedAnchor="RFC4107">
          <front>
            <title>Guidelines for Cryptographic Key Management</title>
            <author initials="S." surname="Bellovin" fullname="S. Bellovin">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="R." surname="Housley" fullname="R. Housley">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2005" month="June"/>
            <abstract>
              <t indent="0">The question often arises of whether a given security system requires some form of automated key management, or whether manual keying is sufficient.  This memo provides guidelines for making such decisions. When symmetric cryptographic mechanisms are used in a protocol, the presumption is that automated key management is generally but not always needed.  If manual keying is proposed, the burden of proving that automated key management is not required falls to the proposer.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="107"/>
          <seriesInfo name="RFC" value="4107"/>
          <seriesInfo name="DOI" value="10.17487/RFC4107"/>
        </reference>
        <reference anchor="RFC4868" target="https://www.rfc-editor.org/info/rfc4868" quoteTitle="true" derivedAnchor="RFC4868">
          <front>
            <title>Using HMAC-SHA-256, HMAC-SHA-384, and HMAC-SHA-512 with IPsec</title>
            <author initials="S." surname="Kelly" fullname="S. Kelly">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="S." surname="Frankel" fullname="S. Frankel">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2007" month="May"/>
            <abstract>
              <t indent="0">This specification describes the use of Hashed Message Authentication Mode (HMAC) in conjunction with the SHA-256, SHA-384, and SHA-512 algorithms in IPsec.  These algorithms may be used as the basis for data origin authentication and integrity verification mechanisms for the Authentication Header (AH), Encapsulating Security Payload (ESP), Internet Key Exchange Protocol (IKE), and IKEv2 protocols, and also as Pseudo-Random Functions (PRFs) for IKE and IKEv2.  Truncated output lengths are specified for the authentication-related variants, with the corresponding algorithms designated as HMAC-SHA-256-128, HMAC-SHA-384-192, and HMAC-SHA-512-256.  The PRF variants are not truncated, and are called PRF-HMAC-SHA-256, PRF-HMAC-SHA-384, and PRF-HMAC-SHA-512.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4868"/>
          <seriesInfo name="DOI" value="10.17487/RFC4868"/>
        </reference>
        <reference anchor="RFC5116" target="https://www.rfc-editor.org/info/rfc5116" quoteTitle="true" derivedAnchor="RFC5116">
          <front>
            <title>An Interface and Algorithms for Authenticated Encryption</title>
            <author initials="D." surname="McGrew" fullname="D. McGrew">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2008" month="January"/>
            <abstract>
              <t indent="0">This document defines algorithms for Authenticated Encryption with Associated Data (AEAD), and defines a uniform interface and a registry for such algorithms.  The interface and registry can be used as an application-independent set of cryptoalgorithm suites.  This approach provides advantages in efficiency and security, and promotes the reuse of crypto implementations.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5116"/>
          <seriesInfo name="DOI" value="10.17487/RFC5116"/>
        </reference>
        <reference anchor="RFC7665" target="https://www.rfc-editor.org/info/rfc7665" quoteTitle="true" derivedAnchor="RFC7665">
          <front>
            <title>Service Function Chaining (SFC) Architecture</title>
            <author initials="J." surname="Halpern" fullname="J. Halpern" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="C." surname="Pignataro" fullname="C. Pignataro" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2015" month="October"/>
            <abstract>
              <t indent="0">This document describes an architecture for the specification, creation, and ongoing maintenance of Service Function Chains (SFCs) in a network.  It includes architectural concepts, principles, and components used in the construction of composite services through deployment of SFCs, with a focus on those to be standardized in the IETF.  This document does not propose solutions, protocols, or extensions to existing protocols.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7665"/>
          <seriesInfo name="DOI" value="10.17487/RFC7665"/>
        </reference>
        <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174" quoteTitle="true" derivedAnchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author initials="B." surname="Leiba" fullname="B. Leiba">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2017" month="May"/>
            <abstract>
              <t indent="0">RFC 2119 specifies common key words that may be used in protocol  specifications.  This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the  defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC8300" target="https://www.rfc-editor.org/info/rfc8300" quoteTitle="true" derivedAnchor="RFC8300">
          <front>
            <title>Network Service Header (NSH)</title>
            <author initials="P." surname="Quinn" fullname="P. Quinn" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="U." surname="Elzur" fullname="U. Elzur" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="C." surname="Pignataro" fullname="C. Pignataro" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2018" month="January"/>
            <abstract>
              <t indent="0">This document describes a Network Service Header (NSH) imposed on packets or frames to realize Service Function Paths (SFPs).  The NSH also provides a mechanism for metadata exchange along the instantiated service paths.  The NSH is the Service Function Chaining (SFC) encapsulation required to support the SFC architecture (defined in RFC 7665).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8300"/>
          <seriesInfo name="DOI" value="10.17487/RFC8300"/>
        </reference>
      </references>
      <references pn="section-11.2">
        <name slugifiedName="name-informative-references">Informative References</name>
        <reference anchor="I-D.irtf-cfrg-aead-limits" quoteTitle="true" target="https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-aead-limits-03" derivedAnchor="AEAD-LIMITS">
          <front>
            <title>Usage Limits on AEAD Algorithms</title>
            <author fullname="Felix Günther">
              <organization showOnFrontPage="true">ETH Zurich</organization>
            </author>
            <author fullname="Martin Thomson">
              <organization showOnFrontPage="true">Mozilla</organization>
            </author>
            <author fullname="Christopher A. Wood">
              <organization showOnFrontPage="true">Cloudflare</organization>
            </author>
            <date month="July" day="12" year="2021"/>
            <abstract>
              <t indent="0">   An Authenticated Encryption with Associated Data (AEAD) algorithm
   provides confidentiality and integrity.  Excessive use of the same
   key can give an attacker advantages in breaking these properties.
   This document provides simple guidance for users of common AEAD
   functions about how to limit the use of keys in order to bound the
   advantage given to an attacker.  It considers limits in both single-
   and multi-key settings.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-irtf-cfrg-aead-limits-03"/>
          <format type="TXT" target="https://www.ietf.org/archive/id/draft-irtf-cfrg-aead-limits-03.txt"/>
          <refcontent>Work in Progress</refcontent>
        </reference>
        <reference anchor="I-D.nguyen-sfc-security-architecture" quoteTitle="true" target="https://datatracker.ietf.org/doc/html/draft-nguyen-sfc-security-architecture-00" derivedAnchor="ARCH-SFC-THREATS">
          <front>
            <title>A Security Architecture Against Service Function Chaining Threats</title>
            <author fullname="NGUYEN CANH THANG">
              <organization showOnFrontPage="true">Department of ICMCT</organization>
            </author>
            <author fullname="Minho Park">
              <organization showOnFrontPage="true">School of Electronic Engineering</organization>
            </author>
            <date month="November" day="24" year="2019"/>
            <abstract>
              <t indent="0">   Service Function Chaining (SFC) provides a special capability that
   defines an ordered list of network services as a virtual chain and
   makes a network more flexible and manageable.  However, SFC is
   vulnerable to various attacks caused by compromised switches,
   especially the middlebox-bypass attack.  In this document, we propose
   a security architecture that can detect not only middlebox-bypass
   attacks but also other incorrect forwarding actions by compromised
   switches.  The existing solutions to protect SFC against compromised
   switches and middlebox-bypass attacks can only solve individual
   problems.  The proposed architecture uses both probe-based and
   statistics-based methods to check the probe packets with random pre-
   assigned keys and collect statistics from middleboxes for detecting
   any abnormal actions in SFC.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-nguyen-sfc-security-architecture-00"/>
          <format type="TXT" target="https://www.ietf.org/archive/id/draft-nguyen-sfc-security-architecture-00.txt"/>
          <refcontent>Work in Progress</refcontent>
        </reference>
        <reference anchor="I-D.ietf-intarea-tunnels" quoteTitle="true" target="https://datatracker.ietf.org/doc/html/draft-ietf-intarea-tunnels-10" derivedAnchor="INTERNET-IP-TUNNELS">
          <front>
            <title>IP Tunnels in the Internet Architecture</title>
            <author fullname="Joe Touch">
              <organization showOnFrontPage="true">Independent consultant</organization>
            </author>
            <author fullname="Mark Townsley">
              <organization showOnFrontPage="true">Cisco</organization>
            </author>
            <date month="September" day="12" year="2019"/>
            <abstract>
              <t indent="0">   This document discusses the role of IP tunnels in the Internet
   architecture. An IP tunnel transits IP datagrams as payloads in non-
   link layer protocols. This document explains the relationship of IP
   tunnels to existing protocol layers and the challenges in supporting
   IP tunneling, based on the equivalence of tunnels to links. The
   implications of this document are used to derive recommendations that
   update MTU and fragment issues in RFC 4459.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-intarea-tunnels-10"/>
          <format type="TXT" target="https://www.ietf.org/archive/id/draft-ietf-intarea-tunnels-10.txt"/>
          <refcontent>Work in Progress</refcontent>
        </reference>
        <reference anchor="I-D.arkko-farrell-arch-model-t" quoteTitle="true" target="https://datatracker.ietf.org/doc/html/draft-arkko-farrell-arch-model-t-04" derivedAnchor="INTERNET-THREAT-MODEL">
          <front>
            <title>Challenges and Changes in the Internet Threat Model</title>
            <author fullname="Jari Arkko">
              <organization showOnFrontPage="true">Ericsson</organization>
            </author>
            <author fullname="Stephen Farrell">
              <organization showOnFrontPage="true">Trinity College Dublin</organization>
            </author>
            <date month="July" day="13" year="2020"/>
            <abstract>
              <t indent="0">   Communications security has been at the center of many security
   improvements in the Internet.  The goal has been to ensure that
   communications are protected against outside observers and attackers.

   This memo suggests that the existing RFC 3552 threat model, while
   important and still valid, is no longer alone sufficient to cater for
   the pressing security and privacy issues seen on the Internet today.
   For instance, it is often also necessary to protect against endpoints
   that are compromised, malicious, or whose interests simply do not
   align with the interests of users.  While such protection is
   difficult, there are some measures that can be taken and we argue
   that investigation of these issues is warranted.

   It is particularly important to ensure that as we continue to develop
   Internet technology, non-communications security related threats, and
   privacy issues, are properly understood.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-arkko-farrell-arch-model-t-04"/>
          <format type="TXT" target="https://www.ietf.org/archive/id/draft-arkko-farrell-arch-model-t-04.txt"/>
          <refcontent>Work in Progress</refcontent>
        </reference>
        <reference anchor="RFC4046" target="https://www.rfc-editor.org/info/rfc4046" quoteTitle="true" derivedAnchor="RFC4046">
          <front>
            <title>Multicast Security (MSEC) Group Key Management Architecture</title>
            <author initials="M." surname="Baugher" fullname="M. Baugher">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="R." surname="Canetti" fullname="R. Canetti">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="L." surname="Dondeti" fullname="L. Dondeti">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="F." surname="Lindholm" fullname="F. Lindholm">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2005" month="April"/>
            <abstract>
              <t indent="0">This document defines the common architecture for Multicast Security (MSEC) key management protocols to support a variety of application, transport, and network layer security protocols.  It also defines the group security association (GSA), and describes the key management protocols that help establish a GSA.  The framework and guidelines described in this document permit a modular and flexible design of group key management protocols for a variety of different settings that are specialized to applications needs.  MSEC key management protocols may be used to facilitate secure one-to-many, many-to-many, or one-to-one communication.  This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4046"/>
          <seriesInfo name="DOI" value="10.17487/RFC4046"/>
        </reference>
        <reference anchor="RFC5905" target="https://www.rfc-editor.org/info/rfc5905" quoteTitle="true" derivedAnchor="RFC5905">
          <front>
            <title>Network Time Protocol Version 4: Protocol and Algorithms Specification</title>
            <author initials="D." surname="Mills" fullname="D. Mills">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="J." surname="Martin" fullname="J. Martin" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="J." surname="Burbank" fullname="J. Burbank">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="W." surname="Kasch" fullname="W. Kasch">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2010" month="June"/>
            <abstract>
              <t indent="0">The Network Time Protocol (NTP) is widely used to synchronize computer clocks in the Internet.  This document describes NTP version 4 (NTPv4), which is backwards compatible with NTP version 3 (NTPv3), described in RFC 1305, as well as previous versions of the protocol. NTPv4 includes a modified protocol header to accommodate the Internet Protocol version 6 address family.  NTPv4 includes fundamental improvements in the mitigation and discipline algorithms that extend the potential accuracy to the tens of microseconds with modern workstations and fast LANs.  It includes a dynamic server discovery scheme, so that in many cases, specific server configuration is not required.  It corrects certain errors in the NTPv3 design and implementation and includes an optional extension mechanism.   [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5905"/>
          <seriesInfo name="DOI" value="10.17487/RFC5905"/>
        </reference>
        <reference anchor="RFC6973" target="https://www.rfc-editor.org/info/rfc6973" quoteTitle="true" derivedAnchor="RFC6973">
          <front>
            <title>Privacy Considerations for Internet Protocols</title>
            <author initials="A." surname="Cooper" fullname="A. Cooper">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="H." surname="Tschofenig" fullname="H. Tschofenig">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="B." surname="Aboba" fullname="B. Aboba">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="J." surname="Peterson" fullname="J. Peterson">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="J." surname="Morris" fullname="J. Morris">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="M." surname="Hansen" fullname="M. Hansen">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="R." surname="Smith" fullname="R. Smith">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2013" month="July"/>
            <abstract>
              <t indent="0">This document offers guidance for developing privacy considerations for inclusion in protocol specifications.  It aims to make designers, implementers, and users of Internet protocols aware of privacy-related design choices.  It suggests that whether any individual RFC warrants a specific privacy considerations section will depend on the document's content.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6973"/>
          <seriesInfo name="DOI" value="10.17487/RFC6973"/>
        </reference>
        <reference anchor="RFC7258" target="https://www.rfc-editor.org/info/rfc7258" quoteTitle="true" derivedAnchor="RFC7258">
          <front>
            <title>Pervasive Monitoring Is an Attack</title>
            <author initials="S." surname="Farrell" fullname="S. Farrell">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="H." surname="Tschofenig" fullname="H. Tschofenig">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2014" month="May"/>
            <abstract>
              <t indent="0">Pervasive monitoring is a technical attack that should be mitigated in the design of IETF protocols, where possible.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="188"/>
          <seriesInfo name="RFC" value="7258"/>
          <seriesInfo name="DOI" value="10.17487/RFC7258"/>
        </reference>
        <reference anchor="RFC7498" target="https://www.rfc-editor.org/info/rfc7498" quoteTitle="true" derivedAnchor="RFC7498">
          <front>
            <title>Problem Statement for Service Function Chaining</title>
            <author initials="P." surname="Quinn" fullname="P. Quinn" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="T." surname="Nadeau" fullname="T. Nadeau" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2015" month="April"/>
            <abstract>
              <t indent="0">This document provides an overview of the issues associated with the deployment of service functions (such as firewalls, load balancers, etc.) in large-scale environments.  The term "service function                                         chaining" is used to describe the definition and instantiation of an ordered list of instances of such service functions, and the subsequent "steering" of traffic flows through those service functions.</t>
              <t indent="0">The set of enabled service function chains reflects operator service offerings and is designed in conjunction with application delivery and service and network policy.</t>
              <t indent="0">This document also identifies several key areas that the Service Function Chaining (SFC) working group will investigate to guide its architectural and protocol work and associated documents.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7498"/>
          <seriesInfo name="DOI" value="10.17487/RFC7498"/>
        </reference>
        <reference anchor="RFC7635" target="https://www.rfc-editor.org/info/rfc7635" quoteTitle="true" derivedAnchor="RFC7635">
          <front>
            <title>Session Traversal Utilities for NAT (STUN) Extension for Third-Party Authorization</title>
            <author initials="T." surname="Reddy" fullname="T. Reddy">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="P." surname="Patil" fullname="P. Patil">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="R." surname="Ravindranath" fullname="R. Ravindranath">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="J." surname="Uberti" fullname="J. Uberti">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2015" month="August"/>
            <abstract>
              <t indent="0">This document proposes the use of OAuth 2.0 to obtain and validate ephemeral tokens that can be used for Session Traversal Utilities for NAT (STUN) authentication.  The usage of ephemeral tokens ensures that access to a STUN server can be controlled even if the tokens are compromised.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7635"/>
          <seriesInfo name="DOI" value="10.17487/RFC7635"/>
        </reference>
        <reference anchor="RFC8165" target="https://www.rfc-editor.org/info/rfc8165" quoteTitle="true" derivedAnchor="RFC8165">
          <front>
            <title>Design Considerations for Metadata Insertion</title>
            <author initials="T." surname="Hardie" fullname="T. Hardie">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2017" month="May"/>
            <abstract>
              <t indent="0">The IAB published RFC 7624 in response to several revelations of pervasive attacks on Internet communications.  This document considers the implications of protocol designs that associate metadata with encrypted flows.  In particular, it asserts that designs that share metadata only by explicit actions at the host are preferable to designs in which middleboxes insert metadata.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8165"/>
          <seriesInfo name="DOI" value="10.17487/RFC8165"/>
        </reference>
        <reference anchor="RFC8459" target="https://www.rfc-editor.org/info/rfc8459" quoteTitle="true" derivedAnchor="RFC8459">
          <front>
            <title>Hierarchical Service Function Chaining (hSFC)</title>
            <author initials="D." surname="Dolson" fullname="D. Dolson">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="S." surname="Homma" fullname="S. Homma">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="D." surname="Lopez" fullname="D. Lopez">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="M." surname="Boucadair" fullname="M. Boucadair">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2018" month="September"/>
            <abstract>
              <t indent="0">Hierarchical Service Function Chaining (hSFC) is a network architecture allowing an organization to decompose a large-scale network into multiple domains of administration.</t>
              <t indent="0">The goals of hSFC are to make a large-scale network easier to design, simpler to control, and supportive of independent functional groups within large network operators.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8459"/>
          <seriesInfo name="DOI" value="10.17487/RFC8459"/>
        </reference>
        <reference anchor="RFC8633" target="https://www.rfc-editor.org/info/rfc8633" quoteTitle="true" derivedAnchor="RFC8633">
          <front>
            <title>Network Time Protocol Best Current Practices</title>
            <author initials="D." surname="Reilly" fullname="D. Reilly">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="H." surname="Stenn" fullname="H. Stenn">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="D." surname="Sibold" fullname="D. Sibold">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2019" month="July"/>
            <abstract>
              <t indent="0">The Network Time Protocol (NTP) is one of the oldest protocols on the Internet and has been widely used since its initial publication. This document is a collection of best practices for the general operation of NTP servers and clients on the Internet.  It includes recommendations for the stable, accurate, and secure operation of NTP infrastructure.  This document is targeted at NTP version 4 as described in RFC 5905.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="223"/>
          <seriesInfo name="RFC" value="8633"/>
          <seriesInfo name="DOI" value="10.17487/RFC8633"/>
        </reference>
        <reference anchor="RFC8877" target="https://www.rfc-editor.org/info/rfc8877" quoteTitle="true" derivedAnchor="RFC8877">
          <front>
            <title>Guidelines for Defining Packet Timestamps</title>
            <author initials="T." surname="Mizrahi" fullname="T. Mizrahi">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="J." surname="Fabini" fullname="J. Fabini">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="A." surname="Morton" fullname="A. Morton">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2020" month="September"/>
            <abstract>
              <t indent="0">Various network protocols make use of binary-encoded timestamps that are incorporated in the protocol packet format, referred to as "packet timestamps" for short. This document specifies guidelines for defining packet timestamp formats in networking protocols at various layers. It also presents three recommended timestamp formats. The target audience of this document includes network protocol designers. It is expected that a new network protocol that requires a packet timestamp will, in most cases, use one of the recommended timestamp formats. If none of the recommended formats fits the protocol requirements, the new protocol specification should specify the format of the packet timestamp according to the guidelines in this document.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8877"/>
          <seriesInfo name="DOI" value="10.17487/RFC8877"/>
        </reference>
        <reference anchor="RFC8915" target="https://www.rfc-editor.org/info/rfc8915" quoteTitle="true" derivedAnchor="RFC8915">
          <front>
            <title>Network Time Security for the Network Time Protocol</title>
            <author initials="D." surname="Franke" fullname="D. Franke">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="D." surname="Sibold" fullname="D. Sibold">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="K." surname="Teichel" fullname="K. Teichel">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="M." surname="Dansarie" fullname="M. Dansarie">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="R." surname="Sundblad" fullname="R. Sundblad">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2020" month="September"/>
            <abstract>
              <t indent="0">This memo specifies Network Time Security (NTS), a mechanism for using Transport Layer Security (TLS) and Authenticated Encryption with Associated Data (AEAD) to provide cryptographic security for the client-server mode of the Network Time Protocol (NTP). </t>
              <t indent="0">NTS is structured as a suite of two loosely coupled sub-protocols. The first (NTS Key Establishment (NTS-KE)) handles initial authentication and key establishment over TLS. The second (NTS Extension Fields for NTPv4) handles encryption and authentication during NTP time synchronization via extension fields in the NTP packets, and holds all required state only on the client via opaque cookies.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8915"/>
          <seriesInfo name="DOI" value="10.17487/RFC8915"/>
        </reference>
      </references>
    </references>
    <section numbered="false" toc="include" removeInRFC="false" pn="section-appendix.a">
      <name slugifiedName="name-acknowledgements">Acknowledgements</name>
      <t indent="0" pn="section-appendix.a-1">This document was created as a follow-up to the discussion in
      IETF 104:
      <eref brackets="angle" target="https://datatracker.ietf.org/meeting/104/materials/slides-104-sfc-sfc-chair-slides-01"/>
      (slide 7).</t>
      <t indent="0" pn="section-appendix.a-2">Thanks to <contact fullname="Joel Halpern"/>, <contact fullname="Christian Jacquenet"/>, <contact fullname="Dirk von Hugo"/>,
      <contact fullname="Tal Mizrahi"/>, <contact fullname="Daniel Migault"/>,
      <contact fullname="Diego Lopez"/>, <contact fullname="Greg Mirsky"/>,
      and <contact fullname="Dhruv Dhody"/> for the comments.</t>
      <t indent="0" pn="section-appendix.a-3">Many thanks to <contact fullname="Steve Hanna"/> for the valuable secdir review and
      <contact fullname="Juergen Schoenwaelder"/> for the opsdir review.</t>
      <t indent="0" pn="section-appendix.a-4">Thanks to <contact fullname="Greg Mirsky"/> for the <contact fullname="Shepherd review"/>.</t>
      <t indent="0" pn="section-appendix.a-5">Thanks to <contact fullname="Alvaro Retana"/>, <contact fullname="Lars Eggert"/>, <contact fullname="Martin Duke"/>, <contact fullname="Erik Kline"/>, <contact fullname="Zaheduzzaman Sarker"/>,
      <contact fullname="Éric Vyncke"/>, <contact fullname="Roman Danyliw"/>,
      <contact fullname="Murray Kucherawy"/>, <contact fullname="John       Scudder"/>, and <contact fullname="Benjamin Kaduk"/> for the IESG
      review.</t>
    </section>
    <section anchor="authors-addresses" numbered="false" removeInRFC="false" toc="include" pn="section-appendix.b">
      <name slugifiedName="name-authors-addresses">Authors' Addresses</name>
      <author fullname="Mohamed Boucadair" initials="M." surname="Boucadair">
        <organization showOnFrontPage="true">Orange</organization>
        <address>
          <postal>
            <street/>
            <city>Rennes</city>
            <code>35000</code>
            <country>France</country>
          </postal>
          <email>mohamed.boucadair@orange.com</email>
        </address>
      </author>
      <author fullname="Tirumaleswar Reddy.K" initials="T." surname="Reddy.K">
        <organization showOnFrontPage="true">Akamai</organization>
        <address>
          <postal>
            <street>Embassy Golf Link Business Park</street>
            <city>Bangalore</city>
            <region>Karnataka</region>
            <code>560071</code>
            <country>India</country>
          </postal>
          <email>kondtir@gmail.com</email>
        </address>
      </author>
      <author fullname="Dan Wing" initials="D." surname="Wing">
        <organization abbrev="Citrix" showOnFrontPage="true">Citrix Systems, Inc.</organization>
        <address>
          <postal>
            <street/>
            <country>USA</country>
          </postal>
          <email>dwing-ietf@fuggles.com</email>
        </address>
      </author>
    </section>
  </back>
</rfc>
