企业内部网路怎么防止网络出现环路?学会STP生成树协议就可以解决啦!

STP简介

在二层交换网络中,一旦存在环路就会造成报文在环路内不断循环和增生,产生广播风暴,从而占用所有的有效带宽,使网络变得无法 正常通信。
在这种环境下生成树协议应运而生,生成树协议是一种二层管理协议,它通过有选择性的阻塞网络冗余链路来达到消除网络二层环路的目的,同时具备链路备份功能。
生成树协议和其他协议一样,是随着网络的不断发展而不断更新换代的。最初被广泛应用的是IEEE 802.1D-1998 STP(

Spanning Tree Protocol,生成树协议),随后以它为基础产生了IEEE 802.1w RSTP

(Rapid Spanning Tree Protocol,快速生成树协议)和IEEE 802.1s MSTP(Multiple Spanning Tree Protocol,多生成树协议)。

三种生成树协议的特点比较:

生成树协议 特点 应用场景
STP
  • 形成一棵无环路的树,解决广播风暴并实现冗余备份。

  • 收敛速度较慢。

      无需区分用户或业务流量,所有VLAN共享一棵生成树。
RSTP
  • 形成一棵无环路的树,解决广播风暴并实现冗余备份。

  • 收敛速度较快。

MSTP
  • 形成一棵无环路的树,解决广播风暴并实现冗余备份。

  • 收敛速度较快。

  • 多棵生成树在VLAN间实现负载均衡,不同VLAN的流量按照不同的路径转发。

      需要区分用户或业务流量,并实现负载分担。不同的VLAN通过不同的生成树转发流量,每棵生成树之间相互独立。

STP实现说明

华为实现说明:

➱STP在交换机所有版本,所有形态都支持。

➱华为交换机默认STP模式是MSTP.需要运行STP或MST模式时,必须要手动配置。

➱华为交换机在STP模式下,使用的端口角色和RSTP是一样的,也就是说支持下面5种端口角色:指定端口、根端口、Alternate端口、Backup端口和边缘端口。

➱华为交换机在STP模式下,支持下面4种保护功能:BPDU保护、Root保护、环路保护和防TC-BPDU攻击保护。

➱版本差异说明:

  • 从V100R006版本开始,华为X7交换机全局默认使能STP功能。

  • V200R001版本及之后版本,开始支持边缘端口属性自动探测功能。即如果端口从未收到过BPDU报文,则边缘端口属性自动生效(端口下不会自动生成stp edged-port enable配置)。

  • V200R001版本及之后版本,如果端口已经配置stp edged-port enable,可以再配置根保护和环路保护,而其他版本会提示Error。

其他厂商实现

➱ H3C

  • H3C交换机STP相关命令配置与S系列交换机基本没有差异。

  • H3C交换机默认采用legacy标准来计算路径开销,而S系列交换机默认为dot1t。在与S系列交换机对接时,建议配置相同的计算标准。

  • 某些H3C老形态设备,全局不使能STP或全局使能端口不使能STP时,端口收到BPDU报文后,可以当做普通组播数据报文在VLAN内转发。S系列交换机端口默认会丢弃。

Cisco

Cisco交换机所支持的生成树协议类型分别有:PVST(Per VLAN Spanning Tree)、PVST+(Per VLAN Spanning Tree Plus)、Rapid-PVST+(Rapid Per VLAN Spanning Tree Plus)和MST(Multiple Spanning Tree)。这几种生成树协议的某些BPDU报文采用其私有的报文格式,与IEEE标准的BPDU报文格式不一样。

  • 当Cisco交换机运行私有的PVST+或Rapid-PVST+生成树协议时,与S系列交换机能否互通,取决于Cisco侧的端口链路类型:
    —— 如果端口链路类型为trunk且退出VLAN 1,与S系列交换机无法实现互通。Cisco侧端口在非VLAN 1中发送其私有的BPDU报文,S系列交换机默认不会处理该报文,当做普通组播数据报文进行转发,可以通过配置l2protocol-tunnel进行透传。S系列盒式交换机通过l2protocol-tunnel透传PVST+报文时,全局需要配置bpdu mac-address 0100-0ccc-cccd。
    —— 如果端口链路类型为trunk而且加入VLAN 1,只可以在VLAN 1中与S系列交换机互通。
    —— 如果端口链路类型为access,可以与S系列交换机互通。

  • 当Cisco交换机运行MST协议时,可以理解为标准的MSTP模式,可以与S系列交换机互通。但是需要注意:在使用MSTP协议的S系列交换机与使用MST的Cisco交换机采用相同的域配置(域名、修订级别、VLAN与实例的映射关系)的情况下,要想实现域内互通,需要在S系列交换机端口配置摘要侦听功能stp config-digest-snoop。这是两者由于采用不同的密钥来生成MSTP的摘要信息,因此端口发送的BPDU报文中的摘要信息不同。由于摘要信息不同,则属于不同的MST域,会进行域间互通。

