网络--生成树协议详解

目录
一、什么是生成树
二、生成树的作用
三、生成树的种类
四、生成树的工作机制
五、生成树的选举
六、生成树的拓扑变更
七、RSTP相比STP以及MSTP的介绍
八、生成树的增强功能
一、什么是生成树
生成树协议( Tree简称:STP),是一种工作在OSI中数据链路层的通信协议,基本应用是防止交换机冗余链路产生的环路,用户确保以太网中无环路的逻辑拓扑结构 。从而避免广播风暴,大量占用交换机的资源
二、生成树的作用
生成树最主要的作用就是构造无冗余的最优路径(防止二层环路) 。我们知道在交换机构成的交换网络中,很容易出现交换机之间的环路,从而造成MAC地址漂移,广播风暴 。所以在交换网络中需要存在一个机制来控制并阻止这种环路的产生,因此也就产生了生成树协议 。
三、生成树的种类
1、802.1Dstppvst
2、802.1wrstprpvst
3、802.1SMSTPmstp
STP( tree,生成树协议)不能使端口状态快速迁移,即使是在点对点链路或边缘端口,也必须等待2倍的 delay的时间延迟,端口才能迁移到转发状态 。
RSTP(rapidtree,快速生成树协议)可以快速收敛,但是和stp一样存在以下缺陷:局域网内所有网桥共享一棵生成树,不能按vlan阻塞冗余链路,所有vlan的报文都沿着一棵生成树进行转发 。
MSTP(tree,多生成树协议)将环路网络修剪成为一个无环的树型网络,避免报文在环路网络中的增生和无限循环,同时还提供了数据转发的多个冗余路径,在数据转发过程中实现vlan数据的负载均衡 。
STP
缺点:所有的Vlan都是按照同一个STP来工作的 。
优点:开销小 。
RSTP(PVST)
优点:可以为每个Vlan配置一个STP 。可以实现基于Vlan.L2的负载分担 。
缺点:SW维护很多的STP,开销大 。Vlan改变,波及大 。
MSTP(MST)--对STP和PVST的优化方案
1.MST对vlan分组()
2.每个分组可以有独立的STP,实现L2负载分担 。
四、生成树的工作机制
1.角色介绍
根桥(Root ):
是桥ID最低的网桥 。它将成为网络中的焦点,所有其它的决定都是根据根桥的判断来做出选择的 。
桥ID( ID):
STP利用桥ID来跟踪网络中的所有交换机 。桥ID是由桥优先级(在所有的Cisco交换机上,默认的优先级为32768)和MAC地址的组合来决定的 。在网络中,桥ID最小的网桥就成为根桥 。
非根桥( ):
除了根桥外,其他所有的网桥都是非根桥 。它们相互之间都交换BPDU,并在所有交换机上更新STP拓朴数据库,以防止环路并对链路失效采取补救措施 。
端口开销(Port cost):
当两台交换机之间有多条链路且都不是根端口时,就根据端口开销来决定最佳路径,链路的开销取决于链路带宽 。
根端口(Root port):
根端口是指直接连到根桥的链路所在的端口,或者到根桥的路径最短的端口 。选择依次比较:开销最低的端口,如开销相同,就使用桥ID小一些的那个,如多条链路来自同一台设备,就使用端口号最低的那条链路 。
指定端口( port):
有最低开销的端口就是指定端口,指定端口被标记为转发端口 。
非指定端口( port):
非指定端口是指开销比指定端口高的端口,非指定端口将被置为阻塞状态,它不是转发端口 。
转发端口( port):指能够转发帧的端口 。
阻塞端口( port):
阻塞端口是指不能转发帧的端口,这样做是为了防止产生环路 。然而,被阻塞的端口将始终监听帧 。
端口状态:
:此状态下端口不转发数据帧,不学习MAC地址表,不参与生成树计算 。
:此状态下端口不转发数据帧,不学习MAC地址表,此状态下端口接收并处理BPDU,但是不向外发送BPDU 。
:此状态下端口不转发数据帧,不学习MAC地址表,只参与生成树计算,接收并发送BPDU 。
:此状态下端口不转发数据帧,但是学习MAC地址表,参与计算生成树,接收并发送BPDU 。
;此状态下端口正常转发数据帧,学习MAC地址表,参与计算生成树,接收并发送BPDU 。
2.工作过程
BPDU每 2S 由根桥发送一次 。
最初的网络,每个交换机都认为自己是根桥,都会发送BPDU,比较 BID,选举出一个根桥,此时就只有根桥发送BPDU 。非根桥只进行转发 。
BPDU在每个端口上每两秒发送一次以确保一个稳定、无环路的拓扑结构 。
STP中BPDU报文的类型
1) BPDU(配置BPDU): 只能由Root 产生,其他交换机中转这BPDU
2)TCN BPDU (拓扑改变通知BPDU): 、由发现拓改变的交换机产生
STP下的链路失败类别:
直接失败:Block端口立刻进入状态,收敛时间为30秒;
间接失败:要等待20秒后才能判断端口失败 。
在RSTP中检测拓扑是否发生变化只有一个标准:一个非边缘端口迁移到状态 。
一旦检测到拓扑发生变化,将进行如下处理:
A.首先清空状态发生变化的端口上学习到的MAC地址 。
B.同时在2倍的hello time时间内不断向非边缘端口发送TC置位的RST BPDU 。
C.其他设备收到TC置位的RST BPDU后,清空其他所有端口学习到的MAC地址(除了收到RST BPDU的端口) 。同时也会从自己的非边缘端口和根端口向外泛洪TC置位的RST BPDU 。
原始设备只清空端口的mac地址 然后向上游发送tc置位的bpdu然后他们清空所有学习到的mac地址
交换机对BPDU的处理:
如果交换机从一个接口接收到优先级高的BPDU,会把该BPDU保存下来并且该接口不再往外发送BPDU;
在收敛时只有根桥产生BPDU,其余交换机只能从RP接收BPDU后才从DP发送出去;这样非根桥可能从DP或者NDP接受到BPDU;
如果交换机从DP接收到优先级低的BDPU会丢弃,并给源MAC发送自己较新的BPDU;如果从NDP收到优先级低的BPDU会只丢弃了事 。
RSTP中配置BPUD的处理
非根桥设备每隔Hello Timer从指定端口主动发送配置BPDU(stp的dp收不到上游的bpdu是不会转发bpdu的)
BPDU超时计时器为3个Hello Timer(超过的话默认根桥挂了 需要重新选举)
阻塞端口可以立即对收到的次级BPDU进行回应(stp是30s才回应)
RSTP与STP互操作
RSTP端口在接收到STP BPDU的两个hello timer后,会切换到STP工作模式
切换到STP协议的RSTP端口会丧失快速收敛等特性

