In BPDUs use configured Hello_Time, not received from other bridge
>> RSTP-8.1
Tue Apr 30 13:33:08 2013: TEST_DESCRIPTION
If the physical connectivity of the network or management
parameters change, new spanning tree information will propagate
rapidly. Each Bridge accepts better information from any Bridge on
a LAN or revised information from the prior Designated Bridge for
that LAN. Updated Configuration Messages are transmitted through
Designated Ports, until the leaves of the Spanning Tree defined
by a new configuration are reached.
AND
The designatedTimes (17.19.5) for each Port, set equal to
the value of rootTimes, except for the Hello Time component,
which is set equal to BridgeTime's Hello Time
Tue Apr 30 13:33:08 2013: TEST_REFERENCE
IEEE Std 802.1D-2004 S17.9 P145
Changing Spanning Tree Information
IEEE Std 802.1D-2004 S17.21.25 P169
updtRolesTree()
Failure:
! Hello time in the received RST BPDU incorrectly set
! Expected Value : 2.000
! Received Value : 3.000
Trivial changes in comments for txMstp():
- Added reference to the 802.1Q-2011
- Removed stray ", role" which actually should be removed in previous commit [r56]
Update comments: now that I have got 802.1Q-2011 text, I can update some comments.
Generally, 802.1Q-2011 has the same slightly ambiguous wording as 802.1Q-2005 has, so it doesn't clarify my doubts, with the exception of what role should be used in BPDU (CIST's role, as expected).
Also, change non-ASCII apostrophe to the ASCII one.
1) MSTP is fully supported by mstpd/mstpctl, it is not supported only by interface extension scripts (ifupdown). I have stated this point clearly;
2) Priority description reflects current status: priorities are in range 0-15. in natural units. When/if I'll be convinced that priorities should be in multiplies of 16/4096, we'll change the man pages accordingly. Perhaps, they'll be generated differently based on the conditional variable from the makefile. For now, they should describe things as they are;
3) Style, wording and other trivia.
dv1tas [Thu, 27 Jun 2013 08:54:57 +0000 (08:54 +0000)]
Add some statistics and logging to aid in better debugging
That additional statistics is present in most of the bridge vendors:
- Num TX and RX BPDU/TCN;
- Num of transition to forwarding/blocking;
- last 2 ports which caused topology change on the tree;
- logged if TCN was sent/received in BPDU.
dv1tas [Wed, 19 Jun 2013 07:49:36 +0000 (07:49 +0000)]
Bridge Assurance functionality.
1. Port type network ("setportnetwork" command) needs to be configured on ports on which bridge assurance functionality needs to be enforced. The functionality is enforced only for Operation Point-to-Point links and only when the operational version is RSTP/MSTP.
2. BPDU's are sent only on designated ports normally. For a network port type, BPDU's will be sent always and the port expects to receive BPDU's every hello time interval.
3. When a network port does not receive BPDU's in 3*hello_timer seconds from peer, the port is put in discarding state (with Bridge assurance inconsistency error in syslog), but BPDU's need to be sent out from the port every hello interval, though.
4. When an inconsistent bridge assurance port receives a BPDU later, the inconsistency is cleared and the port is transitioned to learning/forwarding as usual now.
5. Added hidden command "setdonttxmt" to not transmit BPDU's on demand, to test the functionality.
dv1tas [Wed, 29 May 2013 12:29:03 +0000 (12:29 +0000)]
If unknown port role is received in RSTP version, treat the RSTP BPDU as a STP Config BPDU instead and set the role to be designated role
Ixia RSTP ANVL Failure:
>> RSTP-1.2
Tue Apr 30 13:28:03 2013: TEST_DESCRIPTION
Quick test to verify that DUT transmits RST BPDU from each port.
The Unknown value of Port Role cannot be generated by a valid
implementation; however, this value is accepted on receipt.
(NOTE: The DUT will treat this RST-BPDU as a Configuration BPDU)
(Test to verify that the incoming RST BPDU with Unknown Port role
plays a role in the calculation of Active Spanning Tree)
DUT: Treat the received RST BPDU as CONFIG BPDU
DUT: Select <bestBridgeID> B1 as Root Bridge
ANVL: Listen (for upto 3 * <configBridgeHelloTime> seconds) on <DIface-1>
DUT: Send RST BPDU
Root Identifier field set to <bestBridgeID> B1
dv1tas [Mon, 10 Dec 2012 09:59:32 +0000 (09:59 +0000)]
Run state machines in loops until their state stabilized.
Without this fix some transitions do not happen as fast as they could - sometimes mstpd waits for next one-second event to complete all state machines transitions. Reported-by: Rodolfo Giometti <giometti@enneenne.com> Tested-by: Rodolfo Giometti <giometti@enneenne.com>
git-svn-id: svn://svn.code.sf.net/p/mstpd/code/trunk@37 fbe50366-0c72-4402-a84b-5d246361dba7