※   注意一下介绍的STP是狭义的STP,即 IEEE 802.1D-1998 中定义的STP协议。

STP原理

协商原则:

STP协议是根据4个维度进行选举协商的,设备之间通过发送BPDU报文,经过4个维度的比较,最终会阻塞综合能力最差的端口。

选举维度(桥ID,累计根路径开销,发送设备BID,发送端口PID)

维度  定义 作用
桥ID BID(Bridge ID),是由16位的桥优先级(Bridge Priority)与桥MAC地址构成。BID桥优先级占据高16位,其余的低48位是MAC地址。 确定根桥。桥ID最小的设备会被选举为根桥。
累计根路径开销 某端口到根桥累计的路径开销就是所经过的各个桥上的各端口的路径开销累加而成。

选举根端口、指定端口和阻塞端口时使用。

发送设备BID

发送BPDU报文的桥ID。

选举根端口、指定端口和阻塞端口时使用。
发送端口PID

发送BPDU报文的端口ID。

PID由两部分构成的,高4位是端口优先级,低12位是端口号。

只在存在Backup端口时使用。

角色和状态

经过4个维度的比较,最终会协商出端口的角色和状态,确定报文流量的转发路径。STP角色的定义,如图所示:

➱根桥:就是桥ID最小的设备。桥ID是由16位的桥优先级与桥MAC地址构成。BID桥优先级占据高16位,其余的低48位是MAC地址。华为交换机默认桥优先级都是32768。所以在不修改桥优先级时,MAC地址最小的设备就是根桥。

➱指定端口:就是负责转发BPDU报文的端口。根桥上的端口都是指定端口。该端口可以正常转发流量。

➱根端口:就是去往根桥路径开销最小的端口。该端口可以正常转发流量。

➱阻塞端口:就是禁止转发流量的端口。

从上面的官方定义,可以看出:STP协商完成后,端口要么被阻塞,要么正常转发报文。其实在STP进行协商的过程中,是有一些中间状态的。

端口状态 目的 说明
Forwarding   端口既转发用户流量也处理BPDU报文。 只有根端口或指定端口才能进入Forwarding状态。
Learning  设备会根据收到的用户流量构建MAC地址表,但不转发用户流量。   过渡状态,增加Learning状态防止临时环路。 
Listening  确定端口角色,将选举出根桥、根端口和指定端口。  过渡状态。 
Blocking  端口仅仅接收并处理BPDU,不转发用户流量。  阻塞端口的最终状态。 

报文格式

STP协议报文是通过BPDU报文封装的,目的MAC是组播MAC:01-80-C2-00-00-00,封装格式是IEEE 802.3。

BPDU报文处理流程

BPDU报文的分类:
➱配置BPDU报文:根据Flags标记位,分为3类

  • 第一类配置BPDU报文: Flags的TCA和TC位都置为0的配置BPDU报文

  • 第二类配置BPDU报文: Flags的TCA和TC位都置为1的配置BPDU报文

  • 第三类配置BPDU报文:Flags的TCA位置为0,TC位置为1的配置BPDU报文

➱TCN BPDU报文:BPDU Type为0x80的BPDU报文,叫做TCN BPDU报文

BPDU报文的处理流程

BPDU报文格式

