<?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-pals-vccv-for-gal-05"
     ipr="trust200902" updates="">
  <front>
    <title abbrev="GAL as a VCCV Channel">Using A Generic Associated Channel
    Label as a Virtual Circuit Connectivity Verification Channel
    Indicator</title>

    <author fullname="Thomas D. Nadeau" initials="T D" surname="Nadeau">
      <organization>lucidvision</organization>

      <address>
        <email>tnadeau@lucidvision.com</email>
      </address>
    </author>

    <author fullname="Luca Martini" initials="L " surname="Martini">
      <organization>Cisco Systems</organization>

      <address>
        <postal>
          <street></street>
        </postal>

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

    <author fullname="Stewart Bryant" initials="S" surname="Bryant">
      <organization>Cisco Systems</organization>

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

    <date year="2015" />

    <area>Routing</area>

    <workgroup>PALS</workgroup>

    <keyword>VCCV</keyword>

    <keyword>GAL</keyword>

    <keyword>Internet-Draft</keyword>

    <abstract>
      <t>The Virtual Circuit Connectivity Verification (VCCV) protocol
      specified in RFC 5085 provides a control channel (CC) that is associated
      with a pseudowire (PW). This document specifies an additional VCCV
      control channel type to be used with pseudowires (PW) which do not use
      the PW Control Word and which are carried over an MPLS network. This new
      VCCV CC type uses the Generic Associated Channel Label defined in
      RFC5586 to distinguish VCCV packets from packets carrying user data.
      This new VCCV CC type introduces compatibility with the method of MPLS
      Label Switched Path Operations, Administration, and Maintenance (OAM)
      identification, particularly in MPLS Transport Profile (MPLS-TP)
      networks (RFC5921).</t>
    </abstract>
  </front>

  <middle>
    <section anchor="INTRO" title="Introduction">
      <t>The Virtual Circuit Connectivity Verification (VCCV) protocol is
      specified in <xref target="RFC5085">RFC 5085</xref>. This document
      specifies a new VCCV control channel (VCCV CC) type to be used with
      pseudowires (PW) carried over an MPLS network that do not use the PW
      Control Word (CW) <xref target="RFC4385"></xref>. This new VCCV CC type
      uses the Generic Associated Channel Label (GAL) <xref
      target="RFC5586"></xref> to distinguish VCCV packets from packets
      carrying user data. This new VCCV CC type provides compatibility with
      the method of MPLS Label Switched Path (LSP) Operations, Administration,
      and Maintenance (OAM) message identification, as used in MPLS Transport
      Profile (MPLS-TP) networks <xref target="RFC5921"></xref>.</t>

      <t>VCCV currently specifies three CC types. VCCV CC Type 1 uses the PW
      Control Word (CW) to distinguish VCCV packets from packets carrying user
      data. VCCV CC Types 2 and 3 require IP encapsulation for OAM packets.
      This was not an issue when <xref target="RFC5085"></xref> was designed,
      but is in conflict with the design goals of MPLS-TP <xref
      target="RFC5921"></xref> which does not otherwise require the
      availability of IP. VCCV CC Type 2 is not applicable to Multi-Segment
      PWs (MS-PWs) <xref target="RFC6073"></xref>. A MS-PW operating without
      the CW therefore has to use VCCV CC Type 3 which identifies VCCV packets
      on the basis of Time to Live (TTL) expiry. Whilst less of an issue with
      a single segment PW (SS-PW), on an MS-PW this requires accurately
      setting the TTL for expiry at the egress Terminating Provider Edge
      (T-PE) <xref target="RFC6073"></xref>. In the event of an error in the
      setting of the PW Label Stack Entry (LSE) TTL, VCCV packets will not be
      received by the Terminating Provider Edge (T-PE) and may leak into the
      attachment circuit <xref target="RFC6073"></xref>. The new VCCV CC type
      defined in this specification addresses these problems for PWs that do
      not use the CW.</t>

      <t>Note that mandating PWs use the PW CW is not a viable way to address
      this issue. This is because:</t>

      <t><list style="symbols">
          <t>PWs without the CW are already widely deployed.</t>

          <t>There is a significant deployment of existing hardware that does
          not support usage of the PW CW for some PW types.</t>

          <t>Some operators are concerned that the inclusion of the PW CW will
          increase the PW packet size.</t>
        </list></t>
    </section>

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

    <section anchor="VCCVwithoutCW"
             title="Type 4 MPLS VCCV Control Channel Type">
      <t>When the PW CW is not used, the Type 4 MPLS VCCV Control Channel (CC)
      type defined in this section MAY be used. This is referred to as VCCV CC
      Type4 throughout the rest of this of this document. VCCV Type 4 uses the
      encapsulation shown in <xref target="VCCVNCW"></xref> in which the
      presence of a GAL at the end of the MPLS label stack indicates that the
      packet carries a VCCV message.</t>

      <figure anchor="VCCVNCW">
        <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

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                            PW LSE                             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           GAL LSE                             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|0 0 0 1|Version|   Reserved    |        Channel Type           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
~                        VCCV Message Body                      ~
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+]]></artwork>
      </figure>

      <t></t>

      <t>The VCCV message body is preceded by a Generic Associated Channel
      Header as defined in <xref target="RFC5586"></xref>, in which the
      Channel Type identifies the type and format of the OAM message carried
      in the VCCV message body.</t>

      <t>The GAL LSE MUST contain the GAL reserved label as defined in <xref
      target="RFC5586"></xref>.</t>

      <t>The PW LSE is constructed according to the existing procedures that
      apply to the type of pseudowire that is in use.</t>

      <t>Note that the inclusion of a GAL following the PW LSE over a label
      switched path subject to Equal-Cost Multi-path (ECMP) load balancing can
      cause the OAM packet to take a different path through the network from
      the corresponding PW data packets. If that is not acceptable, then an
      alternative VCCV type needs to be used.</t>
    </section>

    <section anchor="FATPW" title="FAT PWs">
      <t><xref target="RFC6391"></xref> specifies that when the flow-aware
      transport (FAT) of pseudowires over an MPLS packet switched network has
      been signalled or configured, the Flow LSE MUST be present. It further
      specifies that "the flow label MUST NOT be an MPLS reserved label
      (values in the range 0..15) [RFC3032]", and that "If a flow LSE is
      present, it MUST be checked to determine whether it carries a reserved
      label. If it is a reserved label, the packet is processed according to
      the rules associated with that reserved label; otherwise, the LSE is
      discarded."</t>

      <t>This document specifies that if the flow-aware transport of
      pseudowires over an MPLS packet switched network has been signalled or
      configured then the presence of VCCV message is indicated by the use of
      a GAL in place of the flow LSE.</t>

      <t>This is consistent with <xref target="RFC6391"></xref>, and the
      packet structure is identical to that shown in <xref
      target="VCCVNCW"></xref>.</t>

      <t>Flow LSEs are inserted into a PW label stack in order to enable the
      distribution of the PW traffic among multiple equal cost MPLS paths. The
      use of GAL in place of the flow label will cause all OAM packets to take
      exactly one of these paths, and this path may be different from the
      paths taken by any of traffic flows. If this is not acceptable, then an
      alternative VCCV type needs be used.</t>
    </section>

    <section anchor="MSPW" title="Multi-Segment Pseudowires">
      <t>When using VCCV CC Type 4 for MS-PWs, a PE transmitting the VCCV
      packet to a Switching PE (S-PE) MUST set the TTL to the appropriate
      value to expire at that S-PE. An S-PE that supports this specification
      MUST inspect PW packets that are received as a result of TTL expiry, and
      determine whether a GAL follows the PW LSE. If a GAL is present the S-PE
      then processes the VCCV packet.</t>

      <t>An S-PE that does not support this specification would be expected to
      reject as malformed a VCCV CC Type 4 packet that was received. This is
      because the S-PE would expect the PW LSE to be bottom of stack (the non
      FAT case) and for the LSE at bottom of stack not to be a reserved label
      (both the FAT and the non-FAT cases). An S-PE that did not make this
      reserved label check would then find that the first nibble following the
      label stack was 0x1 and not the expected start of an IP packet. It would
      hence be expected to also reject the packet. This update to the
      behaviour of S-PEs is therefore backwards compatible.</t>
    </section>

    <section anchor="VCCVCA" title="VCCV Capability Advertisement">
      <t>The VCCV capability advertisement MUST match the c-bit setting that
      is advertised in the PW FEC element <xref target="RFC4447"></xref>. If
      the c-bit is set, indicating the use of the PW CW, then VCCV CC Type 4
      MUST NOT be advertised. If the c-bit is not set, indicating that the PW
      CW is not in use, then equipment supporting this specification MUST
      advertise VCCV CC Type 4. Advertisement of VCCV CC Types 1 and 4 are
      therefore mutually exclusive.</t>

      <t>A PE supporting VCCV CC Type 4 MAY advertise other VCCV CC types as
      defined in <xref target="RFC5085"></xref> .</t>

      <t>If the remote PE supports VCCV CC Type 4, and the PW CW is not in
      use, then for cases where multiple CC Types are advertised, the
      following precedence rules apply when choosing which CC Type to use:</t>

      <t><list style="numbers">
          <t>Type 4: GAL VCCV Control Channel.</t>

          <t>Type 2: MPLS Router Alert Label.</t>

          <t>Type 3: MPLS PW Label with TTL == 1.</t>
        </list></t>

      <t>If the remote PE finds that VCCV CC Types 1 and 4 are both
      advertised, or that c-bit is set and VCCV CC Type 4 is advertised, then
      it should report the error to the operator through the management
      interface in use, and send a Label Release Message with a status code
      "VCCV Type Error".</t>
    </section>

    <section title="Manageability Considerations">
      <t>Whilst the introduction of this additional VCCV CC type increases the
      number of VCCV CC types that the operator needs to manage, it addresses
      the issues with VCCV CC Types 2 and 3 described in <xref
      target="INTRO"></xref>.</t>

      <t>In the event of a misconfiguration of this VCCV CC type, the PW is
      taken out of service and the operator advised as described in <xref
      target="VCCVCA"></xref>.</t>

      <t>Attention is drawn to the possible absence of fate sharing between PW
      data packets and VCCV CC Type 4 packets described in <xref
      target="VCCVwithoutCW"></xref> and <xref target="FATPW"></xref>.</t>
    </section>

    <section title="Security Considerations">
      <t>This document does not by itself raise any new security
      considerations beyond those described in <xref target="RFC5085"></xref>
      and <xref target="RFC6073"></xref>. <xref target="RFC6073"></xref>
      provides detailed operational procedures which can be used to verify the
      MS-PW connectivity. In addition, the procedure specified in this
      document eliminates the possibility of packet leaking that can occur
      with VCCV Type 3.</t>
    </section>

    <section title="IANA Considerations">
      <t></t>

      <section title="MPLS VCCV Control Channel (CC) Type 4">
        <t>IANA is requested to assign a new bit from the MPLS VCCV Control
        Channel (CC) Types registry in the PWE3-parameters name space in order
        to identify VCCV type 4. It is requested that Bit 3 be assigned to
        this purpose which would have a value of 0x08.</t>

        <figure>
          <artwork><![CDATA[MPLS VCCV Control Channel (CC) Types

      Bit (Value)    Description   Reference
      ============   ===========   ==================
      Bit X (0x0Y)   Type 4: GAL   This Specification]]></artwork>
        </figure>

        <t></t>
      </section>

      <section title="LDP Status Code">
        <t>IANA is requested to assign a new Status Code from the Label
        Distribution Protocol (LDP) Parameters name space:</t>

        <figure>
          <artwork><![CDATA[Status Code Name Space

      Range/Value  E  Description      Reference
      ===========  =  ===============  =========
      0x000000xx   0  VCCV Type Error  This Specification

]]></artwork>
        </figure>

        <t></t>
      </section>
    </section>

    <section title="Acknowledgments">
      <t>The authors wish to thank Alexander (Sasha) Vainshtein for his
      proposal to make the GAL and Flow labels mutually exclusive. This
      proposal led to a significant simplification of this design. The authors
      also thank Sasha, Matthew Bocci, Loa Andersson and Deborah Brungard for
      their review comments.</t>
    </section>
  </middle>

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

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

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

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

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

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

      <?rfc include='reference.RFC.4447'?>
    </references>

    <references title="Informative References">
      <?rfc include='reference.RFC.5921'?>
    </references>
  </back>
</rfc>
