生成树协议

一、演化

1、DEC STP,1985DEC公司出的。

2、802.1D1990IEEE

3、CST(公共生成树),假设整个网络只有一条802.1D生成树。所以根只有一个,树也只有一个,从而每个VLAN都要通过相同路径,会导致次优化路径的问题。

4、PVST+(每个VLAN生成树增强),每个VLAN都有一个生成树,cisco的。

5、RSTP(快速生成树),IEEE 802.1w,能实现快速收敛,单实例。

6、MST(多生成树),将多个拥有同样数据流量需求的VLAN映射进同一个实例。16RSTP实例。

7、PVRST+,为每一个VLAN提供一个802.1w实例。同时解决了快速收敛和次优化路径问题。

二、生成树协议基础

STP操作

1、选举1个根网桥:stp会根据一个进程选举根网桥,根网桥上所有端口都是指定端口,进行发送和就收流量及BPDU。优先级越低,越容易成为。

2、选举所有非根网桥的根端口:每个非根网桥都有一个根端口,进行发送接收流量,根端口所连路径是非根网桥到根网桥开销最小的路径。当有多跳等价路径,看端口ID(优先级+端口号)

3、选举各个网段的指定端口:每个网段都有一个指定端口,到根网桥的路径开销最低。

stp通过检查一台交换机的端口角色来判断转发数据帧的最佳路径。

二层端口状态

1阻断blocking:丢弃数据帧,不学习地址(桥ID地址),接受BPDU配置信息,用来确定根网桥位置和根ID,和收敛后各交换机端口状态(20s

2侦听listening:丢弃数据帧,不学习地址,接受及发送BPDU,依此通告邻居交换机该端口在拓扑中参与转发数据帧(15s 转发延迟)

3学习learning:丢弃数据帧,学习地址(桥ID地址),准备参与数据帧的转发,填写CAM表,接受BPDU配置信息15s 转发延迟)

4转发 forwarding:发送,接受数据帧,学习地址,收发BPDU.

5、禁止disabled:丢弃数据帧,丢弃收到的BPDU转发帧,不学习地址,不接受BPDU配置帧。

每个交换机端口都有一个开销值。

三、RSTP802.1w

1、端口角色:原先的阻断端口分为两个

替代端口:提供去往根桥的替代端口A  一般为丢弃状态  discard

备份端口:为交换机冲充当指定交换机的那个网段提供备份链路B,一般为丢弃状态  discard

2、端口状态

discard:相当于STP中的  blockinglistening

learning:相当于stp中的learing

forwarding:相当于stp中的forwarding

802.1D中的stp端口状态与角色是有关系的,在RSTP来看,阻塞和侦听状态的端口没有区别,这两种状态都会丢弃数据帧,也都不会学习MAC地址。因此RSTP取消了端口角色与端口状态之间的相关性。

3、快速过渡到转发状态

协议增加两个变量:边缘端口和链路类型。

链路类型:对每个参与RSTP的端口进行归类。链路状态可自动通过端口的双工模式获取。全双工是点对点,半双工是共享端口。

边缘端口:也就是启用了portfast的端口。它和点到点链路可直接过渡到转发状态,跳过监听和学习。

在执行端口过渡而检查链路类型参数之前,RSTP必须确定端口的角色:

根端口:不使用链路类型参数。:一旦端口接收到了根的BPDU,根端口可以快速过渡到转发状态,而非边缘指定端口进入阻塞状态。---------sync(同步)

替代和备份端口:一般不用链路状态参数。

指定端口:使用链路类型参数。只有当链路类型参数表明这是一条点到点链路时,指定端口才能过渡到转发状态。

注:当边源端口(与postfast的不同点)接收到了BPDU,它会立即失去它的边缘端口身份,成为一个普通的生成树端口,并且生成一个TCN(拓扑变更通知)。

RSTP的快速收敛原理

RSTP可以在一个交换机,或者一个交换端口,甚至一个VLAN失效时快速恢复网络的连通性。所采用的机制就是"建议-同意握手"proposal-agreement handshake)机制。它为以下边缘端口、新的根端口,以及通过点到点链路而连接的端口提供了快速收敛:

边缘端口(Edge port):"边缘端口"是直接连接终端站点的网桥端口。如果在一个RSTP交换机上通过使用spanning-tree portfast接口配置命令把一个端口配置为边缘端口,则这个边缘端口会立即转变为转发状态。一个边缘端口同时作为一个启用了端口快速(PortFast)功能的端口,应当在它仅与单一终端站点连接时启用它。

根端口(Root Port):如果RSTP选举一个新的根端口,它将阻塞旧的根端口,并且立即转变这个新的根端口为转发状态。

点对点链接(Point-to-point Link):如果你通过一个点对点链路把一个端口与另一个端口连接起来,并且本地端口成为指定端口,则该端口将使用"建议-同意握手"机制与其他端口进行协商,以确保有一个可用的环路。

9-15是一个RSTP端口角色转换示例,在图中的DP"指定端口"RP"根端口"F代表相应端口处于转发状态。

在图(1)中,Switch A是通过一个点对点链路与Switch B连接的,并且所有端口是处于阻塞状态的。假设Switch A的优先权高于Switch B,所以Switch A成为"根网桥"Switch A先通过它的一个"指定端口"(根网桥上的端口都是"指定端口")发送一个建议消息(一个配置有建议标记设置的BPDU)到Switch B,建议由它自己作为指定交换机。

