BPDU字段包含的信息:

Protocol ID   协议ID

Version    STP版本(三种)

STP(802.1D)传统生成树    值为0

RSTP(.1W)快速生成树    值为2

MSTP(.1S)多生成树    值为3

Message Type   消息类型(常见的两种)

   配置BPDU:负责建立,维护STP拓扑     

   TCN BPDU:传达拓扑变更        

Root ID    根桥ID

Cost of Path   路径开销

Bridge ID      桥ID

Port ID     端口ID

Message Age    当前消息年龄(STP每经过一台交换机,该字段+1,同步不同位置的设备根桥超时)

Max Age           最大消息年龄(超过则代表根桥故障)

Hello Time    问候时间(根桥通过不断发送STP维持自己的地位,Hello time 是发送的间隔时间)

Forward Delay   端口从listening -> learning  或 learning -> forwarding 的转态需要时间

STP 选举流程:

.选举根桥

.非根交换机选举根端口

.每个线路选举指定端口

.阻塞非根,非指定端口

选举根桥,根端口,指定端口,阻塞端口都以下面的规则来选,都是越小越好

这些信息在BPDU中都有。

比较规则:

.bridge ID:   优先级(默认32768) + MAC地址

2.Cost路径开销  根据接口带宽比例计算

3.port ID:    优先级 (默认128)+ 端口号

根桥选举:

1.选根桥:每个交换机假设自己为根,互相发送BPUD报文,然后通过比较规则竞选根桥

2.选根端口:每个交换机根据接收由根桥发送的BPDU中的开销来选举根端口(最优路径),交换机接收累加开销,转发不累加

3.选指定端口:每条链路根据比较规则来选出指定端口,每条链路必须有指定端口。

4.选阻塞端口:除了根端口,指定端口,剩下的为阻塞端口

下面是华为设备STP  的配置BPDU

从这里可以分析出,该端口的端口号是2,据开销20000可知千兆口,所以为G0/0/2

很明显该端口所属的交换机不是根桥,并且是根桥的邻居。BPDU类型是配置BPDU。

下面看下当某条链路断开时,发生了拓扑变化的BPDU报文

比如有一台交换机,一个端口为根端口,另一个为阻塞端口。如果根端口被关闭了

那么阻塞端口会发送一个拓扑变更BPDU的报文给相邻的交换机,这个BPDU类型为:TCN

而相邻的交换机会向这个阻塞端口发送一个确认拓扑变更的BPDU,这样阻塞端口就知道自己的消息被收到并将会传达。

这个BPDU类型为 TCA,同时相邻的交换机就会把继续把 TCN 向根端口方向转发,之后也会收到上层交换机发来的TCA确认接收报文

如果根桥收到了这个由阻塞端口传来的TCN,便会下发拓扑变更BPDU其类型为TC,每台收到此TC报文的交换机都会将自己的MAC缓存表刷新或减低过期时间。

然后再向下传达这个TC报文。

看下下面的拓扑图

在交换机 LSW5中 GE0/0/1原本为阻塞状态,GE0/0/0为根端口

但是有一天GE0/0/2端口down掉了

如果没有上述的拓扑变更BPDU的话,那么会发生如下情况

client6 发送 数据 给 client4

缓存表里client6的mac地址对应的却是GE0/0/2的接口(已经down掉了)

这样导致client6无法与外界通信,除非要等mac缓存表的过期时间300s也就是5min

这个时间实在太长了,解决的办法就是发送拓扑变更给根桥,根桥同意变更后向下发送

TC BPDU,所有收到此报文的交换机都把MAC缓存表刷新或减少过期时间来避免收敛速度慢

与根桥的直连链路发生故障

LSW8交换机上的G0/0/1为根端口,G0/0/2为指定端口,

G0/0/1发生故障后,G0/0/2会的端口角色会编程根端口

当是状态要从 listening->learning->forwarding需要30秒的时间

与根桥的非直连链路发生故障

在LSW8中GE 0/0/1为根端口,因为HUB集线器与根设备的线down掉了

所以LSW8 会在Max Age 的时间内不能收到根桥发送的BPDU,于是他会以

自身为根桥向周围发送 BPDU,当LSW9收到两边的BPDU则会对比,发现LSW7

才适合做根桥,于是又会通知LSW8,这样GE0/0/3就会转变成根端口。

所用的时间为50s(MAX Age +Forward Delay)

