首页 > 其他 > 详细

STP

时间:2020-10-05 09:13:40      阅读:37      评论:0      收藏:0      [点我收藏+]

  一、概念
    1.以太网交换网络中为了进行链路备份,提高网络可靠性,通常会使用冗余链路。但是使用冗余链路会在交换网络上产生环路,引发广播风暴以及MAC地址表不稳定等故障现象,从而导致用户通信质量较差,甚至通信中断。为解决交换网络中的环路问题,提出了生成树协议STP(Spanning Tree Protocol)。
    作用:防止环路。
    2.生成树分类
    技术分享图片

二、STP
    1.根桥(root bridge)
        对于一个STP网络,根桥在全网中只有一个,它是整个网络的逻辑中心,但不一定是物理中心。根桥会根据网络拓扑的变化而动态变化。网络收敛后,根桥会按照一定的时间间隔产生并向外发送配置BPDU,其他设备仅对该报文进行处理,传达拓扑变化记录,从而保证拓扑的稳定。
        作用:负责通知网络拓扑信息,如拓扑变更,则根桥进行通知每一个在此网络拓扑中的交换机重新进STP根桥的选举。选取规则
        桥ID=优先级(默认32768)+背板MAC(第一个端口的MAC)/vlan号。越小越优,先比较优先  
                                   级,小的成为根桥;若优先级一样,则比较背板MAC地址,小的成为根桥。
        注意:选举开始前,同vlan的所有交换机都发送BPDU,每个交换机收到BPDU后与自己的桥ID比较,直到选出根桥。         
    2.BPDU报文:网桥数据单元
        BPDU在以下3种情况下会产生:
        ①只要端口使能STP,则BPDU就会按照Hello Time定时器规定的时间间隔从指定端口发出。
        ②当根端口收到BPDU时,根端口所在的设备会向自己的每一个指定端口复制一份BPDU。
        ③当指定端口收到比自己差的BPDU时,会立刻向下游设备发送自己的BPDU。
    3.端口角色:
        ①根端口(RP):在每个非根桥的交换机上选一个根端口,根端口就是去往根桥路径开销最小的端口,根端口负责向根桥方向转发数据。
            选取规则(单条链路):a.开销--越小越优。(带宽--开销:10M--100,100M--19,1G--4,10G--2)
                                b.一条链路中,对方交换机桥ID越小越优,每个与根桥相连的端口就是根端口
                                c.端口ID--端口优先级(默认128)+端口号,发送方的端口ID越小越优。
        ②指定端口(DP):转发BPDU。
                选取规则(单条链路):
                            a.开销--越小越优。(带宽--开销:10M--100,100M--19,1G--4,10G--2)
                            b.一条链路中,对方交换机桥ID越小越优,每个与根桥相连的端口就是根端口
                            c.端口ID--端口优先级(默认128)+端口号,发送方的端口ID越小越优。
        ③非指定端口(NDP):选完根端口和指定端口剩下的就是非指定端口。
        注意:1.根桥上没有根端口和非指定端口,一般情况下是指定端口。
              2.根桥上所有端口都发送和转发BPDU。
        ④一旦根桥、根端口、指定端口选举成功,则整个树形拓扑建立完毕。在拓扑稳定后,只有根端口和指定端口转发流量,其他的非根非指定端口都处于阻塞(Blocking)状态,它们只接收STP协议报文而不转发用户流量。
    4.五个端口状态
        ①down--物理关闭状态
        ②listening--监听状态,宣告自己加入该生成树,监听BPDU,选根桥、根端口和指定端口。不能转发数据流,延时时间15s,15s内没收到BPDU进入下一状态。
        ③learning--学习状态,构建MAC地址表,监听BPDU,不能转发数据流,延时时间15s,15s内没收到BPDU进入下一状态。
        ④forwarding--能转发数据流,并不断学习新的MAC地址,监听和发送BPDU。
        ⑤blocking--只能监听BPDU,20s的阻塞时间(若20s内没有接收到最优的BPDU报文,则进入listening状态。)
    5.改变根桥
        ①手动指定主次根----负载均衡
            指定主根:默认优先级-8192(32768-8192=24576)
            指定次根:默认优先级-4096(32768-8192=28672)
            缺点:若网络中出现优先级更低的交换机,主根会变更。
        ②修改优先级
            设置优先级<0-61440>必须是4096的倍数。
    5.STP算法实现的基本过程
        ①初始状态
