STP(Spanning Tree Protocol) (IEEE 802.1D) 生成树协议

 
·回顾SW的工作原理:
 1.不能修改它所转发的帧
 2.基于源MAC的学习,建立MAC-PORT的映射表,基于目的MAC转发
 3.对有目标MAC映射表的帧,直接从对应端口转发
 4.对没有目标MAC映射/目标广(组)播的帧,SW会从所有端口转发(除源端口)
交换机从不同的接口学到不同的命令,它会选择最新学到的命令。
 
·当2个Segment之间,只有一个物理设备连接时,就有可能“单点失效”。
 Segment:
  1.STP:一段网络介质(网线/光纤)。
  2.数据封装:携带4层报头的用户数据。
  3.路由:一个逻辑子网。
 
·避免单点失效的方法就是构造冗余网络。
 
·冗余网络导致的问题:
 1.多帧复制(浪费带宽)  在组播中是个大问题
 2.MAC地址表的翻动
 3.广播风暴
阻止冗余网络就是建立block
 
·STP是为克服冗余网络中透明桥接的环路问题而创建的。
 STP通过判断网络中存在环路的地方,并阻断冗余链路来实现无环网络。
 
·STP采用STA(Spanning Tree Arithmetic)算法。
 STA会在冗余链路中选择一个参考点(生成树的根),将选择到达要的单条路径,同时阻断其他冗余路径。一旦已选路径失效,将启用其他路径。
 
 
<STP的4大结论>(STP里选举参数都是越小越优)
STP的各种选举是通过交换BPDU报文来实现的,BPDU是直接封装在以太网帧中的。
 
One root bridge per network(每个网络只有一个根桥)
 
·根桥的选举:Lowest BID (最小的BID)
 
·STP为每台SW分配唯一的一个标识符,称为BID(Bridge ID)。
 BID的组成:2(Bridge Priority优先级)+6(MAC)=8 Bytes
 默认Priority:32768(0x8000) 2950以上的交换机会在这个值上再加上VLAN号
  每个交换机都有一个基准的MAC地址,用下面的命令可以看到
  Sw2#show version 
 Base ethernet MAC Address: 00:0D:28:61:35:00
  交换机的每一个端口都有一个MAC地址,就是以Base(基准) MAC地址加上端口号得到的。
  Show interface f0/1   这一命令可以看到交换机端口的MAC地址
 
查看STP信息--
Sw2#show spanning-tree 
Sw3# show spanning-tree brief(低版本用)2900以下的交换机用这一命令
 
·PVST(Per Vlan Stp)
 Cisco SW 默认为每个VLAN,一个STP,互不影响。
 
·一些低端交换机(2900)的Priority是不加上vlan号的。
 
·将性能最好的SW设成根桥
b
Sw1(config)#spanning-tree vlan 1-10 root primary (24576=0x6000) (建立优先级,成为根桥)
Sw2(config)#spanning-tree vlan 1-10 root secondary (28672=0x7000) (备份根桥,防止优先级根桥showdown了)
Sw1(config)#spanning-tree vlan 1-10 priority 4096 
                   (设置必须是4096的倍数)
 
One root port per nonroot bridge(每个非根桥都有一个根端口)
 
·根端口(RP):Lowest path cost to root bridge 每个非根桥有且只有一个根端口
       非根桥到达根桥所需开销最小的那个端口。(可转发流量)
 
选举RP/DP的方法:
1.Lowest RID(最小的RID)  是SW1(根桥)的BID
2.Lowest path cost to root bridge(到达根的最小路径开销)
3.lowest sender BID (最小的发送BID)
4.Lowest sender port ID  当两台交换机之间有两条线路直连时会用到这一项来选
BPDU(Bridge Protocol Data Unit):由根桥每二秒发一次。
BPDU是直接封装在二层的协议,其MAC地址最后封装数为:00。(01:80:c2:00:00:00)
·Path Cost:根桥发出的COST值是0,在下一交换机的入口处才加上COST值,出口处COST值不变。
 10Mbps:100/ 100Mbps:19/ 1Gbps:4/ 10Gbps:2
 
Sw1#show interfaces status 
Sw1#show spanning-tree 
 
duplex full -> P2p
duplex half -> Share
 
Sw1(config-if)#spanning-tree (vlan 1) cost 22 每个VLAN都能生成一个自已的生成树,通过改动每个VLAN的COST值可以达到让每个VLAN选择不同的根桥,产生不同的生成树,充分利用了链路
Sw1(config-if)#spanning-tree cost 22   修改所有Vlan的Cost值
 
