网工交换基础(6)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.拓扑变更通告(TCN)BPDU。

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 模式

spanning-tree mode (pvst I mst I rapid- pvst]

默认情况下,所有 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(环路防护)特性应只启用在已知的根端口或替换根端口上。例如,接入层交换机的上行端口一定是根端口或替换根端口,原因是这些端口离根桥最近(假定用户将根桥放置在了网络的中心位置)。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