生成树协议  spanning-tree protocol     网络中额外添加的链路连接着路由器和交换机 会引起流量的环路   当一个交换机的连接丢失时 另一条链路能快速地取代失败的链路  并且不产生新的流量环路   STP会解决这样的问题

主要内容包括冗余拓扑中存在的问题    生成树协议   生成树收敛   高级生成树协议
一.冗余拓扑中存在的问题

1.广播风暴

a  pc1发出一个广播帧
b sw1收到广播帧    从fa1/1   1/2  1/5发出
c sw2从fa1/2端口发过来的广播帧  然后sw2从fa1/1   fa1/4  1/5发出   
d  sw2从fa1/1端口发过来的广播帧  然后sw2从fa1/2   fa1/4  1/5发出   
e 同理sw1也从fa 1/1    和1/2端口收到sw2转发过来的广播帧  然后  从接受端口之外的所有端口转发出去
f 一个广播帧在sw1和sw2之间不停地被转发   永无止境   最终造成网络拥塞或瘫痪
2.mac地址表不稳定
a sw1从fa1/4接受pc1的广播帧   sw1学习mac地址  记录下pc1的mac地址在fa14端口   将转发给sw2
b sw2先从fa1/1收到广播真   sw2记录下pc1的mac地址在fa1/1端口   然后sw2从fa1/2也收到这个广播帧   sw2更新pc1的mac地址在fa1/2端口   sw2把接收到的广播数据帧再转发到sw1
c sw1先后从fa1/2和fa1/1端口接收sw2转发过来的广播帧   依次更新pc1的mac地址在fa1/2和fa1/1端口    可真正的pac1在fa1/4端口
3.重复帧拷贝
a pc1发单播帧到pc3
b sw1从fa1/1  和fa1/2都发出
c sw2从fa1/1端口收到sw1转发过来的单播帧   从fa1/4给pc3
d  sw2从fa1/2端口收到sw1转发过来的单播帧   从fa1/4给pc3   重复了
e pc1发送一次    pc3收到两次
 
环路的判断方法
 
感官法:网速变慢   观察交换机或集线器的指示灯   
分析法:抓取数据包  利用软件 类似  sniffer抓包软件
 
二 STP介绍

STP通过阻塞冗余路径上的一些端口  确保到达任何目标地址只有一天逻辑链路

BPDU bridge protocol data unit   桥接数据单元    STP借助交换bpdu来阻止环路  
STP使用STA  ---生成树宣发  来决定交换机上的哪些端口被阻塞来阻止环路的发生    STA选择一台交换机作为根交换机  也成为根桥  ROOT bridge    
BID   bridge id  叫做桥id   用来识别是哪台交换机发出的bpdu
术语:
a 根桥  拥有最佳id的网桥  为网络中最重要的点  其他网桥都需要确定一个通往根桥的单一路径  通往根桥的最佳路径 上的端口被称为根端口
b BPDU用于根交换机选举的信息   桥协议数据处理单元   项链交换机互传
c 桥ID   STP使用桥id跟踪网络中的所有交换机
d 非根桥 除了根桥外的所有网桥
e 端口开销   用于确定最佳路径   链路的开销取决于链路的带宽
f 根端口   与根桥直接相连的链路所在的端口  或者是通往根桥路径开销最低的端口  
存在多条链路到根桥  需要检查链路的贷款再确定根端口   最低开销的端口是根端口    如果开销相同  需要用带有较
低通告的桥id的那个桥   多台链路连接到同一台设备时,使用上行交换机上连接到最低端口号的端口
g 指定端口 通过其根端口到达根桥开销最低的端口  又叫指派端口    会被标记为转发端口
h 非指定端口  开销比指定端口高的端口    除了根端口和指派端口  其余的端口就是非指派端口    初始设置为阻塞状 态   不能进行转发
i 转发端口 能够进行数据帧转发的端口
j 阻塞端口 不能转发帧的端口  避免环路的作用  但是会坚挺BPDU帧  并且丢弃其它所有帧
 
 
1.根交换机选举
BID由三部分组成  优先级   发送交换机的mac地址和extended system id扩展的系统id  可选

 

在不适用扩展系统id的情况下   bid由优先级域和交换机的mac地址组成   优先级0-65535   2的16次方  mac地址不同

老款交换机命令show spanning-tree breif
新款和packet tracer中   show spanning-tree

