转载来源 :华为交换机stp原理透析及实战 :https://mp.weixin.qq.com/s/hK2UhxssPb-ww6J0oCu1dQ

生成树协议stp,快速生成树协议rstp,多实例生成树协议mstp,目前华为交换机默认使用多实例生成树mstp。

一、STP中的选举步骤和端口状态

选举步骤:

1、选举ROOT-SW根网桥
2、选举根端口RP(root port)
3、选举指定端口DP(Designate port)
4、其余的端口被Block阻塞
5、stp选举时候端口状态(15s 到listening,选举就结束了):

二、STP选举过程

A、确定Root Bridge -通过BID的比较判决。

在同一个二层网络中需要选举,即一个广播域内要选举,并且一个网络中只能选举一台根交换机(ROOT)。Birdge-ID中优先级数字小的为根交换机,优先级范围为0-65535,如果优先级相同,则MAC地址小的为根交换机。

B、所有非根桥交换机选举RP(Root Port) - 每个非根桥有且只有一个RP(主要作用是负责接收并且监听根桥的BPDU)

1、比较每个端口到达Root的Cost,具有最小Cost的端口成为RP端口的,开销是指本端口收到一个对端网桥的BPDU以后,累加本端口的COST之后的总路径开销。cost相同比较Sender BID

2、比较Send BID,收到BPDU中Send BID最小的端口成为RP,负责转发根网桥BPDU的交换机每次转发都将其中BID替换为自己的,先优先级后MAC 越小越好,Sender BID相同的话比较port ID

3、比较Port ID,收到BPDU中,Port ID最小的端口成为RP。Port ID由2个字节组成.包含一个数字有序对。第一个数字作为Port priority,第二个数字作为Port Number。排列顺序不一定和物理端口顺序一样,但是具体数字丌一定一样。

C、所有链路上确定DP(Design Port) - 转发BPDU的端口。

在每个冲突域需要选举,简单的理解为为每条连接交换机的物理线路的两个端口中,有一个要被选为指定端口,每个网段选举指定端口后,就能保证每个网段都都链路能够到达根交换机。根端口的对端一定是指定端口(主要作用是用来转发来自跟桥的BPDU)

1、比较同一段链路上2个端口发送BPDU到根的cost,较小的一个端口成为DP,如果相同再比较Sender BID
2、比较同一段链路上的2个端口发送BPDU的Sender BID(发送SW一般是这个端口所属的SW),较小的一个端口成为DP

D、网络中剩余的端口不全就是Block,只接受和监听BPDU,但是不发送接受数据。

在这个简单的拓扑中,三台交换机形成一个闭环,交换机之间使用trunk链路,并允许所有vlan通过(mstp中如果不允许某个vlan通过那么这个vlan的mstp-bpdu报文将无法收发也就无法形成实例树),然后查看默认的stp模式。

1、分别在三台交换机上查看stp的默认模式,以LSW1为例:

<sw1>display stp
-------[CIST Global Info][Mode MSTP]-------
CIST Bridge         :32768.4c1f-ccdb-6e3b       #本交换机的root-id
Config Times        :Hello 2s MaxAge 20s FwDly 15s MaxHop 20    #mstp中各种报文的默认时间
Active Times        :Hello 2s MaxAge 20s FwDly 15s MaxHop 20
CIST Root/ERPC      :32768.4c1f-ccdb-6e3b / 0      #根桥的root-id,就是sw1自己
CIST RegRoot/IRPC   :32768.4c1f-ccdb-6e3b / 0
CIST RootPortId     :0.0
BPDU-Protection     :Disabled
TC or TCN received  :26
TC count per hello  :0
STP Converge Mode   :Normal
Time since last TC  :0 days 16h:20m:53s
Number of TC        :23
Last TC occurred    :GigabitEthernet0/0/2

2、在三台交换机中分别配置vlan2、3,并使用mstp观察各个交换机的角色和端口状态