➱配置BPDU报文:BPDU Type为0x00的BPDU报文,都叫做配置BPDU报文

  1. 第一类配置BPDU报文: Flags的TCA和TC位都置为0的配置BPDU报文
    该报文用于STP状态的协商和维持。具体报文格式如下:

  2. 第二类配置BPDU报文: Flags的TCA和TC位都置为1的配置BPDU报文
    该报文用于通知下游设备停止发送TCN BPDU报文。具体报文格式如下:

  3. 第三类配置BPDU报文: Flags的TCA位置为0,TC位置为1的配置BPDU报文
    该报文用于通知下游设备删除MAC地址表项。具体报文格式如下:

➱TCN BPDU报文:BPDU Type为0x80的BPDU报文,叫做TCN BPDU报文,用于通知上游设备网络拓扑变更。具体报文格式如下:

使用注意事项

➱盒式交换机需要通过“bpdu enable”使能BPDU报文上送CPU处理的功能,才能使STP报文上送CPU处理,否则STP状态无法收敛。

V100R005及之前版本,在S2700系列设备,检查全局是否配置bpdu enable;其他系列盒式交换机,检查物理端口、Eth-trunk接口下是否配置bpdu enable。

V100R006及后续版本,对应形态设备全局或端口默认使能bpdu enable。

➱Eth-Trunk接口使能STP时,建议修改Eth-Trunk接口的cost值使其小于物理端口的cost值,使其不易协商为备份端口。一是因为Eth-Trunk接口的开销为单个成员接口的开销除以成员接口数量,当成员口状态变化时Eth-trunk接口的cost值会变化;二是cost值越小说明链路质量越高。
➱通过命令“display stp brief”查看端口状态时,只会显示使能STP且UP的端口。

➱可以通过修改路径开销和发送者的BID,选择阻塞指定的端口。

配置举例

组网需求

如图所示,当前网络中SwitchA、SwitchB、SwitchC和SwitchD通过环形组网备份链路。希望通过运行生成树协议阻塞端口,将环形网络结构修剪成无环路的树形网络结构。

➱在主链路故障时,对切换到备份链路的时间要求不高,要求配置简单,所以这里使用STP模式。
➱ SwitchA设备的性能较高,希望作为根桥,SwithB为备份根桥。
➱SwtichC和SwitchD设备连接用户,希望阻塞SiwtchC和SwitchD之间的链路。
➱SwitchC和SwitchD连接用户的接口GE0/0/3不要参与STP计算。

配置思路

采用如下的思路配置STP:

1. 配置模式是STP模式。

2. 配置SwitchA为根桥,SwitchB为备份根桥。

3. 统一使用默认路径开销。华为交换机默认的路径开销计算标准使用的是标准的dot1t。GE接口默认路径开销是20000,而Ethernet接口默认路径开销是200000。注意:eNSP模拟器中,STP的路径开销默认是1。

4. SwitchC和SwitchD的GE0/0/3端口去使能STP协议。

5. SwitchA、SwitchB、SwitchC和SwitchD使能STP协议。

操作步骤

步骤1:配置模式为STP模式。

<HUAWEI> system-view

[HUAWEI] sysname SwitchA

[SwitchA] stp mode stp

<HUAWEI> system-view

[HUAWEI] sysname SwitchB

[SwitchB] stp mode stp

<HUAWEI> system-view

[HUAWEI] sysname SwitchC

[SwitchC] stp mode stp

<HUAWEI> system-view

[HUAWEI] sysname SwitchD

[SwitchD] stp mode stp

步骤2:配置SwitchA为根桥,SwitchB为备份根桥。

[SwitchA] stp root primary   //也可以使用命令stp priority 0 配置优先级为0,和stp root primary的作用是一样的。 
[SwitchB] stp root secondary  //也可以使用命令stp priority 4096 配置优先级为4096,和stp root secondary的作用是一样的。

步骤3:去使能SwitchB和SwitchC设备GE0/0/3端口的STP功能。

[SwitchC] interface gigabitethernet0/0/3[SwitchC-GigabitEthernet0/0/3] stp disable[SwitchC-GigabitEthernet0/0/3] quit 
[SwitchD] interface gigabitethernet 0/0/3[SwitchD-GigabitEthernet0/0/3] stp disable [SwitchD-GigabitEthernet0/0/3] quit 

