STP协议

广播域与冲突域

STP协议

集线器

集线器(Hub)设备不能识别MAC地址和IP地址,对接收到的数据以广播的形式发送,同一时刻由集线器连接的网络中只能传输一组数据,如果发生冲突则需要重传。集线器下连接的所有端口共享整个带宽,即所有端口为一个冲突域,它的所有端口为一个冲突域同时也为一个广播域。

交换机

交换机是工作在数据链路层的设备,在接收到数据后,通过查找自身系统MAC地址表中的MAC地址与端口对应关系,将数据传送到目的端口。相比于集线器,交换机(Switch)可以分割冲突域,它的每一个端口相应的称为一个冲突域。

路由器

使用路由器(Router)设备来分割广播域。路由器并不通过MAC地址来确定转发数据的目的地址。路由器通过IP地址将连接到其端口的设备划分为不同的网络(子网),每个端口下连接的网络即为一个广播域,广播数据不会扩散到该端口以外。

 集线器交换机路由器
识别MAC不能不能
识别IP不能不能
数据发送形式广播广播/单播广播/单播/组播
是否发生冲突
OSI工作层级一层二层三层

二层环路带来广播风暴

环路网络中,数据帧通过交换设备多次泛洪后,网络中便会出现大量方向互异的广播流。当超过交换设备所能承载的数据处理能力后,正常的数据帧传输将受到了抑制,导致信道的拥塞,其结果往往是延时或丢帧。

STP协议

一个数据帧或包通过广播的形式,在网段内大量复制,传播,导致网络性能下降,甚至瘫痪,这就是广播风暴。

STP协议

构建无环的二层结构

二层环路的逻辑阻断

生成树协议,Spanning Tree Protocol(STP),工作于OSI网络模型中的第二层(数据链路层)的通信协议,基本应用是防止交换机冗余链路产生的环路。用于确保以太网中无环路的逻辑拓扑结构,从而避免了广播风暴大量占用交换机的资源。

STP协议
  1. 在每个广播域内,选举1个根桥,用于管理维护
  2. 在每个设备上,选举到根最优的端口,作为根端口
  3. 在各设备之间的冲突域内,选举最优的转发端口,作为指定端口
  4. 阻断非根、非指定的冗余端口
STP协议

角色释义

Root Bridge(根桥):发送最好BPDU的交换机

Root Port(根端口):非根桥上接收最好BPDU的端口

Designed Port(指定端口):冲突域内发送最好BPDU的端口

Block Port(阻塞端口):既不是RP也不是DP的端口,被BLOCK

PS:RP端口对端一定是DP,DP端口要么对着RP,要么对着AP(标准是BP,华为是借用RSTP概念选用Alternate Port描述)

BPDU参数

Root ID:根桥的BID

Root Path Cost:非根桥根端口到根桥的路径开销之和(根桥自身RPC为0)

Bridge ID:设备的ID,由各设备自身的优先级、MAC地址组成。默认值32768,取值间隔4096,取值范围0-65535(思科),或0-61440(思科、华为)

Port ID:端口的ID,由各端口自身的优先级、端口号组成。默认值128,取值间隔16,取值范围0-240,例如16进制8001(10进制为128.1),前两位是优先级,后两位是端口号,通过display g0/0/1查看。

STP协议

阻塞判定过程

冲突域角色之争

判断原则:BPDU各参数越小越优

比较次序:RID>∑(RPC)>BID>PID

争夺根桥

初始状态,各设备认为自已是根桥(即RID=BID),向外发送4参数的BPDU(RID.RPC.BID.PID),例如S1_MAC.0.S1_MAC,A_PID,通过判定,选出当前环路网络中BID最小的作为根桥

设置根端口

根桥确定后,进行BPDU参数比较,将接收到最好BPDU的端口设置为根端口

确认指定端口

根桥上的所有端口,均为指定端口,用于外发最好的BPDU;非根桥上选定RP之后,在其他的端口中,进行BPDU参数比较,选择转发BPDU最优的端口作为指定端口