由于每个桥都认为自己是根桥,所以在每个端口所发出的BPDU中,根桥字段都是用各自的BID,Root Path Cost字段是累计的到根桥的开销,发送者BID是自己的BID,端口PID是发送该BPDU端口的端口ID。
        ②选择根桥
网络初始化时,网络中所有的STP设备都认为自己是“根桥”,根桥ID为自身的设备ID。通过交换配置消息,设备之间比较根桥ID,网络中根桥ID最小的设备被选为根桥。
        ③选择根端口和指定端口
        参考上文根端口选举
  三、RSTP(rapid-stp)
    1.基本概念
    快速生成树协议(Rapid Spanning Tree Protocol),该协议基于STP协议,对原有的STP协议进行了更加细致的修改和补充。
    特点:收敛速度非常快,小于1s。
    收敛机制:没有时间机制,取消时间和端口的状态关联 。
    2.STP的不足
    STP协议虽然能够解决环路问题,但是由于网络拓扑收敛慢,影响了用户通信质量。如果网络中的拓扑结构频繁变化,网络也会随之频繁失去连通性,从而导致用户通信频繁中断,这是用户无法忍受的。
    STP的不足之处如下:
        ? 首先,STP没有细致区分端口状态和端口角色,不利于初学者学习及部署。
网络协议的优劣往往取决于协议是否对各种情况加以细致区分。
            ○ 从用户角度来讲,Listening、Learning和Blocking状态并没有区别,都同样不转发用户流量。
            ○ 从使用和配置角度来讲,端口之间最本质的区别并不在于端口状态,而是在于端口扮演的角色。
