STP详解

Write From YangWj

Wednesday, March 5, 2014

一、 生成树协议

STP的主要任务是阻止在第2层网络(网桥或交换机)产生网络环路,它警惕的监视着网络中所有的链路,通过关闭任何冗余的接口来确保在网络中不会产生环路。STP采用生成树算法,它首先创建一个拓扑数据库,然后搜集并破坏掉冗余的链路

二、 生成树术语

根桥:根桥是桥ID最低的网桥

非根桥:除根桥外其他的网桥都是非根桥。

BPDU(桥协议数据单元):交换机之间用来交互的信息,使用BPDU里面的参数进行对比,然后再传给某个邻居,并且放入他们从另外邻居收到的BPDU。

桥ID:桥ID是由优先级和MAC地址组合来决定的,STP利用桥ID来跟踪网络中所有的交换机。

根端口:直接连到根桥的链路所在端口,或者到根桥路径最短的端口。

指定端口:有最低开销的端口就是指定端口,指定端口被标记为转发端口。在根交换机上的每个端口都是指定端口。

非指定端口:开销比指定端口高的端口,它被置为阻塞状态。

转发端口:能够转发帧的端口。

阻塞端口:不能转发帧,但始终监听帧。

端口开销:两台交换机之间有多条链路且都不是根端口时,就根据端口开销来决定最佳路径,链路的开销取决于链路的带宽。

三、 根桥选举

桥ID用来选举根桥,,并决定根端口。桥ID为8个字节长,包括设备的优先级和MAC地址,默认所有的优先级都是32768 。若更改则要求为4096的倍数。

网络中的交换机默认都是每2秒发送一次BPDU,被发送到网桥/交换机的所有活动的端口上。桥ID最小的网桥就被选举为根桥。一般我们会手动将要作为根桥的交换机的优先级降低,这样会比较有效率。

四、 生成树端口状态

阻塞:无法转发帧,但是会监听。

侦听:侦听BPDU,确保在传送数据帧之前,网络上没有环路产生。处于此状态在没有形成mac地址表时,就准备转发数据帧。

学习:交换机端口侦听BPDU时并学习交换式网络中的所有路径。此时形成了mac地址表,但不能转发数据帧。转发延迟意味着将端口从侦听状态转换到学习状态所花费的时间,默认15秒。

转发:发送并能接收所有的数据帧,如果在学习状态结束时,端口仍然是制定端口或根端口,它就进入转发状态。

五、 实验部分

(一) 根桥的选举

实验拓扑图

连接好了之后我们可以清楚的看到S3的F0/12被阻塞了

1. 查看S1

2. 查看S2(它是根桥)

3. 查看S3

4. 查看S4

5. 修改S1的优先级,使其成为根桥

6. 此时的网络选举结果如下

7. 查看S1的信息(它已作为根桥)

8. 实验结论如下

a) 选举根桥时用优先级和mac地址作为依据。

b) 优先使用优先级作为选举依据。

c) 优先级小的被选举为根桥。

d) 优先级相同时mac值小的被选举成根桥。

(二) 探索1——优先级与阻塞端口

实验拓扑图

首先右图是左图的复制,照理说他们的阻塞端口(S4上)应该都是一样的,那么为什么在复制过去之后就成了这样的呢?

1. 查看有图中的CopyS1信息(它还是根桥,这个肯定的)

2. 查看右图CopyS2的信息

3. 查看右图CopyS3中的信息

4. 查看右图CopyS4中的信息

5. 通过将CopyS2和CopyS3的信息分析对比得到

6. 再次分析左图中S2和S3的信息

7. 修改左图S3的优先级(但要小于S1,因为它是根桥)

8. 同理修改右图CopyS2的优先级

9. 查看左图S3和右图CopyS2的信息

10. 实验结论

a) 端口阻塞的选择与上层交换机的优先级有关联

b) 优先比较的是上层优先级,优先级大的被阻塞

c) 上层优先级等同时比较mac地址,mac大的被阻塞

(三) 探索2——端口号与阻塞端口

实验拓扑图

上图中S1与S2连接,分别对应的端口为F0/1,F0/11,图中已经将根桥选举出来,并且阻塞了S2的F0/11端口。那么它又是如何进行选择的呢?

1. 为了使实验得以稳定,将S1手动指定为根桥,即修改它的优先级

2. 查看S2的信息

3. 借助探索1的结论,上层的优先级完全一样,我们先复制一份

4. 对比CopyS2和CopyS1(或者S1和S2),发现只有Prio.Nbr的值异样

5. 更换右图中S2的F0/1为F0/15,得下(无变化)

6. 更换左图中S1的F0/1为F0/15,如下(阻塞端口被改变了)

7. 实验结论可得

a) 端口阻塞的选择与根桥的接口有关系。

b) 在优先级等同的时候才会用上层交换机端口号做选择。(不一定是根桥)

c) 根桥接口号大的对应链路到下层交换机的端口会被阻塞。

