Subject: [imss] WG Last Call: draft-ietf-imss-fc-fcs-mib-00.txt

From: "Wijnen, Bert (Bert)" <[email-masked]>
Date: Mon, 4 Sep 2006 18:23:41 +0200

Comments/questions:

- In the MODULE-IDENTITY, I see:

    REVISION  "200608140000Z"
    DESCRIPTION
            "Initial version of this MIB module."
    ::= { mib-2 nnn }                     -- to be determined later
  
  I think I would make that:

    REVISION  "200608140000Z"
    DESCRIPTION
            "Initial version of this MIB module, published as RFC yyyy."
    -- RFC-Editor, replace yyyy with actual RFC number & remove this note
    ::= { mib-2 nnn }  -- to be assigned by IANA.
    -- RFC Editor: replace nnn with IANA-assigned number & remove this note

- To avoid later comments, I would also add this to the DESCRIPTION
  clause of the MODULE-IDENTITY itself:

           Copyright (C) The Internet Society (2006).  This version of
           this MIB module is part of RFC yyyy;  see the RFC itself for
           full legal notices."

   -- RFC Editor: replace yyyy with actual RFC number & remove this note

- I wonder if we would not better rename these TCs (for naming consistency):

     FcIeType, FcPortState, FcPortTxType
 
  and name them instead as follows:

     T11FcIeType, T11FcPortState, T11FcPortTxType

  Or are these 3 TCs extending the set of FcXxxx TCs in RFC4044?
  If so, the I'd suggest to add at least a small SMI comment to state that,
  so that it is clear why the names are as chosen.

- For consistency, but also for betetr info in the DESCRIPTION clause,
  I would consider to change:

  FcPortTxType ::= TEXTUAL-CONVENTION
    STATUS  current
    DESCRIPTION
            "The technology of the port transceiver:

                unknown        - unknown (includes the 'null' type)
                other          - some other technology
                shortwave850nm - Short wave laser - SN (850 nm)
                longwave1550nm - Long wave laser - LL (1550 nm)
                longwave1310nm - Long wave laser cost
                                 reduced - LC (1310 nm)
                electrical     - Electrical - EL."

  into:

  FcPortTxType ::= TEXTUAL-CONVENTION
    STATUS  current
    DESCRIPTION
            "The technology of the port transceiver:

                unknown(1)        - unknown (includes the 'null' type)
                other(2)          - some other technology
                shortwave850nm(3) - Short wave laser - SN (850 nm)
                longwave1550nm(4) - Long wave laser - LL (1550 nm)
                longwave1310nm(5) - Long wave laser cost
                                    reduced - LC (1310 nm)
                electrical(6)     - Electrical - EL."

- I am a bit surprised by:

  T11ListIndexPointer ::= TEXTUAL-CONVENTION
    STATUS  current
    DESCRIPTION
            "Objects with this syntax point to a list of elements
            contained in a table, by holding the same value as the
            object with syntax T11ListIndex defined in the table's
            INDEX clause, or, zero to indicate an empty list.
            The definition of an object with this syntax must
            identify the table(s) into which it points."
    SYNTAX  Unsigned32 -- the default range of (0..4294967295)

  First, I would make it:  SYNTAX Unsigned32 (0..4294967295)
  instead of putting that in a SMI comment field.

  Second, I think we normally would use a name of 

    T11ListIndexOrZero ::= TEXTUAL-CONVENTION

  To complement the T11ListIndex TC, which does not include the zaero.

  Third, we also normally do not prescribe what a value of zero means,
  but we normally say something aka (this is from InetrfaceIndexOrZero):

            "This textual convention is an extension of the
            InterfaceIndex convention.  The latter defines a greater
            than zero value used to identify an interface or interface
            sub-layer in the managed system.  This extension permits the
            additional value of zero.  the value zero is object-specific
            and must therefore be defined as part of the description of
            any object which uses this syntax.  Examples of the usage of
            zero might include situations where interface was unknown,
            or when none or all interfaces need to be referenced."

  We in fact have quite a few of these XxxSomeIndex and XxxSomeIndexOrZero
  TCs, which all (i believe) follow/use that same concept. I would strongly
  suggest that we do so here as well.

  Mmmm... I see that for some other TCs in the FC/IMSS/IPS space you do
  not follow the InterfaceIndex/InetrfaceInexOrZero so closely either.
  Oh well... Up to you and the WG. I personally like the InterfaceIndeOrZero
  approach better. 

