Re: [netmod] I-D Action: draft-ietf-netmod-acl-model-17.txt

"Acee Lindem (acee)" <> Wed, 14 March 2018 22:12 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id C533412D7EA for <>; Wed, 14 Mar 2018 15:12:49 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -14.53
X-Spam-Status: No, score=-14.53 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, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, SPF_PASS=-0.001, T_RP_MATCHES_RCVD=-0.01, USER_IN_DEF_DKIM_WL=-7.5] autolearn=ham autolearn_force=no
Authentication-Results: (amavisd-new); dkim=pass (1024-bit key)
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id 6FFvppohJpEb for <>; Wed, 14 Mar 2018 15:12:45 -0700 (PDT)
Received: from ( []) (using TLSv1.2 with cipher DHE-RSA-SEED-SHA (128/128 bits)) (No client certificate requested) by (Postfix) with ESMTPS id 0CFCB12D77B for <>; Wed, 14 Mar 2018 15:12:45 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple;;; l=209142; q=dns/txt; s=iport; t=1521065564; x=1522275164; h=from:to:cc:subject:date:message-id:references: in-reply-to:mime-version; bh=QmfNRt0irSfj9CuUDyqwPfgZKn1HQ7WK7rCMWNDI8oE=; b=ErdEObGzQcHIzZ3SxuB1lhZ+mdY5Q5k3PmpwVbzuy21PnBdRSO/DgJBE JRUynRagmUNIaSjVz2Y12I2wrYvMmPhe2a/gVLes8iZIfGXqFvq1r2E5h T7sIqQfC1qx/Jw6f7Vqjfrp3T3FI40vhVyrxpi46RWUPhdTdxWeZHbL5O 0=;
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: =?us-ascii?q?A0ARAQAonala/40NJK1eGQEBAQEBAQEBA?= =?us-ascii?q?QEBAQcBAQEBAYJaSS1lcCgKg0aKGo10ggOBFockjRIUgX8KIoRuAhqDDCE0GAE?= =?us-ascii?q?CAQEBAQEBAmsohSUBAQEBAxoBCARHCxACAQgOAwMBAiEBBgMCAgIfERQJCAIED?= =?us-ascii?q?gWENEwDFQ+uBYFsOocnDYEwggqFLoIUgygogniCWkQCAgEYgSUOHxkWCIJKMII?= =?us-ascii?q?yBIkCijWGbDEJAoZEgwyDWIM2gWNOg2eDEYUyh3aCBjmGcAIREwGBKwEeOIFSc?= =?us-ascii?q?BUZISoBghgJgiocgQMBC40RdwEBjRsBJQeBA4EYAQEB?=
X-IronPort-AV: E=Sophos;i="5.48,307,1517875200"; d="scan'208,217";a="367878566"
Received: from ([]) by with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 14 Mar 2018 22:12:42 +0000
Received: from ( []) by (8.14.5/8.14.5) with ESMTP id w2EMCgHO020448 (version=TLSv1/SSLv3 cipher=AES256-SHA bits=256 verify=FAIL); Wed, 14 Mar 2018 22:12:42 GMT
Received: from ( by ( with Microsoft SMTP Server (TLS) id 15.0.1320.4; Wed, 14 Mar 2018 18:12:41 -0400
Received: from ([]) by ([]) with mapi id 15.00.1320.000; Wed, 14 Mar 2018 18:12:41 -0400
From: "Acee Lindem (acee)" <>
To: Mahesh Jethanandani <>
CC: Kent Watsen <>, NETMOD WG <>
Thread-Topic: [netmod] I-D Action: draft-ietf-netmod-acl-model-17.txt
Date: Wed, 14 Mar 2018 22:12:41 +0000
Message-ID: <>
References: <> <> <> <> <> <> <> <> <> <>
In-Reply-To: <>
Accept-Language: en-US
Content-Language: en-US
x-ms-exchange-messagesentrepresentingtype: 1
x-ms-exchange-transport-fromentityheader: Hosted
x-originating-ip: []
Content-Type: multipart/alternative; boundary="_000_CE91DDC8F13648CA9FB5DB6B200CE2FEciscocom_"
MIME-Version: 1.0
Archived-At: <>
Subject: Re: [netmod] I-D Action: draft-ietf-netmod-acl-model-17.txt
X-Mailman-Version: 2.1.22
Precedence: list
List-Id: NETMOD WG list <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Wed, 14 Mar 2018 22:12:50 -0000

Agreed – I was just making the point that “access-lists” isn’t correct. It seems there have been other non-backward compatible changes to the model, so I don’t see why you wouldn’t fix it.

From: Mahesh Jethanandani <>
Date: Wednesday, March 14, 2018 at 6:04 PM
To: Acee Lindem <>
Cc: Kent Watsen <>et>, NETMOD WG <>
Subject: Re: [netmod] I-D Action: draft-ietf-netmod-acl-model-17.txt

If we agree to make any change, and currently I do not see a consensus on it, it would be to make it 'acls'. Expanding it to 'access-control-lists', would beg the question of why not expand 'acl', 'ace' and 'aces', and we do not want to go there.

Mahesh Jethanandani<>

On Mar 14, 2018, at 1:30 PM, Acee Lindem (acee) <<>> wrote:
I agree that if one is to be consistent with the rest of the model, e.g., “aces”, it should be “acls”. However, both are a bit cryptic. Having said that, “access-lists” isn’t really correct if you’re  going to expand it, it should be “access-control-lists”.


From: netmod <<>> on behalf of Mahesh Jethanandani <<>>
Date: Wednesday, March 14, 2018 at 3:26 PM
To: Kent Watsen <<>>
Cc: NETMOD WG <<>>
Subject: Re: [netmod] I-D Action: draft-ietf-netmod-acl-model-17.txt

On Mar 14, 2018, at 10:42 AM, Kent Watsen <<>> wrote:

Hi Mahesh,  please look for <<KENT>> below.

All, please take a look at the question around renaming the "access-lists" container.


On 3/13/18, 9:46 PM, "Mahesh Jethanandani" <<>> wrote:

On Mar 13, 2018, at 3:23 PM, Kent Watsen <<>> wrote:

Hi Mahesh,

Please look for <KENT> below.


On 3/8/18, 7:40 PM, "Mahesh Jethanandani" <<>> wrote:


On Mar 7, 2018, at 1:55 PM, Kent Watsen <<>> wrote:

[To all those that said this draft was ready, really?]

Hi Mahesh,

Thanks for the update.  I found some more issues.  Some must be fixed,
others are nits, and might be caught by the RFC Editor.  But I think
that it's embarrassing to receive comments for such things from the
IESG, as is recently the case for the syslog draft, so please see
what you can do.


From Idnits:

 ** There are 6 instances of too long lines in the document, the longest one
    being 7 characters in excess of 72.

Hmm. The idnits at submission time did not complain. Will apply the new script that you provided to make sure I wrap them around.

 You wrote before that it was "Fixed", but it's still here?  Note: "**" is
 an error (idnits label)

 -- The document has examples using IPv4 documentation addresses according
    to RFC6890, but does not use any IPv6 documentation addresses.  Maybe
    there should be IPv6 examples, too?

 I don't feel strongly about this, but if it's easy enough to do...

In the Abstract:
 - I think the word "an" is missing (e.g., an ACL)


In the Introduction:
 - should "ordered-by-user" be "ordered-by user" to avoid confusion, or perhaps say it another way?

How about this in both the Abstract and the Introduction.


ACL is a ordered-by-user set of rules

An ACL is a set of rules, in an order set by the user

<KENT>or how about "An ACL is a user-ordered set of rules”?


 - what does "a tuple of" mean?  Can this be restated?

How about this?


The match criteria consist of a tuple of packet header match criteria and can have metadata match criteria as well.


The match criteria consist of packet header matches, and or or metadata as described below:

<KENT>or how about "The match criteria can be a multiplicity of criteria, all of which must be true for the match to occur.   The match criteria may match against values in the packet header or against vendor-specific metadata about the packet."?   - or something in between?

Or simply as:

“The match criteria allows for definition of packet headers and metadata, all of which must be true for the match to occur."

<<KENT>> okay

 - s/In case vendor supports it/In case a vendor supports it/ ?


 - "The list of X is endless depending on...".  Is "endless" the right word, perhaps restate?

The list of potential actions is endless


The list of potential actions is limitless

<KENT> or maybe "unbounded”?


 - same sentence as above, should "networked devices" be "network" or "networking" devices?

Will change “networked devices” to “networking devices”.

In Section 3:
 - "A network system usually have a list of ACLs"  (s/system/systems/ or s/have/has/?)


 - "The match criteria consist of packet header matching" - is consist the right word?

How would you restate it? (After I have s/consist/consists/)

<KENT> see above (my comment before last, it is the same sentence, right?)

Once we agree on the above comment, I will replicate it.

<<KENT>> okay.

 - "It as also possible for ACE to match on metadata"  s/as/is/ and s/ACE/an ACE/


 - "When applied to interfaces of a networked device, the ACL is applied in a direction
    which indicates if it should be applied to packet entering (input) or leaving the
    device (output)."  - restate to talk about "ingress" and "egress”?

How about:

When applied to interfaces of a networked device, the ACL is applied in a direction which indicates if it should be applied to ingress interface (input) or egress interface (output).

<KENT>or maybe "When applied to interfaces of a networked device, distinct ACLs are defined for the ingress (input) and egress (output) directions.”


 - "An example in the appendix shows how to express it in YANG model." - either this
   is not true, or the sentence should not be at the end of this paragraph


In Section 3.1:
 - s/and must statements/and 'must' statements/

Done and s/if-feature/‘if-feature’/

 - s/define new "matches" choice/define a new "matches" choice/ ?


In Section 4.1:
 - "ietf-access-control-list" is the standard top level module for access lists
     - what does this mean?

"ietf-access-control-list" is the standard top level module for access lists

"ietf-access-control-list" is the top level module for access lists

<KENT> it's more than the word "standard".  Maybe something like this:  The "ietf-access-control-list"
module defines a container called "access-list"  - what do you think?


<KENT>BTW, why is the container called "access-lists" and not e.g., "acls".  I thought that there was a node-naming idiom along the lines of "/widgets/widget" for when a list is a descendent of a container.

History. When we inherited the draft, it was named access-lists. I can change it to “acls”.

<<KENT>> I think it should be "acls", but I wouldn't want to make this change unilaterally.
Does anybody else have an issue with the container being called "access-lists” ?

 - The "access-lists" container stores a list of "acl". - s/stores/has or contains?/


 - "...that can be used to determine which rule was matched upon" - not sure if this
   part is needed, or maybe better restated ", which can later be used to determine…"?


 - s/ability for ACL's to be/ability for ACLs to be/


In Section 4.1 (in the YANG module):
 - A number of identities read "ACL that primarily matches...".  Is "primarily"
   an accurate word? - if so, then do we need to say anything about when it's
   not the case?

As one of the text says. It primarily matches IPv4, and does not match either ethernet or IPv6 headers. Such ACL types are different from the mixed ACL types that might match on a combination of ethernet and IPv4 headers etc.

<KENT>But my comment is more that "primarily" seems wishy-washy.  It seems like it doesn't *primarily* do something, it actually does it.   If there is a grey area, where it might match something else, if possible, maybe it would help to call that out?

Ok. Will drop the word “primarily”.

 Separately, s/ACL/an ACL/?


 - A number of features read "Device can support..." - s/Device/The device/?


 - "It can have one or more Access Control Lists" - lists should be singular.

Really? English grammar says that if a sentence has both a singular and a plural, the one nearest to the subject is the one you select.

<KENT>actually, I'm just going off the fact that the list node is call "acl", which is singular.  Perhaps even better would be to say:  It can contain one or more "acl" nodes - thoughts?

But even nodes is a plural. So what would be the difference between “acls” and “acl nodes”. I would rather have the RFC editor deal with this.

<<KENT>> My issue isn't so much the plurality, as it is matching what is in the YANG.   The node is called "acl", so then you want to say that there are multiple "acl" nodes (not "acls").  In fact, putting "acls" would be even more confusing is the "access-lists" container is renamed to "acls”.

Ok. I can reword the sentence to say “It can have one more acl nodes”.

 - "An Access Control List(ACL)" - put a space before (ACL)


 - " Indicates the primary intended" - here's that word "primary" again...
 - s/a list of access-list-entries(ACE)/ a list of access-list-entry nodes (ACE)/?


 - s/List of access list entries(ACE)/List of access list entry nodes (ACE)/?
     - there is more than one instance of this in the model


 - "../../../../type" - still some long relative XPaths


 - " or referring to a group of source ports" - this isn't there yet.  I think you
   want to say something like "this is a choice so as to support future 'case'
   statements, such as one enabling a group of source ports to be referenced”

How about:

Choice of source port definition using range/operator or referring to a group of source ports, to be added as a future 'case' statement.

<KENT>I like my framing better because 1) it is less committal about the future and 2) it doesn't limit there to being just one 'case' statement that might be added in the future.


 - ditto for "or referring to a group of destination ports."
 - ditto on both of the above for the "udp" container
 - is it possible for both "egress-interface" and "ingress-interface" leafs to
   be specified at the same time?  - if not, should there a 'must' statement to
   prevent that possibility? - or an explanation for what happens if it occurs?