STP详解的更多相关文章

  1. STP详解-STP、RSTP、MSTP

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

  2. 计算机网路中CDP,LLDP,STP的详解

    CDP,LLDP,STP知识详解 (1) CDP CDP(Cisco Discovery Protoco:Cisco发现协议)是Cisco专有的用来发现邻接点的协议 ,所有的Cisco产品都支持CDP ...

  3. TCP-IP详解学习笔记2

    TCP-IP详解学习笔记2 链路层 链路层的目的是为IP模块发送和接收IP数据报: TCP/IP支持多种不同的链路层,依赖于使用网络硬件类型:有线局域网(以太网,城域网(MAN),有线语音网络).无线 ...

  4. brctl创建虚拟网卡详解

    brctl创建虚拟网卡详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 很久之前我分享过一篇关于搭建Openvpn的笔记,在笔记的最后我分享了一个脚本,是用来创建虚拟网卡的,今天 ...

  5. ISO七层模型详解

    ISO七层模型详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在我刚刚接触运维这个行业的时候,去面试时总是会做一些面试题,笔试题就是看一个运维工程师的专业技能的掌握情况,这个很 ...

  6. 《TCP/IP 详解 卷1:协议》第 3 章:链路层

    在体系结构中,我们知道:链路层(或数据链路层)包含为共享相同介质的邻居建立连接的协议和方法,同时,设计链路层的目的是为 IP 模块发送和接受 IP 数据报,链路层可用于携带支持 IP 的辅助性协议,例 ...

  7. Docker详解

    一.Docker 简介 Docker 两个主要部件: Docker: 开源的容器虚拟化平台 Docker Hub: 用于分享.管理 Docker 容器的 Docker SaaS 平台 -- Docke ...

  8. (转)CentOS7安装KVM虚拟机详解

    原文:https://github.com/jaywcjlove/handbook/blob/master/CentOS/CentOS7%E5%AE%89%E8%A3%85KVM%E8%99%9A%E ...

  9. CentOS 6.9下KVM虚拟机网络Bridge(网桥)方式与NAT方式详解(转)

    摘要:KVM虚拟机网络配置的两种方式:NAT方式和Bridge方式.Bridge方式的配置原理和步骤.Bridge方式适用于服务器主机的虚拟化.NAT方式适用于桌面主机的虚拟化. NAT的网络结构图: ...

随机推荐

  1. jquery实现页面局部刷新

    后台管理中总是使用frameset进行分成部分进行管理,但是感觉很不好用,尤其是页面间调转还要判断window.parent,太令我费神了,于是学习使用XMLHttpRequest进行页面局部刷新.代 ...

  2. Qt Quick实现的涂鸦程序

    之前一直以为 Qt Quick 里 Canvas 才干够自绘.后来发觉不是,原来还有好几种方式都能够画图! 能够使用原始的 OpenGL(Qt Quick 使用 OpenGL 渲染).能够构造QSGN ...

  3. Windows平台下libevent库的使用

    1     引子 手头上有一个使用了4个年头的HttpClient库,自己封装的,对于集成了IE浏览器的应用程序很友好.但最近想把产品扩展到Chrome和FireFox阵营,萌发了重构HttpClie ...

  4. MySql之char与varchar

    MySql之char与varchar的差别 char是一种固定长度的类型,varchar则是一种可变长度的类型.它们的差别是:  1. char(M)类型的数据列里.每一个值都占用M个字节.假设某个长 ...

  5. POJ 3126 Prime Path (BFS)

    [题目链接]click here~~ [题目大意]给你n,m各自是素数,求由n到m变化的步骤数,规定每一步仅仅能改变个十百千一位的数,且变化得到的每个数也为素数 [解题思路]和poj 3278类似.b ...

  6. BigPipe

    BigPipe是一个重新设计的基础动态网页服务体系.大体思路是,分解网页成叫做Pagelets的小块,然后通过Web服务器和浏览器建立管道并管理他们在不同阶段的运行.这是类似于大多数现代微处理器的流水 ...

  7. 分布式缓存技术redis学习(四)——redis高级应用(集群搭建、集群分区原理、集群操作)

    本文是redis学习系列的第四篇,前面我们学习了redis的数据结构和一些高级特性,点击下面链接可回看 <详细讲解redis数据结构(内存模型)以及常用命令> <redis高级应用( ...

  8. 编译Debian内核源码

    参考: <鸟哥的Linux私房菜>第26章 http://hi.baidu.com/wg_wang/item/f9375c2f00ca75c0ee10f1db http://www.lin ...

  9. 1.5.1 Analyzers,Tokenizers,Filters概述

    字段分析器(Analyzers)即用于文档索引也用于查询.一个分析器检查字段的文本,并生成一个token流.分析器可能是一个单独的类,也可能是一系列的tokenizer和filter的组合. 分词器把 ...

  10. Linux 查看物理内存

    free -k free -m free -b man free cat /proc/meminfo