STP介绍
    STP的主要任务是阻止在第二层网络(网桥或交换机)上产生网络环路(通过将特定的端口选为 Blocking state),来实现无环的拓扑 ;
    STP交换机之间使用Trunk连接 ;
    Cisco Catalyst交换机默认开启pvst;所有接口默认启用STP.
    STP采用生成树算法(STA),它首先创建一个拓扑数据库,然后搜索并破坏掉冗余的链路.

  STP协议:
    1.CST(公有协议) 不支持单Vlan(stp进程) ;
    2.PVST(思科私有协议) 支持64个Vlan实例 ;
    3.PVST+(思科增强的私有协议) 支持128个实例,支持扩展系统ID.  
  

  STP的操作

  STP将一个环形网络生成无环拓扑的步骤:
    1.每个广播域选择一个根桥(Root Bridge)
    2.每个非根桥上选择一个根端口(Root Ports)
    3.每个网段(链路)选择一个指定端口(Designated Ports)
    4.阻塞非指定端口(NDP)

  *网桥是交换机的前身,由于STP是在网桥基础上开发的,因此现在在交换机中仍然沿用网桥这一术语

  

  1,每个STP域(广播域)内选举一台Root Bridge(根交换机/根桥)

  最初广播域中的每台交换机都会认为自己是Root Bridge,并向其他所有交换机发送BPDU(每个BPDU都包含一个BID),所有参与 STP 的交换机互相交换 BPDU 帧,以确定网络中哪台交换机的BID最小。选出Root Bridge之后,只有Root Bridge可以周期性地发送BPDU,所有NRoot Bridge(非根桥)停止发送BPDU. BPDU组播地址:01-80-C2-00-00-00

  在根桥上,不会有被阻塞的接口

  选择根网桥依据:
    BID(桥ID)最小的交换机为根桥(Root Bridge);

  *BID:(网桥ID号)
    BID是由 桥优先级+网桥mac地址 的组合来决定的;
    优先级出厂时都是一样的,都是32768,范围0~65535;但是mac地址必然不同
    先比较优先级,优先级小的直接选为根桥
    如果优先级相同,则选取MAC地址最小的为根桥
    用 show spanning-tree 可以查看优先级
  

  启用系统扩展ID:

(config)#spanning-tree extend system-id//低端交换机默认开启;高端交换机需要手动开启  //启用扩展系统ID,以支持1024 个MAC 地址

  校验是否启用系统扩展ID:

Switch# show spanning-tree summary | include ExtendedExtended system ID is enabled.

  手工配置vlan10 桥优先级

(config)#spanning-tree vlan 10 priority 8192 //只能改为4096的整数倍

  手动设置为Vlan10的主根桥

(config)#spanning-tree vlan 10 root primary

  手动设置为Vlan10的次根桥

(config)#spanning-tree vlan 10 root secondary

  *改变默认优先级是选举根桥的最佳方式
  *将优先级设置为0意味着该交换机将始终是根桥
  *每个VLAN都可以有不同的根桥,通过改变交换机vlan的默认优先级,以迫使交换机成为STP网络中的根桥
  *对于网络中的每个VLAN,如果你想将某台交换机设置为根桥,那么必须改动每个VLAN的优先级
  *PVST+可以控制每个Vlan流量的走向,将不同的VLan流量分担到不同路径,既实现了负载均衡,又通过STP避免了环路
  

  选择根桥举例
  

  2,在所有 非根桥 上选举一个唯一的Root Port(根端口)

    除了根桥外,其他所有的交换机都是 非根桥(NRoot Bridge);
    根端口是指 直连到根桥的链路 所在的端口,或者到根桥的路径最短的端口;
    如果有多条链路连接到根桥,就检查每条链路的 端口开销(由链路带宽来决定),开销最低的链路所在的端口就成为根端口;
    如果多条链路的开销相同,就使用 (除根桥外)BID最小的那台交换机 上的链路端口作为根端口。
    如果多条链路来自同一台设备,就使用 端口号 最小的端口作为根端口。

  
  

  *端口号:(端口ID)
    

  选择根端口的依据
     根路径成本(端口/路径开销)最低
     直连网桥的BID最小
     直连网桥的端口号(Port ID)最小

  选择根端口举例
  

  配置端口开销(Cost)

(config)#interface gigabitethernet 0/4
(config-if)#spanning-tree cost 40

  重置端口开销(Cost)

(config)#interface gigabitethernet 0/4
(config-if)#no spanning-tree cost

  配置端口优先级(包含在port id中)

