路由优先级
路由优先级决定了在多种可达的路由类型中,哪种路由将被用来转发数据包。路由优先级值越低,对应路由的优先级越高,优先级值255表示对应的路由不可达。一般情况下,静态路由的优先级为1,OSPF路由优先级为110,RIP路由优先级为120。
环路检测(信锐安视交换机)
指定环路检测端口,在环路检测间隔发送环路检测报文(目的MAC地址默认广播),对应端若收到回文,则采取环路处理动作(关闭端口/阻塞端口/退出环路VLAN),经过自定义自动恢复时间,取消环路处理动作。
1、前言
为了保证网络的可靠性,通常采用冗余链路的方式,但这一定程度上也提高了网络环路的可能性。为了避免网络环路产生的广播风暴和MAC地址表震荡等问题,基于802.1D标准的STP(Spanning Tree Protocol)应运而生。STP是局域网中的环路破除协议,通过设备发送交互信息来发现网络中的环路,并有选择地对某些端口进行阻塞,最终将环形网络结构修剪成无环路的树形网络结构,达到破除环路的目的。另外,如果当前活动的路径发生故障,STP还可以激活冗余备份链路,恢复网络连通性。
网络环路(第二层/第三层):目的路径不明确产生的环路。
环路引起的广播风暴:数据包在环路中不断传输,形成广播风暴,导致无法通信
MAC地址表震荡:
2、STP
STP拓扑
在运行STP协议的网络中,一台设备被称为一个网桥,或简称桥。每个桥都有一个桥ID(Bridge ID,即BID),IEEE 802.1d标准中规定BID是由桥优先级(Bridge Priority)与桥MAC地址构成。BID桥优先级占据高16位,其余的低48位是MAC地址。
根桥(Root Bridge),网桥ID最小的桥,通过设备间互相配置BPDU报文选举。
根端口(Root Port),根路径开销最小(链路协商速率最大)的端口,负责向根桥转发数据。路径开销计算方式,10Gbps=1,1Gbps=10,100Mbps=19,10Mbps=100。
指定端口(Designed Port),负责向根端口转发BPDU配置消息的端口。
非根、非指定端口阻塞。
BPDU报文(配置消息)
BPDU报文被封装在以太网数据帧中,目的MAC是组播MAC,STP协议的BPDU报文分为,配置BPDU 和 TCN BPDU
配置BPDU报文产生的情况:
- 端口使能STP,配置BPDU就会按照Hello Time定时器规定的时间间隔从指定端口发出。
- 当根端口收到配置BPDU时,如果优先级比自己的配置BPDU高,则会根据收到的配置BPDU中携带的信息更新自己STP端口存储的配置BPDU信息并从指定接口向下游发送,否则会丢弃该配置BPDU。
- 当指定端口收到比自己差的配置BPDU时,会立刻向下游设备发送自己的BPDU。
STP端口角色
根端口:去向根桥最小路径开销的端口
指定端口:向本机根端口转发配置消息的端口
STP端口状态
STP端口一共有5种状态,分别是:Disabled、Blocking、Listening、Learning、Forwording。
- 端口Up或使能了STP,会从Disabled状态进入到Blocking状态。
- 端口被选举为根端口或指定端口,会进入Listening状态。
- 端口的Forward Delay定时器超时,会进入Learning/Forwarding状态。
- 端口不再是根端口或指定端口时,会进入Blocking状态。
- 端口Down或者去使能STP时,就进入Disabled状态。
STP选举原则
最小根桥ID: ----------->选举根桥
最小根路径开销: ----------->选举非根桥设备的根端口
最小发送设备BID: ----------->选举最小根路径开销相同情况下的根端口
最小发送端口PID: ----------->根路径开销相同时,阻塞PID较大的端口
STP的定时器
Hello Time:设备每隔Hello Time时间会向周围的设备发送BPDU报文,以确认链路是否存在故障,拓扑发送变化时,TCN BPDU的发送不受此计时器的管理。
Forward Delay:设备状态迁移的延迟时间(Listening->Learning、Learning->Forwarding),默认时间间隔为15S,STP防止临时环路的关键。
Max Age:端口BPDU报文老化时间
运行STP协议的网络中非根桥设备收到配置BPDU报文后,报文中的Message Age和Max Age会进行比较:
- 如果Message Age小于等于Max Age,则该非根桥设备继续转发配置BPDU报文。
- 如果Message Age大于Max Age,则该配置BPDU报文将被老化。该非根桥设备直接丢弃该配置BPDU,可认为网络直径过大,导致根桥连接失败。
如果配置BPDU是根桥发出的,则Message Age为0。否则,Message Age是从根桥发送到当前桥接收到BPDU的总时间,包括传输延时等。实际实现中,配置BPDU报文每经过一个桥,Message Age增加1。
STP拓扑计算方法
①初始状态:每个桥都认为自己是根桥,在网络拓扑中互发BPDU报文,根桥字段都是用各自的BID,发送者BID是自己的BID,端口PID是发送BPDU报文端口的PID
②选择根桥:网桥间通过交换配置消息,比较根桥ID,根桥ID小的网桥被选择为根桥
③选择根端口、指定端口:
(1)非根桥设备将接受最优配置消息且根路径开销最小的端口定为根端口
(2)设备根据根端口的配置消息和根端口的路径开销,计算指定端口配置消息
(3)设备将计算的指定端口配置消息与待定端口自己的配置消息比较,更优的为指定端口
STP拓扑变化机制
在链路未发生故障前,流经DeviceA的流量通过DeviceC进行转发,若DeviceC与DeviceD之间的链路故障,由于MAC地址未老化(缺省为5min),DeviceA上仍有指向DeviceC的MAC表项,流经DeviceA的流量仍会向DeviceC转发,造成流量丢失,所以需要拓扑变化机制将拓扑的变化通知整个网络
3、RSTP(快速收敛)
随着局域网规模的扩大,STP收敛慢的问题逐渐凸显,因此IEEE发布了802.1W标准,基于STP协议,定义了RSTP协议。
STP协议收敛速度慢主要体现在STP算法是被动的算法,主要依靠定时器等待的方式判断拓扑变化;STP算法要求其对应的拓扑是稳定的,由根桥主动发出配置BPDU报文,非根桥设备只能中继配置BPDU报文,将其传遍整个STP拓扑;STP没有细致区分端口状态和端口角色,例如,从用户的角度来说,Listening、Learning和Blocking状态都不转发用户流量,三种状态没有区别;从使用和配置的角度来说,端口之间最本质的区别在于端口的角色,而不在于端口状态。
RSTP协议针对以上不足做出的改进有:
①将端口角色和端口状态解耦,在配置BPDU的格式中,充分利用Flag字段,明确了端口角色。
②配置BPDU的处理方式发生了变化:
拓扑稳定后,对于非根桥设备,无论是否收到根桥传来的配置BPDU报文,都会自主地按照Hello Timer规定的时间间隔发送配置BPDU。
如果一个端口在超时时间(超时时间=Hello Time × 3 × Timer Factor)内没有收到上游设备发送过来的配置BPDU,那么该设备认为与此邻居之间的协商失败。而不像STP那样需要先等待一个Max Age。
当一个端口收到上游的指定桥发来的RST BPDU报文时,该端口会将其与自身存储的RST BPDU进行比较。如果该端口存储的RST BPDU的优先级较高,则直接丢弃收到的RST BPDU,并立即向上游设备回应自身存储的RST BPDU。当上游设备收到回应的RST BPDU后,会根据其中相应的字段立即更新自己存储的RST BPDU。由此,RSTP处理次等BPDU报文不再依赖于任何定时器通过超时解决拓扑收敛,从而加快了拓扑收敛。
③引入快速收敛机制,包括Proposal/Agreement机制、根端口快速切换机制、新增边缘端口。
④引入多种保护功能,包括BPDU保护、根保护、环路保护、防TC-BPDU攻击。
RSTP的端口角色和端口状态
RSTP的端口角色共有4种:根端口、指定端口、Alternate端口和Backup端口,与STP相比,新增加了2种端口角色。
不同于STP的5种端口状态,RSTP将端口状态缩减为3种。根据端口是否转发用户流量和学习MAC地址,端口状态可分为:
- Discarding:端口既不转发用户流量也不学习MAC地址;
- Learning:端口不转发用户流量但是学习MAC地址;
- Forwarding:端口既转发用户流量又学习MAC地址
RSTP如何实现快速收敛
在一个运行RSTP的网络中,检测拓扑是否发生变化只有一个标准:一个非边缘端口迁移到Forwarding状态。
一旦检测到拓扑发生变化,设备将进行如下处理:
- 为本交换设备的所有非边缘指定端口和根端口启动一个TC While Timer,该计时器值是Hello Time的两倍。在这个时间内,清空所有端口上学习到的MAC地址。同时,由非边缘指定端口和根端口向外发送RST BPDU,其中TC置位。一旦TC While Timer超时,则停止发送RST BPDU。
- 其他交换设备接收到RST BPDU后,清空所有端口学习到MAC地址,除了收到RST BPDU的端口。然后也为自己所有的非边缘指定端口和根端口启动TC While Timer,重复上述过程。
这样就实现了RST BPDU在网络中的泛洪。
相比于STP,RSTP的一个突出优势就在于快速收敛能力,而RSTP实现快速收敛关键在于引入了Proposal/Agreement机制、根端口快速切换机制、边缘端口。
Proposal/Agreement机制
Proposal/Agreement机制简称P/A机制,其目的是使一个指定端口尽快进入Forwarding状态。如图所示,根桥S1和S2之间新添加了一条链路。在当前状态下,S2的另外几个端口p2是Alternate端口,p3是指定端口且处于Forwarding状态,p4是边缘端口。
图13-11 Proposal/Agreement过程示意图
新链路连接成功后,P/A机制协商过程如下:
- p0和p1两个端口马上都先成为指定端口,发送RST BPDU。
- S2的p1口收到更优的RST BPDU,马上意识到自己将成为根端口,而不是指定端口,停止发送RST BPDU。
- S1的p0进入Discarding状态,于是发送的RST BPDU中把Proposal和Agreement置1。
- S2收到根桥发送来的携带Proposal的RST BPDU,开始将自己的所有端口进入sync变量置位(即同步变量:临时阻塞除边缘端口外的其他端口)。
- p2已经阻塞,状态不变;p4是边缘端口,不参与运算;所以只需要阻塞非边缘指定端口p3。
- 各端口的sync变量置位后,p2、p3进入Discarding状态,p1进入Forwarding状态并向S1返回Agreement位置位的回应RST BPDU。
- 当S1判断出这是对刚刚发出的Proposal的回应,于是端口p0马上进入Forwarding状态。
下游设备继续执行P/A协商过程。
事实上对于STP,指定端口的选择可以很快完成,主要的速度瓶颈在于:为了避免环路,必须等待足够长的时间,使全网的端口状态全部确定,也就是说必须要等待至少一个Forward Delay所有端口才能进行转发。RSTP的主要目的就是消除这个瓶颈,通过阻塞自己的非根端口来保证不会出现环路。而使用P/A机制加快了上游端口转到Forwarding状态的速度。
RSTP的保护功能
4、MSTP(快速收敛、负载均衡)
采用STP/RSTP协议的局域网内所有vlan共享同一棵生成树,无法在VLAN间实现数据流量的负载均衡,链路被阻塞后将不承载任何流量,有可能造成部分VLAN报文无法转发。
为了弥补STP和RSTP的缺陷,IEEE于2002年发布的802.1s标准定义了MSTP。MSTP兼容STP和RSTP,既可以快速收敛,又提供了数据转发的多个冗余路径,在数据转发过程中实现VLAN数据的负载均衡。
MSTP把一个交换网络划分成多个域,每个域内形成多棵生成树,生成树之间彼此独立。每棵生成树叫做一个多生成树实例MSTI(Multiple Spanning Tree Instance),每个域叫做一个MST域