STP生成树协议种类与对应的算法分析!!STP的安全防护策略!!----知识总结

前奏(交换技术在哪里应用,整体的架构情况):

 

企业三层架构(内网结构):

接入层---常使用二层交换机,就近提供接口密度,用于用户的接入;

汇聚层(分布层)----集合所有接入层流量(星型),对流量实施管理和策略;

核心层---路由转发,高速转发,nat,QOS;

 

BCMSN--交换技术主要应用于汇聚和接入层;-----

VLAN/TRUNK/VTP/DTP/STP/CHANNEL/HSRP../VPC等

 

 

正式步入stp的学习(对交换技术中的stp协议进行解读)

 

第一部分:stp中的传递信息

 

三层架构中最重要的思想为冗余(备份)--线路冗余---设备冗余---网关冗余---USP(电源冗余)

STP:【1】IEEE802.1D  

交换机间沟通时使用的数据帧---BPDU 桥协议数据单元--跨层封装到二层

BPDU数据帧默认不属于任何一个vlan,故在存在vlan的设备上,该数据帧基于native vlan发送;

3个种类的BPDU:

  1. 配置BPDU --- 拓扑收敛完成后,仅根网桥周期(2s)发送;在没有根网桥的时候,所有设备仅发送BPDU;---选举根网桥、发布拓扑信息、周期保活链路

 

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

        当一台交换机的阻塞端口链路被断开,那么将flags位中的第七位变成1,标识拓扑已经改变,该BPDU将发送到根网桥处,根网桥使用flags位的第0位变成1,来表示确认;若没有收到ack,那么2s周期发送TCN;根网桥在确认后,将使用BPDU告诉所有的非根网桥,刷新cam表;

默认cam的保存周期为300s;

 

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

 

总结

根网桥先发配置BPDU,包含拓扑信息

 

然后根据是否与根网桥断开了联系,才决定发那种PBDU!! 

详细情况如下:  

  

1. 非根网桥的阻塞端口被断开,同时依然可以与根网桥沟通,那么发送TCN,不包含拓扑信息,不会使网络重新收敛,只是让大家刷新cam表;

 

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

 

 

第二部分:Stp中的各种协议分析

 

802.1D协议(最原始的stp协议)

【1】802.1D 算法中的角色选举

Stp生成树协议中根网桥、根端口、指定端口、阻塞端口的选举过程详解:

 

下面所有图中的小方块都代表一个可以配MAC,支持生成树协议的交换机。

 

实例分析:

STP生成树协议种类与对应的算法分析!!STP的安全防护策略!!----知识总结_第1张图片

选举角色详解:

一、根网桥:比较本地的MAC地址,最小的就是根网桥!!!

 

二、根端口:除根网桥外,每个交换机都必须有且只有一个根端口,本地离根网桥最近的接口,一眼看不出来的,就根据根端口的选举规则:

  1. 先比较入方向最小cost值
  2. 若cost值相等;则比较该接口对端(上级)的设备的BID(MAC地址);小优

Cost值相同的情况:

STP生成树协议种类与对应的算法分析!!STP的安全防护策略!!----知识总结_第2张图片

3.ID相同;则比较该接口对端(上级)设备的PID(端口号);小优

BID相同的情况:

4、若PID也相同;则比较本地PID;

      PID相同的情况:

STP生成树协议种类与对应的算法分析!!STP的安全防护策略!!----知识总结_第3张图片

根端口是接收根网桥的BPDU的!!

 

 

三、指定端口:根端口的对端端口一定是指定端口!根网桥上的端口全是指定端口!!其他情况的指定端口的选举规则是:

  1. 比较从该接口发出BPDU的cost值
  2. 比较本地的BID,小优
  3. 比较本地PID,小优

本地PID相同的情况:

STP生成树协议种类与对应的算法分析!!STP的安全防护策略!!----知识总结_第4张图片

4、直接阻塞端口

指定端口是用来转发根网桥的BPDU的!!

四、阻塞端口:当上面都选完了剩下的就是阻塞端口了!!阻塞是逻辑阻塞,会接收流量但对流量是置之不理的态度!!

 

 

选举过程简单介绍:

先是每一个交换机找一个根端口,在把根端口对面的指定端口和根网桥上的所有指定端口找出来,剩余的线路选一个指定端口,选一个非指定端口!!

 

 

【2】接口状态与stp过程的关联讲解:

Down:接口指示灯未亮起,网线刚刚连接,不能收发BPDU

 

侦听:接口指示灯为橙色,进行BPDU收发,选举各种角色  时长为15s

 指定端口和根端口进入到下一个状态;非指定端口进入阻塞状态,指示灯一致保持为橙色

 

学习:接口指示灯为橙色,根端口和指定端口学习各个接口下方连接的PC的MAC地址;

        生成MAC表;15s时长结束后进入下一状态

 

