生成树协议

生成树

目标

  1. 生成树的工作原理与配置
  2. RSTP对于STP的改进
  3. 其他消除二层环路的方法

生成树概述

为什么存在二层环路

为了避免单点故障

人为(误操作)导致

二层环路带来的问题

广播风暴与MAC地址飘逸

局域网中网络不同、卡顿等绝大多数归咎于两个原因:ARP欺骗二层环路

广播风暴与地址漂移演示

拓扑

要先关闭生成树

stp disable

只要发1个广播包(IPOP构造),就会形成环路。

漂移,MAC地址对于SW1而言,一会儿从2口学习到,一会儿从1口学习到

此时模拟器的CPU已经炸了,5秒使用率76%

关闭后,环路消失,CPU过1分钟左右降下来

如果真机,以下现象

1.可能无法登录设备,登陆了也非常卡(模拟器不会)

2.接口带宽占用率高

3.cpu使用率高

Q:针对二层环路有什么解决方法?

  1. 关闭端口,阻止环路
  2. 月薪10万请人拔网线
  3. 使用TTL降低环路影响???
  4. STP

初识生成树协议

通过STP算法,将环路的一个端口逻辑堵塞,打破环路

注意,不是用命令shutdown端口或者拔网线

因为二层交换机不处理三层报文的内容,因此TTL不会减少

查一次路由表,做一次三层处理,TTL-1

STP概念与原理

概念1:桥ID Bridge ID

在STP中,每一台交换机都有一个标示符,叫做Bridge ID或者桥ID,桥ID由16位的桥优先级(Bridge Priority)和48位的MAC地址构成。

桥优先级是可以配置的,取值范围是0~65535,默认值为32768,可以修改但是修改值必须为1024的倍数。

概念2:根桥Root Bridge

树形的网络结构必须有树根,于是STP引入了根桥(Root Bridge)概念。

对于一个STP网络,根桥在全网中只有一个,它是整个网络的逻辑中心,但不一定是物理中心。根桥会根据网络拓扑的变化而动态变化。

网络收敛后,根桥会按照一定的时间间隔产生并向外发送配置BPDU,其他设备仅对该报文进行处理和转发,传达拓扑变化记录,从而保证拓扑的稳定。

优先级最高的设备(数值越小越优先)会被选举为根桥。如果优先级相同,则会比较MAC地址,MAC地址越小则越优先。

如图,需要在该网络中选举根桥,首先比较三台交换机的桥优先级,桥优先级都为4096,再比较三台交换机的MAC地址,谁小谁优先,最终选择SW1为根桥。

SW1被选举为根桥后,其他交换机均为非根桥。

概念3:Cost

交换机的每个端口都有一个端口开销(Port Cost)参数,此参数表示该端口在STP中的开销值。默认情况下端口的开销和端口的带宽有关,带宽越高,开销越小。

华为交换机支持多种STP的路径开销计算标准,提供多厂商场景下最大程度的兼容性。缺省情况下,华为交换机使用IEEE 802.1t标准来计算路径开销。

概念4:RPC

非根桥去往根桥有多条路径,每条路径将沿途的设备的出接口开销相加,成为了此非根桥每条路径的PRC

概念5 : Port ID

端口ID可以用来确定端口角色。

运行STP交换机的每个端口都有一个端口ID,端口ID由端口优先级和端口号构成。

端口优先级取值范围是0到240,步长为16,即取值必须为16的整数倍。缺省情况下,端口优先级是128。

概念6:BPDU

为了计算生成树,交换机之间需要交换相关的信息和参数,这些信息和参数被封装在BPDU中。

STP的BPDU有两种类型:配置BPDUTCN BPDU

配置BPDU包含了桥ID、路径开销和端口ID等参数。STP协议通过在交换机之间传递配置BPDU来选举根交换机,以及确定每个交换机端口的角色和状态。

在初始化过程中,每个桥都主动发送配置BPDU。在网络拓扑稳定以后,只有根桥主动发送配置BPDU,其他交换机在收到上游传来的配置BPDU后,才会发送自己的配置BPDU

TCN BPDU是指下游交换机感知到拓扑发生变化时向上游发送的拓扑变化通知。

BPDU报文