步骤4:全局使能STP功能。

华为X7系列交换机默认是使能,该步骤可以省略。

[SwitchA] stp enable 
[SwitchB] stp enable 
[SwitchC] stp enable 
[SwitchD] stp enable 

步骤5:验证配置结果。

查看STP简要信息,通过STP简要信息可以快速的看出端口的角色和状态。

操作步骤

步骤1:配置模式为STP模式。

<HUAWEI> system-view

[HUAWEI] sysname SwitchA

[SwitchA] stp mode stp

<HUAWEI> system-view

[HUAWEI] sysname SwitchB

[SwitchB] stp mode stp

<HUAWEI> system-view

[HUAWEI] sysname SwitchC

[SwitchC] stp mode stp

<HUAWEI> system-view

[HUAWEI] sysname SwitchD

[SwitchD] stp mode stp

步骤2:配置SwitchA为根桥,SwitchB为备份根桥。

[SwitchA] stp root primary   //也可以使用命令stp priority 0 配置优先级为0,和stp root primary的作用是一样的。 
[SwitchB] stp root secondary  //也可以使用命令stp priority 4096 配置优先级为4096,和stp root secondary的作用是一样的。

步骤3:去使能SwitchB和SwitchC设备GE0/0/3端口的STP功能。

[SwitchC] interface gigabitethernet0/0/3[SwitchC-GigabitEthernet0/0/3] stp disable[SwitchC-GigabitEthernet0/0/3] quit 
[SwitchD] interface gigabitethernet 0/0/3[SwitchD-GigabitEthernet0/0/3] stp disable [SwitchD-GigabitEthernet0/0/3] quit 

步骤4:全局使能STP功能。

华为X7系列交换机默认是使能,该步骤可以省略。

[SwitchA] stp enable 
[SwitchB] stp enable 
[SwitchC] stp enable 
[SwitchD] stp enable 

步骤5:验证配置结果。

查看STP简要信息,通过STP简要信息可以快速的看出端口的角色和状态。

配置文件月

SwitchA的配置文件

#

sysname SwitchA

#

stp mode stp

stp instance 0 root primary

#

return

SwitchB的配置文件

#

sysname SwitchB

#

stp mode stp

stp instance 0 root secondary

#

return

SwitchC的配置文件

#

sysname SwitchC

#

stp mode stp

#

interface GigabitEthernet0/0/3

stp disable

#

return

SwitchD的配置文件

#

sysname SwitchD

#

stp mode stp

#

interface GigabitEthernet0/0/3

stp disable

#

return

欢迎关注微信公众号【厦门微思网络】。www.xmws.cn专业IT认证培训19周年
主要课程:思科、华为、红帽、ORACLE、VMware、CISP、PMP等认证培训及考试