- I see REFERENCE clauses aka:

    REFERENCE
            "ANSI INCITS xxx-200x, Fibre Channel - Generic Services 5,
            FC-GS-5 T11/Project 1677-D/Rev 8, Table 124."

  which relates to this reference (I guess):

   [FC-GS-5]
     "Fibre Channel - Generic Services - 5 (FC-GS-5)", ANSI INCITS
     xxx-200x, T11/Project 1677-D/Rev 8.00
     http://www.t11.org/t11/stat.nsf/upnum/1677-d, September 2004.

  Do we know when we will get a stable reference?
  It is normative, so we may have to say something about that.

  I guess Keith already stated that David or Claudio should answer this 
  question.

- For t11FcsFabricDiscoveryRangeLow and t11FcsFabricDiscoveryRangeHigh,
  is the value in these objects included in teh range? My read would
  say they are. But we may want to make that clear by stating it?

- For t11FcsFabricDiscoveryStart, how long does discovery take?
  The reason I ask, is that if it may take a while, that we might
  want to consider a value like "discoveryInProgress(3) ??
  Just thinking aloud, I can also live with what we have in there now.

- t11FcsFabricDiscoveryTable
  I guess that this table gets created/instantiated by the agent everytime
  it starts. There are no default values for the two objects 
  t11FcsFabricDiscoveryRangeLow and t11FcsFabricDiscoveryRangeHigh.
  So how is the behavioud if I issue a DiscoveryStart when these objects
  have not been SET yet? Should we define DEFVALs?

- Given the DESCRIPTION clause of t11FcsFabricDiscoveryStart, I 
  suggest to add  DEFVAL { noOp }

- I suppose that SETTING t11FcsDiscoveryStatus to one of
                     inProgress(1),
                     completed(2),
  would have no effect? I.e. it would be ignored?
  Whatever the intended behaviour is to be, we probably do best to
  be specific as to what we want an agent to do.

  I personally kind of like to add something to the MODULE-COMPLIANCE<
  which states that the WRITE-SYNTAX is  localOnly(3) and that
  the SYNTAX is all 3 values. I think that expresses that only the
  one value that makes sense can be SET/written.

  I personally might do a similar thing for t11FcsFabricDiscoveryStart,
  but that one at least explains what to do if I set the value to
  something that does not trigger an action.

- t11FcsDiscoveryStatus has no persistency (or so is my reading of
  the DESCRIPTION clause) and will be set to localOnly upon a restart?
  If so, it might be usefull to add a sentence about that, just to be
  explicit and clear.

- For objects t11FcsIeName and t11FcsIeDomainId, I wonder if a zero
  (i.e. zero length OCTET STRING) are really valid. If not, then we
  should add a SIZE and RANGE restriction.

- This definition seems strange:

  t11FcsIeFabricName  OBJECT-TYPE
    SYNTAX       FcNameIdOrZero
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
            "The Fabric_Name (WWN) of this Interconnect Element.
            When the Fabric_Name is unknown, this object contains
            the all-zeros value: x'00 00 00 00 00 00 00 00'."
    REFERENCE
            "ANSI INCITS xxx-200x, Fibre Channel - Generic Services 5,
            FC-GS-5 T11/Project 1677-D/Rev 8, section 6.2.3.2.5."
    DEFVAL { '0000000000000000'h }
    ::= { t11FcsIeEntry 5 }

  Because the SYNTAX used is a TC from RFC4044), that states:

   FcNameIdOrZero ::= TEXTUAL-CONVENTION
     STATUS current
     DESCRIPTION
             "The World Wide Name (WWN) associated with a Fibre Channel
             (FC) entity.  WWNs were initially defined as 64-bits in
             length.  The latest definition (for future use) is 128-bits
             long.  The zero-length string value is used in
             circumstances in which the WWN is unassigned/unknown."
    SYNTAX  OCTET STRING (SIZE(0 | 8 | 16))

  And so I would have expected that the t11FcsIeFabricName object would
  have been defined as:

  t11FcsIeFabricName  OBJECT-TYPE
    SYNTAX       FcNameIdOrZero
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
            "The Fabric_Name (WWN) of this Interconnect Element."
    REFERENCE
            "ANSI INCITS xxx-200x, Fibre Channel - Generic Services 5,
            FC-GS-5 T11/Project 1677-D/Rev 8, section 6.2.3.2.5."
    DEFVAL { "" }
    ::= { t11FcsIeEntry 5 }

  I do see in sect "6.2.3.2.5 Interconnect Element Fabric Name" of
  http://www.t11.org/ftp/t11/pub/fc/gs-5/06-192v2.pdf
    This standard does not define how this attribute is registered with
    the Fabric Configuration Server. The null value for the Interconnect
    Element Fabric Name attribute is 00 00 00 00 00 00 00 00h.

  So is the use of FcNameIdOrZero the proper syntax here??

