Subject: [Bridge-mib] RE: [802.1] Alex Ruzin MSTP MIB Proposal - explanations

From: [email-masked] (Alex Ruzin)
Date: Wed, 10 Nov 2004 14:57:33 +0200

(Sorry for HTML, but I want you to see a nice diagram below).

I dare to provide a number of explanations for ruzin-mstp-mib-00.txt from
http://www.ieee802.org/1/files/public/docs2004/ruzin-mstp-mib-00.txt

This MIB contains 6 parts: mstpTraps, mstpGen, mstpPortTable,
mstpMapTable, mstpXstTable and mstpXstPortTable:

1. mstpTraps help to get information about changes in MSTP active
    topology asynchronous notifications. Conditions and parameters seem to
be
    clear, while may be discussed.
2. mstpGen. This group is dedicated to manage Bridge Protocol Entity,
    described in 12.8.1.1 and 12.8.1.3. In a certain sense this group
reflects
    CIST, but without objects, that may be managed in mstpXstTable, see
below.
3. mstpPortTable allows to manage physical ports, as it is described in
    1.8.2.1., 1.80.2.3., 1.8.2.5 and 12.8.2.7. In a certain sense this group
reflects
    CIST ports, but without objects, that may be managed in
mstpXstPortTable,
    see below.
4. mstpMapTable serves for MSTI List management. It allows to build/delete
    instances and to map FIDs/VIDs (12.12). Actually, this table reflects
MST
    Configuration Table in format, that is defined in 13.7 item 4).
    It must be admitted that I "grabbed" the idea of ranges in this table
    from malhotra-mstpmib-01.txt
5. mstpXstTable reflects instances - both CIST and MSTIs (12.8.1.2 and
12.8.1.4).
    It contains objects, common for these both types of instances, for
example,
    mstpXstBridgePriority.
6. mstpXstPortTable is dedicated to manage ports inside instances - both
CIST
    and MSTIs (12.8.2.2., 12.8.2.4 and 12.8.2.6). It contains objects,
describing
    port and common for these both types of instances, for example,
    mstpXstPortState or mstpXstPortPriority. Note, that this table has
    mstpXstPortInternalRootCost, while mstpPortAdminExternalPathCost belongs
    to mstpPortTable.

Important, that the index mstpXstId in mstpXstTable and mstpXstPortXstId in
mstpXstPortTable have type MstiOrCistInstanceIndex : "value of zero"
corresponds to CIST.

Now, I'd like to mention in passing objects, that are not defined in .1s
Let us begin from less questionable.
1. mstpPortAutoEdge. It came from new .1d 917.13.3) and I don't expect
    many objections here :)
2. mstpXstPortRole. The exploitation of MSTP shows, that managers
    of complicated networks want to know reasons of ports states
    assignations. So, they concerned with ports roles. In my opinion, this
    object is important not only debug purposes.
3. The similar destination have so called BpduCounters. Let's say, when
    a port stops to be RootPort, a manager may see, that receive
BpduCounters
    on this port do not rise. He may trace bridges and select a point of
    failure. And what is more, I'd define an object
mstpXstPortRxMstBpduCounter
    to count MSTI Configuration Messages. Sure, all these counters are
optional:
    if an agent cannot provide for them it must return zero.
4. mstpGenCapable. A manager has to know, what version of STP the bridge
    supplies. If it supplies a number of versions (see mstpGenForceVersion),
    the eldest one must be returned.
5. mstpGenForceVersion. If the bridge can supply a number of versions of STP
    (let's say, it has a number of corresponding engines) a manager may want
    to enable one of them (and of course to disable all others) he may use
with
    this object. This object also show which engine is currently enabled.
6. The value forceNonStp(0) of object mstpGenForceVersion. I remember a
    few of dispute both in IETF and in IEEE : what is STP disabled into a
bridge.
    I know and share a position of IEEE, that there may not be bridge with
STP
    disabled, nevertheless...
    The term "Spanning Tree Protocol Emulation" here means, that a bridge is
    transparent for received BPDUs (does flooding: transmits from all ports,
without
    tags and without VLAN participation) and processes Topology Change bit:
    does appropriate FDB flushing.
7. mstpPortAdminNonStp. Certain port may be configured as a port, that does
not
    participate in any STP operations: a) it discards all BDPUs, b) does not
send
    BPDUs and c) is always in forwarding state. This option may help to
termination
    point of STP domain.
8. mstpXstMasterPort. Servers the same purposes as mstpXstPortRole and
    BpduCounters. On the other hand, is not less helpful than