在使用扩展系统id的情况下  每个vlan的mac地址可以相同    bid被要求包含vlanid的信息   
当前普遍的交换机都使用扩展系统的id    拥有最小的bid的交换机被选为根交换机
在同一个广播域中所有交换机参与选举根交换机      
a    sw1启动  假定自己是根交换机   发送次优  bpdu  默认2秒一个bpdu帧     此帧的bid和rootid相同
b sw2接收到bpdu  并读取root id   如果比自己的bid小   就更新rootid为sw1的root id   标识sw1为根交换机
c sw2转发更新的bpdu帧到其他交换机   
d 最后生成树种的所有节点都有一致的rootid  就是根交换机的bid   标识交换机
A     更改交换机为制定vlan的根交换机   (不好似用extended system id)的情况下    bid有交换机的优先级和mac地址组成
因为mac地址固定 所以通过修改交换机的优先级实现  
命令如下
spanning-tree vlan 1 priority  1000
或者spanning-tree vlan 2 priority 2000
B 如果是使用extended system id的交换机   优先级只能设置成 0.      4096    8192    等4096的倍数
spanning-tree vlan 1 root primary   此为动态设置交换机优先级的命令    
例如   网络中已经存在根交换机了     根交换机的优先级是200  mac地址比该交换机小   所以此命令将把该交换机的优先级设置成199    使得该交换机成为新的根交换机
2.端口花费和路径花费
根桥选举出来后   计算其他交换机到根桥的花费   sta考虑端口花费和路径花费    路径花费等于从根交换机到达最终交换机前进方向上进入方向的端口花费总和   端口话费默认和端口带宽有关    

如果一台交换机有多条路径可以到达根交换机   交换机选择路径花费最小的那条路径
a 端口花费   如图  12-2-1
修改sw3   fa1/1  端口的花费
int fa 1/1
spanning-tree cost 200

经过多台交换机才到达根交换机  路径花费等于中间经过多条路径花费的总和

2.BPDU
帧细节
包含12个字段    
flags   标记域
rootid   根交换机的bid
cost of path   到根交换机的路径花费
bridge id   转发BPUD的交换机的BID
port id  转发BPDU的交换机端口 pid   等于端口优先级   +端口编号
message age   BPDU已经存在的时间
max age    BPDU的最大存在时间
hellotime根桥发送配置信息的间隔时间  默认值是2秒
forward delay转发延迟
 
3.端口角色
当sta决定使用哪一条路径之后   sta配置交换机的端口角色   描述了它与根桥的关系和是否允许转发流量   
a 根端口   root port 简称rp      
非根交换机上离根交换机最近的端口称作根端口   每个非根交换机上有且只有一个根端口    
 

sw1是根交换机    sw2从fa1/2可以到达sw1     花费19;从fa1/3经过sw3到sw1  花费19+19=38

sw2从fa1/2到sw1最近  所以  fa1/2是sw2的根端口   同理  sw3中fa1/1是根端口
b 指派端口   (designated port   简称DP)  
每个网段都有一个指派端口   它是该网段到根交换机最近的交换机上的端口
网段 指派端口         所属交换机  
sw1-sw2 fa1/1 sw1
sw1-sw3 fa1/3 sw1
sw2-sw3 fa1/3 sw2
 
c 非指派端口   既不是根  也不是指派端口的激活端口称作非指派端口    

 
上图中的sw3中的fa1/2 既不是根 也不是指派  所以此端口处在blocking阻塞状态  用来阻止环路
根和指派端口都在forwarding转发状态
d 禁用端口     被管理原始用shutdown命令关闭的端口称作禁用端口   禁用端口不参与sta生成树算法
4.端口状态和BPDU时间
交换机互联通过交换bpdu帧构建不环路的路径   
端口需要在5种状态间转换    转换会经历3种BPDU时间
a 端口状态转换
down  禁用   可用no shut命令和插入网线激活
blocking 阻塞   链路激活 后  端口转换到此状态    20s时间    决定该端口角色   如果该端口是根端口或者指派端口 将转换到下一个状态    如果该端口是非指派端口   则继续停留在blocking状态
listening 侦听状态    不仅接受而且发送BPDU   通知邻居交换机它将参与激活拓扑   15s
learning 学习   开始学习mac地址   15s
forwarding  转发   可以转发数据帧
b 端口所处状态的功能

c BPDU的时间

