Re: [mpls] MPLS Network Functions

Tarek Saad <tsaad.net@gmail.com> Tue, 05 October 2021 17:02 UTC

Return-Path: <tsaad.net@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 2AAED3A0CD9 for <mpls@ietfa.amsl.com>; Tue, 5 Oct 2021 10:02:03 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.097
X-Spam-Level:
X-Spam-Status: No, score=-2.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, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=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 ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id dlu8FC8mi45O for <mpls@ietfa.amsl.com>; Tue, 5 Oct 2021 10:01:52 -0700 (PDT)
Received: from mail-ed1-x52b.google.com (mail-ed1-x52b.google.com [IPv6:2a00:1450:4864:20::52b]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 34D123A0DAB for <mpls@ietf.org>; Tue, 5 Oct 2021 10:01:52 -0700 (PDT)
Received: by mail-ed1-x52b.google.com with SMTP id dj4so1404905edb.5 for <mpls@ietf.org>; Tue, 05 Oct 2021 10:01:52 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:thread-topic:thread-index:date:message-id :references:in-reply-to:accept-language:content-language:msip_labels :mime-version; bh=kdLkbWP6vVnsG3ebycNymCyBfPObPrFDL3uKmmPcGzw=; b=ksK4nPO7FeKpKiUDmygqGsm2eTRgf0u+hUzMShHANLUFZcmP3hikrBH6Cz9SfTP6im t1+ZuGHMT9m4kgfCgXE7PnnVUvLr2GwIj3PxY2+eMJKu1IgiIM0ORrhPxLs3v6O3EHhL cCzgPS9CuzEmYnVb/9wgfHI3gfJ4vBnNTcJZJBBXMFypCKMkOsFiv9uLdGIkFDgNC76V ph37+h/CnjuFvWf2GtHLJP6F6x5ksBB1+Y6jWClWXypk5N467cmnFGvCTQjEKhpsw/hQ TBFInoJLuZvPzQkUQC+GT5J4klSTs/GoRO1PlnCGaq2n9tiN5mqLiYX1gqH87cBSSBV+ oS2g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:thread-topic:thread-index :date:message-id:references:in-reply-to:accept-language :content-language:msip_labels:mime-version; bh=kdLkbWP6vVnsG3ebycNymCyBfPObPrFDL3uKmmPcGzw=; b=pmgZhxBf5qjUSG4giJ/3PGyKYvp+ZWmO5n6twYFne98tSqK8afxBeUp/lQ61atY8vT 3mA49kZAOcUutJOSpakUhvbhaQsYIi6XgFCO2G2vFUDd+OS0+Vgej21KpT3NqJNi6JKF FEMdAhXf5lPS//xPeeBDergu5lo/UPTYrnzDT3PECUo62DtH6ESQk08lrPJX/zC7dQZp F6fDtnJiORnU8NxpcvfBJHfUeJkReq7GEgf5U0CfRI8Vc0i9a4sqexZCxg0UQAkE8NNv +jLmyO8bso3kGYSHrICNl4L3GjzaWfBclQskh3IJVU2g/8cBWVf0EMaskB8tnYAktS+M Sw1g==
X-Gm-Message-State: AOAM530wbiF/1jVUK8/WLury0iKkTeGM/pOsfo4w88A1noygBWVjfHNA ZrggItv7ErQGA5SQInMicTg=
X-Google-Smtp-Source: ABdhPJx7gJO/F1+rqtySnZPjVqjTHDhHt2nuYmEe7w5CjvLuFT3S10aE7CPpg9RNM3BiTMTVPPIcPg==
X-Received: by 2002:a17:907:205c:: with SMTP id pg28mr2365307ejb.407.1633453308692; Tue, 05 Oct 2021 10:01:48 -0700 (PDT)
Received: from DM5PR1901MB2150.namprd19.prod.outlook.com ([2603:1036:4:9e::5]) by smtp.gmail.com with ESMTPSA id gl2sm7953902ejb.110.2021.10.05.10.01.47 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 05 Oct 2021 10:01:48 -0700 (PDT)
From: Tarek Saad <tsaad.net@gmail.com>
To: John E Drake <jdrake=40juniper.net@dmarc.ietf.org>, "mpls@ietf.org" <mpls@ietf.org>
CC: Manish Gupta <manishgupta@juniper.net>, Kireeti Kompella <kireeti@juniper.net>
Thread-Topic: MPLS Network Functions
Thread-Index: Ade3AAq1xV7JpZ05RdGWECS6MB17WQC/6ZB0
X-MS-Exchange-MessageSentRepresentingType: 1
Date: Tue, 05 Oct 2021 17:01:43 +0000
Message-ID: <DM5PR1901MB2150327FD09906BDE4786AA7FCAF9@DM5PR1901MB2150.namprd19.prod.outlook.com>
References: <BY3PR05MB80818CA634E00E579972FEEDC7AB9@BY3PR05MB8081.namprd05.prod.outlook.com>
In-Reply-To: <BY3PR05MB80818CA634E00E579972FEEDC7AB9@BY3PR05MB8081.namprd05.prod.outlook.com>
Accept-Language: en-US
Content-Language: en-CA
X-MS-Has-Attach:
X-MS-Exchange-Organization-SCL: -1
X-MS-TNEF-Correlator:
X-MS-Exchange-Organization-RecordReviewCfmType: 0
msip_labels: MSIP_Label_0633b888-ae0d-4341-a75f-06e04137d755_Enabled=True; MSIP_Label_0633b888-ae0d-4341-a75f-06e04137d755_SiteId=bea78b3c-4cdb-4130-854a-1d193232e5f4; MSIP_Label_0633b888-ae0d-4341-a75f-06e04137d755_SetDate=2021-10-01T20:13:43.0000000Z; MSIP_Label_0633b888-ae0d-4341-a75f-06e04137d755_Name=0633b888-ae0d-4341-a75f-06e04137d755; MSIP_Label_0633b888-ae0d-4341-a75f-06e04137d755_ContentBits=2; MSIP_Label_0633b888-ae0d-4341-a75f-06e04137d755_Method=Standard
Content-Type: multipart/alternative; boundary="_000_DM5PR1901MB2150327FD09906BDE4786AA7FCAF9DM5PR1901MB2150_"
MIME-Version: 1.0
Archived-At: <https://mailarchive.ietf.org/arch/msg/mpls/1nASeY6fLBUja4MUHGYhAU3rWBA>
Subject: Re: [mpls] MPLS Network Functions
X-BeenThere: mpls@ietf.org
X-Mailman-Version: 2.1.29
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, 05 Oct 2021 17:02:04 -0000

Hi John,

Thanks for this summary.
>From reading through, several of the suggestions that you make may have been covered by the Forwarding Action Indicator (FAI) and Forwarding Actions Data (FAD) proposal that is being discussed weekly by the MPLS DT. It would be great if you can highlight if/where you diverge with any conclusions the MPLS DT has reached - you can refer to the MPLS Open DT wiki<https://trac.ietf.org/trac/mpls/wiki/MPLSOpenDT> and ongoing wikis<https://trac.ietf.org/trac/mpls/wiki/MPLSOpenDT#OngoingDesignWikis> .

Let me know if you’d like to present at the upcoming MPLS DT meeting on Thursday 10/07, and I can work with the co-Chairs to schedule it.

See more inline..


From: mpls <mpls-bounces@ietf.org> on behalf of John E Drake <jdrake=40juniper.net@dmarc.ietf.org>
Date: Friday, October 1, 2021 at 4:14 PM
To: mpls@ietf.org <mpls@ietf.org>
Cc: Manish Gupta <manishgupta@juniper.net>
Subject: [mpls] MPLS Network Functions
Hi,

The proposal detailed below, is derived from the forwarding actions (FA) work but is an attempt to simplify it.   Given that we will be defining functions not directly related to forwarding, we are using the term 'network functions' rather than 'forwarding actions'.

When defining a network function, it is necessary to define whether that function is hop-by-hop, processed by every transit node on the packet's path from ingress  node to egress node, or end-to-end, processed only by the  egress node, whether that function requires ancillary data and if so, what is that ancillary data and whether it should be placed in label stack entries (LSE) or after the BoS (BoS data).  If a given network function is directly related to forwarding and requires ancillary data, that data SHOULD be placed in LSEs.
[TS]: yes, this is inline with what the Open DT has been proposing for In Stack Data (ISD) and Post Stack Data (PSD). There are thoughts that Kireeti has put together here<https://trac.ietf.org/trac/mpls/wiki/thoughts-on-positioning> about positioning of such ancillary data.


Both types of network functions are represented in the MPLS label stack by a set of label stack entries (LSE) termed a network function label stack block (NFLSB).  An NFLSB consists of a special purpose label (SPL), one
for hop-by-by and one for end-to-end
[TS]: Having 2 Indicator SPLs may be an option. However, the DT discussed a single forwarding-action registry, where the function (itself) indicates whether it’s hop-by-hop or end-to-end. We may need to assess the benefits of standardizing 2 separate SPLs vs a single SPL.

, followed LSEs which define which network functions are to be performed on the containing packet, the network function flags (NFF), and the ancillary data for each network function whose NFF is set and which requires ancillary data, in the same order as the NFFs are defined.  A NFLSB is delimited either by a trailing SPL or the bottom of stack bit being set in the last LSE in the NFLSB.  In order to facilitate transit node processing, if both types of NFLSBs are present in a packet the hop-by-hop NFLSB MUST precede the end-to-end NFLSB and transit nodes SHOULD ignore the end-to-end NFLSB.  Similarly, if there is BoS data for both types of network functions, the BoS data for the hop-by hop network functions MUST precede the BoS data
  for the end-to-end functions.  (It should be noted that the non-label fields in each of the two SPLs are as defined today simply because there is no need to re-purpose them.)
[TS]: it may still be desirable (inline with the FAI proposal) to repurpose those SPL bits to allow carrying FA(s) that do not require any ancillary data (e.g. NFRR action). This optimizes # of labels needed for carry such actions (without requiring a separate LSE to carry FAs).

The NFFs are encoded in a set of one or more LSEs, where each LSE consists of a 1 bit continuation field followed by 19 bits of NFFs, the BoS field, and 11 bits of NFFs.  Each NFF is associated with a specific, defined network function and if an NFF is set the corresponding function is nominally to be performed on the containing packet.  An initial set of network functions will be defined and over time will be supplemented with additional network functions.  The NFFs MUST be defined contiguously.
[TS]: yes, a similar suggestion was made for providing extensiblity for the # of FAs to be encoded in a label stack.


The continuation field, if set, indicates that there is another NFF LSE following the current one.  This field MUST be understood by any node that understands either type of NFLSB because even if it doesn't understand the meaning of specific NFFS it needs to understand how many NFF LSEs are present in order to skip over them to reach ancillary data carried in the MPLS label stack for the NFFs it does understand.  It should be noted that it is an error if both the continuation bit and the BoS bit are set in a given LSE, and in this case the packed should be discarded.

Each per-NFF LSE ancillary data is encoded  using  the entire LSE except for the BoS field..

The per-NFF ancillary data, both LSEs and BoS data MUST be in the same order as the NFFs.  I.e., there were six defined network functions, with NFFs 1 and 4 requiring in-stack ancillary data, NFFs 2 and 5 not requiring ancillary data, and NFFs 3 and 6 requiring BoS data,  and all of the flags were set in a given received label stack, then the after the NFFs, the MPLS label stack should contain LSEs with the ancillary data for NFFs 1 and 4 and the BoS data should contain the ancillary data for NFFs 3 and 6.  Each piece of BoS data should indicate with which network function it is associated.

If NFF 3 and/or NFF 6 were set then a transit node would know to look for BoS data.  If only NFF 3 was set then the first piece of BoS data would be for it and would indicate NFF 3.  If only NF 6 was set then the first piece of BoS data would be for it and would indicate NFF 6.  If both NFF 3 and NFF 6 were set then the first piece of BoS data would be for NFF 3 and would indicate NFF 3 and the second piece of BoS data would be for NFF 6 and would indicate NFF 6.  (It should be noted that the same logic applies to LSE ancillary data.)

When constructing the end-to-end NFLSB and BoS data the ingress node should only include network functions  understood both by it and by the egress node.

A transit node must understand every NFF up to a given bit position;  i.e., it can't selectively understand individual network functions.  However, this doesn't mean that a transit node must support every function it understands - if a given NFF is set and the transit node does not support the defined function it merely skips over the ancillary data LSEs for that NFF, if present. When a transit node reaches the last NFF that it understands it considers the rest of the NFLSB to be opaque and skips over it.

To handle user-programmable network functions,  the ASLA approach should be used.   I.e.,  There is a separate user-programmable network functions SPL with an IANA assigned value indicating that what follows is a set of MPLS LSEs defining the user-programmable network functions.  The contents of the MPLS label stack after this SPL are essentially opaque to a node that does not understand them and would be delimited by another SPL or by BoS.  I.e., the contents of the MPLS label stack after that SPL and any associated BoS data are not subject to IETF standardization.
[TS]: we have an Open Item<https://trac.ietf.org/trac/mpls/wiki/MPLSOpenDT#OngoingDesignWikis> to discuss a proposal for user-programmable actions in the network – including how to disseminate within the network and how a node would decode/interpret the meaning of LSEs that carry user-programmable function/action in the packet.

Regards,
Tarek

Yours Irrespectively,

John


Juniper Business Use Only

_______________________________________________
mpls mailing list
mpls@ietf.org
https://www.ietf.org/mailman/listinfo/mpls