(config)# interface gigabitethernet 0/4
(config-if)# spanning-tree port-priority 160  //能被16整除

  3,选完 根端口 之后,在 每两台交换机之间 的 每条链路两端 选举一个指定端口(Designated port)
   ---在那条链路上的端口提供到根桥最大的带宽
  在每个 链路 上,选择一个指定端口(有最低开销的端口就是指定端口)
  ★根桥上的每个端口都是指定端口

  RP(根端口)对端一定是DP(指定端口);DP对端可能是RP,也可能是NDP(非指定端口)

  第一步,比较链路两端的发送者(出站方向)的Cost of path(路径成本)值,谁小谁就是DP
  第二步,比较链路两端的发送者(出站方向)BID,谁小谁就是DP
  第三步,(除非交换机自己连自己,否则不采用)比较链路两端的发送者(出站方向)的Port-ID,谁小谁就是DP

  *NDP,非指定端口将被置为阻塞状态。
  *转发端口(Forwarding port)指能够转发帧的端口。
  *阻塞端口(Blocked port)是指不能转发帧的端口,这样做是为了防止产生环路。但被阻塞的端口将始终监听帧。

  选择指定端口的依据
    根路径成本最低
    端口所在交换机的BID值最小
    端口号最小

  选择指定端口举例
  

  STP端口状态
  对于运行STP的网桥或交换机来说,其端口状态会在下列5种状态之间转变:
  
  阻塞(Blocking) 被阻塞的端口将不能转发帧,它只监听BPDU。设置阻塞状态的意图是防止使用有环路的路径。当交换机加电时,默认情况下所有的端口都处于阻塞状态。
  侦听(Listening) 端口都侦听BPDU,以确信在传送数据帧之前,在网络上没有环路产生。处在侦听状态的端口,在没有形成MAC地址表时,就准备转发数据帧。
  学习(Learning) 交换机端口侦听BPDU,并学习交换式网络中的所有路径。处在学习状态的端口形成了MAC地址表,但不能转发数据帧。转发延迟意味着将端口从侦听状态转换到学习状态所花费的时间,默认时设置为15秒,可以用命令show spanning-tree显示出来。
  转发(Forwarding) 在桥接的端口上,处在转发状态的端口发送并接收所有的数据帧。如果在学习状态结束时,端口仍然是指定端口或根端口,它就进入转发状态。
  禁用(Disabled) 从管理上讲,处于禁用状态的端口不能参与帧的转发或形成STP。处于禁用状态下,端口实质上是不工作的。
  说明:只有在学习状态或转发状态下,交换机才能填写MAC地址表;
     被阻塞的端口仍然能接收BPDU,它们只是不能发送任何帧。

    STP收敛
  当网桥或交换机上的所有端口都转变到转发或阻塞状态时,就产生了收敛;
  在收敛完成之前,交换机不能转发任何数据。在重新转发数据之前,所有的设备都必须更新;
  交换机开机需要等待30秒时间开始转发数据;
  从阻塞状态转变到转发状态通常要花50秒.
  

  端口快速(Port Fast)
  跳过STP计算,直接进行转发,通常用于交换机直连(接入层)工作站/PC/服务器(如果连接交换机则会造成环路);
  Access口和Trunk口都可以配置PortFast功能;
  只能在接入层的交换机上配置此命令,用户是直接连接到接入层交换机的,在核心交换机上,不能配置此命令。

  BPDU防护
  在开启ProtFast和BPDU防护的接口上,如果检测到该端口连接的是交换机,则该端口会被Shutdown(为了防止环路);
  BPDU防护只对配置了PortFast的端口起作用;

  某端口配置Portfast和BPDU防护:

(config)#interface fastEthernet 0/1
(config-if)#spanning-tree portfast
(config-if)#spanning-tree bpduguard enable

  在全局非Trunk口上启用Portfast,并为所有支持Portfast的端口启用BPDU防护

(config)#spanning-tree portfast
(config)#spanning-tree bpduguard default

  相关命令:

  手动启用生成树:

(config)#spanning-tree mode pvst

  启用某VlanSTP:

(config)#spanning-tree vlan 10

  关闭某Vlan的STP:

(config)#no spanning-tree vlan 10

  端口单独配置Vlan开销(Cost):

(config)#interface gigabitethernet 0/4
(config-if)#spanning-tree vlan 10 cost 40

  查看VlanSTP信息 :

Show spanning-tree vlan 10

  检验端口和路径开销 :

Show spanning-tree active

STP要记住六点:
  1.根桥负责维护网络拓扑,根桥的所有端口都是指定端口
  2.选择根端口和制定端口的BPDU帧总是从根桥的所有端口向外发
  3.选举指定端口,站在链路上比较所有端口发送的BPDU
  4.选举根端口,站在桥上比较所有端口接收的BPDU(接收的BPDU+本接收端口线路带宽的cost)
  5.交换机接收BPDU时开销值增加,发送BPDU时开销值不变
  6.选举过程:选举根桥——>根端口——>指定端口——>其余为阻塞端口

转载于:https://www.cnblogs.com/airoot/p/4161519.html

