Re: [mpls] Reference Augmented Forwarding - MPLS RAF

Robert Raszuk <rraszuk@gmail.com> Tue, 26 April 2022 23:28 UTC

Return-Path: <rraszuk@gmail.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 6C0BAC1D24D4 for <mpls@ietfa.amsl.com>; Tue, 26 Apr 2022 16:28:31 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.098
X-Spam-Level:
X-Spam-Status: No, score=-2.098 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, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.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 Qft2Zs-Jsrhk for <mpls@ietfa.amsl.com>; Tue, 26 Apr 2022 16:28:29 -0700 (PDT)
Received: from mail-qt1-x830.google.com (mail-qt1-x830.google.com [IPv6:2607:f8b0:4864:20::830]) (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 ietfa.amsl.com (Postfix) with ESMTPS id A5FA3C1D1C75 for <mpls@ietf.org>; Tue, 26 Apr 2022 16:28:29 -0700 (PDT)
Received: by mail-qt1-x830.google.com with SMTP id x21so30248qtr.12 for <mpls@ietf.org>; Tue, 26 Apr 2022 16:28:29 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=sgE2XztncWkf73x8tsnRqi1vN2iVjZ+2umbnPXwItf0=; b=OYX3b2UFOT3oQJ/gr3HiBKcx5Hs7JhDwzq2Wbf/59MxGWeJATHzfTcLn6HK+9estfj Jrwn1arNuvodzJfJ4KQnXzrnqmN5apxtCt+sGvVKwGcNmq+cuA/EtjpKZ6fqjg/0nl35 W7AV0Ttr8dB6MI6FO1V930bKwxjrt/qvrqyQxfuMg0S190yv27crtdDhWEjp6G7ol5h1 wEIJQpNOAmXnZlXW4mZ/VeM5dwuqoDD8cGyCtvl12hG4+XSh605hum0h+c4nPf3s3liZ VZgvT9vNbT9jf2YGGhC/XJI+rQmNLSSHaZYebs5h0FviOGTceSLLJGxY70qkPorq+yeV a8BA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=sgE2XztncWkf73x8tsnRqi1vN2iVjZ+2umbnPXwItf0=; b=XEMRRmpc0q82yQRQCzeL39kTO7VJAhCEc6/CXPrW6enH3lljxEOyE5tff1ON/UxDS1 abz2l2ZO+Dz7b1ExGMWY6P05SSASMrm+ntjC40pUX1zwyxj8ZOCzZsxfV1eBbHKoHxah +6HtmuHYA4zwgMcfFNmc31CL38Xh3r/flvSxwsO7W07N71+mYiT+OTnXkgvTh8dmVtKG I0Ton4kFR+rzObOx2sah+z331WTbO5SD0uKS5fmM4KK1xKHLkkLJQi1pQF3Fh/0vUAUP /Q8nVXINi5wyHmFw+oMNqbvtvyJqRLXO41qKqN61FsyFPVACiJUhB4xRCexxfhBFhFTz Rw2A==
X-Gm-Message-State: AOAM533cZ6DPRVV5I0omGgV3zNT7F5uuniJZJPdv6Cmx9Da1AXvUehgn KEQhJfrugQhjCSttSHZ0FxLmTD7FJrNXDUzcPQY=
X-Google-Smtp-Source: ABdhPJybN7m5sDK5gglIVw0dMJcdRqQLHu0rKK3yLv/dv3jYuCNRrd/gZQe5rFSFdtJVafVPXtHlA1DVadK2ULgsWY0=
X-Received: by 2002:a05:622a:1194:b0:2f2:35b:28df with SMTP id m20-20020a05622a119400b002f2035b28dfmr17098832qtk.30.1651015708438; Tue, 26 Apr 2022 16:28:28 -0700 (PDT)
MIME-Version: 1.0
References: <CA+b+ER=87-UZSoR3ke6ikFiemna9TaNpDMgVGkNO3xMUm-t8zQ@mail.gmail.com> <AE84CEA2-BD91-42FD-BBAE-FCC6597CBCE8@tony.li>
In-Reply-To: <AE84CEA2-BD91-42FD-BBAE-FCC6597CBCE8@tony.li>
From: Robert Raszuk <rraszuk@gmail.com>
Date: Wed, 27 Apr 2022 01:28:22 +0200
Message-ID: <CA+b+ERk38ZpcFyAaKmK6jbVpvr+uvDVS-h-nAm2-0k9n4E30+g@mail.gmail.com>
To: Tony Li <tony.li@tony.li>
Cc: mpls <mpls@ietf.org>, Haoyu Song <haoyu.song@futurewei.com>, Jeff Tantsura <jefftant.ietf@gmail.com>, John E Drake <jdrake@juniper.net>, Kireeti Kompella <kireeti.ietf@gmail.com>, Stewart Bryant <stewart.bryant@gmail.com>, Tarek Saad <tsaad.net@gmail.com>, zhoutianran@huawei.com
Content-Type: multipart/alternative; boundary="000000000000d1f51105dd970c67"
Archived-At: <https://mailarchive.ietf.org/arch/msg/mpls/JT6omGTGPFcw6F4ssvLPU1L2gmw>
Subject: Re: [mpls] Reference Augmented Forwarding - MPLS RAF
X-BeenThere: mpls@ietf.org
X-Mailman-Version: 2.1.34
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: Tue, 26 Apr 2022 23:28:31 -0000

Hi Tony,

- I like the acronym. :-)  We need to find a Spitfire somewhere in the
> proposal. Or Snoopy.
>

