One document matched: draft-ietf-l2tpext-keyed-ipv6-tunnel-07.xml


<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<?rfc toc="yes"?>
<?rfc tocompact="yes"?>
<?rfc tocdepth="3"?>
<?rfc tocindent="yes"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<?rfc compact="yes"?>
<?rfc subcompact="no"?>
<rfc category="std" docName="draft-ietf-l2tpext-keyed-ipv6-tunnel-07"
     ipr="trust200902">
  <front>
    <title abbrev="">Keyed IPv6 Tunnel</title>

    <author fullname="Maciek Konstantynowicz" initials="M" role="editor"
            surname="Konstantynowicz">
      <organization>Cisco Systems</organization>

      <address>
        <email>maciek@cisco.com</email>
      </address>
    </author>

    <author fullname="Giles Heron" initials="G" role="editor" surname="Heron">
      <organization>Cisco Systems</organization>

      <address>
        <email>giheron@cisco.com</email>
      </address>
    </author>

    <author fullname="Rainer Schatzmayr" initials="R" surname="Schatzmayr">
      <organization>Deutsche Telekom AG</organization>

      <address>
        <email>rainer.schatzmayr@telekom.de</email>
      </address>
    </author>

    <author fullname="Wim Henderickx" initials="W" surname="Henderickx">
      <organization>Alcatel-Lucent, Inc.</organization>

      <address>
        <email>wim.henderickx@alcatel-lucent.com</email>
      </address>
    </author>

    <date day="14" month="October" year="2016"/>

    <area>Internet</area>

    <workgroup>L2TPEXT Working Group</workgroup>

    <abstract>
      <t>This document describes an Ethernet over IPv6 tunnel
      encapsulation with mandatory 64-bit cookie for connecting L2
      Ethernet attachment circuits identified by IPv6 addresses. The
      encapsulation is based on L2TPv3 over IP and does not use the
      L2TPv3 control plane.</t>
    </abstract>

    <note title="Requirements Language">
      <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
      NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT
      RECOMMENDED",  "MAY", and "OPTIONAL" in this document are to
      be interpreted as described in <xref target="RFC2119">RFC2119
      </xref>.</t>
    </note>
  </front>

  <middle>
    <section title="Introduction">
      <t>L2TPv3, as defined in <xref target="RFC3931"/>,
      provides a mechanism for tunneling Layer 2 (L2) "circuits" across a
      packet-oriented data network (e.g., over IP), with multiple attachment
      circuits multiplexed over a single pair of IP address endpoints (i.e. a
      tunnel) using the L2TPv3 session ID as a circuit discriminator.</t>

      <t>Implementing L2TPv3 over <xref target="RFC2460">IPv6</xref> provides the opportunity to utilize
      unique IPv6 addresses to identify Ethernet attachment circuits directly,
      leveraging the key property that IPv6 offers, a vast number of unique IP
      addresses. In this case, processing of the L2TPv3 Session ID may be
      bypassed upon receipt as each tunnel has one and only one associated
      session. This local optimization does not hinder the ability to continue
      supporting the multiplexing of circuits via the Session ID on the same
      router for other L2TPv3 tunnels.</t>

      <t>There are various advantages to this approach when compared to the
      "traditional" L2TPv3 approach of using a loopback address to terminate
      the tunnel and then carrying multiple sessions over the tunnel.
      These include better ECMP load-balancing (since each tunnel has a
      unique source/destination IPv6 address pair), and finer-grained
      control when advertising tunnel endpoints using a routing protocol.</t>
    </section>

    <section anchor="sec_static_mapping"
             title="Static 1:1 Mapping Without a Control Plane">
      <t>The L2TPv3 Control Plane defined in RFC3931 is not used for this encapsulation. 
      The management plane is used to create, and to maintain, matching configurations
      at either end of each tunnel. Local configuration by the management plane creates
      a one-to-one mapping between the access-side L2 attachment circuit and the IP
      address used in the network-side IPv6 encapsulation.</t>

      <t>The IPv6 L2TPv3 tunnel encapsulating device uniquely identifies each
      Ethernet L2 attachment connection by a port ID or a combination of port
      ID and VLAN ID(s) on the access side, and by a local IPv6 address on the
      network side.  The local IPv6 address also identifies the tunnel
      endpoint.  The local IPv6 addresses identifying L2TPv3 tunnels
      SHOULD NOT be assigned from connected IPv6 subnets facing
      towards remote tunnel endpoints, since that approach would
      result in an IPv6 Neighbor Discovery cache entry per tunnel on
      the next hop router towards the remote tunnel endpoint.   It is
      RECOMMENDED that local IPv6 addresses identifying L2TPv3 tunnels
      are assigned from dedicated subnets used only for such tunnel endpoints.</t>

      <t>Certain deployment scenarios may require using a single IPv6 address
      (such as a unicast or anycast address assigned to a specific service instance,
      for example a virtual switch) to identify a tunnel endpoint for multiple IPv6
      L2TPv3 tunnels.  For such cases the tunnel decapsulating device uses the local
      IPv6 address to identify the service instance, and the remote IPv6 address to
      identify the individual tunnel within that service instance.</t>

      <t>As mentioned above Session ID processing is not required as each
      keyed IPv6 tunnel has one and only one associated session. However for
      compatibility with existing RFC3931 implementations, the packets
      need to be sent with Session ID. Routers implementing L2TPv3
      according to RFC3931 can be configured with multiple L2TPv3
      tunnels, with one session per tunnel, to interoperate with routers
      implementing the keyed IPv6 tunnel as specified by this
      document.   Note that as Session ID processing is not enabled
      for keyed IPv6 tunnels that there can only be a single keyed
      IPv6 tunnel between two IPv6 addresses.</t>
    </section>

    <section anchor="cookie" title="64-bit Cookie">
      <t>In line with RFC3931, the 64-bit cookie is used for an
      additional tunnel endpoint context check.  This is the largest
      cookie size permitted in RFC3931.  All packets MUST carry the 64-bit
      L2TPv3 cookie field. The cookie MUST be 64 bits long in order to provide
      sufficient protection against spoofing and brute force blind insertion
      attacks.  The cookie values SHOULD be randomly selected.</t>

      <t>In the absence of the L2TPv3 Control Plane, the L2TPv3 encapsulating
      router MUST be provided with local configuration of the 64-bit cookie
      for each local and remote IPv6 endpoint.  Note that cookies are
      asymmetric, so local and remote endpoints may send different cookie
      values, and in fact SHOULD do so.   The value of the cookie MUST
      be able to be changed at any time in a manner that does not drop
      any legitimate tunneled packets, i.e. the receiver MUST be
      configurable to accept two discrete cookies for a single tunnel
      simultaneously.  This enables the receiver to hold both the
      'old' and 'new' cookie values during a change of cookie value.  Cookie
      values SHOULD be changed periodically by the management plane.</t>

      <t>Note that mandating a 64-bit cookie is a change from the optional
      variable-length cookie of RFC3931, and that this requirement constrains
      interoperability with existing RFC3931 implementations to those supporting
      a 64-bit cookie.  The management plane MUST NOT configure a keyed IP tunnel
      unless both endpoints support the 64-bit cookie.</t>
    </section>

    <section anchor="sec_encapsulation" title="Encapsulation">
      <t> The ingress router encapsulates the entire Ethernet frame,
      without the preamble and frame check sequence (FCS) in L2TPv3 as
      per <xref target="RFC4719">RFC4719</xref>.  The L2-specific sublayer
      MAY be carried if Virtual Circuit Connectivity Verification ( VCCV )
      <xref target="RFC5085"/> and/or frame sequencing is required,
      but SHOULD NOT be carried otherwise.  The L2TPv3 packet is encapsulated
      directly over IPv6 (i.e. no UDP header is carried).</t>

      <t>The ingress router MAY retain the FCS as per section 4.7 of <xref
      target="RFC4720"/>.  Support for retaining the FCS and for
      receiving packets with a retained FCS is OPTIONAL, and if present
      MUST be configurable.  In the absence of the L2TPv3 control
      plane such configuration MUST be consistent for the two
      endpoints of any given tunnel, i.e. if one router is configured
      to retain the FCS then the other router MUST be configured to
      receive packets with the retained FCS.  Any router configured to
      retain FCS for a tunnel MUST retain FCS for all frames sent over
      that tunnel.  All routers implementing this specification MUST
      support the ability to send frames without retaining the FCS and
      to receive such frames.</t>

      <t>Any service-delimiting <xref target="IEEE802.1Q">IEEE
      802.1Q</xref> or <xref target="IEEE802.1ad">IEEE 802.1ad</xref>
      VLAN IDs - S-tag, C-tag or tuple (S-tag, C-tag) - are treated with
      local significance within the Ethernet L2 port and MUST NOT be
      forwarded over the IPv6 L2TPv3 tunnel.</t>

      <t>Note that the same approach may be used to transport protocols
      other than Ethernet, though this is outside the scope of this
      specification.</t>

      <t>The full encapsulation is as follows:</t>
      <t><figure align="center">
           <artwork>