- This is a real nit:
  t11FcsIeLogicalName  OBJECT-TYPE
    SYNTAX       OCTET STRING (SIZE (0..255))
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
            "The logical name of this Interconnect Element.
            When the logical name is unknown, this object contains
            the zero-length string."

  I would use a SYNTAX as follows:
    SYNTAX       OCTET STRING (SIZE (0 | 1..255))
  To indicate that zero has a special meaning.
  Ignore my ranting if you think this is nonsense.

- I see this:

  t11FcsIeMgmtAddrListIndex  OBJECT-TYPE
    SYNTAX       T11ListIndexPointer
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
            "The management address list for this Interconnect Element.
            This object points to an entry in the
            t11FcsMgmtAddrListTable."

  Reading the DESCRIPTIOn clause, I wonder why one would not use a 
  RowPointer. The fact is that the pointer does not point to "an entry"
  in the t11FcsMgmtAddrListTable, but to a SET of such entries.
  So I guess the DESCRIPTION clause could be clarified.

  This is true for more (may be all) cases where this TC T11ListIndexPointer
  is used.

- I see:
 
  t11FcsIeInfoList  OBJECT-TYPE
    SYNTAX       OCTET STRING (SIZE (0..252))
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
            "The information list for this Interconnect Element.
            This object contains the following substrings in order:
            vendor name, model name/number and release code/level,
            followed by zero or more substrings of vendor-specific
            information. Each substring is terminated with a byte
            containing a null value (x'00')."

  And that reads as if it is ASCII information to be (potentially) 
  consumed by human beings.  So in that case, the IETF wants it to
  be an internationalized string.  Comment?

- I see:

  t11FcsMgmtAddr  OBJECT-TYPE
    SYNTAX       SnmpAdminString
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
            "The management address of this entry.
            The format of this object may be based on the
            format of the Uniform Resource Locator (URL).
            For example, for SNMP, see RFC 4088."

  So it syas "the format MAY be based on..." (my emphasis on MAY).
  So, does that mean it may also be based on something else?
  How do I determine what the actual format is?

- SMICng gave a warning about the indexing of

  t11FcsPortListEntry  OBJECT-TYPE
    SYNTAX       T11FcsPortListEntry
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION
            "An entry which identifies that the port which has the
            port name, t11FcsPortName, is in a particular list of
            ports, which is known to a switch (identified by
            fcmInstanceIndex and fcmSwitchIndex)."
    INDEX   { fcmInstanceIndex,  fcmSwitchIndex,
              t11FcsPortListIndex, t11FcsPortName }
    ::= { t11FcsPortListTable 1 }

  I read Keiths explanation, which seemed fine. But now that I am
  reviewing the MIB module in details and try to understand things,
  now I am no so sure this is goodness.

  So, that t11FcsPortname is a value (embedded in the index) that
  should help me find more detailed info, right?
  So how do I find that info? I tyhink I need to go to the
  t11FcsPortTable, which is indexed by:

    INDEX   { fcmInstanceIndex, fcmSwitchIndex,
              t11FcsFabricIndex, t11FcsPortName }

  So assuming that the index values for fcmInstanceIndex, fcmSwitchIndex,
  are the same in both tables, I can see that I can pick up 3 index
  values from the list of t11FcsPortsList in the t11FcsPortsListTable.
  But I am missing the 3rd index of the t11FcsPortnameTable, namely
  t11FcsFabricIndex. So how am I going to wuickly pick that up?
  Or how exactly are the tables connected/linked?

  Maybe I need to study it deeper... but I'd prefer an explanation of
  the people who created these tables with the current indexing schemes.

- for
 
  t11FcsPortName  OBJECT-TYPE
    SYNTAX       FcNameIdOrZero
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION
            "The Port_Name (WWN) of the port for which this row
            contains information."

  I wonder if a zero value (zero length OCTET STRING) is really valid?
  If not, then we may need to limit it with a SIZE paramter aka
    SYNTAX       FcNameIdOrZero SIZE (8 | 16)

  But,  I do see that in sect "6.2.3.3.1 Port Name" of document
  http://www.t11.org/ftp/t11/pub/fc/gs-5/06-192v2.pdf, it says:

      The null value for the Port Name attribute is
      00 00 00 00 00 00 00 00h.

  So... is the SYNTAX of FcNameIdOrZero appropriate here? 
  In any event, the name SIZE seems to be fixed at 8 octets for the
  PortName, so at least one would then define the syntax as:

    SYNTAX       FcNameIdOrZero (SIZE (8))

- For:

  t11FcsPortModuleType  OBJECT-TYPE
    SYNTAX       Unsigned32 (0..255)
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
            "The port module type of this port."
    REFERENCE
            "ANSI INCITS xxx-200x, Fibre Channel - Generic Services 5,
            FC-GS-5 T11/Project 1677-D/Rev 8, section 6.2.3.3.4."

  It seems better to create a TC that ENUMerates the valid values?

