HI Mahesh,

Thanks for the review.
We have only given quick answers for the moment – Scott and I will need in 
Madrid (Tuesday morning) to meet/propose text and then give you more concrete 
answers and text proposals, so please expect a more detailed follow up.
From: Mahesh Jethanandani <mjethanand...@gmail.com>
Date: Saturday, 26 April 2025 at 00:19
To: draft-ietf-netmod-intf-ext-yang....@ietf.org 
<draft-ietf-netmod-intf-ext-yang....@ietf.org>
Cc: NETMOD Group <netmod@ietf.org>
Subject: AD review of draft-ietf-netmod-intf-ext-yang-16
Hi Authors,

Thanks first of all for working on this document. It has been a long time 
coming.

Please see my comments on the document, which I hope will go towards improving 
the document.

-------------------------------------------------------------------------------
COMMENT
-------------------------------------------------------------------------------

Section 2.5, paragraph 0
>    A maximum frame size configuration leaf (max-frame-size) is provided
>    to specify the maximum size of a layer 2 frame that may be
>    transmitted or received on an interface.  The value includes the
>    overhead of any layer 2 header, the maximum length of the payload,
>    and any frame check sequence (FCS) bytes.  If configured, the max-
>    frame-size leaf on an interface also restricts the max-frame-size of
>    any child sub-interfaces, and the available MTU for protocols.

If we are providing the ability to configure maximum frame size, should we 
providing a counter for packets that are discarded because the max size was 
exceeded?
This one probably needs a bit more thought/discussion.

For Ethernet interfaces, there is already the in-error-oversize-frames counter 
defined in 802.3.2.  For other interfaces, I suspect that this would mostly be 
caught by an MRU/MTU check.
Hence, we don’t think that adding another counter is the right approach because 
it likely wouldn’t be enforced.  Normally, this would be handled at other 
forwarding layers, if required.


Section 2.6, paragraph 0
>    The sub-interface feature specifies the minimal leaves required to
>    define a child interface that is parented to another interface.

I find the definition of sub-interface to be under specified. For example, if 
an implementation wants to enable configuration of a sub-interface that takes a 
ip-address, how would they go about it? And how would that relationship be tied 
to the parent-interface definition here? An example that shows how this can be 
enabled can go a long way in making this draft very useful for addressing a 
very common implementation.
Ah, yes.  You are right, this document doesn’t contain an example, but 
draft-ietf-netmod-sub-intf-vlan-model does.  Possibly referencing that document 
as an example would be helpful.  Or the example could be reproduced in this 
document as well.

We’ll also check whether any more descriptive prose or additional text in the 
model is needed.


The document introduces the concept of a sub-interface as a logical interface 
that handles a subset of the traffic received by the parent interface. However, 
it stops short of defining a container for it that could contain attributes 
specific to the sub-interface.

As I see it, the sub-interface will need some kind of index or id that uniquely 
identifies it. That index or id can come in the form of VLAN. To configure the 
VLAN, the ietf-if-vlan-encapsulation model could be used except that it 
dot1q-vlan is at an interface level, not at a sub-interface level. Similarly, 
if an ip-address needs to configured, ietf-ip module could have been used, but 
like the vlan encapsulation, the IP address can only be specified at the 
interface level.
This is common implementation, but this model and other related models fall 
short of supporting such an implementation.
The key part of the design of this model is that a sub-interface is just a type 
of interface, which appears in the standard list of interfaces.

E.g., you might have an entry called “Ethernet0/1” in the interfaces list, and 
an entry called “Ethernet0/1.1” in the interface list that represents a 
sub-interface of “Ethernet0/1”.  It would have type l2vlan, a parent-interface 
of “Ethernet0/1”.

Hence, the VLAN encapsulation would be configured under the “Ethernet0/1.1” 
entry in the interface list, as would the IP address, using the ietf-ip YANG 
model with no additional changes required.

