chen7825 发表于 2013-11-12 10:55:26

{:soso_e104:}111111111111

1013659510 发表于 2013-12-9 19:24:24

~~~~~~``

xjyyf 发表于 2013-12-13 12:53:47

好用的

阿↗磊頭 发表于 2014-11-12 18:56:06

xzvzv

曹晖001 发表于 2014-12-2 12:33:32

太棒了,感谢楼主

奔腾的小猪7 发表于 2014-12-3 04:16:24

太棒了,感谢楼主

JAMETAO 发表于 2014-12-3 08:46:13

漂亮~

hmxaur 发表于 2014-12-3 09:38:39

好东西谢谢楼主分享

lpkeith 发表于 2014-12-7 23:12:07

沙发~支持楼主

1192179657 发表于 2015-3-28 21:04:42

谢谢   你的分享

秦无炎 发表于 2015-3-28 21:14:27

小狗 发表于 2015-3-29 02:03:00

我等你哟!

刺灵 发表于 2015-3-29 08:19:36

谢谢分享

CISCO李阳 发表于 2015-4-6 13:09:46

looklook

CISCO李阳 发表于 2015-4-6 13:10:37

交换笔记_第二天_STP

   
企业网络要求高可用性,它在很大的程度上依赖于处理业务的多层交换网络,其中确保高可用性的网络方法之一就是在整个网络中提供设备、模块和链路的冗余。但是冗余可能会带来新的问题——交换环路

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

•在一个交换网络中有可能会出现单点失效的故障,所谓单点失效,指的是由于网络中某一台设备的故障,而影响整个网络的通信。为了避免单点失效,提高网络的可靠性,可以通过构建一个冗余拓扑来解决。但是,一个冗余的拓扑,又会给我们的网络造成环路,而产生其它的影响。为了解决二层环路问题,而设计了SPT协议。

•当2个Segment之间,只有一个物理设备连接时,就有可能“单点失效”。

•Segment段的概念)
  1.STP:一段网络介质(网线/光纤)。
  2.数据封装:携带4层报头的用户数据。
  3.路由:一个逻辑子网。

•避免单点失效的方法就是构造冗余网络。

•但冗余网络会导致新的问题:
 1.多帧复制
 2.MAC地址表的翻动
 3.广播风暴

•STP是为克服冗余网络中透明桥接的环路问题而创建的。
 STP通过判断网络中存在环路的地方,并阻断冗余链路来实现无环网络。

•STP采用STA(Spanning Tree Arithmetic)算法。
 STA会在冗余链路中选择一个参考点(生成树的根),将选择到达要的单条路径,同时阻断其他冗余路径。一旦已选路径失效,将启用其他路径。

BPDU(Bridge Protocol Data Unit)

•STP的各种选举是通过交换BPDU报文来实现的,BPDU是直接封装在以太网帧中的。

•对于参与STP的所有SW,它们都通过数据消息的交换来获取网络中其他SW的信息,这种消息就被称为BPDU。

•BPDU是直接封装在二层的协议,其MAC地址最后封装数为:00。(01:80:c2:00:00:00)

•BPDU的功能:
 1.选举根桥
 2.确定冗余路径的位置
 3.通过阻塞特定端口来避免环路
 4.通告网络的拓扑变更
 5.监控生成树的状态

•BPDU每2S由根桥发送一次。      
 最初的网络,每个SW都认为自己是根桥,都会发送BPDU,比较Lowest BID,选举出一个根桥,当根桥选出来以后。此时就只有根桥发送BPDU。非根桥只进行转发。

BPDU分两种类型:
1、配置BPDU--通常由根网桥以周期性间隔发出,包括了STP参数,用于进行各种选举。
2、TCN(topology change notification 拓扑变更通告)BPDU--这种BPDU是当交换机检测到拓扑发生变更时所产生。

•配置BPDU包含以下的字段
1、Protocol ID      : 固定为0
2、Version          : 802.1D (0)
3、Message Type   : (Config BPDU=0x00 / TCN BPDU=0x80)
4、Flags
5、Root ID
6、Cost of Path
7、Bridge ID
8、Port ID
9、Message age
10、Max age
11、Hellotime
12、Forward delay