Let me discuss this with my co-authors.

<KENT>any update on this?

Yes, it is possible for both the “egress-interface” and “ingress-interface” to be specified at the same time.

<<KENT>> okay, then maybe there can be an explanation of what happens when that occurs?

It is a matching leaf, and technically one can match on more than one leaf. So a ‘must’ statement is not needed from a model perspective. Generally though, the packet is either coming in on an ingress (input) interface or going out a output (egress) interface, and one would should have separate ACE entries for each direction the packet travels through the interface. The match will fail if both directions of the interface are specified in the same ACE entry. But isn’t that obvious?

 - s/The ACL's applied/The ACLs applied/   (this happens more than once in model)


In Section 4.2:
 - references them by "uses" --> references them by 'uses' statements  ???


 - not all your 'reference' statements have the title of the referenced document.


 - "then the datagram must be destroyed" - s/destroyed/dropped/?


 - "or referring to a group of ..."  - same comments as for previous module
 - "ece" is missing a 'reference' statement?  -


 - "Indicates that the Urgent pointer field is significant" - urgent is
   capitalized, but there's no context as for why.  Perhaps missing a
   reference statement too?

Added a reference statement.

 - in "window-size" leaf description, remove parentheses


In Section 4.3:
 - the text says that it drops traffic from X to Y, but the example seems to do
   the reverse.


