STP详解

冗余链路中存在的问题


如图所示LSW1和LSW2之间有两条线路相连,它们之间任何一条链路出现故障另外一条线路可以马上顶替出现故障的那条链路,这样可以很好的解决单链路故障引起的网络中断,但在此之前有下面三个问题需要考虑。

  • 广播风暴
    以太网交换机传送的第二层数据帧不像路由器传送的第三层数据包有TTL(Time To Live),如果有环路存在第二层帧不能被适当的终止,他们将在交换机之间永无止境的传递下去。结合交换机的工作原理,来看一下上面这张拓扑中广播风暴是如何形成的:

1、PC1发出一个广播帧(可能是一个ARP查询),LSW1收到这个广播帧,LSW1将这个广播帧从除接收端口的其他端口转发出去(即发往G0/0/2、G0/0/3、G0/0/4)。
2、LSW2从自己的G0/0/1和G0/0/2都会收到SW1发过来的相同的广播帧,LSW2再将这个广播帧从除接收端口外的所有其他接口发送出去(LSW2将从G0/0/2接收的广播帧发往其他三个端口G0/0/1、G0/0/3、G0/0/4,从fa0/24接收到的也会发往其他三个端口G0/0/1、G0/0/3、G0/0/4)。
3、这样这个广播帧又从G0/0/1以及G0/0/2传回了LSW1,LSW1再用相同的方法传回LSW2,除非物理线路被破坏,否则PC1-4将不停的接收到广播帧,最终造成网络的拥塞甚至瘫痪。

  • MAC地址表不稳定
    广播风暴除了会产生大量的流量外,还会造成MAC地址表的不稳定,在广播风暴形成过程中:
    1、PC1发出的广播帧到达LSW1,LSW1将根据源MAC进行学习,LSW1将PC1的MAC和对应端口G0/0/1写入MAC缓存表中。
    2、LSW1将这个广播帧从除接收端口之外的其他端口转发出去,LSW2接收到两个来自LSW1的广播(从G0/0/1和G0/0/2),假设G0/0/2首先收到这个广播帧,LSW2根据源MAC进行学习,将PC1的MAC和接收端口G0/0/2存入自己的MAC缓存表,但是这时候又从G0/0/1收到了这个广播帧,LSW1将PC1的MAC和对应的G0/0/1接口存入自己的MAC缓存表。
    3、LSW2分别从自己的这两个接口再将这个广播帧发回给LSW1,这样PC1的MAC地址会不停的在两台交换机的G0/0/1和G0/0/2(G0/0/3、G0/0/4)之间波动,MAC地址缓存表也不断的被刷新,影响交换机的性能。

  • 重复帧拷贝
    冗余拓扑除了会带来广播风暴以及MAC地址的不稳定,还会造成重复的帧拷贝:

1、假设PC1发送一个单播帧给PC3,这个单播帧到达LSW1,假设LSW1上还没有PC3的MAC地址,根据交换机的原理,对未知单播帧进行泛洪转发,即发往除接收端口外的所有其他端口(fa0/2、fa0/23、fa0/24)。
2、LSW2分从自己的G0/0/1和G0/0/2接收到这个单播帧,LSW2知道PC3连接在自己的G0/0/4接口上,所以LSW1将这两个单播帧都转发给PC3。
3、PC1只发送了一个单播帧,PC3却收到了两个单播帧,这会给某些网络环境比如流量统计带来不精确计算等问题。

STP介绍

基于冗余链路中存在的这些问题STP被设计出来用来解决这些问题,下面介绍STP的工作原理。

交换机上有默认的stp版本为mstp (多实例生成树)stp (生成树)rstp (快速生成树)

1、工作原理

STP通过拥塞冗余路径上的一些端口,确保到达任何目标地址只有一条逻辑路径,STP借用交换BPDU(Bridge Protocol Data Unit,桥接数据单元)来阻止环路,BPDU中包含BID(Bridge ID,桥ID)用来识别是哪台计算机发出的BPDU。在STP运行的情况下,虽然逻辑上没有了环路,但是物理线上还是存在环路的,只是物理线路的一些端口被禁用以阻止环路的发生,如果正在使用的链路出现故障,STP重新计算,部分被禁用的端口重新启用来提供冗余