•TCN(Topology Change Notification) BPDU
 这种BPDU是交换机检测到拓扑变更时产生的。只包含下列三个字段

   1、Protocol ID
  2、Version
   3、Message Type : (Config BPDU=0x00 / TCN BPDU=0x80)




<STP的4大工作流程>(STP里选举参数都是越小越优)

•      One root bridge per network
•      One root port per nonroot bridge
•      One designated port per segment
Nondesignated ports are blocked

•      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号,因为CISCO默认启用PVST
      
          每个交换机都有一个基准的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以下的交换机用这一命令


•      One root port per nonroot bridge(每个非根桥都要选出一个根端口)
      
      •根端口(RP):每个非根桥有且只有一个根端口
      
      选举RP的方法:
      1.Lowest RID(最小的RID)是SW1(根桥)的BID
      2.Lowest path cost to root bridge(到达根的最小路径开销)
      3.lowest sender BID (最小的发送BID)
      4.Lowest sender port ID当两台交换机之间有两条线路直连时会用到这一项来选
      
      •ath Cost:根桥发出的COST值是0,在下一交换机的入口处才加上COST值,出口处COST值不变。
       10Mbps: 100
      100Mbps:19
      1Gbps:4 
      10Gbps: 2
      
      Sw1#show interfaces status
      Sw1#show spanning-tree
      
      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注意:必须是16的倍数才行
      
•      One designated port per segment(每个Segment只有一个指定端口)
         
      选举DP的方法:
      1.Lowest RID(最小的RID)是SW1(根桥)的BID
      2.Lowest path cost to root bridge(到达根的最小路径开销)
      3.lowest BID (最小的发送BID)
      4.Lowest port ID
      
      •根桥的所有端口都是指定端口(DP)。
      
      
•      Nondesignated ports are blocked(非指定端口将被堵塞)
      
      •最后,既不是根端口,又不是指定端口的哪些接口被称为非指定端口,这些端口将被block掉。从而达到防环的目的。

为了方便大家记住stp的选路规则,我设计一个顺口溜,方便大家理解和记忆!
端口选举顺口溜:

交换环路不可怕,记住规则就没有啥!
全网只有一根桥,非根只有一根口
一段一个指定口,其他都是阻塞口

先根桥,后根口,接着指定阻塞口
选根桥,看级别,级别MAC越小越好
选根口,比较难,需要四条才算完
先级别、再成本、再看发者的id和port
选指定、比较易、还是四条但简单
先级别、再成本、再是自己的id和port
剩下的端口没人要,不是阻塞就shut


<生成树的收敛>
当网络出现故障导致拓朴发生变化时,生成树要进行收敛,在收敛过程中,一个block接口变到forward状态时会经历以下四种状态变化。

生成树端口状态:
1、blocking--阻塞状态,不转发帧,监听流入的BPDU,不学习MAC地址
2、listening--监听状态,不转发帧,不学习MAC地址,能够决定端口角色
3、learning--学习状态,不转发帧,能学习MAC地址
4、forwarding--转发状态,能够进行正常的帧转发

当拓扑发生变化时,端口从阻塞状态过渡到正常转发状态的时间是30-50S
如果是直连接口down掉,端口状态过渡最大需要30S
如果是非直连故障,最大需要50S

<二层MAC地址表的收敛>
注意:在网络拓朴发生改变后,不仅会有STP的收敛,还会导致二层MAC地址表的收敛。

•当发生如下事件时,SW会发送TCN:
 1.链路故障(FWD -> BLK)
 2.端口进入转发状态,并且SW已经拥有DP
 3.非根桥从它的DP接收到TCN,并将其转发

MAC地址表的收敛过程如下:
1、拓扑发生改变的交换机向RP端口发出TCN的BPDU
2、上级交换机做两件事:先回应一个TCN置位的BPDU,再继续向自已的RP接口发出TCN的BPDU
3、TCN的BPDU就这样一跳跳的传到根交换机上
4、然后根交换机将自已MAC地址表的老化时间由默认的300S改为转发延迟时间(15S)。
5、根交换机再向网络中发出TC置位的BPDU
6、网络中的其他交换机收到TC置位的BPDU后,也将自已MAC地址表的老化时间由默认的300S改为15S。