有关的时间参数有  hello time     max age     forward delay      
修改命令    spanning-tree vlan 1 forward-time ***
hello time 发送配置BPDU的时间间隔
 
 
 
 
操作  生成树
1.选举根桥
a 首先选取一个根桥       
b 每个网桥必须找出属于自己的一个并且也是唯一一个分派的根端口
c 任意两台交换机之间的链路必须要有且唯一一个指派端口   位于最大带宽的链路上
d 根桥上的每个端口都是指定端口
2.生成树的端口状态
阻塞       侦听 学习 转发 禁用
3.会聚
当所有端口都转换到了转发或者阻塞模式时  就会形成STP会聚    会聚过程中   主机数据都会停止发送
4.生成树的端口快速
portFast     当stp会聚时   此端口无需花费50s即可进入转发模式     前提是确定此端口不会因为禁用stp而产生环路
int fa 0/1
spanning-tree portfast
5.生成树的uplinkfast  缩短stp的会聚时间  只配置在接入层交换机上或者带荣誉链路的交换机
或者有冗余链路上的交换机 并且其中至少有一条链路处于阻塞模式
允许交换机在主链路失效之前就找出到根桥的可替换路径
6.生成树的BackboneFast
  在所有的交换机上可以启用   无法与交换机直接相连的链路失效的情况下   使用它可以加速stp会聚  
7.快速生成树协议   RSTP   802.1w
   以上是802.1d的内容    8.2.1w比前者进化许多      当拓扑发生变化时 它具有更快的会聚时间     创建802.1w保证向后 兼容性
8.EtherChannel
允许STP将某条链路设置为阻塞BLK模式 也可以将多条链路捆绑在一起创建逻辑上的聚合 可以像单一链路那样工作
两类版本    思科的pagp 端口聚合协议
    IEEE  802.3ad  链路聚合控制协议  LACP
     
 
 
 
三  STP 收敛   *****
所谓收敛就是整个网络达到一个稳定的状态   选举出根交换机   并且决定出所有端口的角色  排除所有潜在的环路    
当网络拓扑发生变化时   执行sta生成树算法  让网络重新收敛
1.生成树的选举
无环路的网络拓扑  需要4步实现
a 每个广播域只有一个根交换机
b 每个非根交换机有且只有一个根交换端口
c 每个网段有且只要一个指派端口
d 既非根又非指派端口的端口被阻塞
 
1.选举根交换机
拥有最小BID的交换机将成为根交换机 
2.选举根端口
从非根交换机到根交换机最低路径花费的端口   如果多个端口收到根交换机的BPDU
a   最低花费的端口成为根端口
b 花费相同的情况下    比较发送者的bid
c 发送者bid相同    比较发送者的pid ( port  id    )    pid=端口优先级+端口号   端口优先级占用一个字节  默认 128   端口号在同一个模块上顺序增加的   
spanning-tree port-priority ?
3.指派端口
每个网段都有一个指派交换机    负责把网段的数据发往根交换机   次交换机上的端口叫指派端口   
过程是先选出指派交换机    再选指派端口
流程
a 比较花费   
    先指派交换机   再指派端口
b 比较bid 此bid为本地交换机的bid   而非发送者的bid   选出指派交换机
c 比较pid 如果指派交换机上有多个端口连接到同一个网段   则本地交换机pid最小的端口为指派端口
4.阻塞端口
既非根端口  也非指派端口的端口将被阻塞
2.STP拓扑变化
当端口从转发变成阻塞 或者交换机端口变为转发状态时 并且有一个指派端口 此时 交换机会通知根桥拓扑变化了 根交换机再广播这个信息到整个网络中
通常非根桥不发送bpdu到根桥 但是为了给根桥 拓扑变化信息的通知 一种特殊的BPDU被引入 叫做TCN topology change notification 拓扑改变通知 从根端口向外发送tcn

a s2检测到拓扑变化   s2从根端口向d1发送TCN
b d1收到s2发来的tcn    发tc向s2确认
c d1产生tcn    从根端口发给c1
d c1收到tcn   c1发tca给d1确认
3.增强的STP功能
快速端口  减少端口连接的时间    注意仅在连接计算机的端口上使用该功能  接入层交换机
在trunk端口使用此功能无效
interface range fa1/1 -10
spanning-tree portfast
四.高级的STP
STP类型    
a  思科私有  
1.pvst    per  vlan   每个vlan一个生成树协议
支持 isl封装协议 backbonefast    uplinkfast     和portfast
2.pvst+ per vlan  stp  plus
支持isl    和  802.1Q封装协议
增加了BPDU guard  和root  guard
3.rapid-pvst+   收敛速度快 
b IEEE标准
1.RSTP  papid STP快速生成树协议
2.MSTP Multiple STP  多生成树协议
多vlan被映射到同一个生成树协议
 
