STP生成树详解

 

一、STP(生成树协议)

1.1 线路冗余

一旦在交换机上使用链路冗余,那么将出现二层的桥接环路;因为CAM是流量触发交换机生成的, 该表默认并没有被管理

1.1.1造成的影响

  1. 广播风暴
  2. CAM表记录翻滚(MAC地址表不稳定)
  3. 数据帧的重复拷贝

1.1.2 解决方案

逻辑性阻塞某个接口

1.2 STP(Spanning Tree生成树)

树根设备到每台交换机仅存在一条链路(默认选择最佳);逻辑的阻塞部分链路;当最佳路径故障时,阻塞端口被打开,来恢复通讯

1.2.1 生成树类型

公有生成树:STP(802.1D生成树)、RSTP(802.1W生成树)、MST(802.1S多生成树)

私有生成树:PVST(基于VLAN的标准生成树)、PVRST+(基于VLAN的快速生成树)

1.2.2 802.1D

1.BDPU

交换机间沟通时使用的数据帧:BPDU(桥协议数据单元)

跨层封装到二层--BPDU数据帧默认不属于任何一个vlan,故在存在与vlan的设备上,该数据帧基于native vlan发送

2.BPDU分类

1)配置BPDU

拓扑收敛完成后,仅根网桥周期(2s)发送(目的保活);在没有根网桥的时候,所有设备仅发送BPDU;

2)拓扑变更BPDU(TCN-BPDU)

拓扑变更消息,包中不包含任何具体信息,也不会导致网络重新收敛

当一台交换机的阻塞端口链路被断开,那么将标记位中第7位置1,标记拓扑已经改变,该BPDU将发送到根网桥处,根网桥使用标记位为第6位,来表示确认;若没有收到ACK,那么2s周期发送TCN;根网桥在确认后,将使用BDPU告诉所有的非根网桥,刷新CAM表,默认CAM的保存周期为300s

3)次优BPDU

非根网桥上的根端口断开--或接受不到根网桥的BPDU了,同时本地断开的已不是阻塞端口;那么本地将自己定义为根网桥,发出BPDU,由于该BPDU次于根网桥的,故称为次优BPDU

 

总结:根网桥发送配置BPDU,包含拓扑信息    

非根网桥的阻塞端口被断开,当依然可以与根网桥沟通,那么发送TCN,不包含拓扑信息,不会使网络重新收敛

非根网桥上断开了根端口后,若不能在与根网桥沟通,将本地定义为根网桥发送次优BPDU,包含本地的拓扑信息;也是配置BDPU,但不是根网桥的

3.BDPU主要字段

Bytes

Filed

2

Protocol ID

1

Version

1

Message Type

1

Flags

8

Root ID

4

Cost of path

8

Bridge ID

2

Port ID

2

Message age

2

Max age

2

Hellotime

2

Forward delay

4.生成树选举

选举过程:根网桥---根端口(RP)---指定端口(DP)---非指定端口(NDP)

开始整个交换网络没有根网桥,所有设备均认为本地为根网桥,发送本地BPDU;

当收集到整个交换网络的BPDU后,根网桥被选出;之后由根网桥基于所有的BPDU,生成拓扑,使用配置BPDU来告知其他的交换机;

1)根网桥

整个交换网路的中心;通过BPDU来控制整个网络收敛

选举条件:协议ID(PID)=网桥优先级(BID)+MAC地址

网桥优先级:0-65535(默认32768)

正常的透明交换机不拥有mac地址,不能实现stp技术;非透明交换存在--SVI接口,出厂将被烧录mac地址;若有多个,将选择数字最小的来参选

选举规则:先比较优先级,数值越小越优先;若优先级一致,比较MAC地址,数值越小越优先

 

2)根端口

只能存在于非根网桥上,并且一个交换机只有一个;离根网桥最近的接口;作用是接收来自根网桥的BPDU,正常转发用户的数据流--非阻塞

 

不同带宽时的cost值:

Bandwidth

Cost

10M

100

100M

19

1000M

1

10000M

2

>10000M

1

选举规则:

(1)比较从该接口进入时的cost值,越小越优先(Cost值实在进入交换机时,才叠加该段链路的开销)

 

(2)若接口cost值相同,比较接口上级设备的BID,BID最小设备对应的接口为根端口,因为给设备为备份根网桥

