<?xml version="1.0" encoding="utf-8"?>

<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>

<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-6man-vpn-dest-opt-11" number="9837" consensus="true" updates="" obsoletes="" xml:lang="en" category="exp" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">

<front>
    <title abbrev="VPN Service Destination Option">The IPv6 VPN Service Destination Option</title>
    <seriesInfo name="RFC" value="9837"/>
    <author initials="R." surname="Bonica" fullname="Ron Bonica">
      <organization>Juniper Networks</organization>
      <address>
        <postal>
          <city>Herndon</city>
          <region>Virginia</region>
          <country>United States of America</country>
        </postal>
        <email>rbonica@juniper.net</email>
      </address>
    </author>
    <author initials="X." surname="Li" fullname="Xing Li">
      <organization>CERNET Center/Tsinghua University</organization>
      <address>
        <postal>
          <city>Beijing</city>
          <country>China</country>
        </postal>
        <email>xing@cernet.edu.cn</email>
      </address>
    </author>
    <author initials="A." surname="Farrel" fullname="Adrian Farrel">
      <organization>Old Dog Consulting</organization>
      <address>
        <postal>
          <country>United Kingdom</country>
        </postal>
        <email>adrian@olddog.co.uk</email>
      </address>
    </author>
    <author initials="Y." surname="Kamite" fullname="Yuji Kamite">
      <organization>NTT DOCOMO BUSINESS</organization>
      <address>
        <postal>
	  <region>Chiyoda-ku, Tokyo</region>
          <country>Japan</country>
        </postal>
        <email>y.kamite@ntt.com</email>
      </address>
    </author>
    <author initials="L." surname="Jalil" fullname="Luay Jalil">
      <organization>Verizon</organization>
      <address>
        <postal>
          <city>Richardson</city>
          <region>Texas</region>
          <country>United States of America</country>
        </postal>
        <email>luay.jalil@one.verizon.com</email>
      </address>
    </author>
    <date year="2025" month="August"/>
    <area>INT</area>
    <workgroup>6man</workgroup>
    <keyword>IPv6</keyword>
    <keyword>Destination Option</keyword>
    <keyword>VPN</keyword>
    <abstract>
<t>This document describes an experiment in which VPN service information is encoded in an experimental IPv6 Destination Option. The experimental IPv6 Destination Option is called the VPN Service Option.</t>
      <t>One purpose of this experiment is to demonstrate that the VPN Service Option can be deployed in a production network.  Another purpose is to demonstrate that the security measures described in this document are sufficient to protect a VPN.  Finally, this document encourages replication of the experiment.</t>
    </abstract>
  </front>
  <middle>
