首页 > 技术文章 > STP生成树协议

hehuanling 2018-12-13 10:53 原文

在传统的交换网络中会产生故障(单点故障)导致主机通信失败。

解决单点故障:

1. 增加冗余链路

2. 增加冗余设备

冗余链路又会产生环路,消耗链路资源和交换机资源。

环路引起的问题:

1. 广播风暴

2. MAC地址表不稳定

3. 多帧复制,重复帧发送

为了解决环路,引入生成树协议

生成树协议(Spanning Tree Protocol,STP)是一种工作在OSI网络模型中的第二层(数据链路层)的通信协议,

基本应用是防止交换机冗余链路产生的环路。用于确保以太网中无环路的逻辑拓扑结构,从而避免了广播风暴,大量占用交换机的资源。

STP的基本原理,通过在交换机之间传递一种特殊的协议报文,网桥协议数据单元BPDU(Bridge Protocol Data Unit),来确定网络的拓扑结构。BPDU有两种,配置BPDU(Configuration BPDU)和TCN BPDU。前者是用于计算无环的生成树的,后者则用于在二层网络拓扑发生变化时产生用来缩短MAC表项的刷新时间的(由默认的300s缩短为15s)

生成树基本计算过程

1、选举根交换机

①比较桥ID(BID),BID数值最小的为根桥。配置BPDU中BID有8个字节,2个字节的桥优先级,6个字节的背板MAC地址。

②先比较桥优先级。桥优先级的范围是0~65535,缺省值是32768.配置值为4096的倍数。优先级小的为根桥。

③桥优先级相同,比较背板MAC地址,MAC地址小的为根桥。

2、选举根端口 非根桥唯一

根端口的选举就是在所有的非根桥交换机上的不同端口之间选举出一个到根桥最近的端口。当然这个“最近”的衡量标准不是根据到达根桥所经过的桥数,而是根据端口到根桥的累计根路径开销最小来判定的。每个非根桥设备都要选择一个根端口,根端口对于一个设备来说有且只有一个。

① 根端口选举比较端口到根桥的cost值。Cost值叫开销值,表示从根桥到本设备端口的总开销为多少。

根据特定值累加,数值小的为根端口     

链路速度

开销(最新修订)

开销(以前)

10Gbps

2

1

1Gbps

4

1

100Mbps

19

10

10Mbps

100

100

② Cost值相同,比较直连网桥的BID,数值小的为根端口

③ Cost、直连网桥BID都相同,比较直连网桥的PID(Port ID)1字节的优先级+1字节的端口标识,配置范围0~240 为16的倍数(默认128)对端端口ID小的为根端口

3、指定端口选举

①根路径开销较低

②所在的交换机网桥ID值小

③ 端口号小

注:根桥上的端口都是指定端口

交换机端口角色

① Root Port     根端口是所在交换机上离跟交换机最近的端口,处于转发状态。接收BPDU不能转发BPDU。接收并转发数据。

②Designated Port    指定端口,转发所连接的网段发往根交换机方向的数据和从交换机方向发往所连接的网段的数据。接收并转发BPDU,接收并转发数据。

③ Alternate Port     预备端口,不向所连接的网段转发任何数据。接收BPDU不能转发BPDU。不能接收和转发数据。

端口状态                

端口状态

描述

Disabled

端口没有启用

此状态下端口不转发数据帧,不学习MAC地址表,不参与生成树计算。

Blocking

阻塞状态

此状态下端口不转发数据帧,不学习MAC地址表,此状态下端口接收并处理BPDU,但是不向外发送BPDU。

Listening

侦听状态

此状态下端口不转发数据帧,不学习MAC地址表,只参与生成树计算,接收并发送BPDU。

Learning

学习状态

此状态下端口不转发数据帧,但是学习MAC地址表,参与计算生成树,接收并发送BPDU。

Forwarding

转发状态

此状态下端口正常转发数据帧,学习MAC地址表,参与生成树,接收并发送BPDU。

推荐阅读