(3)若接口cost值相同,上级设备的BID也相同,再比较上级设备的PID(端口ID)=优先级+接口编号 

   优先级:0-255(默认为128); 先比较优先级,越小越优先;再比较接口编号,越小越优先

   

(4)若以上参数全部一致,比较本地的PID,越小越优先

   

3)指定端口(DP)

每条链路上有且仅有一个;转发来自根网桥的BPDU;根网桥上全部为指定端口,根端口的对端一定是指定端口

选举规则:

  1. 必须从根网桥发出的BPDU,通过该端口向外(出项)转发时消耗的cost值,越小越优先
  2. 若出向cost值相同,比较本地的BID,越小越优先
  3. 本地BID相同,比较本地的PID,越小越优先

(4)本地PID相同,直接阻塞该端口

4)非指定端口(NDP)

又称为阻塞端口,以上所有角色选举完成后,剩余的全部接口为非指定;其状态为阻塞

注:阻塞端口并不是关闭接口,依然可以接收到数据帧,但不转发数据帧;可以正常识别BPDU

 

注:生成树协议,cisco产品默认运行,个别厂商需要手工开启-例:H3C

5.802.1D的端口状态

端口状态

端口能力

Disabled

不收发任何报文

Blocking

不接收或者转发数据,接收但不发送BPDU,不进行地址学习

Listening(15s)

不接收或者转发数据,接收并发送BPDU,不进行地址学习

Learning(15s)

不接收或者转发数据,接收并发送BPDU,开始进行地址学习

Forwarding

接收或者转发数据,接收并发送BPDU,进行地址学习

 

结论:802.1D必须在指示灯为绿色时,才开始转发用户流量

 

6.802.1D算法的收敛时间

1>初次收敛为30s

2>结构变化

(1)存在直连检测,本地的根端口断开后,之后仅一条阻塞端口连接于其他交换机;本地不能发出TCN或也发不出次优BPDU;那么只能本地的阻塞端口,总的收敛时间30s

(2)没有直连检测,本地根端口断开后,可以向其他交换机的阻塞端口发送次优BPDU;对端交换机在收到次优BPDU后,将忽略该数据帧,而是进行20shold time;之后再收敛该接,总的收敛时间:20s hold time+30s收敛=50s

7.STP控制

一旦运行将自动选择出所有的角色,当默认可能不是最佳结构,需要管理员手工干预,尤其根网桥一定放置在汇聚层或核心层的交换机上,产生上层blocking端口的数量

方法一:修改设备的网桥优先级(4096的倍数)

方法二:设置主根和备份根

方法三:控制根端口位置,修改链路Cost值

方法四:修改发送方的PID优先级

9.802.1D生成树的优缺点

优点:树少、简单

缺点:1.收敛速度慢

           2.链路利用率低---备份链路正常始终不工作

1.2.3 PVST(基于VLAN的生成树)

每个vlan一棵树;因为cisco存在独立的vlan运行芯片,故可以支持很多的树;

每棵独立的树,依然使用802.1d算法收敛

不同vlan的网桥优先级不同,优先级=32768+vlan id;人为可修改32768的部分,且只能以4096的倍数来进行修改;

切记:一台设备若希望加入某棵vlan的树,件是该交换机存在该vlan;该交换机存在该vlan的活动接口或者存在trunk干道;

1.PVST优缺点

优点:简单、支持负载分担

缺点:私有、树多较难管理、收敛慢、trunk干道仅支持ISL封装

1.2.4 PVST+

在PVST的基础上进行了部分的升级优化;兼容802.1q trunk干道封装,可以做部分的加速优化

1.PVST+优缺点

优点:1.一个VLAN一棵树,提高连理的利用率

           2.部分加速

           3.兼容802.1Q

缺点:1.树多,不好管理

           2.加速不够彻底

1.2.5 RSTP

    RSTP:也叫RPVST(快速的PVST协议),思科私有

    802.1w(802.1D的快速版),公有

1.RSTP和802.1w的异同

相同点:两种协议均为快速收敛1-2s完成收敛,提速的原理一致

区别:RSTP有基于vlan的运算芯片,故RSTP依然一个vlan一棵树;802.1w整个交换网络一棵树

2.RSTP的端口状态

    1)Discarding:丢弃状态

    2)Learining:学习状态

    3)Forwarding:转发状态

