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

[email protected] (Alex Ruzin) Wed, 10 Nov 2004 14:57:33 +0200
Newsgroups gmane.ietf.bridge
Message-ID <00e401c4c724$d92aafe0$87885ac2@Alexr>
(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 protected]
https://www1.ietf.org/mailman/listinfo/bridge-mib