[Rstplib-users] Issue when change of topologie
Status: Alpha
Brought to you by:
ralex
From: Olivier J. <oj...@ek...> - 2014-11-19 17:19:06
|
Hi I have integrated recently the RSTP daemon in our product. (equipement 1 & 2) We have an issue with this change of topology : 0. The Root is in LAN -----------------| |------------------|_D___________R__|------------------| LAN |____________| equipement 1 | | equipement 2 | -----------------| R |------------------|_D___________ A_|------------------| If i unplug the ethernet cable between equiment 1 & LAN (It's an undirect link failure) I have this sequence 1. Timer Max_age ends, so equipement 1 becomes root The Root is in LAN -----------------| |------------------|_D_ _________ D_|------------------| LAN | | equipement 1 | | equipement 2 | -----------------| |------------------|_D_ _________ R_|------------------| 2. equipement 2 accepts this change and declares itself as the new root because it has the smallest Mac address -----------------| |------------------|_A_ __________D_|------------------| LAN | | equipement 1 | | equipement 2 | -----------------| |------------------|_R_ _________ D_|------------------| 2 new elections are done between step 1 & 2, but for a time a loop is created between the 2 cables between equipement 1 & 2: The reason: the state machine of roletrns.c goes directly from LEARNING state to DESIGNATED_FORWARD at the line 402 we have if ((!port->fdWhile || port->agreed || port->operEdge) && (!port->rrWhile || !port->reRoot) && !port->sync && (port->learn && !port->forward)) { return STP_hop_2_state (this, DESIGNATED_FORWARD); the port->agreed has the value 1 so we don't wait the timer fdWhile, and the port goes too early into state forwarding What do you think about my issue? Thanks Olivier |