Switch B收到这条建议消息(Proposal Message)后,它就会选举接收这条建议消息的端口作为它的新根端口(如图(2)所示),强迫所有非边缘端口置于阻塞状态,并通过这个新的根端口发送一个同意消息(Agreement Message,一个配置有同意标记设置的BPDU),如图(2)所示。

Switch A接收到了Switch B发来的同意消息后,立即转变连接的两个端口为转发状态。因为Switch B阻止了它上面的所有非边缘端口,在Switch ASwitch B之间就成了一条点对点链路,这样一来在网络中不会形成环路。

Switch C再与Switch B连接时,同样会存在像Switch ASwitch B之间的握手消息交换。Switch C首先通过接收从中得来的建议消息,选举与Switch B连接的端口作为它的根端口,如图(3)所示。然后Switch CSwitch B发送一条同意消息,在Switch B收到这条同意消息后,就把连接Switch CSwitch B的这两个端口立即转变为转发状态。

在新交换机加入到这个活跃的拓扑结构中时,会重复以上的握手过程。作为网络汇聚,这个"建议-同意"握手进程是从根网桥指向生成树叶(也是生成树的最末端)的,一级级进行。

交换机从端口双工模式中学习到链路类型:一个全双工模式端口被认为具有一个点对点连接,半双工模式的端口被认为具有一个共享的连接。可以通过使用spanning-tree link-type接口配置命令进行的默认双工设置。

4、RSTP拓扑变更机制

802.1D网桥检测到有拓扑变更,先通知根网桥,根网桥在发出的BPDU中设置TC标志(flag)转发出去。当网桥接收到带TCBPDU,把CAM表老化时间降低到转发延迟的秒数,从而快速清除陈旧的信息。

缺点:缺乏一种反馈机制告诉网络,多少秒网络会收敛。

RSTP中,只有在非边缘端口进入转发状态的情况下才会导致拓扑变更。一般的端口阻塞不会导致相应的网桥产生 TC BPDU

*必要情况,RSTP网桥启动TC While计时器,为非边源端口和根端口hello2倍。是通知其他网桥拓扑发生变化所需要的时间间隔。

*RSTP网桥清除与所有非边源端口相关联的MAC地址。

*运行TC While计时器,设置了TC位的端口会发出BPDU。计时器活跃状态时,网桥会在根端口发送BPDU

当网桥从邻居收到TC BPDU

*网桥清除所有端口上学到的MAC地址(除接收TC BPDU的接口)

*启用TC While计时器,发送TC BPDU(指定端口和根端口);若有老式设备还会发特定的TCN BPDU

5、PVRST+网桥标识符

网桥都有一个ID,为BID

802.1DBID=网桥优先级+MACVLANCST表示。

PVST+PVRST+要每个VLAN一个生成树实例,所以要BID承载VLAN信息。重复使用优先级字段的一部分,用其充当扩展系统ID,承载VID信息。

8字节=64bit

注:网桥优先级会从4096开始。默认32768

6、802.1D的兼容性。

可以兼容,只不过快速收敛就会放弃。原理:每个端口有个变量,用来定义网段所用的协议,当在两个HELLO时间内,连续收到与当前模式不相同的BPDU,它就会进入其他STP模式。

注意:在全局启用postfast只会在access生效,只有spanning-tree postfast trunk才会在trunk口生效。

三、MST(多生成树)

目的:降低与网络的物理拓扑相匹配的生成树实例的总数,进而降低交换机的CPU周期。

MSTVLAN进行分组并将其关联到生成树实例,可以在干道上组建多生成树。这种架构可以为数据流量提供多条转发路径,并且支持负载均衡功能。

MST区域:一组相互连接,具有相同MST配置的网桥。

MST扩展系统ID

show current 当前MST的配置。

show pending 详细显示尚未应用的MST配置。

四、生成树的增强

1、BPDU防护(BPDU Guard):防止交换机意外连接到启用了postfast的端口。

2、BPDU过滤(BPDU Filter):限制交换机不向接入端口发送不必要的BPDU.

3、根防护(Root Guard):防止接入端口上的交换机成为根交换机。

4、环路防护:避免桥接环路的产生,提高二层网络的稳定性。

5、UDLD:检测并进制单行链路。

6、Flex链路:当一条链路转发流量,另一条处于备用模式,当主用关闭时转发流量。

BPDU防护postfast接口收到BPDU,此特性会让这个端口进入err-disable状态。管理员只能手动去除这个状态,还可以设定时间间隔自动启动。

spanning-tree portfast edge bpduguard default

或接口下,spanning-tree bpduguard enable

根防护,强制让接口成为指定端口,进而防止周围的交换机成为根交换机。若在次端口接收到更优的BPDU,则会进入“不一致根(root-inconsistent)”的STP状态(相当于监听状态)。

环路防护,在到STP转发状态前进行额外的检查,如果交换机在启用了环路防护特性的非指定端口上不再接收到BPDU,那么交换机会使该端口进入STP“不一致环路(loop-inconsistent)”阻塞状态。当又接收到BPDU时,会自动进入STP状态。应该在根端口和替代端口上启用。全局启用,只会认为是点到点链路端口上启用。

UDLD:邻居间流量单向传输,则是单向链路。UDLD使设备能够检测出网络中何时出现单向链路,并关闭相应接口。分为普通模式和积极模式,普通:当不能从对端接受UDLD,则UDLD只将这个端口状态改为未确定;积极:未接收UDLD后,会与邻居重新建立连接,8次失败后,进入err-disable