Not a big challenge :)  My original idea was Forwarding Behaviour Indicator
(FBI), but was a bit worried about using it for perhaps obvious reasons.


> - This doesn’t really seem like a Framework document. It’s a complete
> proposal, architecture to details.
>

Well ... the reason I added some details was to highlight the architectural
principles. They are in no way exhaustive. Lots of details especially in
distribution of network actions needs to be defined in a separate document.
Then perhaps we could add a new document as an extension to DROID.


> - You say that this is an implicit model. I disagree. It is very much
> explicit. It explicitly shifts the responsibility for communicating network
> actions to the control plane.
>

Well yes. I mean implicit from a data plane perspective. But I am willing
to call it with what WG recommends.


> - Section 2.1: Your definition of a Network Action says that it may not
> affect packet switching. That seems surprising. Wouldn’t we want the
> flexibility to make the packet switch differently? In the very next
> sentence you say that an action may affect forwarding. I’m pretty sure that
> I’m not following the distinction that you’re making here.  Could you
> please expound?
>

Ah .. ok I will clarify in the draft here. By not affecting switching I
mean that the packet may only trigger some actions which are orthogonal to
switching decisions or any packet processing (as departure from "normal").
Those would be for example triggers to generate OAM postcards. Trigger to
generate some local traps. Trigger to generate any form of streaming
telemetry. The list goes on and on.

Of course the other category is to purposely affect
switching/forwarding/routing/queuing decisions - this is very true.


> - You mention that network actions are distributed by configuration.
> Could this be generalized to be the management plane?
>

I was thinking about it. The only reason I did not call it that way that I
did not want to preclude IGP extensions to flood it. Or flowspec v2. I was
also not sure if DROID would be classified as management plane ?

But in general yes stating management plane instead of configuration is
great even if we would include other options to push those
instructions/mappings.


> - Isn’t a RFV a label?  It’s occupying 20 bits in the label stack, in the
> place where there would be a label.  Should we call it a Reference
> Forwarding Label (RFL)?
>

It is. I am ok with renaming it as such. The only little detail here that
within RFV LSE we could also use TTL field for some meaning. That would no
longer be label. However with your suggestion we could nicely make it
cristal clear - RFL + RFV (the latter to mean only the portion of 8 bits of
TTL).