1.PVST+
PVST+环境中   可以调整生成树参数   使不同的vlan使用不同的链路    

默认情况下  sw1是vlan1和vlan2的根交换机

针对vlan1和vlan2  是sw2的fa1/1端口都被阻塞      下面链路   不使用
pvst+支持每个vlan一个生成树
可以把sw2配置成vlan2的根     vlan2的流量从下面链路   vlan1的流量从上面走  实现两条链路的负载均衡和冗余备份
sw1   配置如下
vlan 2
exit
conf t
int fa 1/1
switchport mode trunk
int fa 1/2
switchport mode trunk
exit
spanning-tree vlan 1 root primary    设置vlan1的根桥
 
sw2配置如下
vlan 2
exit
conf t
int fa 1/1
switchport mode trunk
int fa1/2
switchport mode trunk
exit
spanning-tree vlan 2 root primary 设置vlan2的根桥
 
2.RSTP
此为IEEE 802.1W   从stp   802.1d发展而来    重新定义了端口的类型和状态      如果一个端口是替代端口或备份端口   不需要等待网络的收敛立即就可以改变到转发状态
命令
spanning-tree mode ?
mst
pvst
rapid-pvst
spanning-tree mode rapid-pvst    选择里面的最后一项  rapid-pvst
a.RSTP特点
首选的阻止二层网络环路的协议
不支持uplinkfast 和backbonefast
b.RSTP的BPDU
BPDU被用于保活检测keepalive   连续丢失三个BPDU暗示和邻居交换机的连接丢失   可以快速检查链路失败
c.边缘端口
指交换机上从来不会连接到另一台交换设备的端口    它可以被立即转换到转发状态

12-4-3图中表示
sw1是根交换机   两个指派端口  DP
sw2是指派交换机 一个根端口    指派端口   和一个备份端口  backup port---指派交换机上的非DP端口
sw3是非根和非指派交换机     一个根端口  一个替代端口---非指派交换机上的端口
边缘端口和生成树中portfast一样   是连接最终的工作站     配置边缘端口的命令和配置protfast端口的命令相同,区别是当rstp的边缘端口收到BPDU时,该端口立即失去边缘端口的状态  变成一个正常的生成树端口
d.链路类型
当某些端口的链路类型参数满足时,可以被快速地转换到转发状态,边缘端口被当做点对点链路,可以被直接过渡到转发状态,非边缘端口有两种链路类型  点到点链路类型和共享链路类型 。链路类型可以被自动检测到,如果是全双工链路就是点到点链路,如果是半双工链路则是共享链路,也可以在交换机端口上明确规定端口的双工类型来确定链路的类型
是否使用链路类型参数和端口的角色有关:
1.根端口不使用链路类型参数,根端口可以快速地转换到转发状态
2.替换端口和备份端口在多数场合下也不使用链路类型参数
3.使用链路类型参数最多的是指派端口,如果链路类型是点对点类型  指派端口可以快速地转换到转发状态

e.端口角色和端口状态
三种  丢弃 discarding 学习learning 转发forwarding  

角色有5种

根端口     同STP根端口   转发数据
指派端口 同stp的指派端口  转发数据
替换端口 到根桥的替换路径   用来替换当前的根端口   替换端口在生成树拓扑稳定的情况下,处于丢弃状态
备份端口 由指定端口提供到生成树叶节点的备份路径    只存在与这两种情况下  :两端口通过点到点链路相连成一 个环路;网桥与共享lan网段有链条或两条以上的连接   备份端口在拓扑稳定的情况下  处于丢弃状态
禁止端口 不起作用的端口

