Subject: [Mip6] MIB Doctor review for: draft-ietf-mip6-mipv6-mib-04.txt

From: "C. M. Heard" <[email-masked]>
Date: Fri, 15 Oct 2004 00:55:17 -0700 (PDT)

Greetings,

This MIB Doctor review of the MOBILEIPV6-MIB document looks at
draft-ietf-mip6-mipv6-mib-04.txt.  It is a follow-up to a previous
review posted to the MIP6 mailing list on 10 August 2004 that dealt with
draft-ietf-mip6-mipv6-mib-03.txt.  As before, those who wish to respond
to these comments should do so on the MIP6 mailing list, with copies to
Bert Wijnen and myself.  The format is patterned after the checklist in
Appendix A of <draft-ietf-ops-mib-review-guidelines-03.txt>.

0.) Title -- I would recommend "A Management Information Base Module
for Mobile IPv6" or perhaps even "Managed Objects for Mobile IPv6".
(Strictly speaking, there is only one MIB, and the components are
MIB modules, which contain managed objects.)  [Also suggested in
the previous review.]

1.) I-D Boilerplate -- OK.

2.) Abstract -- OK.

3.) MIB Boilerplate -- OK.

4.) IPR Notice -- OK.

5.) References -- as requested in the previous review, the obsolete
documents that were present in the -03 draft have been removed from the
reference list and the document containing the IPv6-capable update of
the IP-MIB has been added.  Unfortunately, the reference list now lacks
citation tags and does not have sub-headings to clearly indicate which
references are normative and which are informative.  In addition, RFC
2119 is cited in the text but is not listed;  since the imperative
keywords are used, that document is required to be listed as a normative
reference.  Similarly, items from the INET-ADDRESS-MIB are imported, but
it is neither listed in the references nor cited in the text (this point
was missed in the review of the -03 draft).  Finally, although the
IPv6-capable update of the IP-MIB document is present in the reference
list, it is not cited in the text as required by RFC Editor policy.

Here are the recommended fixes.  First, change the second paragraph
of Section 4 as follows:

OLD:
   It is assumed that the Mobile IPv6 Management Information Base
   (MOBILEIPV6-MIB) will always be implemented in conjunction with the
   (to-be-published) IP-MIB.

NEW:
   It is assumed that the Mobile IPv6 Management Information Base
   (MOBILEIPV6-MIB) will always be implemented in conjunction with the
   IPv6-capable version of the IP-MIB [RFC2011bis].  It uses the textual
   conventions defined in the INET-ADDRESS-MIB [RFC3291bis].

Second, change the body of Section 8 as follows:

OLD:
McCloghrie, K., Perkins, D., Schoenwaelder, J., Case, J., Rose, M. and
S. Waldbusser, Structure of Management Information Version 2
(SMIv2), STD 58, RFC 2578, April 1999.
McCloghrie, K., Perkins, D., Schoenwaelder, J., Case, J., Rose, M. and
S. Waldbusser, Textual Conventions for SMIv2, STD 58,
RFC 2579, April 1999.
McCloghrie, K., Perkins, D., Schoenwaelder, J., Case, J., Rose, M. and
S. Waldbusser, Conformance Statements for SMIv2, STD 58,
RFC 2580, April 1999.
Johnson, D., Perkins, C. and Arkko J., Mobility Support in IPv6q
RFC 3775,  June 2004.
Routhier, S., Management Information Base for the Internet Protocol
(IP), work in progress (currently
<draft-ietf-ipv6-rfc2011-update-10.txt>).

Case, J., Mundy, R., Partain, D. and B. Stewart, Introduction
and Applicability Statements for Internet-Standard Management
Framework, RFC 3410, December 2002.

