STP;生成树协议;是应用在交换机中的一个协议;主要用途是解决交换机环路问题;本篇总结了环路产生原因、STP原理、STP配置。
网络中环路的危害比较好说;比如广播风暴、MAC地址漂移;反正网络中出现了环路肯定是不好的。而环路出现的原因一般是因为“冗余”;一般的示例如下图;让我不好理解的是LSW14和LSW12为什么要连一根线;这样做有什么意义吗?虽然3台交换机用作示例是比较好处理的。
所以我更喜欢用下面的网络结构;看起来比较实际。
上图结构的问题很明显;汇聚交换机如果只有一台那是非常危险的;如果出现单台的故障那整个公司的网络都“扑街”;所以汇聚层必然是需要“冗余”一台的;像下图这样。
这样看不出环路问题;我们只需要稍微挪一下;可以看出4台交换机其实是一个环路。
要打破环路也很简单;比如我们将其中一根线人为断开;比如把某个端口down掉。
但这样产生了新的问题;那就是当主用的LSW5故障时;LSW4下面的网络就瘫痪了;这时候需要我们人为的去把LSW15的端口up起来。从发现网络故障到找到人去up端口中间可能过去半个多小时了;这对于一些重要业务来说是不可接受的。所以就需要一个协议或者机制可以自动down掉某个端口来断开链路;在发生单机故障时又能自动恢复链路使网络恢复正常。
这样的东西已经有啦;那就是STP生成树协议。
1、生成树
STP为什么要叫生成树协议呢?想象一下;有什么东西既没有环路;各个节点之间又可以互通的。那不就是“树”了嘛;比如下图这样“复杂”的网络结构。
我们只是在接入层的交换机也做了主备;稍微整理下;会发现出现了至少4个环路;如下图。
如果要使环路消失;同时每一台交换机又能够互通;我们需要“断开”不必要的链路;比如像下图这样。
这是不是看起来就像树;LSW1是根;其他的是分支。如果网络继续复杂;我们在汇聚层上面再加一层;也是主备。
稍微整理下;你会发现结构其实非常熟悉。
所以要打破网络中的环路;最重要的是找到一个“根”;接着从根出发找到最快到达所有节点的路径;最后将不必要的路径“断开”。为了从功能上实现这一点;STP协议使用了一些概念;
为了依次找到根网桥、根端口、指定端口等;STP协议做了一些约定;并根据约定做各项“选举”;最终得到根和各端口。
2、根网桥
根网桥选举依据;
通过“dispay stp”命令;可以查看CIST Bridge这个值;其中32768就是优先级;4C1F-CC33-2ADE就是MAC地址;可见所有交换机默认优先级都是一样的32768;那就比较MAC地址较小的;其中LSW4的MAC地址相对最小;所以它就是根网桥;其他除LSW4之外的就是非根网桥。CIST Bridge就是桥ID;也即是BID。
3、根端口
根端口指的是“非根网桥”上;距离根网桥较近的端口;而且每一个非根网桥上有且只有一个根端口;其实也就是在交换机上的所有端口中选一个根端口。选举依据有;
下图将所有端口的总COST都标示出来了。
对于LSW2;两个端口的总COST一样;对端BID明显是靠近根桥的那个更小;所以E0/0/2是根端口。同理LSW3的的E0/0/2是根端口。同理LSW1的根端口是E0/0/2。
为了做下一步的分析;我们假设LSW1两个端口对端的BID一致;这样才能继续分析PID的情况;。可以看到对于LSW1的两个端口;其对端PID是相等的;所以接着可以比本端PID;这个不可能会相等;所以在这个假设情况下E0/0/1会成为根端口;不过这只是假设哈。
我们实际选举出的根端口应如下图所示。
4、指定端口
指定端口;指的是链路上的两个端口中;距离根网桥最近的端口;选举依据有;
注意前面选根端口时是在同一个交换机上的不同端口进行选举;而现在是同一个链路上的两个端口间进行选举。像下图标红处;一个链路是由两个端口连接在一起形成的;指定端口要在组成链路的两个端口上进行选举。
其实一个正常的链路在比较BID时就能得到指定端口了;但为预防有人把同一个交换机的两个端口连起来;所以再加了个PID的比较就万无一失了。
此外;对于根网桥上的端口;它的端口COST值是200000;但它到根网桥实际开销其实是0;因为他就在根网桥上。根据开销的比较我们可以得到所有指定端口如下图;
5、阻塞端口
最后非根、非指定端口就是我们要阻塞的端口了;也就是LSW1上的E 0/0/1这个端口。
通过命令display stp;可以看到交换机默认就启用了MSTP协议;现在我们将其调整为stp协议;并看下执行结果与我们预期的是否一致。
一共只需要3个命令就完成了STP的启用。
而后我们用display stp命令看下结果;如下图;根据MAC地址可以知道LSW4确实被选为根网桥。
接着我们可以看看LSW4的两个端口状态;如下图;Designated port就是指定端口的意思。
再看下LSW2和LSW3;可以看到两个端口的状态都是无误的。
最后看一下LSW1;一个根端口一个阻塞端口;其中Alternate是备用的意思;所谓阻塞端口也就是备用端口的意思;当其他链路出现故障时;这个端口会被启用作为备用的意思。
STP相关的命令不多;而根桥、根端口、指定端口的选举也不复杂;需要注意的是端口总“开销”指的是根桥到该端口所需要“入”的端口开销和。