网络--生成树协议详解

文章插图
当运行STP的设备从网络撤离后,原运行RSTP的交换设备可迁移回到RSTP工作模式
通常情况下,一个边缘端口收到BPDU报文后,会变成普通端口,(30秒后正常进入转发,如果配置了BPDU-功能,边缘端口收到BPDU报文后,会进入状态,如果是思科设备需要手工 ——》no
五、生成树的选举
1、在整个网络中选举出一个根桥(Root ),根桥会定期发送BPDU
根桥的选举:
比较桥ID:桥ID有两部分组成:优先级+MAC地址,
首先比较优先级,越小越优,如果优先级相同,会比较MAC地址,越小越优,优先级默认为32768 (二层取小 三层取大)
0000+MAC
vlan号
stp00修改设备的优先级为,使期成为根桥
stp root指定设备为根桥
dismac- 查看设备的mac地址
dis stp brife 查看生成树状态
[]stp root指定设备为备份根桥4096
修改STP优先级 stp0 (优先级是4096的倍数) 选不同设备的端口
修改端口下的开销值 stp cost 《0-》
2、在所有非根交换机上选举出一个根端口RP来接收BPDU的 (报文出来的时候开销值是0 到接口加接口的开销值 收到之后再加的)
(1)比较RPC:到达根桥的最短路径开销值,各端口的(Port Cost累加)越小越优
cisco:根据带宽来计算一个度量值 比较到根桥的距离
(2)如果RPC值相同:比较转发该BPDU报文的设备的桥ID,越小越优(桥ID有两部分组成:优先级+MAC地址)越小越优
(3)如果转发该BPDU设备的桥ID相等,比较发送该BPDU报文的port ID,Port ID有两部分组成,端口优先级(默认是128 范围是0-240必须是16的倍数)+端口编号(越小越优)
(4)如果对端的Port ID也相等,会比较发送端的Port ID
3、在所有链路上选举出一个指定端口DP,转发BPDU
根桥所有接口默认都是DP
(1)比较RPC:到达根桥的最短路径开销值,各端口的(Port Cost累加)越小越优
cisco:根据带宽来计算一个度量值 比较到根桥的距离
(2)如果RPC值相同:比较转发该BPDU报文的设备的桥ID,越小越优(桥ID有两部分组成:优先级+MAC地址)越小越优
(3)如果转发该BPDU设备的桥ID相等,比较发送该BPDU报文的port ID,Port ID有两部分组成,端口优先级(默认是128 范围是0-240必须是16的倍数)+端口编号(越小越优)
(4)如果对端的Port ID也相等,会比较发送端的Port ID
4、所有非根端口、非指定端口成为AP,AP会被阻塞掉
重点:
根桥是基于网络的(整个网络中只能有一个根桥),根端口是基于设备的(每一个设备只能有一个根端口),指定端口是基于链路的,每条链路只能有一个指定端口
六、生成树的拓扑变更
STP中,如果AP收到一条将次优的BPDU,怎么处理
会等待max-age时间20.将最优的BPDU报文发送过去,端口角色从AP变成DP,端口状态从变为,需要两个转发延时,共50s可以转发数据
但是,由于华为的STP借用RSTP的工作机制,可能只需要30秒即可进入转发状态不需要时间
七、RSTP相比STP以及MSTP的介绍
RSTP相比STP的变化
其主要特点是增加了端口状态快速切换的机制,能够实现网络拓扑的快速转换 。
第一种:端口角色的变色,从三种变为五种
DP:指定端口
RP:根端口
AP:预备端口(做为RP的备份)
预备端口,不处于转发状态,所属交换机不是端口所连网段的指定交换机 。
BP:备份端口,做为DP的备份
备份端口,不处于转发状态,所属交换机为端口所连网段的指定交换机 。(如果BPDU是自己交换机发的就是bp 怎样看是谁发送的 看桥id)
EP:边缘端口 不连接任何交换机的端口(为什么边缘端口还要发送bpdu 1.告诉对端我是个交换机2.用来防环的)
AP和BP怎么区分
端口是由于学习到其它网桥发送的配置BPDU报文而阻塞的端口
端口是由于学习到自己发送的配置BPDU报文而阻塞的端口
端口状态五变三
此状态下端口对接收到的数据做丢弃处理,端口不转发数据帧,不学习MAC地址表 。
Port和 Port
:此状态下端口不转发数据帧,但是学习MAC地址表,参与计算生成树,接收并发送BPDU 。
:此状态下端口正常转发数据帧,学习MAC地址表,参与计算生成树,接收并发送BPDU 。
BP是DP的备份AP是RP的备份
: 接口和Trunk接口都可以配置Port Fast功能 。如果将交换机连交换机的接口变成Port Fast,则是制造环路 。当开启了Port Fast功能的接口,如果在接口上收到BPDU后,就认为对端连接的是交换机,而并非主机或服务器,因此默认在接口收到BPDU后会立即关闭该接口的Port Fast功能 。
MSTP介绍
MSTP(Tree )802.1S提出了多生成树的概念,可以把不同的vlan映射到不同的生成树,从而达到网络负载均衡的目 。
MST域是多生成树域(Tree ),由交换网络中的多台交换设备以及它们之间的网段所构成 。同一个MST域的设备具有下列特点:
都启动了MSTP 。
具有相同的域名 。
具有相同的VLAN到生成树实例映射配置 。
具有相同的MSTP修订级别配置 。
CIST公共和内部生成树CIST是通过STP或RSTP协议计算生成的,连接一个交换网络内所有交换设备的单生成树 。
总根是整个网络中优先级最高的网桥,即为CIST的根桥 。
拓扑中,MST域内的红线和MST域间的蓝线共同组成了CIST 。CIST的根桥为MST 中的S1 。
CST公共生成树CST(Tree)是连接交换网络内所有MST域的一棵生成树 。
CST就是这些节点通过STP或RSTP协议计算生成的一棵生成树 。
拓扑中,由蓝线组成CST 。CST的根即为MST。
内部生成树IST(Tree)是各MST域内的一棵生成树 。
MST域内每颗生成树都对应一个实例号,IST的实例号为0 。实例0无论有没有配置都是存在的,没有映射到其他实例的VLAN默认都会映射到实例0,即IST上 。
IST是CIST在MST域中的一个片段 。
拓扑中,由蓝线组成CST 。
每一个MTS域对外面的交换机相当于一台逻辑交换机 每一个域可以用不同的stp 但要用802.1s的为主根
什么时候我们用CIST呢?就是有些交换机不支持802.1s所以让他们成为一个域,mpst为一个域,这样可以使链路最高效
主桥( )也就是IST,它是域内距离总根最近的交换设备 。
如果总根在MST域中,则总根为该域的主桥 。
拓扑中,桥为黄色的网桥,即为S1/S4/S7 。
构成单生成树SST(Tree)有两种情况:
运行STP或RSTP的交换设备只能属于一个生成树 。
MST域中只有一个交换设备,这个交换设备构成单生成树 。
拓扑中没有给出实例 。
MSTI
一个MST域内可以生成多棵生成树,每棵生成树都称为一个MSTI 。MSTI域根是每个多生成树实例的树根 。域中不同的MSTI有各自的域根 。
MSTI之间彼此独立,MSTI可以与一个或者多个VLAN对应 。但一个VLAN只能与一个MSTI对应 。
每一个MSTI对应一个实例号,实例号从1开始,以区分实例号为0的IST 。
拓扑中,VLAN2映射到实例2,即MSTI 2;VLAN4映射到实例4,即MSTI 4 。
MSTI域根
MSTI域根是每个MSTI上优先级最高的网桥,MST域内每个MSTI可以指定不同的根 。
拓扑中,假设S9在MSTI 2中优先级最高,所以S9为MSTI 2中的域根;假设S8在MSTI 4中优先级最高,所以S8为MSTI 2中的域根 。
MSTP在RSTP的基础上新增了2种端口,MSTP的端口角色共有7种:根端口、指定端口、端口、端口、边缘端口、端口和域边缘端口 。
端口
端口是MST域和总根相连的所有路径中最短路径上的端口,它是交换设备上连接MST域到总根的端口 。
端口是域中的报文去往总根的必经之路 。
端口是特殊域边缘端口,端口在CIST上的角色是Root Port,在其它各实例上的角色都是端口 。
拓扑中,S7面向 1的端口为口 。
域边缘端口
MST域内网桥和其他MST域或者STP/RSTP网桥相连的端口为域边界端口 。
拓扑中,S8面向 2的端口为域边界端口 。
由于网桥在不同MSTI上可以具有不同的角色,所以网桥端口在MSTI上可能有不同的角色 。唯一例外的是端口,该端口在所有MSTI上的角色都相同,都为端口 。
比较原则
MSTP拓扑计算-比较原则
首先,比较根交换设备ID 。
如果根交换设备ID相同,再比较外部路径开销 。
如果外部路径开销相同,再比较域根ID 。new
如果域根ID仍然相同,再比较内部路径开销 。new
如果内部路径仍然相同,再比较指定交换设备ID 。
如果指定交换设备ID仍然相同,再比较指定端口ID 。
如果指定端口ID还相同,再比较接收端口ID 。
MSTP与RSTP交互
RSTP/STP网桥将MSTP域看做一个桥ID为域根ID的RSTP桥
在MSTP中,P/A机制工作过程如下:
上游设备发送报文,请求进行快速迁移 。下游设备接收到后,把与上游设备相连的端口设置为根端口,并阻塞所有非边缘端口 。
上游设备继续发送报文 。下游设备接收到后,根端口转为状态 。
下游设备回应报文 。上游设备接收到后,把与下游设备相连的端口设置为指定端口,指定端口进入状态 。
工作模式可以在全局模式下配置,也可以在端口模式下配置 。
三种工作模式总的原则就是向下兼容,MSTP兼容RSTP,RSTP兼容STP 。
如果MSTP交换机的端口上曾经连接有STP/RSTP交换机,则该端口被迁移到STP/RSTP兼容工作模式 。如果STP/RSTP交换机被关机或移走,该端口无法自动迁移到MSTP模式下工作 。此时如果在端口上执行操作,则该端口会重新迁移到MSTP模式下工作 。
stp 命令用来在当前端口执行操作 。
八、生成树的增强功能
1.BPDU保护
为进一步保护启用了的端口,如果在启用BPDU防护的端口上收到任何BPDU,该端口就进入状态,在错误状态下,端口将关闭 。必须手动重启端口或等待超时功能自动恢复 。
cisco:在启用了端口上启用BPDU防护的全局命令:Sw()#-tree
在接口上启用防护:sw(-if)#-tree
要开启边缘端口一起使用
[]stp bpdu-
2.根保护,从根
由于维护人员的错误配置或网络中的恶意攻击,根桥收到优先级更高的BPDU,会失去根桥的地位,重新进行生成树的计算 。由于拓扑结构的变化,可能造成高速流量迁移到低速链路上,引起网络拥塞 。
对于使能根保护功能的指定端口,其端口角色只能保持为指定端口 。一旦使能根保护功能的指定端口收到优先级更高的BPDU时,端口状态将进入状态,不再转发报文 。在经过一段时间(通常为两倍的 Delay),如果端口一直没有再收到优先级较高的BPDU,端口会自动恢复到正常的状态 。
在运行RSTP协议的网络中,根端口和其他阻塞端口状态是依靠不断接收来自上游交换设备的BPDU维持 。当由于链路拥塞或者单向链路故障导致这些端口收不到来自上游交换设备的BPDU时,交换设备会重新选择根端口 。原先的根端口会转变为指定端口,而原先的阻塞端口会迁移到转发状态,从而造成交换网络中可能产生环路 。为了防止以上情况发生,可部署环路保护功能 。
在启动了环路保护功能后,如果根端口或端口长时间收不到来自上游设备的BPDU报文时,则向网管发出通知信息(此时根端口会进入状态,角色切换为指定端口),而端口则会一直保持在阻塞状态(角色也会切换为指定端口),不转发报文,从而不会在网络中形成环路 。直到链路不再拥塞或单向链路故障恢复,端口重新收到BPDU报文进行协商,并恢复到链路拥塞或者单向链路故障前的角色和状态 。
3.TC保护
接口翻动:TC有频繁的报文一台一台的修改
思科拓扑变更:只要有接口UP DOWN就算拓扑变更
华为拓扑变更:添加一个的接口才算是拓扑变更
如果攻击者伪造拓扑变化BPDU报文恶意攻击交换设备,交换设备短时间内会收到很多拓扑变化BPDU报文,频繁的删除MAC或者ARP表项操作会给设备造成很大的负担,也给网络的稳定带来很大隐患 。
启用TC保护功能后,在单位时间内,交换设备处理拓扑变化报文的次数可配置 。如果在单位时间内,交换设备收到拓扑变化报文的数量大于配置的阈值,那么设备只会处理阈值指定的报文个数 。对于其他超出阈值的拓扑变化报文,指定时间超时后设备只对其统一处理一次 。这样可以避免频繁的删除MAC地址表项和ARP表项,从而达到保护设备的目的 。
执行命令stp tc-,配置交换设备在收到TC类型BPDU报文后,单位时间内,处理TC类型BPDU报文并立即刷新转发表项的阈值 。
缺省情况下,设备在指定时间内处理拓扑变化报文的最大数量是1 。
配置后,在stp tc- 指定的时间内,设备只会处理stp tc- 指定数量的拓扑变化报文,对于其他的报文会延迟处理,所以可能会影响生成树的收敛速度 。例如,时间设定为10秒,阈值设定为5,则设备收到拓扑变化报文后,在10秒内只会处理最开始收到的5个拓扑变化报文,对于后面收到的报文则会等10秒超时后再统一处理 。
4.LOOP保护
为防止非指定端口,收不到BPDU后,进入转发状态,可以通过环路防护,跟踪非指定端口上bpdu的活动 。能够收到,正常运行 。不能收到时,环路防护将端口置为环路不一致(loop-)状态 。此时,端口被阻断 。端口重新收到BPDU后,端口自动将经历STP状态,恢复活动端口 。无需人工干预 。
可以在所有端口上启用环路防护,而不考虑端口角色 。交换机将判断哪些端口是非指定的,通过BPDU监控行为,保持他们的非指定,命令为:
Sw()#-tree
在接口上配置命令为:sw(-if)#-tree guad loop
UDLD 单向链路检测 双方启用15s发送hello周期发送 三倍时间没有收到回应普通:就会发送日志报错 狂暴:8slog状态不但会报日志还会把error(在光口启用因为光纤是一收一发 很容易一根断掉引起环路)检查 路径是否为单向
常规模式:检测到单向链路状态后,允许端口继续操作 。只是标记端口为状态,并产生一条系统消息 。
激进模式:检测到单向链路状态后,交换机采取措施重建链路,每个1秒发送一条UDLD消息,并持续8秒,如果没有回应,就将端口置为状态,使其不可用 。
补充:P/A机制
可以快速生成无环路径 条件:链路类型是点到点
RSTP中BPDU的Flag字段解释:
第0位为TC标志位,和STP相同 。
第1位为标志位,该位置位表示该BPDU为快速收敛机制中的报文 。
第2位和第3位为端口角色标志位,00表示端口角色为位置;01表示端口角色为或端口;10表示端口为根端口;11表示端口为指定端口 。
第4位为标志位,该位置位表示端口处于状态 。
第5位为标志位,该位置位表示端口处于状态 。
第6位为标志位,该位置位表示该BPDU位快速收敛机制中的报文 。
第7位为TCA标志位,和STP相同 。
本来的ap端口要变为dp端口
那么dp要转发bpdu(转发p=1的bpdu) 那接受端的设备么它要首先保证是无环的 就需要把除了ep的所有端口状态的阻塞掉 要受到a=1的bpdu的报文那么dp端口才能转发报文
【网络--生成树协议详解】根据链路一对一才能出现PA机制