HCNA Routing&Switching之STP基础
前文我们了解了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基础的更多相关文章
- HCNA Routing&Switching之路由基础
在开始聊路由之前,我们首先要明白在网络通讯里,什么是路由?什么是路由表.路由器以及网关的相关术语:路由简单讲就是指网络数据包从源头到目标的路径,主要用来为不同网络间通讯提供数据包转发依据:路由表就是多 ...
- HCNA Routing&Switching之STP选举规则
前文我们了解了二层环路对网络带来的影响,以及STP工作流程和BPDU数据包结构和相关字段的说明,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15121317. ...
- HCNA Routing&Switching之STP端口状态、计时器以及拓扑变化
前文我们了解了STP选举规则相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15131999.html:今天我们来聊一聊STP的端口状态.计时器.端口状 ...
- HCNA Routing&Switching之OSPF度量值和基础配置命令总结
前文我们了解了OSPF的网络类型,OSPF中的DR和BDR的选举规则.作用等相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15054938.html: ...
- HCNA Routing&Switching之交换技术基础
什么是交换机?顾名思义,交换机就是用来数据包交换的:广泛用于终端接入:它的前身是hub(集线器),hub是一个古老的设备,它的作用也是用于终端接入,但hub有一个最大的缺点是它不能隔离冲突域:所谓冲突 ...
- HCNA Routing&Switching之动态路由协议OSPF基础(二)
前文我们主要了解了OSPF的区域.区域分类.路由器类型.OSPF的核心工作流程,回顾请参考:https://www.cnblogs.com/qiuhom-1874/p/15025533.html:今天 ...
- HCNA Routing&Switching之动态路由协议OSPF基础(一)
前文我们了解了基于路径矢量算法的动态路由协议RIP防环以及度量值的修改相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15012895.html:今天我 ...
- HCNA Routing&Switching之二层交换技术VLAN基础
前文我们主要聊了下交换机的工作原理和以太网接口的速率和双工相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15088183.html:今天我们主要来聊一 ...
- HCNA Routing&Switching之静态路由
前文我们聊到了路由的相关概念和路由基础方面的话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/14947897.html:今天我们聊聊静态路由相关话题: 回顾 ...
随机推荐
- Java小工具类
计时器(秒表),计算程序运行时间用的 public class Stopwatch { private static long startTime=0; private static long end ...
- 【Azure API 管理】解决调用REST API操作APIM(API Management)需要认证问题(Authentication failed, The 'Authorization' header is missing)
问题描述 在通过REST API的方式来管理APIM资源,需要调用Azure提供的management接口.而这所有的接口,都是需要有Token并且还需要正确的Token.如若不然,就会获取到如下的错 ...
- 『心善渊』Selenium3.0基础 — 17、Selenium操作浏览器窗口的滚动条
目录 1.为什么操作滚动条 2.Selenium如何操作滚动条 3.Selenium操作滚动条方法 4.操作滚动条示例 5.下拉至聚焦元素的位置 (1)实现步骤: (2)实现示例: 1.为什么操作滚动 ...
- POJ 2826 An Easy Problem? 判断线段相交
POJ 2826 An Easy Problem?! -- 思路来自kuangbin博客 下面三种情况比较特殊,特别是第三种 G++怎么交都是WA,同样的代码C++A了 #include <io ...
- HDU 4445 Crazy Tank 高中物理知识忘得差不多了
题意不难理解,仔细看题吧,就不说题意了 #include <iostream> #include <cstdio> #include <cstring> #incl ...
- Nginx:Nginx配置文件详解
Nginx是一款面向性能设计的HTTP服务器,相较于Apache.lighttpd具有占有内存少,稳定性高等优势. 如下是Nginx的配置详解: ######Nginx配置文件nginx.conf中文 ...
- bash的RANDOM变量生成的是真正的随机数吗
static void seedrand () { struct timeval tv; gettimeofday (&tv, NULL); sbrand (tv.tv_sec ^ tv.tv ...
- buu signin
一.拖入ida,来静态分析F5大法好 要注意的点: 1._gmz_init_set_str() 这个函数,也是看师傅的wp,学到的,以后还是得多google, 本质上是这个函数: int mpz_in ...
- Exception 和Error异常大部分人都犯过的错。
先看再点赞,给自己一点思考的时间,如果对自己有帮助,微信搜索[程序职场]关注这个执着的职场程序员. 我有什么:职场规划指导,技能提升方法,讲不完的职场故事,个人成长经验. 1,简介 Exception ...
- libzip开发笔记(二):libzip库介绍、ubuntu平台编译和工程模板
前言 Qt使用一些压缩解压功能,选择libzip库,libzip库比较原始,也是很多其他库的基础支撑库,编译过了windows版本,有需求编译一个ubuntu版本的,交叉编译需求的同样可参照本文章 ...