生成树

冗余拓扑的问题:

-广播风暴

交换机泛洪广播帧和未知帧

-重复帧接受

交换机泛洪广播帧和未知帧

-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有两种类型:配置BPDUTCN 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 Age0。否则,Message Age是从根桥发送到当前桥接收到BPDU的总时间,包括传输延时等。实际实现中,配置BPDU报文每经过一个交换机,Message Age增加1

Max Age是指BPDU报文的老化时间,可在根桥上通过命令人为改动这个值。Max Age通过配置BPDU报文的传递,可以保证Max Age在整网中一致。非根桥设备收到配置BPDU报文后,会将报文中的Message AgeMax 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中根桥的选举依据的是桥IDSTP中的每个交换机都会有一个桥ID(Bridge ID) 。桥ID16位的桥优先级(Bridge Priority)和48位的MAC地址构成。在STP网络中,桥优先级是可以配置的,取值范围是065535,默认值为32768。优先级最高的设备(桥ID最小)会被选举为根桥。如果优先级相同,则会比较MAC地址,MAC地址越小则越优先。

交换机启动后就自动开始进行生成树收敛计算。默认情况下,所有交换机启动时都认为自己是根桥,自己的所有端口都为指定端口,这样BPDU报文就可以通过所有端口转发。对端交换机收到BPDU报文后,会比较BPDU中的根桥ID和自己的桥ID。如果收到的BPDU报文中的桥ID优先级低,接收交换机会继续通告自己的配置BPDU报文给邻居交换机。如果收到的BPDU报文中的桥ID优先级高,则交换机会修改自己的BPDU报文的根桥ID字段,宣告新的根桥。




根端口的选举:

 

RPCroot path cost):RPCBPDU包中一个参数,用于标识发送BPDU包的交换机自己到达根桥的距离。

 

本地端口的RPC(通过端口到达根桥的距离)=本端口的PC+接收到的BPDU包中通告的RPC

 

 

STP端口角色的选举过程

1、比较RID(根桥ID),优选小的。

2、比较到达根桥的RPCroot 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 delay15S)的时间。超时后会过渡到learning状态。

Learning(学习):在该状态下可以发送和接收BPDU包,可以接收数据帧但是不能转发,同时学习原MAC地址构建MAC地址表。该状态会维持一个forward delay15S)的时间。超时后会过渡到forwarding状态。

Forwarding(转发):在该状态下可以发送和接收BPDU包,同时可以接收和转发数据帧。

Blocking(阻塞):在该状态下可以接收BPDU包,但是不能发送BPDU包和数据帧。