STP使用STA(Spanning Tree Algorithm,生成树算法)来决定交换机上的哪些端口被堵塞用来阻止环路的发生,STA选择一台交换机作为根交换机,称作根桥(Root Bridge),以该交换机作为参考点计算所有路径。

2、选举:根网桥、根端口、指定端口、非指定端口

1)根网桥(根交换机)—在一棵生成树实例中,有且仅有一台交换机为root
选举:
比较每台交换机的网桥id (优先级+MAC地址) 越小越优先
默认优先级:32768
修改优先级的时候要改成4096的倍数
[系统]stp mode stp 修改stp的模式
Stp priority 4096 修改优先级

2)根端口—在每台非根网桥上,有且仅有一个接口;本地离根网桥最近的接口(最短、星型),接收来自根网桥的BPDU,转发用户的流量(该接口不阻塞)
选举:
1 路径开销值:比较从根网桥发出后,通过该接口进入时最小的cost值;
2 对端网桥id:入向cost值相同,比较该接口对端设备的BID,小优
3 对端端口id:对端BID也相同,比较该接口对端设备的接口的PID
4 本端端口id(hub):小优
端口ID 接口优先级(0-240,步长16,默认128)接口编号

3)指定端口—在每一段存在STP的物理链路上,有且仅有一个;转发来自根网桥的BPDU,同时可以转发用户流量(不阻塞);默认根网桥上所有接口为指定端口;
选举:
1 路径开销:比较从根网桥发出后,通过该接口进入这段链路时的cost值最小(出向)
2 本端网桥id
3 本端端口id (端口优先级和端口编号)端口优先级默认是128 接口编号
4 本地端口id,相同,直接阻塞该端口;

4)非指定端口— 剩下的端口就叫做阻塞端口 该接口逻辑阻塞,实际可以接收到信息,但不转发;

3、STP中的报文交互

BPDU 桥协议数据单元

两种BPDU:
1 配置BPDU
作用:用于角色(端口)选举
维护网络拓扑 2秒1次 最多20秒 20秒没有根的回应,则认为根down掉

只有根网桥可以发送,在交换网络初始状态时,所有交换机均定义本地为根网桥,进行BPDU的发送;使得网络所有交换机均收到其他设备的BPDU,之后基于数据中的参数进行比对,选举出根网桥;再所有非根网桥不再发送BPDU,而是仅接收和转发根网桥的BPDU;周期2s发送,hold time 20s;

2 TCN BPDU—拓扑变化bpdu
作用:当拓扑发生变化时,会发tcn bpdu

本地交换机链路故障后,STP重新收敛,为了快速刷新全网所有交换机的MAC表,将向本地所有STP接口发送TCN(标记位中的TCN位置1),邻居交换机收到TCN后,先标记为ACK位为回复,用于可靠传输消息;之后将TCN逐级转发到根网桥处,由根网桥回复TC消息来逐级回复到所有交换机;使所有交换机临时将MAC表的老换时间修改为15s(默认的,转发延时)

4、BPDU字段


1 BPDU Flags 标识字段
Tca位 拓扑变化确认位
Tc位 拓扑变化位
发生变化时置1
2 root identifier 根网桥id (Root ID)
3 cost of path 到达根的开销值
4 Bridge ID 本交换机的网桥ID
5 Port ID 端口ID
0x8001 前面的80 代表优先级128 , 01代表端口号
6 message age 消息寿命 每经过一台交换机 message age+1
7 max age 最大寿命 20秒
8 hello time 2秒
9 forward delay 转发延迟15秒

