前文我们了解了VLAN动态注册协议GVRP相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15113770.html;今天我们来讨论下二层环路和STP相关话题;

  我们知道网络设备之间产生环路是很正常的,但为了通信质量,通常我们也要避免环路;对于三层网络,产生环路并不是很严重,因为我们有动态的路由协议可以防止环路,当然即便管理员手动配置静态路由形成环路,但最终数据包会停下来(因为三层ip协议有TTL字段可以让数据包最终停下来);对于二层网络来说,一旦产生环路,那将是致命的(其原因是二层环路一旦产生,数据包在环路里停不下来),严重的话可以瞬间将整个二层网络的链路带宽跑满,从而导致整个网络不可用;所以二层环路我们无论如何都要避免;为了提高网络可靠性,通常情况交换网络中会使用冗余链路,然而冗余链路最最直接的后果就是给交换网络带来环路的风险,并导致广播风暴以及MAC地址表不稳定等问题,进而影响到用户的通信质量。为了解决二层环路所带来的风险,stp协议诞生了;stp主要作用就是通过阻断冗余链路来消除网络中可能存在的环路,同时当活动链路发生故障时,激活冗余链路及时恢复网络连通性,从而实现网络的可靠性;

  二层网络设计需求和问题

  提示:上图是一个小型网络的拓扑图,通常为了网络的可靠性,汇聚层,核心层都会放置两个及两个以上的交换机,并且两两相俩(主要作用就是做高可用检测对方是否存活);接入层上联汇聚层会有至少两条链路,这样一来接入层的交换机就和汇聚层的交换机可能形成环路;比如上图红色和蓝色链路就是环路;

  二层环路问题--->广播风暴

  实验:如下拓扑图,我们用pc发送一个arp广播,看看在二层环路里会发生什么?

  提示:默认情况华为的交换机是开启了STP,为了演示出效果,我们需要先把各个交换机的STP关掉;

  关掉各交换机的STP

  命令:stp disable

  提示:S2,S3,都是一样的操作;

  用pc ping同网段任意地址然后抓arp的包,看看会发生什么?

  提示:可以看到我们用pc发了5个icmp包,而我们在链路上瞬间抓到了几千个arp包;这就是因为二层有环路产生,导致arp广播一直在环路里打圈停不下来;要想让里面的数据包停下来,要么在开启任意一台设备的STP,或者断掉任意一条链路,破坏环路;

  在S2上开启STP

  提示:可以看到当我们在S2上开启STP以后,对应数据包就停了下来;这里需要注意这里开启STP是阻断了ARP广播数据一直在环路打转,是因为初始化STP时会将对应端口阻塞掉;但是并不意味着环路就此被破坏了;一旦当STP稳定以后,还有数据包进来,数据包还会在环路里打转;

  验证:现在用pc再次发送arp广播,看看抓包是否还会抓到很多?

  提示:可以看到现在pc发送一个arp广播,在链路上还是会抓到很多arp广播包,这说明开启S2单台设备的STP并不能破坏环路;

  开启S1的STP,看看对应环路是否能被破坏呢?

  现在再次用pc发送arp广播,看看对应是否还会抓到很多arp包呢?

  提示:可以看到现在用pc发送arp广播,在链路上还是会有很多arp包,说明环路还是存在,并没有被破坏;

  开启S3的STP,看看环路是否被破坏?

  用pc发送arp广播,看看是否还会抓到很多arp广播包呢?

  提示:可以看到当s3开启STP以后,再次使用pc发送arp广播,对应抓包就没有像之前那样几百个arp包,说明环路被破坏了;从上述的实验可以看到,一旦二层网络里发生环路,数据包是停不了的;我们只有认为手动破除环路,或者通过开启STP破除环路;通常情况下所有设备都开启STP才能真正有效的破环环路,所以二层网络里如果有不支持STP的交换机,我们在接线时一点要注意不要产生环路;

  二层环路问题--->MAC地址表震荡

  还是上述实验拓扑,我们把三个交换机的STP都关掉,然后用pc发送arp广播,然后查看S1或S2或S3的mac地址表,看看对应mac地址表会有什么变化?

  用PC发送arp广播

  查看S1的mac地址表

  提示:可以看到同一个MAC在S1上一会在1口学习到,一会在2口学习到;这是因为pc发送的arp广播会从1口和2口泛洪出去,在S2和S3收到arp广播以后,又会从对应的其他接口泛洪出去,这样一来,从s1的1口泛洪出去的arp广播,最终会从s1的2口收到;2口泛洪出去的arp广播又会从1口收到,所以对于s1来说pc的mac就会一会从1口学习到,一会又从2口学习到;这样一来s1的mac地址表就很不稳定;对于s2和s3也是同样的现象;通过上述的实验,我们可以看到二层环路一旦产生,就会有广播风暴和mac地址震荡;

  STP:Spanning Tree Protocol,生成树协议;主要通过构造“一棵树”来消除交换网络中的环路;同时当活动链路发生故障,激活备份链路,从而实现网络的可靠性;

  BPDU:Bridge Protocol Data Unit -桥协议数据单元,STP工作协议;

  提示:STP通过各交换机发送的BPDU来完成根桥,根端口,指定端口和阻塞端口的选举,从而实现破除环路;

  BPDU数据包结构及各字段解释

  提示:STP有三个模式,默认华为交换机使用的是mstp;我们可以通过stp mode stp更改stp模式为原生stp模式;对于STP来说,其bpdu结构如上;相信很多字段都能看懂;这里说一下bpdu的类型这个字段(BPDU Type)和BPDU flag字段;

  在STP的BPDU中,BPDU的类型主要有两种,一种是configuration,一种是TCN(Topology Change Notification);configuration类型的BPDU主要用来选举根交换机以及确定每个交换机端口的角色和状态,在初始化STP过程中,每个交换机都会主动发送这种类型的BPDU;当网络拓扑稳定以后,只有根桥会主动发送这种类型的的BPDU,其他交换机在收到上游传来的配置BPDU后,才会发送自己的配置BPDU。发送周期为Hello Time,默认是2秒发送一次;老化时间为Max Age,默认是20秒;TCN类型的BPDU,主要作用是当网络拓扑发生变化时,下游交换机向上游交换机发送拓扑变化通知;默认情况,在configuration类型的BPDU包里,BPDU flag字段中,TCA和TC都是0,只有TCN以后,对应标志为才会置为1;

  提示:BID主要用来表示二层网络中的交换机,主要由两部分组成,优先级和mac地址;优先级取值范围为0-65535,步长4096,数字越低越优先;默认优先级为32768;

  提示:PID主要用来标识端口的,也是由优先级和对应端口的编号组成(这个编号和端口名称没有直接的关系,默认都是一个顺序编号),优先级取值范围为0-255,步长为16,数字越小越优先,默认值为128;

  提示:路径开销用来描述链路优劣,数字越小表示链路开销越低,即链路就越优;这个路径开销和链路带宽有直接的关系;上述是98年标准和更早的标准;不同的链路对应开销各不相同;

  提示:根路径开销是指到达根桥的最短路径的开销;数字越小,表示链路越优;rpc的计算方式是沿途各链路pc总和;上图中假设sw1为根桥,那么sw2到达根桥的开销就需要看对应链路是多大带宽了,如果是100M根据98年标准,则开销为19;那么sw3到达sw1的开销就为sw2到达sw1的路径开销+sw3到达sw3的路径开销;sw3到达sw2的链路带宽为10M,所以对应的开销为19,所以sw3到达sw1的开销就为19+100=119;

  附图:各速率链路开销标准

  提示:华为默认使用802.1t标准;

