HCIA数据通信——交换机(STP生成树协议)

引言

生成树协议是交换机重要的一大协议,它是用来防环路的,不过现在大型企业已经不使用STP了,采用别的技术防止环路。因为STP所占用带宽太大,在大型企业里面使用不是很好。但大型企业终究是少数,一般的企业和规模不大的网络中,STP还是最好的。

二层防环协议和生成树原理

产生背景:

    我们在端到端的通信过程中一般采用单连的模式。例如:PC1-SW1-SW2-PC2.但是这个方式可能会出现问题!因为交换机没有识别网络的能力,这个缺陷导致它在收到数据帧时,会认为这个数据帧是和他相连的设备发来的。上述PC1发送数据给PC2时,当SW2收到了来自SW1的PC1的数据帧,SW2会认为PC1和SW2相连,但其实不是。当SW1和SW2之间出现了故障,网络就会不通。因此面对这个问题我们会采用冗余链路

    对于冗余链路连接的方法是PC1-SW1====SW2-PC1。用双线进行连接,一根发送一根接收,出现了问题还能保证一根可以用。但这个方式会出现问题!上述链接会产生广播风暴和路由环路(MAC地址漂移)。Switch1广播发送时会把除了接收端以外的接口全部发一份,然而SW2也会这样做,广播流量在SW1和SW2之间来会传输,占用了大量带宽并在消耗设备的寿命。

    因此不仅要解决单连的故障而导致的无法使用的问题,还要解决双连导致的广播风暴和路由环路。生成树协议的诞生解决了这个问题!

生成树协议(Spanning-Tree Protocol)

生成树全名为生成树形结构算法

解决冗余链路

    生成树协议判断交换机哪个路径最优,哪个次优。生成树通过监视网络,如果接口正常的话不会理会,但是接口出现了问题,会立刻进行调整——开启阻塞路径/新添入的接口重新判断路径的好坏。这样冗余链路就可以利用了。

    生成树有三个版本:IEEE的802.1D STP版本,802.1W RSTP版本,802.1S MSTP版本。其中虽然STP为所有版本的基类,但是MSTP用的最多。因为效率高,无接触性问题

注:就像引言里面提到的,虽然生成树很好用,但是也会带来很多问题,其实可以用其它协议,为了防止环路,选择很多,能不用就不用生成树。

解决路由环路

部署了生成树以后,交换机之间会进行生成树报文交互并进行无环拓扑计算,最终把网络中的某个接口堵塞。

STP

桥ID

    上述提到了生成树的三个版本,而其中STP是生成树的基类版本。在STP中需要引入桥ID的概念!

    桥ID就是标识交换机的标识符。共8字节,前两个字节为优先级,后面为交换机的背板。背板中烧录了很多MAC,会自动选取最小的MAC为桥ID。一个域内只有一台最小桥ID的交换机可以成为根桥。

因为前4bits为优先级,所以交换机的优先级要以4096开始。如:0-4096-8192。。。。

BPDU报文(网桥协议数据单元)

    交换机通过BPDU报文让其他交换机知道自己是根桥。它是基于桥ID的协议。交换机采用生成树就会采用BPDU,交换机把BPDU报文给邻居交换机,其中里面包含了其桥ID。

    当一个交换机发现自己发现无法做根桥的时候会停止发送BPDU。真正的根桥会每2s发送一次,这样域内会选出并维持一个最小的根桥。

 上图为BPDU报文格式。报文很多,从此也能看出来STP的启动所占带宽较大 

Cost(度量值)

    STP选择最优路径时,比较Cost值(度量值大小)每个接口采用生成树就会产生Cost值。但一个接口的度量值并不能判断出去往根桥的最近路径。那么正确的计算方式就是采用RPC(根路径开销)的计算方式(它是BPDU中的一个字段)。

RPC(根路径开销)

一个接口收到根桥的RPC是从根桥到该接口所有入方向的累加值。也就是BPDU所经过的所有入接口的Cost值的和。

