雏鹰部落

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 455|回复: 0

[学习/资料] 【SPOTO思博网络】【从零基础到入门】网工交换基础《STP协议》

[复制链接]
发表于 2021-11-17 14:50:38 | 显示全部楼层 |阅读模式
【SPOTO思博网络】【从零基础到入门】网工交换基础《STP协议》

STP工作原理


STP能够检测并防止2层桥接环路的形成。可以存在多条并行的路径,但只使用一条路径来转发数据帧,并基于IEEE 802.1D桥协议标准。



802.1w作为一种增强的生成树,在拓扑发生变化时可提供比传统生成树更快的收敛速度。



Cisco交换机在PVST+(每 VLAN 生成树)或Rapid-PVST+(快速每VLAN 生成树)中为每个VLAN运行单独的 STP 实例(instance)。运行RPVST的交换机之间需要配置 Trunking。



对于工业标准 IEEE 802.1Q的Trunk链路来说,所有的 VLAN只需一个STP 实例。公共生成树(CST)使用VLAN 1通信。



PVST+作为Cisco私有的扩展技术,允许交换机在CST与PVST之间互操作。PVST桥协议数据单元(BPDU)在802.1Q Trunk链路上以隧道方式传输。Catalyst交换机默认运行PVST+。



快速PVST+是一种混合模式的STP,其使用了结合了 PVST基础的IEEE 802.1w(快速生成树)。快速PVST+兼容IEEE 802.1w,但须使用Cisco扩展技术来支持每VLAN生成树。



基于IEEE 802.1s标准的多生成树(MST)对802.1w RSTP进行扩展,使其拥有多个STP实例。


a. MST向下兼容802.1D、802.1w及PVST+模式的STP。


b. 使用公共VLAN和STP实例的多个交换机组成一个MST区域。


c. MST可产生PVST+的BPDU,用来实现协议之间的互操作性。


d. MST支持最多16个STP实例。



交换机在每个Hello时间间隔(默认2秒)都会向所有接口发送BPDU。



BPDU不能被交换机直接转发,其用于进一步计算并产生新的 BPDU。



交换机发送两种类型的BPDU。


a.配置BPDU。

