简介

STP(Spanning Tree Protocol)是运行在交换机上的二层破环协议,环路会导致广播风暴、MAC地址表震荡等后果,STP的主要目的就是确保在网络中存在冗余路径时,不会产生环路。

STP是数通的基本特性,交换机、路由器、WLAN等产品均支持配置STP。本章节以华为CloudEngine系列交换机为例进行介绍。

 

了解STP

STP是一个用于局域网中消除环路的协议,它的标准是IEEE 802.1D。运行该协议的设备通过彼此交互信息而发现网络中的环路,STP将部分冗余链路强制为阻塞状态,其他链路处于转发状态。当处于转发状态的链路不可用时,STP重新配置网络,并激活合适的备用链路状态。

由于局域网规模的不断增长,生成树协议已经成为当前最重要的局域网协议之一。

三要素选举

从环形网络拓扑结构到树形结构,总体来说有三个要素:根桥、根端口和指定端口。

  • 根桥:对于一个STP网络,根桥在全网中只有一个,它是整个网络的逻辑中心,但不一定是物理中心。在进行根桥的选择时,一般会选择性能高、网络层次高的交换设备作为根桥。根桥会根据网络拓扑的变化而动态变化。在配置STP过程中,建议手动配置根桥和备份根桥。请配置最核心的交换设备为根桥,以保证STP二层网络的稳定性,否则新接入设备可能会触发STP根切换,从而导致业务短暂中断。
  • 根端口:去往根桥路径开销最小的端口,根端口负责向根桥方向转发数据,这个端口的选择标准是依据路径开销判定。在一台设备上所有使能STP的端口中,根路径开销最小者,就是根端口。很显然,在一个运行STP协议的设备上根端口有且只有一个,根桥上没有根端口。
  • 指定端口:指定桥向本设备转发配置消息(BPDU报文)的端口或者指定桥向本网段转发配置消息的端口,如图1所示:

    AP1、AP2、BP1、BP2、CP1、CP2分别表示设备S1、S2、S3的端口。

    • S1通过端口AP1向S2转发配置消息,则S2的指定桥就是S1,指定端口就是S1的端口AP1。

    • 与局域网LAN相连的有两台设备:S2和S3,如果S2负责向LAN转发配置消息,则LAN的指定桥就是S2,指定端口就是S2的BP2。

      图1-1 指定桥与指定端口示意图

此外,交换设备和端口都有ID,分别是桥ID(BID)和端口ID(PID)。端口ID由端口优先级和端口号组成。桥ID由桥优先级和桥MAC两部分组成,在STP网络中,桥ID最小的设备会被选举为根桥。

一旦根桥、根端口、指定端口选举成功,则整个树形拓扑建立完毕。在拓扑稳定后,只有根端口和指定端口转发流量,其他的非根、非指定端口都处于阻塞(Blocking)状态,它们只接收STP协议报文而不转发用户流量。

STP报文格式

上述桥ID、路径开销和端口ID等信息都是通过BPDU协议报文传输的。BPDU报文被封装在以太网数据帧中,目的MAC是组播MAC:01-80-C2-00-00-00,Length/Type字段为MAC数据长度,后面是LLC头,LLC之后是BPDU报文头。以太网数据帧格式如图2所示。

图1-2 以太网数据帧格式

在初始化过程中,每个桥都主动发送配置BPDU。但在网络拓扑稳定以后,只有根桥主动发送配置BPDU,其他桥在收到上游传来的配置BPDU后,才触发发送自己的配置BPDU。配置BPDU的长度至少要35个字节,包含了桥ID、路径开销和端口ID等参数,即{根桥ID,累计根路径开销,发送者BID,发送端口PID}。只有当发送者的BID或端口的PID两个字段中至少有一个和本桥接收端口不同,BPDU报文才会被处理,否则丢弃。这样避免了处理和本端口信息一致的BPDU报文。

STP实现过程

STP的树形结构实现过程如下:

  1. 网络初始化时,网络中所有的STP设备都认为自己是“根桥”,根桥ID为自身的设备ID。通过交换BPDU消息,设备之间比较根桥ID,网络中根桥ID最小的设备被选为根桥。根桥上的所有端口都是转发状态。

  2. 非根桥设备将接收最优配置消息的那个端口定为根端口,根端口也是处于转发状态。
  3. 设备根据根端口的配置消息和根端口的路径开销,为每个端口计算一个指定端口配置消息,然后将计算出的配置消息与角色待定端口自己的配置消息进行比较:
    • 如果计算出的配置消息更优,则该端口被确定为指定端口,其配置消息也被计算出的配置消息替换,并周期性地向外发送;

    • 如果该端口自己的配置消息更优,则不更新该端口的配置消息并将该端口阻塞。该端口将不再转发数据,且只接收不发送配置消息。

 

配置STP

 说明:

有关本章节中配置和命令的详细信息请参见CloudEngine 8800, 7800, 6800, 5800 V200R005C10 配置指南-以太网交换

 

