前言:牛逼的 STP 生成树,解决交换机之间的环路问题
STP:Spanning Tree Protocol 简单来说就是限制某些端口来达到不产生环路的目的
交换机环路的例子
如果在不阻塞端口的情况下,这样的拓扑图会产生环路的
假设 x 发出一个广播包,switch A 和 switch B都会收到这个广播包,然后又相互发出,形成环路
而 STP 要做的就是
将这个会产生环路的网络变成树结构,这样的树结构是不会产生环路的
详细描述生成树的生成
STP 做了什么
- 每个广播域选择一个根桥
- 每个非根桥选择一个根端口
- 每个段选择一个指定端口
- 阻塞其他接口
解释上述操作
- 每个广播域选择一个根桥
每个交换机都有一个标识,此标识称为 Bridge ID或 BID。
Bridge Priority 一共有 16 个值,每个值都要乘以 4096,也就是说值只能取 0-61440 中 4096 的倍数(包括 0 61440)
Extent System ID 12 位代表着 VLAN 的值
最后 48 位是 MAC 地址。
根桥:就是选择 Bridge Priority 最小的值,如果 Bridge Priority 一样大,就选择 MAC 地址最小(不可能一样)
修改优先级的命令
sw1(config)#spanning-tree vlan 1 priority 4096
sw1(config)#do show span bridge
Hello Max Fwd
Vlan Bridge ID Time Age Dly Protocol
---------------- --------------------------------- ----- --- --- --------
VLAN0001 4097 ( 4096, 1) aabb.cc00.1000 2 20 15 rstp
- 每个非根桥选择一个根端口
非根桥就是不是根桥的交换机,根端口就是非根桥离根桥最近的端口
以下是判断根端口的过程:
1)首先判断开销
只根据是什么接口去判断:根端口的开销是求和
2)如果开销相等
根据发送者的 Bridge ID 判断,小的就是根端口
3)如果两个交换机之间有两条线,开销和 Bridge ID 都相等
就根据 port number(数据包里面有)去判断(再也不可能一样了)
sw1#show spanning-tree vlan 1
Interface Role Sts Cost Prio.Nbr Type
------------------- ---- --- --------- -------- --------------------------------
Et0/0 Desg FWD 100 128.1 Shr
Et0/1 Desg FWD 100 128.2 Shr
Et0/2 Desg FWD 100 128.3 Shr
Et0/3 Desg FWD 100 128.4 Shr
修改 port id
sw1(config-if)#spanning-tree vlan 1 port-priority 64
sw1(config)#do show spanning-tree vlan 1
Et0/0 Desg FWD 100 64.1 Shr
Et0/1 Desg FWD 100 128.2 Shr
Et0/2 Desg FWD 100 128.3 Shr
Et0/3 Desg FWD 100 128.4 Shr
- 每个段选择一个指定端口
段就是链路,也就说要在每一个链路上选择一个离根最近的接口
1)首先根桥的端口都是指定端口
2)选择每条链路上与根桥最近的接口(开销最小)
3)如果开销相同,选择 Bridge ID 最小的端口
- 其他没有被选择的端口被阻塞
也就是不往这个端口走流量
做题
- 由于权值相同,MAC 地址小的就是根桥
- 有两个非根桥,选择开销最小的端口
- 现在判断下面那条线路谁是「指定端口」开销一样,选 mac 地址最小的
所以得到:
生成树就到这吧,学的知识很浅,希望有一天能成为大牛