NEW:
8.1  Normative References

   [RFC2119]   Bradner, S., "Key words for use in RFCs to Indicate
               Requirements Levels", BCP 14, RFC 2119, March 1997.

   [RFC2578]   McCloghrie, K., Perkins, D., Schoenwaelder, J., Case, J.,
               Rose, M. and S. Waldbusser, "Structure of Management
               Information Version 2 (SMIv2)", STD 58, RFC 2578, April
               1999.

   [RFC2579]   McCloghrie, K., Perkins, D., Schoenwaelder, J., Case, J.,
               Rose, M. and S. Waldbusser, "Textual Conventions for
               SMIv2", STD 58, RFC 2579, April 1999.

   [RFC2580]   McCloghrie, K., Perkins, D., Schoenwaelder, J., Case, J.,
               Rose, M. and S. Waldbusser, "Conformance Statements for
               SMIv2", STD 58, RFC 2580, April 1999.

   [MIPv6]     Johnson, D., Perkins, C. and Arkko J., "Mobility Support
               in IPv6", RFC 3775,  June 2004.

   [RFC2011bis]
               Routhier, S., "Management Information Base for the
               Internet Protocol (IP)", work in progress (currently
               <draft-ietf-ipv6-rfc2011-update-10.txt>).

   [RFC3291bis]
               Daniele, M., Haberman, B., Routhier, S. and J.
               Schoenwaelder, "Textual Conventions for Internet Network
               Addresses", work in progress (currently
               draft-ietf-ops-rfc3291bis-06.txt).

8.2  Informative References

   [RFC3410]   Case, J., Mundy, R., Partain, D. and B. Stewart,
               "Introduction and Applicability Statements for
               Internet-Standard Management Framework", RFC 3410,
               December 2002.

As a matter of stylistic consistency, it might be desirable also to
change all occurrences of the citation tag [MIPv6] to [RFC3775] (there
are two in the text), but that is not required.

6.) Security Considerations Section -- appears to be complete and well
thought out.

7.) IANA Considerations Section -- there is a typo in Section 7:

s/'mipv6MIB'/'mip6MIB'/

Apart from that it looks just fine.

8.) Copyright Notices -- OK.

9.)  Other issues from http://www.ietf.org/ID-Checklist.html not covered
elsewhere -- none found.  Thanks for cleaning up the stuff found in the
-03 draft.

10.) Technical content -- review of actual technical content for
compliance with <draft-ietf-ops-mib-review-guidelines-03.txt>:

(a) verify that the the DESCRIPTION clauses of the MOBILEIPV6-MIB rows
that use ipv6InterfaceIfIndex as an index explicitly state for which
ipv6InterfaceIfIndex values the row is instantiated, as requested in
the review of the -03 draft (this requirement comes from the last
paragraph of RFC 2578 Section 7.8) -- OK.

(b) verify that the IP-MIB is mentioned in the narrative part of the
document, as requested in the review of the -03 draft -- OK, subject
to implementation of the fixes requested under (5) above.

(c) MIB compilation using smilint --

