Re: [spring] Understanding the replication draft

Rishabh Parekh <> Wed, 01 July 2020 19:01 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id C60DB3A0C03 for <>; Wed, 1 Jul 2020 12:01:57 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -1.599
X-Spam-Status: No, score=-1.599 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, PDS_BTC_ID=0.499, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=no autolearn_force=no
Authentication-Results: (amavisd-new); dkim=pass (2048-bit key)
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id ZS1UTxtIvIya for <>; Wed, 1 Jul 2020 12:01:56 -0700 (PDT)
Received: from ( [IPv6:2a00:1450:4864:20::32b]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by (Postfix) with ESMTPS id B9B343A0C5E for <>; Wed, 1 Jul 2020 12:01:55 -0700 (PDT)
Received: by with SMTP id j18so23650108wmi.3 for <>; Wed, 01 Jul 2020 12:01:55 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=blbhCRip3ccA3Zl4AWXOuE0+oCxTS7BmYFptFIDT+9c=; b=Zy6QtfNV8SnS0hnWWwXjMHt4uGP11dOp0xA36agsX1zgBZ2dmy77bsuJ/VEktygdWR mD9u2sU+vcaQP/XSMSToIXKXQAOPjyGtWE2lqNz6+YL35X76r1OuOIr93LdBvgxS69Ga zS9BBq41DOEsPOZeb6RQEMua2DAYTrbI28v2YecKX+fddS1wobRKdsJ/s/DmKd6Z1n+z 8kO3SPK4fxFtzPGvr9dgGMxwGibWnYOY7wK5g606R/f7/FZWzDpnYSGx2VjGyWWceXzi 4ZCdQuzDyUfuvrg3SoifhuXbo/zTr14AAedo4UEOajRBS2Z+WAZiIU0aEBbJKFCJABVO /CSg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=blbhCRip3ccA3Zl4AWXOuE0+oCxTS7BmYFptFIDT+9c=; b=HbjUghPxXjJbF6JgAUYgnzK9VxNzwjaCQ5h6nJm8Gr9KdEasITJ6CHfY8/uN6X8SWz N9T5Uhl/rwVI5hlWx5cE5ppKTFd+ALjhZ9WzTdJ+X54I5YjTejVS9yayK3v0qtstWi2G ER0Oq/qMzJvsJkoc7YT+zX/JP76pPXnarDKvOI3N7S9tEeKKtIRMB3u2B3Z0eReGS32j VRUFtMMhaw+gVLdIUKySSyIdz4sDXWG2aPRMvnFddxK9eBo2eOnjnMLNkjPRk3/7thAW aZ5p4z3ZqaH9QRM9+Tyf7Fl7gWjCsVWiuwzFCLQXevkSw1eWTW4hdOaVjrSGWLtsmwZ6 mphw==
X-Gm-Message-State: AOAM530T+jKszdfke42Nob16p7kBtiq8KUzrjKzt3yZWwuVXm/0IUX48 nIMth3UoqKJyiDUEvq30a3orumFIgOTXqLjKu7g=
X-Google-Smtp-Source: ABdhPJxXLvX5eTNXccc8WTJG5Y5CsRJI6u0YmGDJ3+WwIXVRt4XtbUwi3qWVdedsZEVFxva++FuqR6JCpCi0G4SUnuA=
X-Received: by 2002:a7b:ca43:: with SMTP id m3mr20952521wml.120.1593630114249; Wed, 01 Jul 2020 12:01:54 -0700 (PDT)
MIME-Version: 1.0
References: <> <> <> <>
In-Reply-To: <>
From: Rishabh Parekh <>
Date: Wed, 1 Jul 2020 12:01:41 -0700
Message-ID: <>
To: Alexander Vainshtein <>
Cc: Joel Halpern Direct <>, "" <>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
Archived-At: <>
Subject: Re: [spring] Understanding the replication draft
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Source Packet Routing in NetworkinG \(SPRING\)" <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Wed, 01 Jul 2020 19:02:06 -0000

As I explained in my reply to Joel's e-mail, use cases in draft only
cover scenarios where R-SID-1 is the last segment in stack for either
NEXT or CONTINUE operation, but stack Joel described is not excluded
as long as G-SID-2 resolves to a unique node. How the node that
imposes this stack determines the value of G-SID-2, or other segments
in the stack after R-SID-1 is outside scope of the draft.


On Wed, Jul 1, 2020 at 9:42 AM Alexander Vainshtein
<> wrote:
> Joel, Rishabh and all,
> I think that in the case of SR-MPLS the problems with Joel's example begin much earlier.
> The node that sends the packet using the list of SIDs must encode each SID as a label in the label stack.
> It knows how to do so for G-SID-1 which is represented as an index -- nothing new with that
> It probably knows how to do so for R-SID-1.
> But encoding G-SID-2 (also known as an index) becomes outright impossible if the Downstream nodes of the Replication segment have different SRGB base.
> What, if anything, did I miss?
> Is usage of Replication segment limited to the case when all the nodes in the SR-MPLS domain have the same SRGB base?
> And, BTW, how is R-SID-1 encoded in the SRH in the case of SRv6?
> My 2c,
> Sasha
> Get Outlook for Android
> ________________________________
> From: spring <> on behalf of Joel Halpern Direct <>
> Sent: Wednesday, July 1, 2020, 19:24
> To: Rishabh Parekh
> Cc:
> Subject: Re: [spring] Understanding the replication draft
> I am not sure I understand the answer.  I do see that the local
> processing is described in the draft.  But that is not what I am asking.
> I am going to try to simplify the conventions to ask the question.  I
> will list SIDs in the order they will be visited.  And mark G-SID-X for
> a global SID, and R-SID-X for a replication SID.
> Suppose the stack looks like
> G-SID-1
> R-SID-1
> G-SID-2
> G-SID-3
> R-SID-2
> G-SID-4
> So the packet gets delivered to the node identified by G-SID-1.  Great.
> That node sees an R-SID which it understands.  So presumably it
> replicates the packet, and sends the packet (possibly with some
> prepended labels, presumably different prepended labels for different
> destination, controlled by policy.  No problem with that part.)
> Now each of the packets geet to the end of the prepended labels, and
> each copy sees G-SID-2.  At which point all of these various nodes that
> have received copies of the packet all send it to the node identified by
> G-SID-2.  Huh?  We just bombarded a node with useless and potentially
> harmful copies of the packet.  then all those copies go to G-SID-3,
> which then processes R-SID-2, and replicates each and every copy to some
> set of destinations.  Which then eventually bombard the node identified
> by G-SID-4.
> If the document said that the replication SID when it appears in the
> stack must be the last SID in the stack, and was either terminal for SID
> processing or was a binding SID, the above problem would be avoided.
> But the draft does not say that.  Nor does your reply.
> Is there some other way this explosion is avoided?  This seems to need
> to be described in the SPRING draft in order for any of us to understand
> if the approach is what we want as a starting point.  just the idea of
> replication segments is not, in my personal view, enough clarity or
> value to be adopted as a working group document.
> Yours,
> Joel
> On 7/1/2020 12:06 PM, Rishabh Parekh wrote:
> > Joel,
> > Your request was not "lost", but it fell between the cracks :)
> >
> > Anyway, responses inline.
> >
> > On Mon, Jun 29, 2020 at 3:17 PM Joel M. Halpern <> wrote:
> >>
> >> I asked the authors a version of this question, but apparently my
> >> request got lost.
> >>
> >> For now, this is speaking as an individual.  And I sincerely hope that I
> >> am merely missing something obvious.
> >>
> >> I can not figure out from the current draft how the replication segment
> >> works in a SID (or label) stack.
> >> Is there an unstated requirement that the segment must be the last one
> >> in the stack?
> >> If not, how is a global SID after teh replication SID understood?
> >
> > [RP] Replication SID does not need to be the last segment in the
> > stack. Although Section 2 of draft does not state this explicitly, If
> > there are other non-replication SIDs following the Replication SID,
> > the NEXT operation at a downstream node of the segment should process
> > those SIDs as normal.
> >
> >> Or is a replication SID implicitly also a binding SID, replacing the
> >> rest of the stack no matter where it is in the stack?
> >>      In which case it is implicitly effectively last?
> >
> > [RP] At a root or a Replication SID, when the active segment is a
> > Replication SID, it does act like a Binding SID in that it steers the
> > packet into the Replication segment towards downstream nodes. Note
> > that additional SIDs might be added on top of the Replication SID to
> > steer the packet from Root to a given downstream node. The Replication
> > SID will be at bottom of any such SIDs added to steer the packet, but
> > again it does not have to be the bottom most SID in the stack.
> >
> >> Given taht a replication segment is qualified to a node, what happens if
> >> there is more than one in a stack?  Is it ignored when it hits a node it
> >> does not apply to?
> >
> > [RP] On a given node, if an active SID in the stack is a Replication
> > SID that the node does not understand, it cannot process the packet.
> > This would be similar to any other kind of SID for which a node does
> > not have any state.
> >>
> >> Do I believe this can be made to work?  Yes.
> >> But I can not understand how the WG could adopt the work with its
> >> current lack of clarity.
> >> And this appears to me to be fundamental enough stuff that it can't be
> >> left to documents in other WGs.  It seems central to the definition and
> >> processing of replication SIDs.
> >>
> >
> > [RP] Section 2 does specify behavior associated with Replication SID
> > at different nodes in terms of PUSH, CONTINUE or NEXT operations. If
> > it is not clear, we can enhance the text.
> >>
> >> Yours,
> >> Joel - speaking as a participant
> >>
> >> _______________________________________________
> >> spring mailing list
> >>
> >>
> >
> > _______________________________________________
> > spring mailing list
> >
> >
> >
> _______________________________________________
> spring mailing list
> ________________________________
> Notice: This e-mail together with any attachments may contain information of Ribbon Communications Inc. that is confidential and/or proprietary for the sole use of the intended recipient. Any review, disclosure, reliance or distribution by others or forwarding without express permission is strictly prohibited. If you are not the intended recipient, please notify the sender immediately and then delete all copies, including any attachments.
> ________________________________