STP的更多相关文章

  1. 解决:SharePoint当中的STP网站列表模板没有办法导出到其它语言环境中使用

    首在在你的英文版本上,导出列表或是网站的模板,这个文件可能是这样滴:template.stp 把这个文件 template.stp 命名为 template.cab 解压 这个 *.cab 文件 在解 ...

  2. STP的作用和操作

    STP的作用 STP通过阻塞端口来消除环路,并能够实现链路备份的目的 STP的操作 选举一个根桥 比较交换机的桥ID,越小越优先 桥ID  是8个字节,2个字节的优先级+6个字节的MAC地址 2.每个 ...

  3. CentOS 7.1 Bridge启用STP报错"Master connection not found or invalid"

    今天在公司测试Linux bridge搭建,为了使内部docker容器的网络能够不经过2层封装转发对外公布,顾试用一下bridge功能,结果碰到报错:"Bringing up interfa ...

  4. [转]MOSS通过此命令注册模板,web应用程序可以根据stp模块生成网站集

    注:C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12\bin          stsadm –o add ...

  5. STP详解

    STP详解 Write From YangWj Wednesday, March 5, 2014 一. 生成树协议 STP的主要任务是阻止在第2层网络(网桥或交换机)产生网络环路,它警惕的监视着网络中 ...

  6. STP根交换机,指定端口,根端口,阻塞端口

    STP判断各交换机端口(指定端口:DP;根端口:RP;阻塞端口:AP) 判断步骤: 1.选举根交换机: 判断对象:所有运行STP协议的交换机中选出一个; 判断依据:交换机中选择网桥ID值(交换机优先级 ...

  7. 【转】不同VLAN之间相互通信及VTP、STP、EtherChannel概念

    厘清最后一个概念. 转了网上两个相关帖子: http://www.net130.com/CMS/Pub/Tech/tech_zh/2009_03_12_97386_3.htm http://blog. ...

  8. STP学习总结

    STP学习总结 STP是广泛应用在二层的具有冗余的网络中用来消除环路的一种机制,当然二层环网中用来消除环路的技术还有RRPP和H3C的smart-link技术等. 一.STP的一些基本概念 STP是I ...

  9. OSI模型第二层数据链路层-STP协议

    1.stp协议的由来. 在二层网络中,交换机起到了很重要的作用,如果有一台交换机出现故障会影响网络的使用,为了避免存在单点故障,在实际的二层链路中会采用链路冗余,也就是采用交换设备之间多条联络连接,即 ...

  10. 自制STP配置实验

    本图使用Gns模拟器 实验需求: 1.要求利用vtp实现vlan同步设置 2.要求vtp server实现备份冗余 3.创建vlan 1~10要求MLSW1 是奇数vlan主根 MLSW2 是偶数vl ...

随机推荐

  1. 深入理解Java虚拟机--个人总结

    JVM内存区域 我们在编写程序时,经常会遇到OOM(out of Memory)以及内存泄漏等问题.为了避免出现这些问题,我们首先必须对JVM的内存划分有个具体的认识.JVM将内存主要划分为:方法区. ...

  2. js进阶之function对象

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...

  3. SPOJ SORTBIT Sorted bit squence (数位DP,入门)

    题意: 给出一个范围[m,n],按照二进制表示中的1的个数从小到大排序,若1的个数相同,则按照十进制大小排序.求排序后的第k个数.注意:m*n>=0. 思路: 也是看论文的.一开始也能想到是这种 ...

  4. 到底什么样的ABAP系统能运行Fiori应用

    有朋友在微信上问我两个问题: S/4 fiori是标配吗? 如果是ERP R/3,可以激活fiori配置吗? 先回答第二个问题. 在Jerry的微信公众号文章SAP Fiori应用的三种部署方式曾经提 ...

  5. gzip, gunzip, zcat - 压缩或展开文件

    总揽 gzip [ -acdfhlLnNrtvV19 ] [-S 后缀] [ 文件名 ... ] gunzip [ -acfhlLnNrtvV ] [-S 后缀] [ 文件名 ... ] zcat [ ...

  6. WPF知识点全攻略11- 命令(Command)

    先看一下命令的简单使用: <Window.CommandBindings> <CommandBinding Command="ApplicationCommands.Cut ...

  7. Django 模板函数

    Django 模板函数 在模板中的函数是只需要函数名,不用加括号,自动执行 在前端中的函数 不用加括号,函数自动执行 前端 {% for item in userinfo.keys %} <h3 ...

  8. pysql用类进行封装

    pyMySQL用类进行封装 class SqlHelper(object): def __init__(self): self.connect() def connect(self): self.co ...

  9. 简易数据分析 02 | Web Scraper 的下载与安装

    这是简易数据分析系列的第 2 篇文章. 上篇说了数据分析在生活中的重要性,从这篇开始,我们就要进入分析的实战内容了.数据分析数据分析,没有数据怎么分析?所以我们首先要学会采集数据. 我调研了很多采集数 ...

  10. vs2015驱动开发中使用RtlStringCchPrintfW()报错

    法一: 在头顶添加一段代码 #pragam comment(lib,"xxxxxx.lib") 法二: 右击工程点属性,选择Linker下的Input,在依赖项后面写上$(DDK_ ...