生成树协议(STP)基本知识及实验(使用eNSP)
1、基本知识--摘至《网络之路--交换专题》
(1)生成树的作用:在链路层消除环路上可能出现的广播风暴。
(2)生成树的工作由三部分组成:选举过程、拓扑计算、端口行为确定。
选举过程:在二层网络中选举一个网桥作为根桥,用于指挥整网设备协同工作。根桥只是负责统一计算的规则。
根桥统一网络中所有网桥的行为准则的原理:通过在某个恰当位置阻塞端口来阻止环路的发生。从一台网桥的角度来说,它通过这样的法则进行判断,如果到达网络中的某一网桥只有一条路径,那么必定不存在环路;如果到达某一网桥的路径有两条或者多条,那么这两台网桥之间存在环路,只能保持一条通路。
(3)根桥的选举方式
根桥是通过网络中所有网桥间相互比较产生的。根桥只能由网络中桥ID最小者担当。一开始时把自己当作根桥,根桥ID就是自己的桥ID,然后通过BPDU和自己的邻居交换拓扑信息,如果邻居的根桥ID小于自己的桥ID,则把邻居当作自己的根桥,然后向其他邻居通告这个新的根桥信息,直到网络中所有网桥的根桥ID都一样时,根桥就被选举了出来。
桥ID有8个字节,由两部分组成,分别是2字节的桥优先级字段和6字节的桥MAC字段。桥优先级字段可手工设置,默认为0x8000;桥MAC即网桥的物理MAC。
(4)使网络中的网桥和根桥保持统一的方式
通过一个独特的消息机制实现,当根桥被选举出来后,根桥会周期性的向所有邻居发送BPDU报文,这个周期被称为Hello Time,默认设置为2s。邻居收到根桥发送来的BPDU时,会更新自己的状态和定时器,然后转发出去。在生成树协议中(STP)只有根桥有主动发送BPDU的权力。快速生成树协议(RSTP)中所有网桥都会按照Hello Time的时间间隔主动从指定端口发送BPDU。
生成树协议中的BPDU报文有两种,一个被称为配置BPDU(Configuration BPDU),一种被称为拓扑变化通知BPDU(Topology Change Notification BPDU 或叫 TCN BPDU)
配置BPDU报文格式如下:


端口ID占2个字节,和桥ID类似分为两个部分,前8bits为优先级,默认值为0x80,可手工修改,后8bits为端口号,由设备指定,保证每个端口都不一样。
TCN BPDU报文只有前三个字段,其中前两个字段和配置BPDU一样,BPDU Type字段的值为0x80。
Root Path Cost(根桥路径开销)代表了这个网桥到根桥的距离,对根桥而言,这个值被设置为0。当网桥收到一个BPDU,其中的根桥ID比自己当前的根桥ID小时,这个网桥会将BPDU中的Root Paath Cost加上接收到这个BPDU的端口的Cost值作为自己的Root Path Cost。
Message Age是用来衡量当前网桥所收到的BPDU在网络内传播时间的一个参数,根桥在构造发送BPDU的时候,会将这个字段设置为0,但下游网桥在传递从根桥发来的BPDU时,会在BPDU报文的Message Age字段中把这一跳转发过程中可能引入的时延上限加到里面。
Max Age是一个预先设定的值,这个值可以看作是一个门限,用来配合Message Age定时器。
Message Age和Max Age是生成树协议用于判断拓扑是否变化的重要指标。网桥在根端口上设置了一个定时器,如果通往根桥的路径完好,根端口会定时收到BPDU,并更新这个定时器。如果一直不能收到BPDU,每过1s定时器就自动加1,但这个定时器超过某一门限(Max Age)之后,网桥会认为原根端口通往根桥的路径已经出现了故障,拓扑发生了变化。
(5)连接到一个LAN的端口的优先级比较
每个网桥都各自存储着一套信息,包括当前的根桥ID、Root Path Cost和自己的桥ID,每个端口还存储着自己的端口ID。
当端口收到BPDU后,先判断根桥ID,如果相同继续比较根桥路径开销,再相同则比较桥ID,如果再相同,则比较端口ID。比较之后,比较失败的端口停止向LAN中转发BPDU。这样比较之后,最终获胜的端口成为这个LAN的指定端口。
在同一台网桥中,网桥会从在优先级比较中失败的端口中选择一个开销最小的端口作为自己的根端口,作为网桥通往根桥的唯一出口,其他端口成为Alternate端口进入Blocking状态,既不接收或转发数据报文,也不转发BPDU。根端口的选择方式是依次比较Root Path Cost(要先加上端口自身的cost)、桥ID和端口ID、本身的端口ID。
(6)生成树协议中端口的五种状态
分别为:Disable、Blocking、Listening、Learning、Forwarding。当端口没有连接上或被shutdown时,处于Disable状态,一旦up起来后就进入Blocking状态,如果没有收到优先级更高的BPDU或本身被网桥选举为根端口,会进入Listening状态,然后等待一个Forward Delay的时间,进入Learning状态,再等待一个Forward Delay的时间,如果端口没有因为新的选择过程而成为Alternate的话,进入Forwarding状态。