- For:

  t11FcsPortSpeedCapab  OBJECT-TYPE
    SYNTAX       OCTET STRING (SIZE (2))

  It seems that the references document and section say that it is a BITS
  construct ??

- Same for t11FcsPortOperSpeed

- For:

  t11FcsPlatformName  OBJECT-TYPE
    SYNTAX       OCTET STRING (SIZE (0..255))

  It seems to me that the SYNTAX better be:

    SYNTAX       OCTET STRING (SIZE (0 | 3..256))

  because http://www.t11.org/ftp/t11/pub/fc/gs-5/06-192v2.pdf
  section 6.2.3.4.2 tells me:

    The Platform Name attribute may be registered using the
    protocol described in 6.2.2.3. The null value for the
    Platform Name attribute is a zero-length Platform Name.

  So maybe that is how we can get a length of zero. But I am
  not even sure about that. It is also possible that the
  first byte would be valued at zero. Is the format octet 
  included in this case? Not clear from the PDF file for me.

  If I understand the PDF file correctly, then (it speaks about
  reserved to be of length 254-m) then there are 2 octets (1 for
  length, one for format) plus 254 for the actual name. So that
  would be a max size of 256 in my view.

- Several objects in the t11FcsPlatformTable
  (like t11FcsPlatformVendorId, t11FcsPlatformProductId , etc)
  suggest (based on teh SYNTAX of SnmpAdminString) that the value
  can be an internationalized human readable string.
  But the table 121 in the PDF file, section 6.2.3.4.5 seems to
  tell me that they are all ASCII. So what is it?
  I know that IETF is not happy with using DisplayString, but if
  that is what the underlying technology (outside IETF) uses, then
  we should at least not suggest that it is different.
  I could accept that we say "we want to be prepared for UTF-8 
  strings, but for now it is ASCII as per DC-GS-5)". But it 
  might be good to then explicitly state so in the DESCRIPTION
  clauses of these objects.

  At the other hand, the objects are all read-only, and so even
  if they only present ASCII data (in UTF-8 that is exactly the
  same), then it woul still be fine.

  I also wonder if the length for t11FcsPlatformVendorId,
  t11FcsPlatformProductId can actually be zero, because table
  121 says that these are REQUIRED fields.

- For:

  t11FcsPlatformFC4Types  OBJECT-TYPE
    SYNTAX       OCTET STRING (SIZE (0 | 32))

  should be 
    SYNTAX       OCTET STRING (SIZE (0 | 20))

  that is what I read in table 121 of
  http://www.t11.org/ftp/t11/pub/fc/gs-5/06-192v2.pdf

- Object t11FcsNodeName. Is it supposed to represent this:

  6.2.3.4.6 Platform Node Name
     The format of the Platform Node Name attribute, as used by
     the Fabric Configuration Server, shall be identical to the
     Name_Identifier format defined in FC-FS. Zero or more
     Platform Node Name attributes may be associated with a 
     Platform object. Node Names are registered to associate
     a Platform with the Nodes.
     This attribute may be registered using the protocol described
     in 6.2.2.3. The null value for the platform Node Name
     attribute is 00 00 00 00 00 00 00 00h

  That last description of 8 hex zeroes for a null value seems
  to conflict with the underlying 

    SYNTAX       FcNameIdOrZero

  that you are using in the MIB.

- W.r.t.
 
  t11FcsNotifyControlTable OBJECT-TYPE
    SYNTAX       SEQUENCE OF T11FcsNotifyControlEntry
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION
            "A table of control information for notifications
            generated due to Fabric Configuration Server events.

            Values written to objects in this table should be
            persistent/retained over agent reboots."

  I have the same questions/concerns about the "should be persistent"
  as I had for the RSCN MIB module. 
  So we can probably resolve this one in the same way (or leave it
  if everyone thinks that I worry too much).

- It might be good to rename the notifications (for example)

    t11FcsReqRejectNotify NOTIFICATION-TYPE

  from xxxxNotify to xxxxNotification.
  But I agree that this is really nitpicking. 
  For consistency with (most) other MOB modules and notifications
  I think my argument makes sense though.

- For the notifications (and the control there-of), it again seems
  that the Transport Area may want us to say somehting about the
  max number of nitifications to be expected per second/minute/xxx
  or to provide a control varianle that a NMS can SET.

Bert

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

---

From: "Wijnen, Bert (Bert)" <[email-masked]>
Date: Wed, 6 Sep 2006 14:51:38 +0200

Inline

