以太网交换机使用生成树协议STP(Spanning Tree Protocol),可以在提高网络可靠性的同时又避免环路带来的各种问题。
生成树算法STA(Spanning Tree Algorithm)是生成树协议STP的核心。它的实现目标是:在包含有物理环路的网络中,构建出一个能够连通全网各节点的树型无环逻辑拓扑。
STP协议由IEEE 802.1D 定义,描述时使用的是“网桥”,由于“交换机”的本质是“多端口网桥”,接下来都使用“网桥”来描述。
生成树算法的三个步骤:
注:这里所谓的“选举”,是通过网络中各交换机相互发送生成树协议专用的数据帧来实现的,这些交换信息的报文称为网桥协议数据单元,简称BPDU
。
选举根交换机:
选举根端口:
选举指定端口(Designated Port)并阻塞备用端口(预备端口):
端口状态描述:
端口状态 | 描 述 |
---|---|
Disabled(端口没有启用) | 此状态下端口不转发数据帧,不学习MAC地址表,不参与生成树计算。 |
Listening(侦听状态) | 此状态下端口不转发数据帧,不学习MAC地址表,只参与生成树计算,接收并发送BPDU。 |
Blocking(阻塞状态) | 此状态下端口不转发数据帧,不学习MAC地址表,此状态下端口接收并处理BPDU,但是不向外发送BPDU。 |
Learning(学习状态) | 此状态下端口不转发数据帧,但是学习MAC地址表,参与计算生成树,接收并发送BPDU。 |
Forwarding(转发状态) | 此状态下端口正常转发数据帧,学习MAC地址表,参与计算生成树,接收并发送BPDU。 |
STP生成树的计算,根端口、指定端口的选举,都是借助BPDU(Configuration Bridge Protocol Data Unit)报文进行信息的传递和交换的。
BPDU报文有两类:配置BPDU和TCN BPDU
DMAC
:目的MAC地址。发送配置BPDU的数据帧使用保留的组MAC地址01-80-C2-00-00-00,此地址标识所有交换机,但是不能被交换机转发,也即只在本地链路有效。LLC Header
:目的服务访问点(Destination Service Access Point, DSAP)和源服务访问点(Source Service Access Point, SSAP)的值都设为二进制01000010。Ctrl字段的值设为3。报文标识:
参数 | 比特数 | 描 述 |
---|---|---|
Protocol Identifier (协议标识) | 16比特 | 取值0x0000 |
Protocol Version Identifier (协议版本标识) | 8比特 | 取值0x00 |
BPDU Type (BPDU类型) | 8比特 | 配置BPDU报文取值0x00 拓扑改变通知BPDU报文取值0x80 |
Flags (标志) | 8比特 | 配置BPDU报文取值0x00 拓扑改变配置BPDU报文取值0x01 拓扑改变确认配置BPDU报文取值0x80 |
STP计算:
参数 | 比特数 | 描 述 |
---|---|---|
Root Identifier | 64比特 | 当前根交换机的桥ID |
Root Path Cost | 32比特 | 发送该BPDU报文的交换机的根路径开销 |
Bridge Identifier | 64比特 | 发送该BPDU报文的交换机的桥ID |
Port Identifier | 16比特 | 发送该BPDU报文的端口ID |
时间参数:
参数 | 比特数 | 描 述 |
---|---|---|
Message Age | 16比特 | 该BPDU报文从根桥发送到当前交换机的总时间,随时间增长而变大,若达到Max Age,则此配置BPDU被认为已经过期 |
Max Age | 16比特 | BPDU报文的最大生命周期,默认取值20s |
Hello Time | 16比特 | 交换机发送配置BPDU的报文周期,默认取值2s |
Forward Delay | 16比特 | 端口Listening和Learning状态的持续时间,默认取值15s |
如果网络拓扑发生了变化,会触发STP 的重新计算,新的生成树拓扑可能会跟原先的网络拓扑存在一定的差异。
在交换机上,指导报文转发的是MAC 地址表,默认的动态表项的生存时间是300 s,此时,数据转发如果仍然按照原有的MAC 地址表,会导致数据转发错误。
为防止拓扑变更情况下的数据发送错误,STP 中定义了拓扑改变消息泛洪机制。
当网络拓扑发生变化的时候,除了在整网泛洪拓扑改变信息外,同时修改MAC 地址表的生存期为一个较短的数值,等拓扑结构稳定之后,再恢复MAC 地址表的生存期。
在向整网泛洪拓扑改变信息的过程中,共涉及三种BPDU:
TCN
(Topology Change Notification) BPDU。用于非根交换机在根端口上向上行交换机通告拓扑改变信息,并且每隔Hello Time(2秒)发送一次,直到收到上行交换机的拓扑改变确认配置BPDU或者拓扑改变配置BPDU。TCAN
(Topology Change Acknowledgment Configuration) BPDU。配置BPDU的一种,和普通配置BPDU不同的是此配置BPDU设置了一个Flag位。用于非根交换机在接收到拓扑改变通知BPDU的指定接口上向下行交换机发送拓扑改变通知的确认信息。TCC
(Topology Change Configuration) BPDU。此配置BPDU设置了另外一个Flag位。用于从根交换机向整网泛洪拓扑改变信息,所有交换机都在自己所有的指定端口上泛洪此BPDU。SWA收到SWB发送的拓扑改变通知BPDU之后,每隔2秒向网络中发送拓扑改变配置BPDU(设置了一个Flag位的配置BPDU),使网络中所有的交换机都把MAC地址表的生存期修改为Forward Delay(15秒),经过一段时间(Max Age加上Forward Delay,默认为35秒)之后,SWA(根交换机)在自己发送的配置BPDU中,清除Flag位,表示网络拓扑已经稳定,网络中的交换机恢复MAC地址生存期。
拓扑改变通知BPDU格式:
参数 | 字节数 | 内容 |
---|---|---|
2字节 | Protocol Identifier | 0x0000 |
1字节 | Protocol Version Identifier | 0x00 |
1字节 | BPDU Type | 0x80 |
拓扑改变确认配置BPDU和拓扑改变配置BPDU都是配置BPDU的一种,和普通的配置BPDU不同的是:
题目:作为公司的网络管理员,公司的网络使用了两层网络结构,核心层和接入层,在接入层采用了冗余网络,为避免存在的环路问题,决定使用STP 来进行环路控制。
设备 | 接口 | 接口类型 | 所属VLAN | 允许通过VLAN |
---|---|---|---|---|
IOU1 | Ethernet 0/0 | Trunk | ALL | |
Ethernet 0/1 | Trunk | ALL | ||
IOU2 | Ethernet 0/1 | Trunk | ALL | |
Ethernet 0/2 | Trunk | ALL | ||
Ethernet 0/3 | Access | VLAN 10 | ALL | |
IOU3 | Ethernet 0/1 | Trunk | ALL | |
Ethernet 0/2 | Trunk | ALL | ||
Ethernet 0/3 | Access | VLAN 10 | ALL |
设备 | 接口 | IP地址 |
---|---|---|
PC-1 | Ethernet 0 | 192.168.1.1/24 |
PC-2 | Ethernet 0 | 192.168.1.2/24 |
实验步骤:
1、交换机基本配置
(1)在IOU1、IOU2、IOU3上创建vlan 10
(2)在IOU1、IOU2、IOU3上配置access口和trunk口
2、PC配置IP地址
3、STP基本配置
(1)在思科二层交换机中,STP是默认开启的。
(2)查看生成树的情况。(根网桥ID、交换机ID、各端口角色)
IOU1#show spanning-tree
IOU2#show spanning-tree
IOU3#show spanning-tree
可以看到,对于IOU3,e0/1为根端口,e0/2为预备(alternative)端口。
(4)关闭IOU3的e0/1口,再次查看生成树的情况
IOU3(config)#int e0/1
IOU3(config)#shutdown
(6)重新打开IOU3的e0/1口,更改IOU3的优先级,使其成为根网桥
IOU3(config)#spanning-tree vlan 1 priority 4096
❗ 转载请注明出处
作者:HinsCoder
博客链接: 作者博客主页