按照以上流程,如果一个交换机超过MaxAge时间在根端口收不到Hello,那么它会尝试在该交换机上选出一个新的根端口,如选不出,那么说明该交换机很可能和根已经彻底断链了,那么它应该宣称自己是根,重新开启一次根选举。实际上是在blocking状态的端口中选举新的根端口,因为既然处于 blocking状态,那么就说明它和上游存在环路,此时将它闭合即可。前面说“该交换机很可能和根已经彻底断链”,这只是说它在上游方向和根断链,而在其指定端口的下游方向,依然可能和根连通。见下图:
选举出新根端口的情形如下:
上面仅仅是给出一个典型的新拓扑收敛的例子,照着802.1d的IEEE文档,你可以全部搞定整个
选择,那就是看 Linux内核的源码,不过还是最好看文档,因为看代码的话,很容易迷失在很不经常进入的异常流,好在为你分担这部分的忧愁。Linux处理MaxAge超时的代码如下:
[cpp]view plaincopy
1. static void br_message_age_timer_expired(unsigned long arg)
2. {