转发:接口指示灯为绿色,收敛完成;可以正常转发用户的数据;在30s内接口是不能转发用户数据;

【3】收敛时间分析

  1. 初次收敛--30s  15侦听+15学习
  2. 结构突变
  1. 存在直连检测---本地只有一个阻塞端口可以收到BPDU

   该接口直接进入侦听和学习状态,需要30s转换为根端口;

STP生成树协议种类与对应的算法分析!!STP的安全防护策略!!----知识总结_第5张图片

2)没有直连检测---阻塞端口需要20shold+30s收敛=50s

STP生成树协议种类与对应的算法分析!!STP的安全防护策略!!----知识总结_第6张图片

802.1D算法的缺点:

1、收敛速度慢

2、链路利用率低  备份路径在最佳路径存在时一直闲置;

 

 

                      PVST协议(基于vlan的生成树协议)

 

每个vlan中存在一棵生成树,通过将不同生成树的根放置于不同汇聚层位置,来实现链路利用率的提高;

每个vlan发出一个BPDU;各个vlan进行各自的802.1D计算

为了区分不同vlan发出的BPDU,网桥优先级(4096的倍数)+VLANid

注:若需要一台交换机加入到一个vlan的生成树中;前提是该交换机创建该vlan,连接了该vlan的用户----本地有接口划分到vlan2,且双up;或者本地存在双up的trunk干道

 

缺点:

  1. 收敛慢   2、cisco私有  3、树多,带宽和设备硬件资源均占用(cisco设备存在一个专用芯片来进行多生成树运行)   4、仅支持接口封装为ISL的trunk干道

 

 

                              PVST+协议

  • PVST+   在PVST的基础上进行了升级;目标大多数cisco设备默认使用的stp协议;

   升级点:1、支持802.1q封装  2、可以做部分的加速收敛

 

 

干涉选举的命令:

1、修改优先级,但必须为4096的倍数

sw1(config)#spanning-tree vlan 2 priority ?

<0-61440> bridge priority in increments of 4096

  1. 直接设置备份和主根

sw1(config)#spanning-tree vlan 2 root primary   本地为vlan2主根

sw1(config)#spanning-tree vlan 1 root secondary  本地为vlan1 的备份根

该命令不一定完全生效;主根命令是本地优先级下降2个4096

备份根命令是本地优先级下降1个4096

 

  1. 修改接口优先级或者cost值

CORE(config)#interface f0/1

CORE(config-if)#spanning-tree vlan 2 port-priority ?

  <0-240>  port priority in increments of 16  必须以16的倍数来修改

 

CORE(config-if)#spanning-tree vlan 2 cost ?  修改cost值

  <1-200000000>  Change an interface's per VLAN spanning tree path cost

如何加速:

  1. 端口加速    连接PC的接口,开启端口加速后;一旦连线,直接为转发状态;

Switch(config)#interface fastEthernet 0/16

Switch(config-if)#spanning-tree portfast      

:端口加速不能用于连接其他交换机的接口,只能用于连接pc或者服务器之类的接口上,它加速的原理是:让接口不参与生成树的运算!!如果用于连接交换器的接口上,则有可能触环!!

 

CORE(config)#interface f0/1

CORE(config-if)#switchport host   主机接口

写这条命令相当于该接口同时写入两条命令

switchport mode access   这条命令的意义:防止DTP,用户电脑开启trunk,形成trunk干道,增加数据泄露的风险!!

spanning-tree portfast

 

 

CORE(config)#spanning-tree portfast default  全局下开启端口加速,对trunk干道不生效;

 

  1. 上行链路加速(针对存在直连检测的加速)

在设备上配置上行链路加速后,一旦该交换机满足直连检测条目,该阻塞端口直接成为根端口,进入转发状态;

CORE(config)#spanning-tree uplinkfast   只能在接入层设备上配置

注:该命令一旦配置,那么该交换机的网桥优先级和接口cost值将会加大;

   其意义在于存在阻塞端口的设备才会存在直连检测,而阻塞端口最好在接入层设备上;故加大优先级和cost值,在于放弃成为根网桥,尽量成为阻塞端口;

 

  1. 骨干加速(针对次优BPDU的加速)

当阻塞接收到次优BPDU,那么该接口取消20s hold time,进入30s收敛;

不能取消30s收敛时间,因为不确定是否会触环!!

比如:

STP生成树协议种类与对应的算法分析!!STP的安全防护策略!!----知识总结_第7张图片

CORE(config)#spanning-tree backbonefast

该命令所有设备均可配置

 

 

缺点:1、树多 2、私有协议 3、加速不够彻底

 

 

 

 

            802.1W(非cisco)  RSTP(cisco)快速生成树