> -----Original Message-----
> From: Keith McCloghrie [mailto:[email-masked]]
> Sent: Wednesday, September 06, 2006 00:04
> To: [email-masked]
> Cc: [email-masked]
> Subject: Re: [imss] WG Last Call: draft-ietf-imss-fc-fcs-mib-00.txt
> 
> 
> Bert,
> 
> Thanks for the comments.  My responses are below.
> 
> Keith.
> -----------------
> 
> Oops.  All of this WG's other recent drafts have the required 
> boilerplate;
> I'm not sure how this one slipped through without it.
> 

Thanks

> I named them to be consistent with FcPortType, and, *if* we 
> were updating
> RFC4044, then I'd put them in there, but we're not.   So, rather than
> add a "small SMI comment", I'd prefer to change their names.
> 

Sounds good to me

> OK.
thanks

> The reason I added the ASN.1 comment was to dispel all ambiguity,
> i.e., to make it clear that the definition intentionally uses the
> default range.  Thus, there is no reason to include the default range
> explicitly in the syntax.  Why do we have a default range if we're not
> allowed to use it ??
> 

You are allowed to do so. I normally prefer to make it 100%
clear (if possible in machine readable form)
And... since you agree with the below, to be consistent with
other xxxOrZero TCs (like InterfaceIndexOrZero for example).

But I won't loose sleep if you do not do this.
I just wrote how I looked at it to try and help be clear and
consistent.

> OK, I'll rename the TC to T11ListIndexPointerOrZero.
> 

Thanks

> Claudio said this morning that revision 8.5 is the final one.
> So, I need to go ahead and update the MIB based on Rev 8.5,
> including adding any new enumerations which have been defined
> since Rev 8.0.
> 

Thanks. I had expected something like that ;-)

> OK, I'll change:
>             "The discovery by a particular switch operates
>             within all existing Fabrics that have a fabric
>             index within a specific range.  ...
> to:
>             "The discovery by a particular switch operates
>             within all existing Fabrics that have a fabric
>             index within a specific inclusive range.  ...
> 

thanks

> I think this is already available since 'inProgress' is one of the
> defined values for t11FcsDiscoveryStatus.
> 

Ah... yes... I see that now
Sorry I didn't match them earlier

> Just adding DEFVALs would be a temptation to write sloppy 
> applications,
> because an NMS can not be sure whether a particular entry has 
> been used
> or not since the last reboot.  Thus, invoking DiscoveryStart without
> checking the values of RangeLow and RangeHigh, would be very sloppy.
> Given that an application needs to check, then it also has to change
> the values if they're wrong.  Thus, the simplest way to write such an
> application is to always specify the range explicitly (i.e., write
> RangeLow and RangeHigh) at the same time as invoking DiscoveryStart.
> 
> So, I propose to add a recommendation to the DESCRIPTION like this:
> 
>   t11FcsFabricDiscoveryStart  OBJECT-TYPE
>       SYNTAX       INTEGER {
>                        start(1),
>                        noOp(2)
>                    }
>       MAX-ACCESS   read-write
>       STATUS       current
>       DESCRIPTION
>               "This object provides the capability to trigger 
> the start
>               of a discovery by a Fabric Configuration 
> Server.  If this
>               object is set to 'start', then the discovery is 
> started on
>               those fabrics which have their fabric index value in the
>               range specified by t11FcsFabricDiscoveryRangeLow and
>               t11FcsFabricDiscoveryRangeHigh.  It is recommended that
>               whenever an instance of this object is set to 'start',
>               that the desired range be concurrently specified by
>               setting the corresponding instances of

Works for me.

> Since the value when read is always 'noOp', to specify a DEFVAL would
> either be redundant, or worse, it would weaken the definition 
> because a
> DEFVAL is only advisory, whereas the statement:  "the value when read
> is always 'noOp'" is mandatory.
> 

Agree. Thanks for reminding me the exact details

> I prefer to add a sentence to the DESCRIPTION of 
> t11FcsDiscoveryStatus,
> like this:
> 
>             It is an error for a manager to set the value of this
>             object to anything other than 'localOnly'."
> 

It kind of works for me.
But was there not this (maybe it is just implied in my earleir IBM
snmp implementation, but I do recall I did this because of a report
in one of the interoperability tests we had) fact that one would/should
always be able to do a SET for a value that was just READ?

> It already has this sentence:
> 
>             Initially when the switch comes up, all instances of this
>             object have the value: 'localOnly'
> 
> Do you want me to change "switch comes up" to "agent restarts" ??
> 

Well, for sure when the agent restarts, the switch might have just stayed
in the same state (already up) I guess.

Either way... in any event, it was not immediately clear to me when
I read it the first time. WIth your explanation, I can see it could
be read that way.
So Up to you if you want to clarify.