Note, the approach in this draft differs from OpenConfig where a sub-interface 
is not an interface object, but a different object in the data model that 
exists in a different list under the interface.
The benefit of the approach in this draft, is that all other models that add 
functionality or reference interfaces just work with sub-interfaces without 
needing any changes.


If this document considers all the work of defining a sub-interface to be 
out-of-scope, it should remove this section and let another document define it.
No, this using this draft and the dot1q draft (for the case of VLAN 
sub-interfaces) should be sufficient for configuring L2 and L3 VLAN 
sub-interfaces.
They should also be sufficient for generically modelling other types of 
sub-interfaces, although other sub-interface specific fields may be required or 
useful (e.g., as per the draft-ietf-netmod-sub-intf-vlan-model that adds in the 
extra properties for VLAN sub-interfaces).


Section 2.7, paragraph 1
>    The forwarding mode leaf provides additional information as to what
>    mode or layer an interface is logically operating and forwarding
>    traffic at.  The implication of this leaf is that for traffic
>    forwarded at a given layer that any headers for lower layers are
>    stripped off before the packet is forwarded at the given layer.
>    Conversely, on egress any lower layer headers must be added to the
>    packet before it is transmitted out of the interface.

I am assuming that 'forwarding-mode' applies to both the physical as well as 
the logical (sub-interface) level. Can that be made clear? Also, if we are 
identifying the forwarding mode, can it support counters related to them, e.g., 
VLAN discards or IP discards etc.?
For the first part of your question, we could do, but that might be best done 
in the example, rather than in the normative text.  Explicitly calling out that 
this configuration also applies to sub-interface may make it appear to be 
special in some way, as opposed to all regular interface augmentations also 
applying to sub-interfaces because they are just another type of interface.

For your second question, I think that it would be best covered by forwarding 
specific counters.  E.g., IETF interfaces already defined an in-unknown-protos. 
 An IP forwarding model should have an invalid destination IP address, the 
L2VPN model could report drops due to unknown MAC address (or perhaps VLAN) 
depending on whether the MAC address are dynamically learned or not.


Section 4, paragraph 9
>        "WG Web:   <http://tools.ietf.org/wg/netmod/>


Please update the link to the datatracker link.
Will do, thanks.


Section 4, paragraph 26
>          presence
>            "Enable interface link flap dampening with default settings
>             (that are vendor/device specific).";

Not clear on how "default settings" can be vendor/device specific? Are default 
values not specified in the model with the vendor/device overriding the default 
values if necessary?
We think that it may be hard to get exact agreement on what these default 
settings should be because they are not defined by any IETF protocol and are 
likely to differ by vendor.  In these sorts of cases the OpenConfig group, who 
have more deployment experience, seem to have reached the conclusion that it is 
better to leave such defaults out of the models.

As you say, this still leaves the choice to the vendors to augment in their 
default values if they wish.


Section 4, paragraph 26
>          leaf half-life {
>            type uint32;
>            units seconds;
>            description
>              "The time (in seconds) after which a penalty would be half
>               its original value.  Once the interface has been assigned
>               a penalty, the penalty is decreased at a decay rate
>               equivalent to the half-life.  For some devices, the
>               allowed values may be restricted to particular multiples
>               of seconds.  The default value is vendor/device
>               specific.";
>            reference "RFC XXXX, Section 2.3.2 Half-Life Period";
>          }

Same comment as above.
Thanks.  Answer also as above.


Section 5, paragraph 8
>        "WG Web:   <http://tools.ietf.org/wg/netmod/>

Please update the link to the datatracker link.
We will do.