CCNA2.0笔记_STP相关推荐

  1. CCNA2.0笔记_ACL

    要点: 1.按顺序执行,一旦某条语句匹配,后续语句不再处理. 2.默认ACL 结尾语句是deny any,所以你要记住的是在ACL 里至少要有1 条permit 语句. 3.记得创建了ACL 后要把它 ...

  2. CCNA2.0笔记_动态路由

    动态路由协议: 向其他路由器传递路由信息 接收(学习)其他路由器的路由信息 根据收到的路由信息计算出到每个目的网络的最优路径,并由此生成并维护路由表 根据网络拓朴变化及时调整路由表,同时向其他路由器宣 ...

  3. CCNA2.0笔记_TCP/IP概述

    主机到主机层(传输层) TCP与UDP UDP的特点 运行于 OSI 模型和 TCP/IP 模型的传输层 为应用程序提供网络层接入而无需为可靠性机制付出多余开销 属无连接协议 提供有限的错误检查 提供 ...

  4. actionscript 3.0 怎么写android 程序,(ActionScript3.0笔记)第一个程序HelloWorld!

    (ActionScript3.0笔记)第一个程序HelloWorld! 创建我的第一个ActionScript3.0程序--HelloWord! 首先下载ActionScript3.0的集成开发环境, ...

  5. C#3.0笔记(一)预备知识之Delegate

    在学习C#3.0之前还是先来回顾下委托.事件,因为这样能更加有助于理解C#3.0里面的一些新的特性,如Lambada表达式等. 背景 在C语言中我们可以用函数指针来创建回调函数,但是在C里面回调函数存 ...

  6. 冲刺CCNA2.0(200-120)认证考试TK视频讲解

    免责声明,本视频所需资料全部来源于互联网,本人没有侵犯任何厂商利益和版权 本视频针对网上流传的CCNA2.0TK,用大量LAB演示讲解200-120 TK,打消广大考生对实验题目.拖图题目的恐惧心理, ...

  7. 人工智能实践:Tensorflow2.0笔记 北京大学MOOC(1-1)

    人工智能实践:Tensorflow2.0笔记 北京大学MOOC(1-1) 说明 一.神经网络计算过程 1. 人工智能三学派 2. 神经网络设计过程 2.1 人脑中的神经网络形成过程 2.2 计算机模仿 ...

  8. 乐鑫esp8266学习rtos3.0笔记第3篇: 一篇文章带你搞掂存储技术 NVS 的认识和使用,如何利用NVS保存整型、字符串、数组以及结构体。(附带demo)

    本系列博客学习由非官方人员 半颗心脏 潜心所力所写,不做开发板.仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 1. Esp8266之 搭建开发环境,开始一个" ...

  9. 乐鑫esp8266学习rtos3.0笔记第9篇:整理分享那些我在项目中常用的esp8266 rtos3.0版本的常见驱动,Button按键长短按、PWM平滑调光等。(附带demo)

    本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 1. Esp8266之 搭建开发环境,开始一个"hello ...

最新文章

  1. mssql 插入数据缓慢_SQLPro Studio for Mac(数据库管理器)
  2. 小技巧——让光驱符号定位在硬盘分区之后
  3. 如何判断是否丢掉用户请求
  4. 谷歌旗下Waymo开启数据集虚拟挑战赛
  5. getuid、geteuid、getgid和getegid函数
  6. 贪 心 学用markdown
  7. linux之openssh配置
  8. Python 操作 mongodb 数据库
  9. 斗鱼主播后台礼物数据爬取
  10. 2015年终总结和2016年的计划
  11. python大数据工程师招聘_大数据工程师是做什么的为什么招聘网上薪资都好高啊?...
  12. 完全用 GNU/Linux 工作(原版)
  13. ccleaner激活后又要注册_ccleaner如何激活? ccleaner注册激活图文步骤
  14. CentOS 8: No URLs in mirrorlist error
  15. android开发banner框架,Android 轮播图 最火的banner框架 (包含demo和代码解释)
  16. ATUO CAD 如何延伸线段?
  17. 什么是股票分仓软件, 实现原理解析2
  18. java 生成二维码后叠加LOGO并转换成base64
  19. C语言 扑克牌小游戏
  20. 计数器——Verilog HDL语言

热门文章

  1. 快速远程桌面控制公司电脑远程办公
  2. excel分类_EXCEL分类汇总 快速统计数据
  3. 非酋如何计算花多少钱才能抽到SSR
  4. 关于ASL查找成功/失败的总结
  5. win10 win7 php,win10怎么转win7
  6. Latex基本篇章结构
  7. volatile c 关键字
  8. 面试系列 | 技术面试老是有劲使不出,该怎么办
  9. 美国加息全球死伤一大片,它到底加了什么?
  10. 无线充电器出口欧盟CE认证RED指令测试分析