RPC它会记录BPDU报文到达下个接口的总RPC根桥始发的RPC始终为0

上图为cost值在不同标准的计算规则

根桥故障恢复过程

    当根桥发生故障,停止发送BPDU报文。其它设备通过计时器(Max Age)开始计时(20s),从而导致已发送到的BPDU失效,因为接收不到新的BPDU报文,从而得知上游发生故障。随后,非根桥们会互相发送配置的BPDU,重新选举根桥。重新选举之后,设备恢复转发状态,新的BPDU开始重新运作。这段时间过程大概只有1min左右就可恢复到正常状态。

Port ID(接口ID):

运行交换机用接口ID来标识每个接口,接口ID主要用于存储特定场景下选举指定接口。Port ID由两部分组成。前4bits为接口优先级。后12bits为接口编号。

STP接口状态

(1)禁用(Disabled):接口不能转发BPDU,也不能收发业务数据帧,例:接口为down。

(2)阻塞(Blocking):接口被STP阻塞,该状态的时候不能发送BPDU,但是会持续侦听BPDU,而且不能收发数据帧,也不会进行mac学习。

(3)侦听(Listening):接口侦听时候,表明STP初步认定该接口为根接口/指定接口,但接口依然处于STP计算之中,此时接口可以收发BPDU,但是不能收发数据帧,也不会进行mac地址学习。

(4)学习(Learning):接口学习的时候,会侦听数据帧,并且收到业务数据帧后进行mac地址学习。

(5)转发(Forwarding):接口转发时,处于该状态接口才可正常收发业务数据帧,也会进行BPDU处理,接口的角色需要是根接口或指定接口才能转发

RSTP接口状态

RSTP中,接口状态被缩减为了三个。Forwarding和Listening被保留了下来,用Discarding代替了其他的,特点是不能转发用户数据帧,也不能学习MAC地址

STP与RSTP的端口角色

STP

(1)根端口(root port):距离根网桥最近的交换机端口。根端口是以每交换机为基础进行选择的。

(2)指定端口(deignated port):依然被允许在网络中转发流量的所有非根端口。

RSTP:

RSTP的端口角色有4种:根端口、指定端口、Alternate端口、Backup端口

(1)根端口和指定端口与STP协议中的无区别;

(2)Alternate端口:学习到其他网桥发送的BPDU报文而阻塞的端口,该端口提供了从指定桥到根桥的另一条可切换路径,作为根端口的备份端口

(3)Backup端口:由于学习到自身放的配置BPDU报文而阻塞的端口,Backup端口提供了另一条从根桥到相应网段的备份路径;作为指定端口的备份。

还有一种边缘端口,用来和用户设备连接的端口

STP实验 

首先,我们拓扑结构如下:

前期配置

我们首先要把每个交换机的互连接口设置为Trunk模式,因为STP是承载于Trunk上运作的。

(以SW1为例)

 其次,我们在每个交换机上开启STP协议。(以SW1为例)

STP的主备根桥设置

现在开始我们的STP的功能配置,首先我们让SW2作为根桥,SW3为备份根桥。

SW2的stp情况:

SW3的stp情况:

STP主备端口修改

我们可以用如下命令查看端口的所处状态。

SW1:

 SW2:

SW3:

    我们可以看到上图中含有根端口(ROOT)、指定端口(DESI)和非指定端口(ALTE)。现在,我们要让SW3的接口int g 0/0/3成为的根端口,我们可以通过调大int g0/0/2的Cost值或者调小int g0/0/3的值;我们也可以通过修改优先级,直接对int g0/0/3进行修改。

Cost值修改:

优先级(Priority)修改:

 注:在修改优先级时,STP的接口优先级必须以8的倍数进行设置。这和前面的桥ID有异曲同工之妙。

后续

重点是区分端口优先级的概念和根桥优先级的概念,很容易搞混。STP的命令不难,而且现在很少用STP作为冗余链路备份和防止广播风暴的设置了。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

咕噜跳

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值