Section 5, paragraph 18
>        leaf in-pkts-64-octets {
>          type yang:counter64;
>          units frames;
>          description
>            "The total number of packets (including bad packets)
>             received that were 64 octets in length (excluding framing
>             bits but including FCS octets).

Is the unit "frames" or "packets"? The description uses "packets". Can we be 
consistent?

Good catch.  Probably using packets is fine, and this would be consistent with 
the equivalent counters in RFC 2819.


Section 6.1, paragraph 2
>    {
>      "ietf-interfaces:interfaces": {
>        "interface": [
>          {
>            "name": "eth0",
>            "type": "iana-if-type:ethernetCsmacd",
>            "oper-status": "up",
>            "statistics": {
>              "discontinuity-time": "2023-12-15T09:04:00-05:00"
>            },
>            "ietf-if-extensions:link-flap-suppression": {
>              "down": 0,
>              "up": 50
>            }
>          }
>        ]
>      }
>    }

Thanks for extensive and useful complete examples. It would be helpful if these 
were tagged with <CODE START> and <CODE ENDS> tag to enable extraction of them 
from the document and validate them against the model.

We will add these.


Section 6.3, paragraph 6
>    {
>      "ietf-interfaces:interfaces": {
>        "interface": [
>          {
>            "name": "eth0",
>            "type": "iana-if-type:ethernetCsmacd",
>            "phys-address": "00:00:5E:00:53:30",
>            "oper-status": "up",
>            "admin-status": "up",
>            "if-index": 1,
>            "ietf-if-ethernet-like:ethernet-like": {
>               "mac-address": "00:00:5E:00:53:30",
>               "bia-mac-address": "00:00:5E:00:53:30"
>            },
>            "statistics": {
>              "discontinuity-time": "2023-12-15T09:04:00-05:00"
>            }
>          }
>        ]
>      }
>    }
>
>    The following example shows the intended configuration for interface
>    eth0 with an explicit MAC address configured.
>
>    {
>      "ietf-interfaces:interfaces": {
>        "interface": [
>          {
>            "name": "eth0",
>            "type": "iana-if-type:ethernetCsmacd",
>            "ietf-if-ethernet-like:ethernet-like": {
>               "mac-address": "00:00:5E:00:53:30"
>            }
>          }
>        ]
>      }
>    }
>
>    After the MAC address configuration has been successfully applied,
>    the operational state datastore reporting the interface MAC address
>    properties would contain the following, with the mac-address leaf
>    updated to match the configured value, but the bia-mac-address leaf
>    retaining the same value - which should never change.
>
>    {
>      "ietf-interfaces:interfaces": {
>        "interface": [
>          {
>            "name": "eth0",
>            "type": "iana-if-type:ethernetCsmacd",
>            "phys-address": "00:00:5E:00:53:35",
>            "oper-status": "up",
>            "admin-status": "up",
>            "if-index": 1,
>            "ietf-if-ethernet-like:ethernet-like": {
>               "mac-address": "00:00:5E:00:53:35",
>               "bia-mac-address": "00:00:5E:00:53:30"
>            },
>            "statistics": {
>              "discontinuity-time": "2023-12-15T09:04:00-05:00"
>            }
>          }
>        ]
>      }
>    }


These examples are confusing, if they are related, as it appears from the 
description. Maybe part of the confusion is stemming from the fact that same 
MAC addresses are reused in the example.

The first example is that of the operational datastore before any config is 
applied and shows both "mac-address" and "bia-mac-address" as 
"00:00:5E:00:53:30”.

The second example is of for intended configuration datastore and is trying to 
set the "mac-address" to "00:00:5E:00:53:30". Could a different MAC address be 
used here to demonstrate the change, e.g., "00:00:5E:00:53:35" or something 
other than what is already showed in the first example.


The third example appears to be the state of the operational datastore once the 
above configuration is applied. According to the example, the "mac-address" 
does not seem to have changed from before because the address being configured 
is "00:00:5E:00:53:30", while the operational datastore is showing the 
mac-address as "00:00:5E:00:53:35". On the other hand, the bia-mac-address 
seems to have changed to "00:00:5E:00:53:30" because that is the address that 
is configured in the config example, when BIA MAC addresses are never supposed 
to change.

Good catch.  I think that there is a mistake in the examples, the intention was 
that the :35 was used for the configured MAC address.  With that change, I 
think that the examples all become consistent with each other.


Section 9, paragraph 0
>    The YANG module defined in this memo is designed to be accessed via
>    the NETCONF protocol RFC 6241 [RFC6241].  The lowest NETCONF layer is
>    the secure transport layer and the mandatory to implement secure
>    transport is SSH RFC 6242 [RFC6242].  The NETCONF access control
>    model RFC 8341 [RFC8341] provides the means to restrict access for
>    particular NETCONF users to a pre-configured subset of all available
>    NETCONF protocol operations and content.

Please update this to reflect the latest changes in the template as documented 
in rfc8407bis.

We will do.


-------------------------------------------------------------------------------
NIT
-------------------------------------------------------------------------------

All comments below are about very minor potential issues that you may choose to
address in some way - or ignore - as you see fit. Some were flagged by
automated tools (via https://github.com/larseggert/ietf-reviewtool), so there
will likely be some false positives. There is no need to let me know what you
did with these suggestions.

Section 1, paragraph 3
>    Several of the augmentations defined here are not backed by any
>    formal standard specification.  Instead, they are for features that
>    are commonly implemented in equivalent ways by multiple independent
>    network equipment vendors.  The aim of this document is to define
>    common paths and leaves for the configuration of these equivalent
>    features in a uniform way, making it easier for users of the YANG
>    model to access these features in a vendor independent way.  Where
>    necessary, a description of the expected behavior is also provided
>    with the aim of ensuring vendors implementations are consistent with
>    the specified behavior.

RFC 7950 does not use leaves. When referring to the plural of leaf, it uses 
leafs. I would suggest:

s/leaves/leafs/

in this paragraph and the rest of the document.
We will change.


Section 4, paragraph 11
>        "This module contains common definitions for extending the IETF
>         interface YANG model (RFC 8343) with common configurable layer 2
>         properties.

Maybe one too many "common" occurances in the above statement?

We will elide the first “common”.


Section 4, paragraph 48
>             Discontinuities in the values of this counter can occur at
>             re-initialization of the management system, and at other
>             times as indicated by the value of the 'discontinuity-time'
>             leaf defined in the ietf-interfaces YANG module
>             (RFC 8343).
>              ";

Does the closing quote and semicolon need to be on a newline?

We will fix.


These URLs point to tools.ietf.org, which has been taken out of service:

 * http://tools.ietf.org/wg/netmod/

We will fix to point to datatracker.


Section 2, paragraph 12
> tate transition that occurs and reverts back within the specified time inter
>                                 ^^^^^^^^^^^^
Consider using just "reverts".

Section 4, paragraph 28
> specific. The penalty value for a link up->down state change is 1000 units."
>                                   ^^^^^^^
When "link-up" is used as a noun or modifier, it needs to be hyphenated.

Section 4, paragraph 28
> specific. The penalty value for a link up->down state change is 1000 units."
>                                   ^^^^^^^
When "link-up" is used as a noun or modifier, it needs to be hyphenated.

Section 4, paragraph 39
> f the number of frames that were well formed, but otherwise discarded because
>                                  ^^^^^^^^^^^
This word is normally spelled with a hyphen.

This I think is for well-formed.  We will fix.


Section 5, paragraph 31
> iption "The 'burnt-in' MAC address. I.e the default MAC address assigned to
>                                     ^^^
The abbreviation "i.e." (= that is) requires two periods.

Section 5, paragraph 33
> f the number of frames that were well formed, but otherwise discarded because
>                                  ^^^^^^^^^^^
This word is normally spelled with a hyphen.

We will fix these.  Thanks for the careful review.
Kind regards,
Scott & Rob



Mahesh Jethanandani
mjethanand...@gmail.com
_______________________________________________
netmod mailing list -- netmod@ietf.org
To unsubscribe send an email to netmod-le...@ietf.org

Reply via email to