Port ID是由优先级+端口号组成
修改端口优先级:默认情况下是128
Sw1(config-if)#spanning-tree port-priority 16
 
One designated port per segment(每个Segment只有一个指定端口)
           TCP/UDP 封装
Segment    路由中的网段
            介质
 
选举RP/DP的方法:
1.Lowest RID(最小的RID)  是SW1(根桥)的BID
2.Lowest path cost to root bridge(到达根的最小路径开销)
3.lowest sender BID (最小的发送BID)
4.Lowest sender port ID
 
·根桥的所有端口都是指定端口(DP)。
 
·指定端口(DP):Lowest path cost to root bridge(=)
          Lowest sender BID
                              发送方BID小的那个端口(转发流量)
 
Nondesignated ports are blocked(非指定端口将被堵塞)
 
 
BPDU(Bridge Protocol Data Unit)
 
·对于参与STP的所有SW,它们都通过数据消息的交换来获取网络中其他SW的信息,这种消息就被称为BPDU。
 
·BPDU的功能:
 1.选举根桥
 2.确定冗余路径的位置
 3.通过阻塞特定端口来避免环路
 4.通告网络的拓扑变更
 5.监控生成树的状态
 
·BPDU每2S由根桥发送一次。
 最初的网络,每个SW都认为自己是根桥,都会发送BPDU,比较Lowest BID,选举出一个根桥,此时就只有根桥发送BPDU。非根桥只进行转发。
 
·TCN(Topology Change Notification) BPDU
 这种BPDU是SW检测到拓扑变更时产生的。
 
·Protocol ID : 0
 Version : 802.1D (0)
  Message Type : (Config BPDU=0x00 / TCN BPDU=0x80)
 
 
<非根桥有多条冗余链路连接到根桥>
 
·根端口(RP):Lowest path cost to root bridge (=)
        Lowest sender BID (=)
        Lowest sender port ID
入口+cost值=发出数值(如19口+8口=27口指交换机)
·端口ID(PID):
 1(Pri)+ 1(Port Num) = 2 Bytes
 128.24(默认priority=128)
 
Sw1(config-if)#spanning-tree (vlan 1) port-priority 16  修改端口优先级
                                 (必须是16的倍数)
 要在发送方改。
 
<STP端口选择依据,依次比较>
    Lowest RID
Lowest path cost to root bridge
Lowest sender BID
Lowest sender port ID
 
<BPDU Timer>
BPDU多播地址:01:80:c2:00:00:00
·Message Age:最大存活时间(20S)
 Hello Time:根桥连续发送BPDU的间隔(2S)
 Forward Time:SW在监听和学习状态所停留的时间(15S)
 
spanning-tree vlan 1-10 hello-time 3   改发送BPDU的时间间隔
spanning-tree vlan 1-10 forward-time 13   修改forward时间
spanning-tree vlan 1-10 max-age 33    修改最大存活时间
 
1.老化时间(blocking)(loss of BPDU detected)max age=20s
2.监听时间(listening)forward delay=15s
3.学习时间(learning)forward delay=15s
 
      监听BPDU 学习MAC 帧转发
Blocking   √    ×   ×
Listening   √    ×   ×(选举Root/RP/DP)
Learning   √    √   ×
Forwarding  √    √   √
 
<STP Topology Change>
 
·当发生如下事件时,SW会发送TCN:
 1.链路故障(FWD -> BLK)
 2.端口进入转发状态,并且SW已经拥有DP
 3.非根桥从它的DP接收到TCN,并将其转发
 
TCN BPDU只包含三个字段:pro id,version,message,也就是BPDU的前三个字段
 
 Flags:
  TC(Topology Change) TC置位的BPDU只会由Root产生
  TCA (Topology Change Acknowledge)
 
根桥所做的工作:
1.收敛现在的网络;
2.Aging-time:将MAC地址表的老化时间直接变成Forward time
 
<STP和802.1Q>
 
·在采用802.1Q的Trunk中,SW为Trunk中所允许的每个VLAN维护一个STP。
 (PVST)
 
·对于不支持802.1Q的SW,所有VLAN维护一个STP。(SSTP)
 
·在交换网络中,STP是始终运行的,如果链路没有Trunking.STP只维护VLAN1的信息。
 
Per VLAN Spanning Tree
优点:1.基于Vlan的负载根端;
缺点:1.BPDU是基于Vlan 的基础上运行的;