We are using this MSTP code base for MSTP testing.
I am facing an issue in testing MSTP with 2 switches with 1 instance, where regional root selection is not proper for the MSTP Instance.
MSTP Test Scenario with 2 switches:
1) connect a looped topology of 2 switches (SW1 --> SW2 --> sw1), with default settings.
"mstpd"
"mstpctl addbridge br1".
2) Create a MSTP Instance ID "1" on SW1 and SW2 by using,
"mstpctl createtree br1 1".
3) Form a region such that both switches fall into same region, by using,
"mstpctl setmstconfid br1 0 reg1"
"mstpctl setvid2fid br1 100:10"
"mstpctl setfid2mstid br1 1:100" on both switches.
4) Verified the region formation using "mstpctl showmstconfid br1", showing same
values on both switches.
5) But still Regional root selection for MST Instance 1 was not happened. we verifed
by using the command, "mstpctl showtree br1 1". Both switches are showing its own
bridge ID as Regional root. Also verified in the Wireshark captured BPDU.
Then we modified the code in txMstp() of mstp.c file as below:
The change you proposed is a strange one: it changes bridge behavior only in case of RSTP/STP (ForceProtocolVersion < protoMSTP), and in this case Regional Root has zero meaning, RSTP/STP protocols have no regions.
I can reproduce your result (Regional Root not changed) only in case when proto is forced to rstp.
It seems that proto version was forced to rstp (or stp) in your test. Please ensure that proto version is forced to mstp and re-test with unchanged code.
Vitalii
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hello Vitalii,
We are using this MSTP code base for MSTP testing.
I am facing an issue in testing MSTP with 2 switches with 1 instance, where regional root selection is not proper for the MSTP Instance.
MSTP Test Scenario with 2 switches:
1) connect a looped topology of 2 switches (SW1 --> SW2 --> sw1), with default settings.
"mstpd"
"mstpctl addbridge br1".
2) Create a MSTP Instance ID "1" on SW1 and SW2 by using,
"mstpctl createtree br1 1".
3) Form a region such that both switches fall into same region, by using,
"mstpctl setmstconfid br1 0 reg1"
"mstpctl setvid2fid br1 100:10"
"mstpctl setfid2mstid br1 1:100" on both switches.
4) Verified the region formation using "mstpctl showmstconfid br1", showing same
values on both switches.
5) But still Regional root selection for MST Instance 1 was not happened. we verifed
by using the command, "mstpctl showtree br1 1". Both switches are showing its own
bridge ID as Regional root. Also verified in the Wireshark captured BPDU.
Then we modified the code in txMstp() of mstp.c file as below:
if (br->ForceProtocolVersion < protoMSTP)
{
assign(b.cistRRootID, cist->designatedPriority.DesignatedBridgeID);
}
else
{
assign(b.cistRRootID, cist->designatedPriority.RRootID);
}
After the above change we are able to see proper regional root for each MST instances.
We are looking forward for your inputs.
Regards,
-Rajani
Hello Rajani!
The change you proposed is a strange one: it changes bridge behavior only in case of RSTP/STP (ForceProtocolVersion < protoMSTP), and in this case Regional Root has zero meaning, RSTP/STP protocols have no regions.
I can reproduce your result (Regional Root not changed) only in case when proto is forced to rstp.
It seems that proto version was forced to rstp (or stp) in your test. Please ensure that proto version is forced to mstp and re-test with unchanged code.
Vitalii