广播域阻塞判定

将广播域中,既非根端口,也非指定端口的冗余端口,进行阻塞

STP协议

动态平衡实现持续无环状态-和谐就是单位时间内的相对稳定

角色状态

在同一冲突域内,当设备启动后,默认自身是根桥,端口相互连接后,端口由blocking/discarding状态开始,向外泛洪自身的BPDU,当收到对端的BPDU后,如果优于自身,将会接受并储存对端的BPDU,此BPDU将作为该冲突域的有效BPDU,用于维持该冲突域的角色状态和运行状态,发送该BPDU的端口将作为指定端口,接收到此BPDU的端口将作为根端口,接受到该BPDU的设备不再认为自己是根桥,并用该BPDU的RID,和经过该冲突域到根桥的RPC之和,加上自身的BID,去计算自身其他端口的BPDU。其他端口也会同时存在自身的BPDU,接收的BPDU,计算的BPDU,基于最好的BPDU,越小越优的判断原则,选用其中之一,作为其的所在冲突域的唯一有效BPDU,当端口通过多轮的比较之后,计算的BPDU不再优于自身的BPDU、接收的BPDU,将被阻断。

STP协议

运行状态

稳定STP网络只有2种状态,FORWARDING和BLOCKING,当设备启动后,端口将置于BLOCKING状态,并进行BPDU的报文处理。但为了防止端口快速进入FORWARDING状态而给网络带来临时环路的风险,该端口需要进入LISTENING状态,等待其加入的目标网络进行有足够的时间进行拓扑变化的通告。

STP协议默认以2秒为HELLO通告间隔,可覆盖7层半径的网络深度,在经过默认的15秒后,认为足够完成BPDU信息的全局同步。

此时,该端口将进入到LEARNING状态,并开始学习流量中的MAC地址信息,构建MAC地址的端口转发映射表。

STP协议考虑到拓扑变化可能会带来转发错误的情况,在LISTENING过程中,进行全局通告拓扑变化的BPDU内,已默认将收到该BPDU设备的MAC地址表老化时间设置为一个转发延时,即15秒,用于清除错误的MAC地址信息,也误将空闲的MAC地址加速老化。如果此时进行数据转发,将会产生大量的未知MAC单播帧的泛洪,影响网络性能。

因此,在全网已停止发送老化MAC地址表的BPDU后,考虑到网络深度,设计出LEARNING状态,LEARNING状态下,端口开始学习流量中的MAC地址信息,重新构建正确的MAC地址端口转发映射表,经过15秒的持续学习和刷新,最终达到MAC地址表的稳定状态,LEARNING状态的设计减少了单播帧在STP收敛期间产生大量的泛洪行为。随后,端口进入到FORWARDING状态,进行数据转发。

STP协议
  • DISABLED:禁用状态或未接线。端口既不处理和转发BPDU报文,也不转发用户流量。
  • BLOCKING:阻塞状态。处理BPDU,不转发BPDU,不学习MAC,不转发数据。阻塞端口的最终状态。
  • LISTENING:侦听状态。处理BPDU,转发BPDU,不学习MAC,不转发数据。
  • LEARNING:学习状态。处理BPDU,转发BPDU,学习MAC,不转发数据。端口可根据收到的用户流量构建MAC地址表。增加该状态是为了防止临时环路。
  • FORWARDING:转发状态。处理BPDU,转发BPDU,学习MAC,转发数据。只有根端口或指定端口才能进行该状态。

拓扑变化

判断依据

1当端口进入到FORWARDING状态

2RP失效

PS:STP协议最早认为任何端口进入到FORWARDING状态或进入DISABLE状态时,认为STP拓扑发生变化。当前STP协议,DP端口进入DISABLE状态或失效不认为拓扑发生变化。

切换场景

非根桥的RP失效,不存在AP时