在STP中,由根桥发送BPDU,其他非根桥收到后,对BPDU进行修改,主要调整的是

PRC、桥ID和PortID

STP的选举过程

根桥选举

原则:无论在哪个阶段选举,无论选什么都是最小最优先。

选举过程:

STP交换机初始启动之后,都会认为自己是根桥,并在发送给其他交换机的BPDU中宣告自己为根桥。因此,此时BPDU中的根桥ID为各自设备的网桥ID。

当交换机收到网络中其他设备发送来的BPDU后,会比较BPDU中的根桥ID和自己的BID。交换机不断交互BPDU,同时对BID进行比较,最终选举一台BID最小的交换机作为根桥,其他的则为非根桥。

注意:根桥的角色可抢占。当有更优的BID的交换机加入网络时,网络会重新进行STP计算,选出新的根桥。

根端口RP选举

非根桥上去往根的PRC最小的端口,成为RP

一个非根桥设备上,最多只能有一个根端口。

选举过程:

交换机有多个端口接入网络,各个端口都会收到BPDU报文,报文中会携带“RootID、RPC、BID、PID”等关键字段,端口会针对这些字段进行比较。

首先比较根路径开销(RPC),STP协议把根路径开销作为确定根端口的重要依据。RPC值越小,越优选,因此交换机会选RPC最小的端口作为根端口。

当RPC相同时,比较上行交换机的BID,即比较交换机各个端口收到的BPDU中的BID,值越小,越优选,因此交换机会选上行设备BID最小的端口作为根端口。

当上行交换机BID相同时,比较上行交换机的PID,即比较交换机各个端口收到的BPDU中的PID,值越小,越优先,因此交换机会选上行设备PID最小的端口作为根端口。

当上行交换机的PID相同时,则比较本地交换机的PID,即比较本端交换机各个端口各自的PID,值越小,越优先,因此交换机会选端口PID最小的端口作为根端口。

指定端口DP选举

每个链路(Link)选举一个指定端口,用于向这个链路发送BPDU。

注意:一般情况下,根桥上不存在任何根端口,只存在指定端口。

选举过程:

指定端口也是通过比较RPC来确定的,选择RPC最小的作为指定端口,如果RPC相同,则比较BID和PID。

首先比较根路径开销(RPC),值越小,越优选,因此交换机会选RPC最小的端口作为指定端口。

若RPC相等,则比较链路两端交换机的BID,值越小,越优选,因此交换机会选BID最小的交换机的端口作为指定端口。

若BID相等,则比较链路两端端口的PID,值越小,越优选,因此交换机会选PID最小的交换机的端口作为指定端口。

堵塞非指定端口NDP

什么是非指定端口(预备端口)?

在确定了根端口和指定端口之后,交换机上所有剩余的非根端口和非指定端口统称为预备端口

阻塞非指定端口

STP会对这些非指定端口进行逻辑阻塞,即这些端口不能转发由终端计算机产生并发送的帧(用户数据帧)

一旦非指定端口被逻辑阻塞后,STP树(无环路工作拓扑)就生成了。

注意:

非指定端口可以接收并处理BPDU。

根端口和指定端口既可以接收和发送BPDU,也可以转发用户数据帧。

思考题

最终非根端口,非指定端口的SW3的GE0/0/2端口为预备端口。

最终非根端口,非指定端口的SW4的GE0/0/2端口为预备端口。

最终非根端口,非指定端口的SW2的GE0/0/2端口为预备端口。

STP接口状态

STP应对拓扑变化

stp协议认为什么情况算是拓扑改变?
  1. 连接终端的端口关闭不算!!
  2. 连接终端的端口开启并且将进入转发算拓扑改变

Q:堵塞端口关闭算拓扑改变吗?注定堵塞的端口开启,算拓扑改变吗?

A:不算,算!

根桥软故障

注意,不是关闭接口,或者拔掉网线。

Max Age超时后,大家都认为原来的根桥挂了,因此就会重新选举

整个过程可能要50s

这里演示一下50s!

直连链路硬故障

Q:为什么不要等Max age?

A:

非直连链路软故障

非直连故障

在稳定的STP网络,非根桥会定期收到来自根桥的BPDU报文。

