Re: [mpls] AI: Multiple ISD instances in a packet

Joel Halpern <jmh@joelhalpern.com> Sat, 24 June 2023 20:59 UTC

Return-Path: <jmh@joelhalpern.com>
X-Original-To: mpls@ietfa.amsl.com
Delivered-To: mpls@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id C493BC14CE53 for <mpls@ietfa.amsl.com>; Sat, 24 Jun 2023 13:59:22 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -7.097
X-Spam-Level:
X-Spam-Status: No, score=-7.097 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, HTML_MESSAGE=0.001, NICE_REPLY_A=-0.001, RCVD_IN_DNSWL_HI=-5, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001, URIBL_DBL_BLOCKED_OPENDNS=0.001, URIBL_ZEN_BLOCKED_OPENDNS=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=joelhalpern.com
Received: from mail.ietf.org ([50.223.129.194]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id OprHwQikc7fc for <mpls@ietfa.amsl.com>; Sat, 24 Jun 2023 13:59:18 -0700 (PDT)
Received: from maila2.tigertech.net (maila2.tigertech.net [208.80.4.152]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id BCA15C14CF05 for <mpls@ietf.org>; Sat, 24 Jun 2023 13:59:18 -0700 (PDT)
Received: from localhost (localhost [127.0.0.1]) by maila2.tigertech.net (Postfix) with ESMTP id 4QpRLG3QGtz6GvJj; Sat, 24 Jun 2023 13:59:18 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=joelhalpern.com; s=2.tigertech; t=1687640358; bh=SnH7vf6reYeEmMyNxsPU6Qg9krT1T+i0IcQ8FdvW0s8=; h=Date:Subject:To:Cc:References:From:In-Reply-To:From; b=P/QiC/Bi0sGdSFlD81UGOh7ZBBZFzdmE93vziSH7UqWuJG6mjf4Ar5BJG/MTsPJ25 Eq1E1jfjeVZn43y4HjbkMskZmCdgQKO9UKcG5yiRfIrOPC95IxLP5x7pQ0mrPCJaqL R7b8i2RVIZQXsuJhqbcHeUKFhZA3fVajGJdEL0FE=
X-Quarantine-ID: <QZVqs6INbK1G>
X-Virus-Scanned: Debian amavisd-new at a2.tigertech.net
Received: from [192.168.22.80] (unknown [50.233.136.230]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by maila2.tigertech.net (Postfix) with ESMTPSA id 4QpRLF5RHZz6GC2J; Sat, 24 Jun 2023 13:59:17 -0700 (PDT)
Content-Type: multipart/alternative; boundary="------------RvF9GYjNQ01FMUk7EvOalXAI"
Message-ID: <a45e1376-d796-4a23-0b7b-04f8d6c80750@joelhalpern.com>
Date: Sat, 24 Jun 2023 16:59:16 -0400
MIME-Version: 1.0
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.12.0
Content-Language: en-US
To: Stewart Bryant <stewart.bryant@gmail.com>
Cc: mpls <mpls@ietf.org>
References: <4QnWfr4NF7z6G7r2@maila2.tigertech.net> <284663A2-50ED-44EB-969D-4BF84A5BE4D8@gmail.com>
From: Joel Halpern <jmh@joelhalpern.com>
In-Reply-To: <284663A2-50ED-44EB-969D-4BF84A5BE4D8@gmail.com>
Archived-At: <https://mailarchive.ietf.org/arch/msg/mpls/S_mWlJRTEniW30B6PiSNCmIitP8>
Subject: Re: [mpls] AI: Multiple ISD instances in a packet
X-BeenThere: mpls@ietf.org
X-Mailman-Version: 2.1.39
Precedence: list
List-Id: Multi-Protocol Label Switching WG <mpls.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/mpls>, <mailto:mpls-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/mpls/>
List-Post: <mailto:mpls@ietf.org>
List-Help: <mailto:mpls-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/mpls>, <mailto:mpls-request@ietf.org?subject=subscribe>
X-List-Received-Date: Sat, 24 Jun 2023 20:59:22 -0000

Care to elaborate?  Why would MRT LDP Fast Reroute need stop-rerouting 
to apply after the merge point?

Yours,

Joel

On 6/24/2023 4:53 PM, Stewart Bryant wrote:
> I think RFC 7811 would need it.
>
> Stewart
>
>> On 23 Jun 2023, at 11:10 am, jmh.direct <jmh.direct@joelhalpern.com> 
>> wrote:
>>
>> 
>> Is there any draft where such a requirement is described?
>> Yours,
>> Joel
>>
>>
>>
>> Sent via the Samsung Galaxy S20 FE 5G, an AT&T 5G smartphone
>>
>>
>> -------- Original message --------
>> From: Stewart Bryant <stewart.bryant@gmail.com>
>> Date: 6/23/23 1:46 AM (GMT-05:00)
>> To: Joel Halpern <jmh@joelhalpern.com>
>> Cc: mpls <mpls@ietf.org>
>> Subject: Re: [mpls] AI: Multiple ISD instances in a packet
>>
>> Joel
>>
>> I am not conflating anything. Some FRR strategies require NFRR to the 
>> domain egress.
>>
>> Stewart
>>
>>> On 23 Jun 2023, at 7:35 am, Joel Halpern <jmh@joelhalpern.com> wrote:
>>>
>>> 
>>>
>>> Stewart, you appear to be conflating two very different behaviors.  
>>> NFFRR, preventing failure-based rerouting while traversing a 
>>> failure-based rerouting path, is easy to mark in the packet.  It is 
>>> a natural step to avoid acccidentally returning to the failure, as 
>>> the packet can easily be in a region where a second failure would 
>>> cause such reversion.
>>>
>>> Stop-Rerouting is a different behavior.  You describe wanting 
>>> something that applies after exiting the repair path.  That is not a 
>>> matter of operator choice.  It is a different function.  I strongly 
>>> expect that if presented with a draft that required that, I would 
>>> argue that it is a bad idea, solving a non-problem.  I also note 
>>> that it would actually require some interesting surgery on the MPLS 
>>> label stack.  In the worst case, if there are no other MNA 
>>> sub-stacks in the label stack, the node inserting Stop-Reroute 
>>> indication would have to examine the stack, decide how often it 
>>> needs to insert sub-stacks, and insert potentially several 
>>> substacks. Not that this would be required even if you put the 
>>> Stop-Reroute indication into post-stack data, as there would be no 
>>> indications in the remaining label stack of the presence of 
>>> post-stack data.
>>>
>>> Please, lets not create an extremely difficult case of little or no 
>>> value. NFFRR over the repair path has clear value and fits with the 
>>> MPLS paradigms.
>>>
>>> Yours,
>>>
>>> Joel
>>>
>>> On 6/23/2023 12:36 AM, Stewart Bryant wrote:
>>>> I think NFRR may need  to apply to the whole of the routing domain 
>>>> over which the FRR instance applies.
>>>>
>>>> I further think that this is a matter of operator preference.
>>>>
>>>> Say we have failure A, which FRRa repairs. Say we also have failure 
>>>> B, which FRRb repairs. If FRRb uses resource A then a loop can form.
>>>>
>>>> The most common strategy is to say that in any multiple failure 
>>>> case we “abandon all hope” and revert to normal (slow) convergence. 
>>>> That implies that NFRR should be sticky over the repair domain.
>>>>
>>>> I can imagine that some operators may place their bets one way and 
>>>> some the other, because if there is no repair loop clearing NFRR 
>>>> allows productive forwarding to continue.
>>>>
>>>> The interesting case is what happens when we leave that repair 
>>>> domain? I think that we can usefully release the NFRR constraint at 
>>>> that point since as far as I know no one is doing inter domain FRR.
>>>> Thus I think to clear or not is going to have to be an operator 
>>>> preference.
>>>>
>>>> Stewart
>>>>
>>>>
>>>> Sent from my iPad
>>>>
>>>>> On 23 Jun 2023, at 01:56, Joel Halpern <jmh@joelhalpern.com> wrote:
>>>>>
>>>>> 
>>>>>
>>>>> My assumption is that the no further fast reroute constraint is 
>>>>> only intended to apply over the reroute path.  In that case, the 
>>>>> flag is set in any MNAs that are added for the reroute.    It is 
>>>>> fine for the flag to disappear once the merge point is reached.
>>>>>
>>>>> If we want a meaning that prevents reroute even after the merge, 
>>>>> things get more interesting.  After all, there may not be any MNA 
>>>>> further down the stack.  From where I sit, what happens with a 
>>>>> second failure after the merge seems to be a non-issue, since 
>>>>> until convergence the shortest path from the merge point to the 
>>>>> destination has to avoid the failed node inherently.  So repairs 
>>>>> there will also avoid it.  One can, I suppose, construct 
>>>>> pathalogical cases.  So be it.  They break.
>>>>>
>>>>> Yours,
>>>>>
>>>>> Joel
>>>>>
>>>>> On 6/22/2023 7:42 PM, Haoyu Song wrote:
>>>>>>
>>>>>> I’m still confused.
>>>>>>
>>>>>> Take  NFFRR as an example. Let’s assume it is implemented as a 
>>>>>> flag-based action. If the flag bit is set, it means “no more RR”. 
>>>>>>  The default value is 0, meaning FRR is allowed.
>>>>>>
>>>>>> In case we have multiple copies of the ISD in the stack, then at 
>>>>>> some node, if we want to set the flag, then it’s not enough to 
>>>>>> only set the flag in the top ISD. Because if we do so, once the 
>>>>>> top ISD is popped, the lower copies all show the FRR is allowed.
>>>>>>
>>>>>> This may not be a perfect example, but such kind of thing may 
>>>>>> happen. The multiple copies need to remain in sync. If there are 
>>>>>> writable actions in the copies, we can lose the synchronization.
>>>>>>
>>>>>> Haoyu
>>>>>>
>>>>>> *From:* Joel Halpern <jmh@joelhalpern.com>
>>>>>> *Sent:* Thursday, June 22, 2023 1:24 PM
>>>>>> *To:* Tony Li <tony.li@tony.li>; Tarek Saad <tsaad.net@gmail.com>
>>>>>> *Cc:* Haoyu Song <haoyu.song@futurewei.com>; mpls <mpls@ietf.org>
>>>>>> *Subject:* Re: [mpls] AI: Multiple ISD instances in a packet
>>>>>>
>>>>>> If the new MNA hop-by-hop sub-stack includes all the elements 
>>>>>> from the lower one, then the examining node only needs to look at 
>>>>>> / act on the top one, and there is no need to modify things lower 
>>>>>> in the stack.
>>>>>>
>>>>>> Yours,
>>>>>>
>>>>>> Joel
>>>>>>
>>>>>> On 6/22/2023 4:13 PM, Tony Li wrote:
>>>>>>
>>>>>>     I think that the ISD draft says that a forwarding node only
>>>>>>     needs to look at the top most ISD header of a given scope.
>>>>>>
>>>>>>     Tony
>>>>>>
>>>>>>
>>>>>>
>>>>>>         On Jun 22, 2023, at 12:47 PM, Tarek Saad
>>>>>>         <tsaad.net@gmail.com> <mailto:tsaad.net@gmail.com> wrote:
>>>>>>
>>>>>>         I agree with Joel.
>>>>>>
>>>>>>         If we ensure ISD2 (closer to top) >= ISD1 (lower), then
>>>>>>         it can cater for the two cases:
>>>>>>
>>>>>>           * ISD1 is always executed end-to-end
>>>>>>           * (ISD2 - ISD1) is applicable to subset nodes
>>>>>>             (downstream of node introducing ISD2)
>>>>>>
>>>>>>         Regards,
>>>>>>
>>>>>>         Tarek
>>>>>>
>>>>>>         *From:*mpls <mpls-bounces@ietf.org>
>>>>>>         <mailto:mpls-bounces@ietf.org> on behalf of Joel Halpern
>>>>>>         <jmh@joelhalpern.com> <mailto:jmh@joelhalpern.com>
>>>>>>         *Date:*Thursday, June 22, 2023 at 3:41 PM
>>>>>>         *To:*Haoyu Song <haoyu.song@futurewei.com>
>>>>>>         <mailto:haoyu.song@futurewei.com>, Tony Li
>>>>>>         <tony.li@tony.li> <mailto:tony.li@tony.li>, mpls
>>>>>>         <mpls@ietf.org> <mailto:mpls@ietf.org>
>>>>>>         *Subject:*Re: [mpls] AI: Multiple ISD instances in a packet
>>>>>>
>>>>>>         As far as I can tell, there is no currently defined
>>>>>>         circumstance when a
>>>>>>         node pushing actions on the stack needs to modify the
>>>>>>         ones deeper down.
>>>>>>         It does need to make sure that the new top MNA includes
>>>>>>         all the
>>>>>>         hop-by-hop actions of the hop-by-hop MNA below it.  (By
>>>>>>         recursion, taht
>>>>>>         will include those from all further down.)
>>>>>>
>>>>>>         Yours,
>>>>>>
>>>>>>         Joel
>>>>>>
>>>>>>         On 6/22/2023 3:32 PM, Haoyu Song wrote:
>>>>>>         > Hi Tony,
>>>>>>         >
>>>>>>         > You said " a node may choose to modify an ISD header.
>>>>>>         If it is modifying a repeated header, it SHOULD update
>>>>>>         all copies of the header, unless that's not the semantics
>>>>>>         that are intended by its modification."
>>>>>>         > The problem is: the reason for having multiple
>>>>>>         replications is to cope with the reachability issue. If
>>>>>>         the other replications except the top one is unreachable
>>>>>>         at an intermediate node, how can it be modified?
>>>>>>         >
>>>>>>         > Thanks,
>>>>>>         > Haoyu
>>>>>>         >
>>>>>>         >
>>>>>>         > -----Original Message-----
>>>>>>         > From: mpls <mpls-bounces@ietf.org>
>>>>>>         <mailto:mpls-bounces@ietf.org> On Behalf Of Tony Li
>>>>>>         > Sent: Thursday, June 22, 2023 7:44 AM
>>>>>>         > To: mpls <mpls@ietf.org> <mailto:mpls@ietf.org>
>>>>>>         > Subject: [mpls] AI: Multiple ISD instances in a packet
>>>>>>         >
>>>>>>         >
>>>>>>         > Hi,
>>>>>>         >
>>>>>>         > This is an attempt to address an open action item on
>>>>>>         our list:
>>>>>>         >
>>>>>>         > * LSR's behavior when multiple ISDs are in the packet *
>>>>>>         Should ISD (above) be a superset of ISD (below)?
>>>>>>         > * If ISD is repeated in the stack (due to readable
>>>>>>         depth) - modifying only the (above) ISD can lead to
>>>>>>         inconsistency
>>>>>>         >
>>>>>>         > Please see draft-ietf-mpls-mna-hdr-02. I believe that
>>>>>>         all of these questions have been answered in the draft.
>>>>>>         >
>>>>>>         > Multiple ISD headers are allowed in a single packet for
>>>>>>         two reasons:
>>>>>>         >
>>>>>>         > 1) A packet may contain ISD header for multiple scopes
>>>>>>         (HBH, I2E, Select). The contents of an ISD header for one
>>>>>>         scope cannot be combined with another scope without
>>>>>>         changing the intended semantics.
>>>>>>         > 2) A packet may repeat an ISD header because of the
>>>>>>         readable stack depth.
>>>>>>         >
>>>>>>         > In the first case, the contents of the various ISD
>>>>>>         headers are independent and one should not be a superset
>>>>>>         of any other.
>>>>>>         >
>>>>>>         > In the second case, where a header has been repeated,
>>>>>>         each repeated header should be identical, initially.
>>>>>>         >
>>>>>>         > In the case that we discussed last week, a node may
>>>>>>         choose to modify an ISD header. If it is modifying a
>>>>>>         repeated header, it SHOULD update all copies of the
>>>>>>         header, unless that's not the semantics that are intended
>>>>>>         by its modification. More specifically, we spoke about
>>>>>>         injecting NFFRR. It was suggested that this should be
>>>>>>         injected with Select scope. If there is an existing
>>>>>>         Select scope header in the desired location in the stack,
>>>>>>         then the node should modify the existing header. If there
>>>>>>         are additional replications of the Select header, then
>>>>>>         NFFRR should NOT be added to them, as that would not
>>>>>>         provide the semantics that NFFRR requires.
>>>>>>         >
>>>>>>         > A modification of a HBH ISD header is more likely to
>>>>>>         require modification of each replication.  I'm sorry, I
>>>>>>         don't have a good example of a HBH action that would be
>>>>>>         applied mid-path.
>>>>>>         >
>>>>>>         > Yes, in this case, a node that only modified the first
>>>>>>         HBH ISD header would be in error.
>>>>>>         >
>>>>>>         > I hope that this addresses the AI and that we can now
>>>>>>         close it. I welcome any discussion or questions on this.
>>>>>>         >
>>>>>>         > Regards,
>>>>>>         > Tony
>>>>>>         >
>>>>>>         > _______________________________________________
>>>>>>         > mpls mailing list
>>>>>>         > mpls@ietf.org
>>>>>>         >https://www.ietf.org/mailman/listinfo/mpls
>>>>>>         >
>>>>>>         > _______________________________________________
>>>>>>         > mpls mailing list
>>>>>>         > mpls@ietf.org
>>>>>>         >https://www.ietf.org/mailman/listinfo/mpls
>>>>>>
>>>>>>         _______________________________________________
>>>>>>         mpls mailing list
>>>>>>         mpls@ietf.org
>>>>>>         https://www.ietf.org/mailman/listinfo/mpls
>>>>>>
>>>>> _______________________________________________
>>>>> mpls mailing list
>>>>> mpls@ietf.org
>>>>> https://www.ietf.org/mailman/listinfo/mpls