生成树
冗余拓扑的问题:
-广播风暴
交换机泛洪广播帧和未知帧
-重复帧接受
交换机泛洪广播帧和未知帧
-MAC地址的振荡
学习MAC地址的原则
STP生成树协议:spanning-tree protocol(802.1D)
作用:防环备份
原理:在冗余网络中,逻辑上阻塞某些端口,使的任意两个终端之间的通信都是唯一路径;
当收敛后的网络再次发生变换,重新激活被阻塞的端口,使得网络通信恢复正常,到达备份的效果
术语:
桥ID:标示交换机在生成树网络中的唯一性
组成:桥优先级+MAC地址(交换机本身的MAC地址)
桥优先级:标示交换机的优先权限,用于选举根桥
范围0-65535,默认32768,步长 1,2Bytes
根桥:ROOT,负责整个网络中的数据通信
网络中优先级最高的交换机
根路径开销:到根桥的最短路径开销。
指定桥ID:由指定桥的优先级和MAC地址组成。
指定端口ID:由指定端口的优先级和端口号组成。
Message Age:配置BPDU在网络中传播的生存期。
Max Age:配置BPDU在设备中能够保存的最大生存期。
Hello Time:配置BPDU发送的周期。
Forward Delay:端口状态迁移的延时。
BPDU:桥协议数据单元
内容:包含STP收敛所需要的所有参数
包含自身的生命周期,定期更新的时间以及老化时间
作用:用来选举ROOT, RP, DP等
种类:
配置BPDU:周期性发送,2S,最大存活时间20S;用来完成STP的收敛和后期状态的维护
TCN BPDU:当拓扑发生变化时发送(桥主动发送该BPDU通知网络中的设备,链路发生变化)
*在802.1D中,只有根桥才有资格定期发送配置BPDU,并且,根桥发送的BPDU才是最优的!
Cost:花费,接口到达根所花的代价
10M~100; 100M~19; 1000M~4; 10G~2
根端口:root Port (RP)
非根桥上,到达根桥的cost值最小的端口
负责接受由根桥发送的数据和BPDU
指定端口:design Port (DP))
链路上 到达根桥的cost值最小的端口
负责转发ROOT发送的数据和BGDU
端口ID:在交换机上,用来唯一的标识不同的端口
组成:端口优先级+端口编号
端口优先级:1Byte,范围0-255,
STP的选举流程:
1、在一个交换网络中选举一个根桥,根桥是设备的概念。默认情况下所有设备都是根桥,通过交互BPDU包优选BID小的成为根桥,在STP中根桥选举后只会由根桥每隔2秒发送一次BPDU包,其它的非根桥接收后转发。
2、根桥选举后,交换网络中的其它设备都是非根桥,每个非根桥还需要选举一个到达根桥最短路径的端口成为根端口。注:非根桥只能有一个根端口
3、每条链路上还需要选举一个指定端口,默认情况下根桥的所有端口都是指定端口
4、既不是根端口也不是指定端口的其它端口需要被阻塞,不能转发数据帧。
所有配置了STP协议的交换机都会发送BPDU(桥协议数据单元)报文,通过交互BPDU报文选举设备角色和端口角色。
PDU有两种类型:配置BPDU和TCN BPDU。
配置BPDU包含了桥ID、路径开销和端口ID等参数。STP协议通过在交换机之间传递配置BPDU来选举根交换机,以及确定每个交换机端口的角色和状态。
BPDU:在初始化过程中,每个桥都主动发送配置BPDU。在网络拓扑稳定以后,只有根桥主动发送配置BPDU,其他交换机在收到上游传来的配置BPDU后,才会发送自己的配置BPDU。
TCN BPDU是指下游交换机感知到拓扑发生变化时向上游发送的拓扑变化通知。
STP协议中包含一些重要的时间参数,这里举例说明如下:
Hello Time是指运行STP协议的设备发送配置BPDU的时间间隔,用于检测链路是否存在故障。交换机每隔Hello Time时间会向周围的交换机发送配置BPDU报文,以确认链路是否存在故障。当网络拓扑稳定后,该值只有在根桥上修改才有效。
Message Age:如果配置BPDU是根桥发出的,则Message Age为0。否则,Message Age是从根桥发送到当前桥接收到BPDU的总时间,包括传输延时等。实际实现中,配置BPDU报文每经过一个交换机,Message Age增加1。
Max Age是指BPDU报文的老化时间,可在根桥上通过命令人为改动这个值。Max Age通过配置BPDU报文的传递,可以保证Max Age在整网中一致。非根桥设备收到配置BPDU报文后,会将报文中的Message Age和Max Age进行比较:如果Message Age小于等于Max Age,则该非根桥设备会继续转发配置BPDU报文。如果Message Age大于Max Age,则该配置BPDU报文将被老化掉。该非根桥设备将直接丢弃该配置BPDU,并认为是网络直径过大,导致了根桥连接失败。
设备角色:根桥、非根桥
端口角色:根端口、指定端口、替代端口
根桥的选举:
通过比较BID(桥ID)选举,优选BID小的。BID参数由两部分组成:优先级(默认值为32768)+MAC地址(交换机的背板MAC地址)。
1、比较优先级,优先级越小越优。
2、如果优先级一样,比较MAC地址,MAC地址越小越优。
BPDU包的作用:1、用于STP的选举 2、维护STP的状态 3、通告拓扑改变,刷新MAC地址表
STP中根桥的选举依据的是桥ID,STP中的每个交换机都会有一个桥ID(Bridge ID) 。桥ID由16位的桥优先级(Bridge Priority)和48位的MAC地址构成。在STP网络中,桥优先级是可以配置的,取值范围是0~65535,默认值为32768。优先级最高的设备(桥ID最小)会被选举为根桥。如果优先级相同,则会比较MAC地址,MAC地址越小则越优先。
交换机启动后就自动开始进行生成树收敛计算。默认情况下,所有交换机启动时都认为自己是根桥,自己的所有端口都为指定端口,这样BPDU报文就可以通过所有端口转发。对端交换机收到BPDU报文后,会比较BPDU中的根桥ID和自己的桥ID。如果收到的BPDU报文中的桥ID优先级低,接收交换机会继续通告自己的配置BPDU报文给邻居交换机。如果收到的BPDU报文中的桥ID优先级高,则交换机会修改自己的BPDU报文的根桥ID字段,宣告新的根桥。
根端口的选举:
RPC(root path cost):RPC是BPDU包中一个参数,用于标识发送BPDU包的交换机自己到达根桥的距离。
本地端口的RPC(通过端口到达根桥的距离)=本端口的PC+接收到的BPDU包中通告的RPC
STP端口角色的选举过程
1、比较RID(根桥ID),优选小的。
2、比较到达根桥的RPC(root path cost),越小越优。
3、比较BPDU包发送者的BID,越小越优。
4、比较BPDU包发送者的PID(port id(端口ID),端口ID由两部分组成=端口优先级(默认为128,可以配置,配置时必须为16的整数倍)+端口ID),越小越优。
5、比较BPDU包接收者的PID,越小越优。
STP中有几种端口角色: 根端口(RP)、指定端口(DP)、替代端口(AP)
STP中有几种端口状态:Disable(禁用)、Listening(监听)、Learning(学习)、Forwarding(转发)、Blocking(阻塞)
端口状态:
Disable(禁用):端口shutdown,端口UP后会从disable过渡到listening状态。
Listening(监听):在该状态下可以发送和接收BPDU包,但是不能转发数据帧,用于选举设备角色和端口角色。该状态会维持一个forward delay(15S)的时间。超时后会过渡到learning状态。
Learning(学习):在该状态下可以发送和接收BPDU包,可以接收数据帧但是不能转发,同时学习原MAC地址构建MAC地址表。该状态会维持一个forward delay(15S)的时间。超时后会过渡到forwarding状态。
Forwarding(转发):在该状态下可以发送和接收BPDU包,同时可以接收和转发数据帧。
Blocking(阻塞):在该状态下可以接收BPDU包,但是不能发送BPDU包和数据帧。
本文转自 towardly 51CTO博客,原文链接:http://blog.51cto.com/brighttime/1953936