BPDU的时间有三种,Hello Time、Max Age、Forward Delay:

  1. Hello时间控制了发送配置BPDU的时间间隔,默认2秒。这是根交换机生成BPDU并向非根交换机发送的间隔。
  2. 非根交换机接收到根交换机发送来的BPDU,再从除接收端口以外的其他端口转发出去,如果在2-20秒里面由于网络故障没有新的BPDU从根交换机发送过来,非根交换机将停止向外发送从根交换机接收到的BPDU。如果这种情况持续20秒,也就是最大存活期,非根交换机就使原储存的BPDU无效,并开始寻找新的根端口。所谓最大存活期就是非根交换机丢弃BPDU前用来备份储存它的时间。
  3. 转发延时是交换机在侦听状态到学习状态所花的时间,默认是15秒。
5、端口的状态变化

1 disable 开启stp时 特点:不进行stp计算
2 blocking 阻塞端口直接进入blocking 状态
3 listening 非阻塞端口才进入侦听状态 特点:加速mac地址表老化
所有交换机进行BPDU收发,选举所有角色;接口角色为非指定端口直接进入阻塞状态;若为指定端口和根端口进入下一状态;
中间有15秒的间隔时间,目的是为了加速mac地址表老化,mac地址表老化时间300秒
4 learning 学习状态
指定端口和根端口学习所有接口连接设备的MAC地址,生成MAC表;之后进入下一状态
中间有相隔15秒的时间,加速mac地址表的学习
5 forwarding 转发状态

注:只有到接口进入到转发状态后,才能为用户转发数据报文,之前的30s不能转发任何 数据;

收敛时间:
初次收敛—30s = 15侦听+15s学习

结构变化:
1 存在直连检测:
本地存在阻塞端口,若其他端口断开,该阻塞端口马上进入15是侦听(选举);结果若为启用,那么将再进入15s学习—总30s

当阻塞端口感觉到拓扑发生变化,发送tcn BPDU
对端会回复一条tca=1拓扑变化确认
当交换机收到根交换机范洪的网络变化tc=1的配置BPDU才能老化原来的路径,学习新的路径

2 没有直连检测:
本地不存在阻塞端口,若某个端口断开,将发送次优BPDU(以本地为根)给其他邻居交换机,其他交换机无视该数据,进行20s hold time计时,到时时阻塞接口进入15s侦听,15s学习=总50s

由于线路故障,Sw2 20s后老化了源路径,认为自己是根,向sw3发送bpdu,sw3收到两条bpdu,因此会检测到链路变化,由于链接s1的路径最优,所以向s1发送tcnBPDU,s1回复一条tc=1的配置bpdu,交换机将原来的路径老化,并学习新的路径

6、STP的缺点

1 收敛慢
learning到forwarding需要15s学习mac地址
Listening到learning需要15s 加速老化时间
无论上述用了多少秒,最大等待时间总是15s
发送tcnBPDU的时间过长
2 链路利用率低

RSTP 快速生成树


备份端口只在华为中提出
备份端口备份成为指定端口
预备端口将来预备成为根端口
预备端口和备份端口的相同点,正常情况下都不进行数据转发

RSTP中端口状态变成了三种,将stp状态前三种合成一种,因为不学习mac也不转发数据
三种状态:

  1. discarding 不学习mac也不转发数据
  2. learning 不转发数据但是学习mac
  3. forwarding 即学习mac也转发数据

BPDU stp和rstp的区别:
stp: 配置BPDU TCN BPDU
rstp:RST BPDU(快速生成树bpdu)

标志位

  1. Tca 位(topology change acknowledgement) 拓扑变化确认位
  2. 同意位(agreement)
  3. 转发位(Forwarding)
  4. 学习状态(learning ) 中间有相隔15秒的时间,加速mac地址表的学习
  5. 端口角色(port role)端口角色是11,证明这个端口是指定端口,如果是10则代表是根端口,01代表预备端口或者备份端口,00代表保留
  6. 提议位(proposal)
  7. 拓扑变化位(topology change)