HCNA Routing&Switching之STP基础的更多相关文章

  1. HCNA Routing&Switching之路由基础

    在开始聊路由之前,我们首先要明白在网络通讯里,什么是路由?什么是路由表.路由器以及网关的相关术语:路由简单讲就是指网络数据包从源头到目标的路径,主要用来为不同网络间通讯提供数据包转发依据:路由表就是多 ...

  2. HCNA Routing&Switching之STP选举规则

    前文我们了解了二层环路对网络带来的影响,以及STP工作流程和BPDU数据包结构和相关字段的说明,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15121317. ...

  3. HCNA Routing&Switching之STP端口状态、计时器以及拓扑变化

    前文我们了解了STP选举规则相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15131999.html:今天我们来聊一聊STP的端口状态.计时器.端口状 ...

  4. HCNA Routing&Switching之OSPF度量值和基础配置命令总结

    前文我们了解了OSPF的网络类型,OSPF中的DR和BDR的选举规则.作用等相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15054938.html: ...

  5. HCNA Routing&Switching之交换技术基础

    什么是交换机?顾名思义,交换机就是用来数据包交换的:广泛用于终端接入:它的前身是hub(集线器),hub是一个古老的设备,它的作用也是用于终端接入,但hub有一个最大的缺点是它不能隔离冲突域:所谓冲突 ...

  6. HCNA Routing&Switching之动态路由协议OSPF基础(二)

    前文我们主要了解了OSPF的区域.区域分类.路由器类型.OSPF的核心工作流程,回顾请参考:https://www.cnblogs.com/qiuhom-1874/p/15025533.html:今天 ...

  7. HCNA Routing&Switching之动态路由协议OSPF基础(一)

    前文我们了解了基于路径矢量算法的动态路由协议RIP防环以及度量值的修改相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15012895.html:今天我 ...

  8. HCNA Routing&Switching之二层交换技术VLAN基础

    前文我们主要聊了下交换机的工作原理和以太网接口的速率和双工相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15088183.html:今天我们主要来聊一 ...

  9. HCNA Routing&Switching之静态路由

    前文我们聊到了路由的相关概念和路由基础方面的话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/14947897.html:今天我们聊聊静态路由相关话题: 回顾 ...