> FC-GS-5 says:
>   6.2.3.2.1 Interconnect Element Name
> 
>   The format of the Interconnect Element Name attribute, as 
> used by the
>   Fabric Configuration Server, shall be identical to the 
> Name_Identifier
>   format defined in FC-FS. If the Interconnect Element is a 
> Switch (see
>   FC-SW), the Interconnect Element Name attribute shall be the
>   Switch_Name of the Switch.
> 
>   This standard does not define how this attribute is 
> registered with the
>   Fabric Configuration Server.  The null value for the Interconnect
>   Element Name attribute is 00 00 00 00 00 00 00 00h.
> 
> and
> 
>   6.2.3.2.3 Interconnect Element Domain Identifier
> 
>   The format of the Interconnect Element Domain Identifier 
> attribute, as
>   used by the Fabric Configuration Server, shall be identical to the
>   Domain Identifier format defined in FC-SW-3.
> 
>   This standard does not define how this attribute is 
> registered with the
>   Fabric Configuration Server.  The null value for the Interconnect
>   Element Domain Identifier attribute is 00h.
> 
> Since t11FcsIeDomainId can have a value of zero, FcDomainIdOrZero
> (which is defined as "SYNTAX  Integer32 (0..239)")  should not be
> restricted.
> 
> For t11FcsIeName, the "null" value is specified as all zeros, rather
> than the zero-length value.  So, yes, I'll add a restricted range:
> 
>   t11FcsIeName  OBJECT-TYPE
>       SYNTAX       FcNameIdOrZero (SIZE(8 | 16))
> 

Thanks

> I'll add a restricted range here too.
> 
>       SYNTAX       FcNameIdOrZero (SIZE(8 | 16))
> 

It works syntax wise. It sort of conflicts with the zero-length-string
I guess. But at least SYNTAX wise we're now in sync with the TC again.

Thanks.

> It is sufficient (and simpler) for this TC to be an 
> Unsigned32, whereas RowPointer is an OID.
>  
That is true and so I undestand somewhat why you want to do this.

> As a clarification, I've added this sentence to 
> T11ListIndexPointerOrZero's
> DESCRIPTION:
> 
>               Note that such a table could have one row per list, or
>               it could have one row per element of a list.
>  

Thanks

> FC-GS-5 requires the individual values to be ASCII strings (terminated
> by nulls).  I'll edit the DESCRIPTION to be:
> 
>             The value of this object is formatted as specified in
>             FC-GS-5, i.e., it contains the following substrings in
>             order:  vendor name, model name/number and release
>             code/level, followed by zero or more substrings of
>             vendor-specific information. Each substring is terminated
>             with a byte containing a null value (x'00')."
> 

I think it is indeed good to add that explanation.
Wonder how IESG will react to the ASCII for human-consumption.

Does T11 not worry about international (non-ASCII based)  people?

> On re-reading FC-GS-5, I see that it's required to be a URL, and
> it's the use of 4088 which is not required.  So, I'll change it to:
> 
>             The format of this object is a Uniform Resource Locator
>             (URL), e.g., for SNMP, see RFC 4088."
> 

But is a URL normally represented by UTF-8?
I doubt it?

I know that (RFC 2788) has:

  -- Uniform Resource Locators are stored in URLStrings.

  URLString ::= TEXTUAL-CONVENTION
      DISPLAY-HINT "255a"
      STATUS current
      DESCRIPTION
          "A Uniform Resource Locator represented in accordance
           with RFCs 1738 and 2368, presented in the NVT ASCII
           charset defined in RFC 854."
      SYNTAX OCTET STRING (SIZE (0..255))

Would that not be more appropriate?

There is currently a discussion going on w.r.t. URL TC on SIP 
list and some MIB doctors (like Juergen and Dan) are also involved.