In Section 4.4:
 - The "With the follow XML example:" <EXAMPLE> "This represents..." is
   difficult to read.  How about just having "The following XML example ...:”?


<KENT> BTW, I missed it before, but I think the 4.4 section title should be
plural: "Port Range Usage Examples”

The title now reads:

"Port Range Usage and Other Examples”. See below.

<<KENT>> works for me.

 - does the second example provide any value of the first? - seems the same to me…

Will change the example.

<KENT> was it changed per the next item below, or something else?

Changed the example to an ACE entry that drops all ping requests.

<<KENT>> okay.  But please tweak all your examples so that a '\' line-wrapping isn't
happening for a single charater.  e.g., remove one space from the indent or put the
xmlns on its own line.

 - seems like example 3 could also be expressed as "<lower-port>21</lower-port>",
   right?  - the text at the beginning of the section says this construct is
   possible, but there is no example for it.  Maybe this makes a better ex #2?

Have changed the language in the beginning of the section to say:

"When only a port is present, it represents a port, with the operator specifying the range."

That is because, it now a choice between specifying a range or specifying a single port with an operator.

In all your YANG modules:
 - replace "NETMOD (NETCONF Data Modeling Language)" with "NETMOD (Network
   Modeling) Working Group”


In Section ??:
 In the examples, why did you add the "<?xml version="1.0" encoding="UTF-8"?>"
 line and the "config" element?  - the examples validate equally well when
 these are removed.