这样,每台交换机就快速的老化了MAC地址表,清除掉了已经失效的MAC地址条目。

<BPDU Timer>

三个计时器:
•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和802.1Q>

优点:
所有交换机只运行一个生成树,交换机开销低
缺点:
多个vlan公用一个生成树,不能实现负载均衡
交换机的收敛时间比较长




 
•对于不支持802.1Q的SW,所有VLAN维护一个STP。(SSTP)
•在交换网络中,STP是始终运行的,如果链路没有Trunking.STP只维护VLAN1的信息。
•CISCO交换机上,在采用802.1Q的Trunk中,SW为Trunk中所允许的每个VLAN维护一个STP。
 (PVST)



Per VLAN Spanning Tree
优点:1.基于Vlan的负载均衡;
缺点:1.交换机的收敛时间比较长
      2.所有交换机运行多个生成树,交换机开销高


<STP的一些增强特性>

•802.1D STP设计初衷:网络中断后能够在1分钟之内(Max=50S)恢复。
 伴随着LAN出现3层交换,很多的路由协议(OSPF/EIGRP)都能在几秒之内收敛。

•Cisco为加快收敛时间,提出了一些私有的优化特性来加速STP的收敛:
 1、PortFast
2、UpLinkFast
3、BackboneFast

•ortFast: 
 能够让2层的接入端口(接host)跳过LIS/LRN状态立即进入FWD。30S->0S
 基于接口,用于接非交换机接口,不要设置在接SW的端口。

Sw1#show spanning-tree
 Type: Edge

测试:把交换机的端口shutdown,再no shutdown,观察状态。启用前和启有后是不一样的。

Sw1(config)#spanning-tree portfast default (所有接口启用)全局下用
一般用在接入层的交换机上。

Sw1(config-if)#spanning-tree portfast接口下单独启用

Sw1(config-if)#spanning-tree portfast disable (某个口禁用,通常是连接另一台交换机的口)

优化后:节约30s钟


•UplinkFast:
 在接入层SW上配置,用于检测直连到分布层SW的链路故障,并加速STP的收敛速度。
也可以在分布层交换机上配置,用于检测直连到核心层交换机的链路故障
30S->0S

Sw2(config)#spanning-tree uplinkfast
(Uplinkfast是一个全局命令,将影响SW上的所有VLAN)

Debug spanning-tree events

测试:将有效链路口shut,原来BLK口立即转发,

•Uplinkfast将网桥PRI增加到49152,将端口Cost增加3000
 使SW不能成为Root。所以一般配置在接入层SW。

Sw2#show spanning-tree
  ........Uplinkfast enabled

Sw2#show spanning-tree uplinkfast 可以看到哪些接口成为备份

Sw2(config)#spanning-tree uplinkfast max-update-rate 200
(每秒所发包的数目,默认值150)
优化后:节约30s钟


•BackboneFast:
 BackboneFast是对UplinkFast的一种补充。用于检测主干SW间的链路故障。(50S -> 30S)

•要求BackboneFast应用在所有SW上。

当交换机检测到次级BPDU后,将使用替代路径发送RLQ BPDU(根链路查询BPDU),RLQ BPDU通过中间交换机向根交换机传播,并且根交换机将最终响应。

Sw1(config)#spanning-tree backbonefast

Sw1#show spanning-tree backbonefast 可以查看RLQ消息和次级BPDU


优化后:节约20S







PVST(Per Vlan Stp)
 Cisco SW 默认为每个VLAN生成一个STP,互不影响。
由于是为不同的VLAN生成不同的生成树。所以每一台交换机需要为不同的VLAN生成一个不同的桥优先级,所以在CISCO交换机上,交换机在每一个VLAN中的优先级是默认的32768再加上VLAN的号码。

可通过以下命令指定一台交换要为根桥:

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的倍数)

•VST+(Per Vlan Stp)
PVST+(Per VLAN Spanning Tree Plus,增强的每VLAN生成树)
同时支持cst和pvst


rapid-pvst
Per-Vlan rapid spanning tree mode每VLAN快速生成树

以上三个全部为cisco私有协议
而我们的业内标准为:
802.1dstp
802.1smst
802.1wrstp



PVST优缺点:
优点:
1、负载均衡
缺点:
1、收敛时间长
2、交换机负载大

