您的位置:首页 > 编程语言 > PHP开发

STP原理与配置

2017-12-09 11:47 519 查看

1、环路引起的问题

在以太网中,二层网络的环路会带来广播风暴,MAC地址表震荡,重复数据帧等问题,为解决交换网络中的环路问题,提出了STP。

2、STP工作原理

STP的主要作用:

消除环路:通过阻断冗余链路来消除网络中可能存在的环路。

链路备份:当活动路径发生故障时,激活备份链路,及时恢复网络连通性。

STP通过阻塞端口来消除环路,并能够实现链路备份的目的。

STP操作

STP中定义了三种端口角色:指定端口(Designated Port),根端口()和预备端口(Alternate Port)。

1、选举一个根桥。



每一台交换机启动STP后,都认为自己是根桥。

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字段,宣告新的根桥。

2、每个非根交换机选举一个根端口。



非根交换机在选举根端口时分别依据该端口的根路径开销、对端BID、对端PID和本端PID。

非根交换机在选举根端口时分别依据该端口的根路径开销、对端BID(Bridge ID)、对端PID(Port ID)和本端PID。

交换机的每个端口都有一个端口开销(Port Cost)参数,此参数表示该端口发送数据时的开销值,即出端口的开销。STP认为从一个端口接收数据是没有开销的。端口的开销和端口的带宽有关,带宽越高,开销越小。从一个非根桥到达根桥的路径可能有多条,每一条路径都有一个总的开销值,此开销值是该路径上所有出端口的端口开销总和,即根路径开销RPC(Root Path Cost)。非根桥根据根路径开销来确定到达根桥的最短路径,并生成无环树状网络。根桥的根路径开销是0。

一般情况下,企业网络中会存在多厂商的交换设备,华为X7系列交换机支持多种STP的路径开销计算标准,提供最大程度的兼容性。缺省情况下,华为X7系列交换机使用IEEE 802.1t标准来计算路径开销。

运行STP交换机的每个端口都有一个端口ID,端口ID由端口优先级和端口号构成。端口优先级取值范围是0到240,步长为16,即取值必须为16的整数倍。缺省情况下,端口优先级是128。端口ID(port ID)可以用来确定端口角色。

每个非根桥都要选举一个根端口。根端口是距离根桥最近的端口,这个最近的衡量标准是靠累计根路径开销来判定的,即累计根路径开销最小的端口就是根端口。端口收到一个BPDU报文后,抽取该BPDU报文中累计根路径开销字段的值,加上该端口本身的路径开销即为累计根路径开销。如果有两个或两个以上的端口计算得到的累计根路径开销相同,那么选择收到发送者BID最小的那个端口作为根端口。

3、每个网段选举一个指定端口。



非根交换机在选举指定端口时分别依据根路径开销、BID、PID。

未被选举为根端口或指定端口的端口为预备端口,将会被阻塞。

在网段上抑制其他端口(无论是自己的还是其他设备的)发送BPDU报文的端口,就是该网段的指定端口。每个网段都应该有一个指定端口,根桥的所有端口都是指定端口(除非根桥在物理上存在环路)。

指定端口的选举也是首先比较累计根路径开销,累计根路径开销最小的端口就是指定端口。如果累计根路径开销相同,则比较端口所在交换机的桥ID,所在桥ID最小的端口被选举为指定端口。如果通过累计根路径开销和所在桥ID选举不出来,则比较端口ID,端口ID最小的被选举为指定端口。

网络收敛后,只有指定端口和根端口可以转发数据。其他端口为预备端口,被阻塞,不能转发数据,只能够从所连网段的指定交换机接收到BPDU报文,并以此来监视链路的状态。

4、阻塞非根、非指定端口。

端口状态转换

1 端口初始化或使能;

2 端口被选为根端口或指定端口。

3 端口不再是根端口或指定端口。

4 forward delay计时器超时。

5 端口禁用或链路失效。



图中所示为STP的端口状态迁移机制,运行STP协议的设备上端口状态有5种:

1、Forwarding:转发状态。端口既可转发用户流量也可转发BPDU报文,只有根端口或指定端口才能进入Forwarding状态。

2、Learning:学习状态。端口可根据收到的用户流量构建MAC地址表,但不转发用户流量。增加Learning状态是为了防止临时环路。

3、Listening:侦听状态。端口可以转发BPDU报文,但不能转发用户流量。

4、Blocking(discarding):阻塞状态。端口仅仅能接收并处理BPDU,不能转发BPDU,也不能转发用户流量。此状态是预备端口的最终状态。

5、Disabled:禁用状态。端口既不处理和转发BPDU报文,也不转发用户流量。

BPDU





为了计算生成树,交换机之间需要交换相关的信息和参数,这些信息和参数被封装在BPDU(Bridge Protocol Data Unit)中。

BPDU有两种类型:配置BPDU和TCN BPDU。

配置BPDU包含了桥ID、路径开销和端口ID等参数。STP协议通过在交换机之间传递配置BPDU来选举根交换机,以及确定每个交换机端口的角色和状态。在初始化过程中,每个桥都主动发送配置BPDU。在网络拓扑稳定以后,只有根桥主动发送配置BPDU,其他交换机在收到上游传来的配置BPDU后,才会发送自己的配置BPDU。

TCN BPDU是指下游交换机感知到拓扑发生变化时向上游发送的拓扑变化通知。

配置BPDU中包含了足够的信息来保证设备完成生成树计算,其中包含的重要信息如下:

根桥ID:由根桥的优先级和MAC地址组成,每个STP网络中有且仅有一个根。

PID(Protocol Identifier):Spanning Tree Protocol

PVI(protocol Version Identfier):Spanning Tree

根路径开销:到根桥的最短路径开销。

指定桥ID:由指定桥的优先级和MAC地址组成。

指定端口ID:由指定端口的优先级和端口号组成。

Message Age:配置BPDU在网络中传播的生存期。

Max Age:配置BPDU在设备中能够保存的最大生存期。

Hello Time:配置BPDU发送的周期。

Forward Delay:端口状态迁移的延时。

计时器



配置BPDU报文每经过一个交换机,Message Age都加1。

如果Message Age大于Max Age,非根桥会丢弃该配置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,并认为是网络直径过大,导致了根桥连接失败。

3、STP拓扑变化

根桥故障

直连链路故障

非直连链路故障

拓扑改变导致MAC地址表错误

拓扑改变导致MAC地址表变化

4、STP的配置

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  以太网 网络