此时设备认为自己失去了到根桥的所有路径。于是该设备将自身做为根桥,发送以自己为根桥的BPDU。下游设备接收到该设备的BPDU后,需要等待默认20秒的HELLO失效间隔,才能将之前的BPDU老化,再处理新接收的BPDU,并进行设备、端口的角色判定,然后端口经历30秒的LISTENING和LEARNING的过程,最终达到FORWARDING状态,整个过程,总共需要50秒,然后网络恢复正常。

STP协议
  1. 设备B感知到网络拓扑发生变化后,会不间断地向设备C发送TCN BPDU报文,发送间隔为2倍的HELLO时间。
  2. 设备C收到设备B发来的TCN BPDU报文后,因其端口已有的BPDU将其置为BLOCKING状态,新接收的BPDU需要等待已有BPDU的老化,即默认的20秒超时时间。
  3. 超过20秒后,抑制设备C的BPDU已清空,该端口也将进行FORWARDING的初始化过程,并接受该BPDU,将配置BPDU报文中的TCA位置为1,发送给设备B,以确认并告知设备B可以停止发送TCN BPDU报文。同时,设备C由根端口向根桥发送TCN BPDU报文。
  4. 根桥A收到设备C发来的TCN BPDU报文后,获知生成树拓扑已发生变化,会把配置BPDU报文中的TCA、TC位均置为1,然后发送给设备C,同时,通过其他指定端口,组播发送TCA为0,TC为1的配置BPDU,通知下游设备把MAC地址表项的老化时间由默认的300秒修改为1个FORWARD DELAY的时间(默认为15秒),持续发送35秒。
  5. 设备C收到TC为1的TC BPDU后,将自身所有端口(边缘端口除外)的MAC地址表老化时间置为1个转发延时,经过默认的15秒之后,设备C中的错误MAC地址表项会被自动清除,此后设备C重新开始MAC表项的学习及转发操作。
  6. 其他设备将持续收到根桥发送的TCA为0,TC为1的组播TC BPDU,因各设备已有的BPDU超时为默认20秒,TC重置MAC老化时间为15秒,因此,该BPDU将持续发送35秒,以确保各设备接受该BPDU,达到全网同步的效果。
非根桥的RP失效,存在AP时

此时设备认为AP是另一条可达根桥的候补端口,直接将AP置为新的RP,并经历LISTENING和LEARNING的过程,最终达到FORWARDING状态,整个过程,总共需要30秒,然后网络恢复正常。

STP协议
  1. 设备C根端口失效,感知到网络拓扑发生变化,会不间断地向设备B发送TCN BPDU报文,发送间隔为2倍的HELLO时间。
  2. 设备B收到设备C发来的TCN BPDU报文后,会把配置BPDU报文中的TCA位置为1,然后发送给设备C,以确认并告知设备C可以停止发送TCN BPDU报文。
  3. 设备B由根端口向根桥转发TCN BPDU报文。
  4. 根桥A收到设备B发来的TCN BPDU报文后,获知生成树拓扑已发生变化,会把配置BPDU报文中的TCA、TC位均置为1,然后发送给设备B,同时,通过其他指定端口,组播发送TCA为0,TC为1的配置BPDU,通知下游设备把MAC地址表项的老化时间由默认的300秒修改为1个FORWARD DELAY的时间(默认为15秒),持续发送35秒。
  5. 设备B收到TC为1的TC BPDU后,将自身所有端口(边缘端口除外)的MAC地址表老化时间置为1个转发延时,经过默认的15秒之后,设备B中的错误MAC地址表项会被自动清除,此后设备B重新开始MAC表项的学习及转发操作。
  6. 其他设备将持续收到根桥发送的TCA为0,TC为1的组播TC BPDU,因各设备已有的BPDU超时为默认20秒,TC重置MAC老化时间为15秒,因此,该BPDU将持续发送35秒,以确保各设备接受该BPDU,达到全网同步的效果。