根端口和指定端口可以都处于Listening状态,也可能都处于Forwarding状态。
        ? 其次,STP算法是被动的算法,依赖定时器等待的方式判断拓扑变化,收敛速度慢。
        ? 最后,STP的算法要求在稳定的拓扑中,根桥主动发出BPDU报文,而其他设备进行处理,传遍整个STP网络。这也是导致拓扑收敛慢的主要原因之一。
    3.端口角色
        ①根端口(RP):在每个非根桥的交换机上选一个根端口,根端口就是去往根桥路径开销最小的端口,根端口负责向根桥方向转发数据。选取规则(单条链路):
                        a.开销--越小越优。(10M--100,100M--19,1G--4,10G--2)
                        b.一条链路中,对方交换机桥ID越小越优,每个与根桥相连的端口就是根端口
                        c.端口ID--端口优先级(默认128)+端口号,发送方的端口ID越小越优。
        ②指定端口(DP):转发BPDU。
                选取规则(单条链路):
                        a.开销--越小越优。(10M--100,100M--19,1G--4,10G--2)
                        b.一条链路中,对方交换机桥ID越小越优,每个与根桥相连的端口就是根端口
                        c.端口ID--端口优先级(默认128)+端口号,发送方的端口ID越小越优。
        ③非指定端口(NDP):选完根端口和指定端口剩下的就是非指定端口。
        ④替代端口:主要给根端口做备份。
        ⑤备份端口:主要给指定端口做备份。
    4.三种端口状态:
        1.discarding--相当于blocking和listening合并,因为RSTP认为这两种状态没有学习MAC地址,只监听BPDU。
        2.learning--学习状态,构建MAC地址表,监听BPDU,不能转发数据流。
        3.forwarding--能转发数据流,并不断学习新的MAC地址,监听和发送BPDU。
  四、MSTP
    1.基本概念
    多生成树生成树协议(Multiple Spanning Tree Protocol),该协议基于STP协议,对原有的STP协议进行了更加细致的修改和补充。
    2.RSTP和STP不足
    RSTP和STP还存在同一个缺陷:由于局域网内所有的VLAN共享一棵生成树,因此无法在VLAN间实现数据流量的负载均衡,链路被阻塞后将不承载任何流量,造成带宽浪费,还有可能造成部分VLAN的报文无法转发。
    MSTP功能:①形成多棵无环路的树,解决广播风暴并实现冗余备份。
                  ②多棵生成树在vlan之间实现负载均衡,不同vlan的流量按照不同路径转发。
    3.MSTP特点
        ①兼容STP和RSTP,既收敛快,对生成树提供了数据转发的多个冗余路径,vlan实现负载均衡。
        ②通过MSTP把一个交换网络划分成多个域,每个域内形成多棵生成树,生成树之间彼此独立。每棵生成树叫做一个多生成树实例MSTI(Multiple Spanning Tree Instance),每个域叫做一个MST域(MST Region:Multiple Spanning Tree Region)。
        ③可将多个相同拓扑的vlan映射到同一实例中,这些vlan在端口上的转发状态取决去端口的对应MST实例的状态。
    4.MST域(MST Region)
        ①域--由域名、修订级别、vlan与实例映射关系组成,三者需一致才能在同一域中。
        ②域名--32字节的字符串标志MST名称。
        ③修正号--16bit修正值标志MST修正号。
        ④同一个MST域内交换机的域名、修正号、映射关系三者必须相同。
        ⑤交换网络中的多台交换设备以及它们之间的网段所构成一个MST域。
    5.vlan与MST映射关系:
        ①每台交换机最多创建64个实例(1-64),实例0强制存在(没有配置映射关系的vlan默认属于实例  0)。
        ②在交换机中可以配置将vlan和不同的实例进行映射,没有被映射的vlan默认放在实例 0 中。
        ③没有配置映射关系前,所有vlan在实例 0 中。
    6.CST
    公共生成树CST(Common Spanning Tree)是连接交换网络内所有MST域的一棵生成树。
    如果把每个MST域看作是一个节点,CST就是这些节点通过STP或RSTP协议计算生成的一棵生成树。
    7.IST
    内部生成树IST(Internal Spanning Tree)是各MST域内的一棵生成树。
    IST是一个特殊的MSTI,MSTI的ID为0,通常称为MSTI0。
    IST是CIST在MST域中的一个片段。
    8.CIST
    公共和内部生成树CIST是通过STP或RSTP协议计算生成的,连接一个交换网络内所有交换设备的单生成树。
    9.域根
    域根(Regional Root)分为IST(Internal Spanning Tree)域根和MSTI域根。
    IST生成树中距离总根(CIST Root)最近的交换设备是IST域根。
    一个MST域内可以生成多棵生成树,每棵生成树都称为一个MSTI。MSTI域根是每个多生成树实例的树根。
    MSTP网络基本概念示意图
    技术分享图片

 

 
    10.端口角色:
        ①根端口(RP):在每个非根桥的交换机上选一个根端口,用来接收BPDU,此端口到目的网络的路径最优。
            选取规则(单条链路):
                        a.开销--越小越优。(10M--100,100M--19,1G--4,10G--2)
                        b.一条链路中,对方交换机桥ID越小越优,每个与根桥相连的端口就是根端口
                        c.端口ID--端口优先级(默认128)+端口号,发送方的端口ID越小越优。
        ②指定端口(DP):每2s发送和转发BPDU。
            选取规则(单条链路):
                        a.开销--越小越优。(10M--100,100M--19,1G--4,10G--2)
                        b.一条链路中,对方交换机桥ID越小越优,每个与根桥相连的端口就是根端口
                        c.端口ID--端口优先级(默认128)+端口号,发送方的端口ID越小越优。
        ③A端口(alterna 端口):根端口的备份。
        ④B端口(backup 端口):指定端口的备份。
        ⑤master端口:
            a.是MST域和总根相连的所有路径中最短路径上的端口,是交换设备上连接MST域到总根的端口。
            b.master端口是域中报文去往总根的必经之路。
            c.master端口是特殊域边缘端口,master端口在CIST的角色是root port,在其他各实例上的角色都是master端口。
        ⑥域边缘端口:指的是位于MST域边缘并连接其他MST域或者CIT的端口。
        ⑦边缘端口:a.如果指定端口位于整个域的边缘,不再与任何设备连接,这种端口就叫做边缘端口。
                b.边缘端口一般与用户终端设备直接连接。
                c.端口使用了MSTP功能后,会默认启动边缘自动探测功能,当端口经过(2*hello时间+1)秒后的时间收不到BPDU报文,自动将端口设置成边缘端口 ,否则就是非边缘端口。
    11.端口状态
            MSTP的端口状态与RSTP定义相同
            1.discarding--相当于blocking和listening合并,因为RSTP认为这两种状态没有学习MAC地址,只监听BPDU。
            2.learning--学习状态,构建MAC地址表,监听BPDU,不能转发数据流。
            3.forwarding--能转发数据流,并不断学习新的MAC地址,监听和发送BPDU。
            注意:1.根端口、master端口、指定端口、域边缘端口支持forwording、learning、discarding状态
                            A端口B端口仅支持discarding状态。
                2.根端口、指定端口、A端口、B端口、边缘端口的作用与RSTP里的端口定义一样,除了边缘
                            端口意外,其他端口角色都参与MSTP的计算中(同一域内)。
                        
