Re: [CCAMP] Thoughts on Flex-E YANG models

"Rob Wilton (rwilton)" <rwilton@cisco.com> Mon, 09 December 2019 15:46 UTC

Return-Path: <rwilton@cisco.com>
X-Original-To: ccamp@ietfa.amsl.com
Delivered-To: ccamp@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 03FF01208C1 for <ccamp@ietfa.amsl.com>; Mon, 9 Dec 2019 07:46:20 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -14.5
X-Spam-Level:
X-Spam-Status: No, score=-14.5 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_HI=-5, SPF_PASS=-0.001, USER_IN_DEF_DKIM_WL=-7.5] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=cisco.com header.b=K7EGu5U2; dkim=pass (1024-bit key) header.d=cisco.onmicrosoft.com header.b=0ypfnA3R
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 oC2OjCk_9HHN for <ccamp@ietfa.amsl.com>; Mon, 9 Dec 2019 07:46:16 -0800 (PST)
Received: from rcdn-iport-1.cisco.com (rcdn-iport-1.cisco.com [173.37.86.72]) (using TLSv1.2 with cipher DHE-RSA-SEED-SHA (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 63F87120866 for <ccamp@ietf.org>; Mon, 9 Dec 2019 07:46:15 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=cisco.com; i=@cisco.com; l=122970; q=dns/txt; s=iport; t=1575906375; x=1577115975; h=from:to:subject:date:message-id:references:in-reply-to: mime-version; bh=riwyHAzAHvCNIpDMBzHGW9Fc1AwQ8wSN6MkYDw/yO5w=; b=K7EGu5U2nPPcWEsdQ2nYCQsgpB5Af/HQlHTKkaQvzOVLyVcnYLon3gqd RUTSo8Ds5MwY5ZedRZZgJPV1tr5PIyfNm0EPnSfFPx/avJQMndOlqRzd4 IMBz2Ww8ObXX+I91wzXdgBapCbsYJEJqYtvACUX9jWnx6qh5sVqtiL4R9 k=;
IronPort-PHdr: =?us-ascii?q?9a23=3Ab+f1ARLuJy7fUqV7ANmcpTVXNCE6p7X5OBIU4Z?= =?us-ascii?q?M7irVIN76u5InmIFeBvad2lFGcW4Ld5roEkOfQv636EU04qZea+DFnEtRXUg?= =?us-ascii?q?Mdz8AfngguGsmAXFfkLfr2aCoSF8VZX1gj9Ha+YgBY?=
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: =?us-ascii?q?A0AODQCWa+5d/4QNJK1aChwBAQEBAQc?= =?us-ascii?q?BAREBBAQBAYF+gRwvJAUnBWxYIAQLKgqDeINGA4sBToIRmAWBQoEQA1AECQE?= =?us-ascii?q?BAQwBARgBCgoCAQGEQAIXggIkOBMCAw0BAQQBAQECAQUEbYU3DIVSAQEBAQM?= =?us-ascii?q?BARAIAQgKEwEBJQcEAgYPAgEGAhEEAQEhAQYDAgICJQsUCQgCBAESCBcDgwG?= =?us-ascii?q?BeU0DLgECDJBSkGQCgTiIYXWBMoJ+AQEFhRAYghcDBoE2jBgagUE/gRBIgU5?= =?us-ascii?q?+PoJkAQGBMAEHCwEhFQ8HCYJaMoIsjSdEgjyFUCSJLI4kcgqCLocjjl6CQod?= =?us-ascii?q?zhECLPY5KiEWRZgIEAgQFAg4BAQWBaSIqPXFwFTuCbFARFIxmgScBAoJJhRS?= =?us-ascii?q?FP3SBKIs3gSIBgQ8BAQ?=
X-IronPort-AV: E=Sophos;i="5.69,296,1571702400"; d="scan'208,217";a="677064161"
Received: from alln-core-10.cisco.com ([173.36.13.132]) by rcdn-iport-1.cisco.com with ESMTP/TLS/DHE-RSA-SEED-SHA; 09 Dec 2019 15:46:13 +0000
Received: from XCH-RCD-001.cisco.com (xch-rcd-001.cisco.com [173.37.102.11]) by alln-core-10.cisco.com (8.15.2/8.15.2) with ESMTPS id xB9FkD9A007244 (version=TLSv1.2 cipher=AES256-SHA bits=256 verify=FAIL); Mon, 9 Dec 2019 15:46:13 GMT
Received: from xhs-aln-003.cisco.com (173.37.135.120) by XCH-RCD-001.cisco.com (173.37.102.11) with Microsoft SMTP Server (TLS) id 15.0.1473.3; Mon, 9 Dec 2019 09:46:12 -0600
Received: from xhs-rtp-001.cisco.com (64.101.210.228) by xhs-aln-003.cisco.com (173.37.135.120) with Microsoft SMTP Server (TLS) id 15.0.1473.3; Mon, 9 Dec 2019 09:46:12 -0600
Received: from NAM10-DM6-obe.outbound.protection.outlook.com (64.101.32.56) by xhs-rtp-001.cisco.com (64.101.210.228) with Microsoft SMTP Server (TLS) id 15.0.1473.3 via Frontend Transport; Mon, 9 Dec 2019 10:46:12 -0500
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=lRQHLBPNxZupb8qhVUPMhQJkzYtOQjwsO5fTJvnVr97ER11wNFaaPvAsrmDqUBndCL7TATWMRnZfEG0vB6reWrT9hGDizQnrPdYHxQJuhJigmcLWzCAnDG7DmkXev6MA6kkXmeJR3Gkyw6dKTUBsBqe2o1QMhUFJ8+R20hCqLCnDZOLdOgCi9nUrBwBKQXzvJrFu5T1igNvDkf/SuQFeTzXtCvTzt1kKr/wYhUGbBeE1IREJnpnHKY00pEydh8x6Nx+LLOc/b2Xzy+UA6jpzJcdbYdSR0mJQjRopCtAPeM4D6ZlQnmkbm8stSZzsbci4ImJRRgBvqBhXGaBOylSx/g==
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-SenderADCheck; bh=riwyHAzAHvCNIpDMBzHGW9Fc1AwQ8wSN6MkYDw/yO5w=; b=nJkhAjHm4pl3oEgwnJtqxxQJaU9eYImFZZL1an/7/09K959G/k3g7x8WPYZLG882hcqzqHwOObJtkljjF1sDYMrG1xWtCgXypGL5oOeIOQE8ulHmHBQnlxEBI4HOP2D67hcoeKPKBM905pLNSyfAjN6qx/Zc8dm1qtFhZiGINUXGFWGx+Jz0OWm+BG/JvVohVMg1CewzjVxIpXq+zVEwlgYaVnRBJpTZdpzT3YzjzwUlv/3PGnK1TpB4HCPf5FMNrGoRVH2j7BV8G803WXxd1mbDPsGeQYTUYSP57vZgeY1wYNQJ1E/kTutrHxZvltA7eoPFo+4Ln67FOzPjWu+mMA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=cisco.com; dmarc=pass action=none header.from=cisco.com; dkim=pass header.d=cisco.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cisco.onmicrosoft.com; s=selector2-cisco-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=riwyHAzAHvCNIpDMBzHGW9Fc1AwQ8wSN6MkYDw/yO5w=; b=0ypfnA3Rm9U0qCwii8tKNfRZNflTyVqQQHAcD4as9N8OntkAKij0NpdqEiwzW5E3XKTMVd55HgXLARP2aztOrbe9g7Q3UgWODLX80XNZbIIClBUyW6Obh14me3XX5DY07pYPCPoAu/Bh6pnimLoTspMzI4E4BL35fkPJYuMXRsA=
Received: from MN2PR11MB4366.namprd11.prod.outlook.com (52.135.38.209) by MN2PR11MB3582.namprd11.prod.outlook.com (20.178.251.28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2516.12; Mon, 9 Dec 2019 15:46:10 +0000
Received: from MN2PR11MB4366.namprd11.prod.outlook.com ([fe80::8106:b538:2920:a44f]) by MN2PR11MB4366.namprd11.prod.outlook.com ([fe80::8106:b538:2920:a44f%5]) with mapi id 15.20.2516.018; Mon, 9 Dec 2019 15:46:10 +0000
From: "Rob Wilton (rwilton)" <rwilton@cisco.com>
To: "wang.qilei@zte.com.cn" <wang.qilei@zte.com.cn>, "jiangyuanlong@huawei.com" <jiangyuanlong@huawei.com>, "ccamp@ietf.org" <ccamp@ietf.org>
Thread-Topic: Re:[CCAMP] Thoughts on Flex-E YANG models
Thread-Index: AdWhDyWGrnTE6LENT0aWnLFB03XMUACLAReQABIq+LAAHwXQgAASASLAAAIvICAAC2Z+UAKE3dEAAANSVeA=
Date: Mon, 9 Dec 2019 15:46:10 +0000
Message-ID: <MN2PR11MB43666F4979E66A575951F4C7B5580@MN2PR11MB4366.namprd11.prod.outlook.com>
References: MN2PR11MB436635770A169EACDD7E0F54B5490@MN2PR11MB4366.namprd11.prod.outlook.com, MN2PR11MB43663484D7FA123131BD9BE6B5450@MN2PR11MB4366.namprd11.prod.outlook.com <201912092108289104878@zte.com.cn>
In-Reply-To: <201912092108289104878@zte.com.cn>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: spf=none (sender IP is ) smtp.mailfrom=rwilton@cisco.com;
x-originating-ip: [173.38.220.62]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: 57dae1b9-534a-4ec2-9f7f-08d77cbee9f5
x-ms-traffictypediagnostic: MN2PR11MB3582:
x-microsoft-antispam-prvs: <MN2PR11MB358215B7461A6FB53C7E9378B5580@MN2PR11MB3582.namprd11.prod.outlook.com>
x-ms-oob-tlc-oobclassifiers: OLM:10000;
x-forefront-prvs: 02462830BE
x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(136003)(39860400002)(346002)(376002)(366004)(396003)(189003)(199004)(52314003)(51444003)(64756008)(53546011)(790700001)(66446008)(66556008)(6506007)(186003)(66476007)(66946007)(8676002)(71190400001)(71200400001)(7696005)(76116006)(966005)(478600001)(30864003)(86362001)(229853002)(110136005)(26005)(5660300002)(55016002)(52536014)(316002)(2906002)(8936002)(9686003)(9326002)(81166006)(81156014)(33656002)(170073001)(559001)(569006); DIR:OUT; SFP:1101; SCL:1; SRVR:MN2PR11MB3582; H:MN2PR11MB4366.namprd11.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1;
received-spf: None (protection.outlook.com: cisco.com does not designate permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam: BCL:0;
x-microsoft-antispam-message-info: mOCeQn2gP6CSzG9ZBFD2EZNe/y4cKKSR7F8SwcbIogspSdmPexZMwl7x9s4TF5TOdIPJwExF1qcyfExPpNNBvqoIaMBMzhyXFoB/IMgnSY+GMjgWZlCC3B/fn03mU8jeGtkJdxe+OHQI7prSJzISCFybJoAYqn9OVeVLBSdMFokR8HT5VGS11Htz/73QOqiSLI9vizJaGTooWJzcNKgZJqYlINzvOFkMM2kG213XxxPeHtbkTptAxsFBxndGz5wYICofRzHs+ECrX3UILyb42CsOeZNX/lIMICsxECzlEfq+tHJmZ5EDE31J2HPNzS1j/ipWzqupLwi1etuuxFs/9AZVPPELfzJFMB8KrENbrfHITQsWRG4Don38UmBNkmWWNE69Ja4K8Joxbt3RKk2EL4zMaltjJF1uzi105dimUxnIfMSEybZeDfipsOwcZYKIuny1K7o2EOZ8iADT+dv6U37rEtCCTS4TOcJojD0TPb4SLMH64wbb//WiLuEKM8f1cRUUX3zSuAOYlABrKweqyVZ5y17rtMuPsWr0EmW3LGIx7uqCQgl19LA9hokUqr9kXhg8yzFlK7RI6hGvWnxhNgC+0GO17vHFe5B2Kf6pzXo=
x-ms-exchange-transport-forked: True
Content-Type: multipart/alternative; boundary="_000_MN2PR11MB43666F4979E66A575951F4C7B5580MN2PR11MB4366namp_"
MIME-Version: 1.0
X-MS-Exchange-CrossTenant-Network-Message-Id: 57dae1b9-534a-4ec2-9f7f-08d77cbee9f5
X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Dec 2019 15:46:10.4634 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 5ae1af62-9505-4097-a69a-c1553ef7840e
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: 0WPUhqJXuLwMijpihyVLfIU39llhIZ10t8stdVUAhpRk8rUVRTxHXKj0ZM8JG8GMEFygvRxsTUHjXgkJ12uzZw==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR11MB3582
X-OriginatorOrg: cisco.com
X-Outbound-SMTP-Client: 173.37.102.11, xch-rcd-001.cisco.com
X-Outbound-Node: alln-core-10.cisco.com
Archived-At: <https://mailarchive.ietf.org/arch/msg/ccamp/2NUTtCF3-Dofufl1dUbeZuBHo00>
Subject: Re: [CCAMP] Thoughts on Flex-E YANG models
X-BeenThere: ccamp@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Discussion list for the CCAMP working group <ccamp.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/ccamp>, <mailto:ccamp-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/ccamp/>
List-Post: <mailto:ccamp@ietf.org>
List-Help: <mailto:ccamp-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/ccamp>, <mailto:ccamp-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 09 Dec 2019 15:46:22 -0000

Hi Qilei,

Thanks for your comments.  Please see inline …

From: wang.qilei@zte.com.cn <wang.qilei@zte.com.cn>
Sent: 09 December 2019 13:08
To: Rob Wilton (rwilton) <rwilton@cisco.com>om>; jiangyuanlong@huawei.com
Cc: ccamp@ietf.org
Subject: Re:[CCAMP] Thoughts on Flex-E YANG models


Hi,



Sorry for the late reply.

We have reviewed the discussion about FlexE yang model in the maillist.

Thanks a lot for your reference FlexE-yang model, which helps understand the FlexE group, FlexE clients, slots and so on. Evenmore, some comments help for understanding the FlexE requirements, agreements/disagreements in the models.

Some differences in the models could be traced back to the differences in the respectively proposed requirements, for example, whether supports unidirectional FlexE client, whether FlexE instance should be considered in the model, etc. Maybe it's better to consider more application situations to understand the requirements, while not simplifying the requirements and hurrying to a concise model, which could not be applicable in some valuable situations.

[RW]

For me, the requirement of a standards based YANG model is to provide a configuration and operational YANG model that provides a clean and simple manageability interface for the OIF FlexE 2.0 IA.  At this stage I think that it should focus on doing the basic stuff well, but hopefully in a way that is extensible for vendor additions or future evolution of the standard.

I don’t think the model should be trying to go beyond the IA, assuming that vendors may/will augment the standards based YANG model with vendor specific extensions and options.



For the proposed skeleton model, we still have some different understanding about the relationship between FlexE client and FlexE group in the model. According to the description in FlexE-IA, the FlexE group and FlexE client could be configured separately, e.g., a new FlexE client does not need to be configured simultaneously with the FlexE group, it may not be flexible to use one FlexE group construct to include the list of FlexE client information.

[RW]

I’m not sure that the OIF IA is particularly specific on this, and one option might be to ask the OIF WG for clarification here.

However, from my reading of the spec, I see the document referring to adding and removing client interfaces to a FlexE group, but I see no mention of moving client interfaces from one FlexE group to another.  In addition, I don’t see any information specifying that client-ids must be unique across all groups on the FlexE shim, and I think that would be a requirement to really allow client interfaces to move to different FlexE groups.

So, my interpretation of the spec is that client-ids in the calendar are logically specific to a particular flex-e group, but equally the spec states that clients may use any value for clients except 0 and 65535.  Some implementations might be more restricted in what values that could use, which could potentially be expressed as a YANG ‘must’ statement that requires client-ids to be unique on a device.

In terms of configuration dependency, similar to Italo’s comments, it is possible to configure a group with clients, but no bonded-phys and add them later.  Given that management clients can choose an arbitrary group-id, this doesn’t seem to be particular restrictive.



In addition, there may exist another example that the switching of the carrier of FlexE client from one Group to another, in this case, change of the bonding relationship should be supported. In summary, from our understanding, decoupling the relationship between FlexE group and FlexE client would bring more flexibility.

[RW]

Yes, I completely agree that what you propose is more flexible, but is an increase in complexity by decoupling the client interfaces from the FlexE group.  It would also seem to have the potential to make deployment much harder.  E.g. what if a device had 100+ bonded connections to 100 devices.  Do we really want to require the client interface number to be unique across all flex-e groups?  What if those 100 devices have further flex-e connections to other devices?  I think that allowing the flex-e client number to be scoped outside of a flexE group will end up making the model much more difficult to manage and deploy across the network.

But I think that what you want to achieve could potentially be modelled completely outside of FlexE.  I.e. define a virtual Ethernet interface that can be bound to an underlying Ethernet interface (perhaps restricted to a FlexE client interface types if you wish). The model could then allow the binding from the virtual Ethernet interface to be moved to other FlexE client interfaces dynamically.  But I would recommend modelling this entirely separately from a base FlexE model.



There is another issue that we want to bring up, which is whether we need to configure the FlexE group as one interface. We can discuss about this. From our understanding, usually, when an interface is needed, there should have some strong requirements. For example, Ethernet LAG, the reason that we think to configure it as an interface is some traffic need to be switched directly to this interface, and obviously, this interface should be able to effect the routing of the traffic. But for FlexE group interface, the only use of this interface is to put FlexE client over it, and this interface only exists in the Ethernet PCS module, which need not be seen by others, so we are not sure whether an interface for FlexE group is needed.

[RW]

This issue I have more sympathy for.  I also questioned in my mind whether modelling these as interfaces was the right thing to do, but in the end convinced myself that modelling them as interfaces is probably the better choice.

I completely agree that a FlexE group doesn’t directly carry client traffic (and hence in that way it is different from a LAG interface), but for me it still something that looks and feels like a L1 interface object, and I believe that many vendors have traditionally modelled similar things (e.g. OTN layers) as interfaces in MIBs.  E.g. I think that quite a lot of the interface types in iana-if-types.yang refer to lower layer interface objects that wouldn’t necessarily directly carry packets.

The other potential benefit of modelling them as interfaces is that I believe that the FlexE Shim is very tightly bound to the hardware.  E.g. all member of a FlexE group probably have to be on the same linecard, perhaps even the same NPU chip.  The use of interfaces, with an appropriate location specifier in the name may make it easier for clients to mentally associate a FlexE group to a particular hardware location.  Probably not a critical benefit, but helpful nevertheless.

Thanks,
Rob



Thanks

Qilei (on behalf of Xiaobing)






原始邮件
发件人:RobWilton(rwilton) <rwilton@cisco.com<mailto:rwilton@cisco.com>>
收件人:Jiangyuanlong <jiangyuanlong@huawei.com<mailto:jiangyuanlong@huawei.com>>;ccamp@ietf.org <ccamp@ietf.org<mailto:ccamp@ietf.org>>;
日 期 :2019年11月27日 01:34
主 题 :Re: [CCAMP] Thoughts on Flex-E YANG models
_______________________________________________
CCAMP mailing list
CCAMP@ietf.org<mailto:CCAMP@ietf.org>
https://www.ietf.org/mailman/listinfo/ccamp
Hi Yuanlong,

Okay.  I think that we seem to be in rough alignment on the overall structure.

I think that the next steps are to wait for comments from Xiaobing and Qilei to see if this top level structure would be an acceptable starting point to then try on the detailed configuration.

In case it helps, the updated YANG is here: https://github.com/rgwilton/flex-e-yang/blob/master/ietf-if-flex-e.yang

Thanks,
Rob

From: Jiangyuanlong <jiangyuanlong@huawei.com<mailto:jiangyuanlong@huawei.com>>
Sent: 26 November 2019 12:39
To: Rob Wilton (rwilton) <rwilton@cisco.com<mailto:rwilton@cisco.com>>; ccamp@ietf.org<mailto:ccamp@ietf.org>
Subject: RE: Thoughts on Flex-E YANG models

Rob,

Sometimes we do things faster than we think;)
Please see my further comments inline prefixed with[Jiang2].

Thanks,
Yuanlong


From: Rob Wilton (rwilton) [mailto:rwilton@cisco.com]
Sent: Tuesday, November 26, 2019 7:24 PM
To: Jiangyuanlong <jiangyuanlong@huawei.com<mailto:jiangyuanlong@huawei.com>>;ccamp@ietf.org<mailto:ccamp@ietf.org>
Subject: RE: Thoughts on Flex-E YANG models

Sorry, I accidentally hit send on my last email before typing anything!

Please see some further comments [RW] inline …

From: Jiangyuanlong <jiangyuanlong@huawei.com<mailto:jiangyuanlong@huawei.com>>
Sent: 26 November 2019 03:05
To: Rob Wilton (rwilton) <rwilton@cisco.com<mailto:rwilton@cisco.com>>;ccamp@ietf.org<mailto:ccamp@ietf.org>
Subject: RE: Thoughts on Flex-E YANG models

Rob,

I believe we are quite aligned in the abstract structure of the FlexE model.
Please see my further comments inline prefixed with[Jiang1].

Thanks again,
Yuanlong

From: Rob Wilton (rwilton) [mailto:rwilton@cisco.com]
Sent: Monday, November 25, 2019 11:40 PM
To: Jiangyuanlong <jiangyuanlong@huawei.com<mailto:jiangyuanlong@huawei.com>>;ccamp@ietf.org<mailto:ccamp@ietf.org>
Subject: RE: Thoughts on Flex-E YANG models

Hi Yuanlong,

Please see [RW] comments inline …

From: Jiangyuanlong <jiangyuanlong@huawei.com<mailto:jiangyuanlong@huawei.com>>
Sent: 25 November 2019 03:54
To: Rob Wilton (rwilton) <rwilton@cisco.com<mailto:rwilton@cisco.com>>;ccamp@ietf.org<mailto:ccamp@ietf.org>
Subject: RE: Thoughts on Flex-E YANG models

Hi Rob,

Thank you  a lot for your comments, they are very helpful.
Please see my further comments inline.

Cheers,
Yuanlong

From: CCAMP [mailto:ccamp-bounces@ietf.org]On Behalf Of Rob Wilton (rwilton)
Sent: Friday, November 22, 2019 11:01 PM
To: ccamp@ietf.org<mailto:ccamp@ietf.org>
Subject: [CCAMP] Thoughts on Flex-E YANG models

Hi,

I have some general thoughts on modelling Flex-E in YANG that may help the authors converge.  These comments mostly relate to what I would call the overall shape of the YANG model rather specific configuration (which I think can probably be sorted out once the shape has been agreed).

1.     Flex-E groups should be identified by their group-number (both models seem to do this, but the group number seems to be optional in one model)
2.     The configuration to identify the bonded phys should be under the flex-e group (both models do this).
[Jiang] Agreed to both...

3.     In the flex-e group’s bonded-phy interface configuration list, bonded-phy interface list entries could be keyed either by the bonded phy interface name, or the flex-e phy number.
a.     I would suggest that the bonded-phy interface name is the more meaningful identifier to clients.
[Jiang] Just to be clear, are your saying that the list of flexe-phy should be keyed by the interface name? I think in our model, current key “flexe-phy-if” is exactly the PHY interface name, as shown in RFC 8343:
“     typedef interface-ref {
       type leafref {
         path "/if:interfaces/if:interface/if:name";
”
[RW]
Yes.

b.     Either way, the entries should also indicate the binding to the bonded-phy interface (e.g. by an interface-ref – both models seem to do this).
4.     The configuration required to define the client interfaces associated with a flex-e group should be under the flex-e group list entry, based on the assumption that that 16 bit client id must be unique within the group rather than across groups.
[Jiang] Totally agreed...

5.     In the flex-e group’s client interface configuration list, client interface list entries could be keyed either by the client interface name, or the client id.
a.     Again, I would suggest that using the client interface name is the more meaningful identifier for clients.
[Jiang] Earlier we already planned to use “flexe-client-if” as the key to flexe-client-list. Could this resolve your comment?
[RW]
Yes, I think so.  It would be an interface-ref, similar to bonded-phy interface-ref.

However, I think that there is probably a slight difference in semantics:

In the case of the interface-ref for bonded phys, semantically it should probably be “require-instance true” (which is the default behaviour).  I.e. for the flex group configuration to be valid, it makes sense for the referenced bonded-phy interfaces to also exist in the configuration.

But in the case of the interface-ref for client interfaces, I think that it should be “require-instance false”...  This is because the flex-e client interface configuration defines the parameters to create the client interface but should not require that the client interface to exist in the configuration at the same time (even if that may often be the case).

[Jiang1] Agreed. My colleague Italo also expressed such an opinion during ITU-T Q14/SG15 interim meeting not long ago.

b.     Either way, the entries should also indicate the binding to the client interface (by interface-ref – both models seem to do this).
6.     Client interfaces should be modelled as regular interfaces, and use the normal iftype for Ethernet interfaces, i.e. the dubiously named iftype:ethernetCsmacd.  Without using this type regular Ethernet YANG configuration (e.g. as defined in 802.3.2) won’t work properly.
a.     I don’t think that there should be flex-e specific configuration under the client interface itself, instead, the flex-e specific configuration should be defined as part of the group + client interfaces.
[Jiang] Agreed to bullet a). But I have some doubts whether we can use the normal iftype for Ethernet interfaces directly. As FlexE Client includes only a thin MAC layer, while PHY layer is decoupled into the FlexE PHY, FlexE client management should be simpler than the regular Ethernet YANG configuration, furthermore, it seems to me all the YANG models defined in 802.3 or 802.2 more or less include some PHY configuration which cannot be applied to a FlexE client. Nevertheless, we look forward to seeing more discussions on this topic.
[RW]
From the rest of the system perspective, a client interface really should look/feel like a regular physical Ethernet interface, and I think that the majority of the 802.3.2 configuration/statistics should apply.  Auto-neg, duplex, speed shouldn’t be configurable, but then they can’t be configured on most higher speed optical interfaces anyway.  I would have thought that the rest of the module should apply (otherwise this Ethernet configuration would need to be duplicated in another module, which isn’t ideal).
[Jiang1] If a reference model can work, that will be better for sure.

But I think that the main issue to resolve is whether Flex-E group configuration is global or scoped to a FlexE group interface.  I can see pros and cons both ways:
1.     Putting the configuration under an FlexE group interface seems like a slightly artificial construct.
2.     However, this does mirror how LAG interfaces are represented (at least in our vendor model), and in some ways FlexE interfaces could be considered to be like an L1 LAG interface.  However, in the LAG case, the LAG interface can forward traffic, where as for FlexE groups, this would not be the case.
3.     There is probably a natural binding between a FlexE group and the client interfaces that closely relates to the parent child relationship between an interface and sub-interface.  E.g. disabling a FlexE group should have the effect of disabling each FlexE client interface.
4.     My overall feeling is that representing the FlexE groups as a type of interface seems like a reasonable configuration model.
[Jiang] Totally agreed...
[RW]
Note, I have made an assumption here that it is reasonable to represent the L1 layer of an interface as an entry in if:interfaces/if:interface.  It is worth noting that not all configuration/state in ietf-interfaces would apply sensibly to an L1 interface representation.  In particular, none of the statistics would seem to apply to the physical layer.
[Jiang1] That is true indeed.

Anyway, hopefully these comments are useful to help the two sets of authors converge towards a common model.  I have other suggestions on the specific models but would suggest solving the big picture issues first.
[Jiang] Very useful indeed, we look forward to your further suggestions on the models.
[RW]
Thanks.  It would also be useful to see comments from other members of the WG, in particular, the authors of the draft-xiaobn-ccamp-flexe-yang-mod-03.

[Jiang1] Yes, we also hope to see more inputs from the WG.
In case it helps, here is the pyang tree output of the structure that I believe is most suitable to represent Flex-E interfaces:

module: ietf-if-flex-e
  augment /if:interfaces/if:interface:
    +--rw flex-e
       +--rw group
          +--rw group-number              uint32
          +--rw more-group-config-here?   string
          +--rw bonded-phy* [name]
          |  +--rw name                           if:interface-ref
          |  +--rw phy-number?                    uint8
          |  +--rw more-bonded-phy-config-here?   string
          +--rw client-interface* [name]
             +--rw name                              if:interface-ref
             +--rw id?                               uint16
             +--rw more-flex-e-client-config-here?   String


[Jiang1] Not sure we need both “flex-e” and “group” the same time (a little redundant in the structure IMO), otherwise I believe we are fully aligned in the overall structure.

[RW]
So this is a relatively minor point, and I could go either way on this.

From my perspective it is ‘nice’ from a modelling perspective if the configuration for a particular feature is under a single container:
-       It makes it easier to either just get that configuration, or to filter it out if it is not wanted.
-       It is easier for clients to immediately relate the configuration back to a particular feature/protocol.

E.g., if it is plausible that there is any need for any device-global flex-e configuration, then I would propose putting that under a single top-level flex-e container...

Equally, if there could ever be flex-e configuration on a flex-e-group interface that isn’t specific to the group then having the extra layer in the hierarchy is cleaner.  However, that this seems unlikely in this case, given that the interface represents a flex-e group …
[Jiang2] Yes, we had considered this option too. BTW, if such global inter-group FlexE configurations are found later, we can still follow this approach.

Another choice could be to only have a single layer of hierarchy, but call the top level container “flex-e” rather than “flex-e-group”, e.g. :

module: ietf-if-flex-e
  augment /if:interfaces/if:interface:
    +--rw flex-e
       +--rw group-number              uint32
       +--rw more-group-config-here?   string
       +--rw bonded-phy* [name]
       |  +--rw name                           if:interface-ref
       |  +--rw phy-number?                    uint8
       |  +--rw more-bonded-phy-config-here?   string
       +--rw client-interface* [name]
          +--rw name                              if:interface-ref
          +--rw id?                               uint16
          +--rw more-flex-e-client-config-here?   string

[Jiang2] Currently, I think this is a somewhat more graceful approach.


I don’t know whether phy-number and id should be mandatory.  I.e. always defined, or whether it is feasible that these could be automatically allocated by the device.

[Jiang1] phy-number and client id are mandatory. They can be configured in most use cases, but for static configuration as described in FlexE IA, they can be fixed (i.e., determined by the device), that means, they may be read-only.

[RW]
Okay, so from a YANG perspective, I think that makes them “mandatory false”, since they don’t have to be configured.  The description statements should make it clear that these fields must be provided in the operational datastore.
[Jiang2] Points taken. We can discuss more details on respective attributes if the WG could have an agreements on the overall structure.

Thanks,
Rob

Of course, I have excluded any specific configuration options.  I would suggest trying to get agreement on the overall structure (i.e. the shape of the YANG model) first.

The YANG model that this is built from is available at:https://github.com/rgwilton/flex-e-yang/blob/master/ietf-if-flex-e.yang

Regards,
Rob


Regards,
Rob