mstpXstRootPort;
    furthermore it may help to indicate fallacious instance mapping (when a
    manager expects bridges in the same region, this object must be zero).
9. Both mstpXstRootPort and mstpXstMasterPort have type PortIndexOrZero.

Brief structure of the MIB (result of "snmptranslate -Tp"):
+--mstp(XXX)
   |
   +--mstpTraps(0)
   |  |
   |  +--dos1sNewRootBridge(1)
   |  +--dos1sNewRootPort(2)
   |  +--dos1sTopologyChange(3)
   |
   +--mstpGen(10)
   |  |
   |  +-- -RW- INTEGER   mstpGenBridgeMaxAge(2)
   |  |        Textual Convention: Timeout
   |  |        Range: 600..4000
   |  +-- -RW- INTEGER   mstpGenBridgeHelloTime(3)
   |  |        Textual Convention: Timeout
   |  |        Range: 100..1000
   |  +-- -RW- INTEGER   mstpGenBridgeForwardDelay(4)
   |  |        Textual Convention: Timeout
   |  |        Range: 400..3000
   |  +-- -R-- INTEGER   mstpGenMaxAge(8)
   |  |        Textual Convention: Timeout
   |  |        Range: 600..4000
   |  +-- -R-- INTEGER   mstpGenHelloTime(9)
   |  |        Textual Convention: Timeout
   |  |        Range: 100..1000
   |  +-- -R-- INTEGER   mstpGenForwardDelay(10)
   |  |        Textual Convention: Timeout
   |  |        Range: 400..3000
   |  +-- -RW- Integer32 mstpGenMaxHops(14)
   |  |        Range: 4..30
   |  +-- -RW- INTEGER   mstpGenHoldTime(15)
   |  |        Textual Convention: Timeout
   |  |        Range: 100..1000
   |  +-- -RW- INTEGER   mstpGenMigrateTime(16)
   |  |        Textual Convention: Timeout
   |  |        Range: 100..1000
   |  +-- -RW- EnumVal   mstpGenPathCostDefault(18)
   |  |        Values: pathCostDefault8021d1998(1),