<section anchor="introduction">
      <name>Introduction</name>
      <t>Generic Packet Tunneling <xref target="RFC2473"/> allows a router in one network to encapsulate a packet in an IP header and send it to a router in another network. The receiving router removes the outer IP header and forwards the original packet into its own network. This facilitates connectivity between networks that share a private addressing <xref target="RFC1918"/> <xref target="RFC4193"/> plan but are not connected by a direct link.</t>
      <t>The IETF refined this concept in the Framework for VPN <xref target="RFC2764"/>. The IETF also standardized the following VPN technologies:</t>
      <ul spacing="normal">
        <li>
          <t>IPsec VPN <xref target="RFC3884"/></t>
        </li>
        <li>
          <t>Layer 3 VPN (L3VPN) <xref target="RFC4364"/></t>
        </li>
        <li>
          <t>Virtual Private LAN Service (VPLS) <xref target="RFC4761"/><xref target="RFC4762"/></t>
        </li>
        <li>
          <t>Layer 2 VPN (L2VPN) <xref target="RFC6624"/></t>
        </li>
        <li>
          <t>Ethernet VPN (EVPN) <xref target="RFC7432"/></t>
        </li>
        <li>
          <t>Pseudowires <xref target="RFC8077"/></t>
        </li>
        <li>
          <t>Segment Routing over IPv6 (SRv6) <xref target="RFC8986"/></t>
        </li>
        <li>
          <t>EVPN / Network Virtualization over Layer 3 (NVO3)  <xref target="RFC9469"/></t>
        </li>
      </ul>
      <t>IPsec VPNs cryptographically protect all traffic from customer endpoint to customer endpoint. All of the other VPN technologies mentioned above share the following characteristics:</t>
      <ul spacing="normal">
        <li>
          <t>An ingress Provider Edge (PE) router encapsulates customer data in a tunnel header. The tunnel header includes service information. Service information identifies a Forwarding Information Base (FIB) entry on an egress PE router.</t>
        </li>
        <li>
          <t>The ingress PE router sends the encapsulated packet to the egress PE router.</t>
        </li>
        <li>
          <t>The egress PE router receives the encapsulated packet.</t>
        </li>
        <li>
          <t>The egress PE router searches its FIB for an entry that matches the incoming service information. If it finds one, it removes the tunnel header and forwards the customer data to a Customer Edge (CE) device, as per the FIB entry. If it does not find a matching FIB entry, it discards the packet.</t>
        </li>
      </ul>
      <t>This document describes an experiment in which VPN service information is encoded in an experimental IPv6 Destination Option <xref target="RFC8200"/>. The experimental IPv6 Destination Option is called the VPN Service Option.</t>
      <t>The solution described in this document offers the following benefits:</t>
      <ul spacing="normal">
        <li>
          <t>It does not require configuration on CE devices.</t>
        </li>
        <li>
          <t>It encodes service information in the IPv6 extension header. Therefore, it does not require any non-IPv6 headers (e.g., MPLS headers) to carry service information.</t>
        </li>
        <li>
          <t>It supports many VPNs on a single egress PE router.</t>
        </li>
        <li>
          <t>When a single egress PE router supports many VPNs, it does not require an IP address per VPN.</t>
        </li>
        <li>
          <t>It does not rely on any particular control plane.</t>
        </li>
      </ul>
      <t>One purpose of this experiment is to demonstrate that the VPN Service Option can be deployed in a production network. Another purpose is to demonstrate that the security measures described in <xref target="security"/> of this document are sufficient to protect a VPN. Finally, this document encourages replication of the experiment, so that operational issues can be discovered.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
        <t>
    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&nbsp;14 <xref target="RFC2119"/> <xref
    target="RFC8174"/> when, and only when, they appear in all capitals, as
    shown here.
        </t>

    </section>
    <section anchor="option">
      <name>The VPN Service Option</name>
      <t>The VPN Service Option is an IPv6 Destination Option encoded according to rules defined in <xref target="RFC8200"/>.</t>
      <t>As described in <xref target="RFC8200" section="4.2"/>, an IPv6 Destination Option contains three fields: Option Type, Opt Data Len, and Option Data. In the VPN Service Option, these fields are used as follows:</t>
      <ul spacing="normal">
        <li>
          <t>Option Type: 8-bit selector.  VPN Service Option. This field <bcp14>MUST</bcp14> be set to 0x5E (RFC3692-style Experiment) <xref target="V6MSG"/>.  See NOTE below.</t>
        </li>
        <li>
          <t>Opt Data Len: 8-bit unsigned integer.  Length of the option, in
 bytes, excluding the Option Type and Option Length fields.  This
 field <bcp14>MUST</bcp14> be set to 4.</t>
        </li>
        <li>
          <t>Option Data: 32 bits.  VPN service information that identifies a FIB entry on the egress PE. The FIB entry determines how the egress PE will forward customer data to a CE device.</t>
        </li>
      </ul>
      <t>A single VPN Service Option <bcp14>MAY</bcp14> appear in a Destination Options header
that immediately precedes an upper-layer header. It <bcp14>MUST NOT</bcp14> appear in any other
extension header.  If a receiver finds the VPN Service Option in any other
extension header, it <bcp14>MUST NOT</bcp14> recognize the option.
      The packet <bcp14>MUST</bcp14> be processed according to the setting of the two highest-order bits of the Option Type (see NOTE below).</t>


      <t>NOTE: For this experiment, the Option Type is set to '01011110', i.e.,
