STP

生成树协议  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网段有链条或两条以上的连接   备份端口在拓扑稳定的情况下  处于丢弃状态
禁止端口 不起作用的端口
原文地址:https://www.cnblogs.com/dongguolei/p/7902687.html