若SW1与SW2之间的链路发生了某种故障(非物理故障),因此SW2一直收不到来自根桥SW1的BPDU报文,Max Age计时器(缺省: 20 s)就会超时,从而导致已经收到的BPDU报文失效。

此时,非根桥SW2会认为根桥失效,并且认为自己是根桥,从而发送自己的配置BPDU给SW3,通知SW3自己是新的根桥。

在此期间,SW3的预备端口一直收不到包含根桥ID的BPDU,Max Age计时器超时后,端口进入到Listening状态,开始向SW2“转发”从上游发来的包含根桥ID的BPDU。

因此,Max Age定时器超时后,SW2和SW3几乎同时收到对方发来的BPDU,再进行STP重新计算,SW2发现SW3发来的BPDU更优,就放弃宣称自己是根桥并重新确定端口角色。

端口状态:

SW3预备端口20s后会从Blocking状态进入到Listening状态,再进入Learning状态,最终进入到Forwarding状态,进行用户流量的转发。

收敛时间:

非直连故障会导致50s左右的恢复时间,等于Max Age加上2倍的Forward Delay收敛时间。

拓扑改变导致的MAC地址表错误

这里存在一种攻击!!!

拓扑变化过程中,根桥通过TCN BPDU报文获知生成树拓扑里发生了故障。根桥生成TCbit置位的BPDU报文用来通知其他交换机加速老化现有的MAC地址表项。

拓扑变更以及MAC地址表项更新的具体过程如下:

SW3感知到网络拓扑发生变化后,会不间断地向SWB发送TCN BPDU报文。

SW2收到SW3发来的TCN BPDU报文后,会把配置BPDU报文中的Flags的TCA位设置1,然后发送给SW3,告知SW3停止发送TCN BPDU报文。

SW2向根桥转发TCN BPDU报文。

SW1把配置BPDU报文中的Flags的TC位设置为1后发送(发送约max-age+Forward delay=35s),通知下游设备把MAC地址表项的老化时间由默认的300 s修改为Forward Delay的时间(默认为15 s)。

最多等待15 s之后,SW2中的错误MAC地址表项会被自动清除。此后,SW2就能重新开始MAC表项的学习及转发操作。

注意:ENSP中貌似清不掉

STP的基础配置

修改模式和根桥指定

华为设备模式工作在MSTP模式

指定根桥

stp root primay

配置当前设备为根桥。缺省情况下,交换机不作为任何生成树的根桥。配置后该设备优先级数值自动为0,并且不能更改设备优先级。

如果已经使用stp root primary指定,又试图修改,就会有如下报错

指定备份根桥

stp root secondary

配置当前交换机为备份根桥。缺省情况下,交换机不作为任何生成树的备份根桥。配置后该设备优先级数值为4096,并且不能更改设备优先级。

手动修改STP优先级

[Huawei]stp priority priority

缺省情况下,交换机优先级为32768

需要是4096的倍数

修改开销

[Huawei-GigabitEthernet0/0/1] stp cost cost

修改接口优先级

[Huawei-intf]stp port priority priority

需要是16的倍数

打开关闭stp,默认是打开状态

[Huawei]stp enable/disable

查看接收和发送的TCN BPDU和TCbit置位的报文个数

display stp tc-bpdu statistics

配置案例

查看命令 display stp

RSTP对STP的改进

STP不足

  1. 收敛速度慢(30、50s)
  2. 太多因素导致拓扑改变--->MAC地址表频繁清空
  3. 拓扑改变通知机制太繁琐
  4. 老化时间太长20s

RSTP的改进

RSTP中什么情况算拓扑改变

在一个运行RSTP的网络中,检测拓扑是否发生变化只有一个标准:一个非边缘端口迁移到Forwarding状态。

为本交换设备的所有非边缘指定端口和根端口启动一个TC While Timer,该计时器值是Hello Time的两倍(4s)。

在这个时间内,清空所有端口上学习到的MAC地址。同时,由DP和RP向外发送RST BPDU,其中TC置位。一旦TC While Timer超时,则停止发送TC置位的RST BPDU(可能发1个TC也可能发两个TC)。

其他交换设备接收到RST BPDU后,清空所有端口学习到MAC地址,除了收到RST BPDU的端口。然后也为自己所有的非边缘指定端口和根端口启动TC While Timer,重复上述过程。

