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

"Gengxuesong (Geng Xuesong)" <gengxuesong@huawei.com> Mon, 29 January 2024 06:15 UTC

Return-Path: <gengxuesong@huawei.com>
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 B037BC14F5FD; Sun, 28 Jan 2024 22:15:08 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -6.906
X-Spam-Level:
X-Spam-Status: No, score=-6.906 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_HI=-5, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01] autolearn=ham autolearn_force=no
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 djLHFPXK2car; Sun, 28 Jan 2024 22:15:06 -0800 (PST)
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 9E555C14F5F3; Sun, 28 Jan 2024 22:15:05 -0800 (PST)
Received: from mail.maildlp.com (unknown [172.18.186.31]) by frasgout.his.huawei.com (SkyGuard) with ESMTP id 4TNdH86Jgzz6J9y5; Mon, 29 Jan 2024 14:11:48 +0800 (CST)
Received: from lhrpeml500003.china.huawei.com (unknown [7.191.162.67]) by mail.maildlp.com (Postfix) with ESMTPS id 1FE58140516; Mon, 29 Jan 2024 14:15:02 +0800 (CST)
Received: from canpemm500005.china.huawei.com (7.192.104.229) by lhrpeml500003.china.huawei.com (7.191.162.67) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Mon, 29 Jan 2024 06:15:00 +0000
Received: from canpemm500010.china.huawei.com (7.192.105.118) by canpemm500005.china.huawei.com (7.192.104.229) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Mon, 29 Jan 2024 14:14:58 +0800
Received: from canpemm500010.china.huawei.com ([7.192.105.118]) by canpemm500010.china.huawei.com ([7.192.105.118]) with mapi id 15.01.2507.035; Mon, 29 Jan 2024 14:14:58 +0800
From: "Gengxuesong (Geng Xuesong)" <gengxuesong@huawei.com>
To: Reshad Rahman <reshad@yahoo.com>, Florian Kauer <florian.kauer@linutronix.de>, "draft-ietf-detnet-yang@ietf.org" <draft-ietf-detnet-yang@ietf.org>, "detnet@ietf.org" <detnet@ietf.org>, Don Fedyk <dfedyk@labn.net>
Thread-Topic: Changes of <draft-ietf-detnet-yang-18.txt> last call
Thread-Index: AdpJyyYPrJLPL0JiTmeZXQGyZ4HGtAAGJxqAAiWKIkA=
Date: Mon, 29 Jan 2024 06:14:58 +0000
Message-ID: <e70b4f0bbe07421b95f8a73a8c9957f2@huawei.com>
References: <PH7PR14MB53680967B965EA595EA1D9AFBB712@PH7PR14MB5368.namprd14.prod.outlook.com> <160373955.1770455.1705593353967@mail.yahoo.com>
In-Reply-To: <160373955.1770455.1705593353967@mail.yahoo.com>
Accept-Language: zh-CN, en-US
Content-Language: zh-CN
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-originating-ip: [10.112.41.43]
Content-Type: multipart/alternative; boundary="_000_e70b4f0bbe07421b95f8a73a8c9957f2huaweicom_"
MIME-Version: 1.0
Archived-At: <https://mailarchive.ietf.org/arch/msg/detnet/C6pcYBD37Y3ieKgJz06neTwvMmY>
Subject: Re: [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: Mon, 29 Jan 2024 06:15:08 -0000

Hi Don and all,

Apologies for the delay of response and there seems something wrong from my side for receiving email to the authors.
All the update looks good to me and thanks for modifying the document.

Best
Xuesong

From: Reshad Rahman [mailto:reshad@yahoo.com]
Sent: Thursday, January 18, 2024 11:56 PM
To: Florian Kauer <florian.kauer@linutronix.de>; draft-ietf-detnet-yang@ietf.org; detnet@ietf.org; Don Fedyk <dfedyk@labn.net>
Subject: Re: Changes of <draft-ietf-detnet-yang-18.txt> last call

Hi Don, all,

These changes look good to me, thanks for the follow-up.

Regards,
Reshad.

On Thursday, January 18, 2024, 12:02:50 AM EST, Don Fedyk <dfedyk@labn.net<mailto:dfedyk@labn.net>> wrote:



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