Blocking状态下的端口不会转发任何报文,或者学习MAC地址;端口在Listening状态时即不转发数据报文,也不会根据监听到的数据报文学习MAC地址; 在Learning状态时不转发数据报文,但会学习MAC地址;在Forwarding状态时即学习MAC,也转发数据报文。
| 端口状态 | 目的 | 说明 |
| Forwarding | 端口既转发用户流量也处理BPDU报文 | 只有根端口或指定端口才能进入Forwarding状态 |
| Learning | 设备会根据收到的用户流量构建MAC地址表,但不转发用户流量 | 过渡状态 |
| Listening | 确认端口角色,将选举根桥、根端口和指定端口 | 指定端口 |
| Blocking | 端口仅仅接收并处理BPDU,不转发用户流量 | 阻塞端口的最终状态 |
2、实验
参考链接:https://blog.csdn.net/flyfish5/article/details/50224537
实验拓扑结构如下:

下面进行简单的配置说明:
1.将LSW1、LSW2、LSW3、LSW4都设置为stp模式(默认为MSTP)
[Huawei]stp mode stp

2.使用display stp brief 命令查看每个网桥的端口模式
LSW1:

LSW2:

LSW3:

LSW4:

对以上几种接口角色进行一下简单的说明:有4种接口角色:
Root Port(ROOT):根端口,就是去往根桥路径开销最小的端口,该端口可以正常转发流量。
Designated Port(DESI):指定端口,就是负责转发BPDU报文的端口,根桥上的端口都是指定端口,该端口可以正常转发流量。
Alternate Port(ALTE):阻塞端口,就是禁止转发流量的端口。
Backup Port:暂时不清楚。
可以看出上面的拓扑中把LSW3当作了根桥。LWS1的根端口为Eth 0/0/3、LSW2的根端口为Eth 0/0/2、LSW4的根端口为Eth 0/0/2。
在LSW3的Eth 0/0/3端口抓取STP报文的格式如下:

生成树协议(STP)基本知识及实验(使用eNSP)的更多相关文章
- 第2层交换和生成树协议(STP)__第2层的3种交换功能
地址学习(Address Learning):第2层交换机和网桥能够记住在一个接口上所收到的每个帧的源设备硬件地址,而且它们会将这个硬件地址信息输入到被称为转发/过滤表的MAC数据库中. 转发/过滤决 ...
- 生成树协议stp
生成树协议应用的原因是从逻辑上阻塞交换机在物理上形成的环路.大家都知道交换机工作在二层,也就是数据链路层,根据mac地址识别主机,对三层网络无法识别,因此交换机不能隔离广播.但是在日常的工作中,为了达 ...
- 第2层交换和生成树协议(STP)__MAC地址表
1.MAC(Media Access Control, 介质访问控制)地址是识别LAN节点的标识.网卡的物理地址通常是由网卡生产厂家烧入网卡的EPROM(一种闪存芯片,通常可以通过程序擦写),它存储的 ...
- 第2层交换和生成树协议(STP)__散知识点
1.交换式服务 网桥是基于软件的,而交换机使用专用集成电路(ASIC)来创建并维护其过滤表.2层交换机和网桥转发数据的速度比路由器快一些,因为它们不查看网络层报头的信息,不对数据包做任何修改.相反,在 ...
- CISCO交换机STP实验(生成树协议)
目录 一.前言:生成树协议(STP) 二.CISCO交换机STP命令汇总 三.运用STP搭建简单拓扑 四.实战:STP综合实验 五.结语 一.前言:生成树协议(STP) 计算机网络中,我们为了减少网络 ...
- STP 生成树协议 RSTP 快速生成树
STP(Spanning Tree Protocol)是生成树协议的英文缩写 该协议可应用于在网络中建立树形拓扑,消除网络中的环路,并且可以通过一定的方法实现路径冗余,但不是一定可以实现路径冗余.生成 ...
- STP基本概念及实验
相关命令(华为交换机): stp enable(在交换机开启stp:stp使能) display stp 查看stp状态 stp mode stp/rstp/mstp 启用stp/rstp/mstp ...
- s4-7 生成树协议
Spanning Tree :为了可靠,采用冗余结构:但是透明网桥 会产生无休止循环的问题 冗余交换拓扑可能带来的问题 广播风暴 多帧传送 MAC地址库不稳定 生成树协议 STP:sp ...
- 生成树协议(STP)的精髓知识
STP生成树协议 1.STP介绍 2.STP生成树算法 1.STP - Spanning tree protocol (生成树协议)是逻辑上断开环路,防止广播风暴的产生.当线路故障,阻塞接口 ...
- Huawei-R&S-网络工程师实验笔记20190607-STP生成树协议(基本配置、桥优先级、根桥选举、根端口、路径开销、边缘端口)
>Huawei-R&S-网络工程师实验笔记20190607-STP生成树协议(基本配置.桥优先级.根桥选举.根端口.路径开销.边缘端口) >>实验开始,先上拓扑图参考: &l ...
随机推荐
- leetcode - 子数组最大平均值
给定 n 个整数,找出平均数最大且长度为 k 的连续子数组,并输出该最大平均数. 示例: 输入:[1,12,-5,-6,50,3], k = 4 输出:12.75 解释:最大平均数 (12-5-6+5 ...
- python性能测试,请求QPS测试
QPS = (1000ms/平均响应时间ms)*服务并行数量 #!/user/bin/env python #coding=utf-8 import requests import datetime ...
- Linux下安装配置OpenResty服务器
OpenResty是一款基于Nginx和Lua的高性能Web平台,在nginx基础之上集成了大量的lua库,第三方模块等,以便搭建各种处理高并发.可扩展的Web应用.服务或网关,并且OpenResty ...
- pip(国内常用镜像源)安装地址
国内常用镜像源 清华大学:https://pypi.tuna.tsinghua.edu.cn/simple/ 阿里云:http://mirrors.aliyun.com/pypi/simple/ 中国 ...
- Django框架——图书管理系统、聚合查询、分组查询、F与Q查询
图书管理系统 1.表设计 先考虑普通字段再考虑外键字段 数据库迁移.测试数据录入 2.首页展示 3.书籍展示 4.书籍添加 5.书籍编辑 后端如何获取用户想要编辑的数据.前端如何展示出待编辑的数据 6 ...
- Oracle 与当前日期有关的内容
Oracle 与当前日期有关的内容 求当前日期是周几: 大概就是下面这种方法 to_char(date,'D') Select to_char(date,'ss') from dual取当前时间秒部分 ...
- PolarDB-X 如何做分布式数据库热点分析
简介: PolarDB-X 是一款计算存储分离的云原生分布式数据库,在PolarDB-X 2.0的AUTO模式下,数据库会按照表的主键自动Hash分区,将数据均匀的分布到各个数据节点中,最理想的情况是 ...
- 用手机写代码:基于 Serverless 的在线编程能力探索
简介:Serverless 架构的按量付费模式,可以在保证在线编程功能性能的前提下,进一步降低成本.本文将会以阿里云函数计算为例,通过 Serverless 架构实现一个 Python 语言的在线编 ...
- 为什么DevOps的必然趋势是BizDevOps
简介: 从精益思想出发,我们可以看到DevOps的必然发展方向,那就是向业务侧延伸.业务是产品开发和运维的源头,完整的价值流必须从源头开始.这不是预测,而是正在发生的事. 编者按:本文源自阿里云云效团 ...
- dotnet core 不自动从 https 到 http 的 302 重定向
本文记录一个已知问题,或者准确来说是设计如此的行为,在 dotnet core 下,无论是 dotnet core 3.1 还是 dotnet 5 或 dotnet 6 或 dotnet 7 等,如果 ...