0x5E. The highest-order two bits are set to 01, indicating that the
required action by a destination node that does not recognize the option
is to discard the packet. The third highest-order bit is set to 0,
indicating that Option Data cannot be modified along the path between
the packet's source and its destination. The remaining low-order bits
are set to '11110' to indicate the single IPv6 Destination Option Type
code point available in the "Destination Options and Hop-by-Hop Options" registry <xref target="V6MSG"/> for experimentation.</t>
    </section>
    <section anchor="forwarding-plane-considerations">
      <name>Forwarding Plane Considerations</name>
      <t>The ingress PE encapsulates the customer data in a tunnel header. The tunnel header <bcp14>MUST</bcp14> contain an IPv6 header and a Destination Options header that immediately precedes the customer data. It <bcp14>MAY</bcp14> also include any legal combination of IPv6 extension headers.</t>
      <t>The IPv6 Header contains the following (all defined in <xref target="RFC8200"/>):</t>

      <ul spacing="normal">
        <li>
          <t>Version - <bcp14>MUST</bcp14> be equal to 6.</t>
        </li>
        <li>
          <t>Traffic Class</t>
        </li>
        <li>
          <t>Flow Label
	  </t>
        </li>
        <li>
          <t>Payload Length
	  </t>
        </li>
        <li>
          <t>Next Header
	  </t>
        </li>
        <li>
          <t>Hop Limit
	  </t>
        </li>
        <li>
          <t>Source Address - Represents an interface on the ingress PE router. This address <bcp14>SHOULD</bcp14> be chosen according to guidance provided in <xref target="RFC6724"/>.</t>
        </li>
        <li>
          <t>Destination Address - Represents an interface on the egress PE router. This address <bcp14>SHOULD</bcp14> be chosen according to guidance provided in <xref target="RFC6724"/>.</t>
        </li>
      </ul>
      <t>The IPv6 Destination Options Extension Header contains the following (all defined in <xref target="RFC8200"/>):</t>
      <ul spacing="normal">
        <li>
          <t>Next Header - <bcp14>MUST</bcp14> identify the protocol of the customer data.</t>
        </li>
        <li>
          <t>Hdr Ext Len
	  </t>
        </li>
        <li>
          <t>Options - In this experiment, the Options field <bcp14>MUST</bcp14> contain exactly one VPN Service Option as defined in <xref target="option"/> of this document. It <bcp14>MAY</bcp14> also contain any legal combination of other Destination Options.</t>
        </li>
      </ul>
    </section>
    <section anchor="control-plane-considerations">
      <name>Control Plane Considerations</name>
      <t>The FIB can be populated by:</t>
      <ul spacing="normal">
        <li>
          <t>An operator, using a Command-Line Interface (CLI)</t>
        </li>
        <li>
          <t>A controller, using the Path Computation Element
Communication Protocol (PCEP) <xref target="RFC5440"/> or the Network
Configuration Protocol (NETCONF) <xref target="RFC6241"/></t>
        </li>
        <li>
          <t>A routing protocol</t>
        </li>
      </ul>
      <t>Routing protocol extensions that support the VPN Service Option are beyond the scope of this document.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>
    <section anchor="security">
      <name>Security Considerations</name>
      <t>A VPN is characterized by the following security policy:</t>
      <ul spacing="normal">
        <li>
          <t>Nodes outside of a VPN cannot inject traffic into the VPN.</t>
        </li>
        <li>
          <t>Nodes inside a VPN cannot send traffic outside of the VPN.</t>
        </li>
      </ul>
      <t>A set of PE routers cooperate to enforce this security policy. If a device outside of that set could impersonate a device inside of the set, it would be possible for that device to subvert security policy. Therefore, impersonation must not be possible. The following paragraphs describe procedures that prevent impersonation.</t>
      <t>The VPN Service Option can be deployed:</t>
      <ul spacing="normal">
        <li>
          <t>On the global Internet</t>
        </li>
        <li>
          <t>Inside of a limited domain</t>
        </li>
      </ul>
      <t>When the VPN Service Option is deployed on the global Internet, the tunnel that connects the ingress PE to the egress PE <bcp14>MUST</bcp14> be cryptographically protected by one of the following:</t>
      <ul spacing="normal">
        <li>
          <t>The IPv6 Authentication Header (AH) <xref target="RFC4302"/></t>
        </li>
        <li>
          <t>The IPv6 Encapsulating Security Payload (ESP) Header <xref target="RFC4303"/></t>
        </li>
      </ul>
      <t>When the VPN Service Option is deployed in a limited domain, all nodes at the edge of limited domain <bcp14>MUST</bcp14> maintain Access Control Lists (ACLs).  These ACLs <bcp14>MUST</bcp14> discard packets that satisfy the following criteria:</t>
      <ul spacing="normal">
        <li>
          <t>Contain a VPN Service Option</t>
        </li>
        <li>
          <t>Contain an IPv6 Destination Address that represents an interface inside of the limited domain</t>
        </li>
      </ul>
      <t>The mitigation techniques mentioned above operate in fail-open mode. That is, they require
explicit configuration in order to ensure that packets
using the approach described in this document do not leak out of a domain.
See <xref target="I-D.wkumari-intarea-safe-limited-domains"/> for a discussion of fail-open 
and fail-closed modes.</t>
      <t>For further information on the security concerns related to IP tunnels and the 
recommended mitigation techniques, please see <xref target="RFC6169"/>.</t>
    </section>
    <section anchor="deployment-considerations">
      <name>Deployment Considerations</name>
      <t>The VPN Service Option is imposed by an ingress PE and processed by an
egress PE. It is not processed by any other nodes along the delivery path
between the ingress PE and egress PE.</t>
      <t>However, some networks discard packets that include IPv6 Destination Options. 
This is an impediment to deployment.</t>
      <t>Because the VPN Service Option uses an experimental code point, there