b.拓扑变更通告(TCNBPDU


STP流程

01 选举根桥


桥ID最小的交换机将成为生成树的根桥。桥 ID(BID)由两字节的优先级字段和6字节的MAC地址组成。优先级字段范围为0~65535,默认是32768。


02 选举根端口


每台非根桥交换机上将选举出一个根端口,或称为离根桥“最近”的端口。“最近”指端口带有最低的根路径开销值。开销值携带于BPDU中。沿路上每台非根桥交换机都会在BPDU的入站端口上增加本地端口开销值。随着新的BPDU的产生,根路径值开销逐渐累积。


03 选举指定端口


在每个网段上,其中一台交换机的端口将选举成为指定端口,用于处理此网段的流量,网段中宣告最低根路径开销的端口选举成为指定端口。


04 移除桥接环路


既不是根端口又不是指定端口的交换机端口将被置于阻塞状态。此步骤将中断所有桥接环路,否则,将会形成环路。



STP仲裁
当STP选举遇到先决条件相同或称为平局时,最重决策基于以下一系列条件。

1.最小的BID。

2.最低的根路径开销。

3.最小的发送方的BID。

4.最小的端口ID。

路径开销
默认情况下,交换机端口具有如下表中定义的路径开销值。




默认下,工作在 RPVST+模式下的Catalyst交换机使用“短模式”,即16比特的路径或端口开销值。当网络中的端口速率小于1Gbit/s 时,短模式范围的开销值已经足够。


不过,如果存在10Gbit/s或速率更高的端口,需要将网络中所有交换机设置成使用“长模式”,即32比特的路径开销范围,这样做可确保所有的交换机计算根路径开销值的一致性。

STP 端口状态

每台交换机的端口须经历一系列的端口状态改变。


01 禁用状态(disabled)


端口被管理性的关闭或由于故障引起的端口关闭(MST称此状态为丢弃状态(discarding))。


02 阻塞状态(blocking)


此端口状态出现在端口初始化之后。处于阻塞状态的端口不能接收或传输数据,不能向自己的地址表添加MAC地址,只能接收BPDUs。如果检测出存在桥接环路,或者端口失去其根端口或指定端口的状态,那么它将返回到阻塞状态(MST称此状态为丢弃状态)。


03 侦听状态(listening)


如果某端口可成为根端口或指定端口,该端口将进入侦听状态。侦听状态的端口不能接收或传输数据,也不能向自己的地址表中添加MAC地址可以收发BPDU(MST称此状态为丢弃状态)。


04 学习状态(learning)


在转发延时计时器到期后(默认 15 秒),端口将进入学习状态.学习状态的端口不能传输数据但可收发BPDU,此状态下可学习MAC地址并可将地址加入到地址表中。


05 转发状态(forwarding)


在第2个转发延时计时器到期后(默认15秒),端口将进入转发状态。此状态下的端口可以收发数据、学习MAC地址及收发BPDUs。


STP 拓扑变化

如果交换机的某个端口进入了转发状态(启动了 PortFast 技术除外),将产生拓扑变更信号。

如果交换机的某个端口从转发或学习状态进入阻塞状态,将产生拓扑变更信号。

为了发送拓扑变更信号,交换机会在每个Hello时间间隔从根端口向外发送TCN BPDU。直到上行的指定桥邻居确认了 TCN BPDU。邻居会在自身的根端口上继续中继TCN BPDU直到根桥收到为止。

根桥通过发送配置BPDU来将拓扑变更通知给整棵生成树,这种BPDU设置了拓扑变更位(TC)。此操作将导致所有的下行交换机将其地址表老化时间(默认300秒)减少到转发延时(默认15秒),使得交换机将不活动的MAC地址更快的刷新出地址表

增强 STP 的稳定性

STP根保护(Root Guard)特性用来在交换网络内强制根桥位置及身份。在端口启用了Root Guard特性后,如果该端口收到了更优的BPDU,那么Root Guard将停用此端口。此技术用于避免其他交换机意外地成为根桥。


应该在所有不应出现根桥的端口上启用STP Root Guard 特性,这样做保护了当前主根桥和备根桥的选择。


单向链路检测(UDLD)提供了一种检测单向传输链路的方法,使得STP无法常规检测出来或阻止的路由环路和流量黑洞得以防止。


工作在2层的UDLD发送含有设备ID与端口ID的数据包至交换机端口所连的邻居设备。同时,邻居将任何收到的UDLD 数据包原路发回,以便让它的邻居知道该数据包已经被对端邻居识别。UDLD消息以消息间隔(message interval)时间发出,通常默认值为15秒。


UDLD可工作在两种模式下:


普通模式(normal mode)

单向链路作为一种错误被检测并报告出来,但不做其他动作。


主动模式 (aggressive mode)

单向链路作为一种错误被检测并报告出来,在8次尝试(1秒一次,共8秒)重新建立链路后停用端口。停用的端口须手工重新启用。


STP环路防护(Loop Guard)技术用来在根端口(root port)和替换根端(alternate root port)上检测BPDU的缺失。如果收不到BPDU,非指定端口将被临时停用,用来防止非指定端口错误的成为指定端口并进入转发状态。


对于所有可能活动STP拓扑来说,应该在所有根端口和替换根端口(两者都是非指定端口)上启用STP Loop Guard。


STP 运作实例

来看一个STP运作的例子,如下图所示为3台Catalyst交换机互连成的三角形拓扑网络。RP代表根端口,DP代表指定端口,F代表处于转发状态的端口,X代表处于阻塞状态的端口。




生成树算法过程如下:


01 选举根桥


所有3台交换机都具有相同的桥优先级(都为默认值32768)。但Catalyst A具有最小的MAC地址(00-00-00-00-00-0a),故Catalyst A选举成为根桥。


02 选举根端口


在每台非根桥交换机上计算出最低的根路径开销。在Catalyst B上为端口1/1,其端口路径开销为 0+19, Catalyst C上为端口1/1,其根路径开销同样是 0+19。


03 选举指定端口


根据规定,根桥上的所有端口都将成为各自网段的指定端口。因此,Catalyst A上的端口1/1与1/2都为指定端口。Catalyst B端口1/2与Catalyst C 端口1/2 共享一个网段,须在两端口之间选举出一个指定端口。这两个端口的根路径开销都为0+19+19,即38,出现了平局。再选出最低的发送方的BID,故Catalyst B(MAC 地址最小)的端口1/2 选举成为指定端口。


04 既不是根端口又不是指定端口的所有端口将处于阻塞状态


唯一剩下的Catalyst C上端口1/2,既不是根端口,又不是指定端口。该端口将进入阻塞状态(图中X所示 )。


配置STP

01(可选)启用或禁用 STP


(global) [no] spanning-tree [vlan vlan]

默认情况下, STP 启用在 VLAN 1 和任何新创建的 VLAN 中。如果未指定具体的 VLAN,将在所有 VLAN 上启用或禁用 STP。要知道如果禁用了 STP,将不能检测并防止桥接环路的形成。交换机应始终启用 STP。


02(可选)设置交换机的 STP 模式


默认情况下,所有 Catalyst 交换机为每个 VLAN 的 STP 实例运行 PVST+模式的 STP。想要配置成其他的STP模式,须明确使用选项rapid-pvst(带有IEEE兼容性的每 vlan 802.1w)或mst。


03(仅适用于 MST)激活一个 MST 实例

1)进入 MST 配置模式
spanning-tree mst configuration