五、STP特性
    收敛:一个网络区域从初始化开始经过监听、学习到可以进行数据转发的过程。
    收敛时间:收敛过程需要的总时长。
    作用:提高收敛速度
    1.portfast
        对象:连接到主机/服务器的端口上,面向终端(接入层),配置在交换机端口。
        原理:直接让配置portfast的交换机端口直接过渡到转发状态,可以提高传输速率,大约节省30s。
    2.uplinkfast(思科私有)
        提供了非根桥的交换机上快速切换根端口的能力,切换后端口状态变为根端口,跳过listening(15s)、
            learning(15s)状态直接过渡到转发状态,将收敛时间减少到1s内。
        交换机至少有一个端口处于被阻塞状态,链路失效必须发生在根端口时才有意义,常在双上行去往根桥
            的交换机上配置uplinkfast。
        一旦配置成uplinkfast,交换机会自动调整一些STP的参数,所有该特性
            谨慎使用,参数改变会引起STP拓扑的变化。
            a.优先级会增加32768+4096,保证该交换机不会被选为根桥。
            b.开销,交换机上所有的端口cost值都增加3000,保证交换机上端口不会被选为指定端口。
        uplinkfast通常在老式交换机上使用,新式交换机常用802.1s (MSTP)、802.w (RSTP)。
    3.backbonefast--主要检测非直连链路的有效性。
        非直连链路:数据不经过的链路,也不经过根端口,包括阻塞端口。
        对象:全部设备都可启用
        原理:一般情况下只有根桥才会发送配置BPDU,若有非根桥设备无法正常获取根桥发送的BPDU,则此根桥
            认为自己是根桥,于是发送一种比根桥发送的BPDU优先级高一点的BPDU(次优BPDU),若其他非根
            桥设备收到则会丢弃,20s后阻塞端口重新进入监听状态,并想根桥询问是否存活,若根桥回复存活,
            那么就为该设备提供新链路,最终过渡到转发状态。(20s+30s=50s)
        根本原因:接收者默认收到次优BPDU直接丢弃,用20s,这时候剔除backbonefast特性,该特性识别到次优BPDU,给
            根桥发送RLQ(根链路询问)询问根桥是否存活,若收到根桥回复(存活),那么就为该设备提供新链路,过渡到
            转发状态(30s),节省20s。
            
    4.使用特性后的防护手段
        a.BPDUguard--BPDU防护
            对象:在开启了portfast端口上使用
            原理:正常情况下,连接到主机/服务器的端口是不会收到BPDU,此时开启portfast可以收到,但若收到BPDU就
                意味着对端可能连接到交换机了,可能产生环路。BPDU防护用来监听该端口是否收到BPDU,若收到则使该
                端口down,并且把这个端口状态设置为err-disable(假死状态)。
                
        b.BPDUfilter--BPDU过滤--谨慎使用
            对象:在开启了portfast端口上使用。
            原理:如果连接的主机/服务器的主机端口,没必要向对端发送BPDU报文,就有BPDU过滤,将该端口发出的
                BPDU报文进行过滤。
            注意:如果同时配置防护和过滤,过滤基本更高,只用过滤有效果。
        c.rootguard--根防护
            对象:在可能接收到更优的BPDU报文的根端口上。
            作用:巩固根桥地位。
            原理:启用根防护,监听BPDU(发送/接收/传输流量),是监听到比根桥更优先的BPDU,就会立即将该端口置
                为不一致状态(只能监听BPDU)知道该端口不再监听到更优先的BPDU报文,恢复端口状态,保证根地位。
        d.loopguard--环路防护
            单向链路故障--一端能发,另一端不能收
            对象:根端口/阻塞端口
            原理:启用loopguard防护,监听BPDU,只有监听到,才不触发防护,若监听不到,会认为出现故障,触发防护
                端口就会变成不一致状态,这个端口只能监听BPDU报文,不能传输数据,直到该端口重新监听到BPDU后才
                会恢复。
            注意:环路防护主要检测该交换机里是否能转发/接收BPDU。
        e.UDLD--检测单项链路故障
            原理:启用BPDU会定期给邻居发送UDLDhello包,若无回复,认为该链路出现故障,从而采取措施缓解故障。
            模式:①普通模式--措施:将端口置为不一致状态。
                  ②夸张模式:先发一次HELLO包,对方无回复,重新发8次,若还不回,则出现故障,直接down了端口,
                    置为err-disable状态。

STP

原文:https://www.cnblogs.com/cp-cp/p/13768941.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!