cisco的生成树

  生成树协议(英语:Spanning Tree Protocol,STP),是一种工作在OSI网络模型中的第二层(数据链路层)的通信协议,基本应用是防止交换机冗余链路产生的环路.用于确保以太网中无环路的逻辑拓扑结构.从而避免了广播风暴,大量占用交换机的资源.

 

那为什么形成了物理环路就会产生网络风暴呢?

  这要从交换机的工作原理说起了,由于交换机的工作原理是储存转发,当交换机收到报文后,根据MAC-IP对应关系把数据包转发出去,如果MAC地址表里没有这样的对应关系,就会把报文通过广播的方式发送到链路中,一个报文到达链路末端后没有找到地址会被丢弃。但是如果是环路的话,报文就无法达到链路末端,一直在环路里循环转发,形成网络风暴,浪费交换机性能。

1、生成树协议种类

1.1 IEEE通用生成树CST(STP,IEEE802.1D)

  CST以交换机为单位运行STP。所有vlan对应一个生成树。但是当vlan盛行之后,IEEE802.1D已经不在适用,Cisco为了满足用户需求,就对802.1D进行了扩展,于是出现了PSVT。

1.2. PSVT(Per-VLAN Spanning Tree)

  PSVT是Cisco的私有协议,是基于Vlan的生成树协议。PSVT为每一个VLAN创建一个STP实例。

优点:

  • 能够优化根网桥的位置,能为VLAN提供最优的路径。

缺点:

  • 为了维护每一个STP,需要占用更多的CPU资源。
  • 为了支持各个VLAN的BPDU报文,需要占用更多的Trunk带宽。
  • PVST是Cisco的私有协议,不能与其他厂商的交换机协同工作。

1.3 PSVT+(Per Vlan Spanning Tree Plus)

  PSVT+是Cisco为了解决PVST不能与其他厂商的交换机协同工作的问题,并且PSVT+成为了交换机产品的默认生成树协议。

PSVT+运行方式:

  在VLAN1上运行普通的STP协议,在其他VLAN上运行PSVT协议。

1.4 RSTP(快速生成树协议 IEEE0.1W)

  随着时间的推移,在Cisco的竞争压力下,IEEE对过时的802.1D进行了修改,于是有了IEEE01.W,也就是RSTP,实际就是正在802.1D的基础上添加了几个类似Cisco的特性。

1.5 Rapid PSVT+

  Cisco把具有RSTP特性的PSVT+叫做Rapid PSVT+,以区别上一代PSVT+。

1.6 MST(多生成树协议,IEEE802.1S)

  随着网络的快速发展,一个交换机上已经能配置成百上千个VLAN,对于每一个VLAN都要运行一个STP,显然是无法承受的。MSTP就是把多个VLAN继续宁分组,每个组就是一个MST实例。每个实例是一个生成树,而BPDU只对实例进行发送。这样就可以进行负载均衡也不会浪费带宽。一个生成树对应多个vlan。

1.7 各生成树协议区别

  • Cisco的PSVT,PSVT+,Rapid PSVT+都是多生成树协议,并且是基于VLAN的,为每一个VLAN分配一个生成树实例。
  • MSTP也是多生成树协议,但是对VLAN进行了分组,是基于实例的。
  • IEEE的STP,RSTP都是单生成树实例,是基于端口的。为每一个交换机分配一个生成树实例。

 

 

2、BPDU,网桥协议数据单元 

 

 

3、生成树的选举

一、选择根桥
1、BridgeID (桥优先级(默认32768)+MAC),越小越优。

在网络刚开始运行的阶段,所有交换机都会从所有端口发送BPDU,大家都认为自己是root,随着BPDU泛洪和收集,根据BPDU中所含信息,大家PK出来个结果,root被选举出来了。在此之后由Root 以默认2S为周期发送BPDU,所有的非root交换机从自己的根端口收到BPDU,再从自己的指定端口产生bpdu发出去。这就有点像我们从root倒一盆水下来,水顺着这颗无环的树从上往下不断的流。另外,被 block的非指定端口会源源不断的收到链路上的bpdu并一直侦听,当其在一定时间内没有再收到 bpdu,则认为链路出现了故障,开始进入新的收敛阶段。