[sw1]display stp brief        #默认情况下mstp是实例0,并只有一个vlan1在实例0中MSTID  Port                        Role  STP State     Protection0    GigabitEthernet0/0/1        DESI  FORWARDING      NONE0    GigabitEthernet0/0/2        DESI  FORWARDING      NONE
[sw1][sw2]display stp brief MSTID  Port                        Role  STP State     Protection0    GigabitEthernet0/0/1        ROOT  FORWARDING      NONE0    GigabitEthernet0/0/2        ALTE  DISCARDING      NONE
[sw2][sw3]display stp brief MSTID  Port                        Role  STP State     Protection0    GigabitEthernet0/0/1        ROOT  FORWARDING      NONE0    GigabitEthernet0/0/2        DESI  FORWARDING      NONE
[sw3]

在以上的显示中看到sw1是instance 0的根桥,sw2上的g0/0/2端口被阻塞,参考指定端口的选举原则,sw2的root-id大于sw3,所以端口被逻辑阻塞。

3、在三台交换机中创建实例mstp实例1,并将vlan2、3放入实例1中,三台交换机配置一样:

stp region-configuration      #进入mstp配置模式region-name mstp     #mstp域名,同一个域内的交换机域名必须相同(多个mstp域相连,每个域被看做一台sw)revision-level 1   #mstp的版本等级,一个域内必须相同,用于bpdu报文的hash计算instance 1 vlan 2 to 3   #创建实例1,并将vlan2、3放入实例1中active region-configuration    #激活以上配置,否则配置不生效也看不到
#<sw1>display stp instance 1 brief     #实例1的配置已经激活MSTID  Port                        Role  STP State     Protection1    GigabitEthernet0/0/1        ROOT  FORWARDING      NONE1    GigabitEthernet0/0/2        DESI  FORWARDING      NONE
<sw1>

4、将包含vlan1的instance1的根桥配置为sw2,与包含vlan2、3的instance0形成流量在逻辑上的负载分担,和备份。

在sw2上配置根桥优先级让sw2成为instance 1的根桥

[sw2]stp instance 1 priority 4096       在instance1中将sw2的优先级改为4096(默认为32768)使它成为instance1的根桥

再查看mstp中instance0和instance1的树状态对比:

<sw1>display stp brief MSTID  Port                        Role  STP State     Protection0    GigabitEthernet0/0/1        DESI  FORWARDING      NONE0    GigabitEthernet0/0/2        DESI  FORWARDING      NONE1    GigabitEthernet0/0/1        ROOT  FORWARDING      NONE1    GigabitEthernet0/0/2        DESI  FORWARDING      NONE
<sw1>[sw2]display stp brief MSTID  Port                        Role  STP State     Protection0    GigabitEthernet0/0/1        ROOT  FORWARDING      NONE0    GigabitEthernet0/0/2        ALTE  DISCARDING      NONE1    GigabitEthernet0/0/1        DESI  FORWARDING      NONE1    GigabitEthernet0/0/2        DESI  FORWARDING      NONE
[sw2]<sw3>display stp brief MSTID  Port                        Role  STP State     Protection0    GigabitEthernet0/0/1        ROOT  FORWARDING      NONE0    GigabitEthernet0/0/2        DESI  FORWARDING      NONE1    GigabitEthernet0/0/1        ALTE  DISCARDING      NONE1    GigabitEthernet0/0/2        ROOT  FORWARDING      NONE
<sw3>

在交换机中查看instance 1 的根桥

