zoukankan      html  css  js  c++  java
  • 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网段有链条或两条以上的连接   备份端口在拓扑稳定的情况下  处于丢弃状态
    禁止端口 不起作用的端口
  • 相关阅读:
    Activity-fragment-ListView展示
    Android-fragment简介-fragment的简单使用
    Android-LoaderManager异步加载数据库数据
    Android-上下文菜单Menu
    Android-普通菜单Menu
    Android-Git命令行操作
    zabbix安装步骤
    redis安装及简单使用
    ansible安装
    ansible-palybook
  • 原文地址:https://www.cnblogs.com/dongguolei/p/7902687.html
Copyright © 2011-2022 走看看