> >   So how do I find that info? I think I need to go to the
> To generate an answer to your question, I needed to re-review the
> structure of the tables, and in doing so, I now think that the current
> structure is more open-ended/flexible than it needs to be -- having a
> less open-ended structure would make the MIB simpler.  Specifically,
> the MIB currently has a table whose only purpose is to identify a list
> of (not necessarily related) ports.  However,
> 
> - each IE is either a virtual IE attached to one virtual Fabric, or
>   (if virtual Fabrics are not in use) it's a physical IE.
> - each port is either a virtual port attached to one virtual 
> Fabric, or
>   (if virtual Fabrics are not in use) it's a physical port.
> - GS-5 mentions that an IE has a "port list" and has a dotted 
> line from the
>   "Interconnect Element Object" to the "Port Object" in its 
> "Figure 7 --
>   Interconnect Element and Port attributes".
> - However, all ports in an IE's port list will be attached to 
> the same 
>   Fabric as that IE is attached to.  In other words, the relationship
>   between IEs and ports is hierarchical.
> - Thus, it would be simpler to:
> 
>   - delete the t11FcsPortListTable,
>   - delete the t11FcsIePortListIndex object, and
>   - insert t11FcsIeName into the INDEX of the t11FcsPortTable, i.e.,
>     change the INDEX-ing of the t11FcsPortTable to be:
> 
>       INDEX   { fcmInstanceIndex, fcmSwitchIndex, t11FcsFabricIndex,
>                 t11FcsIeName, t11FcsPortName }
> 
> Increasing the INDEX clause from four to five objects makes 
> it a little
> more cumbersome, but the length is still far short of the 
> maximum length.
> 
> With these changes, while there will no longer be any explicit mention
> of a "port list" in the MIB, the list of ports on an IE will be all
> the rows in t11FcsPortTable which have the same values for the first
> four index objects, i.e., the value of t11FcsPortName will be the only
> index value for which they differ.  So, a "port list" is (implicitly)
> a set of adjacent rows in the t11FcsPortTable.
> 
> David, since this is a MIB design change, may I suggest you ask the WG
> for approval of this as a separate/individual question.
> 

Good to read your re-review and conclusion that things can be
organized more hierarchically and simpler.

The Warning about "inconsistent indexing" (or whatever the exact warning was)
from SMICng is one that I always take with a grain of salt, but it has turned
out that it is always good to check and make sure that the indexing scheme
that one has developed is indeed the best that we can do.

Thanks
> A length of 16 is still a possibility -- section 6.2.3.3.1 refers to
> FC-FS, in which section 15 (table 66) includes one format which has a
> length of 128 (bits).
> 
> So, I'll chaneg it to:
>  
>       SYNTAX       FcNameIdOrZero (SIZE(8 | 16))
> 
OK, thanks

> The choice between using either an enumerated value, or, a numeric
> value to be looked up in another specification, is a trade-off of
> convenience versus maintenance.  For something which changes
> frequently, it's better that the MIB *not* contain a list which is
> frequently out-of-date; for something which changes infrequently, it's
> better to have the convenience of enumeration.
>  
> Specifically, for those objects defined in this MIB as enumerations,
> when a new value is defined in T11, the new value cannot be 
> used in the
> MIB until the MIB is updated.  When the MIB syntax is Unsigned32,
> new values can be used in the MIB as soon as they are defined by T11.
> 
> So, we intentionally chose to specify some objects in this MIB as
> enumerations, and others as binary values, based on the frequency at
> which new values can be expected to be defined and used -- not just in
> the now completed GS-5, but also in GS-6 and its successors.
> 

OK, I can accept that. AS long as we know why we do things, I am fine.
Another way to address the "is updated often" is of course to make it
an external TC (in a separate module, possibly maintained by IANA or
some registration authority). Up to the WG as to what they want to do.

> While the Capability could be a BITS, OperSpeed would only 
> ever have one
> bit set, i.e., not a BITS.  However, both of these are 
> further examples of
> the enumerated versus numeric trade-off mentioned above.  
> That is, port
> speed is another area where new enumerations can be expected and will
> need to be used.
> 

Same response as above for the enumeration

> Many of the format specifications in the GS-5 spec. are like this:
> 
>               Logical Name length (m)     1
>               Logical Name                m
>               Reserved                  255-m
> 
> where the aggregate length (of the three sub-fields) is 256 bytes.
> 
> So, the way that I interpret the Platform Name field:
> 
>               Platform Name length (m)     1
>               Platform Name                m
>               Platform Name Format         1
>               Reserved                   254-m
> 
> is similarly, to have an aggregate length is 256 bytes.  
> Therefore, the
> correct MIB syntax is:
> 
>      SYNTAX       OCTET STRING (SIZE (0..254))
> 
> where the range is the value of m.
> 

So you will not include the "Format" octet?
So how is an NMS supposed to figure out the format?

> >   suggest (based on the SYNTAX of SnmpAdminString) that the value
> It's the format as specified in section 6.2.3.4.5, which is a
> subset of SnmpAdminString, which I believe means that using
> SnmpAdminString as the syntax is fine.
> 

I understand that ASCII does indeed fit into an SnmpAdminString.
So there is no SYNTAX error from that point of view.
It is just that (at least I, but I expect others as well) when
I see SnmpAdminString I think "human readable internationalized UTF-8"
So it sort of puts the reader/operator/apps-developer on the wrong
foot I think. More below..

> >   same), then it would still be fine.
> 
> How about I leave it as SnmpAdminString, and point to GS-5 for
> the definition of which characters are valid:
> 
>             "The identifier of the vendor of this platform, in
>             the format specified by FC-GS-5."
> 

Works for me.
And if T11 then ever makes it internaionalized, it possibly still
works with this object.

