HCIA笔记5--STP协议

1. 目的

(1)破除环路
(2)备份链路
环路会带来广播风暴的问题

1.1 广播风暴

在这里插入图片描述
我们将交换机A B Cstp协议给关掉,用PC1ping PC2会发现超时。在三个交换机间的任一点去抓包,会发现一直都是arp request广播报文和响应,它们占满了整个网络,使得交换机无法处理其他的请求了。

在这里插入图片描述

另外由于arp request的报文充斥整个网络,交换机Amac-port表也会断的跳变。也就是mac地址表的断振荡。例如从A2口发出的包,可能经过一圈又从1口回来,这样源mac对应的端口会一真不断的变化。
在这里插入图片描述
而这都是因为二层网络中有环路。
A->B->C->A
A->B->B->A

2. STP选举流程

开启stp协议的交换机会通过BPDU报文来进行交互。
根桥交换机负责发送BPDU报文,其他交换机负责转发它的报文。

2.1 选举根桥

ID唯一标识一台交换机;它由桥优先级和交换机mac组成。

选举原则:

  1. 先比较桥优先级,数值越小越优先;
  2. 相同优先级比较交换级mac, mac越小越优先。

桥优先级:0~61440, 步长为4096;默认32768

为什么要有桥优先级? 人为可控根桥的选举,比如让性能更好的交换机作为根桥。

2.2 根端口选举

根端口简称RP(Root Port)

根端口在每个非根桥交换机上都有一个。
作用:用来接收根桥发送的BPDU
选举原则:

  1. 首先比较RPC(Root path cost), 根路径开销;根路径开销越小的越优先。
  2. 如果RPC相同,则比较上游桥ID优先级;
  3. 如果上游桥ID优先级相同,则比较上游端口ID

端口 ID由端口优先级和端口号组成,端口优先级范围0~240, 步长为16,默认128, 数值越小越优先。

2.3 指定端口选举

指定端口简称DP(Designated Port), 用来转发根桥发送过来的BPDU报文。
在每条链路上都有一个DP

选举原则:

  1. 首先比较链路上RPC的开销,选择RPC小的作为DP
  2. 如果RPC相同,则比较上游交换机的桥ID

2.4 阻塞端口选举

既不是RP,又不是DP的端口,就是阻塞端口。
阻塞端口简称为AP(:Alternate Port)

RP端口的对端口一般都是DP端口,因为需要有口转发根桥发来的BPDU报文。

根桥的所有端口一般都是DP端口。

一个简单的端口选举示意图:
在这里插入图片描述

3. stp的端口状态

3.1 五种状态
  1. disable: 交换机未开启stp协议或者断电
  2. blocking:阻塞状态,只能接收BPDU报文,不能转发BPDU报文,不能生成mac地址表,不能转发用户流量。AP端口的最终状态。
  3. listening:侦听状态,能接收BPDU, 能转发BPDU, 不能生成mac地址表,不能转发用户数据;等待15s
  4. learning: 学习状态,能接收BPDU,能转发BPDU,能生成mac地址表,不能转发用户数据;等待15s
  5. forwarding: 转发状态,能接收BPDU, 能转发BPDU,能生成mac地址表,能转发用户数据。DP端口和RP端口的最终状态。
3.2 状态转移图

在这里插入图片描述
(1)端口开启了STP或通电,会从Disabled状态进入到Blocking状态。
(2) 端口被选举为根端口或指定端口,会进入Listening状态。
(3) 端口的Forward Delay定时器超时,会进入Learning/Forwarding状态。
(4) 端口不再是根端口(RP)或指定端口(AP)时,会进入Blocking状态

4. STP故障解决

BPDU报文中有两个时间。
一个是hello时间,是根桥向非根桥发送BPDU的时间。
另外一个是Max age时间,这个是非根桥的BPDU老化时间。如果在这个时间段内没有收到根桥发来的BPDU报文,该交换机就会重新进行根桥选举。

4.1 根桥故障

在这里插入图片描述

根桥故障又分为端口有电和端口无电无电两种情况。