3.RSTP的端口角色

1)根端口(RP):同802.1D

2)指定端口(DP):同802.1D

3)替代端口(AP):如果一个端口收到另外一个网桥的 BPDU,但不是最好的,那么这个端口成为替换端口

4)备份端口(BP):在如果一个端口收到同一个网桥的更好 BPDU,那么这个端口成为备份端。当两个端口被一个点到点链路的一个环路连在一起时,或者当一个交换机有两个或多个到共享局域网段的连接时,一个备份端口才能存在

注:无论AP还是BP其实就是802.1D中的阻塞端口,AP为对端设备,BP为本端设备

 

4.802.1w中端口角色

1、边缘端口:edge Port,非trunking,access接口

2、非边缘端口:非edge Port,trunking接口

5.RSTP快速的原理

1、取消了计时器,而是在一个状态工作完成后,直接进入下一状态

2、分段式同步,两台设备间逐级收敛;使用请求和同一标记;依赖标记位的第1和第6位

3、BPDU的保活为6s;hello time 2s

4、将端口加速(边缘接口)、上行链路加速、骨干加速集成了

5、兼容802.1d和PVST,但802.1d和PVST没有使用标记位中的第1-6位,故不能快速收敛;因此如果网络中有一台设备不支持快速收敛,那么其他开启快速收敛的设备也不能快速

6、当TCN消息出现时,不需要等待根网桥的BPDU,就可以刷新本地的cam表

 

启动快速生成树,所有交换机全部需启动

注:所有干涉选举的命令和上面一致

切记:

默认接口为半双工(10M)时,接口类型为共享;全双工时为点到点;

共享型接口依然运行慢速生成;只有点到点接口可以快速;

故建议将共享型接口修改为点到点型

1.2.6 MST

    MST,思科私有

    802.1S多生成树,公有

1.MST的原理

    将多个vlan放置在一个组内,为每个组生成一个树,树型算法为802.1w;将不同组的根网桥放置到不同的汇聚层设备处,可以进行流量的分栽,提供链路利用率;不同组发出的BPDU,使用网桥优先级(=优先级+组ID)区分

    优先级默认为32768,只能以4096的倍数来进行修改

    切记:整个交换机需要所有的设备均正常MST协议,才进行部署

2.MST的配置

修改封装为802.1q(SW1-SW3同配置):

 

创建vlan(SW1-SW3同配置):

 

SW1(config)#spanning-tree mode mst      #修改生成树协议

默认存在组0,且默认所有vlan处于组0

 

修改连接类型为点到点(SW1-SW3同配置):

 

SW1#show spanning-tree mst 0

 

SW1-SW3同配置:

切记:所有运行MST协议的设备,分组内容必须完全一致,否则可能出现问题

 

定义根网桥,备份根网桥

SW1(config)#spanning-tree mst 1 root primary        #降2个4096

SW1(config)#spanning-tree mst 2 root secondary      #降1个4096

 

SW2(config)#spanning-tree mst 1 root secondary

SW2(config)#spanning-tree mst 2 root primary

 

SW1(config)#int e0/0        #修改参选接口的参数

SW1(config-if)#spanning-tree mst 1 ?

  cost           Change the interface spanning tree path cost for an instance

  port-priority  Change the spanning tree port priority for an instance

1.2.7 STP增强

1.端口加速(portfast)

针对交换机的access接口,连接的是终端用户这些不需要运行生成树的端口,切记不得配置于连接trunk干道的接口。默认进入listening状态,等待30s进入转发状态

节约时间:30s

    位置:接入层交换机的access接口

2.上行链路加速(uplinkfast)

在设备上运行上行链路加速后,若该设备满足直连检测条件;那么将阻塞端口直接变为根端口,进入forwarding状态

节约时间:30s

    位置:所有的接入层交换机上

注:开启后,该交换机的网桥优先级和cost值,将倍增;迫使该设备在默认情况下不会成为根网桥,且阻塞端口处于该设备;故该命令只敢在接入层设备配

3.骨干加速(backbonefast)

若一个阻塞端口收到次优BPDU时,将20s hold time+30s收敛,开启骨干加速后;省略20s的hold time

节约时间:20s

位置:所有交换机

1.3 STP的安全

1.3.1 BPDU Guard(BPDU保护)