is a risk of collisions with other experiments.  Specifically, the
egress PE may process packets from another experiment that uses the
same code point.</t>
      <t>As with all experiments with IETF protocols, it is expected that
care is taken by the operator to ensure that all nodes participating
in an experiment are carefully configured.</t>
      <t>Because the VPN Service Destination Option uses an experimental code point,
processing of this option <bcp14>MUST</bcp14> be disabled by default. Explicit configuration
is required to enable processing of the option.</t>
    </section>
    <section anchor="experimental-results">
      <name>Experimental Results</name>
      <t>Parties participating in this experiment should publish experimental results within one year of the publication of this document. Experimental results should address the following:</t>
      <ul spacing="normal">
        <li>
          <t>Effort required to deploy
          </t>
          <ul spacing="normal">
            <li>
              <t>Was deployment incremental or network-wide?</t>
            </li>
            <li>
              <t>Was there a need to synchronize configurations at each node, or could nodes be configured independently?</t>
            </li>
            <li>
              <t>Did the deployment require a hardware upgrade?</t>
            </li>
          </ul>
        </li>
        <li>
          <t>Effort required to secure
          </t>
          <ul spacing="normal">
            <li>
              <t>Performance impact</t>
            </li>
            <li>
              <t>Effectiveness of risk mitigation with ACLs</t>
            </li>
            <li>
              <t>Cost of risk mitigation with ACLs</t>
            </li>
          </ul>
        </li>
        <li>
          <t>Mechanism used to populate the FIB</t>
        </li>
        <li>
          <t>Scale of deployment</t>
        </li>
        <li>
          <t>Interoperability
          </t>
          <ul spacing="normal">
            <li>
              <t>Did you deploy two interoperable implementations?</t>
            </li>
            <li>
              <t>Did you experience interoperability problems?</t>
            </li>
          </ul>
        </li>
        <li>
          <t>Effectiveness and sufficiency of Operations, Administration, and Maintenance (OAM)  mechanisms
          </t>
          <ul spacing="normal">
            <li>
              <t>Did PING work?</t>
            </li>
            <li>
              <t>Did TRACEROUTE work?</t>
            </li>
            <li>
              <t>Did Wireshark work?</t>
            </li>
            <li>
              <t>Did TCPDUMP work?</t>
            </li>
          </ul>
        </li>
      </ul>
    </section>
  </middle>
  <back>
<displayreference target="I-D.wkumari-intarea-safe-limited-domains" to="SAFE-LIM-DOMAINS"/>
    
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6169.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6724.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8200.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml"/>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.1918.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2473.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2764.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3884.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4193.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4302.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4303.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4364.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4761.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4762.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5440.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6241.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6624.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7432.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8077.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8986.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9469.xml"/>
        <reference anchor="V6MSG" target="https://www.iana.org/assignments/ipv6-parameters">
          <front>
            <title>Destination Options and Hop-by-Hop Options</title>
            <author>
              <organization abbrev="IANA">Internet Assigned Numbers Authority</organization>
            </author>
            <date/>
          </front>
        </reference>
<!-- [I-D.wkumari-intarea-safe-limited-domains]
IESG State: I-D Exists as of 08/13/25 
Long Way - author initials
-->

<reference anchor="I-D.wkumari-intarea-safe-limited-domains" target="https://datatracker.ietf.org/doc/html/draft-wkumari-intarea-safe-limited-domains-04">
<front>
<title>Safe(r) Limited Domains</title>
<author fullname="Warren Kumari" initials="W." surname="Kumari">
<organization>Google, LLC</organization>
</author>
<author fullname="Andrew Alston" initials="A." surname="Alston">
<organization>Alston Networks</organization>
</author>
<author fullname="Éric Vyncke" initials="É." surname="Vyncke">
<organization>Cisco</organization>
</author>
<author fullname="Suresh Krishnan" initials="S." surname="Krishnan">
<organization>Cisco</organization>
</author>
<author fullname="Donald E. Eastlake 3rd" initials="D." surname="Eastlake">
<organization>Independent</organization>
</author>
<date day="3" month="March" year="2025"/>
</front>
<seriesInfo name="Internet-Draft" value="draft-wkumari-intarea-safe-limited-domains-04"/>
</reference>
      </references>
    </references>
    <section anchor="acknowledgements" numbered="false">
      <name>Acknowledgements</name>
      <t>Thanks to <contact fullname="Gorry Fairhurst"/>, <contact fullname="Antoine Fressancourt"/>, <contact fullname="Eliot Lear"/>, and <contact fullname="Mark Smith"/> for their reviews and contributions to this document.</t>
    </section>

  </back>

</rfc>
