<?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="exp" docName="draft-geng-spring-redundancy-protection-sid-00"
     ipr="trust200902">
  <front>
    <title abbrev="Abbreviated-Title">Redundancy SID and Merging SID for
    Redundancy Protection</title>

    <author fullname="Xuesong Geng" initials="X." surname="Geng">
      <organization>Huawei</organization>

      <address>
        <postal>
          <street/>

          <city/>

          <code/>

          <country/>
        </postal>

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

    <author fullname="Mach(Guoyi) Chen" initials="M." surname="Chen">
      <organization>Huawei</organization>

      <address>
        <postal>
          <street/>

          <city/>

          <code/>

          <country/>
        </postal>

        <email>mach.chen@huawei.com</email>
      </address>
    </author>

    <date day="09" month="March" year="2020"/>

    <abstract>
      <t>Redundancy protection is a method of service protection by sending
      copies of the same packets of one flow over multiple paths, which
      includes packet replication, elimination and ordering. This document
      defines Redundancy SID and Merging SID to support redundancy
      protection.</t>
    </abstract>

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

  <middle>
    <section title="Introduction">
      <t>Redundancy protection is a method of providing 1+1 protection by
      sending copies of the same packets of one flow over multiple paths,
      which includes packet replication, elimination and ordering. This
      document defines Redundancy SID and Merging SID to support redundancy
      protection.</t>
    </section>

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

      <t>Redundancy Node: the start point of redundancy protection, which is a
      network device that could implement packet replication.</t>

      <t>Merging Node: the end point of redundancy protection, which is a
      network node that could implement packet elimination and ordering
      (optionally).</t>

      <t>Editor's Note: Similar mechanism is defined as "Service Protection"
      in the <xref target="RFC8655"/>. In this document, we define a new term
      "Redundancy Protection" to distinguish with other service protection
      method. Some of the terms are the similar as <xref
      target="RFC8655"/>.</t>
    </section>

    <section title="Redundancy Protection Introduction">
      <t>The figure shows how to provide redundancy protection in an Segment
      Routing Domain.</t>

      <t><figure>
          <artwork><![CDATA[             |                                         |
             |<---------------SR Domain--------------->|
             |                                         |
             |             +------+T2+----+            |
   +---+    +---+        +-+-+          +-+-+        +---+    +---+
   | E1+----| In|--+T1+--+Red|          |Mer|--+T4+--| Eg+----+ E2|
   +---+    +---+        +-+-+          +-+-+        +---+    +---+
                           +-----+T3+-----+
]]></artwork>
        </figure></t>

      <t>The process of redundancy protection is as follows: 1) The flow is
      replicated in Red(Redundancy Node); 2) Tow replicated flows go through
      different paths till Mer (Merging Node); When there is any failures
      happened in one the path, the service continues to deliver through the
      other path without break; 3) The first received packet of the flow is
      transmitted from Mer (Merging Node) to Eg(Egress), and the redundant
      packets are eliminated. 4) Sometimes, the packet will arrive out of
      order because of redundancy protection, the function of reordering may
      be necessary in the Merging Node.</t>

      <t>In this document, we introduces Redundancy SID and Merging SID to
      implement redundancy protection. The newly defined SIDs apply equally to
      both SR-MPLS and SRv6.</t>
    </section>

    <section title="Redundancy SID">
      <t>Redundancy SID is a variation of binding SID defined in <xref
      target="I-D.ietf-spring-segment-routing-policy"/></t>

      <t>Redundancy SID indicates the following operations:</t>

      <t><list style="symbols">
          <t>Steering the packet into the corresponding redundancy policy</t>

          <t>Packet replication based on the redundancy policy, e.g., the
          number of replication copies</t>

          <t>Encapsulate the packet with necessary meta data (e.g., flow
          identification, sequence number) if it is not included in the
          original packet</t>
        </list></t>
    </section>

    <section title="Merging SID">
      <t>Merging SID indicates the following operations:</t>

      <t><list style="symbols">
          <t>Packet elimination: forward the first received packets and
          eliminate the redundant packets.</t>

          <t>Packet ordering(optional): reorder the packets if the packet
          arrives out of order</t>
        </list></t>
    </section>

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

    <section anchor="Security" title="Security Considerations">
      <t>TBD</t>
    </section>

    <section anchor="Acknowledgements" title="Acknowledgements">
      <t>Thank you for valuable comments from James Guichard and Andrew
      Mail</t>
    </section>
  </middle>

  <back>
    <references title="Normative References">
      <?rfc ?>

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

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

      <?rfc include='reference.I-D.ietf-spring-segment-routing-policy'
?>

      <?rfc ?>

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