The examples can then be cut and pasted into any client such as ncclient which takes an entire <rpc>.

In Section 6:
 - s/three YANG module/three YANG modules/


In Section 6.1:
 - The first paragraph says "three URI", but it should be "three URIs”


In Section A.1:
 - "The following figure is the tree structure" - should say "tree diagram" and
   should reference the tree-diagrams draft, or else have a draft-wide "Tree
   Diagram Notation" section in the Introduction.

Added a section in the Introduction.

 - s/In other example/In another example/?
 - s/with new choice of actions/with a new choice of actions/?

Both fixed.

In Section A.3;
 - some 'reference' statements are missing titles


 - some 'description' statements might benefit from a 'reference’ statement

I have added references that I could find.

 - "The uint16 type placeholder type..." - is this a typo?

Dropped the second “type”.



Kent // shepherd

===== original message ======

This version of the draft addresses comments raised during LC, shepherd review and other comments received during that period.

On Mar 3, 2018, at 2:13 PM,<> wrote:

A New Internet-Draft is available from the on-line Internet-Drafts directories.
This draft is a work item of the Network Modeling WG of the IETF.

      Title           : Network Access Control List (ACL) YANG Data Model
      Authors         : Mahesh Jethanandani
                        Lisa Huang
                        Sonal Agarwal
                        Dana Blair
Filename        : draft-ietf-netmod-acl-model-17.txt
Pages           : 57
Date            : 2018-03-03

 This document defines a data model for Access Control List (ACL).
 ACL is a ordered-by-user set of rules, used to configure the
 forwarding behavior in device.  Each rule is used to find a match on
 a packet, and define actions that will be performed on the packet.

The IETF datatracker status page for this draft is:

There are also htmlized versions available at:

A diff from the previous version is available at:

Please note that it may take a couple of minutes from the time of submission
until the htmlized version and diff are available at<>0RXN1rPmGp0d-8mjDmA&e=>.

Internet-Drafts are also available by anonymous FTP at:

netmod mailing list<>

Mahesh Jethanandani<>

netmod mailing list<>

Mahesh Jethanandani<>

Mahesh Jethanandani<>

Mahesh Jethanandani<>