接入层接口默认为DP(指定端口),该端口连接的是PC。若该接口的PC被更换或者被用户模拟,成为一台交换机,那么可能导致网桥转移,最终迫使网络结构发生变化。因为根网桥最佳设置应该在汇聚层,而新的结构可能改变该特性,导致网络运行不佳,流量集中于接入层设备

1.errdisable

可以将这些接口开启BPDU保护功能;被保护接口若收到BPDU,那么将进行错误关闭状态;进入该状态的接口状态和协议均down。

(1)重新唤醒该接口的方法

  1. 手工重启:先关闭(shutdown)再开启(no shutdown)
  2. 自动启动:需要人配置,配置后若该接口再300s内没有收到BPDU了,那么将自动开启

(2)配置位置

在接入层连接用户的接口上,开启BPDU保护功能

若接口出现了错误关闭,可以查看导致原因

(3)查看各种错误关闭的原因

 

针对BPDU保护出现的错误关闭,可以通过手工重启,或设置自动重启

SW1(config)#errdisable recovery cause bpduguard #当BPDU保护出现后的自动重启

 

SW1(config)#errdisable recovery interval ?      #默认300s收不到BPDU将自动重启

  <30-86400>  timer-interval(sec)              #修改计时器,最小30s

 

SW1(config)#spanning-tree portfast bpduguard    #在接入层接口的接口上,开启所有接口的端口加速和所有接口的BPDU保护,全局开启后,还需要到上行链路上进行BPDU保护的关闭

SW1(config)#int e0/0

SW1(config-if)#spanning-tree bpduguard disable      #关闭单个接口的BPDU保护

 

SW1#show spanning-tree summary totals       #查看各种全局协议的配置

2.BPDU过滤

    开启BPDU过滤后,若接入层接口收到BPDU信息,将仅丢弃BPDU数据帧,正常转发用户流量

注:全局开启后,需要在上行链路手动关闭

 

3.保护和过滤的区别

    保护和过滤除了对接口的处理方式不同,还存在一个区别:保护是拒绝接收BPDU,但可以发送;过滤是收发均拒绝

1.3.2 根网桥保护

       若网络中增添了新的交换机,其BID最优;那么将可能抢占网络的根网桥,导致拓扑结构发生变化。在接口开启根桥保护后,若交换机的接口接收到了更优BPDU时,将该接口阻塞,直到该接口不再收到更优BPDU才恢复

SW2(config-if)#int e0/0

SW2(config-if)#spanning-tree guard root       #接口开启根桥保护

 

开启根桥保护的接口,在接收到更优BPDU时,将阻塞,进入broken状态,显示与根不一致

SW2#show spanning-tree interface e0/0 detail

Port 1 (Ethernet0/0) of MST0 is broken     (Root Inconsistent)

 

不一致接口在生成树中的显示:

SW2#show spanning-tree

Et0/0               Desg BKN*2000000   128.1    P2p *ROOT_Inc

 

查看出现不一致的接口

 

接入层接口---保护、过滤·、收到BPDU

根网桥保护---新连接的交换机的接口

 

总结:BPDU保护和过滤配置在所有的接入层连接PC的接口;

       根网桥保护建议配置在新连接交换机的接口,来避免网络的重新收敛

1.4 STP的环路保护 

单向链路故障,尤其在光纤网络,很有可能出现可以接收但不能发送;一旦出现单向链路故障,网络及时存在STP,也依然可能出现环路

1.4.1 UDLD

当一根网线出现单向链路故障时,直接关闭该接口

IOU1(config)#udld enable               #全局开启所有接口的UDLD                                 

IOU1(config)#int e0/0                       #在接口上开启UDLD

IOU1(config-if)#udld enable     

IOU1(config-if)#no udld enable        #关闭

IOU1(config-if)#udld disable             #关闭

1.4.2 LOOP GUARD

开启后,仅针对BPDU包,识别为单向链路故障,先对该接口进行阻塞,然后自动恢复

1.4.3UDLD与LOOP GUARD的区别

1)UDLD被触发后,接口被err-disable;然后需要手工重启或自动重启

Loop Guard被触发后,自动阻塞然后恢复接口

2)UDLD用于处理硬件的单向问题,Loop Guard被用户处理软件问题(接口拥塞,CPU过载),建议两种技术均配置

猜你喜欢

转载自blog.csdn.net/weixin_43265596/article/details/85144106