[Detnet] Changes of <draft-ietf-detnet-yang-18.txt> last call

Don Fedyk <dfedyk@labn.net> Thu, 18 January 2024 05:02 UTC

Return-Path: <dfedyk@labn.net>
X-Original-To: detnet@ietfa.amsl.com
Delivered-To: detnet@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 0D73DC14F6A2; Wed, 17 Jan 2024 21:02:49 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.91
X-Spam-Level:
X-Spam-Status: No, score=-1.91 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, HTML_MESSAGE=0.001, RCVD_IN_MSPIKE_H2=-0.001, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=labn.onmicrosoft.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 EYpGVU_OimFl; Wed, 17 Jan 2024 21:02:47 -0800 (PST)
Received: from NAM11-DM6-obe.outbound.protection.outlook.com (mail-dm6nam11on2134.outbound.protection.outlook.com [40.107.223.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 49384C14CE2E; Wed, 17 Jan 2024 21:02:46 -0800 (PST)
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=GahfT/xyd02jLLukszjubb252IiPwxio7iev69jjyOQIPTg2gykmjvl3ZfCXh7A7CH/Ui4JQaXbjzlT7EQnolu5HKUTSXHV1p8H9FeK+Eb+sgSz1ucMSqr7bqMRzXst6eJZ31GnNA0STIjZ3KAnD4P4lEiop40bVCNV8AlZt+ujv/OEVjFc9F3tdZ03EUfxCwkwYLfppx3do9wjISuk5R9VJ2Mwi3DHRKytJLPhhZxyucaVEnhjahnurKFZxLHUdowJ6WYvyFTivE8qnQ4vRcyaeT/Eg8rZq8QOiFgPWN9ht1XzZpevUKhZCgrxs214NUwzwUGQrQFzYgZJ+fB1lPA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=wo6hmkR0hlMHAa4W7rW9C5VChPfdKZJYtTR6BZdCDNY=; b=h17GVBFLAr9rE9gpuBf6SDgsXxrSo+qokSwZ1oRDzmfq/lKcJNK3ePs4pJDd4FO7I6v5okQq/ftzhG1c1tvsHxfso2Bzc5EtrEq1pQGUsY63LN2uUToncMcacTqANvMWctcI5s9t3u1mReBZgRG646W0H94i+WalQoNJ8vyyg6osL1uXjIe01+sZ57c6B8NbEk1sH1F3YTCYADKxr7QGbwZbMH4MeGv1cmd2O51W/2n5f2Ga0ZwibXHgM+EemvwDQsAGkw/NiyQ9HeVpGLu2l7xmr33mZ5NpEfss0jxyuiRto78ZQvVVUph/fIZ2X8Kne5FRK3/jCkVQuLYXaePidA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=labn.net; dmarc=pass action=none header.from=labn.net; dkim=pass header.d=labn.net; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=labn.onmicrosoft.com; s=selector2-labn-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=wo6hmkR0hlMHAa4W7rW9C5VChPfdKZJYtTR6BZdCDNY=; b=mYsFxMuahqWYIXSDFX0hKx2zcjrUl5fuPfM9Uck82ZP3IC8TWtbXJpyCiuaYkrBAPbenvzU+/+n6O/9HPzSAH2UJmaVV0cRlITX66BWwcdQjqUW0J+MTFYbAPB2VXhTk7I6HHpcvApbwu5+6ImasRc0lAy8bKruRjaz9LJJ3uGk=
Received: from PH7PR14MB5368.namprd14.prod.outlook.com (2603:10b6:510:133::11) by DM6PR14MB3322.namprd14.prod.outlook.com (2603:10b6:5:1e7::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7181.30; Thu, 18 Jan 2024 05:02:41 +0000
Received: from PH7PR14MB5368.namprd14.prod.outlook.com ([fe80::2f3d:1744:a1b5:8c4c]) by PH7PR14MB5368.namprd14.prod.outlook.com ([fe80::2f3d:1744:a1b5:8c4c%4]) with mapi id 15.20.7181.022; Thu, 18 Jan 2024 05:02:41 +0000
From: Don Fedyk <dfedyk@labn.net>
To: Florian Kauer <florian.kauer@linutronix.de>, "draft-ietf-detnet-yang@ietf.org" <draft-ietf-detnet-yang@ietf.org>, "detnet@ietf.org" <detnet@ietf.org>
Thread-Topic: Changes of <draft-ietf-detnet-yang-18.txt> last call
Thread-Index: AdpJyyYPrJLPL0JiTmeZXQGyZ4HGtA==
Date: Thu, 18 Jan 2024 05:02:41 +0000
Message-ID: <PH7PR14MB53680967B965EA595EA1D9AFBB712@PH7PR14MB5368.namprd14.prod.outlook.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=labn.net;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: PH7PR14MB5368:EE_|DM6PR14MB3322:EE_
x-ms-office365-filtering-correlation-id: b620bf57-e44c-43a1-8057-08dc17e2b2e5
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam: BCL:0;
x-microsoft-antispam-message-info: IA8+PewuxjvcG87gL/V454RR5AfZJwnWMaq3Ls4ENJkmdkxouUdLQMUr1dy2LMblEojmU2lEuwnRAAYZ+lckW/3+4snfd85tRprw4UzZw7cPJ7NRAWygbC6e3j2FL2qVpPRMS18G3MJoXsmBqHtNBHp3EDJawTmP+F14bSzL84tUWVJoTXJSZIt1g0SRyPHwLQrVgWyK/VbaEEnBsyHq68pzrlcOfVi3HMfpl02Aed5tbfEN35IqsrOpSfSQheb+jZYxsNZEyfJdmyZG8KhTK+SmyzeC05omClS9/BktWLpsslKUgyRjZBREPKyIpkq77aowauuRKIU9jTwyaT72nUtURr/1/jkHvSw3KjzSRtFCZGeaVVwnw91LxTXLjri7psZOf58oT3wUoCUhVDPnEMaRV5tqjZYUDMqiGyPV8G7Ln+bceaTDOyNL5gPd6mttzoO2v/pOmTxf1ksodiHzmrVuVhJBoiy/Y0kWCRAg8DpLzPM7eJnVd5WtDv3A+t2PPpYgMT9ZjgN0LpIuHnvwv/S/RRPVllfJosOQYPJUtWP0rfbCPGLXgIrqicGSEw7iCvXzRTaMhHOFXevyEqTyHzTR7CBbXEOvRiySPHaysGI=
x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PH7PR14MB5368.namprd14.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(39830400003)(136003)(366004)(376002)(346002)(396003)(230922051799003)(451199024)(1800799012)(64100799003)(186009)(6506007)(9686003)(5660300002)(2906002)(66946007)(64756008)(66446008)(66556008)(966005)(7696005)(122000001)(316002)(38100700002)(8676002)(8936002)(9326002)(71200400001)(450100002)(76116006)(52536014)(66476007)(110136005)(478600001)(55016003)(38070700009)(33656002)(41300700001)(83380400001)(166002)(26005)(86362001)(579004); DIR:OUT; SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0: FAEGyXeQLNgLIJWocGthgrOcReJAEmOB1e7JfWSGBHyfY7IJyC4BKjklFlEljF8bYf55oHzvu+HAdwNZqhcdUCF1LWreFLPVQE1dtw7QAj39OLFzsEZlmN8+JH33LVODjneLXa2W0LaBBzkM+pE1eekGpPGfmucWh8SKuJIXYHvzGHtK9fPGQfaW03Evfq71js0ul6t+BETLsZ4mQkUyozCZlbCge/BDyuW/6euc1B+93dD40BVsVKBDoFnXN5cMyV8/lMj4n+u1c8RqpFtedsuJTsm2RXzdERfI2CYbyec6NpqMAYntKwEuQgfC0tAFLcnLMuZ+y6A71h++Yqlg6gri+0Qlkba6arOi2gchwdljS4yAm1D2HmsXnuPjiQwv3/s8bF7Pld8ClG6YnsSi6W6iRcQw435fh60wPPtm8zXEZ0S94Mh3EB5i++wEiMVOcF9M7YHzDV5HZgtCVlFByjBLJ5jrd2vcvQEnIg+cJhbUEStXvYzXwgCS1tK5/vHClx6PmFJNKgLA9RM0JwlUWMiK+XtNGrXzcQv2GUHw4v4uYbZku4N76oN9xwNQuvijijlPB9ui0vdGbH8cm4OqDVqBvFmJ3OVa+LAx167A8jvZ00lIFYGobpAmAYoaHBSEAWkk9jiLbInKPje8hWDJZ1a2uohXSaEDAUP12cr1KWbtePb2gKlNpO5woq7MZfr+ztOs+i/CruMSGJyA+utmkAIFDtiAXkDoPQz2Z2koClDxVizwMoeHYRScJzIZPI4JW69EptTdi4gO6vFiSxbHMRu9lGfZvDd+4uk2hG39x6y5+YgzbyDSLqLtVCLDXjMp8YlycZAg6na1frgox9gb4xnE9s55J5V1ISXVnxvoCN7d21aXQpHsNF5U9CpiOZV+uvfQA5YrfDLhVCH5yO/r2KTfxiMb6mCi2TaK2Bw89Wq6vTB/3BcD+XaH+qWMY6yZ8Ti/1UBEFqNWxTcFx/+rpc6Me72oZfV030Ru9JnjWCcYOt7/rnLc3NGXcHIy1U0+ycUKndmPR0eW/Id7gLvJlUSLmtW90HPJFqmsnYbZdA+JigWDT11EhAt/Wmu4jIgxPAhSTl7r8WZMa9VZuH4ZtS4IOEh2/iyH2SFwrvSjUc+HgSxzc/i4Oah4yjDQA9TtwSmu/BLCPTHdUtibI0XjptjPHYvFNtee84UJOsFAzRVAId8cs8uYTA/PJ74kqR41x+bmezF0D+uLeSWl7ORwrza+MIB9lXOg2UYsSwwmZ67GoCy80HSGZpC1lPUYiRBAZcXB1GcZPiaVHfAupJkQXTdI2jne2I9RAd/7qWiC6l/dKl6EZK3dj/KSmRoeeJKTp2v8XMyI+LD+7Zlsq67cqw9LbINIYj2PDC3ddTnCN3bAqB/4MrPxg4XrZbQ+bMHi93kxVsrm22uro3NDudzyeNWxHGRYqSdtaCYzeUg4l68xkwJ4DITKa1dCFrT97OUUFa5jC9MZcbMrAZu0BBqwFWzLYX9eNQmm2FR1xXgmUWAYsMtK0nv4Px5Pl/S+6iEtRvGQhpyWhqR/A5/tybdR2JIXBzWX3KFSExyxmsF/LdJbWmX8ndK84VSXqvydrw0H
Content-Type: multipart/alternative; boundary="_000_PH7PR14MB53680967B965EA595EA1D9AFBB712PH7PR14MB5368namp_"
MIME-Version: 1.0
X-OriginatorOrg: labn.net
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: PH7PR14MB5368.namprd14.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: b620bf57-e44c-43a1-8057-08dc17e2b2e5
X-MS-Exchange-CrossTenant-originalarrivaltime: 18 Jan 2024 05:02:41.1073 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: eb60ac54-2184-4344-9b60-40c8b2b72561
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: kf6NvIwKAuWN887kDrIrnCbHYtneRPoz2o5H2qp2DXOamSqU3ww6Ha4jKtOXCyfhvAUBmGeGKVsQetdpkv40nA==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR14MB3322
Archived-At: <https://mailarchive.ietf.org/arch/msg/detnet/g_Em8WFLeT20g8mMf-Eqc5wEOeI>
Subject: [Detnet] Changes of <draft-ietf-detnet-yang-18.txt> last call
X-BeenThere: detnet@ietf.org
X-Mailman-Version: 2.1.39
Precedence: list
List-Id: Discussions on Deterministic Networking BoF and Proposed WG <detnet.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/detnet>, <mailto:detnet-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/detnet/>
List-Post: <mailto:detnet@ietf.org>
List-Help: <mailto:detnet-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/detnet>, <mailto:detnet-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 18 Jan 2024 05:02:49 -0000

Hi
Florian Kauer proposed 3 changes to the DetNet YANG.   I've looked at them and they have a minimal impact.  I propose accepting them (see below) .
Here is the summary of the functional changes. I have pushed the full update to the GitHub.  https://github.com/detnet-wg/draft-ietf-detnet-yang
I have also pasted below a test example operational data on the changed items with same data (highlighting the changes).
I have verified all examples in the draft appendix are unaffected by the changes and work before and after the change.

For Brevity Only the functional changes and accompanying descriptions are here. See GitHub for full document  you can diff between 18-19.

1st change remove choice operation type - This change is an optimization. Operation-type is a choice statement.  There is no loss of function removing it.  We had nested choice statements this flattens that logic.

@@ -750,22 +750,18 @@ module ietf-detnet {
           description
             "These are the flow type next hop choices.";
           case ip {
-            choice operation-type {
+            description
+              "Use IP data plane for forwarding.";
+            leaf next-hop-address {
+              type inet:ip-address-no-zone;
               description
-                "This is the IP forwarding operation choices.";
-              case ip-forwarding {
-                leaf next-hop-address {
-                  type inet:ip-address-no-zone;
-                  description
-                    "This is an IP address as a next hop.";
-                }
-              }
-              case mpls-over-ip-encapsulation {
-                uses ip-header;
-              }
+                "This is an IP address as a next hop.";
             }
+            uses ip-header;
           }
           case mpls {
+            description
+              "Use MPLS data plane for forwarding.";
             uses rt-types:mpls-label-stack;
           }
         }

Second instance of 1st change.

@@ -792,22 +788,18 @@ module ietf-detnet {
             description
               "These are the flow type next hop choices.";
             case ip {
-              choice operation-type {
+              description
+                "Use IP data plane for forwarding.";
+              leaf next-hop-address {
+                type inet:ip-address-no-zone;
                 description
-                  "These are the next hop choices.";
-                case ip-forwarding {
-                  leaf next-hop-address {
-                    type inet:ip-address-no-zone;
-                    description
-                      "This is an IP address as a next hop.";
-                  }
-                }
-                case mpls-over-ip-encapsulation {
-                  uses ip-header;
-                }
+                  "This is an IP address as a next hop.";
               }
+              uses ip-header;
             }
             case mpls {
+              description
+                "Use MPLS data plane for forwarding.";
               uses rt-types:mpls-label-stack;
             }
           }

2nd change  from an optional leaf of interface-ref to an optional leaf-list of interface-ref.   The current YANG allowed zero  or one interface per Application. Florian requested this be a list.  This allows an application to have zero, one or a set of interfaces.
This is the ingress followed by egress.   (with some cleanup of description text.)
@@ -1061,29 +1054,40 @@ module ietf-detnet {
               "RFC 9016 Sections
                4.1, 5.8";
           }
-          leaf interface {
+          leaf-list interface {
             type if:interface-ref;
             description
-            "Interface is used for any service type when
-             matching all flows to the interface.";
+            "Interface is optional for a service type. When
+             matching a flow to a single interface one
+             interface is specified. The list allows for
+             matching a subset of interfaces. When more
+             than one interfaces is specified, these
+             flows are simply aggregated and the service
+             sub-layer is unaware of the aggregation.";
           }
           uses data-flow-spec;
         } //End of app-ingress
         container egress {
           description
-            "Route's next-hop attribute.";
+            "Egress DetNet application flows or a compound flow.";
           uses data-flow-spec;
           choice application-type {
             description
               "This is the application type choices.";
             container ethernet {
               description
-                "This is TSN unaware traffic that maps to an
+                "This is Ethernet or TSN traffic that maps to an
                 interface.";
-              leaf interface {
+              leaf-list interface {
                 type if:interface-ref;
                 description
-                  "This is an Ethernet or TSN interfaces.";
+                  "This is one or more Ethernet or TSN interfaces.
+                   If multiple interfaces are specified, this
+                   application flow is replicated to those
+                   interfaces.  DetNet application Flow filtering
+                   applies to the whole list of interfaces.
+                   For fine grain flow filtering, use a single
+                   interface per application.";
               }
             }
             container ip-mpls {

3rd Change for a simple IP encapsulation of an Ethernet flow.   The option to directly forward a service sub-layer flow to a forwarding sub-layer was missing.   This is cleaner and aligns with other cases.

@@ -1188,6 +1192,18 @@ module ietf-detnet {
                  node or egress node.";
               uses detnet-flow-spec;
             }
+            container forwarding-sub-layer {
+              description
+                "This entry specifies one or more forwarding
+                 sub-layers. No or minimal service sub-layer
+                 encapsulation is allowed.";
+              leaf-list sub-layer {
+                type forwarding-sub-layer-ref;
+                config false;
+                description
+                  "List of outgoing forwarding sub-layers.";
+               }
+            }
           }
         }
         container outgoing {


Example of a TSN Ethernet flow arriving on two interfaces and encapsulated in DetNet IP UDP  Unidirectional Ingress - followed by DetNet Decapsulation back to TSN on two interfaces with changes,
In the example that follows the version 18 of the draft  XML data validated against the version 19 YANG generated schema.
The following is a version 19 example .

Ingress TSN Application ->service sub-layer-> forwarding sub-layer (UDP)
JSON:
    "app-flows": {
      "app-flow": [
        {
          "name": "app-1",
          "bidir-congruent": false,
          "outgoing-service": "ssl-1",
          "traffic-profile": "pf-1",
          "ingress": {
            "app-flow-status": "ietf-detnet:ready",  /*Before change  single ref */
            "interface": [                                               /*"interface": "eth0",  version 18*/
              "eth0",
              "eth1"
            ],
            "tsn-app-flow": {
              "vlan-id": 10
            }
          }
        }
      ]
    },
    "service": {
      "sub-layer": [
        {
          "name": "ssl-1",
          "service-rank": 10,
          "traffic-profile": "pf-1",
          "service-protection": {
            "protection": "ordering",
            "sequence-number-length": "short-sn"
          },
          "operation": "initiation",
          "incoming": {
            "app-flow": {
              "flow": [
                "app-1"
              ]
            }
          },
          "outgoing": {
            "forwarding-sub-layer": {   /* Option did not exist */
              "service-outgoing": [
                {
                  "index": 1,
                  "sub-layer": [
                    "fsl-1"
                  ]
                }
              ]
            }
          }
        }
      ]
    },
    "forwarding": {
      "sub-layer": [
        {
          "name": "fsl-1",
          "traffic-profile": "pf-4",
          "incoming": {
            "service-sub-layer": {
              "sub-layer": [
                "ssl-1"
              ]
            }
          },
          "outgoing": {
            "interface": {
              "src-ip-address": "192.0.2.8",       /* No change with removal of choice. */
              "dest-ip-address": "192.0.2.1",
              "protocol-next-header": 17,
              "dscp": 6,
              "source-port": 50000,
              "destination-port": 50001
            }
          }
        }
      ]
    }
  }

Forwarding Sub-layer -> Service Sub-layer -> Egress  TSN Application interfaces.
JSON:
    "app-flows": {
      "app-flow": [
        {
          "name": "app-1",
          "bidir-congruent": false,
          "incoming-service": "ssl-1",
          "traffic-profile": "pf-1",
          "ingress": {
            "app-flow-status": "ietf-detnet:ready"
          },
          "egress": {
            "tsn-app-flow": {
              "vlan-id": 10
            },
            "ethernet": {                         /* Before change  single ref */
              "interface": [                       /* "interface": "eth0",  version 18*/
                "eth0",
                "eth1"
              ]
            }
          }
        }
      ]
    },
    "service": {
      "sub-layer": [
        {
          "name": "ssl-1",
          "service-rank": 10,
          "traffic-profile": "pf-1",
          "service-protection": {
            "protection": "ordering",
            "sequence-number-length": "short-sn"
          },
          "operation": "termination",
          "incoming": {
            "forwarding-sub-layer": {
              "sub-layer": [
                "fsl-1"
              ]
            }
          },
          "outgoing": {
            "app-flow": {
              "flow": [
                "app-1"
              ]
            }
          }
        }
      ]
    },
    "forwarding": {
      "sub-layer": [
        {
          "name": "fsl-1",
          "traffic-profile": "pf-4",
          "incoming": {
            "forwarding-id": {
              "src-ip-prefix": "192.0.2.1/32",
              "dest-ip-prefix": "192.0.2.8/32"
            }
          },
          "outgoing": {
            "service-sub-layer": {
              "sub-layer": [
                "ssl-1"
              ]
            }
          }
        }
      ]
    }
  },

Please comment.
Thanks
Don