赞
踩
背景:一种二层技术,在局域网中,为了提高设备可靠性,会增加冗余链路,但是也会造成环路的问题,STP技术就是经过协议计算阻塞某个端口,来打破环路。
根桥:STP网络的逻辑中心,通过Hello Time间隔时间发送配置BPDU,给其他非根桥设备,可以被抢占
BID(桥ID):用来唯一标识一台STP设备,由16位桥优先级,48位MAC地址组成,BID总共64位长。BID最小的被选举根桥,默认优先级为32768。
PID(端口ID):由4位端口优先级和12位端口号组成。
COST:每一个激活了STP的接口都会维护着一个COST值,用来计算根路径开销。缺省cost值与带宽,工作模式,和所使用的STP cost计算方法有关。带宽越大cost值越小。华为默认采用,IEEE 8021.1t计算方法,100Mbps(1s传输100M流量),半双工工作模式下,缺省cost为200000
RPC(根路径开销):交换机某个接口到根桥的总的开销。从某个接口到根桥的开销之和等于从根桥到这个接口所经过交换机入接口之和。
BPDU(网桥协议数据单元):STP的协议报文,分为配置BPDU(0x00)和TCN BPDU(0x80)。为了计算生成树,交换机需要交换相关的信息和参数,这些都被封装在BPDU。
Hello Time:
运行STP协议的设备发送配置消息BPDU的时间间隔,用于设备检测链路是否存在故障。设备每隔Hello Time时间会向周围的设备发送hello报文,以确认链路是否存在故障。
当网络拓扑稳定之后,该计时器的修改只有在根桥修改后才有效。新的根桥会在发出的BPDU报文中填充适当的字段以向其他非根桥传递该计时器修改的信息。但当拓扑变化之后,TCN BPDU的发送不受这个计时器的管理。
Forward Delay:
设备状态迁移的延迟时间。链路故障会引发网络重新进行生成树的计算,生成树的结构将发生相应的变化。不过重新计算得到的新配置消息无法立刻传遍整个网络,如果新选出的根端口和指定端口立刻就开始数据转发的话,可能会造成临时环路。为此,STP采用了一种状态迁移机制,新选出的根端口和指定端口要经过2倍的Forward Delay延时后才能进入转发状态,这个延时保证了新的配置消息传遍整个网络,从而防止了临时环路的产生。默认为15s
Max Age:
端口的BPDU报文老化时间,可在根桥上通过命令人为改动老化时间。
Max Age通过配置BPDU报文的传输,可保证Max Age在整网中一致。运行STP协议的网络中非根桥设备收到配置BPDU报文后,报文中的Message Age和Max Age会进行比较:
如果Message Age小于等于Max Age,则该非根桥设备继续转发配置BPDU报文。
如果Message Age大于Max Age,则该配置BPDU报文将被老化。该非根桥设备直接丢弃该配置BPDU,可认为网络直径过大,导致根桥连接失败。
Messae Age:
消息寿命,如果配置BPDU是根桥发出的,则Message Age为0。否则,Message Age是从根桥发送到当前桥接收到BPDU的总时间,包括传输延时等。实际实现中,配置BPDU报文经过一个桥,Message Age增加1。
端口角色
根端口:离根桥最近的端口,负责接收根桥发送来的BPDU。
指定端口:负责向网段,或本机转发BPDU的端口,转发BPDU的交换机叫做指定桥。每个网段最多只有一个根桥,一般情况下,根桥都是指定端口,但不是一定情况,比如通过两条链路通过集线器连接非根桥,就只有一个指定端口。转发BPDU的端口为根端口计算出的端口。(按照最小根桥,RPC,BID,PID来选出链路两端,哪一端为指定端口)
预备端口:不是上述两种端口就是预备端口,通过阻塞预备端口,来打破环路。
五种端口状态
Disabled:端口down,不收发,不处理BPDU,也不转发流量
Blocking:只接收并处理BPDU
Listning:收发BPDU,确定端口角色,将选举出根桥、根端口和指定端口。
Learning:能够根据收到的流量学习MAC地址,但不转发流量
Forwarding:转发流量
STP操作步骤:
1.选举根桥
2.每个非根交换机选举一个指定端口,每个非根交换机选举一个根端口
3.阻塞非根,非指定端口
配置BPDU比较原则
最小根桥
最小RPC
最小BID
最小PID
选举过程
根桥选举:当交换机刚启动时,每个桥都认为自己是根桥,都会发送配置BPDU,当交换机收到BPDU,就会和自己端口的BPDU比较,从而选举出BPDU中根桥最小的作为STP网络的根桥,并更新端口的BPDU。
根端口选举:根桥已经选举出来了,就比较各个端口BPDU中的RPC,RPC比不出来,就比较BID(实际就是发送端的BID),BID比不
出来就比较PID(发送端PID),PID比不出,就比较本地PID。都是越小越优先。
指定端口选举:根据根端口计算出来的配置BPDU与本接口收到的BPDU进行比较,如果计算出来BPDU优先,则本接口为指定端口,指定端口BPDU更新为根端口计算出来的。计算出来的BPDU,RPC为全局开销,BID变为本地BID,PID变为本地PID。
预备端口阻塞:所有非指定,非根端口都被阻塞。
变更条件
1. 处于转发状态或者监听状态的端口过渡到阻塞状态,这个状态通常是链路故障
2. 处于未启用状态的端口进入转发状态,这个状态通常是增加了新的链路
3. 交换机从指定端口收到TCNBPDU报文。
当端口down,或者链路故障,由于之前的mac地址还没有老化,如果没有及时通知上游设备,会导致上游设备流量向不可达的链路发送,为了解决这一问题就有了拓扑变更机制。
T节点发生变更,以hellotime为周期向上游设备发送TCN bpdu报文,只有指定接口会处理报文,其他端口可能会收到,但不会处理。指定接口收到后,向下游设备发送TCA置1的BPDU报文,通知其停止发送报文,根端口继续以hello time为周期向上游发送TCN bpdu。重复以上步骤,直到根桥收到TCNBPDU报文,根桥会发送TC置为1,TCA置位1的报文,通告所有交换机拓扑发生了变化,通知下游设备直接删除mac地址表项(华为设备直接删除,不用等15s),和让下游设备停止发送TCNbpdu报文。(标准做法,老化时间改为15s,各个网桥在收到TC置为1的报文,会检测老化时间,如果大于15s,则改为15s,小于15s就保持不变。所以一般最长等待15s,mac地址表项就会自动清除,从而学习到新的mac地表项)
之后根交换机经过一段时间默认为35s(forwarddelay+max age)在自己的配置BPDU中清除Flag位,表示网络拓扑已经稳定,老化时间恢复。
根桥故障
如果根桥设备发生了故障(只要链路没故障,就还会发hello包),会停止发送BPDU,下游交换机收不到报文,在Max Age,超时后,导致已经收到的报文失效,此时非根桥设备互发报文,选举新的根桥,之前阻塞的端口从blocking经过listening、learning到forwarding经过30s,故所需要的收敛时间为50s。
直连链路故障
当交换机检测到直连链路故障(Hello Timer间隔内没收到Hello包),其备用接口会从blocking经过listening、learning到forwarding经过30s,故所需收敛时间为30s。
非直连链路故障
SW1和SW2之间链路故障(非物理故障),sw2收不到bpdu,同时,sw3的预备端口一直收不到包含根桥id的报文,都在maxage超时后向对方发送bpdu,sw2收到bpdu,发现sw3过来的报文更优(根桥是sw1),于是放弃宣告自己为根桥。Sw3的预备端口在经过30s,进入转发状态。故收敛时间为50s。
STP不足
1.没有细致区分端口状态和端口角色,不利于初学者学习及部署。
2.stp是被动的算法,依靠计时器超时来判断拓扑变化,收敛速度慢。
3.stp在稳定的拓扑当中,由根桥发bpdu,其他桥处理,来传遍stp网络,导致收敛速速慢。
RSTP删除了三种端口状态,新增两种端口角色。Alternate端口和backup端口。
Alternate端口:由于学到其他网桥发送的配置bpdu,而阻塞的端口。作为根端口的备份
Backup端口:由于学到自己发送的配置bpdu而阻塞的端口。作为指定端口的备份
discarding:既不转发流量,也不学习mac地址
learning:不转发流量,学习mac地址
Forwarding:转发流量,学习mac地址
配置BPDU格式改变
type字段不是0x00,而是0x02
把flag字段的保留位利用起来了
配置bpdu处理变化
1.当拓扑稳定时,非根桥无论是否收到根桥的配置BPDU,都会发送配置BPDU。
2.当一个端口在3*hellotime*Timer Factor(Timer Factor默认为3) 没有收到上游设备BPDU,就认为与上游设备协商出现问题,而不是像STP等待Maxage。
3.当一个端口收到次优BPDU,就会直接丢弃,并回应自身的配置BPDU,而不想STP只有指定端口会立即处理次优bpdu,而其他端口,会缓存次优BPDU,等到Maxage超时,才会老化,在发送自身更优bpdu。
快速收敛机制(加速端口快速进入转发状态)
1.根端口,指定端口快速切换,只要他们出现问题,Alternate口会直接进入转发状态。
BP端口会经历MAX age才会成为DP端口,最后在经过2倍转发延迟时间,进入转发状态。
2.边缘端口,边缘端口,可以不参与RSTP计算直接从discarding状态到forwarding,加快了收敛速度。但是一旦他收到了配置bpdu,就会变成stp端口,重新进行生成树计算,会引起网络震荡。
3.P/A机制(用于点到点全双工,不然会出现临时环路,且P/A机制会很复杂)
1.启用RSTP后,所有桥都认为自己是根桥,于是都会发送p置位BPDU,发送的接口变为指定端口,状态为discarding。SWA收到p置为位的BPDU,会直接丢弃,因为SWA的BPDU最为优先。SWB,SWC收到p置位的报文,会选举SWA做为根桥,并将除了收到报文的端口,边缘端口之外的其他端口阻塞,然后把收到报文的端口的状态变为forwarding,向上游设备发送A置位的BPDU报文,并把端口角色设为RP。上游设备收到A置位的报文,把接口状态切换为forwarding。
2.SWB和SWC互发p置位的报文,SWC收到报文后,发现SWB的报文优先级高于自己,于是停止发送P置位的报文,由于SWC已经选出了根端口,也就不会回复A置位的报文,此时SWB收不到回复就会一直发送P置位的报文。在等待2个forwarddelay后,SWB发出p位的端口变为DP端口,SWC变为AP端口。
3.第二步中SWB和SWC的协商,虽然要经历30s,但是他们都为discarding状态,故不会影响流量转发。所以只用几秒就完成了收敛,并实现流量转发。
拓扑变更机制
条件:一个非边缘端口迁移到转发状态
当拓扑变更时,为本交换设备所有非边缘指定端口和根端口启动TCwhile timer(2倍hellotime),在这段时间内清空所有端口的MAC地址表项。同时非边缘端口发送TC置位的BPDU报文,一旦TCwhiletimer,超时就停止发送RSTBPDU。当其他设备收到RST报文会清空除了收到报文端口所有端口MAC地址表项,同时也为非边缘指定端口,根端口开启TCwhile timer,重复上述过程。
RSTP可以和STP互操作,但是此时会丧失快速收敛等RSTP优势。
当一个网段里既有运行STP的交换设备又有运行RSTP的交换设备,STP交换设备会丢弃RSTP BPDU。运行RSTP的交换设备在某端口上接收到运行STP的交换设备发出的配置BPDU,在两个Hello Time(4s)时间之后,便把自己的端口转换到STP工作模式,发送配置BPDU,从而实现了互操作。
在华为技术有限公司的数据通信设备上可以配置运行STP的交换设备被撤离网络后,运行RSTP的交换设备可迁移回到RSTP工作模式。
1.BPDU保护:防止边缘端口收到BPDU报文,而进行RSTP计算,是网络震荡
开启BPDU保护功能的交换机边缘端口收到BPDU,边缘端口就会被error-down,但是边缘端口属性不会变,同时通知网管系统。
2.根保护:防止原先根桥,地位改变而引起网络结构错误变动导致原来在高速链路通过的流量错误的切换到低速链路
对于启用根保护的指定端口,其端口角色只能保持指定端口。一旦指定接口收到优先级更高的报文,端口进入discarding,经过一般两倍forwarddelay时间,如果没有收到更高优先级报文,则恢复转发状态。
3.环路保护:防止由于链路拥塞或者单向链路故障而导致根端口在超时时间内收不到上游的报文,而重新选择根端口使AP端口进入转发状态,而形成环路,实际上原来的根端口还是处于转发状态,只是设备没收到报文而认为它阻塞了。
4.防TC-BPDU攻击:如果有人伪造TC置位的报文,会导致交换机频繁删除MAC地址表项,给设备增加负担,造成网络不稳定
单位时间内,交换机处理TCNBPDU报文的次数可配置,如果单位时间内,交换机收到的TCbpdu报文超过配置的阈值,那么交换机只会处理指定的次数,超出的部分,在定时器超时后统一只对其处理一次。
背景:由于在STP/RSTP中,所有vlan共享一颗生成树,会导致有些vlan间不能负载,有些vlan报文不能通信;链路被阻塞,造成带宽被浪费了;于是提出了MSTP协议-多生成树协议,将交换网络化成多个域,每个域内形成多棵互相独立的生成树。
MST域(多生成树域)
一个局域网可以有多个MST域,一个·MST域可以有多个实例,同一个MST域都启动了MSTP,有相同的域名,相同的修订级别,相同的vlan映射。
好处:方便管理;缩小故障范围;
VLAN映射表:描述了vlan和MSTI之间的联系,一个实例可以有多个vlan,但一个vlan只能和一个MSTI相对应
域根
域内基于IST的优先级最高的交换机(域内的instance0的根桥)
域内距离总根最近的交换机(没选总根,按第一种选域根;存在总根,按第二种选域根)
主桥
主桥(Master Bridge)也就是IST Master,它是域内距离总根最近的交换设备,如果总根在MST域中,则总根为该域的主桥。
总根
总根就是CIST的根桥
CST
公共生成树,通过把MST域看成一个点,通过RSTP/STP协议计算出来的生成树
IST
内部生成树,是个MST域内的一棵生成树,将域内所有生成树连接起来的一棵树,IST是一个特殊的MSTI,MSTIid为0。
CIST
公共内部生成树,所有域的IST+CST构成的一颗完整生成树,即CIST,连接一个交换网络内所有交换设备的单生成树。
SST
单生成树,运行STP或RSTP只属于一棵树,或MST域中只有一台交换机。
端口角色
在RSTP基础上新增两种角色,即有
根端口、指定端口、Alternate端口、Backup端口、边缘端口、Master端口和域边缘端口
Master端口 | Master端口是MST域和总根相连的所有路径中最短路径上的端口,它是交换设备上连接MST域到总根的端口。 Master端口是域中的报文去往总根的必经之路。 Master端口是特殊域边缘端口,Master端口在CIST上的角色是Root Port,在其它各实例上的角色都是Master端口。 |
域边缘端口 | 域边缘端口是指位于MST域的边缘并连接其它MST域或SST的端口。 进行MSTP计算时,域边缘端口在MSTI上的角色和CIST实例的角色保持一致。即如果边缘端口在CIST实例上的角色是Master端口(域和总根相连的所有路径中最短路径上的端口),则它在域内所有MSTI上的角色也是Master端口。 |
MSTP报文结构
版本:
Protocol Version Identifier
CIST External Path Cost | CIST外部路径开销指从本交换设备所属的MST域到CIST根交换设备所属的MST域的累计路径开销。CIST外部路径开销根据链路带宽计算。同一个MST域内的设备的外部路径开销都是一样的 |
CIST Internal Root Path Cost | CIST内部路径开销指从本端口到IST Master交换设备的累计路径开销。CIST内部路径开销根据链路带宽计算。 |
MSTP报文可配置
目前MSTP的BPDU报文存在两种格式:
如果端口收发报文格式为默认支持dot1s或者legacy,这样就存在一个缺点:需要人工识别对端的BPDU报文格式,然后手工配置命令来决定支持哪种格式。人工识别报文格式比较困难,且一旦配置错误,就有可能导致MSTP计算错误,出现环路。
华为技术有限公司采用的端口收发MSTP报文格式可配置(stp compliance)功能,能够实现对BPDU报文格式的自适应:
这样报文收发不但支持dot1s和legacy格式,还能通过auto方式根据收到的BPDU报文格式自动切换端口支持的BPDU报文格式,使报文格式与对端匹配。在自适应的情况下,端口初始支持dot1s格式,收到报文后,格式则和收到的报文格式保持一致。
优先级向量
根交换设备ID用于选择CIST中的根交换设备。根交换设备ID = Priority(16bits) + MAC(48bits)。
其中Priority为MSTI0的优先级
域根ID = Priority(16bits) + MAC(48bits),其中Priority为MSTI0的优先级。域根为MSTI域根
括号中的向量的优先级从左到右依次递减。
在运行MSTP协议的网络中,一个VLAN报文将沿着如下路径进行转发:
CIST的计算
经过配置消息交换比较后,首先在整个网络中选择一个优先级最高的交换机作为CIST的树根,然后在每个MST域内通过MSTP协议算法计算生成IST;同时MSTP将每个MST域作为单台交换机对待,通过STP或者RSTP协议算法在MST域间计算生成CST。
CST和IST构成了整个交换机网络的CIST。
首先每个设备都认为自己是总根桥,都把自己的桥id当成总根,通过比较优先级,选出了总根,由于和总根桥的域相连的桥,最先收到总根桥的BPDU,总根桥优先级最小,而其他桥的BPDU,还是以自己为总根,故在IST域中与总根域相连的桥的BPDU优先级最高,被选为IST域根。根端口和指定端口就按优先级向量选举就行了。MSTI0的根桥不一定是域根,单域的情况下是,多域的情况下,域根是离总根最近的,MSTI0根桥是桥id最小的。
MSTP快速收敛
分为普通P/A机制和增强方式的P/A机制
普通的和RSTP一样
增强方式
1.上游设备发送p置位的报文,请求快速切换,下游设备收到之后,将收到的接口变为根端口,阻塞所有非边缘端口。上游设备继续发送A置位的报文,下游设备接收到后,根端口变为转发状态。
2.下游设备回应A置位的报文,上游设备收到之后,将端口角色变为指定接口,状态变为转发状态。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。