Rapid-PVST:
优点:
1、负载均衡
2、收敛速度快
缺点:
1、交换机负载大


RSTP(Rapid STP) 802.1w当前主流技术

•RSTP的基本工作原理与STP相同,要经历四个工作流程,也有相同的四个选举规则。
•当网络拓扑发生改变时,快速生成树协议能够明显地加快重新计算生成树的速度。

启用命令:
    spanning-tree mode rapid-pvst   //理论一大把,命令就一条

RSTP的特点:
•RSTP中,将接口的链路类型分为两种:
1、共享链路    如果接口工作在半双工则是share类型的链路
2、点到点链路如查接口工作在全双工则是point-to-point类型的链路

注意:仅仅只在点到点链路上RSTP才能实现快速收敛

•RSTP中定义了3种端口状态:
 Discarding 丢弃
Learning
Forwarding
 
•RSTP中的端口角色:
 RP:根端口
 DP:指定端口
 Alternate Port:替代端口
 Backup Port:备份端口
 
•默认集成backbonefast
将portfast也集成了,改名为边缘端口edge,要手工加载,加载的方法都和portfast一样。

•RSTP中BPDU的格式:
 在Flag字段总共8 bit,STP中只用到2 bit,
 RSTP用到其他6 bit来完成端口状态和角色的编码。

 Version: 2
 Message Type : 2

•在802.1D中,只有当SW从根端口收到BPDU时,非根桥才能转发BPDU。
 在802.1w中,每个SW会每隔2S就发送一次包含当前信息的BPDU。

•定义了Proposal和agreement消息用来做快速收敛

•关于拓朴变更后MAC地址表的收敛过程:
注意:在RSTP中,只有当非边缘端口进入转发状态的时候才会导致拓扑变更,才会产生TC BPDU,连接的丢失不会导致拓扑变更,也不会产生TC BPDU。
在RSTP中,每台交换机都可以下发TC置位的config BPDU,这样也实现了快速收敛
除非网络有老式设备,否则RSTP不需要使用TCN BPDU
STP优缺点:业内标准
优点:
1、交换机负载小
缺点:
1、收敛时间长
2、负载均衡
PVST优缺点:cisco 私有
优点:
1、负载均衡
缺点:
1、收敛时间长
2、交换机负载大

RSTP优缺点:业内标准
优点:
1、收敛速度快
2、多个vlan公用一个生成树,交换机执行效率较高
缺点:
不能负载均衡

Rapid-PVST:cisco私有
优点:
1、负载均衡
2、收敛速度快
缺点:
1、交换机负载大

MST(Multiple Spanning Tree) 802.1s

CST (Common Spanning Tree)
缺点:所有的Vlan都是按照同一个STP来工作的。
优点:开销小。

PVST
优点:可以为每个Vlan配置一个STP。可以实现基于Vlan.L2的负载分担。
缺点:SW维护很多的STP,开销大。Vlan改变,波及大。

MST(对CST和PVST的折衷方案)
1.MST对vlan分组(Instance)
2.每个分组可以有独立的STP,实现L2负载分担。
 
spanning-tree mode mst (启用MST)

spanning-tree mst configuration
name WOLF
revision 10
instance 1 vlan 1-5
instance 2 vlan 6-10

spanning-tree mst 1 priority 4096 修改本交换机在这一大堆VLAN中的优先级

int f0/5
spanning-tree mst 1 cost 19 修改本接口在这一组中的开销

show spanning-tree mst
show spanning-tree mst configuration

show current
show spending

有一个默认组0,没划分的VLAN就在这里面
MST不能和PVST共存,可以和RSTP共存

RSTP优缺点:
优点:
1、收敛速度快
2、多个vlan公用一个生成树,交换机执行效率较高
3、负载均衡


<优化STP>

•BPDU防护:
 对于设置了PortFast接口,却收到了BPDU,如果设置了BPDU防护,就能将此接口关闭,而不会进入生成树状态。

spanning-tree portfast bpduguard default (全局开启)

int f0/1
spanning-tree bpduguard enable (接口开启)

show spanning-tree summary

Show errdisable recovery   显示可导致接口errdisable的选项