启动STP

  1. 执行命令system-view,进入系统视图。
  2. 执行命令stp mode stp,配置交换设备的STP模式。

    缺省情况下,交换机运行MSTP模式,MSTP模式兼容STP和RSTP模式。

  3. (可选)配置根桥和备份根桥
    • 在欲配置为根桥的设备上执行命令:stp root primary,配置当前设备为根桥设备。
    • 在欲配置为备份根桥的设备上执行命令:stp root secondary,配置当前设备为备份根桥设备。
  4. (可选)执行命令stp priority priority,配置交换设备在系统中的优先级。

    缺省情况下,交换设备的优先级取值为32768。数值越小,优先级越高,成为根桥的可能性越大。对于网络中部分性能低、网络层次低的交换设备,不适合作为根桥设备,一般会配置其低优先级以保证该设备不会成为根桥。

  5. (可选)执行命令stp pathcost-standard { dot1d-1998 | dot1t | legacy },配置端口路径开销计算方法。

    缺省情况下,路径开销值的计算方法为IEEE 802.1t(dot1t)标准方法。同一网络内所有交换设备的端口路径开销应使用相同的计算方法。

  6. (可选)配置端口路径开销值及优先级
    1. 执行命令interface interface-type interface-number,进入参与生成树协议计算的接口视图。
    2. 执行命令stp cost cost,设置当前端口的路径开销值。

      存在环路的网络环境中,对于链路速率值相对较小的端口,建议将其路径开销值配置相对较大,以使其在生成树算法中被选举成为阻塞端口,阻塞其所在链路。

    3. 执行命令stp port priority priority,配置端口的优先级。

      缺省情况下,交换设备端口的优先级取值是128。

      如果希望将某交换设备的端口阻塞从而破除环路,则可将其端口优先级设置比缺省值大,使得在选举过程中成为被阻塞的端口。

    4. 执行命令quit,退回系统视图。
  7. 执行命令stp enable,使能交换设备的STP功能。
  8. 执行命令commit,提交配置。
 

STP其他配置

如果您想了解STP的其他配置及RSTP的配置,如网络直径、超时时间、定时器、边缘端口等,请参见CloudEngine 8800, 7800, 6800, 5800 V200R005C10 配置指南-以太网交换中的“STP/RSTP配置”。

 

配置STP示例

以下图的组网环境为例,介绍STP的配置步骤、查看配置结果。

图1-3 配置STP功能组网图
  1. 在SwitchA上配置生成树协议为STP模式,配置SwitchA为根桥,路径开销计算方法为华为私有计算方法。

    <SwitchA> system-view
    [~SwitchA] stp mode stp
    [*SwitchA] stp root primary
    [*SwitchA] stp pathcost-standard legacy
    [*SwitchA] commit
  2. 在SwitchB上配置生成树协议为STP模式,配置SwitchB为备份根桥,路径开销计算方法为华为私有计算方法,并关闭与Server2相连端口的STP功能。
    <SwitchB> system-view
    [~SwitchB] stp mode stp
    [*SwitchB] stp root secondary
    [*SwitchB] stp pathcost-standard legacy
    [*SwitchB] interface 10ge 1/0/2
    [*SwitchB-10GE1/0/2] stp disable
    [*SwitchB-10GE1/0/2] commit
  3. 在SwitchC上配置生成树协议为STP模式,路径开销计算方法为华为私有计算方法,接口10GE1/0/1的路径开销值为20000,并关闭与Server1相连端口的STP功能。
    <SwitchC> system-view
    [~SwitchC] stp mode stp
    [*SwitchC] stp pathcost-standard legacy
    [*SwitchC] interface 10ge 1/0/1
    [*SwitchC-10GE1/0/1] stp cost 20000
    [*SwitchC-10GE1/0/1] quit
    [*SwitchC] interface 10ge 1/0/2
    [*SwitchC-10GE1/0/2] stp disable
    [*SwitchC-10GE1/0/2] commit
  4. 在SwitchD上配置生成树协议为STP模式,路径开销计算方法为华为私有计算方法。
    <SwitchD> system-view
    [~SwitchD] stp mode stp
    [*SwitchD] stp pathcost-standard legacy
    [*SwitchD] commit
  5. 环网中所有设备均使能STP。以SwitchA为例,在SwitchB、SwitchC和SwitchD上执行相同的操作。
    [~SwitchA] stp enable
    [*SwitchA] commit
  6. 验证配置结果。待网络稳定后,可以执行display stp brief查看端口角色和端口状态等信息,以SwitchA为例:
    [~SwitchA] display stp brief
    MSTID Port Role STP State Protection Cost Edged
    0 10GE1/0/1 DESI forwarding none 2 disable
    0 10GE1/0/2 DESI forwarding none 2 disable
 