对于端口有电的情况:
a) SW4e0/0/1口与SW5e0/0/2还能保存根桥发送的BPDU报文
b) 等待Maxage =20s 后, SW4SW5重新选举根桥,它们之间互相发送BPDU报文,新的根桥为SW4
d) SW5成为非根桥端口, SW5e0/0/1口由AP转为RP口,这个过程需要等待30s
因此端口有电的根桥故障,总共需要等待50s
对于端口无电的情况:
a) SW4e0/0/1口与SW5e0/0/2不能保存根桥发送的BPDU报文
b) SW4 SW5意识到RP端口断电, SW4SW5立刻重新选举根桥,它们之间互相发送BPDU报文,新的根桥为SW4
d) SW5成为非根桥端口, SW5e0/0/1口由AP转为RP口,这个过程需要等待30s
因此端口无电的根桥故障,总共需要等待30s

4.2 直连故障

在这里插入图片描述
假设此时SW3为根桥,SW3SW4之间有两条链路。假设此时SW3e0/0/1口链路故障导致断电,因此SW4就没有了RP口;SW4会选举新的RP口为e0/0/3e0/0/3此时为AP口,从AP口切换为RP口需要30s

4.3 非直连故障

在这里插入图片描述
假设此时SWBSWA的链路发生断电链路故障
a) SWB会立刻从e0/0/2口发出BPDU进行根桥选举。
b) SWCe0/0/2口接收到SWBBPDU报文,发现该报文并非最优BPDU报文。SWB等待MaxAge=20s来获得最优BPDU报文
c) Maxage=20s后,SWB仍然未收到最优BPDU报文;SWBe0/0/2口从AP口切换为DP口;而这需要30s中进行切换。

因此总的等待时间为20s+30s=50s

4.4 拓扑改变导致mac表错误

在这里插入图片描述
如图所示,PC1发给PC2的数据是经由SWA发出来的。
此时SWBmac表为:

e0/0/1 mac_PC2
e0/0/3 mac_PC1

假设此时SWASWC之间的链路断了,PC1发向PC2的本来应该走SWB SWC之间的链路。但根据SWBmac表,仍然走SWA,因此无法到达PC2

如果 PC2主动向PC1发送报文,当然可以更新SWBmac表,但是PC2可能出现无法发数据的情况。

如果等待mac表项的删除更新,则需要等待300s,这无疑太漫长了。

因此stp协协议需要同时更新mac表项。

STP拓扑变化时mac表项变化
在这里插入图片描述
TCN: Topo change Notification

a) SWCe0/0/1端口断电,SWC立即意识到拓扑发生变化
b) SWB收到TCN后回应确认报文TCASWC
c) SWB向根桥SWA发送TCN报文
d)SWASWB发送TC报文
e) SWBSWC 转发根桥的TC报文

交换机在收到TC报文后,会立即更新mac表项老化时间为15s

5. STP配置

5.1 详细信息
-------[CIST Global Info][Mode MSTP]-------
# mode stp模式
CIST Bridge         :32768.4c1f-cc15-3e6b
#桥ID: 桥优先级+mac
Config Times        :Hello 2s MaxAge 20s FwDly 15s MaxHop 20
# Hello: 根桥发送配置BPDU的时间
# MaxAge:非根桥的最大老化时间
# FwdDly: 转发时延
Active Times        :Hello 2s MaxAge 20s FwDly 15s MaxHop 20
CIST Root/ERPC      :32768.4c1f-cc15-3e6b / 0
----[Port1(Ethernet0/0/1)][FORWARDING]----
 Port Protocol       :Enabled
 # 协议启用
 Port Role           :Designated Port
 # 端口类型:DP
 Port Priority       :128
 # 端口优先级
 Port Cost(Dot1T )   :Config=auto / Active=200000
 Designated Bridge/Port   :32768.4c1f-cc15-3e6b / 128.1
5.2 配置命令
stp mode stp
stp priority 4096
display stp brief
stp timer forward-delay 
stp port priority
stp path-standard

6. STP报文分类

  • tcn BPDUtopo change notification, 拓扑变化BPDU
  • conf BPDU: 根桥发送的配置BPDU
    • TCA:1TCA BPDU
    • TC:1: TC BPDU

7. STP的劣势

STP协议会有阻塞端口,会浪费链路带宽。
数据中心就不用,数据中心一般用链路聚合+堆叠。

Ref

huawei-support

上一篇:你的网站真的安全吗?如何防止网站被攻击?


下一篇:linux环境搭建