-------[MSTI 1 Global Info]-------
MSTI Bridge ID      :0.4c1f-ccfa-7cd1
MSTI RegRoot/IRPC   :0.4c1f-ccfa-7cd1 / 0    #根桥root-id
MSTI RootPortId     :0.0
MSTI Root Type      :Primary root         #说明是根桥
Master Bridge       :32768.4c1f-ccdb-6e3b     #sw1的root-id,这个是全局instance0的根桥root-id
Cost to Master      :20000
TC received         :7
TC count per hello  :0
Time since last TC  :0 days 17h:16m:56s
Number of TC        :10
Last TC occurred    :GigabitEthernet0/0/2----[Port1(GigabitEthernet0/0/1)][FORWARDING]----Port Role           :Designated PortPort Priority       :128Port Cost(Dot1T )   :Config=auto / Active=20000Designated Bridge/Port   :0.4c1f-ccfa-7cd1 / 128.1Port Times          :RemHops 20TC or TCN send      :3TC or TCN received  :3----[Port2(GigabitEthernet0/0/2)][FORWARDING]----Port Role           :Designated PortPort Priority       :128Port Cost(Dot1T )   :Config=auto / Active=20000Designated Bridge/Port   :0.4c1f-ccfa-7cd1 / 128.2Port Times          :RemHops 20TC or TCN send      :3TC or TCN received  :4
[sw2]

做完以上配置后,形成的逻辑拓扑如图:

根桥上的所有端口都是指定端口,一条链路上收到根桥报文最近的端口为根端口,发送报文到根桥最近的端口是指定端口

在mstp中的形成2个实例树,对应instance0和1,这里vlan1的流量就对应instance0的路径,vlan2、3的流量对应instance1的路径。指定端口的选举时根据发出bpdb到达根桥的cost最短计算,那么如有想要在instance1中让sw1的g0/0/2端口阻塞而sw3的g0/0/1端口成为指定端口,就需要修改sw3的g0/0/1端口到达sw2的cost<sw1的g0/0/2端口到达sw2的cost值

在完整的拓扑中,
sw1的g0/0/2到达root的cost:sw1g0/0/2–sw3g0/0/1的cost+sw3g0/0/2–sw2g0/0/2的cost

sw3的g0/0/1到达root的cost:sw3g0/0/1–sw3g0/0/2的cost+sw1g0/0/1–sw2g0/0/1的cost

所以要调整指定端口只需要修改其中一个cost的值就可以,默认情况下是sw3的g0/0/1接口被阻塞,sw1的g0/0/2接口成为了指定端口,现在要让sw1的g0/0/2端口被阻塞就需要修改它到达rootsw2的cost,也就是修改sw1g0/0/2–sw3g0/0/1的cost+sw3g0/0/2–sw2g0/0/2的cost,其中可以在任意sw1进过的接口修改cost使总cost变小即可,默认为1,也就是修改sw3的g0/0/0和g0/0/2都可以,将cost修改为10,再次查看instance 1 中树的端口状态:

[sw3-GigabitEthernet0/0/1]display this
#
interface GigabitEthernet0/0/1port link-type trunkport trunk allow-pass vlan 2 to 4094stp instance 1 cost 10       修改cost在instance1中的值为10
#
return[sw3-GigabitEthernet0/0/1]display stp instance 1 brief       #sw3的g0/0/1变为指定端口MSTID  Port                        Role  STP State     Protection1    GigabitEthernet0/0/1        DESI  FORWARDING      NONE1    GigabitEthernet0/0/2        ROOT  FORWARDING      NONE[sw1]display stp instance 1 brief MSTID  Port                        Role  STP State     Protection    #sw1的g0/0/2变为的阻塞端口1    GigabitEthernet0/0/1        ROOT  FORWARDING      NONE1    GigabitEthernet0/0/2        ALTE  DISCARDING      NONE
[sw1]

注意:端口的cost计算时,本端口自身的cost不算,从下一跳方向的端口开始计算到跟root的cost之和

