Eliot, I am not sure about what is a basic function, and what is not. Tomorrow, somebody can argue that TCP SYN flag is a basic function and should be broken out from under the TCP header.
I would rather that port definition remain under TCP/UDP with the feature statement ‘match-on-tcp’ and ‘match-on-udp’. The proposed change then looks like what is here <https://github.com/netmod-wg/acl-model/pull/23/commits/dc4ed556bd71cb9e648b0babdebe05a3a5b7bf68>, and all the changes in the PR are captured here <https://github.com/netmod-wg/acl-model/pull/23>. Thanks > On Jan 22, 2018, at 11:14 AM, Eliot Lear <l...@cisco.com> wrote: > > Hi Kent and Mahesh and Sonal, > > Thanks very much for working on this draft. I have noted one problem that I > think needs correcting. I come prepared with a diff. > > The current model has {source,dest}-port-or-range hanging off ipv4 or ipv6. > This is a transport parameter and is not appropriate for protocols that do > not use ports (ie, ICMP, ESP, etc). A better locale would be to hang these > components underneath l4 underneath their respective tcp and udp branches. > > Because this is so basic a function, I propose that this not be included in > match-on-tcp or match-on-udp. Instead, the contents of both tcp and udp be > moved to new containers "tcp-all" and "udp-all", respectively, and the ports > hang as peers to that. Thus, if a very simple device can understand TCP and > UDP ports but cannot understand more detailed information, that is supported. > > And so from a tree perspective, it would look like this: > > | | +--rw (l4)? > | | | +--:(tcp) > | | | | +--rw tcp > | | | | +--rw source-port-range-or-operator > | | | | | +--rw (port-range-or-operator)? > | | | | | +--:(range) > | | | | | | +--rw lower-port inet:port-number > | | | | | | +--rw upper-port inet:port-number > | | | | | +--:(operator) > | | | | | +--rw operator? operator > | | | | | +--rw port inet:port-number > | | | | +--rw destination-port-range-or-operator > | | | | | +--rw (port-range-or-operator)? > | | | | | +--:(range) > | | | | | | +--rw lower-port inet:port-number > | | | | | | +--rw upper-port inet:port-number > | | | | | +--:(operator) > | | | | | +--rw operator? operator > | | | | | +--rw port inet:port-number > | | | | +--rw tcp-all {match-on-tcp}? > | | | | +--rw sequence-number? uint32 > | | | | +--rw acknowledgement-number? uint32 > | | | | +--rw data-offset? uint8 > | | | | +--rw reserved? uint8 > | | | | +--rw flags? bits > | | | | +--rw window-size? uint16 > | | | | +--rw urgent-pointer? uint16 > | | | | +--rw options? uint32 > | | | +--:(udp) > | | | | +--rw udp > | | | | +--rw source-port-range-or-operator > | | | | | +--rw (port-range-or-operator)? > | | | | | +--:(range) > | | | | | | +--rw lower-port inet:port-number > | | | | | | +--rw upper-port inet:port-number > | | | | | +--:(operator) > | | | | | +--rw operator? operator > | | | | | +--rw port inet:port-number > | | | | +--rw destination-port-range-or-operator > | | | | | +--rw (port-range-or-operator)? > | | | | | +--:(range) > | | | | | | +--rw lower-port inet:port-number > | | | | | | +--rw upper-port inet:port-number > | | | | | +--:(operator) > | | | | | +--rw operator? operator > | | | | | +--rw port inet:port-number > | | | | +--rw udp-all {match-on-udp}? > | | | | +--rw length? uint16 > > A diff ietf-packet-fields.yang and ietf-access-control-lists.yang is attached. > > Eliot > > > > On 17.01.18 22:55, Kent Watsen wrote: >> All, >> >> This starts a two-week working group last call on >> draft-ietf-netmod-acl-model-15. >> >> This working group last call ends on January 31st. >> Please send your comments to the NETMOD mailing list. >> >> Positive comments, e.g., "I've reviewed this document >> and believe it is ready for publication", are welcome! >> This is useful and important, even from authors. >> >> Also, could the authors, explicitly CC-ed on this email, >> please confirm at this time that they are unaware of >> any IPR related to this draft. >> >> Thank you, >> NETMOD Chairs >> >> _______________________________________________ >> netmod mailing list >> netmod@ietf.org <mailto:netmod@ietf.org> >> https://www.ietf.org/mailman/listinfo/netmod >> <https://www.ietf.org/mailman/listinfo/netmod> >> > > *** ietf-packet-fie...@2018-01-16.yang.orig Mon Jan 22 12:58:08 2018 > --- ietf-packet-fie...@2018-01-16.yang Mon Jan 22 13:10:57 2018 > *************** > *** 190,205 **** > payload. In IPv6, this field is known as 'next-header."; > reference "RFC 719, RFC 2460."; > } > - container source-port-range-or-operator { > - uses port-range-or-operator; > - description > - "Source port definition."; > - } > - container destination-port-range-or-operator { > - uses port-range-or-operator; > - description > - "Destination port definition."; > - } > } > > grouping acl-ipv4-header-fields { > --- 190,195 ---- > *** ietf-access-control-l...@2018-01-16.yang.orig Mon Jan 22 10:16:17 2018 > --- ietf-access-control-l...@2018-01-16.yang Mon Jan 22 13:09:06 2018 > *************** > *** 440,457 **** > > choice l4 { > container tcp { > ! if-feature match-on-tcp; > uses packet-fields:acl-tcp-header-fields; > ! description > "Rule set that matches TCP headers."; > ! } > ! > container udp { > ! if-feature match-on-udp; > ! uses packet-fields:acl-udp-header-fields; > ! description > ! "Rule set that matches UDP headers."; > ! } > > container icmp { > if-feature match-on-icmp; > --- 440,482 ---- > > choice l4 { > container tcp { > ! container source-port-range-or-operator { > ! uses packet-fields:port-range-or-operator; > ! description > ! "Source port definition."; > ! } > ! container destination-port-range-or-operator { > ! uses packet-fields:port-range-or-operator; > ! description > ! "Destination port definition."; > ! } > ! container tcp-all { > ! if-feature match-on-tcp; > uses packet-fields:acl-tcp-header-fields; > ! description > "Rule set that matches TCP headers."; > ! } > ! description "TCP matchable characteristics"; > ! } > container udp { > ! container source-port-range-or-operator { > ! uses packet-fields:port-range-or-operator; > ! description > ! "Source port definition."; > ! } > ! container destination-port-range-or-operator { > ! uses packet-fields:port-range-or-operator; > ! description > ! "Destination port definition."; > ! } > ! container udp-all { > ! if-feature match-on-udp; > ! uses packet-fields:acl-udp-header-fields; > ! description > ! "Rule set that matches UDP headers."; > ! } > ! description "UDP matchable characteristics"; > ! } > > container icmp { > if-feature match-on-icmp; > _______________________________________________ > netmod mailing list > netmod@ietf.org > https://www.ietf.org/mailman/listinfo/netmod Mahesh Jethanandani mjethanand...@gmail.com
_______________________________________________ netmod mailing list netmod@ietf.org https://www.ietf.org/mailman/listinfo/netmod