PA机制

新链路连接成功后,P/A机制协商过程如下:

1.p0和p1两个端口马上都先成为指定端口(因为都认为自己是根),发送RST BPDU。

2.S2的p1口收到更优的RST BPDU,马上意识到自己将成为根端口,而不是指定端口,停止发送RST BPDU。

3.S1的p0进入Discarding状态,于是发送的RST BPDU中把Proposal和Agreement置1

4.S2收到根桥发送来的携带Proposal的RST BPDU,开始将自己的所有端口进入sync变量置位(即同步变量:临时阻塞边缘端口外的其他端口)。

5.p2已经阻塞,状态不变;p4是边缘端口,不参与运算;所以只需要阻塞非边缘指定端口p3。

6.各端口的sync变量置位后,p2、p3进入Discarding状态,p1进入Forwarding状态并向S1返回Agreement位置位的回应RST BPDU。

7.当S1判断出这是对刚刚发出的Proposal的回应,于是端口p0马上进入Forwarding状态。

下游设备继续执行P/A协商过程。

P/A机制要求两台交换设备之间链路必须是点对点的全双工模式。一旦P/A协商不成功,指定端口的选择就需要等待两个Forward Delay,协商过程与STP一样(例如对面就是AP端口的DP端口)。

AP、BP

从配置BPDU报文发送角度来看:

预备(Alternate)接口就是由于学习到其它网桥发送的配置BPDU报文而阻塞的接口

备份(Backup)接口就是由于学习到自己发送的配置BPDU报文而阻塞的接口。自交!

从用户流量角度来看:

Alternate接口提供了从指定桥到根的另一条可切换路径,作为根接口的备份接口。

Backup接口作为指定接口的备份,提供了另一条从根桥到相应网段的备份通路。

解决状态改变后的30s中问题

edge-port

在STP中用户终端接入交换设备端口状态由Disabled状态转到Forwarding状态需要经过15s,那么用户在这段时间无法上网,如果网络频繁变化,用户上网状态非常不稳定,时断时续。

边缘端口一般与用户终端设备直接连接,不与任何交换设备连接。边缘端口正常情况下接收不到配置BPDU报文,不参与RSTP运算,可以由Disabled状态直接转到Forwarding状态,且不经历时延,就像在端口上将STP禁用了一样。

但是,一旦边缘端口收到配置BPDU报文,就丧失了边缘端口属性,成为普通STP端口,并重新进行生成树计算,从而引起网络震荡。

解决30s问题,减少拓扑改变的可能(edge-port的打开和关闭不算拓扑改变)

端口不同

RSTP把原来STP的5种端口状态简化成了3种。

Discarding状态,端口既不转发用户流量也不学习MAC地址。

Learning状态,端口不转发用户流量但是学习MAC地址。

Forwarding状态,端口既转发用户流量又学习MAC地址。

对速度没有改变

生成树技术进阶

VBST

优点

可消除网络中可能存在的通信环路。

可实现链路的复用和流量的负载分担,进而有效地提高链路带宽的利用率。

配置和维护简单,进而可降低配置和维护成本。

缺点

但是如果网络中VLAN的数量较多,为每个VLAN执行独立的生成树计算将耗费交换机大量的资源。

MSTP

iStack

堆叠iStack(Intelligent Stack),是指将多台支持堆叠特性的交换机设备组合在一起,从逻辑上组合成一台整体交换设备。

堆叠系统建立之前,每台交换机都是单独的实体,有自己独立的IP地址和MAC地址,对外体现为多台交换机,用户需要独立的管理所有的交换机;堆叠建立后堆叠成员对外体现为一个统一的逻辑实体,用户使用一个IP地址对堆叠中的所有交换机进行管理和维护,如图所示。通过交换机堆叠,可以实现网络大数据量转发和网络高可靠性,同时简化网络管理。

Smart Link

如图所示Switch3采用双上行方式分别连接到FW1和FW2,这样Switch3到达上行的链路就可以有两条。在Switch3上配置Smart Link,正常情况下,可实现Port2所在链路作为Port1所在链路的备份。若Port1所在的链路发生故障,Smart Link会自动将数据流量切换到Port2所在链路,保证业务不中断。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TvT<

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值