MOBILEIPV6-MIB:191: [5] {index-exceeds-too-large} warning: index of
row `mip6BindingCacheEntry' can exceed OID size limit by 142
subidentifier(s)
MOBILEIPV6-MIB:407: [5] {index-exceeds-too-large} warning: index of
row `mip6BindingHistoryEntry' can exceed OID size limit by 143
subidentifier(s)
MOBILEIPV6-MIB:771: [5] {index-exceeds-too-large} warning: index of
row `mip6NodeTrafficEntry' can exceed OID size limit by 142
subidentifier(s)
MOBILEIPV6-MIB:991: [5] {index-exceeds-too-large} warning: index of
row `mip6MnHomeAddressEntry' can exceed OID size limit by 142
subidentifier(s)
MOBILEIPV6-MIB:1230: [5] {index-exceeds-too-large} warning: index of
row `mip6MnBLEntry' can exceed OID size limit by 399
subidentifier(s)
MOBILEIPV6-MIB:1902: [5] {index-exceeds-too-large} warning: index of
row `mip6CnCounterEntry' can exceed OID size limit by 142
subidentifier(s)
MOBILEIPV6-MIB:2504: [5] {index-exceeds-too-large} warning: index of
row `mip6HaCounterEntry' can exceed OID size limit by 142
subidentifier(s)
MOBILEIPV6-MIB:2635: [5] {index-exceeds-too-large} warning: index of
row `mip6HaListEntry' can exceed OID size limit by 143
subidentifier(s)
MOBILEIPV6-MIB:2747: [5] {index-exceeds-too-large} warning: index of
row `mip6HaGlAddrEntry' can exceed OID size limit by 144
subidentifier(s)

Such warnings are expected when a conceptual row has unconstrained
InetAddress objects in the INDEX clause.  They are acceptable provided
that the actual size constraints which must be observed are documented
in the conceptual row DESCRIPTION clauses (or in the narrative part of
the MIB document).  However, the definitions flagged above do not do
that;  instead, there is language in the DESCRIPTION clauses of the the
InetAddressType/InetAddress objects that restricts their values to
ipv6(2) or ipv6z(4) address types.  This is equivalent to subtyping,
and so contravenes the intent of draft-ietf-ops-rfc3291bis-06.txt.  If
it is desired to leave open the possibility of using these tables for
other IP versions then it would be better to remove the restrictive
language from the InetAddressType/InetAddress pair DESCRIPTION clauses
and instead document the constraints in the DESCRIPTION clauses of the
corresponding conceptual rows, as was done, e.g., for inetCidrRouteEntry
in the IP-FORWARD-MIB (see draft-ietf-ipv6-rfc2096-update-07.txt).

Let us examine the mip6MnBLEntry for a specific example for how this can
be done for the conceptual rows in the MOBILEIPV6-MIB.  There are two
InetAddress objects mentioned in the INDEX clause.  Their underlying
type is OCTET STRING (SIZE(0..255)), so the sum of their sizes can
go up to 510 octets.  According to the smilint report this would
cause the column instance OIDs to exceed the limit by 399 sub-IDs.
So to avoid OID overflow the sum of the sizes should not exceed
510 - 399 = 111 octets.  This can be documented by adding the the
following language to the the mip6MnBLEntry DESCRIPTION clause:

              Implementers need to be aware that if the total number
              of octets in mip6MnHomeAddress and mip6MnBLNodeAddress
              exceeds 111 then OIDs of column instances in this
              row will have more than 128 sub-identifiers and cannot
              be accessed using SNMPv1, SNMPv2c, or SNMPv3.

The pattern of modifications needed for the other row object DESCRIPTION
clauses should be clear.

(d) Corrections for some typos in some of the InetAddressType objects:

OLD:
       mip6BindingHstHomeAddressType OBJECT-TYPE
           SYNTAX      InetAddressType
           MAX-ACCESS  not-accessible
           STATUS      current
           DESCRIPTION
!                  "The InetAddressType  of the mip6BindingHomeAddress
!                                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                    that follows.
-                   The only allowed type for this object is ipv6(2).
                   "
           ::= { mip6BindingHistoryEntry 1 }
NEW:
       mip6BindingHstHomeAddressType OBJECT-TYPE
           SYNTAX      InetAddressType
           MAX-ACCESS  not-accessible
           STATUS      current
           DESCRIPTION
                   "The InetAddressType of the mip6BindingHstHomeAddress
                    that follows.
                   "
           ::= { mip6BindingHistoryEntry 1 }

OLD:
       mip6BindingHstCOAType   OBJECT-TYPE
           SYNTAX      InetAddressType
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
!                  "The InetAddressType of the mip6BindingCOA that
!                                              ^^^^^^^^^^^^^^^^^^^
                    follows.
-                   The only allowed type for this object is ipv6(2).
                   "
           ::= { mip6BindingHistoryEntry 4 }
NEW:
       mip6BindingHstCOAType   OBJECT-TYPE
           SYNTAX      InetAddressType
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "The InetAddressType of the mip6BindingHstCOA that
                    follows.
                   "
           ::= { mip6BindingHistoryEntry 4 }

Note: I assume here that the type constraints will be removed from
_all_ InetAddressType/InetAddress object DESCRIPTION clauses, as
recommended in (c) above.

(e) Corrections for some typos in the mip6CoreCompliance compliance
statement:

OLD:
                   -- OBJECT      mip6BindingHomeAddressType
                   -- SYNTAX      InetAddressType (ipv6(2))
                   -- DESCRIPTION
                   --     This MIB module requires support for global
                   --     ipv6 addresses for the mip6BindingHomeAddress
                   --     object.
                   --
                   -- OBJECT      mip6BindingHomeAddress
                   -- SYNTAX      InetAddress (SIZE 16)
                   -- DESCRIPTION
                   --     This MIB module requires support for global
                   --     ipv6 addresses for the mip6BindingHomeAddress
                   --     object.
                   --
                   -- OBJECT      mip6BindingHstHomeAddressType
                   -- SYNTAX      InetAddressType (ipv6(2))
                   -- DESCRIPTION
                   --     This MIB module requires support for global
                   --     ipv6 addresses for the
                   --     mip6BindingHstHomeAddress object.
                   --
                   -- OBJECT      mip6BindingHstHomeAddress
                   -- SYNTAX      InetAddress (SIZE 16)
                   -- DESCRIPTION
                   --     This MIB module requires support for global
                   --     ipv6 addresses for the
                   --     mip6BindingHstHomeAddress object.
                   --
                   -- OBJECT      mip6MnHomeAddressType
                   -- SYNTAX      InetAddressType (ipv6(2))
                   -- DESCRIPTION
                   --     This MIB module requires support for global
                   --     ipv6 addresses for the mip6MnHomeAddress
                   --     object.
                   --
                   -- OBJECT      mip6MnHomeAddress
                   -- SYNTAX      InetAddress (SIZE 16)
                   -- DESCRIPTION
                   --     This MIB module requires support for global
                   --     ipv6 addresses for the mip6MnHomeAddress
                   --     object.
                   --
                   -- OBJECT      mip6MnBLNodeAddressType
                   -- SYNTAX      InetAddressType (ipv6(2))
                   -- DESCRIPTION
                   --     This MIB module requires support for global
                   --     ipv6 addresses for the mip6MnBLNodeAddress
                   --     object.
                   --
                   -- OBJECT      mip6MnBLNodeAddress
                   -- SYNTAX      InetAddress (SIZE 16)
                   -- DESCRIPTION
                   --     This MIB module requires support for global
                   --     ipv6 addresses for the mip6MnBLNodeAddress
                   --     object.
                   --
                   -- OBJECT      mip6HaLinkLocalAddressType
                   -- SYNTAX      InetAddressType (ipv6z(4))
                   -- DESCRIPTION
                   --     This MIB module requires support for local
                   --     ipv6 addresses for the mip6HaLinkLocalAddress
                   --     object
                   --
                   -- OBJECT      mip6HaLinkLocalAddressType
                   -- SYNTAX      InetAddress (SIZE 20)
                   -- DESCRIPTION
                   --     This MIB module requires support for local
                   --     ipv6 addresses for the mip6HaLinkLocalAddress
                   --     object.
                   --
                   "

NEW:
                   -- OBJECT      mip6BindingHomeAddressType
                   -- SYNTAX      InetAddressType { ipv6(2) }
                   -- DESCRIPTION
                   --     This MIB module requires support for global
                   --     ipv6 addresses for the mip6BindingHomeAddress
                   --     object.
                   --
                   -- OBJECT      mip6BindingHomeAddress
                   -- SYNTAX      InetAddress (SIZE(16))
                   -- DESCRIPTION
                   --     This MIB module requires support for global
                   --     ipv6 addresses for the mip6BindingHomeAddress
                   --     object.
                   --
                   -- OBJECT      mip6BindingHstHomeAddressType
                   -- SYNTAX      InetAddressType { ipv6(2) }
                   -- DESCRIPTION
                   --     This MIB module requires support for global
                   --     ipv6 addresses for the
                   --     mip6BindingHstHomeAddress object.
                   --
                   -- OBJECT      mip6BindingHstHomeAddress
                   -- SYNTAX      InetAddress (SIZE(16))
                   -- DESCRIPTION
                   --     This MIB module requires support for global
                   --     ipv6 addresses for the
                   --     mip6BindingHstHomeAddress object.
                   --
                   -- OBJECT      mip6MnHomeAddressType
                   -- SYNTAX      InetAddressType { ipv6(2) }
                   -- DESCRIPTION
                   --     This MIB module requires support for global
                   --     ipv6 addresses for the mip6MnHomeAddress
                   --     object.
                   --
                   -- OBJECT      mip6MnHomeAddress
                   -- SYNTAX      InetAddress (SIZE(16))
                   -- DESCRIPTION
                   --     This MIB module requires support for global
                   --     ipv6 addresses for the mip6MnHomeAddress
                   --     object.
                   --
                   -- OBJECT      mip6MnBLNodeAddressType
                   -- SYNTAX      InetAddressType { ipv6(2) }
                   -- DESCRIPTION
                   --     This MIB module requires support for global
                   --     ipv6 addresses for the mip6MnBLNodeAddress
                   --     object.
                   --
                   -- OBJECT      mip6MnBLNodeAddress
                   -- SYNTAX      InetAddress (SIZE(16))
                   -- DESCRIPTION
                   --     This MIB module requires support for global
                   --     ipv6 addresses for the mip6MnBLNodeAddress
                   --     object.
                   --
                   -- OBJECT      mip6HaLinkLocalAddressType
                   -- SYNTAX      InetAddressType { ipv6z(4) }
                   -- DESCRIPTION
                   --     This MIB module requires support for local
                   --     ipv6 addresses for the mip6HaLinkLocalAddress
                   --     object
                   --
                   -- OBJECT      mip6HaLinkLocalAddressType
                   -- SYNTAX      InetAddress (SIZE(20))
                   -- DESCRIPTION
                   --     This MIB module requires support for local
                   --     ipv6 addresses for the mip6HaLinkLocalAddress
                   --     object.
                   --
                   "
(f) In the following OBJECT-GROUP definition

      mip6MnSystemGroup    OBJECT-GROUP
           OBJECTS {
                 --  mip6MnHomeAddressType,
                 --  mip6MnHomeAddress,
                     mip6MnHomeAddressState
          }

please remove the commented-out INDEX objects mip6MnHomeAddressType and
mip6MnHomeAddress.  They are mentioned in the DESCRIPTION clause of
mip6CoreCompliance (see above), and that is sufficient;  their presence
here is not helpful.

(g) Is the following a typo, which should have said
"mip6HaReadOnlyCompliance2"?

      mip6HaiReadOnlyCompliance2 MODULE-COMPLIANCE
           [ ... ]
           ::= { mip6Compliances 15 }

(h) mip6HaReadOnlyCompliance3 includes mip6BindingCacheCtlGroup in
the MANDATORY-GROUPS list, but does not have an OBJECT clause for
mip6BindingAdminStatus that specifies a MIN-ACCESS of read-only.
This oversight needs to be corrected.

Please note that I have not yet performed a front-to-back review
of the MOBILEIPV6-MIB for correctness of each object definition.
I promise to do so in a forthcoming review.

Regards,

Mike Heard

_______________________________________________
Mip6 mailing list
[email-masked]
https://www1.ietf.org/mailman/listinfo/mip6