华为交换机stp原理透析及实战相关推荐

  1. 深入浅入 ~ ConCurrentHashMap底层原理透析

    创作宗旨:化繁为简,绝不冗余,点到为止 ConcurrentHashMap<K,V> 继承了AbstractMap<K,V>,实现了ConcurrentMap<K,V&g ...

  2. 华为交换机 STP MSTP BPDU保护 边缘端口 BPDU过滤 根保护 环路保护 TC保护

    生成树协议 STP        生成树协议 RSTP    快速生成树协议 MSTP    多生成树协议 一.原理 stp:Spanning Tree Protocol (生成树协议) 交换网络广播 ...

  3. java中数据类型byte的底层原理透析

    byte数据类型详解 二进制.位.字节的关系 二进制 位 字节 三者联系 ascll码表 Byte数据类型底层原理说明 代码与结果展示 结果透析 二进制.位.字节的关系 二进制 十进制:0,1,2,3 ...

  4. 网络传输协议原理透析

    网上对OSI参考模型的讲解比较多,但是看起来总还是没法有个完整的记忆. 为了全面透析网络传输,遂总结这篇笔记,留后续查阅. 名词解释: 开放式系统互联通信参考模型(英语:Open System Int ...

  5. 华为交换机STP生成树协议

    生成树协议 原理 Stp:spanning tree protocol 交换网络广播风暴: 交换机物理布局是环状(线路备份) 交换机之间互相转发未知地址的数据帧 线路备份,形成无环拓扑避免广播风暴=& ...

  6. 华为修改优先级命令_华为交换机STP 根ID优先级设置

    http://m.blog.csdn.net/flyfish5/article/details/50224537 STP(Spanning Tree Protocol)生成树协议. 冗余链路 当前的交 ...

  7. 华为交换机STP端口角色状态

    端口5种状态 网桥或交换机的端口可能有5个状态:阻塞.侦听.学习.转发和禁用.他们之间的状态转换如图所示: 上图中,实线箭头表示端口的正常转换,虚线箭头表示由管理配置引起的改变. 交换机上的端口在启动 ...

  8. 转:大规模网站架构技术原理透析

    来自:http://tech.it168.com/a2009/0904/674/000000674253.shtml 跟朋友聊天的时候,发现很多人对大型网站系统架构非常感兴趣,我也很感兴趣,经常会在家 ...

  9. 华为交换机STP的配置实例

    [S-switch-A]stp enable [S-switch-B]stp enable [S-switch-C]stp enable [S-switch-D]stp enable 这样交换机根据自 ...

最新文章

  1. python根据二叉树的前序遍历和中序遍结果历重建二叉树
  2. Logback中使用TurboFilter实现日志级别等内容的动态修改
  3. 页面显示 amp html6,浅谈HTML5 amp;amp; CSS3的新交互特性
  4. protoc.exe java_protobuf java 使用 window
  5. 一款IDEA插件神器,帮你一键转换DTO、VO、BO、PO、DO
  6. access 合并多行字符串_八种方法玩转字符串合并,这篇文章全都给你讲明白!...
  7. 浅谈APP流式分页服务端设计(转)
  8. Python dict() 函数
  9. Apache james 2.3.2.1启动失败换成2.3.2版本就好
  10. 服务器端脚本和客户端脚本
  11. linux虚拟机调整分辨率
  12. Exchange 2013CU17和office 365混合部署-设置属性筛选(三)
  13. Flutter Provider框架实现简单的购物车
  14. CFS 调度器数据结构篇
  15. centos中多台主机免密登录_mac ssh 免用户名密码远程登录 linux 方法
  16. 技术年货:美团技术沙龙合辑大放送
  17. 魔兽服务器修改端口,求魔兽世界某服务器IP地址和端口
  18. eclipse 使用maven打包 包含非java文件时报错
  19. FastAPI简单示例
  20. 图数据库发展趋势概览

热门文章

  1. 如何成为一名优秀的前端工程师 (copy) - 段华建
  2. JS延迟加载百度分享代码,提高网页速度
  3. Android仿人人客户端(v5.7.1)——采用ViewGroup做父容器,实现左侧滑动菜单(三)...
  4. Android基站定位——单基站定位(二)
  5. 【CS论坛】维护网络安全的四块基石
  6. 继开源之后 红帽打算把它当成新增长点
  7. Unity脚本在层级面板中的执行顺序测试3
  8. lsof 一切皆文件
  9. Apache Spark源码走读之22 -- 浅谈mllib中线性回归的算法实现
  10. swift闭包的另一种用法