生成树协议
一、演化
1、DEC STP,1985年DEC公司出的。
2、802.1D,1990年IEEE
3、CST(公共生成树),假设整个网络只有一条802.1D生成树。所以根只有一个,树也只有一个,从而每个VLAN都要通过相同路径,会导致次优化路径的问题。
4、PVST+(每个VLAN生成树增强),每个VLAN都有一个生成树,cisco的。
5、RSTP(快速生成树),IEEE 802.1w,能实现快速收敛,单实例。
6、MST(多生成树),将多个拥有同样数据流量需求的VLAN映射进同一个实例。16个RSTP实例。
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配置帧。
每个交换机端口都有一个开销值。
三、RSTP(802.1w)
1、端口角色:原先的阻断端口分为两个
替代端口:提供去往根桥的替代端口A 一般为丢弃状态 discard
备份端口:为交换机冲充当指定交换机的那个网段提供备份链路B,一般为丢弃状态 discard
2、端口状态:
discard:相当于STP中的 blocking、listening
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 A和Switch B之间就成了一条点对点链路,这样一来在网络中不会形成环路。
当Switch C再与Switch B连接时,同样会存在像Switch A与Switch B之间的握手消息交换。Switch C首先通过接收从中得来的建议消息,选举与Switch B连接的端口作为它的根端口,如图(3)所示。然后Switch C向Switch B发送一条同意消息,在Switch B收到这条同意消息后,就把连接Switch C与Switch B的这两个端口立即转变为转发状态。
在新交换机加入到这个活跃的拓扑结构中时,会重复以上的握手过程。作为网络汇聚,这个"建议-同意"握手进程是从根网桥指向生成树叶(也是生成树的最末端)的,一级级进行。
交换机从端口双工模式中学习到链路类型:一个全双工模式端口被认为具有一个点对点连接,半双工模式的端口被认为具有一个共享的连接。可以通过使用spanning-tree link-type接口配置命令进行的默认双工设置。
4、RSTP拓扑变更机制
当802.1D网桥检测到有拓扑变更,先通知根网桥,根网桥在发出的BPDU中设置TC标志(flag)转发出去。当网桥接收到带TC的BPDU,把CAM表老化时间降低到转发延迟的秒数,从而快速清除陈旧的信息。
缺点:缺乏一种反馈机制告诉网络,多少秒网络会收敛。
RSTP中,只有在非边缘端口进入转发状态的情况下才会导致拓扑变更。一般的端口阻塞不会导致相应的网桥产生 TC BPDU。
*必要情况,RSTP网桥启动TC While计时器,为非边源端口和根端口hello的2倍。是通知其他网桥拓扑发生变化所需要的时间间隔。
*RSTP网桥清除与所有非边源端口相关联的MAC地址。
*运行TC While计时器,设置了TC位的端口会发出BPDU。计时器活跃状态时,网桥会在根端口发送BPDU。
当网桥从邻居收到TC BPDU:
*网桥清除所有端口上学到的MAC地址(除接收TC BPDU的接口)
*启用TC While计时器,发送TC BPDU(指定端口和根端口);若有老式设备还会发特定的TCN BPDU。
5、PVRST+网桥标识符
网桥都有一个ID,为BID。
802.1D,BID=网桥优先级+MAC,VLAN由CST表示。
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周期。
MST对VLAN进行分组并将其关联到生成树实例,可以在干道上组建多生成树。这种架构可以为数据流量提供多条转发路径,并且支持负载均衡功能。
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。
本文出自 “power” 博客,谢绝转载!