企业内部网路怎么防止网络出现环路?相关推荐

  1. 防范保险企业内部风险,原点安全出席中国寿险财险科技应用高峰论坛

    8月18日,主题为"数字保险 科技引擎"的中国寿险财险科技应用高峰论坛在北京举行,作为享誉中国保险科技界的两会,汇聚全国数百位保险公司总裁/副总裁.保险公司CIO.信息化主管领导和 ...

  2. 【逗老师带你学IT】PRTG监控系统配合树莓派采集企业内部无线网络质量

    目录 本文介绍了一种,如何通过树莓派采集企业内部无线网络质量,将树莓派变成无线探针,并在PRTG网络监控平台上进行显示的方法. 实现原理 部署方法 一.树莓派无线网络连接 二.编写shell脚本 三. ...

  3. python wifi探针_【逗老师带你学IT】PRTG监控系统配合树莓派采集企业内部无线网络质量...

    本文介绍了一种,如何通过树莓派采集企业内部无线网络质量,将树莓派变成无线探针,并在PRTG网络监控平台上进行显示的方法. 可以监控我们感兴趣的无线网络的各项指标,包括 无线丢包 ping测试最大.最小 ...

  4. 8月第1周安全回顾 0Day漏洞成企业最大威胁 应重视网络监听

    文章同时发表在:[url]http://netsecurity.51cto.com/art/200708/52822.htm[/url] 本周(0730至0805)安全方面值得关注的新闻集中在安全管理 ...

  5. SFB 项目经验-81-在企业内部外部限制访问ECP

    客户需求: Exchange 2016限制在企业内部.企业外部访问https://mail.contoso.com/ECP.仅管理网段能够访问ECP. 解决方法: 1) 找过网上很我方法,通过命令行去 ...

  6. WCF4.0进阶系列--第四章 保护企业内部的WCF服务(转)

    http://www.cnblogs.com/yang_sy/archive/2011/05/24/2054834.html [摘要] 安全是任何系统至关重要的一个方面,尤其当该系统由分布式的程序和服 ...

  7. uniapp cross-env不是内部或外部_企业内部防泄密三部曲 严防祸起萧墙之内

    防泄密,这是一个永无止境的话题!多年来,企业由于自身的安全防护机制不严谨,引发的数据安全事件频发.数据安全事件带来的社会影响日趋显著,经常导致严重的经济损失. 抛开事件本身的人为因素不谈,如何从技术角 ...

  8. 【转载】用开源软件搭建企业内部协作平台, Kill QQ MSN

    作为公司的一分子, 您可能忧心忡忡于通过 MSN, QQ 流入的各种名目繁多的病毒, 木马, 例如熊猫烧香, 以及通过 MSN 传播的导致公司网络瘫痪的蠕虫病毒. 换句话说, 我们需要企业内部协作平台 ...

  9. js kettle 设置变量_kettle与钉钉结合的企业内部应用扩展01

    晨枫0215 2019-09-23 16:46 Kettle作为了一个开源的工具,尤其现在大数据应用环境下,企业内部的数据清理应用就更多. 另外一方面,钉钉作为企业内部沟通平台,相比2年前,发展的更快 ...

  10. 如何在企业内部实现云信私有化

    在信息安全愈发重要的今天,企业越来越重视和业务有关的数据,视其为企业的生命线,云信针对这一特点专门构建了一整套私有化方案,并且在多家行业龙头企业内部稳定运行,成为企业内部发展的助推器. 本文将从为何企 ...

最新文章

  1. Syn Bot /OSCOVA 快速回复(11)
  2. C++ Primer学习随笔(一)
  3. Redis 是属于多线程还是单线程?
  4. $(document).ready()和window.onload之间的差异
  5. mysql中的rman备份_oracle数据库 rman基本备份操作
  6. c并非所有的代码路径都返回值_两行C语言代码播放音乐,就这么so easy!你学到了吗?...
  7. 试用期间,云服务器操作系统可以更换吗?
  8. 天才?骗子?解析Deep Tech
  9. 大学计算机在线阅读,大学计算机
  10. N 个互异数的数组的平均逆序数
  11. 一台2003服务器上怎样设置2个网站,服务器怎样设置多站点 服务器程序 win2003+apache...
  12. 2、两数相加(python)
  13. 高性能实现WORD转PDF(jacob1.19+SaveAsPDFandXPS)内附资源链接
  14. 在VS Code中用插件记录写代码时间
  15. ruby 安装问题的 一二事
  16. 非三星手机无法登录三星账号_如何解决所有三星手机的烦恼
  17. app测试中,安卓和IOS有哪些区别(持续补充ing)
  18. SpringBoot 整合Smart-doc生成接口文档
  19. 【Python】从爬虫开始吧——爬取妹子图整站
  20. 托福满分范文120篇 101-110

热门文章

  1. Effective-MultiType
  2. CKEditor配置及使用
  3. 谷歌浏览器插件 - 为 Microsoft Bing 搜索引擎首页添加一个【保存背景图片】的按钮(版本 1)
  4. linux查看ip命令
  5. html doc全称,html标签全称与功能介绍.doc
  6. 应用程序正常初始化(0xc0000160)失败
  7. 笔记本禁用键盘和触摸板
  8. file api java_File的API和常用方法详解_动力节点Java学院整理
  9. 基于python的简易安卓小外挂制作
  10. 4.2 metasploit 开发 exploit