BPDU报文(传统STP)的更多相关文章

  1. BPDU报文(RSTP)

    与STP 的BPDU报文格式相同,就是在flags字段报文中间几位得到应用 主要原理:利用flages位中的Proposal与Agreement来进行协商,从而快速从 discarding 转成 fo ...

  2. 什么是STP

    简介 了解STP 配置STP 相关信息 简介 STP(Spanning Tree Protocol)是运行在交换机上的二层破环协议,环路会导致广播风暴.MAC地址表震荡等后果,STP的主要目的就是确保 ...

  3. STP详解-STP、RSTP、MSTP

    STP详解 01 冗余链路中存在的问题 如图所示LSW1和LSW2之间有两条线路相连,它们之间任何一条链路出现故障另外一条线路可以马上顶替出现故障的那条链路,这样可以很好的解决单链路故障引起的网络中断 ...

  4. 网络初级篇之STP(BPDU详解与STP故障恢复)

    一.BPDU包含的参数 通过STP的原理,我们学习了红色部分的字段(根桥ID.根路径开销.桥ID.端口ID).现在讲解一下黄色部分的字段(类型.计时器.老化时间.访问时间) 1.(BPDU Type) ...

  5. Nexus-vPC和STP BPDU

    1.为了交互vPC拓扑,STP机制被修改适应到vPC peer环境.2.对于vPC ports,只有主角色运行STP,换句话说,vPC下的STP由主角色设备控制.3.只有主角色设备在DP(指定端口)上 ...

  6. BPDU、Hybrid、MSTP

    BPDU.Hybrid.MSTP      一.BPDU         1)BPDU概述         2)BPDU类型         3)BPDU报文字段      二.Hybrid     ...

  7. STP生成树协议在二层环境中的应用

    一 STP简介 1.单词: rstp快速生成树协议 filter过滤 protection保护 2.作用: 通过阻塞特定接口来防止二层交换环路,从而做到既可以提高网络可靠性的同时又能避免环路带来的问题 ...

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

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

  9. STP生成树协议

    STP主要作用 1.消除环路:通过阻断冗余链路来消除网络中可能存在的链路 2.链路备份:当活动那个路径发生故障时,激活备份链路,及时恢复网络连通性. 根桥选举 每个交换机启动STP后,都认为自己是根桥 ...

随机推荐

  1. Python爬虫实战一之爬取QQ音乐

    一.前言   前段时间尝试爬取了网易云音乐的歌曲,这次打算爬取QQ音乐的歌曲信息.网易云音乐歌曲列表是通过iframe展示的,可以借助Selenium获取到iframe的页面元素, 而QQ音乐采用的是 ...

  2. 微信小程序:将中文语音直接转化成英文语音

    作者:瘟小驹    文章来源<微信小程序个人开发全过程> 准备工作: 准备工具:Eclipse.FileZilla.微信开发者工具.一个配置好SSL证书(https)的有域名的服务器 所需 ...

  3. javascript中数组的方法

    数组的方法 1.concat():连接两个或多个数组 2.indexOf(arg): ​ 查找数组中的arg元素,如果没有,则返回-1,如果有,则返回该元素的最小下标 ​ lastIndexOf(ar ...

  4. cf1154G 埃氏筛应用

    直接用埃氏筛也可以做,但是这题写起来有点恶臭.. 更加简单的写法是直接枚举gcd=k,然后里面再枚举一次i*k,即找到k两个最小的倍数,看起来复杂度很高,但其实也是埃氏筛的复杂度 因为每次枚举gcd, ...

  5. SQL 概述

    SQL是用于在数据库中存储,操作和检索数据的标准语言. 本教程教你如何使用SQL:MySQL,SQL Server,MS Access,Oracle,Sybase,Informix,Postgres和 ...

  6. tensorflow添加层-【老鱼学tensorflow】

    本节主要定义个添加层的函数,在深度学习中是通过创建多层神经网络来实现的,因此添加层的函数会被经常用到: import tensorflow as tf def add_layer(inputs, in ...

  7. C++运算符重载——类型转换

    类型转换函数能够实现把一个类 类型 转换成 基本数据类型(int.float.double.char等) 或者 另一个类 类型. 其定义形式如下,注意不能有返回值,不能有参数,只能返回要转换的数据类型 ...

  8. Spring Conditional注解使用小结

    今天我们来总结下Conditional注解的使用. Conditional注解 增加配置类Config package condition; import org.springframework.co ...

  9. kubernetes核心概念

    摘抄自:  https://www.cnblogs.com/zhenyuyaodidiao/p/6500720.html 1.基础架构 1.1 Master Master节点上面主要由四个模块组成:A ...

  10. Beta(2/7)

    鐵鍋燉腯鱻 项目:小鱼记账 团队成员 项目燃尽图 冲刺情况描述 站立式会议照片 各成员情况 团队成员 学号 姓名 git地址 博客地址 031602240 许郁杨 (组长) https://githu ...