(2)定义 MST 区域
(mst )name name
(mst )revision revision-number

使用name(最多32字符的文本字符串)来定义MST区域。如果未指定区域名,系统将不使用区域名。用户可以使用区域修订号来指出区域配置改变的次数。
修订号revision-number(0~65535,默认为 1)须明确地设定,并且不会随区域配置变化自动递增。


(3)将一个或多个VLAN映射到实例中
instance instance-id vlan vlan-range

此命令用于将vlan号( 1~1005、1025~4094)映射到 MST instance(0~15)中。映射关系将保存在MST区域缓存中。


(4)退出 MST 配置模式
(mst)end

输入end命令将退出并返回到特权模式。同时配置的改变立即生效。但如果想永久保存MST配置,须将配置保存至NVRAM中。


04(可选)放置根桥交换机

(global)spanning-tree vlan vlan root {primary | secondary} [diameter net-diameter ][hello-time hello-time]
(global) spanning-tree mst instance-id root {primary | secondary} [diameter net-diameter ][hello-time hello-time]


带有参数 primary 的命令将使交换机成为若干 VLAN(1~1005和1025~4094)或指定的STP 实例(1~16,如未指定即VLAN 1)的主根桥。网桥优先级的修改规则如下:如果大于8192,将被设置成8092;


如果小于8192,将被设置成比当前根桥优先级更小的值。可以使用关键字 secondary来指定备根桥或次根桥,以防主根桥失效。这里,网桥优先级将被设置成16384(对于MST来说,根桥优先级被设置成24576,备根桥被设置成 28672)。


关键字diameter指定了网络中两端点之间的直径,即网桥或交换机的数量(1~7,默认为7)。可同时设定Hello时间间隔(默认2秒钟)。


网络直径的设置将导致系统自动计算并修改其他STP计时器值。可使用其他命令明确地调整计时器值,不过调整直径隐藏了计时器计算的复杂性。


05(可选)调整网桥的优先级

(global)spanning-tree vlan vlan priority priority [diameter net-diameter ][hello-time hello-time]

(global)spanning-tree mst instance-id priority priority [diameter net-diameter ][hello-time hello-time]


用户可以直接将网桥优先级修改成其他数值,而不是自动获得的主备根桥的优先级。优先级可基于每VLAN或STP实例来设定。选项instance-list指定了实例号,可使用逗号或连字符来定义一个或一组实例。