RSTP快速生成树:
收敛速度快:

  1. 边缘端口:连接终端设备的端口
    优点:不会进行端口角色计算,直接变成forwarding状态
    配置边缘端口
    Interface g0/0/3
    Stp edged-port enable
  2. P/A机制 提议/同意机制
    前提条件:点到点链路(全双工链路)交换机先发送一个RST BPDU给根,根收到后作比较,将自己的发给交换机,交换机发现网桥id比自己小比自己优先,就会发一个同意位给根交换机,根交换机上的接口变为指定接口,并直接变为forwarding状态

Sw3当网络发生变化,马上启动一个 TC while 计时器:2倍的hellp时间,直接发送tcBPDU 给s2,四秒内,老化原来的mac地址,形成新的地址,s2收到后重复上述动作直到发给根交换机。

MSTP多实例生成树

多个rstp的集合就是mstp
Instance 实例:rstp

单个实例树的弊端:

  1. 一部分vlan路径不同
  2. 无法使用流量分担
  3. 会产生次优的二层路径


建立两棵树,pc1发数据时,lsw4是根,pc2发数据时,lsw5是根从而解决单个实例树的弊端

配置步骤

  1. 创建vlan基本操作
  2. 修改stp版本
  3. Stp region-configuration 创建域的范围
  4. Region-name Huawei 域的名字
  5. Revision-level 1(保证都相同)
  6. Instance 1 vlan 10
  7. Instance 2 vlan 20
  8. Active region-configuration激活mstp的配置
  9. 每台交换机上都要配置
  10. 只要修改就要重新激活
  11. 设置实例的根Stp instance 1 root primary/secondary(主根/备份根)

默认交换机上有实例0
Mstp和arrp做联动时,mstp的主根一定是arrp的主

当网络中有mstp,stp rstp时,最后会以stp运行,他们的模式依旧是mstp和rstp,但是发的bpdu报文是stp

当mstp的交换机和stp的交换机相连时,发送的是stp的报文,当stp迁移走了,换了一个mstp的交换机时,不会自动回到mstp
【swb】stp mcheck手动迁移回mstp

配置mstp最大跳数
默认最大跳数20跳
Stu max-hops 30 修改最大跳数

四个保护

  1. 边缘端口保护(BPDU保护)
    为什么会有BPDU保护-----从边缘端口收到bpdu,会直接将边缘端口阻塞掉

【系统】Stp bpdu-protection(stp,bpdu保护开启)

  1. 指定端口保护(根的保护)
    从指定接口收到一个优先级比指定端口还低的端口pbdu,则交换机进入阻塞状态,保护自己永远为根
    【指定接口】Stp root-portection 在指定端口下开启根的保护

  2. 环路保护
    三个交换机之间使用光钎连接,由于光纤是由两条线路构成,一条收一条发,一旦收的根端口down掉,发的线路没有问题,此时阻塞端口启用,会形成环路。

    解决方法,长时间收不到bpdu ,就把该端口阻塞掉

  3. TC-BPDU保护 TC
    如果恶意用户一直发送tc-bpdu,那么链路中的路径就会一直老化,此时设置一个阈值,超过上限就会丢弃该bpdu
    默认接受tc上限为1
    修改命令:stp tc-portection threshold 2