STP协议
BPDUTCATC
配置00
拓扑改变确认10
拓扑改变确认并配置11
拓扑改变配置01
拓扑改变通告  

PS:

边缘端口标准STP是不支持的,但是华为的STP协议支持边缘端口的设置。

厂商处理STP协议的差别

思科:

当接口UP(进入FORWARDING状态)或者是RP失效、DOWN的事件发生后,将导致产生TCN BPDU(某些IOS可能只会当UP事件发生才发送TCN BPDU)

上游非根设备接收到TCN BPDU后会产生TCA=1,TC=0的配置BPDU用于对此TCN的确认,并将TCN从根端口向根桥方向逐跳传递给根桥

当根桥接收到TCN BPDU后,会向收到此TCN BPDU的端口回送TCA=1,TC=1的配置BPDU,用于对TCN BPDU确认的同时,也用于通知该下游设备网络的拓扑发生了改变

根桥会在其他端口上发送TCA=0,TC=1的配置BPDU,这次的TC=1的BPDU会在整个网络中进行泛洪

华为:

当接口UP并过渡到FORWARDING状态,会发生TCN BPDU

逐跳传给根桥,上游向下游发送TCA=1,TC=1的配置BPDU,用于确认TCN,并将TCN逐路传给根桥。

根桥在接收到TCN的端口上回送一个TCA=1,TC=1的配置BPDU,用于确认TCN,并通知网络拓扑发生变化。

根桥在其他端口上发送TCA=0,TC=1的配置BPDU

PS:RP恢复到FORWARDING状态后,并且有一个指定端口在转发状态, 此RP也会发TCN BPDU。

STP协议

PS:标准STP 由根桥发送配置BPDU,非根桥是不能主动发送BPDU

STP总结

在稳定STP网络中端口状态只有2种

1 BLOCKED/DISCARDING(BP、AP)

2 FORWARDING(RP、DP)

一个BLOCKING状态的RP或DP至少需要30秒达到FORWARDING状态

STP协议

拓扑发生变化

1、当设备感知到拓扑发生变化 (非边缘端口过渡转发状态)

2、在状态发生变化的设备端口上发送TC BPDU,时间为HELLO TIME 2倍。

3、收到TC BPDU的交换机清空所有端口的MAC地址,除了边缘端口和收到TC BPDU的端口。

4、继续泛洪TC BPDU,实现全网MAC地址表的更新。

STP协议

STP常用命令

设置STP时间参数

stp timer hello

stp timer forward-delay

stp timer max-age

设置STP优先级

stp priority 0

设置RPC计算协议(默认DOT1T)

stp pathcost-standard dot1d-1998/dot1t/legacy

设置端口开销

interface g0/0/3

stp config-digest-snoop

stp cost 30000

查看端口状态

display stp brief

快速定位根桥

display stp

CIST BRIDGE:自身BID

CIST ROOT/ERPC:根桥BID,根端口到根桥的外部根路径开销

CIST REGROOT/IRPC:

CIST ROOTPORTID:根端口

自身BID=根桥BID,即为根桥

设置边缘端口

int g0/0/1

stp edged-port enable

PVSTP命令

spanning-tree vlan 1 priority 0

show spanning-tree vlan 1 brief

int f0/1

Shutdown

私有协议

思科:PVSTP VPSTP+

华为:VBST

STP协议

RSTP

STP协议的不足

STP协议的收敛完全依赖计时器完成的,收敛速度慢,为了解决临时环路问题和收敛期间单播帧泛洪,需要等待30S。

为了解决STP收敛慢,开发了RSTP

RSTP BPDU

  1. RST BPDU
  2. TC RST BPDU

Proposal Agreement模式

P/A实现了在点到点全双工的链路上让DP和RP端口快速进入到转发状态,同时也不会产生临时环路

