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

STP协议

2020-04-25 16:55 621 查看

一:概述

交换机使用生成树(spanning-tree)协议互相协商相关参数,进行根桥、根端口和指定端口的选举,进而在逻辑上断开环路,防止广播风暴的产生。

二:BPDU报文格式

交换机之间通过互相发送BPDU报文进行根网桥、根端口和指定端口的选举,继而形成逻辑上无环的网络拓扑。

BPDU报文格式如下:

Protocol Identifier:协议ID,该字段为0;
Protocol Version Identifier:协议版本,STP为0,RSTP为2,MSTP为3;
BPDU Type:BPDU消息类型,通常有两种,一类是配置BPDU,负责建立并维护STP拓扑,值为0x00,另一类是TCN BPDU,用于传达拓扑变更信息,值为0x80;
BPDU Flags:内含两个标识位,TC位:拓扑变化标志;TCA位,拓扑变化确认标志;
Root Identifier:当前根桥的桥ID,由2字节的桥优先级和6字节的MAC地址组成,该MAC地址默认情况下为VLAN 1的MAC地址;
Root Path Cost:发送该BPDU的端口到达根桥的开销值;
Bridge Identifier:发送该BPDU报文的交换机的桥ID,也是由2字节的桥优先级和6字节的MAC地址组成,该MAC地址默认情况下为VLAN 1的MAC地址;
Port Identifier:发送该BPDU报文的端口ID;
Message Age:该BPDU消息的年龄;
Max Age:指BPDU消息的最大生存时间,即老化时间;
Hello Time:指发送两个BPDU的时间间隔;
Forward Delay:指拓扑改变后,交换机端口在发送数据包前维持在监听和学习状态的时间。

抓包分析BPDU报文:

二:交换机将环形网络生成无环拓扑的步骤

1:选取根桥
交换机启动后,会向相连的交换机发送BPDU报文,起初,每台交换机都认为自己是根桥,互相交换BPDU报文后,会进行根桥的选举,选取根桥比较的是桥ID,桥ID包括交换机的优先级和MAC地址,先比较优先级,优先级的范围为0-32768,必须为4096的倍数,默认情况下为32768。优先级较小的成为根桥,如果优先级相同,比较MAC地址,MAC地址较小的成为根桥。根桥的选举采用抢占机制,如果一台优先级较小的交换机接入网络,会抢占根桥,并重新进行STP计算,生成新的无环网络。

2:选取根端口
选择根端口的依据:首先比较根路径成本,根路径成本与链路的带宽有关,带宽越大,根路径成本越低,到达根桥路径成本最低的端口成为根端口,如果根路径成本相同,再比较直连交换机的桥ID,连接桥ID较小的交换机的端口成为根端口,如果直连交换机的桥ID相同(采用双链路连接到同一台交换机的情况),就会比较端口ID,所连接上行交换机的端口ID较小的端口成为根端口。

3:选取指定端口
网络中每段链路(每个冲突域)都要选举一个指定端口,选举指定端口的依据是先比较两个端口到达根桥的路径成本,如果路径成本相同,再比较两台交换机的桥ID,桥ID较小的交换机的端口成为指定端口。

实验分析选举过程:

网络拓扑如下图所示,其中,拓扑中所有交换机优先级均为默认值(32768),所有链路带宽均相同。

①选举根桥:
根桥的选举比较的是桥ID,桥ID内部含有交换机的优先级和MAC地址,先比较优先级,发现优先级都相同,于是比较MAC地址,各交换机的MAC地址如下图所示:

由图可知,SW4的MAC地址最小,因此选举SW4为根桥:

②选举根端口:
在非根交换机上选举根端口,非根交换机有4台,每台交换机都要选举:SW0有两个接口,分别为Fa0/1和Fa0/2,由图可知,Fa0/2口到达根桥的路径成本较低,因此该端口被选举为根端口。以此类推,SW1的Fa0/1口成为根端口;SW2的Fa0/1口成为根端口。SW3的Fa0/3口和Fa0/4口到达根桥的路径成本相同,于是比较直连交换机的桥ID,发现桥ID也相同(连接的是同一台交换机),因此比较直连交换机端口ID,SW3的两个端口分别连接SW4的Fa0/3口和Fa0/4口,Fa0/3口的端口ID较小,因此选择本地连接Fa0/3口的端口作为根端口,根端口选举完成,拓扑如下:

③选举指定端口:
上述网络拓扑中共有6段链路,因此需要选举6个指定端口,与根桥连接的3段链路中,根桥上的端口到达根桥的路径成本最低,所以根桥上的所有端口都为指定端口。在SW0和SW1所连链路中,SW0的Fa0/1口到达根桥的成本较低,因此该链路中,Fa0/1口为指定端口,同理,SW1和SW2所连链路中,两个端口到达根桥的根路径成本相同,于是比较各自的桥ID,SW1的MAC地址较小,因此选举SW1的Fa0/2口成为指定端口,在SW2和SW3所连链路中,SW3的Fa0/1口到达根桥的路径成本较低,因此该端口成为指定端口。网络拓扑如下:

剩余的端口即为逻辑上断开的端口(block端口),最终形成无环的网络拓扑。

三:STP协议下的端口状态

STP协议下,交换机端口分为Disabled、Blocking、Listening、Learning、Forwarding状态:

Disabled:端口没有启用的状态,不接收BPDU,不转发BPDU,不参与生成树计算,不学习MAC地址表,不转发数据帧。
Blocking:阻塞状态,接收BPDU,不转发BPDU,不参与生成树计算,不学习MAC地址表,不转发数据帧。
Listening:监听状态,接收BPDU,转发BPDU,参与生成树计算,不学习MAC地址表,不转发数据帧。
Learning:学习状态,接收BPDU,转发BPDU,参与生成树计算,学习MAC地址表,不转数据帧。
Forwarding:转发状态,接收BPDU,转发BPDU,参与生成树计算,学习MAC地址表,正常转发数据帧。

汇总如下表所示:

端口状态转变所需的时间:

①blocking→listening:需要经过20s。
②listening→learning:需要经过15s。
③learning→forwarding:需要经过15s。

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