生成树协议STP

一、什么是生成树协议STP

生成树协议是二层防环或破环协议

以太网交换网络中为了进行链路备份,提高网络可靠性,通常会使用冗余链路。但是使用冗余链路会在交换网络上产生环路,引发广播风暴以及MAC地址漂移等故障现象,从而导致用户通信质量较差,甚至通信中断。为解决交换网络中的环路问题,提出了生成树协议STP(Spanning Tree Protocol)。二层没有类似IP TTL的防环机制,环路问题无休止进行。

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

RSTP(Rapid Spanning Tree Protocol)协议基于STP协议,对原有的STP协议进行了更加细致的修改和补充,实现了网络拓扑快速收敛。

STP抓包

实验示例

PC1进行配置

mac地址配置为54-89-98-11-11-11;IP地址配置为192.168.1.1

第一步:生成树协议是默认开启的,我们先把STP关闭掉,观察产生环路的影响

LSW1:

复制代码
The device is running!

<Huawei>sys
Enter system view, return user view with Ctrl+Z.
[Huawei]sysname LSW1
[LSW1]undo info enable 
Info: Information center is disabled.
[LSW1]stp disable   \\关闭生成树STP协议
Warning: The global STP state will be changed. Continue? [Y/N]y
Info: This operation may take a few seconds. Please wait for a moment...done.

LSW2:

复制代码
The device is running!

<Huawei>
<Huawei>
<Huawei>sys
Enter system view, return user view with Ctrl+Z.
[Huawei]undo info enable
Info: Information center is disabled.
[Huawei]sysname LSW2  
[LSW2]stp disable   \\关闭生成树STP协议
Warning: The global STP state will be changed. Continue? [Y/N]y
Info: This operation may take a few seconds. Please wait for a moment...done.
[LSW2]

LSW3:

复制代码
The device is running!

<Huawei>
<Huawei>SYS
Enter system view, return user view with Ctrl+Z.
[Huawei]undo info enable
Info: Information center is disabled.
[Huawei]sysname LSW3
[LSW3]stp disable  \\关闭生成树STP协议
Warning: The global STP state will be changed. Continue? [Y/N]y
Info: This operation may take a few seconds. Please wait for a moment...done.
[LSW3]

将三个交换机的STP协议都关闭后,

随便ping一个ip地址

在LSW2的交换机g0/0/2抓包查看环路,发现产生了大量的ARP报文在一直转发,此时便产生了广播风暴,会不断占用设备带宽、CPU等资源,导致设备宕机

二、STP的术语概念

1.桥ID(BID,BridgeID)

桥ID:交换机标识ID,桥既交换机

IEEE 802.1D标准中规定BID由16位桥优先级 (Bridge Priority,16bit)与桥MAC地址(48bit)构成,一共64bit,8字节。两者是组合在一起,用一个字段来表示的。

其中桥优先级后12bit为固定值 不可变化,只能调整前4bit,前4个比特x后12bit(4096),所以桥优先级值为4096的倍数

每一台运行STP的交换机都拥有一个唯一的BID。

BID桥优先级占据高16bit,其余的低48bit是桥MAC地址。

在STP网络中,BID最小的设备会被选举为根桥。

根桥的BID也成为RID,非根桥的BID就叫BID

STP系统优先级值配置: \\修改优先级值

Huaweistp priority ? \\ 值必须为4096的倍数,默认优先级值为32768

INTEGER<0-61440> Bridge priority, in steps of 4096

桥ID比较,优选桥优先级值小的,如果优先级值相同,则优先选MAC地址小的。

2.根桥ID:RID根交换机Root Bridge

根桥是生成树运行的重要设备;

在一个系统的生成树中只存在一个根桥;

桥ID最小的设备成为根桥:先比优先级,优先级小的成为根桥;优先级相同,再比较桥mac地址,mac地址小的成为根桥

3.开销(Cost)

每一个激活了STP的接口都存在一个cost值,主要用于计算到达根桥路径的开销;

接口的缺省开销与其接口速率、工作模式有关,还与交换机使用STP cost的计算方法有关;

开销值与接口带宽成反比,接口带宽越大,则Cost值越小。

用户也可以配置开销值

默认的工作模式为Dot1T

交换机千兆接口默认开销值为20000,百兆接口默认开销值为200000

直接设置stp接口开销:

复制代码
[Huawei]int g0/0/2
[Huawei-GigabitEthernet0/0/2]stp cost 150   \\直接设置STP的接口开销,基本都用这种方法
查看STP接口的信息
[Huawei]dis stp interface g0/0/2
-------[CIST Global Info][Mode MSTP]-------
CIST Bridge         :32768.4c1f-cc49-4ef8
Config Times        :Hello 2s MaxAge 20s FwDly 15s MaxHop 20
Active Times        :Hello 2s MaxAge 20s FwDly 15s MaxHop 20
CIST Root/ERPC      :32768.4c1f-cc49-4ef8 / 0
CIST RegRoot/IRPC   :32768.4c1f-cc49-4ef8 / 0
CIST RootPortId     :0.0
BPDU-Protection     :Disabled
TC or TCN received  :5
TC count per hello  :0
STP Converge Mode   :Normal
Time since last TC  :0 days 0h:23m:5s
Number of TC        :3
Last TC occurred    :GigabitEthernet0/0/3
----[Port26(GigabitEthernet0/0/2)][FORWARDING]----
 Port Protocol       :Enabled
 Port Role           :Designated Port
 Port Priority       :128
 Port Cost(Dot1T )   :Config=auto / Active=20000  
 Designated Bridge/Port   :32768.4c1f-cc49-4ef8 / 128.26
 Port Edged          :Config=default / Active=disabled
 Point-to-point      :Config=auto / Active=true
 Transit Limit       :147 packets/hello-time
 Protection Type     :None
 Port STP Mode       :MSTP
 Port Protocol Type  :Config=auto / Active=dot1s
 BPDU Encapsulation  :Config=stp / Active=stp
 PortTimes           :Hello 2s MaxAge 20s FwDly 15s RemHop 20
 TC or TCN send      :1
 TC or TCN received  :0
 BPDU Sent           :639            
          TCN: 0, Config: 0, RST: 0, MST: 639
 BPDU Received       :0            
          TCN: 0, Config: 0, RST: 0, MST: 0
[Huawei]

1.更改STP接口的工作模式既开销计算标准

Huaweistp pathcost-standard ?

dot1d-1998 IEEE 802.1D-1998

dot1t IEEE 802.1T

legacy Legacy

Huaweistp pathcost-standard dot1d-1998

Huaweistp mode stp //将STP模式设置为stp,默认是mstp

2.直接更改接口的开销数值

Huawei-GigabitEthernet0/0/2stp cost 150 直接设置STP的接口开销,基本都用这种方法

4.RPC : 根路径开销(Root Path Cost)

每一个非根桥设备都要计算到达根桥的路径,

计算的路径开销值是叠加的

根桥的根路径开销为0

5.接口ID(Port ID,PID)

每一个运行了stp的接口都会存在一个PID,由端口优先级(4bit)+端口编号(12bit)组成

端口优先级会借用端口编号的高4位bit,所以优先级值取值6+

是16的倍数。

端口优先级值的取值范围是0-240

6.BPDU 网桥协议数据单元(Bridge Protocol Data Unit)

BPDU是STP能够正常工作的根本。BPDU是STP的协议报文。

STP交换机之间会交互BPDU报文,这些BPDU报文携带着一些重要信息,正是基于这些信息,STP才能够顺利工作。

BPDU分为两种类型:

1.配置BPDU(Configuration BPDU):STP正常工作交互的报文

①TC配置BPDU ②TCA配置BPDU

2.TCN BPDU(Topology Change Notification BPDU):STP故障情况下交互的报文

配置BPDU是STP进行拓扑计算的关键;TCN BPDU只在网络拓扑发生变更时才会被触发。

根桥的根路径开销(RPC)为0

根桥的桥ID叫做RID

复制代码
[Huawei]stp timer forward-delay ?  \\设置转发时延,单位是毫秒级
  INTEGER<400-3000>  STP forward delay in centiseconds, in steps of 100, the
                     default value is 1500

\\可设置范围为400-3000毫秒,既4-30秒,默认是15秒(1500)
1.选举最优BPDU的比对顺序:

①最小的根桥ID,RID

②最小的开销,RPC

③最小的网桥ID,BID

④最小的接口ID(对端的),PID

⑤最小的接口ID(本端的),PID

2.根桥选举完成后,进行端口角色的选举:

①根端口:RP(root port),RP就是接收B

PDU最好的接口;

非根桥交换机,每一个接口累加计算开销,计算开销最小接口就是根接口;

每一个非根交换机只有一个根端口RP

②指定端口:DP(destination port) ,DP端口就是发送最好BPDU的端口

DP端口就是链路上去往根桥最近的端口,根桥的端口都是DP端口

③阻塞端口

没有成为DP且没有成为RP的端口就是阻塞端口;阻塞的端口不能转发数据,逻辑上是down掉的;阻塞端口只能接受BPDU,不能发送BPDU

三、STP的几种状态

|--------------|--------------------------------|
| 禁用Disable | 不收发BPDU、不学习MAC地址、不转发业务数据帧 |
| 阻塞Dlocking | 收BPDU、不发BPDU、不学习Mac地址、不转发业务数据帧 |
| 侦听Listening | 收发BPDU、不学习MAC地址、不转发业务数据帧 |
| 学习Learing | 收发BPDU、学习MAC地址,不转发业务数据帧 |
| 转发Forwarding | 收发BPDU,学习MAC地址,转发业务数据帧 |