什么是STP的更多相关文章

  1. 解决:SharePoint当中的STP网站列表模板没有办法导出到其它语言环境中使用

    首在在你的英文版本上,导出列表或是网站的模板,这个文件可能是这样滴:template.stp 把这个文件 template.stp 命名为 template.cab 解压 这个 *.cab 文件 在解 ...

  2. STP的作用和操作

    STP的作用 STP通过阻塞端口来消除环路,并能够实现链路备份的目的 STP的操作 选举一个根桥 比较交换机的桥ID,越小越优先 桥ID  是8个字节,2个字节的优先级+6个字节的MAC地址 2.每个 ...

  3. CentOS 7.1 Bridge启用STP报错"Master connection not found or invalid"

    今天在公司测试Linux bridge搭建,为了使内部docker容器的网络能够不经过2层封装转发对外公布,顾试用一下bridge功能,结果碰到报错:"Bringing up interfa ...

  4. [转]MOSS通过此命令注册模板,web应用程序可以根据stp模块生成网站集

    注:C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12\bin          stsadm –o add ...

  5. STP详解

    STP详解 Write From YangWj Wednesday, March 5, 2014 一. 生成树协议 STP的主要任务是阻止在第2层网络(网桥或交换机)产生网络环路,它警惕的监视着网络中 ...

  6. STP根交换机,指定端口,根端口,阻塞端口

    STP判断各交换机端口(指定端口:DP;根端口:RP;阻塞端口:AP) 判断步骤: 1.选举根交换机: 判断对象:所有运行STP协议的交换机中选出一个; 判断依据:交换机中选择网桥ID值(交换机优先级 ...

  7. 【转】不同VLAN之间相互通信及VTP、STP、EtherChannel概念

    厘清最后一个概念. 转了网上两个相关帖子: http://www.net130.com/CMS/Pub/Tech/tech_zh/2009_03_12_97386_3.htm http://blog. ...

  8. STP学习总结

    STP学习总结 STP是广泛应用在二层的具有冗余的网络中用来消除环路的一种机制,当然二层环网中用来消除环路的技术还有RRPP和H3C的smart-link技术等. 一.STP的一些基本概念 STP是I ...

  9. OSI模型第二层数据链路层-STP协议

    1.stp协议的由来. 在二层网络中,交换机起到了很重要的作用,如果有一台交换机出现故障会影响网络的使用,为了避免存在单点故障,在实际的二层链路中会采用链路冗余,也就是采用交换设备之间多条联络连接,即 ...

  10. 自制STP配置实验

    本图使用Gns模拟器 实验需求: 1.要求利用vtp实现vlan同步设置 2.要求vtp server实现备份冗余 3.创建vlan 1~10要求MLSW1 是奇数vlan主根 MLSW2 是偶数vl ...

随机推荐

  1. Docker来搭建分布式文件系统FastDfs

    对于文件存储来说,一般情况下简单的处理就是在Django配置文件中配置存储目录,按照规则对文件进行上传或者下载. 实际上,当文件较少的时候,Django是可以应付的过来的.但当文件以海量形式出现的时候 ...

  2. 写一个nginx.conf方便用于下载某个网页的所有资源

    写一个nginx.conf方便用于下载某个网页的所有资源 worker_processes 1; events { worker_connections 1024; } http { include ...

  3. Autofac的基本使用---2、普通类型

    Autofac的基本使用---目录 准备 使用的表是Student,创建相关的IDAL.DAL.IBLL.BLL层. 使用EF,创建一个Model层,存放edmx文件. 控制台程序的使用 using ...

  4. Autofac官方文档翻译--一、注册组件--2传递注册参数

    官方文档:http://docs.autofac.org/en/latest/register/parameters.html 二.Autofac 传递注册参数 当你注册组件时能够提供一组参数,可以在 ...

  5. shiro 拦截时序图

    shiro 集成 web 1.第一个过滤器-AbstractShiroFilter subject 是后续动作的主体. 首先构造 subject: WebSubject DefaultSecurity ...

  6. java中给某个字段加锁

    private String buildLock(String str) { StringBuilder sb = new StringBuilder(str); String lock = sb.t ...

  7. 从最长公共子序列问题理解动态规划算法(DP)

    一.动态规划(Dynamic Programming) 动态规划方法通常用于求解最优化问题.我们希望找到一个解使其取得最优值,而不是所有最优解,可能有多个解都达到最优值. 二.什么问题适合DP解法 如 ...

  8. Js HTML DOM动画

    基础页面 为了演示如何通过 JavaScript 来创建 html 动画,我们将使用一张简单的网页: 实例 我的第一部 JavaScript 动画 我的动画在这里. 创建动画容器 所有动画都应该与容器 ...

  9. spring乱码处理

    在web.xml添加post乱码filter:CharacterEncodingFilter 2). 对于get请求中文参数出现乱码解决方法有两个: a. 修改tomcat配置文件添加编码与工程编码一 ...

  10. UNION An Unreferenced Metric for Evaluating Open-ended Story Generation精读

    UNION An Unreferenced Metric for Evaluating Open-ended Story Generation精读 UNION: 一种评估开放故事生成无参考文本依赖me ...