在开始讲解之前,我们大家一个问题。
一套企业网络,最重要的是什么?
可能大家都觉得是最重要的是'快'就是性能方面一定要强,不然大流量关键业务怎样跑,这个答案看似是没什么毛病。
在企业网当中性能固然重要,但不是最重要的,企业网最看重的是'容灾性',所以企业网设计尽量避免'单点故障',一下我们通过一个例子来说明一下:
下图,是一个简化版的企业网络结构,从下图我们可以看出整个网络的核心是SW1,如果中间的SW1突然挂了,那整个网络就全瘫痪了,整个被称为'单点故障',在企业网设计中是要尽量避免这种设计,当然前提是预算允许。
然后我们在来看另一个拓扑图。
这个图我们可以看出核心层从原来的一台设备增加到两台,这种设计即使SW1挂了也不会导致整个网络瘫痪,因为还有SW2在,SW2会在SW1挂了的时候完全自动接替SW1的工作,这样就很好的避免了'单点故障'了。
拓展阅读:上述的这种情况,在SW1挂了的情况下SW2自动接替SW1的工作这种情况是需要做配置的,一般情况这种配置我们成为'高可靠性',一般实现这种功能有很多方法,例如现在很流行的'虚拟化',又或者是传统的'MSTP+VRRP'都可以。
然而细心的读者可能会发现,这种所谓的'高可靠性'设计不就是上一篇文章《带你走进网络世界:交换机的工作失误?广播风暴详解》中提到的环路吗,是的,这种高可靠性设计确实是一个'物理环路'。
那既然是物理环路那为什么没有产生广播风暴呢?
那是因为有'STP'的存在。
下面我们来详细了解一下STP究竟是何方神圣:
生成树协议是一种工作在OSI七层模型中第二层的一个协议,它是通过阻塞物理端口来达到消除广播风暴的目的。
之所以叫'生成树协议',是因为自然生长的树是没有环路的,从树根到到某一片树叶只有一条路能到达,这个特性较为符合'生成树协议'的特性,所以就这么叫了。
STP中有几个重要的概念,我们先了解一下:
Blocking(阻塞状态):
此端口为非指定端口,且不会转发数据帧,端口在这个状态下只会接收'BPDU'报文,当网络拓扑发生改变的时候此端口会根据'BPDU'报文进行状态更改。
Listening(侦听状态):
当端口处于这个状态下就证明交换机判定这个端口应该参与根端口或者指定端口的选举,这个状态的端口仍然不能发送和接收数据帧,而是仅可以接收和发送BPDU,这个状态只会发展成两个状态,要么成为根端口或者是指定端口,要么是回到 Blocking状态。
Learning(学习状态):
能够接收和发送BPDU,并开始学习MAC表,准备参与数据帧的转发。
Forwarding(转发状态):
在forwarding状态下该端口可以发送和接收数据帧,也可以收集MAC地址加入到它的地址表,还可以发送和接收BPDU报文。
Disabled(禁用状态):
这个状态下的端口是完全关闭的,不参与任何的数据帧交换。
根桥(Root Bridge)
根桥是一个网络的逻辑中心,但并不一定是物理上的中心,根桥会根据网络拓扑变化而动态变化,在网络完成收敛后会定期发送BPDU维护网络拓扑的稳定。
根端口(Root Port)
根端口负责想根桥转发数据,是交换机到达根桥路径开销最小的端口,也是就是距离根桥'最近'的端口。
指定端口(Designated Port)
当一个网段拥有两条或者两条以上的链路通往根桥时,连接这个网段的交换机就必须指定一个指定端口。
路径开销(Path Cost)
路径开销是由链路速率决定的。可以这样理解,从A市到达B市,走高速的话耗费1小时,走低速的耗费2小时,这个耗费的时间就可以理解成路径开销了。
生成树协议通过上述的参数将有环路的物理拓扑修剪成无环网络,达到链路备份和路径优化等目的。
首先要实现上述的功能,交换机需要通过一系列的'信息交流'和'选举',方可实现。
交换机在修剪无环网络的过程中需要互相进行信息交流,而交流的这些'信息'我们称之为'BPDU(Bridge Protocol Data Unit)',BPDU是二层报文,所有支持STP协议的交换机都会收到并且处理这种数据报文,BPDU报文中包含多种生成树所需要的参数。这些参数会用到在后面的选举过程中。
1、选举根桥
选举根桥是在真个运行STP的网络中选举出一个唯一的根桥,这个根桥是STP网络中最顶端的设备。
选举根桥的过程中,每台交换机都认为自己是根,然后互相发送BPDU报文,然后通过规则进行比较选举出根桥。(一个广播域需要选举出一个根桥)
选举的规则如下:
对比规则:Bridge ID值和MAC地址
Bridge ID值可以手动调整,数值越低优先级越高(范围是1-61440默认32768,需要是4096的倍数),若Bridge ID值相同则对比MAC地址,MAC地址的数值越小优先级则越高,优先级高的交换机则当选为根桥。
修改Bridge ID值命令:stp priority 4096 (数值取值 1-61440)
2、非根交换机选举根端口
对比规则:对比路径开销,根据接口带宽比例计算
根端口选举就是在所有非根桥上的不同端口之间选举出一个到根桥最近的端口,当然这个'最近'并不是指到达根桥所经过的交换机数量最少,而是根据端口到根桥的累计根路径开销最小的来判定,实际上是非根桥上接收到最优配置BPDU的那个端口即为根端口,每个非根桥设备都要选择一个根端口,根端口对于一个设备来说只有一个。
累计根路径开销的计算方法是累加从端口到达根桥所经过的各个端口(除根桥上的指定端口外)的各段链路的路径开销值(链路开销),这里需要注意一下,同一交换机上不同端口之间的路径开销值为0。
如果同一交换机上有两个以上的端口计算得到的累计根路径开销相同,那么选择收到的BPDU中的发送者Bridge ID最小的那个端口作为根端口。
这里需要注意一下:根桥上没有根端口的。
3、每个线路选举指定端口
每一条物理链路需要选举指定端口,可以理解成为每条连接交换机的物理线路的两个端口之间,有一个就要被选为指定端口,每个网段选举指定端口后,就能保证每个网段的链路都能够到达根交换机,根端口的对端一定是指定端口(主要作用是用来转发来自根桥的BPDU)
对比规则:对比路径开销,根据接口带宽比例计算
比较同一段链路上2个端口发送BPDU到根的路径开销,较小的一个端口成为DP,如果相同再比较发送者的Bridge ID,Bridge ID小的那个则成为指定端口。
4、阻塞非根,非指定端口
在完成以上选举之后,交换机会对落选的端口,即不能成为根端口和指定端口的端口进行阻塞。
端口从禁用状态进入阻塞状态
在阻塞状态下,端口只能接受和分析BPDU,不能发送BPDU。
当端口被选举为根端口或者指定端口时会进入侦听状态,这个时候端口能够正接收和发送BPDU,这个状态会持续15秒。
如果没有意外情况,端口就会进入学习状态,如果有意外情况,端口则回到阻塞状态。
端口处于学习状态能够接收和发送BPDU,同时会开始学习MAC地址,构建MAC地址表,需要注意的是这个端口状态下端口还不能接收和发送数据帧。
在端口处于学习状态下,如果没有因为端口被禁用等情况端口会顺利进入转发状态,端口处于转发状态能够接收和发送数据帧与BPDU。
交换机发送的BPDU报文
如果STP完成了选举并且进入稳定状态之后,因为网络发生变化就会触发收敛。
当触发了STP收敛会重新开始对各个角色的选举。(重复上述选举过程)
STP收敛需要耗费很长时间,所以现在STP协议已经被淘汰了,取而代之的是RSTP和MSTP,当然也有思科的私有协议PVST。
联系客服