pathCostDefault8021t2001(2)
   |  +-- -R-- EnumVal   mstpGenCapable(19)
   |  |        Values: nonStp(0), dot1d1998(1), dot1w(2), dot1d2004(3),
   |  |                dot1s(4), dot1q(5), unknown(6)
   |  +-- -RW- EnumVal   mstpGenForceVersion(20)
   |  |        Values: forceNonStp(0), forceLegacyDot1d(1),
   |  |                forceDot1w(2), autoDot1s(3), unknown(4)
   |  +-- -RW- String    mstpGenCfgName(21)
   |  |        Textual Convention: DisplayString
   |  |        Size: 32
   |  +-- -RW- Integer32 mstpGenRevLevel(22)
   |  +-- -R-- String    mstpGenReginalRoot(26)
   |  |        Textual Convention: BridgeId
   |  |        Size: 8
   |  +-- -R-- Integer32 mstpGenExternalRootCost(27)
   |
   +--mstpPortTable(11)
   |  |
   |  +--mstpPortEntry(1)
   |     |  Index: mstpPortIndex
   |     |
   |     +-- -R-- Integer32 mstpPortIndex(1)
   |     |        Textual Convention: PortIndex
   |     |        Range: 1..2147483647
   |     +-- -RW- EnumVal   mstpPortAdminMACEnable(2)
   |     |        Textual Convention: TruthValue
   |     |        Values: true(1), false(2)
   |     +-- -R-- EnumVal   mstpPortOperMACEnable(3)
   |     |        Textual Convention: TruthValue
   |     |        Values: true(1), false(2)
   |     +-- -R-- TimeTicks mstpPortUpTime(4)
   |     +-- -RW- Integer32 mstpPortAdminExternalPathCost(5)
   |     |        Range: 0..200000000
   |     +-- -R-- Integer32 mstpPortOperExternalPathCost(6)
   |     +-- -RW- EnumVal   mstpPortAdminEdge(7)
   |     |        Textual Convention: TruthValue
   |     |        Values: true(1), false(2)
   |     +-- -R-- EnumVal   mstpPortOperEdge(8)
   |     |        Textual Convention: TruthValue
   |     |        Values: true(1), false(2)
   |     +-- -RW- EnumVal   mstpPortAutoEdge(9)
   |     |        Textual Convention: TruthValue
   |     |        Values: true(1), false(2)
   |     +-- -RW- EnumVal   mstpPortAdminPointToPoint(10)
   |     |        Values: forceTrue(0), forceFalse(1), auto(2)
   |     +-- -R-- EnumVal   mstpPortOperPointToPoint(11)
   |     |        Textual Convention: TruthValue
   |     |        Values: true(1), false(2)
   |     +-- -RW- INTEGER   mstpPortHelloTime(12)
   |     |        Textual Convention: Timeout
   |     |        Range: 100..1000
   |     +-- -RW- EnumVal   mstpPortAdminNonStp(13)
   |     |        Textual Convention: TruthValue
   |     |        Values: true(1), false(2)
   |     +-- -RW- EnumVal   mstpPortProtocolMigration(14)
   |     |        Textual Convention: TruthValue
   |     |        Values: true(1), false(2)
   |     +-- -R-- Counter   mstpPortRxTcnBpduCounter(15)
   |     |        Textual Convention: BpduCounter
   |     +-- -R-- Counter   mstpPortRxCfgBpduCounter(16)
   |     +-- -R-- Counter   mstpPortRxRstBpduCounter(17)
   |     +-- -R-- Counter   mstpPortRxMstBpduCounter(18)
   |     +-- -R-- Counter   mstpPortTxTcnBpduCounter(19)
   |     +-- -R-- Counter   mstpPortTxCfgBpduCounter(20)
   |     +-- -R-- Counter   mstpPortTxRstBpduCounter(21)
   |     +-- -R-- Counter   mstpPortTxMstBpduCounter(22)
   |
   +--mstpMapTable(12)
   |  |
   |  +--mstpMapEntry(1)
   |     |  Index: mstpMapMSTiID, mstpMapVlanRangeIndex
   |     |
   |     +-- ---- Integer32 mstpMapMSTiID(1)
   |     |        Textual Convention: MstiInstanceIndex
   |     |        Range: 1..64
   |     +-- ---- Integer32 mstpMapVlanRangeIndex(2)
   |     |        Range: 1..4094
   |     |
   |     +--mstpMapVlanMin(3)
   |     |
   |     +--mstpMapVlanMax(4)
   |     |
   |     +-- CR-- EnumVal   mstpMapRowStatus(9)
   |              Textual Convention: RowStatus
   |              Values: active(1), notInService(2), notReady(3),
   |                      createAndGo(4), createAndWait(5), destroy(6)
   |
   +--mstpXstTable(13)
   |  |
   |  +--mstpXstEntry(1)
   |     |  Index: mstpXstId
   |     |
   |     +-- ---- Integer32 mstpXstId(1)
   |     |        Textual Convention: MstiOrCistInstanceIndex
   |     |        Range: 0..64
   |     +-- -RW- Integer32 mstpXstBridgePriority(2)
   |     |        Range: 0..61440
   |     +-- -R-- String    mstpXstBridgeId(3)
   |     |        Textual Convention: BridgeId
   |     |        Size: 8
   |     +-- -R-- String    mstpXstDesignatedRoot(4)
   |     |        Textual Convention: BridgeId
   |     |        Size: 8
   |     +-- -R-- String    mstpXstDesignatedBridge(5)
   |     |        Textual Convention: BridgeId
   |     |        Size: 8
   |     +-- -R-- Integer32 mstpXstInternalRootCost(6)
   |     +-- -R-- Integer32 mstpXstRootPort(7)
   |     |        Textual Convention: PortIndexOrZero
   |     |        Range: 0..2147483647
   |     +-- -R-- Integer32 mstpXstMasterPort(8)
   |     |        Textual Convention: PortIndexOrZero
   |     |        Range: 0..2147483647
   |     +-- -R-- TimeTicks mstpXstTimeSinceTopologyChange(11)
   |     +-- -R-- Counter   mstpXstTopologyChangesCount(12)
   |     +-- -R-- EnumVal   mstpXstTopologyChangeFlag(13)
   |              Textual Convention: TruthValue
   |              Values: true(1), false(2)
   |
   +--mstpXstPortTable(14)
      |
      +--mstpXstPortEntry(1)
         |  Index: mstpXstPortXstId, mstpXstPortIndex
         |
         +-- ---- Integer32 mstpXstPortXstId(1)
         |        Textual Convention: MstiOrCistInstanceIndex
         |        Range: 0..64
         +-- -R-- Integer32 mstpXstPortIndex(2)
         |        Textual Convention: PortIndex
         |        Range: 1..2147483647
         +-- -R-- EnumVal   mstpXstPortState(3)
         |        Values: disabled(1), discarding(1), learning(2),
