[mpls] Catalog for MPLS Metadata

Vasilenko Eduard <vasilenko.eduard@huawei.com> Sun, 18 April 2021 18:10 UTC

Return-Path: <vasilenko.eduard@huawei.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 1F4933A21E9 for <mpls@ietfa.amsl.com>; Sun, 18 Apr 2021 11:10:39 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.9
X-Spam-Level:
X-Spam-Status: No, score=-1.9 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
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 PxqFXSEx-6DD for <mpls@ietfa.amsl.com>; Sun, 18 Apr 2021 11:10:34 -0700 (PDT)
Received: from frasgout.his.huawei.com (frasgout.his.huawei.com [185.176.79.56]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 483BC3A21E7 for <mpls@ietf.org>; Sun, 18 Apr 2021 11:10:34 -0700 (PDT)
Received: from fraeml703-chm.china.huawei.com (unknown [172.18.147.201]) by frasgout.his.huawei.com (SkyGuard) with ESMTP id 4FNd8n5l1cz68BPh for <mpls@ietf.org>; Mon, 19 Apr 2021 02:03:05 +0800 (CST)
Received: from msceml703-chm.china.huawei.com (10.219.141.161) by fraeml703-chm.china.huawei.com (10.206.15.52) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.2176.2; Sun, 18 Apr 2021 20:10:30 +0200
Received: from msceml703-chm.china.huawei.com (10.219.141.161) by msceml703-chm.china.huawei.com (10.219.141.161) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2176.2; Sun, 18 Apr 2021 21:10:29 +0300
Received: from msceml703-chm.china.huawei.com ([10.219.141.161]) by msceml703-chm.china.huawei.com ([10.219.141.161]) with mapi id 15.01.2176.012; Sun, 18 Apr 2021 21:10:29 +0300
From: Vasilenko Eduard <vasilenko.eduard@huawei.com>
To: mpls <mpls@ietf.org>
Thread-Topic: Catalog for MPLS Metadata
Thread-Index: Adc0flWCZNoHBB0lQ2ah/nriuWPIGQ==
Date: Sun, 18 Apr 2021 18:10:29 +0000
Message-ID: <8f8c72d9bf484fa1bd20b82c40d99177@huawei.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-originating-ip: [10.47.205.22]
Content-Type: multipart/alternative; boundary="_000_8f8c72d9bf484fa1bd20b82c40d99177huaweicom_"
MIME-Version: 1.0
X-CFilter-Loop: Reflected
Archived-At: <https://mailarchive.ietf.org/arch/msg/mpls/_EQHIMKoIsyOGBOF9nGydXoLe_w>
Subject: [mpls] Catalog for MPLS Metadata
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: Sun, 18 Apr 2021 18:10:39 -0000

Hi all,

I did think about it a little more and come up with the below.

I could formalize it in the form of a draft if it would be the interest.


Chain of variable size headers could pose a considerable challenge for hardware pipeline. It needs sequence processing to parse it.
The progress of computing power during the last 15 years is mostly related to multi-core and multi-thread parallel processing. Any future-proof architecture should be friendly for parallel processing.
The challenge in processing IPv6 extension headers and their low adoption is partially attributed to the expensive parsing of the chain of variable length headers.
An additional challenge is the size of the key buffer that is used as the key materials to search in switching and forwarding tables. The cost of processing is linear to the key size. It is important to have the flexibility to ignore or discard some headers to compromise on low-cost platforms. Parsing of all headers in the long chain defeats the goals of a low-cost platform. Hence, parsing simplification and flexibility could help to the problem of restricted key buffer too.
MPLS's new metadata blocks must have some indication of their type and length. It is assumed that MPLS metadata blocks would have separate address space from IANA for block types. It is proposed to collect this information in one centralized table that could be called "Catalog".
There is no need for redundancy of this information in particular metadata blocks. It means that the size of metadata blocks could be reduced respectively. Hence, overall this proposal does not increase the size of the packet. Such an advantage is possible only as of the initial architecture decision.
The Catalog is proposed from a sequence of Type/Offset values. One Type/Offset for every metadata block that would follow Catalog.
The size of the Type is proposed as 1 octet, the size of Offset is proposed as 2 octets. It is the discussion point that should the Offset be the number of Octets or should it be 2, 4, or 8 octets in the metadata block. The former case restricts all metadata headers together by 64k octets that is probably enough. The latter could improve the performance by aligning to the memory unit of a particular platform but it would waste some bandwidth because of the need for padding in metadata blocks.
The positioning of the Catalog is proposed at the bottom of the stack (i.e. between MPLS label with BoS=1 and Data Header) to preserve interoperability with current MPLS implementations.
The Catalog should start from "0000" nibble to avoid packet reordering on old LSRs or a nibble that could be requested from IP protocols space (if possible).
The Catalog should finish with the special type of metadata (255?) which means that the Data Header is started from this Offset.
Hence, overall structure of the catalog would be:
0000

RRRR

Type1

Offset1

Type2

Offset2

...

  ...
TypeN

OffsetN

11111111

Offset of the Data Header


RRRR - reserved nibble.
The offset is calculated from "0000RRRR" octet.
The choice to put offset instead of length in the Catalog is explained by the desire to simplify the read of arbitrary Metadata blocks. The offset would show the start of needed Metadata immediately, the size of the block could be calculated by 1 subtraction (OffsetN++ - OffsetN). Additionally, offset would greatly simplify the search for upper-layer protocols that is much needed for middleboxes, filtering, QoS, and load balancing.
The other possibility was to use the length of the Metadata block. The length would push for the addition of all lengths from the catalog to calculate the arbitrary offset to read.
It makes sense to discuss the rule for not to have the ordering of different types of Metadata blocks. The Catalog does permit to easily find any block. Any new block make sense to add at the end. It permits to avoid the recalculation of Offsets for all previous Metadata blocks.
Fixed-size simplified structure of the Catalog permits to optimize parsing in hardware, arbitrary access to any metadata blocks, and easy search for the next layer offset. All of this could greatly improve the chances for market adoption of MPLS Metadata extensions.



Eduard