[Disman] comments on draft-ietf-manet-report-mib-04

Randy Presuhn <randy_presuhn@mindspring.com> Sat, 18 April 2015 23:27 UTC

Return-Path: <randy_presuhn@mindspring.com>
X-Original-To: disman@ietfa.amsl.com
Delivered-To: disman@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com []) by ietfa.amsl.com (Postfix) with ESMTP id 5DA811AC3C1; Sat, 18 Apr 2015 16:27:29 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 0.7
X-Spam-Status: No, score=0.7 tagged_above=-999 required=5 tests=[BAYES_50=0.8, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, RCVD_IN_DNSWL_NONE=-0.0001] autolearn=ham
Received: from mail.ietf.org ([]) by localhost (ietfa.amsl.com []) (amavisd-new, port 10024) with ESMTP id gqjgxMhc4o7I; Sat, 18 Apr 2015 16:27:27 -0700 (PDT)
Received: from elasmtp-junco.atl.sa.earthlink.net (elasmtp-junco.atl.sa.earthlink.net []) by ietfa.amsl.com (Postfix) with ESMTP id F0DF71AC3BB; Sat, 18 Apr 2015 16:27:26 -0700 (PDT)
DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=dk20050327; d=mindspring.com; b=nvKq1/R6DzrBB1K0kTeBR7R8A51sCHIL6PtohBM7RDKDwUeabifUT37ebs+31NzV; h=Message-ID:Date:From:Reply-To:To:Subject:Cc:Mime-Version:Content-Type:Content-Transfer-Encoding:X-Mailer:X-ELNK-Trace:X-Originating-IP;
Received: from [] (helo=mswamui-valley.atl.sa.earthlink.net) by elasmtp-junco.atl.sa.earthlink.net with esmtpa (Exim 4.67) (envelope-from <randy_presuhn@mindspring.com>) id 1Yjc8z-00037y-Kv; Sat, 18 Apr 2015 19:27:25 -0400
Received: from by webmail.earthlink.net with HTTP; Sat, 18 Apr 2015 19:27:25 -0400
Message-ID: <18699062.1429399645552.JavaMail.root@mswamui-valley.atl.sa.earthlink.net>
Date: Sat, 18 Apr 2015 16:27:25 -0700 (GMT-07:00)
From: Randy Presuhn <randy_presuhn@mindspring.com>
To: manet@ietf.org
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-Mailer: EarthLink Zoo Mail 1.0
X-ELNK-Trace: 4488c18417c9426da92b9037bc8bcf44d4c20f6b8d69d888b65b6112f8911537d81312d8c217761dde4d378d2d5f2c5a350badd9bab72f9c350badd9bab72f9c
Archived-At: <http://mailarchive.ietf.org/arch/msg/disman/O8SsKDyE3ltn8ksGXSumKh-8Xkk>
X-Mailman-Approved-At: Sat, 18 Apr 2015 16:32:03 -0700
Cc: "Cole, Robert G CIV USARMY CERDEC \(US\)" <robert.g.cole.civ@mail.mil>, disman@ietf.org, mib-doctors@ietf.org
Subject: [Disman] comments on draft-ietf-manet-report-mib-04
X-BeenThere: disman@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
Reply-To: Randy Presuhn <randy_presuhn@mindspring.com>
List-Id: Distributed Management <disman.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/disman>, <mailto:disman-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/disman/>
List-Post: <mailto:disman@ietf.org>
List-Help: <mailto:disman-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/disman>, <mailto:disman-request@ietf.org?subject=subscribe>
X-List-Received-Date: Sat, 18 Apr 2015 23:27:29 -0000

Hi -

I was asked to take a look at draft-ietf-manet-report-mib-04.
This is *not* a full MIB doctor review; in my opinion some
fundamental issues need to be resolved before a detailed
review (either from a MIB doctor or disman perspective)
would be worthwhile.

These are mostly just top-level issues that absolutely need to
be resolved.  I fear that even though the questions aren't
terribly difficult, the fixes may result in significant document
churn.  There are also some odds and ends that jumped out that
should be fixed before bothering with a serious review. I didn't
go into a lot of detail because the sheer number of problems
would make any such attempt seem like a DoS attack.  The categories
here are:
  (1) data type difficulties
  (2) time stamping
  (3) access control
  (4) odds and ends
  (5) questions of power

Data Type Difficulties
  Location: Abstract and elswhere

  Example of Current text:
    In particular, it describes objects for configuring autonomous report
    generation on any device that supports MIBs containing objects that
    resolve to type Integer32 (i.e., Integer32, Counter, Gauge, or
    TimeTicks). to be used for performance monitoring.

	- typographical nit: misplaced "." after ")"
        - technical: "Counter" is not an SMIv2 type.  I assume
                     "Counter32" is intended.  If inclusion of
                     Counter64 is also intended, there are other problems.
        - technical: "Gauge" is not an SMIv2 type.  I assume
                     "Gauge32" is intended.
	- technical:  the range of type Integer32 (defined in RFC 2578)
                      does not cover the entire ranges of type Counter32,
                      Gauge32, or TimeTicks, as defined in RFC 3416.
                      The SMI type *Unsigned32* does cover the same ranges.
	- technical: the use of "resolve" is questionable, since all
                     of the data types mentioned have distinct ASN.1
                     tags.  (RFC 3416 section 3)

  It gets worse.  The definitions for reportSampledCurrentMeasurementValue
  and reportSampledHistoricalReportsValue limit their ranges to
  1 to 2,147,483,647.  This means that samples of Counter32, Gauge32,
  and TimeTicks with values of 0 or anything in the range from
  2,147,483,647 to 4,294,967,295 cannot be represented. 

  The reportSampledCurrentMeasurementStatus and the
  reportSampledHistoricalMeasurementStatus OBJECT-TYPEs appear
  to be an attempt to address this problem, and would *almost*
  work if the MeasurementValue were of type Unsigned32, and
  if its range were not constrained.  However, if the module
  functioned as though sampled data, regardless of type, were
  "cast" to Unsigned32, then the valuePositive(2) and valueNegative(3)
  aren't really needed, since the signedness of the sampled values
  can be recovered from reportSampledStudyOid.