二、每个非根桥上选择一个根端口(设备自身端口对比)
1、端口到达ROOT的开销(越小越优),此交换机的所有能接收到BPDU的接口入站方向的开销。
2、如果端口到达ROOT的开销相同,比较发送方的BridgeID(越小越优)
3、如果发送方的BridgeID相同,比较发送方的port ID(端口优先级(默认128)+端口号)(越小越优)

三、每个段选择一个指定端口(设备之间对比)
1、端口所在设备到达ROOT的开销(越小越优),链路两端的接口的出站方向的开销。
2、如果端口到达ROOT的开销相同,比较所在交换机的BridgeID(越小越优)

3、如果所在交换机的BID也相同,则比较所在交换机的端口ID.

四、阻塞剩下端口 

注意:根桥发送的BPDU中的根路径代价值为0,这个根路径代价是在接收端口增加的,不是在发送端口增加。其它交换机收到这根桥的bpdu后对其中的根路径代价的值进行改写,改写就是添加一个值,这个值 取决于接收接口的带宽,和链路带宽没有关系。其它交换机收到根桥的bpdu,不会改写Root ID的值 ,会改写Sender BID的值,让下游交换机知道该bpdu是谁转发的。

接口出入站方向都是对于接口所在交换机而言的。

 

 

4、以下面的拓扑图来讲解生成树的选举:

第一步,选根桥:

  cat-a,cat-b,cat-c三台交换机的优先级都是32768都相同,只能根据mac地址来选举,cat-a的mac地址最小,所以cat-a成为根桥。cat-b和cat-c为非根网桥。

第二步,在非根网桥上,选举唯一一个根端口

  当cat-a(根网桥)发送bpdu给cat-b时,bpdu中的根路径代价为0(step 1).当cat-b从1/1端口收到bpdu时,会把端口1/1的路径代价加到根路径代价(根路径代价是累加的,在接收端口增加)。cat-b接收到根路径代价并加上1/1端口代价19(step 2)。cat-b通过1/2接口发送bpdu(根路径代价为19)给cat-c(step 3)。

  当cat-c从接口1/2收到来自cat-b的bpdu(step 4),它会改写根路径代价为38(19+19),但是,cat-c也会从接口1/1收到根桥cat-a发送的bpdu,此bpdu中根路径代价为19(0+19)(step 5),cat-c从接口1/1到根桥的根路径代价为19,从接口1/2到根桥的根路径代价为38,所以选择1/1接口为根端口(step 6).cat-c会发送根路径代价为19的bpdu给下游的交换机(step 7)。

  注意:根路径代价在接收端口增加,而不是在发送端口增加。

三、每一个网段选唯一一个指定端口

  cat-a和cat-b各有一个接口在Segment 1网段,cat-a的接口1/1的根路径代价为0,因为cat-a为根桥,cat-b的1/1接口的根路径代价为19(从cat-a收到的bpdu中的根桥路径代价0加上cat-b的接口1/1的开销19),所以cat-a的1/1接口为指定端口。同理Segment 2网段的指定端口为cat-a的1/2接口。注意根桥的接口都是指定端口。

  Segment 3网段中cat-b和cat-c的1/2端口的根路径代价都为19,相同,则根路径代价比不出来,就要比所在交换机的BridgeID。cat-b和cat-c的优先相同,但cat-b的mac地址比cat-c 的小,所以cat-b的1/2端口成为Segment 3网段的指定端口。

四、其它不是指定端口和根端口的端口就阻塞。

 

5、生成树端口的状态

 

 

 

此条目发表在cisco分类目录,贴了, , 标签。将固定链接加入收藏夹。