STP详解-STP、RSTP、MSTP相关推荐

  1. BPDU内容、BPDU中flag位详解、RSTP协议BPDU中的flag位和STP中的BPDU flag位的区别(附图,建议PC观看)

    目录 BPDU内容: flag位: RSTP和STP能兼容性: BPDU内容: BID,RID,PORT-ID: BPDU的发送间隔时间.BPDU的老化时间.转发延迟时间(15秒).MAX age.f ...

  2. STP/RSTP/MSTP 精华详解

    STP/RSTP/MSTP 精华详解: STP 概述 : 因为二层设备的互联,并因为交换机的转发原理,会导致物理环路的产生.这时就会使用到STP协议 STP:在有环的拓扑里面形成一个无环的逻辑拓扑(从 ...

  3. 数通--交互技术--STP+RSTP详解

    交互技术–STP+RSTP详解 STP: 一.作用: 1.解决环路(广播风暴.Mac地址表震荡) 2.实现链路备份的目的 二.stp流程(原理): 1.选举一个根桥 (优先级=BID<0-655 ...

  4. 【HCIE-RS 天梯路】STP RSTP MSTP

    生成树协议 STP(Spanning Tree Protocol)用于二层破环 不使用生成树协议可能会导致:       1. 广播风暴 2. MAC地址漂移 三层口没有STP 生成树协议模式:(实例 ...

  5. MSTP详解- 原理篇

    MSTP详解-原理篇 一. MSTP产生背景 二. MSTP基本概念 三.MSTP端口角色 四.MSTP的端口状态与收敛机制 五. MSTP 拓扑计算原理 5.1 MSTP 向量优先级 5.2 CIS ...

  6. 华三STP、RSTP、MSTP的详解

    生成树STP 背景作用:避免广播风暴,需要网络中不能存在环路.防止环路导致网络中产生的大量的广播报文,导致网络拥塞. ​ 生成树协议主要是解决2层环路的 ​ 三层环路是根据许多的路由协议去解决的. ​ ...

  7. 生成树技术详解(STP、RSTP、MSTP)

    一.STP STP出现的背景 根本问题:存在环路,所以会带来以下问题 ①广播风暴导致网络不可用. ②MAC 地址表震荡导致 MAC 地址表项被破坏. ③多帧复制. STP主要作用:通过阻塞端口来消除环 ...

  8. STP和RSTP详解-原理篇

    STP和RSTP详解-原理篇 一.STP 1.1 STP基本概念 1.2 STP三个定时器 1.3 STP BPDU报文 1.3.1 配置 BPDU 1.3.2 TCN BPDU 1.3.3 BPDU ...

  9. MSTP和STP协议详解

    STP: STP - Spanning Tree Protocol(生成树协议) 1.逻辑上断开环路,防止广播风暴的产生 2.当线路故障时,阻塞接口被激活,恢复通信,起到备份作用 交换网络环路的产生: ...

最新文章

  1. 如何创建修改分区表和如何查看分区表
  2. jquery中跳出each循环
  3. 使用C++对TINY+语言进行词法分析、语法分析、语义分析和中间代码生成
  4. ffplay播放没有声音SDL_OpenAudio (2 channels, 44100 Hz): WASAPI can't initialize audio client
  5. kendo 服务端排序
  6. endnote国标_Citavi 与 Endnote 在 Word 插入引用,哪个更适合你?
  7. php编写九九乘法表
  8. nginx rewrite php参数,Nginx泛域名解析及Rewrite重定向普通页面及带参数的页面
  9. Ubuntu之更新CMake的版本
  10. Linux TC的ifb原理以及ingress流控
  11. Map集合类型总结,常见Map集合有哪些?他们的优缺点分别是什么?
  12. MCGS昆仑动态显示屏组态环境搭建介绍
  13. java socket是什么_socket系列之什么是socket
  14. 相对路径与绝对路径的写法
  15. GPU驱动及CUDA安装流程介绍
  16. C语言实现万年历系统
  17. $.each()和$().each
  18. 在android安卓模拟器BlueStacks蓝手指上使用微信摇一摇
  19. VB中的IIF() 函数
  20. 第13期 《万物并作,吾以观复》

热门文章

  1. 业务系统成功微服务化改造的实施步骤
  2. 费马小定理以及快速幂应用
  3. find和findstr区别
  4. OSPF特殊区域(stub、stub no-summary、nssa)
  5. 女友抵连!接站等待中。
  6. python爬取B站网页排行榜数据(进阶版)
  7. ps切出来的图片导出来只有一张是png格式的其他全是jpg格式,怎么样让所有的切片变成png格式。
  8. mysql基础入门SQL基本语法
  9. iptable防火墙(一)
  10. mac安装svn的两种方式(使用brew安装svn 和 可视化工具SnailsvnLite)