<![CDATA[    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               |
   +                   IPv6 Header (320 bits)                      +
   ~                                                               ~
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                    Session ID (32 bits)                       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                        Cookie (0:31)                          |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                        Cookie (32:63)                         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |          (Optional) L2-specific Sublayer (32 bits)            |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                      Payload (variable)                       |
   |                              ?                                |
   |                              ?                                |
   |                              ?                                |
   |                              ?                                |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

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

      <t>The combined IPv6 and Keyed IP Tunnel header contains the following
      fields:</t>

      <t><list style="symbols">
        <t>IPv6 Header.  Note that:<list style="symbols">
          <t>The traffic class may be set by the ingress router to ensure
            correct PHB treatment by transit routers between the ingress and
            egress, and correct QoS disposition at the egress router.</t>

          <t>The flow label, as defined in <xref target="RFC6437"/> may be
          set by the ingress router to indicate a flow of packets from the client
          which may not be reordered by the network (if there is a requirement
          for finer grained ECMP load balancing than per-circuit load balancing).</t>

          <t>The next header will be set to 0x73 to indicate that the next header is
          L2TPv3.</t>

          <t>In the "Static 1:1" case the IPv6 source address may correspond to a port
          or port/VLAN being transported as an L2 circuit, or may correspond to a virtual
          interface terminating inside the router (e.g. if L2 circuits are being used
          within a multipoint VPN, or if an anycast address is being terminated on a set of
          data center virtual machines.)</t>

          <t>As with the source address the IPv6 destination address may correspond to a
          port or port/VLAN being transported as an L2 circuit, or to a virtual interface.</t>
        </list></t>

        <t>Session ID.  In the "Static 1:1 mapping" case described in <xref
        target="sec_static_mapping"/>, the IPv6 address identifies an L2TPv3 session directly,
        thus at endpoints supporting one-stage resolution (IPv6 Address only) the Session ID
        SHOULD be ignored upon receipt.   It is RECOMMENDED that the remote endpoint is configured
        to set the Session ID to all ones (0xFFFFFFFF) for easy identification in case of
        troubleshooting.  For compatibility with other tunnel termination platforms
        supporting only two-stage resolution (IPv6 Address + Session ID), this
        specification recommends supporting explicit configuration of
        Session ID to any value other than zero (including all ones).  The Session ID of zero
        MUST NOT be used, as it is reserved for use by L2TP control messages
        as specified in RFC3931.  Note that the Session ID is unidirectional, the sent and
        received Session IDs at an endpoint may be different.</t>

        <t>Cookie.  64-bit cookie, configured and described as in <xref target="cookie"/>.
        All packets for a destined L2 circuit (or L2TPv3 Session) MUST match one of the cookie
        values configured for that circuit.  Any packets that do not contain a valid cookie
        value MUST be discarded (see RFC3931 for more details).</t>

        <t>L2-specific sublayer (optional).   As noted above this will be present if VCCV
        and/or frame sequencing is required.  If VCCV is required then any frames with
        bit 0 (the "V-bit") set are VCCV messages.  If frame sequencing is required then
        any frames with bit 1 (the "S-bit") set have a valid frame sequence number in
        bits 8 - 31.</t>

        <t>Payload (variable length).  As noted above the preamble and any service-delimiting
        tags MUST be stripped before encapsulation and the FCS MUST be stripped unless FCS
        retention is configured at both ingress and egress routers.  Since a new FCS is added
        at each hop when the encapsulating IP packet is transmitted the payload is protected
        against bit errors.</t>
      </list></t>
    </section>

    <section anchor="Fragmentation" title="Fragmentation and Reassembly">
      <t>Using tunnel encapsulation of Ethernet L2 datagrams in IPv6 will reduce the
      effective MTU allowed for the encapsulated traffic.</t>

      <t>The recommended solution to deal with this problem is for the network
      operator to increase the MTU size of all the links between the devices
      acting as IPv6 L2TPv3 tunnel endpoints to accommodate both the IPv6
      L2TPv3 encapsulation header and the Ethernet L2 datagram without requiring
      fragmentation of the IPv6 packet.</t>

      <t>It is RECOMMENDED that routers implementing this
      specification implement IPv6 PMTU discovery as defined in <xref
      target="RFC1981"/> to confirm that the path over
      which packets are sent has sufficient MTU to transport a maximum
      length Ethernet frame plus encapsulation overhead.</t>

      <t>Routers implementing this specification MAY implement L2TPv3
      fragmentation (as defined in section 5 of <xref
      target="RFC4623"/>).  In the absence of the L2TPv3 control plane,
      it is RECOMMENDED that fragmentation (if implemented) is locally
      configured on a per-tunnel basis.  Fragmentation configuration
      MUST be consistent between the two ends of a tunnel.</t>

      <t>It is NOT RECOMMENDED for routers implementing this
      specification to enable IPv6 fragmentation (as defined in
      section 4.5 of RFC2460) for keyed IP tunnels.  IP fragmentation
      issues for L2TPv3 are discussed in section 4.1.4 of RFC3931.</t>
    </section>

    <section anchor="OAM" title="OAM Considerations">
      <t>OAM is an important consideration when providing circuit-oriented
      services such as those described in this document, and all the more so
      in the absence of a dedicated tunnel control plane, as OAM becomes the
      only way to detect failures in the tunnel overlay.</t>

      <t>Note that in the context of keyed IP tunnels, failures in the IPv6
      underlay network can be detected using the usual methods such as through
      the routing protocol, including the use of single-hop Bidirectional
      Forwarding Detection ( BFD ) <xref target="RFC5881"/> to rapidly detect link
      failures.  Multi-Hop BFD MAY also be enabled between tunnel endpoints as per
      <xref target="RFC5883"/>.</t>

      <t>Since keyed IP tunnels always carry an Ethernet payload, and since
      OAM at the tunnel layer is unable to detect failures in the Ethernet
      service processing at the ingress or egress router, or on the Ethernet
      attachment circuit between the router and the Ethernet client,
      it is RECOMMENDED that Ethernet OAM as defined in <xref
      target="IEEE802.1ag"/> and/or <xref target="Y.1731"/> is enabled for keyed IP tunnels.
      As defined in those specifications, the following Connectivity Fault Management
      ( CFM ) and/or Ethernet Continuity Check ( ETH-CC ) configurations are to be used in
      conjunction with keyed IPv6 tunnels:</t>

      <t><list style="symbols">
          <t>Connectivity verification between the tunnel endpoints across the
          tunnel - use an Up MEP located at the tunnel endpoint for
          transmitting the CFM PDUs towards, and receiving them from the
          direction of the tunnel.</t>

          <t>Connectivity verification from the tunnel endpoint across the
          local attachment circuit - use a Down MEP located at the tunnel
          endpoint for transmitting the CFM PDUs towards, and receiving them
          from the direction of the local attachment circuit.</t>

          <t>Intermediate connectivity verification - use a MIP located at the
          tunnel endpoint to relay CFM PDUs.</t>
        </list>
      </t>

      <t>In addition Pseudowire Virtual Circuit Connectivity Verification ( VCCV )
      <xref target="RFC5085"/> MAY be used.  Furthermore BFD MAY be enabled over the
      VCCV channel <xref target="RFC5885"/>.</t>
      
      <t>Note that since there is no control plane it is RECOMMENDED that the management
      plane take action when attachment circuit failure is detected, for example by dropping
      the remote attachment circuit.</t>
    </section>

    <section anchor="IANA" title="IANA Considerations">
      <t>None.</t>
    </section>

    <section anchor="Security" title="Security Considerations">
      <t>Packet spoofing for any type of Virtual Private Network (VPN)
      tunneling protocol is of particular concern as insertion of carefully
      constructed rogue packets into the VPN transit network could result in a
      violation of VPN traffic separation, leaking data into a customer VPN.
      This is complicated by the fact that it may be particularly difficult
      for the operator of the VPN to even be aware that it has become a point
      of transit into or between customer VPNs.</t>

      <t>Keyed IPv6 encapsulation provides traffic separation for its VPNs via
      use of separate 128-bit IPv6 addresses to identify the endpoints. The
      mandatory use of the 64 bit L2TPv3 cookie provides an additional
      check to ensure that an arriving packet is intended for the identified
      tunnel.</t>

      <t>In the presence of a blind packet spoofing attack, the 64-bit L2TPv3
      cookie provides security against inadvertent leaking of frames into a
      customer VPN, as documented in section 8.2 of RFC3931.</t>

      <t>For protection against brute-force, blind, insertion attacks, the 64-
      bit cookie MUST be used with all tunnels.</t>

      <t>Note that the cookie provides no protection against a sophisticated
      man-in-the-middle attacker who can sniff and correlate captured data
      between nodes for use in a coordinated attack.</t>

      <t>The L2TPv3 64-bit cookie must not be regarded as a substitute for
      security such as that provided by IPsec when operating over an open or
      untrusted network where packets may be sniffed, decoded, and correlated
      for use in a coordinated attack.</t>
    </section>

    <section title="Contributing Authors">
      <t>Peter Weinberger <vspace blankLines="0"/> Cisco Systems <vspace
      blankLines="1"/> Email: peweinbe@cisco.com</t>

      <t>Michael Lipman <vspace blankLines="0"/> Cisco Systems <vspace
      blankLines="1"/> Email: mlipman@cisco.com</t>

      <t>Mark Townsley <vspace blankLines="0"/> Cisco Systems <vspace
      blankLines="1"/> Email: townsley@cisco.com</t>
    </section>

    <section anchor="Acknowledgements" title="Acknowledgements">
      <t>The authors would like to thank Carlos Pignataro, Stewart
      Bryant, Karsten Thomann, Qi Sun and Ian Farrer for their insightful suggestions
      and review.</t>
    </section>
  </middle>

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

      <?rfc include='reference.RFC.2460'?>

      <?rfc include='reference.RFC.3931'?>

      <?rfc include='reference.RFC.4719'?>

    </references>

    <references title="Informative References">
      <?rfc include='reference.RFC.1981'?>

      <?rfc include='reference.RFC.4623'?>

      <?rfc include='reference.RFC.4720'?>

      <?rfc include='reference.RFC.5085'?>

      <?rfc include='reference.RFC.5881'?>

      <?rfc include='reference.RFC.5883'?>

      <?rfc include='reference.RFC.5885'?>

      <?rfc include='reference.RFC.6437'?>

      <reference anchor="IEEE802.1Q">
        <front>
          <title>802.1Q-2014 - IEEE Standard for Local and
	  metropolitan area networks - Bridges and Bridged Networks</title>

          <author>
            <organization>IEEE</organization>
          </author>

          <date year="2014"/>
        </front>
      </reference>

      <reference anchor="IEEE802.1ad">
        <front>
          <title>802.1ad-2005 - IEEE Standard for Local and
	  Metropolitan Area Networks - Virtual Bridged Local Area
	  Networks - Amendment 4: Provider Bridges</title>

          <author>
            <organization>IEEE</organization>
          </author>

          <date year="2005"/>
        </front>
      </reference>

      <reference anchor="IEEE802.1ag">
        <front>
          <title>IEEE Standard for Local and metropolitan area networks -
          Virtual Bridged Local Area Networks, Amendment 5: Connectivity Fault
          Managements</title>

          <author>
            <organization>IEEE</organization>
          </author>

          <date year="2007"/>
        </front>
      </reference>

      <reference anchor="Y.1731">
        <front>
          <title>ITU-T Recommendation G.8013/Y.1731 - OAM functions and
          mechanisms for Ethernet based networks</title>

          <author>
            <organization>ITU</organization>
          </author>

          <date year="2011"/>
        </front>
      </reference>
    </references>
  </back>
</rfc>

PAFTECH AB 2003-20262026-04-23 12:18:09