RE: MIB/PIB doctor review for draft-ietf-ipsp-ipsecpib-09.txt - p art 2

"Wijnen, Bert (Bert)" <[email protected]>
Newsgroups gmane.ietf.ipsp
Message-ID <7D5D48D2CAA3D84C813F5B154F43B15503ED0855@nl0006exch001u.nl.lucent.com>
I have to be very careful here (cause it took me many months
before I finished my review; for which I again appologize).

But once I have done the review, these things are kind of "fresh" in 
my mind/memory. If it takes a long time before you get to respond or
send a new revision... things get swapped out, sometimes into a 
sort of off-site store... 

Thanks,
Bert 

> -----Original Message-----
> From: Wijnen, Bert (Bert) 
> Sent: dinsdag 16 maart 2004 15:49
> To: [email protected]; [email protected]
> Cc: [email protected]; [email protected]; [email protected];
> [email protected]; [email protected]
> Subject: MIB/PIB doctor review for draft-ietf-ipsp-ipsecpib-09.txt -
> part 2
> 
> 
> Steve, you may want to pay specific attention to items 34-37.
> 
> Addtional things I found when revieing revision 9
> 
> Comments 1-8 were in part 1 email of the review
> 
> 9. Doing s smilint syntax check, I get the following:
> 
>       C:\smi\pibs\ietf>smilint -l 6 -s -m -inamelength-32 
> ./IPSEC-POLICY-PIB
>          /IPSEC-POLICY-PIB:83: [5] {type-without-format} warning: type
>          `Unsigned16TC' has no format specification
>    simple to fix by adding a DISPLAY-HINT
> 
>          /IPSEC-POLICY-PIB:19: [5] {import-unused} warning: identifier
>         `zeroDotZero' imported from module `SNMPv2-SMI's never used
> 
>    simple to fix by removing zeroDotZero from the imports
> 
> 10. I see a lot of acronyms in the document without expansion 
> (when used
>     for the first time. These maybe well know to security 
> folk, but not
>     to new readers. RFC-Editor wants them to be exanded first 
> time they 
>     are used. Pls note that when PIB module is extracted, 
> previous text is
>     gone, and so it is probably wise to always expand in PIB 
> DESCRIPTION 
>     clauses.
> 
> 11. All RFCs that contain PIB or MIB modules from which you 
> IMPORT must
>     be normatively referenced. The RFC-Editor recently also 
> wanted such
>     references to have citations. The notatation we agreed on is
> 
>       IMPORTS
>       Unsigned32, Unsigned64, MODULE-IDENTITY,
>       OBJECT-TYPE, TEXTUAL-CONVENTION, MODULE-COMPLIANCE,
>       OBJECT-GROUP, pib
>         FROM COPS-PR-SPPI                      -- [RFC3159]
>       TruthValue
>         FROM SNMPv2-TC                         -- [RFC2579]
> 
>     and so on. But.. your references seem to be just numbered.
>     I Do not find 
> 
>       OBJECT-GROUP, pib
>         FROM COPS-PR-SPPI                      -- [14]
>    
>     very acceptable. This is because when the PIB module gest 
> extracted,
>     then a "citation" of [14] does not help much. A Citation 
> of [RFC3159]
>     would still be clear for the reader (or so I think).
> 
> 12. I see various ENUMERATIONS (e.g. INTEGERS) that probably would be
>     better represented as a TC.
>     For example:
> 
>        SYNTAX INTEGER {
>          in(1),
>          out(2),
>          bi-directional(3)
>          }
>    
>     and also 
>         SYNTAX INTEGER {
>           copy(1),
>           set(2),
>           clear(3)
>           }
>     there are others. Those are just 2 examples.
> 
> 13.I wonder if this is wise:
> 
>       Unsigned16TC ::= TEXTUAL-CONVENTION
>          STATUS       current
>          DESCRIPTION
>          "An unsigned 16 bit integer."
>          SYNTAX    Unsigned32 (0..65535)
> 
>    In some places its use seems OK. In many places, it is used 
>    to indicate an "order" as in:
> 
>       ipSecRuleOrder OBJECT-TYPE
>         SYNTAX Unsigned16TC
>         STATUS current
>         DESCRIPTION
>          "Specifies the precedence order of the rule within 
> all the rules
>           associated with {IfName, Roles}. A smaller value indicates a
>           higher precedence order. "  
>         ::= { ipSecRuleEntry  9 }
> 
>    I wonder if it would not be better to define a TC aka:
> 
>       IpSecOrderTC ::= TEXTUAL-CONVENTION
>          STATUS        current
>          DESCRIPTION  "An unsigned 16 bit integer that 
> defines the order
>                        of a Rule or Set. A smaller value indicates a
>                        higher precedence order."
>          SYNTAX    Unsigned32 (0..65535)
> 
>    And then use that TC for all "order" objects.
> 
>    In the case of 
>       ipSecAssociationDhGroup OBJECT-TYPE
>          SYNTAX Unsigned16TC
> 
>    I also wonder if a IpSecDhGroupTC would not be a wise thing.
> 
> 
> 14.I see citations in DESCRIPTION clauses, as in:
> 
>      ipSecRuleIfName OBJECT-TYPE
>        SYNTAX SnmpAdminString
>        STATUS current
>        DESCRIPTION
>       "The interface capability set to which this IPsec rule applies.
>        The interface capability name specified by this attribute MUST
>        exist in the frwkCapabilitySetTable [9] prior to 
> association with
>        an instance of this class."
>        ::= { ipSecRuleEntry  2 }
> 
>    The [9] of course means nothing anymore when the PIB module gets
>    extracted. If you used a notation ala [RFCxxxx] then it would still
>    mean something in an extracted module.
> 
> 15.In the ipSecXxxTable DESCRIPTION clauses you use text aka:
>       "This table ...."
>    In all other PIB modules that the IETF has published sofar, we did
>    not talk about a table but either of a PRC (Policy Rule Class) or
>    just class. See the DIFFSERV-PIB and the FRAMEWORK-PIB for example.
>    I think that changing this so as to be consistent is a GOOD THING.
> 
> 16.In the DESCRIPTION clause of:
>      ipSecActionSetDoPacketLogging OBJECT-TYPE
>         SYNTAX TruthValue
>         STATUS current
>         DESCRIPTION
>       "Specifies whether to log when the resulting security 
> association
>        is used to process a packet. For ipSecStaticActions, a 
> log message
>        is to be generated when the IPsecBypass, IpsecDiscard 
> or IKEReject
>        actions are executed."
>       ::= { ipSecActionSetEntry  5 }
>   
>    I wonder if "IPsecBypass, IpsecDiscard or IKEReject" are meant to
>    mean the same thing as the enumerations in:
> 
>       ipSecStaticActionAction OBJECT-TYPE
>          SYNTAX INTEGER {
>             byPass(1),
>             discard(2),
>             ikeRejection(3),
>             preConfiguredTransport(4),
>             preConfiguredTunnel(5)
>             }
>          STATUS current
> 
>    If so, then you may want to sync up the labels.
> 
> 17.I see:
>      ipSecAssociationUseKeyExchangeGroup OBJECT-TYPE
>        SYNTAX TruthValue
>        STATUS current
>        DESCRIPTION
>        "Specifies whether or not to use the same GroupId for 
> phase 2 as
>         was used in phase 1.  If UsePFS is false, then this 
> attribute is
>         ignored.
> 
>         A value of true indicates that the phase 2 GroupId 
> should be the
>         same as phase 1.  A value of false indicates that the 
> group number
>         specified by the ipSecSecurityAssociationDhGroup 
> attribute SHALL
>         be used for phase 2. "
>        ::= { ipSecAssociationEntry  7 }
> 
>    And wonder if ipSecSecurityAssociationDhGroup is mean to point to:
> 
>       ipSecAssociationDhGroup OBJECT-TYPE
>         SYNTAX Unsigned16TC
>         STATUS current
>         DESCRIPTION
>         "Specifies the key exchange group to use for phase 2 when the
>          property ipSecSecurityAssociationUsePfs is true and 
> the property
>          ipSecSecurityAssociationUseKeyExchangeGroup is false."
>         ::= { ipSecAssociationEntry  8 }
> 
>    If so, then better sync up the descriptors.
>    If not, then where is ipSecSecurityAssociationDhGroup defined?
>    By the way, in the last object, there are also a few descriptors
>    that start with ipSecSecurityAssociation.... and that I 
> cannot find.
>    Again, probably s/Security// ??
> 
> 18.I see:
>      ipSecAhTransformReplayPreventionWindowSize OBJECT-TYPE
>        SYNTAX Unsigned32
>        STATUS current
>        DESCRIPTION
>       "Specifies, in bits, the length of the sliding window 
> used by the
>        replay prevention detection mechanism. The value of 
> this property
>        is ignored if UseReplayPrevention is false. It is 
> assumed that the
>        window size will be power of 2."
>       ::= { ipSecAhTransformEntry  5 }
>    Might be good to add a UNITS clause?
>    But I also wonder what "window size will be power of 2" means?
> 
> 19.ipSecEspTransformCipherKeyLength, 
> ipSecEspTransformReplayPreventionWindowSize
>    and may be others can also use a UNITS clause
> 
> 20.In Table/Class ipSecCompTransformTable I see 
> ipSecCompTransformAlgorithm
>    and also ipSecCompTransformPrivateAlgorithm. Canthey both 
> be specified
>    for the same instance? If so, what happens? If not, can you make
>    that clear? If yes, you may want to explain also what happens.
> 
> 21.ipSecIkeRuleTable is probably talking about IKEv1 ??
>    Should that be made clear?
>    What sort of change do we expect for IKEv2?
>    WOuld it make sense to define this "optional" class in a separate 
>    document?
>    In any event, you do not put in the DESCRIPTION clause 
> that this table/class
>    is optional. That is expressed (and even in machine 
> readable form) in the
>    MODULE-COMPLIACNE.
> 
> 22.I am really wondering and worried about some of the 
> UNIQUENESS clauses
>    that require many columns/attributes to define uniqueness.
>    But ipSecIkeAssociationEntry really seems excessive to me. 
> It states
>    that ALL attributes need to be checked for unqiueness !!???
>    Is that really intended?
>    You may want to check all tables/classes in fact.
> 
> 23.ipSecIkeAssociationVendorId is an OCTET STRING and the 
> descripiton clause
>    talks about a vlaue of NULL. That is not clear! Better is 
> to talk about
>    a zero length OCTET STRING. That is clear!
> 
> 24.I see:
>      ipSecIkeProposalPrfAlgorithm OBJECT-TYPE
>        SYNTAX Unsigned16TC
>        STATUS current
>        DESCRIPTION
>       "Specifies the Psuedo-Random Function (PRF) to propose 
> for the IKE
>        association."
>       ::= { ipSecIkeProposalEntry  7 }
>    So where do I find what any value means?
>    And would it not be better to have a separate TC fo such algorithm
>    values?    And pls add REFERENCE clause to point to it.
> 
> 24.Similar question for ipSecIkeProposalIkeDhGroup
>    And pls add REFERENCE clause to point to it.
> 
> 25.IN ipSecIkePeerEndpointIdentityValue you are using IP addresses as
>    example. But you must use the ange of addresses that has been
>    allocated for examples as per ID-NITs 
> http://www.ietf.org/ID-nits.html
>    which states:
> 
>         Addresses used in examples should prefer use of fully 
> qualified
>         domain names to literal IP addresses, and prefer use 
> of example
>         fqdn's such as foo.example.com to real-world fqdn's. 
> See RFC 2606
>         for example domain names that can be used. There is 
> also a range
>         of IP addresses set aside for this purpose. These are 
> 192.0.2.0/24
>         (see RFC 3330). Private addressess that would be used 
> in the real
>         world should be avoided in examples. 
>  
> 26.Object ipSecCredentialFieldsValue is defined as an OCTET STRING.
>    However, reading the DESCRIPTION clause, it feels as if this is
>    a string that will be used/read by human beings. In that case, it
>    must be a UTF-8 string. Possibly a SnmpAdminString or some other
>    TC that defines UTF-8 text.
> 
> 27.When I read the ipSecSelectorTable and related tables, 
> then I really
>    wonder if you guys have really evaluated the possible re-use of the
>    frwkIpFilterTable in the FRAMEWORK-PIB !!??
>    I thought that that framework filter table was meant to be re-used
>    by many (if not all) filter/selector uses.
> 
> 28.I have trouble understanding the ipSecIpsoFilterSetTable
>    I bet it is cause by the very short DESCRIPTION clauses that do not
>    mean much to me (and so probably do not mean much to other 
> non-expert
>    readers).
> 
> 29.When I see ipSecRuleTimePeriodTimePeriod defined as an OCTET STRING
>    then I wonder. It claims to be RFC2445 format (as RFC3060 also
>    prescribes). There they talk about a string.
>    I think it is US-ASCII, possibly represented as UTF-8 ??
>    I need to go and check to be sure. In any event, if you 
> say OCTET STRING
>    and specify that THISANDPRIOR has special meaning, then it 
> needs to be
>    clear what encoding needs to be used for that text.
>    A SIZE specification may also make sense (or so I think).
>    This is a generic Policy construct, which probably even 
> warrants a TC.
> 
> 30.I do not understand 
>      ipSecRuleTimePeriodMonthOfYearMask OBJECT-TYPE
>        SYNTAX OCTET STRING
>        STATUS current
>        DESCRIPTION
>       "An octet string that specifies which months the policy is valid
>        for.  The octet string is structured as follows:
> 
>        - a 4-octet length field, indicating the length of the entire
>          octet string; this field is always set to 0x00000006 for this
>          property;
>  
>        - a 2-octet field consisting of 12 bits identifying 
> the 12 months
>          of the year, beginning with January and ending with December,
>          followed by 4 bits that are always set to '0'.  For 
> each month,
>          the value '1' indicates that the policy is valid for 
> that month,
>          and the value '0' indicates that it is not valid.
> 
>        If this property is omitted, then the policy rule is treated as
>        valid for all twelve months."
>       ::= { ipSecRuleTimePeriodEntry  3 }
> 
>   My questions/thinking:
>   - if indeed the length is ALWAYS 6, with only 2 octets of 
> information,
>     then why not define it as: OCTET STRING (SIZE(2))
>   - But since you need to represent BITS, I wonder why you do not
>     use the BITS construct aka:
>      ipSecRuleTimePeriodMonthOfYearMask OBJECT-TYPE
>        SYNTAX BITS {
>           january(0),
>           february(1),
>           march(2),
>           ...
>           december(11)
>        }
>     In fact I would make it a TC. It is a generic construct for Policy
>     information. As you probably know, BITS does translate to an
>     octet string of the proper size on the wire.
> 
> 31.Similar questions for ipSecRuleTimePeriodDayOfMonthMask.
>   ipSecRuleTimePeriodDayOfWeekMask I have similar questions 
> 
> 32.For ipSecRuleTimePeriodTimeOfDayMask I ahve similar questions as 
>   in point 29 above
> 
> 33.ipSecRuleTimePeriodLocalOrUtcTime
>    I can live with it. It does not always result in a 16bit unint
>    as per RFC3060 sect 6.5.6, but can easily be converted to that.
>    Agin, it would be good if defined as a TC.
> 
> 34.The reason I suggest to define TCs for points 29-33, is that the
>    same TCs can/should be used by the MIB defintion. Since the MIB
>    wants to (and can) go stds track, there probably should be a 
>    separate POLICY-TC-MIB module that defines those TCs.
> 
> 35.In fact, the whole TimePeriod... stuff seems so generic to any
>    policy, that I would think it would also be in a separate module
>    so that it can be re-used much easier.
>    In fact the RFC3060 (and possibly RFC3460) should be separate
>    modules that can be re-used by technology specific specifications
>    and/or modules. I thought that that was the whole concept/idea of
>    doing a PCIM and PCIMe. They would be CORE definitions upon which
>    technology specific definitions (like IPsec and QoS) could/would
>    build. Have we completely lost this idea/concept?
> 
> 36.If I see it correctly, then every table has its own OBJECT-GROUP
>    with a description clause of "Objects from the xxxTable."
>    Is that the most logical grouping? I doubt it very much.
>    Has any thought gone into this?
> 
> 37.I will leave it to your security ADs to tell you about the security
>    considerations section. But it seems to me that it is inadequate.
> 
> 38.RFC-Editor considerations is incorrect. There are many more 
>    normative references. In any event, [9] has been published as
>    RFC3318, as you indicate yoruself in ref section. ANdf ref [12]
>    has been published as RFC3385, as you can see on your WG 
> charter page.
> 
> 39.IANA Considerations section
>    - the 1st para is fine, except I would add a ptr to the 
> iana web page
>      that has the registry. Makes it easier for everyone
>    - the 2nd para need to be formulated in the same way as 1st para.
>      So that it is also readable after IAN has done the assignment.
>      Pls also add ptr to the cirrect iana web page.
> 
> Since this will result in a new revision, I propose to also add the
> proper IPR statements as per the new RFCs 3667/8/9
> 
> Bert
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.