STP协议是防止数据链路层出现环路的协议,(对于osi模型不熟悉的朋友可以看看osi模型和网络排错的关系)stp协议使用spdu(数据单元)传递网络信息计算出一条无环路的树状网络结构,并阻塞特定端口。
由于交换机运行stp之后,根端口,指定端口都是基于交换机的mac地址的大小,这种不确定因素对网络的安全造成了隐患,所以我们要指定根端口,根交换机。
实验背景
某公司规划以s3和s4交换机作为接入层交换机使用,以s1和s2交换机作为汇聚层交换机使用。以s1为根交换机,以s2作为s1的备份根交换机。对于s4应将e0/0/1作为指定端口,为保证s2与s3的链路,s2的e0/0/3要作为指定端口使用,pc1与pc2作为模拟办公室电脑使用。
因为华为交换机默认的是mstp,所以想要使用stp先在四个交换机上做同样的操作开启stp。操作如下:
[s1]stp en
[s1]stp enable
[s1]stp mode stp
配置完成后等待30s后,使用dis stp查看信息
我们可以看到在s1上e0/0/1端口为根端口 e0/0/2为丢弃端口(替代端口)
在s2,s3,s4上使用dis stp bri查看简要信息
端口角色为 ALTE的是丢弃端口 丢弃端口不会转发数据流量
我们可以看到s4交换机上的端口全都是指定端口,那么我们现在就可以初步判断s4是根交换机,我们再使用dis stp查看详细的树协议
我们可以在详细信息中看到CIST Bdridge(自身交换机id)与CIST BOOT(根交换机id)是相同的,这就说明现在的根交换机是s4
生成树协议的第一步是比较交换机的id决定根交换机,交换机的id由交换机优先级和 mac地址组成 ,先比较优先级 数值低的为根交换机,如果优先级相同则比较mac,同样数值低的便是根交换机,因为这四个交换机的树协议都是刚刚开始运行的所以他们的优先级都是默认的 ,相同的,那我们便通过比较mac来判断根交换机。
PS:
CIST 优先级的意思 bridge(桥的意思,每一台交换机在开启stp的时候都会认为自己是根桥)这里理解为自身交换机的mac root理解为根交换机的mac
根交换机在网络中的位置很重要,选择一个性能较差的交换机作为根交换机会影响整个网络的数据传输。。我们可以用dis stp看到刚开始形成树协议他们的CIST(优先级)默认都是32768。这个值是可以修改的,现在我们来修改优先级。
我们上面说到要将s1作为根交换机,s2作为s1的备份根交换机,但现在的根交换机是s4,用修改优先级的方式来改变根交换机。将s1优先级he改为0 s2交换机的优先级的值改为4096.如下方式,修改s1和s2的优先级
配置完成后查看stp的状态 dis stp
s1的stp
我们可以看到s1的stp信息中写着 cist root是0 加 mac
优先级相同 mac相同 s1现在是根交换机了,而在原来的s4上我们也可以看到根交换机的优先级也是0
除了这样直接修改优先级改变根交换机 我们还有其他的方法:先使用undo stp priority删除优先级 然后使用stp root primary来直接配置根交换机。 undo stp priority删除s2交换机上的优先级 然后用 stp root secondary来配置备份根交换机
配置完成后查看信息你会发现这种方法和直接修改优先级的方法是相同的,s1的优先级会一样变成0 s2交换机的优先级会变成4096
生成树协议选举根交换机之后会在其他几个非根交换机上选举根端口,根端口的选举和每个交换机到根交换机的端口开销有关,开销最小的就是根端口,如果路径开销值相同则比较链路上行交换机的id,如果链路上行交换机的Id相同就比较链路上行端口的id,每台交换机上只能有一个根端口。
s4交换机在选举根端口的时候首先比较路径开销,由于拓朴中的链路都是百兆以太网链路所以s4经过s3到s1和经过s2到s1的路径开销是相同的
现在比较s4
上行链路中s2与s3的交换机标识,s2的优先级是修改之后的4096 而s3交换机的优先级还是默认的32768
所以在s4中与s2相连的e0/0/2为根端口,我们验证一下
接口路径开销使用的计算方法是dot1T config是手工配置的路径开销 Active是实际的路径开销
配置s4的e0/0/2的代价值为2000 即增加端口默认的代价值
指定端口的选举和根端口类似
网络管理员为了保证s2连接s3的e0/0/3口为指定端口先删除s2交换机的优先级
可以看到优先级恢复到原来默认的32768了
查看s2和s3的stp摘要信息
可以看到s2和s3的e0/0/3都是丢弃端口 这是比较mac出现的结果