RSTP 可以兼容802.1W,802.1w也是目前非cisco产品大多的默认协议

 802.1W --- 快速的生成树协议 ----  对802.1D的提速 --- 一棵树

   RSTP      cisco的快速生成树----  对PVST+的提速  --- 每个vlan 一棵树

两种协议,均为快速收敛1-2s完成收敛,提速的原理一致;区别在于cisco有基于vlan的运算芯片,故RSTP依然一个vlan一棵树;802.1w整个交换网络一棵树;

 

快速的原理:

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

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

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

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

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

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

注:TCN消息的源直接发TCN给所有其他交换机然后直接刷新!!

 

状态变化:将阻塞状态和侦听状态 合为丢弃状态

角色变化:将非指定端口为AP-替代接口 BP-备份接口

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

 

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

sw1(config)#spanning-tree mode rapid-pvst

注:所有干涉选举的命令和pvst+一致;

 

切记:

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

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

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

sw1(config)#interface range ethernet 0/0 -1

sw1(config-if-range)#spanning-tree link-type point-to-point

 

 

【5】MST-802.1S  --分组式的生成树

将多个vlan放置在一个组内,为每个组生成一个树,树型算法为802.1w;将不同组的根网桥放置到不同的汇聚层设备处,可以流量的分载,提供链路利用率;

不同组发出的BPDU,使用网桥优先级区分 优先级+组ID  

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

切记:整个交换网络需所有设备都布置mst协议,mst不向下兼容Rstp等协议!

sw1(config)#spanning-tree mode mst  修改协议

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

sw1#show spanning-tree mst 0

 

sw1(config)#spanning-tree mst configuration

sw1(config-mst)#instance 1 vlan 1-50   将vlan1-50划分到组1

sw1(config-mst)#instance 2 vlan 51-100 将vlan51-100划分到组2

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

 

定义根网桥,备份根网桥的位置

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

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

 

sw1(config)#interface 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

 

第三部分:STP的安全             

【1】BPDU保护

 

接入层接口默认为DP(指定端口),该端口连接的是PC

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

可以将这些接口开启BPDU保护功能;被保护接口若收到BPDU,那么将进行错误关闭状态;

进入该状态的接口状态和协议均down,若需要重新唤活该接口:

1、手工重启---先关闭再开启

2、自动启动----需要人配置,配置后若该接口在300s内没有收到BPDU了,那么将自动开启

sw2(config)#interface e0/0

sw2(config-if)#spanning-tree bpduguard enable    

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

被保护接口若接收到BPDU将错误关闭

sw2#show interfaces e0/0

Ethernet0/0 is down, line protocol is down (err-disabled)

 

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

sw2#show interfaces status err-disabled

Port      Name               Status       Reason

Et0/0                        err-disabled   bpduguard

 

 

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

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

sw2#show errdisable recovery  查看各种错误的原因状态

 

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

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

 

 

全局配置:

在接入层接口上,开启所有接口的端口加速和所有接口的BPDU保护

sw2(config)#spanning-tree portfast bpduguard

全局开启后,还需要到上行链路上进行BPDU保护的关闭

sw2(config)#interface e0/0   

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

 

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

 

[2]BPDU过滤

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

sw2(config)#interface e0/0  接口开启或关闭

sw2(config-if)#spanning-tree bpdufilter ?      

  disable  Disable BPDU filtering for this interface

  enable   Enable BPDU filtering for this interface

 

sw2(config)#spanning-tree portfast  bpdufilter default  全局开启

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

 

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

 

[3]根网桥保护

若网络中增添了新的交换机,其BID最优;那么将抢占网络的根网桥,导致拓扑结构变化;

在接口开启根桥保活后,若交换机的接口接收到了更优BPDU时,将该接口阻塞;直到该接口不再收到更优BPDU才恢复;

sw2(config)#interface e0/0

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

 

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

sw2#show spanning-tree interface ethernet 0/0 detail

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

 

sw2#show spanning-tree

Et0/0               Desg BKN*100       128.1    Shr *ROOT_Inc  

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

 

sw2#show spanning-tree inconsistentports  查看出现不一致的接口

Name                 Interface              Inconsistency

-------------------- ---------------------- ------------------

VLAN0001             Ethernet0/0            Root Inconsistent

 

Number of inconsistent ports (segments) in the system : 1

 

 

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

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

 

 

 

环路保护

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

解决方法:

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

 

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

sw2(config)#interface e0/0

sw2(config-if)#spanning-tree guard loop  开启命令

 

总结:UDLD和loop gurad区别

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

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

2、UDLD用于处理硬件的单向问题,loop guard被用于处理软件问题(接口拥塞,CPU过载)

   建议两种技术均配置

 

 

 

你可能感兴趣的:(CCNP)