Time Stamping
  There are a bunch of concerns related to time stamping.

  - several OBJECT-TYPE definitions have impossible syntaxes.
    "sysUptime" is not a syntax.  It should not be IMPORTed.
    For reportSampledCurrentMeasurementTime and for
    reportSampledHistoricalMeasurementTime you intend to
    use a syntax of "TimeStamp"

  - HOWEVER, there is a health warning attached to the
    TimeStamp textual convention in RFC 2579, and it applies
    here.  Firstly, it applies because the set of values
    permitted for reportSampledStudySamplingInterval means
    it is possible to construct a single report in which
    the sample times are ambiguous.  More significantly,
    for historical reports, especially for "archival" purposes,
    the sample times are almost certainly ambiguous.  Consequently,
    I think there needs to be a re-think of whether this is
    the correct data type for the intended use.

  - Many counter objects have "discontinuity indicators" other
    than sysUpTime. This module does not provide a straightforward
    way to cope with these.  See RFC 2981 (search for "discontinuity")
    to see one approach.

  - reportSampledStudySamplingInterval may be modified during a
    report.  This means that conventional algorithms for detecting
    sysUpTime discontinuities within a report may not work.

Access Control
  There are a couple of ways in which access control considerations
  might affect the design of this module.  The presence of
  reportSampledStudyOwner suggests that someone was thinking about
  this, but some changes are needed to make things work.

    (1) reportSampledControlEntry should have an INDEX of
        { reportSampledStudyOwner, reportSampledStudyIndex }
        This is necessary if you want to be able to limit access
        to specific studies to specific users in a reasonable way,
        and to prevent collisions between users during the creation
        of studies.

    (2) Likewise, reportSampledCurrentReportsStatusEntry should
        also have an INDEX of
        { reportSampledStudyOwner, reportSampledStudyIndex },
        reportSampledCurrentReportsEntry should have
        { reportSampledStudyIndex, reportSampledCurrentMeasurementIndex }
        reportSampledHistoricalReportsEntry should have
        { reportSampledStudyOwner, reportSampledStudyIndex,
          reportSampledHistoricalMeasurementIndex }

    (3) A consequence is that (for example) reportSampledStudyIndex
        only needs to be unique for a given owner, and not among
        all studies.

  Note that reportSampledDataCollectionFailure suffers from the
  "who's buried in Grant's Tomb" problem, and can be simplified.

  A second way in which access control matters here is that the
  sampling process should not circumvent access control.  I strongly
  urge putting in explicit language about this.  I'd suggest the following
  as a starting point for discussion:

     Security for local access effectively requires recording appropriate
     security credentials of the creator of a reportSampledControlEntry
     and using those to access the local objects.  These security
     credentials are parameters necessary as inputs to isAccessAllowed
     from the Architecture for Describing SNMP Management Frameworks.
     The system MUST (conceptually) use isAccessAllowed at the time of
     each access (not just creation of the reportSampledControlEntry)
     to ensure that it does not permit unauthorized access.

     When using VACM, the security administrator SHOULD ensure that
     access permitted to the collected data and notifications (that is,
     access to reportSampledCurrentReportsStatusTable.*.<user>,
     reportSampledCurrentReportsTable.*.<user>, and
     reportSampledHistoricalReportsTable.*.<user>) is
     limited to the <user>'s appropriate VACM group.

Odds and ends:
  It's pretty obvious that this module has not seen a MIB compiler
  recently.  In addition to the syntactic problem, there are some
  glaring stylistic issues that, if fixed now, will make an eventual
  MIB doctor review go a lot smoother.

   (1) Use of data types.  Every single use of Integer32 in this
       module is arguably incorrect.  Unsigned32 would be a better
       choice, since these are all sub-typed to exclude negative

  (2) Use of data types.  reportSampledStudySamplingInterval
      seems like it should make use of RFC 2579 TimeInterval, perhaps
      constrained to be at least 10.

  (3) Use of UNITS.  Though it's a little unusual (but not unheard-of)
      to use UNITS with non-counter types, a value of "count" in,
      for example, reportSampledStudyMaximumNumberOfHistoricalReports,
      is really not helpful.  In that particular case, "reports"
      would make more sense.

  (4) Attention to error cases: there are a bunch of error situations
      that should be given a little attention.  What happens when
      there's no longer enough memory to keep accumulating studies?
      What happens when the object instance referred to by
      reportSampledStudyOid is the wrong data type?

  (5) The use of non-volatile storage doesn't seem to have been
      completely thought through.  It doesn't make sense to me, for
      example, to have the control entries in backing storage, but
      not the "archival" historical data.  Likewise, if a control
      entry is restored from non-volatile upon reboot, does that
      cause a new report to be started or does it pick up where
      it left off on a existing report?

  (6) Notification throttling.

Questions of Power
  I think the decision to limit the module to local access is reasonable
  given the intended applicability.  I do think, however, there should
  be a clear explanation of the rationale behind limiting its functionality
  to the current SNMP context, unlike RFC 1981.

  I think it would be helpful to at least suggest how it is envisioned
  that future "statistical" functions alluded to in the text would work
  with this MIB module -   are they expected to be extensions of this
  module or completely new ones?

  I honestly have some difficulty seeing what good this module would
  do; perhaps the WG has discussed concrete use cases, but don't be
  surpised if a future reviewer raises questions on this point.