随机推荐

  1. SpringCloud入门及创建分布式项目

    1.了解微服务 1.1 什么是微服务 微服务是一种架构风格 一个应用拆分为一组小型服务 每个服务运行在自己的进程内,也就是可独立部署和升级 服务之间使用轻量级HTTP交互 服务围绕业务功能拆分 可以由 ...

  2. ES6学习笔记之字符串新增方法

    1.字符串的子串识别 传统上,Javascript 只有indexof 方法,用来确定一个字符串是否包含在另一个字符串中.如: //indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的 ...

  3. hive学习笔记之四:分区表

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  4. Excel选择区域一次性替换小于200的数值

    1.ctrl+F,点击"选项",在出来的扩展框选择"格式"后小三角,选择"从单元格选择格式": 2.选择要进行替换小于200的区域: . 3 ...

  5. ABP Framework V4.4 RC 新增功能介绍

    目录 新增功能概述 启动模板删除 EntityFrameworkCore.DbMigrations 项目 CMS-Kit 动态菜单管理 Razor引擎对文本模板的支持 DbContext/Entiti ...

  6. ansible 常用命令

    ansible 命令集 #Ansibe AD-Hoc 临时命令执行工具,常用于临时命令的执行 /usr/bin/ansible #Ansible 模块功能查看工具 /usr/bin/ansible-d ...

  7. webrtc之TURE、STUN、摄像头打开实战

    前言: 大家周末好,今天给 webrtc之TURE.STUN.摄像头打开实战 大家分享的是webrtc第一篇文章,在之前的音视频文章里面没有分享过关于webrtc的内容:在上个周末分享了一篇关于播放器 ...

  8. 用swoole实现异步任务队列

    应用场景如下: 假如要发100封邮件,for循环100遍,这种方法显然是不可取的. 在一些比较繁杂的业务里,我们很可能有超过1万的邮件要群发.那我们怎么处理这个延迟的问题? 答案就是用异步.把&quo ...

  9. python mqtt通信(windows)

      一.消息队列服务器 这里我用到activemq,可到官网下载 http://activemq.apache.org/ 1. 若遇到点击apache-activemq-5.16.2\bin\acti ...

  10. Linux | 浏览(切换)目录命令

    例出目录和文件 --> ls ls 命令是最常用的 Linux 命令之一,ls 是 list 的缩写,表示:列出 在 Linux 中 ls 命令用于列出文件和目录 一些常用的参数 ls -a # ...