forwarding(3), unknown(4)
         +-- -R-- EnumVal   mstpXstPortRole(4)
         |        Values: disabled(1), alternate(2), backup(3), root(4),
         |                designated(5), master(6), nonStp(7), unknown(8)
         +-- -R-- String    mstpXstPortDesignatedRoot(6)
         |        Textual Convention: BridgeId
         |        Size: 8
         +-- -R-- Integer32 mstpXstPortExternalRootCost(7)
         +-- -R-- String    mstpXstPortRegionalBridge(8)
         |        Textual Convention: BridgeId
         |        Size: 8
         +-- -R-- Integer32 mstpXstPortInternalRootCost(9)
         +-- -R-- String    mstpXstPortDesignatedBridge(10)
         |        Textual Convention: BridgeId
         |        Size: 8
         +-- -R-- String    mstpXstPortDesignatedPort(14)
         |        Textual Convention: PortId
         |        Size: 2
         +-- -RW- Integer32 mstpXstPortPriority(15)
         |        Range: 0..255
         +-- -RW- Integer32 mstpXstPortAdminInternalPathCost(16)
         |        Range: 0..200000000
         +-- -R-- Integer32 mstpXstPortOperInternalPathCost(17)

On Wednesday, November 03, 2004 4:15 PM  Congdon, Paul T (ProCurve) wrote:
> I've uploaded Alex Ruzin's MSTP MIB.  Note that this is slightly
> different than the MIB that Alex cut-and-pasted to a previous email.
> The document may be retrieved at:
>
> http://www.ieee802.org/1/files/public/docs2004/ruzin-mstp-mib-00.txt

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

---

From: "David B Harrington" <[email-masked]>
Date: Wed, 10 Nov 2004 14:56:56 -0500

Hi Alex,
 
Thanks for the explanation.
 
As Bridge WG co-chair, I need to address the MSTP MIB work as we
transition development of MIB  modules for 802.1 technologies from
IETF to IEEE. 
The MSTP-MIB is out of scope for the IETF BridgeMIB WG, so technical
discussion of proposals should not be posted to the Bridge WG mailing
list. 

The appropriate mailing list for MSTP-MIB discussion is
[email-masked].
To subscribe to the STDS-802-1-L list, go to
http://www.ieee802.org/1/email-pages/
To see the general information about 802,1, including how they work
and how to participate, go to http://www.ieee802.org/1/
 
Currently, the discussion on STDS-802-1-L is whether to develop a PAR
for this work.
In IETF terms, the IEEE discussion is whether to add the MSTP-MIB to
their charter. They have a formal procedure that needs to be followed.

If you have a document related to MSTP-MIB, you can have it posted to
the documents folder via the 802.1 chair or vice-chair.
I follow the STDS-802-1-L list, and will be happy to advise the Bridge
WG that such documents have been posted. 
(feel free to "ping" me that such documents have been posted on the
IEEE web site.)
 
David Harrington
[email-masked]
Bridge WG co-chair

________________________________

	From: [email-masked]
[mailto:[email-masked]] On Behalf Of Alex Ruzin
	Sent: Wednesday, November 10, 2004 7:58 AM
	To: 'Congdon, Paul T (ProCurve)';
[email-masked]
	Cc: [email-masked]
	Subject: [Bridge-mib] RE: [802.1] Alex Ruzin MSTP MIB Proposal
- explanations

	I dare to provide a number of explanations for
ruzin-mstp-mib-00.txt from
http://www.ieee802.org/1/files/public/docs2004/ruzin-mstp-mib-00.txt

	1. mstpTraps help to get information about changes in MSTP
active
	    topology asynchronous notifications. Conditions and
parameters seem to be
	    clear, while may be discussed.
	2. mstpGen. This group is dedicated to manage Bridge Protocol
Entity,
	    described in 12.8.1.1 and 12.8.1.3. In a certain sense
this group reflects
	    CIST, but without objects, that may be managed in
mstpXstTable, see below.
	3. mstpPortTable allows to manage physical ports, as it is
described in
	    1.8.2.1., 1.80.2.3., 1.8.2.5 and 12.8.2.7. In a certain
sense this group reflects
	    CIST ports, but without objects, that may be managed in
mstpXstPortTable,
	    see below.
	4. mstpMapTable serves for MSTI List management. It allows to
build/delete
	    instances and to map FIDs/VIDs (12.12). Actually, this
table reflects MST
	    Configuration Table in format, that is defined in 13.7
