大家好,今天和大家讲述一下华为路由交换中的生成树协议,在目前的中大型企业的网络架构中,为了保障网络的可靠性,一般都会设计冗余链路,冗余链路就会产生一个问题就是会有环路,环路就会造成出现广播风暴从而导致网络瘫痪。所以这时生成树是必不可少的一种技术,那么今天就和大家通俗地讲讲生成树(stp)的原理,很多理论上的东西本文也不做太多阐述。
注:广播风暴可以参考数据链路层的通信原理,这里就不做阐述
首先,了解生成树,有几个东西我们需要认识的,分别是根桥、MAC地址、BID(桥ID)、PID(端口ID)
根桥:
我们都知道,一棵树的成长离不开根,根就是树的源头,所以我们的生成树协议也和树一样有根,
如图:
在图中,我们看到有个环路,那么在这种情况中,STP是如何发挥作用的呢?,首先他们会选举根桥。
1.在没有选举根之前,每个交换机都会认为自己是老大(根),就会发送自己的相关BID给相连的兄弟(交换机),这时这个数据我们叫它为BPDU,那么这个过程就相当于每台交换机都收到了别的交换机的BPDU包,这时它们就肯定不服气了,心里想,我不是老大吗?咱们人类的社会是看实力说话的,那么我们网络世界同样也是,所以它们收到了别人的BPDU,就会拿来与自己的BID做比较,谁比较优就谁就做老大。最终通过比较就会选举出根桥。
比较规则:
1.比较优先级,值越小越优先,默认都为32768 查看命令display stp
2,如优先级相同,则比较MAC地址,值越小越优先 查看命令display stp
以上是在默认情况下的比较,那么我们也可以通过手动更改参数,按照我们的设计去选定根桥。
如:手动修改优先级(可改大,可改小,值越小越优先),命令 stp priority +参数 (注:参数需要修改为4096的倍数)
更改完,都会重新收敛(需要一点时间),重新选举根桥,从而达到我们的设计目的。
好,话不多说,咱们以下面拓扑为例,我们看看那个是根桥
sw2:
sw3:
sw4
可以看出,这3个的优先级相同,通过比较MAC地址,其中SW3为4c1f-cc2c-646d是最小的,所以SW2为根桥(备注:MAC从左往右比较,大小与数字,字母排序一样,如2>1,b>a,越小越优)
如果熟练以后display stp可以直接看根的MAC是多少
这里就已经说明了那个是根,所以就可以根据MAC地址找到对应的设备
好了,希望通过上面的内容,可以让你简单理解到STP如何选举根桥。下面我们再来了解一下另一个重要部分:端口
STP的角色端口分为
指定端口 -DP
根端口-RP
备用端口-AP
如何知道设备上的端口对应是什么角色呢?同样道理,再选举根桥的过程中,端口角色也在同时进行,再选举根桥的协商包BPDU中不仅包含有BID,也包含了PID
同样道理端口角色也是通过比较决定,但不同的是,在确认好根桥后,指点端口也就确认了(根桥上的端口都为指定端口)这个就记住就好不用纠结,非根交换机之间相连选举一个指定端口(比较接口速率速率大优先,比较接口开销cost值,开销小的优先,比较MAC,Mac小的优先)。根端口--与指定端口相连的非根交换机的接口(注:如两者之间有多条线连接,那就比较接口速率,速率大优先,和接口大小,F0/2>F0/1,小的优先),每个非根交换机都只有一个根端口。备用端口--非根非指定端口为备用端口。下面我们结合图来分析一下:
我们知道SW3是根桥,所以G0/1和G0/2就确认为指定端口(DP),相关命令 dis stp
sw2的G0/1与根交换机相连,所以是根端口-RP(注:如两者之间有多条线连接,那就比较接口速率,速率大优先,和接口大小,F0/2>F0/1,小的优先)
SW2的G0/2与非交换机相连,所以需要选举指定端口(非根交换机只有一个根端口,G0/1/已经是了,所以G0/2只能是指定端口和备用端口),所以G0/2需要和SW4的G0/2比较PID(比较内容,cost值 优先级 MAC地址,都是越小越优)在中两者的接口cost和优先级都是默认相同,分别都是20000和128,两者都可以手动更改。因此SW2 的G0/2口MAC地址小,所以为指定端口,反之SW4的G0/2为备用端口--AP
SW4的G0/1与根桥相连所以G0/1为根端口--RP(注:如两者之间有多条线连接,那就比较接口速率,速率大优先,和接口大小,F0/2>F0/1,小的优先)
G0/2和SW2的G0/2比较得知为备用端口--AP
通过上面内容,你可能对端口的概念还有点模糊,那么我们做个简单的总结:
指定端口 -DP (根交换机上的接口都为指定端口,非根互联之间选举一个指定端口)
根端口-RP (非根交换机与根交换机相连的接口为根端口,一个非根交换机只有一个根端口)
备用端口-AP (非指定端口和非根端口为备用端口)
那么通过这个多的选举,stp如何去环的呢?
那就有端口角色的转发状态确定,STP的端口转发状态有:
Forwarding 可以转发用户数据帧;可以学习MAC地址
Learning 不能转发用户数据帧,但是可以学习MAC地址
Discarding 不能转发用户数据帧,也不能学习MAC地址
Blocking
Disabled
那么简单来说stp的端口角色对应的状态是:
指定端口 -DP --- Forwarding(在选举收敛过程为Learning)
根端口-RP ----Forwarding (在选举收敛过程为Learning)
备用端口-AP -----Discarding
查看接口状态命令display stp brief
sw3
SW2
sw4
总结:
STP的工作原理简单分为:根桥-端口角色-接口状态
感谢大家查阅,以上内容仅代表个人意见,仅供参考,有错误的地方也希望大家及时指出,共同进步