3. 802.1D运行过程
交换机端口有了阻塞这个特殊状态,使得网络中既可以提供冗余链路又能够避免环路。但问题是交换机选择哪些端口处于阻塞状态,哪些端口处于转发状态,这需要依靠生成树协议。下面以图11-12为例介绍生成树协议运行的过程。图中两台交换机X和Y连接上下两个网段并构成环路,在两台交换机上运行生成树协议后,它们最终把某个端口置于阻塞状态而拆断环路。
图 11-12 说明生成树协议运行的图例
运行过程主要分三个阶段:
1. 在同一个网络内(广播域范围内)选举一台交换机为根桥(root bridge);
2. 在每个非根桥交换机上选举一个根端口(root port);
3. 在每个网段中选举一个指定端口(designated port)。
阶段一:选举根桥
启动生成树协议后(生成树协议缺省是启动的),交换机之间通过传递BPDU数据帧来互相识别对方并交换一些必要的信息。根桥的选举是通过比较Bridge ID的大小完成的。协议规定,Bridge ID值最小的交换机成为根桥,根桥只能有一个。先比较优先级,如果相同再比较MAC地址。因此,网络管理员可以通过控制Bridge ID的大小来指定哪台交换机做为根桥。本例中假设switchX被选为根桥。
阶段二:选举根端口(Root Port)
选出作为根桥的交换机后,其余的所有交换机都称为非根桥。选择根端口的原则是比较各端口到达根桥的路径开销值(Path Cost),代价最小的端口为根端口。
BPDU数据帧中携带的路径开销值,表示BPDU从根桥到达接收它的端口所花费的路径代价。该值是BPDU所走路径中经由的所有入端口开销之和,端口开销与带宽有关,所经由的端口带宽越大,开销越小。当非根桥从多个不同的端口收到跟桥的BPDU时,读取该值就可以得出从它的哪一个端口到达根桥花费最小。
本例中switch Y为非根桥,它有两个端口可以到达根桥,上面端口的速率为100Mbps,下面端口的速率为10Mbps。显然通过上面端口到达根桥所花费的代价比经由下面端口所花费的代价小,所以100Mbps端口被选举为根端口。
当出现多条路径开销值相等的情况(比如链路带宽相等)时,接着比较转发根桥BPDU的交换机的ID号,与有较低ID号交换机相连的端口成为根端口;如果交换机ID号也相同,接着比较转发根桥BPDU的端口优先级(BPDU中携带该值),与有较高优先级的端口相连的端口被选为根端口。如果端口优先级也相同的话,接着比较转发根桥BPDU的端口ID(Port ID),与有较小端口ID值的端口相连的端口被选为根端口。Port ID如同端口编号一样是唯一的,能够保证选出一个唯一的根端口。
例如,假设图11-12中两条链路都为100M,交换机switchY选择根端口的过程则会是这样的:首先比较路径花费,因为路径花费相等则比较转发BPDU的交换机ID,因为他的两个端口都是从switchX接收根桥的BPDU,所以交换机ID也相同。接着比较switchX的两个转发BPDU的端口的端口优先级(当然,该例中就是根桥自己转发的)。端口优先级出厂设置也是相同的,所以比较switchX的两个向switchY转发根桥BPDU的端口的port ID,最终,与switchX的有较小port ID端口相连的switchY的端口成为根端口。
提示:端口带宽10Mbps,cost=100;端口带宽100Mbps,cost=19;端口带宽1Gbps,cost=4;端口带宽10Gbps,cost=2。
阶段三:选举指定端口(Designated Port)
这个阶段是在每个网段上选择唯一一个指定端口。选择的原则是比较网段中各端口到达根桥的路径开销,具有最小路径开销的端口为指定端口。如图11-12所示,交换机连接上下两个网段,在上面的网段中显然是根桥上的端口到根桥所花费的代价最小(代价为0);同理下面的网段中也是根桥上的端口到根桥所花费的代价最小(代价为0),因此根桥上的这两个端口被选为指定端口。
在多个端口到达根桥的路径开销相同的情况下,比较原则和选举根端口时使用的比较原则相同。
这三个阶段完成后,网络中有唯一的一个交换机作为根桥;每个非根桥有唯一的一个根端口;在每个网段上有唯一的一个指定端口。这时交换机上的端口分为3种类型,它们是根端口、指定端口和未被选举上的端口。根端口和指定端口进入转发状态,落选的端口进入阻塞状态。这样,环路被打破。
处于阻塞状态的端口虽然不转发用户数据,但它们还是要处理BPDU数据包的。另外,缺省参数下根桥每两秒发送一次BPDU,因此Switch Y的根端口预期每两秒应该收到一个BPDU数据,交换机的根端口在一定的时间间隔(缺省20秒,即max age时间)内收不到BPDU数据,就会认为该链路已经失去与根桥的连接,则会请求重新计算生成树,以启动阻塞端口替代中断的链路。
生成树协议再次运算后,原来阻塞状态的端口将转变为转发状态。一个端口从阻塞状态转变到转发状态需要经由下面几个过渡过程:
从阻塞状态到倾听状态,需要20秒,该值也称为最长寿命(max age)时间。
从倾听状态到学习状态,需要15秒。
从学习状态到转发状态,需要15秒。
从倾听状态到转发状态所需的这段时间称为转发延迟(forward delay),用来强迫端口等待以从其他交换机上获得所有BPDU。由于端口从阻塞状态转变为转发状态需要50秒的时间,所以用户通信在生成树重新计算时会中断。