STP协议
  1. 在点到点全双工链路上,端口默认自己为DP端口,且处于DISCARDING状态,互相发送P=1,A=1的BPDU,进行P/A协商
  2. 当对端收到P=1,A=1的BPDU后,将对自身其他端口进行置位,即DISCARDING掉非边缘端口、非RP端口,同时进行角色判定,设置为RP端口的一端,发送P=0,A=1的BPDU,然后将端口置为FORWARDING状态
  3. 另一端收到对端RP发送的P=0,A=1的BPDU后,认为对端RP已经处于无环拓扑的转发状态,于是将该端口立即过渡到FORWARDING状态。
  4. 置位成DISCARDING的端口,在其所属的全双工链中上,继续延续该P/A过程。
STP协议
  • 因为存在置位DISCARDING的动作,端口角色与端口状态的确定过程不再产生环路,同时加速了协商过程。
  • 边缘端口,AP端口由于不会引入额外环路,默认认为已经同步置位
  • 当RSTP的设备收到STP的BPDU,该端口将回退为STP端口,失去快速收敛的特性。

AP端口快速切换

当AP端口收到次级BPDU后,将老化已有的BPDU,立即进行端口角色计算,并进行P/A。

边缘端口

STP协议

安全设置

TCP-BPDU攻击

对BPDU的单位时间内的处理次数设置阈值,超过阈值数量的BPDU,合并为1次,将在定时器到期后,进行统一处理。

根防护

设置根防护,避免因拥塞或错误的BPDU来不及处理或丢弃,产生AP转RP,RP转DP,发生临时环路的风险

BPDU防护

当边缘端口收到RST BPDU,实现ERROR-DOWN

stp bpdu protection

error-down auto-recovery cause bpdu-protection interval 30-86400

指定交换机:链路上DP端口所在的交换机,就是这条链路的指定交换机

MSTP

STP(802.1D)/RSTP(802.1W)是单生成树协议,在存在多个VLAN的网络中,所有VLAN共享一颗树,导致链路利用率不高,访问路径存在次优,不合适的TRUNK配置导致部分VLAN路径不通。

STP协议

PS:PVSTP是基于VLAN的STP协议,但是每个VLAN独立维护STP拓扑,开销太大

为了解决RSTP单树弊端,开发了MSTP

STP协议

例如VLAN1-50属于实例10,VLAN50-100属于实例20,全域仅维护两份STP实例

1-50 instance 10

51-100 instance 20

MSTP配置流程

STP协议

配置过程

进入域配置

stp region-configuration

定义域名为hcie

region-name hcie

定义修订级别

revision-level 10

绑定VLAN到实例

instance 0-48 vlan 10

instance 20 vlan 20

激活实例配置

active region-configuration

基于实例进行负载分担

定义实例优先级

stp instance 10 root primary

stp instance 20 root secondary

定义端口优先级

stp instance 10 port priority

定义端口开销

stp instance 10 cost

MSTP多域互联

MSTP是总根多域多实例的生成树协议,通过将域内角色进行宏观放大,实现多域防环互联。

在MSTP协议中,各设备初始状态,默认以自身为根桥和域根,通过instance 0进行CST互联,只有当配置为相同域名后,才会转为IST模式运行,从而形成了IST和CIST。

instance 0既属于IST也属于CST,因此,需要为多域互联选举优先级最低的设备为总根,总根确定后,其所在的IST为根域,其他IST需要选举到总根IST最优的端口为MASTER端口,用于域间CST的互联,MASTER端口所在的设备即为该IST的域根。

每个IST域中有且仅有一个CST域的MASTER端口,当IST域内有多个端口可与总根互联,将进行MASTER端口的选举,到总根ERPC最小的端口即为MATER端口,若存在ERPC相同的情况,将比较设备的BID,BID最小的设备将被选定为域根,其端口为MATER端口。

其他IST域的边缘互联端口,通过比较总根ID、ERPC、域根ID、指定端口ID、接收端口ID,进行DP、AP端口的判定。

STP协议
生活

我的系统配置

2005-2-22 10:14:05

生活

闲言碎语,难过的中秋节

2018-9-25 1:39:46

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