[I2nsf] Yangdoctors early review of draft-ietf-i2nsf-nsf-monitoring-data-model-04

Andy Bierman via Datatracker <noreply@ietf.org> Mon, 05 October 2020 18:03 UTC

Return-Path: <noreply@ietf.org>
X-Original-To: i2nsf@ietf.org
Delivered-To: i2nsf@ietfa.amsl.com
Received: from ietfa.amsl.com (localhost [IPv6:::1]) by ietfa.amsl.com (Postfix) with ESMTP id EA24C3A0B12; Mon, 5 Oct 2020 11:03:42 -0700 (PDT)
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
From: Andy Bierman via Datatracker <noreply@ietf.org>
To: yang-doctors@ietf.org
Cc: i2nsf@ietf.org, draft-ietf-i2nsf-nsf-monitoring-data-model.all@ietf.org
X-Test-IDTracker: no
X-IETF-IDTracker: 7.19.0
Auto-Submitted: auto-generated
Precedence: bulk
Message-ID: <160192102291.6633.15935674903085952087@ietfa.amsl.com>
Reply-To: Andy Bierman <andy@yumaworks.com>
Date: Mon, 05 Oct 2020 11:03:42 -0700
Archived-At: <https://mailarchive.ietf.org/arch/msg/i2nsf/t0iHC_Xbgm6NaM4W83IHX6XjyHg>
Subject: [I2nsf] Yangdoctors early review of draft-ietf-i2nsf-nsf-monitoring-data-model-04
X-BeenThere: i2nsf@ietf.org
X-Mailman-Version: 2.1.29
List-Id: "*I2NSF: Interface to Network Security Functions mailing list*" <i2nsf.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/i2nsf>, <mailto:i2nsf-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/i2nsf/>
List-Post: <mailto:i2nsf@ietf.org>
List-Help: <mailto:i2nsf-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/i2nsf>, <mailto:i2nsf-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 05 Oct 2020 18:03:43 -0000

Reviewer: Andy Bierman
Review result: Almost Ready



Major Issues:

 - None

Moderate Issues:

 - top-level 'counters' container does not follow naming conventions.
   Should start with 'i2nsf', probably 'i2nsf-state'

 - There do not seem to be any writable objects in the /counters
   subtree so this container should have a 'config false' statement

 - top-level typedef and grouping description-stmts are self-referential
   and not useful. Need to rewrite description-stmts and/or add
   reference-stmts as needed.

 - grouping common-monitoring-data/time-stamp
   Is this a different time stamp than the one in the NETCONF notification?
   The 'message generation time' sounds like the standard timestamp.
   Does this object represent the event detection time?

 - grouping i2nsf-system-alarm-type-content/usage
 - grouping i2nsf-system-alarm-type-content/threshold
   These are uint8 leafs with unclear descriptions.
   Not sure why uint8 is the appropriate type.
   Needs 1 or more of (reference, units, better description)

 - grouping traffic-rates
   Add a units statement to each leaf. Not sure what units to use
   but it should be consistent. (e.g, pps, bps used in descriptions
   should also be in a units-stmt)

 - grouping i2nsf-system-counter-type-content
   These counters should use the yang:counter32 type instead of uint32

 - container counters/system-interface
 - container counters/nsf-firewall
 - container counters/nsf-policy-hits
  The descriptions are too terse and confusing, and need a rewrite.

 -  container counters/nsf-firewall
 -  container counters/nsf-policy-hits
    - uses i2nsf-nsf-counters-type-content;
    Many of the fields expanded from this grouping all say
    they refer to 'the packet'. Why are they in this global
    container of counters? E.g. (src-ip, dst-ip, src-port, dst-port)
    Not clear at all how the server is supposed to apply this
    grouping to these containers.

 - many leafs use "uint32" type for a rate.
   Should add a units-stmt

 - leaf counters/nsf-policy-hits/hit-times
   The purpose and type are confusing and generic.
   If this is a counter then use counter32

 - cut-and-paste for notification-stmt content should be replaced
   with grouping/uses instead. Applies to the nsf-detection-*
   and the various logging notifications. Even a grouping that
   has 1 object in it is better than cut-and-paste 5+ times

Minor Issues:

 - top-level identifiers are too generic
   should have 'i2nsf-' prefix to be more reusable outside this module

 - quite a lot of identities that an implementation is required to support.
   If this set of identities might change a lot faster than the
   notifications and counter objects, then consider putting them
   in a separate module

 - leaf with same type named differently; both intrusion-attack-type
   - nsf-detection-intrusion/sub-attack-type
   - nsf-log-intrusion/attack-type

 - quite a lot of notification event types for a server to implement
   and a user to manage. All are mandatory (no if-feature statements).
   Some such as nsf-detection-* subset are very similar.
   A section or table would be useful that showed the YANG notification
   names and their purpose -- maybe a reference to another RFC
   with more details

 - there seems to be notifications for intrusion events and then
   again for the logging of those events.  This seems excessive
   but


 - grouping common-monitoring-data/time-stamp
   Is this a different time stamp than the one in the NETCONF notification?
   The 'message generation time' sounds like the standard timestamp.
   Is this event detection time?

 - grouping common-monitoring-data/module-name
   Is this a YANG module or some other type of module?

 - there is no way to configure which notifications should be generated
   or maybe how often.  YANG Push has its own dampening-period.
   Since these are event stream subscriptions, not datastore subscriptions,
   YANG-Push does not apply to this document at all.

   If there are a lot of notifications then a server implementation
   might drop some

 - grouping i2nsf-nsf-event-type-content-extend/src-zone
 - grouping i2nsf-nsf-event-type-content-extend/src-zone
   These use type 'string'. Consider using a typedef that constrains
   the string.  General comment where unconstrained string is used:
   The corner-case values such as empty string are often not allowed
   in implementations.


 - grouping i2nsf-nsf-event-type-content-extend/rule-id
 - grouping i2nsf-nsf-event-type-content-extend/rule-name
 - grouping i2nsf-nsf-event-type-content-extend/profile
   These objects seem to reference objects in another YANG module.
   If so, then leafref types might be more appropriate.

 - grouping i2nsf-nsf-event-type-content/rule-id
 - grouping i2nsf-nsf-event-type-content/rule-name
 - grouping i2nsf-nsf-event-type-content/profile
 - grouping i2nsf-nsf-event-type-content/raw-info
   These objects are cut-and-paste duplicates from
   grouping i2nsf-nsf-event-type-content. They should
   be in a separate grouping used by both. Also applies
   to some other sets of objects

 - limits issues (e.g. current-session, maximum-session
   The type is uint8. This is only OK it is impossible for any
   implementation to ever have or want more than 255 of them.
   If some other RFC really does limit the values where uint8
   is used, then that is OK. If so, a reference-stmt would help.