Terminology is all open for such great suggestions. I wrote it up to
trigger discussion about alternative model :).


> - Why have the RFI at all?  Why not just explicitly allocate RFV labels
> that encode both forwarding plus actions?
>

Doable in theory but there are multiple reasons why I think this would be a
bad idea. Quote from my note to Stewart:

" The signalling reference in the packet being separate from forwarding
label value itself as mentioned is a design choice based on few points:

* backwards compatibility to deployed MPLS transport

* compatibility with hop by hop or domain wide labels

* decoupling network actions or network programming control plane
(configuration or pub-sub dist.) from forwarding data plane (yes I do think
this is a feature not a bug)

* scalable (no label explosion) for selective execution chains

* keep label stack of fixed length with max 8 octet growth

+ few new points:

Moreover what significantly helps (and what perhaps is not very clear from
the draft) is that RV mapping has *local* significance. That means each
transit node may act differently on the same RF value.

So I look at RFV as a marker for groups of uniquely treatable groups of
flows, not as expressions of verbatim chains of actions.

Moreover nothing prevent operator to structure RFV. Say you have 5 very
often used actions. So you could hijack first 5 bits of that label to turn
them into a bitfield. Last if one would ever get that he needs more then
2^20 groups of flows markers for different treatment there is always
option to add one more RFV' and instead of sending RFI+RFV send
RFI+RFV+RFV'


> - It seems like you could just reserve the TC and TTL fields in both LSEs.
>

Clearly not in both. I want to support the SDN case where RFI is still top
of the stack. But in general yes as you see above this is considered. TC
bits in RFV I left for now alone.


> - I’m not sure I see the point in specifying a TLV encoding without any
> understanding of what it’s carried in.
>

Right. This was just an illustration. I have some vision why TLV format
there may be useful but this can all be flatten too. Especially that this
can be pushed by mgmt too.


> - I have a serious concern about this approach for short-lived flows or
> single packet exchanges.  In these cases, the control plane effort to
> establish forwarding state may well exceed the intended usage. For example,
> suppose that we want an IOAM function such as a ping.  It seems like we
> would need to establish state end-to-end before we sent the ping request.
> That might require many milliseconds and the might only be used for one
> packet.  Then I presume that there would be some mechanism to remove the
> state. For long-lived flows, your proposal seems rational.
>

That is not at all how I envision this would work.

State programming is NOT to be triggered by flow appearance. State should
be preconfigured before ingress would mark any group of flows for specific
treatment.

I do not see this would be of any concern. So even for short lived flows
this should be pre-programmed. Note by notion of "pre-programming" network
elements may not need to put all into FIB level. Some rarely used mappings
can be cached then moved to FIB upon hit.


> - Forwarding state is a serious concern. How does this scale?
>

See above.


> - You write:
>
>    If LSP is not setup and the network uses the concept of SDN
>    based path computation it can be preset as topmost LSE.
>
>   How does this work?  Are you assuming that a controller will push a
> stack on top of this?
>

Nope.

Ingress marks a groups of flows with a single RFV label.

That label is mapped to different switching action at each node it is to
traverse. Just a bit like OF (sigh :)

Note that as stated above and what perhas is a bit not exposed in the draft
- reference to action mapping is local to the receiver (ie. transit node).


> -If the topmost label is popped, then the RFI/RFV come to the top of the
> stack. Are they discarded?
>

As I mentioned egress will need to understand it and discard (perhaps using
TC bits or checking TTL.

- You write:
>
>    If a node is enabled to perform additional actions on the
>    packets it should leave the RFI/RFV tuple as received immediately
>    after the top label swap on the stack.
>
>    I don’t understand why you have the word ‘swap’ in this sentence.
>

Ahhh basic LDP label swapping - as opposed to global label no swap :)

Many many thax Tony for great comments !!!

Kind regards,
Robert