item 4).
	    It must be admitted that I "grabbed" the idea of ranges in
this table
	    from malhotra-mstpmib-01.txt
	5. mstpXstTable reflects instances - both CIST and MSTIs
(12.8.1.2 and 12.8.1.4).
	    It contains objects, common for these both types of
instances, for example,
	    mstpXstBridgePriority.
	6. mstpXstPortTable is dedicated to manage ports inside
instances - both CIST
	    and MSTIs (12.8.2.2., 12.8.2.4 and 12.8.2.6). It contains
objects, describing
	    port and common for these both types of instances, for
example,
	    mstpXstPortState or mstpXstPortPriority. Note, that this
table has
	    mstpXstPortInternalRootCost, while
mstpPortAdminExternalPathCost belongs
	    to mstpPortTable.
	
	Important, that the index mstpXstId in mstpXstTable and
mstpXstPortXstId in
	mstpXstPortTable have type MstiOrCistInstanceIndex : "value of
zero"
	corresponds to CIST.
	
	Now, I'd like to mention in passing objects, that are not
defined in .1s
	Let us begin from less questionable.
	1. mstpPortAutoEdge. It came from new .1d 917.13.3) and I
don't expect
	    many objections here :)
	2. mstpXstPortRole. The exploitation of MSTP shows, that
managers
	    of complicated networks want to know reasons of ports
states
	    assignations. So, they concerned with ports roles. In my
opinion, this
	    object is important not only debug purposes.
	3. The similar destination have so called BpduCounters. Let's
say, when
	    a port stops to be RootPort, a manager may see, that
receive BpduCounters
	    on this port do not rise. He may trace bridges and select
a point of
	    failure. And what is more, I'd define an object
mstpXstPortRxMstBpduCounter
	    to count MSTI Configuration Messages. Sure, all these
counters are optional:
	    if an agent cannot provide for them it must return zero.
	4. mstpGenCapable. A manager has to know, what version of STP
the bridge
	    supplies. If it supplies a number of versions (see
mstpGenForceVersion),
	    the eldest one must be returned.
	5. mstpGenForceVersion. If the bridge can supply a number of
versions of STP
	    (let's say, it has a number of corresponding engines) a
manager may want
	    to enable one of them (and of course to disable all
others) he may use with
	    this object. This object also show which engine is
currently enabled.
	6. The value forceNonStp(0) of object mstpGenForceVersion. I
remember a
	    few of dispute both in IETF and in IEEE : what is STP
disabled into a bridge.
	    I know and share a position of IEEE, that there may not be
bridge with STP
	    disabled, nevertheless...
	    The term "Spanning Tree Protocol Emulation" here means,
that a bridge is
	    transparent for received BPDUs (does flooding: transmits
from all ports, without
	    tags and without VLAN participation) and processes
Topology Change bit:
	    does appropriate FDB flushing.
	7. mstpPortAdminNonStp. Certain port may be configured as a
port, that does not
	    participate in any STP operations: a) it discards all
BDPUs, b) does not send
	    BPDUs and c) is always in forwarding state. This option
may help to termination
	    point of STP domain.
	8. mstpXstMasterPort. Servers the same purposes as
mstpXstPortRole and
	    BpduCounters. On the other hand, is not less helpful than
mstpXstRootPort;
	    furthermore it may help to indicate fallacious instance
mapping (when a
	    manager expects bridges in the same region, this object
must be zero).
	9. Both mstpXstRootPort and mstpXstMasterPort have type
PortIndexOrZero.

	   |  |        Values: nonStp(0), dot1d1998(1), dot1w(2),
dot1d2004(3),
	   |              Values: active(1), notInService(2),
notReady(3),
	   |                      createAndGo(4), createAndWait(5),
destroy(6)
	         |        Values: disabled(1), discarding(1),
learning(2), forwarding(3), unknown(4)
	         |        Values: disabled(1), alternate(2),
backup(3), root(4),
	         |                designated(5), master(6), nonStp(7),
unknown(8)
	         +-- -RW- Integer32
mstpXstPortAdminInternalPathCost(16)
	         |        Range: 0..200000000
	         +-- -R-- Integer32
mstpXstPortOperInternalPathCost(17)

	On Wednesday, November 03, 2004 4:15 PM  Congdon, Paul T
http://www.ieee802.org/1/files/public/docs2004/ruzin-mstp-mib-00.txt
<http://www.ieee802.org/1/files/public/docs2004/ruzin-mstp-mib-00.txt>