设置自动恢复:
errdisable recovery cause bpduguard设置300S(默认)后自动修复bpduguard所导致的errdisable
errdisable recovery interval 30   修改默认的修复时间

•BPDU过滤:不发也不收
 通过使用BPDU过滤,能够防止在启用portfast的端口上向host发送不必要的BPDU。

注意:
如果在全局下配置,从端口收到BPDU的话,不会禁掉端口,会转为正常的STP状态
如果在接口下配置,从端口收到BPDU的话,会丢弃。
如果在同一接口设置Guard/Filter , F优于G

BPDU过滤只是一种优化技术,在接口上配置BPDU过滤有可能导致桥接环路,所以不推荐使用。

spanning-tree portfast bpdufilter default(全局开启)

int f0/9
spanning-tree bpdufilter enable (接口开启)

show spanning-tree summary totals

•根保护:
 能够将接口强制设为DP,进而防止对端SW成为Root。
设置了根保护的端口如果收到了一个优于原BPDU的新的BPDU,它将把本端口设为blocking禁止状态,过一段时间,如果没再收到BPDU,它会恢复端口,这一点不同于BPDU的防护。
 
int f0/5
spanning-tree guard root

测试:将其他SW变成根桥,看原来根桥的现象:
show spanning-tree inconsistentports
Show spanning-tree interface f0/2 detail
show spanning-tree
Fa0/2            Desg BKN*19      128.2    P2p *ROOT_Inc

•环路保护: 对于软件故障处理得更好
 当STP中的BLK端口错误的过渡到FWD状态,有可能出现环路。
 启用Loopguard的接口,如果原来的BPDU老化了,不会转到listening状态,而将自动转为inconsistent状态
在inconsistent状态下,会再根据对端交换机发过来的BPDU进行决定端口状态。
如果是出现了单向链路失效的现象,对端交换机是不会有BPDU过来的,所以接口将一直保持inconsistent。
 默认情况下是禁用的。
 
spanning-tree loopguard default (全局)

int f0/9
spanning-tree guard loop (接口)

•UDLD单向链路失效检测: 对于硬件故障处理得更好
 单向链路失效是比较常见的现象,以太网线缆的收发出现问题。
当链路保持“UP”的时候,接口却没有流量收到。
UDLD是一种二层协议,它与第一层机制协同工作来确定链路的物理状态。
 启用UDLD能使得这种接口自动进入“err-disable”状态。
启用了UDLD的交换机之间会互相发送UDLD协议包来保持联系,默认间隔15S

Sw1(config)#udld enable 也可在接口下配

show udld   

积极模式的UDLD--当端口停止接收UDLD的数据包时,UDLD将尝试重新建立与邻居的连接,但如果尝试8次之后还不成功,那么两端的端口都将成为“err-disable”状态。

Err-disable特性:
在CISCO交换机上有很多的保护特性都会导致接口进入err-disable状态

接口如果进入err-disable状态:有两种方法恢复

1、手动恢复
   先shutdown、再no shutdown
2、自动恢复
   errdisable recovery cause {all|arp-inspection|bpduguard|link-flap} 指定原因
   errdisable recovery interval 30   指定自动恢复时间间隔




STP排错:
1、双工不匹配
2、单向链路失效
3、帧破坏
4、资源错误
5、portfast配置错误
6、STP直径参数配置不恰当


命令总结:
bgduguard
接口开启:sw1(config-if)#spanning-tree bpduguard enable
全局开启:sw1(config)#spanning-tree portfast bpduguard default
如果对所有开了portfast的端口进行限速如何办?
sw1(config)#spanning-tree portfast bpduguard【对所有开启了portfast的接口进行bpdu防护】
loopguard
接口开启:spanning-tree guard loop
全局开启:span-tree loopguard default
loop防护:该技术不能与根保护一起用,一起使用后会互相覆盖。
bpdufilter
sw3(config-if)#spanning-tree bpdufilter enable
sw1(config)#spanning-tree portfast bpdufilter default
bpdufilter和bpduguard一起使用时,bpdufilter优先!
rootguard
sw1(config-if)#spanning-tree guard root
页: 5 6 7 8 9 10 11 12 13 14 [15] 16 17 18 19 20 21 22 23 24
查看完整版本: CRT工具