> The table gives their minimum length when they are present, *but*
> a "Platform Attribute Block" doesn't necessarily contain them all.
>  

OK. I did not find that so quickly in the T11 spec. But I believe you
(i.e. I am too lazy to go check again).

> The text which follows the table says:
> 
>    Supported FC-4 Types: This is an 8 word (256 bit) bit mask that
>    indicates what FC-4 types are supported on this platform 
> (see 5.2.3.8).
>    FCP-2 (FC-4 type 08h) is represented by bit 8 of word 0. The Fabric
>    Configuration Server shall not attempt validation of the FC-4 Types
>    attribute, and any value shall be accepted for this attribute.
> 
> I think the table has a typo.
> 
I see. So someone will pick up the typo-problem with T11 I assume?

> Ok, I'll change it to:
>       SYNTAX       FcNameIdOrZero (SIZE(8 | 16))
> 
Thanks

> OK.

So what was the solution? Leave it as is and conclude that I worry 
too much? This is what you and I discussed about this:

> > > Bert:
> > >   Do we all think that "should be retained over agent reboots" is
> > >   good (and deterministic) enough? It is a lowercase should, and so 
> > >   any implementation that does not keep this over a reboot seems
> > >   still compliant. In other words, I have no deterministic way
> > >   at an NMS to figure out if this is persistent or not.
> >  
> > Keith:
> > Some systems store this type of information in an ASCII-formatted
> > "configuration file" which they keep in non-volatile memory, but also
> > have the capability for the file to be reloaded at boot time.  One of
> > the reasons why such configuration files have typically (until recently)
> > been formatted in ASCII is so that they can be edited by an administrator
> > to change the parameters prior to the device dowloading it (but
> > presumably, the same can now be done with XML-formatted files and
> > XML-based editors.)  In such a situation, you are correct that there is
> > no deterministic way for the agent to tell an NMS whether the 
> > parameter was persistent.
> > 
> 
> Bert:
> Mmm.. I had not even considered that. That is, that the "persistent info"
> can manually (or possibly by some other means, like CLI, NETCONF,
> what have you) be changed. I guess such is always the case, in that
> if we declare (in a MIB module) that data MUST be persistent/nonVolatile,
> that some admin can come in and whipe out (or change) the file 
> (or nonVolatile memory) that contains the "persistent data" 
> and it is gone. This is true for all MIB modules we have defined, 
> even for those that have a StorageType object inclued in a row.
> 
> What I had in mind was, that an implementation can decide to NOT save any
> data (that has been changed via an SNMP-SET) in non-volatile memory. 
> The desription clause does leave that open to any implementer.
> 
> I know this same sort of discussion has happened in other WGs.
> And I would rather see a "must" than a "should" in the text.
> But I am not gonna loose sleep if you keep it as is.
> 

So I still won't loose sleep over it... 
Yet I would still prefer "must". 
Just me I guess.

> I chose to use t11FcsReqRejectNotify because 
> t11FcsReqRejectNotification
> is 33 characters long, and I think using t11FcsReqRejectNotify is a
> clearer abbreviation than t11FcsReqRejNotification.
> I guess I could go for:
> 
>      t11FcsRqRejectNotification NOTIFICATION-TYPE
> 
> if you prefer.
> 

I guess ity is a subjective matter of taste.
I personally don't worry about the 32-character length limit that we
used in the old (many tyears ago) days.

> >   For consistency with (most) other MOB modules and notifications

I meant MIB, not MOB of course ;-)

> Their motivation is good, and is applicable to data-plane events, but
> asking for a max number per unit time for every type of notification
> is too simplistic.  E.g., it's unreasonable to ask how many
> t11FcsDiscoveryCompleteNotify notifications can be generated in a
> second/minute/xxx -- how big is the network, how many virtual fabrics
> need to be discovered, how quickly can the operator ask for another
> discovery after the last one completes ??
> 
> If a max rate is specified by an NMS, such that notifications can be
> suppressed due to their volume, then there needs to be some mechanism
> for the NMS to know that suppression(s) have happened/are happening,
> which means more notification-types and objects need to be defined.
> That is, it increases the complexity, which is not warranted unless
> there can really be a "flood" of notifications.
> 
> For notifications, like all the ones in this MIB, which are generated
> due to control plane events (and providing that none of them are able
> to start a chain-reaction), the extra complexity is not warranted.
> 

OK, I can buy that argument.
If I were Transport AD, I would then ask for a paragraph or two that
explains why this is not an issue for this MIB module.
See, that explains it to everyone, and at the same time shows that
indeed the WG considered it and consciously decided that such is not
needed. 
Oh well.... I guess now I sound too much as if I were still an AD
Sorry about that ;-)

Bert