如果想强制某台交换机成为根桥,应为此交换机配置一个比在VLAN或STP实例中其他所有交换机都要低的优先级。对于PVST+来说网桥优先级范围介于 0~65535(默认为 32768),不过,当启用扩展 VLAN 支持功能后,优先级只能设定成以下固定数值:0(优先级最高)、4096、8192、12288、16384、20480、24576、28672、32768、36864、40960、45056、49152、53248、 57344和61440(优先级最低)。


06(可选)阻止端口成为STP根端口

(interface) spanning -tree rootguard

此命令将在端口或接口上启用 STP Root Guard(根保护)特性。如果连接到此端口的网桥通告一个更低的桥ID并成为了根桥,此端口将进入root-inconsistent(侦听)STP状态。当此端口不再能检测到根桥的BPDU时,将退回到正常的工作状态。


07(可选)调节根路径开销

(1)(可选)设置端口开销取值范围
(global) spanning-tree pathcost defaultcost-method [long I short]

默认下, PVST+的交换机使用 short 模式(16 比特)端口开销值。如果有10Gbit/s或以上的端口,应在网络中的所有交换机上将端口开销取值范围设定为 long 模式(32 比特)。MISTP、 MISTP-PVST+及 MST 默认使用“长模式”的端口开销。


(2)设定所有VLAN或实例的端口开销

此命令可将所有VLAN或STP实例的端口开销设定成cost (短模式或 MISTP模式下为 1~65535,在长模式下为 1~200000000)。


(3)设定每 VLAN 或每个实例的端口开销
(interface) spanning-tree vlan vlan-id cost cost
(interface) spanning-tree mst instance-id cost cost

此命令可将 VLAN vlan-id 或 STP 实例 instance-id(0~15)的端口开销设定为 cost(短模式为 1~65535,长模式为 1~200000000)。


08(可选)调节端口优先级


(1)设定所有 VLAN 或实例的端口优先级

此命令将端口优先级设定成priority(2~255)。


(2)设定每 VLAN 或每个实例的端口优先级
(interface) spanning-tree vlan vlan-list port-priority priority
(interface)spanning-tree mst instance-id port-priority priority

此命令将VLAN vlan-id或STP实例instance-id(0~15)的端口优先级设定为


09(可选)使用 UDLD 检测单向连接


(1)在交换机上启用 UDLD

默认情况下, UDLD 处于停用状态。在将 UDLD 应用在特定端口之前须先将其启用。Supervisor IOS 中可使用关键字 aggressive 来在所有以太网光纤端口上全局地启用UDLD主动模式。


(2)(可选)调整UDLD消息间隔计时器

此命令将 UDLD 消息时间间隔设定成interval(7~90 秒,默认 60 秒)。


(3)在特定端口上启用UDLD
( interface) udld [enable I disable ]

在交换机上全局启用 UDLD 后, UDLD 将默认启用在所有以太网光纤端口上。默认下,在所有的以太网双绞线介质端口上, UDLD处于停用状态。


(4)(可选)在特定端口上启用UDLD主动模式
( interface) udld aggressive

在端口上启用 UDLD 主动模式之后,当系统检测到单向连接时将停用此端口。问题修正后须手动地重新启用该端口。在 Supervisor IOS 中,可使用特权命令udld reset来重新启用所有被UDLD停用的端口。


10(可选)使用 Loop Guard 特性来增强 STP 的稳定性

( interface) spanning-tree loopguard

Loop Guard(环路防护)特性应只启用在已知的根端口或替换根端口上。例如,接入层交换机的上行端口一定是根端口或替换根端口,原因是这些端口离根桥最近(假定用户将根桥放置在了网络的中心位置)。

进入全国网络工程师交流群 ,请扫描下方二维码↓↓↓
群里有行业大咖、实战分享、技术交流、技术咨询、企业内推等机会
若群满,请添加老杨
微信(spotoa),邀你进群





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|熊猫同学技术论坛|小黑屋| 网络工程师论坛 ( 沪ICP备09076391 )

GMT+8, 2024-5-6 05:52 , Processed in 0.077247 second(s), 19 queries , Gzip On.

快速回复 返回顶部 返回列表