Bootstrap

【网络协议详解】——STP技术(学习笔记)

目录

STP的由来

STP的术语

桥(Bridge)

桥的MAC地址(Bridge MAC Address)

桥ID(Bridge Identifier,BID)

端口ID(Port Identifier,PID)

​编辑BPDU报文

STP的端口角色和端口状态

根端口(Root Port)

指定桥(Designated Bridge)与指定端口(Designated Port)

端口状态

STP的定时器

Hello Time

Forward Delay

Forward Delay Timer

树的基本理论

生成树的生成过程

实验操作

组网需求

配置文件


STP的由来

 为了解决冗余链路引起的问题,IEEE通过了IEEE 802.1d协议,即生成树协议(Spanning Tree Protocol,STP)。IEEE 802.1d协议通过在交换机上运行一套复杂的算法,使冗余端口置于“阻塞状态”,使得网络中的计算机在通信时只有一条链路生效,而当这个链路出现故障时,IEEE 802.1d协议将会重新计算出网络的最优链路,将处于“阻塞状态”的端口重新打开,从而确保网络连接稳定可靠。

STP的术语

桥(Bridge)

因为性能方面的限制等因素,早期的交换机一般只有两个转发端口,所以那时的交换机常常被称为“网桥”,或简称“桥”。在IEEE的术语中,“桥”这个术语一直沿用至今,但并不只是指只有两个转发端口的交换机了,而是泛指具有任意多个端口的交换机。

桥的MAC地址(Bridge MAC Address)

一个桥有多个转发端口,每个端口有一个MAC地址。通常,交换机会把端口编号最小的那个端口的MAC地址作为整个桥的MAC地址。

桥ID(Bridge Identifier,BID)

一个桥(交换机)的桥ID由两部分组成,前面2字节是这个桥的桥优先级,后面6字节是这个桥的MAC地址。桥优先级的值可以手动设置,其默认值为0x8000(相当于十进制的32768)。

IEEE 802.1d标准中规定BID是由桥优先级(Bridge Priority)与桥MAC地址构成。BID桥优先级占据高16位,其余的低48位是MAC地址。

端口ID(Port Identifier,PID)

第一种:端口ID由两个字节组成,第一个字节是该端口的端口优先级,后一个字节是端口编号。

第二种:端口ID由16个比特组成,前4个比特是该端口的端口优先级,后12比特是该端口的端口编号。

BPDU报文

STP采用的协议报文是BPDU(Bridge Protocol Data Unit),也称为配置消息。STP通过在设备间传递BPDU报文来确定网络的拓扑结构,并完成生成树的计算。BPDU报文被封装在以太网数据帧中,目的MAC是组播MAC:01-80-C2-00-00-00。

STP的端口角色和端口状态

端口角色:根端口和指定端口

根端口(Root Port)

根端口就是去往根桥路径开销最小的端口,根端口负责向根桥方向转发数据,这个端口的选择标准是依据根路径开销判定。很显然,在一个运行STP协议的设备上根端口有且只有一个,根桥上没有根端口。

指定桥(Designated Bridge)与指定端口(Designated Port)

分类

指定桥

指定端口

对于一台设备而言

与本机直接相连并且负责向本机转发配置消息的设备

指定桥向本机转发配置消息的端口

对于一个局域网而言

负责向本网段转发配置消息的设备

指定桥向本网段转发配置消息的端口

端口状态

运行STP协议的设备的端口存在5种端口状态,如表1所示。

表1 STP端口状态

端口状态

说明

Disabled

端口状态为Down,不处理BPDU报文,也不转发用户流量。

Listening

过渡状态,开始生成树计算,端口可以接收和发送BPDU,但不转发用户流量。

Learning

过渡状态,建立无环的MAC地址转发表,不转发用户流量。

Forwarding

端口可以接收和发送BPDU,也转发用户流量。只有根端口或指定端口才能进入Forwarding状态。

Blocking

端口仅仅接收并处理BPDU,不转发用户流量。

  1. 端口Up或使能了STP,会从Disabled状态进入到Blocking状态。
  2. 端口被选举为根端口或指定端口,会进入Listening状态。
  3. 端口的Forward Delay定时器超时,会进入Learning/Forwarding状态。
  4. 端口不再是根端口或指定端口时,会进入Blocking状态。

STP的定时器

Hello Time

运行STP协议的设备发送配置BPDU的时间间隔。设备每隔Hello Time时间会向周围的设备发送BPDU报文,以确认链路是否存在故障。

Forward Delay

设备状态迁移的延迟时间。链路故障会引发网络重新进行生成树的计算,生成树的结构将发生相应的变化。不过重新计算得到的新配置消息无法立刻传遍整个网络,如果新选出的根端口和指定端口立刻就开始数据转发的话,可能会造成临时环路。为此,STP采用了一种状态迁移机制,新选出的根端口和指定端口要经过2倍的Forward Delay延时后才能进入转发状态,这个延时保证了新的配置消息传遍整个网络,从而防止了临时环路的产生。

Forward Delay Timer

默认是15秒

树的基本理论

 在一个具有物理环路的交换网络中,交换机通过运行STP,自动生成一个没有环路的逻辑拓扑。该无环逻辑拓扑也称为STP树(STP Tree),树节点为某些特定的交换机,树枝为某些特定的链路。一棵STP树包含了唯一的一个根节点,任何一个节点到根节点的工作路径不但是唯一的,而且是最优的。当网络拓扑发生变化时,STP树也会自动地发生相应的改变。

 简而言之,有环的物理拓扑提高了网络连接的可靠性,而无环的逻辑拓扑避免了广播风暴、MAC地址表翻摆、多帧复制,这就是STP的精髓。

生成树的生成过程

①选举根桥(Root Bridge),作为整个网络的根。

②确定根端口(Root port,RP),确定非根交换机与根交换机链接最优的端口。

③确定指定端口(Designated Port,DP),确定每条链路与根桥连接最优的端口。

④阻塞备用端口(Alternate Port,AP),形成一个无环网络。

实验操作

组网需求

在一个复杂的网络中,网络规划者由于冗余备份的需要,一般都倾向于在设备之间部署多条物理链路,其中一条作主用链路,其他链路作备份。这样就难免会形成环形网络,若网络中存在环路,可能会引起广播风暴和MAC表项被破坏。

当前网络中存在环路,SwitchA、SwitchB、SwitchC和SwitchD都运行STP,通过彼此交互信息发现网络中的环路,并有选择的对某个端口进行阻塞,最终将环形网络结构修剪成无环路的树形网络结构,从而防止报文在环形网络中不断循环,避免设备由于重复接收相同的报文造成处理能力下降。

配置文件

SwitchA的配置文件

#
sysname SwitchA
stp mode stp
stp instance 0 root primary 
stp pathcost-standard legacy
#
return

SwitchB的配置文件

sysname SwitchB   
# 
stp mode stp   
stp bpdu-protection
stp pathcost-standard legacy
#  
interface GigabitEthernet0/0/2   
 stp edged-port enable 

return

SwitchC的配置文件

sysname SwitchC  
#  
stp mode stp 
stp pathcost-standard legacy
stp bpdu-protection
#  
interface GigabitEthernet0/0/1          
 stp instance 0 cost 20000 
#  
interface GigabitEthernet0/0/2     
 stp edged-port enable 
#  
return  

SwitchD的配置文件

sysname SwitchD 
# 
stp mode stp  
stp instance 0 root secondary      
stp pathcost-standard legacy
#   
return 

;