对生成树的理解.docx
《对生成树的理解.docx》由会员分享,可在线阅读,更多相关《对生成树的理解.docx(20页珍藏版)》请在冰豆网上搜索。
![对生成树的理解.docx](https://file1.bdocx.com/fileroot1/2022-12/29/93a3f9c7-05ba-4a69-9dd3-5e9c90b203db/93a3f9c7-05ba-4a69-9dd3-5e9c90b203db1.gif)
对生成树的理解
生成树教程stpmstp
MSTP协议简介
概述
协议背景
在二层交换网络中,一旦网络中存在有环路,就会造成报文在环路中不断的增生循环,产生广播风暴占用所有的有效带宽,造成网络的瘫痪。
STP协议根据网络中的拓扑结构,将网络中的节点按照一定的算法生成一个树形的拓扑结构,从而避免网络中环路的存在。
当网络中拓扑结构发生变化时,STP算法会根据新的网络拓扑重新计算树,生成新的树形结构,这样既提供了环路保护的功能,同时可以提供链路冗余的功能。
这是STP协议最初产生时提供的功能。
STP协议的发展
STP协议和其他网络协议一样,是随着网络的不断发展而不断更新换代的。
最初被广泛应用的是IEEE802.1D1998版本,随后又出现了IEEE802.1WRSTP协议、IEEE802.1sMSTP协议。
RSTP协议提供了端口状态的快速转换功能,使网络拓扑的收敛时间大为减少。
MSTP协议在RSTP协议的基础上引入了域和实例的概念,首先将网络中不同的桥设备及其LAN划分为不同的域内,在域内设定各个VLAN到生成树实例的映射关系,这样既提供了快速收敛的能力,同时也在域内对网络冗余的网络带宽进行了有效应用。
相关文档
IEEE802.1D1998版本STP协议
IEEE802.1W2001版本RSTP协议
IEEE802.1s2002版本MSTP协议
IEEE802.1D2004版本STP+RSTP协议
IEEE协议于2004年将IEEE802.1D1998版本和IEEE802.1W2001版本合并为一个文档,是为IEEE802.1D2004版本。
缩写词汇
简写词
全拼
中文释义
备注
STP
SpanningTreeProtocol
生成树协议
这里的生成树协议特指IEEE802.1D1998版本中的生成树协议
RSTP
Rapidspanningtreeprotocol
快速生成树协议
IEEE802.1w2001
MSTP
Multispanningtreeprotocol
多生成树协议
IEEE802.1s2002
SST
Singlespanningtree
单生成树协议
CST
Commonspanningtree
公共生成树
用于连接不同域之间的生成树
CIST
CommonandInternalSpanningTree
公共内部生成树
IST
Internalspanningtree
内部生成树
MSTI
Multispanningtreeinstance
多生成树实例
STA
Spanningtreealgorithm
生成树算法
BID
BridgeIdentifier
桥ID
BID是分配给每个bridge的唯一标识,用于确定bridge的优先等级。
VLAN
VirtualLocalAreaNetwork
虚拟局域网
从逻辑上将一段在物理上属于同一个局域网的网段划分为多个局域网,便于网络的管理和维护,同时可以将不同的业务进行隔离。
VID
VLANidentifier
VID
BPDU
BridgeProtocolDataUnit
桥协议数据单元
TCN
Topologychangenotification
拓扑更改通知
TCNBPDU
TCA
Topologychangeacknowledged
拓扑更改回复
TCABPDU
UCT
无条件强制转换
在RSTP状态机中有些状态在完成操作以后直接转换到下个状态,这种情况就称为UCT.
STP
协议介绍
STP协议是一个单生成树协议,所谓单生成树协议,就是在网络中将所有的桥设备放到单个生成树拓扑中,保证网络连接的全联通性和无循环链路。
STP协议首先会为生成树选定一个跟,然后根据每个桥设备到根的距离来确定该桥到根的路径,这样由根、桥设备以及各个桥到根的路径组成了一个全联通且无循环的生成树。
STP协议通过BPDU(桥协议数据单元)进行协议数据的交互。
STPBPDU是一种二层报文,目的MAC是多播地址01-80-C2-00-00-00,所有支持STP协议的网桥都会接收并处理收到的BPDU报文,BPDU报文不会被转发。
STP协议中的基本概念
Bridgeidentifier(BID):
每个桥有1个identifier,该BID由两部分组成。
前两个字节表示优先级,默认为32768可取值范围在0-65535。
后6个字节由bridge的MAC地址组成。
确保网络中每个bridge的BID具有唯一性。
RootBridge(跟桥):
网络中作为生成树树根的bridge,该bridge具有最小的BID。
Rootidentifier(RID):
跟桥具有的identifier。
Pathcost:
数据包在网络中传输所需的路径开销。
该开销根据局域网类型(带宽+双工模式)来确定数据包在网络中的路径开销。
该开销是用来确定最优生成树的关键参数。
Portidentifier(PID):
每个桥的每个端口具有一个PID,该PID由两部分组成,共16个bits。
(前6个bits表示优先级,后10个bit表示端口名称,没看到官方文件说明)。
Rootpathcost:
数据包到达跟桥的路径开销。
Rootport(根端口):
非跟桥上到达跟桥路径开销最小的端口。
Designatedport(指定端口):
连接到某局域网中的所有端口中具有最小根路径开销的端口。
该端口被称为该局域网的指定端口。
Designatedbridge:
局域网的指定端口所在的bridge被称为该局域网的指定端口。
Alternateport:
备份端口。
STP协议中的端口状态
Blocking(阻塞状态):
该端口处于使能状态,但根据STP算法的计算结果,该端口不属于生成树的有效组成端口。
(既有其他路径可以生成生成树结构,同时比该端口所在的路径具有更优的结构)。
处于阻塞状态的端口只接受STPBPDU报文,不转发STPBPDU报文;不接收和转发其他业务报文。
Listening(监听状态):
该端口处于使能状态,同时该端口已经被选为生成树的有效组成端口,但为了防止网络拓扑结构的动荡变化造成生成树的不稳当,在blocking和forwarding状态之间添加了listening状态,该状态监听网络中的BPDU报文判断是否有更优的路径,同时该端口开始将FDB表中的相关表项进行清除,该状态接受转发STPBPDU报文,不接受和转发普通业务报文。
Learning(学习状态):
该端口处于使能状态,同时该端口已经被选为生成树的有效组成端口。
但为了防止网络拓扑结构的动荡变化造成生成树的不稳当,在blocking和forwarding状态之间添加了learning状态,在端口保持在listening状态一定时间(forwardtimer)之后,若没有发现其他更优路径,则该端口有listening状态转换到learning状态。
该状态监听网络中的BPDU报文判断是否有更优的路径,同时端口接受和转发STPBPDU报文,接收普通业务报文,并学习报文MAC地址,不转发普通业务报文。
Forwarding(转发状态):
该端口处于使能状态,同时该端口已经被选为生成树的有效组成端口。
在端口处于listening状态一定时间之后(forwardtimer),若没有发现其他更优路径,该端口有learning状态转换到forwarding状态。
该状态接受和转发STPBPDU报文,同时接受和转发普通业务报文。
Disable(禁用状态):
该状态可以认为是物理上没有联通的端口。
端口状态
地址学习能力
转发/接收报文能力
接收BPDU报文
发送BPDU报文
Disabled
NO
NO
NO
NO?
?
?
?
?
Blocking
NO
NO
YES
NO
Listening
NO
NO
YES
YES
Learning
YES
NO
YES
YES
Forwarding
YES
YES
YES
YES
STP报文格式
STP协议使用BPDU报文承载协议所需的交互信息。
STP协议报文共有两种,配置报文(configurationBPDU)和拓扑结构更改报文(topologychangenotificationBPDU)。
BPDU报文格式如下图。
BPDU采用01-80-c2-00-00-00目标多播地址作为目标地址。
ConfigurationBPDU
Protocolidentifier:
占用1-2两个字节,STP协议的对应值为0000000000000000。
Protocolversionidentifier:
占用第三个字节,STP协议的对应值是00000000
BPDUType:
占用第四个字节,configurationBPDU对应值是00000000
Flag:
占用第五个字节,它的最高bit位(bit8)标识TopologyChangeAcknowledgmentflag。
最低bit位(bit1)标识TopologyChangeflag。
其余bit位保留未定义。
RootIdentifier:
树的根桥ID,每个桥发送BPDU时都会将该桥当前认为的跟桥ID放在这里。
占用6-13八个字节。
前两个字节是优先级,后6个字节是跟桥对应的MAC地址。
RootPathCost:
发送BPDU的桥到跟桥的最短路径开销,占用14-17四个字节。
BridgeIdentifier:
发送BPDU的桥的桥ID。
占用18-25八个字节。
PortIdentifier:
发送BPDU报文的指定端口的端口ID。
占用26-27两个字节。
MessageAgetimer:
消息年龄,用法还不清楚,占用28-29两个字节。
MaxAgetimer:
消息寿命。
占用30-31两个字节。
HelloTime:
根hello时间,占用32-33两个字节,表示根发送BPDU报文的时间间隔。
Forwarddelay:
转发延迟,端口进行状态转换的延迟时间(端口有listening-learning和有learning到forwarding状态的转换都需要等待一个forwarddelay延迟的时间)。
topologychangenotificationBPDU
如上图所示是TCNBPDU报文的格式。
Protocolidentifier:
占用1-2两个字节,STP协议的对应值为0000000000000000。
Protocolversionidentifier:
占用第三个字节,STP协议的对应值是00000000
BPDUType:
占用第四个字节,configurationBPDU对应值是10000000
STP协议交互过程
树的生成过程
1、 在初始阶段,每个桥设备都会认为自己是根,然后发送自己的configurationmessage。
2、 桥在收到其他桥发送的configurationmessage时,就会和自己的configurationmessage进行比较,如果更优收到的configurationmessage,则替换自己的configurationmessage。
选择根端口和指定端口,然后重新计算configurationmessage进行转发。
3、 当网络中所有的桥设备都知道了跟桥是谁,并计算出了自己的根端口和指定端口,则生成树就生成了。
拓扑改变收敛过程
1、当桥设备发现有拓扑改变发生时,会通过根端口向根桥发送TCNBPDU。
2、根端口在接收到TCNBPDU时,会设置configurationmessage的TCFlag,通知全网络发生了拓扑改变,进行网络拓扑的重新计算。
3、新的网络拓扑计算完成以后新的指定端口和根端口进入转发状态。
RSTP
协议介绍
针对STP协议收敛时间太长的确定,IEEE定义了802.1wRSTP协议。
该协议通过引入边缘端口,替换端口,备份端口等概念,使得端口状态的改变在某些情况下可以快速进行切换,从而实现生成树的快速收敛。
RSTP协议中的基本概念
Bridgeidentifier(BID):
每个桥有1个identifier,该BID由两部分组成,共8个字节。
和STP802.1D1998中的BID定义不同。
前四个bit是可配置的优先级;后12个bit是本地systemID扩展(该扩展是为了适应MSTP对每个VLAN一个生成树实例,避免设置4K个systemID),最后6个字节是bridgesystemID,一般去MACAddress。
RootBridge(跟桥):
网络中作为生成树树根的bridge,该bridge具有最小的BID。
Rootidentifier(RID):
跟桥具有的identifier。
Pathcost:
数据包在网络中传输所需的路径开销。
该开销根据局域网类型(带宽+双工模式)来确定数据包在网络中的路径开销。
该开销是用来确定最优生成树的关键参数。
Portidentifier(PID):
每个桥的每个端口具有一个PID,该PID由两部分组成,共16个bits。
(前6个bits表示优先级,后10个bit表示端口名称,没看到官方文件说明)。
Rootpathcost:
数据包到达跟桥的路径开销。
Rootport(根端口):
非跟桥上到达跟桥路径开销最小的端口。
Designatedport(指定端口):
连接到某局域网中的所有端口中具有最小根路径开销的端口。
该端口被称为该局域网的指定端口。
Designatedbridge:
局域网的指定端口所在的bridge被称为该局域网的指定端口。
Alternateport:
备份端口,作为桥的根端口的备用端口,在根端口连接出现问题时,可以直接将备份端口设为根端口。
Backupport:
LAN的指定端口的备份端口。
端口状态和端口角色
RSTP中共有四种种端口状态,五种端口角色。
端口状态Discarding,Learning,Forwarding状态。
端口角色Rootport,Backupport,designatedport,backupport,Disabledport。
关于端口状态和端口角色之间的关系如下表所示:
STPPortState
Administrativeportstate
RSTPPortState
ActiveTopology(PortRole)
DISABLED
Disabled
Discarding
Excluded
BLOCKING
Enabled
Discarding
Excluded(Alternate,backup)
LISTENING
Enabled
Discarding
Included(Root,Designated)
LEARNING
Enabled
Learning
Included(Root,Designated)
Forwarding
Enabled
Forwarding
Included(Root,Designated)
RSTP报文格式
Protocolidentifier:
0000000000000000
Protocolversion:
00000010
BPDUType:
00000010denotearapidspanningtreeprotocol
Flag:
octet5
Topologychangeflag:
bit1ofoctet5
Proposalflag:
bit2ofoctet5
Portrole:
bit3-4ofoctet5,00isunknown,01isthealternateorbackup,10istherote,11isthedesignatedport。
Learningflag:
bit5ofoctet5
Forwardingflag:
bit6ofoctet
Agreementflag:
bit7ofoctet
TopologyChangeAcknowledgmentflag:
bit8ofoctet5
Rootidentifier:
Octets6through13oftheBPDU。
端口状态的快速切换
1、 边缘端口直接进入forwarding状态。
2、 指定端口通过与对端进行握手进入forwarding状态。
3、 根端口通过判断本桥是否有其他根端口处于forwarding判断是否直接进入forwarding状态(暂态)。
4、 快速切换什么时候进行?
只在拓扑结构发生改变,或者在生成初始树的时候也进行快速切换。
握手过程
1、 指定端口想对端发送proposalflagBPDU。
2、 对端在收到proposalflagBPDU时,将所有其他端口设为discarding状态(同步过程)。
3、 在将所有端口设定为discarding状态以后,同步完成,向指定端口发送agreementflagBPDU
4、 指定端口收到对端发来的agreementflag后将端口转换到forwarding状态。
MSTP
协议介绍
MSTP协议是一个多生成树(MultiSpanningTreeMST)协议,相对RSTP来说,主要是引入了实例和域的概念。
域的概念是为了将网络中具有不同配置的网络段进行分割开,在网络段内部实行统一的配置,可以在域内进行独立的生成树构造。
而域之间则使用一个单一生成树将所有的域连接起来(该生成树被称为CST,公共生成树),确保全链接和无环。
在域的内部可以构造多个生成树实例,同时可以将不同的VLAN映射到不同的生成树实例上。
在每个域的内部都有一个实例ID为0的实例,该实例与CST共同组成了CIST(公共内部生成树)。
该生成树将整个网络中的域和域内部的桥设备和网段连成一个全链接无环的树。
MSTP的基本概念
MST域:
是由交换网络中的多台设备以及它们之间的网段所构成。
这些设备具有下列特点:
都启动了MSTP;具有相同的域名;具有相同的VLAN到生成树实例映射配置;具有相同的MSTP修订级别配置;这些设备之间在物理上有链路连通。
MSTConfigurationidentifier:
用来标示一个bridge的MST配置内容,以确定桥与桥之间是否能够在同一个域内。
内容包括ConfigurationIdentifierFormatSelector,ConfigurationName,RevisionLevel,ConfigurationDigest。
CISTRootidentifier:
CIST跟桥的桥ID。
CISTExternalrootportcost:
CIST外部根路径开销,是指一个桥所在的域到CIST跟桥所在的域之间的路径开销,在一个域内所有桥的CISTExternalrootportcost都是一样的,在计算的时候CIST指计算域的跟桥的根端口所在LAN的路径开销。
RegionalRootIdentifier:
域的跟桥的桥ID,域的跟桥并不是在域内的所有桥中ID最小的一个,而是域内到CIST跟桥的根路径开销最低的桥。
InternalRootPortCost:
内部路径开销是指将域看做一个独立的局域网,域内的桥设备到域的跟桥的根路径开销。
MasterPort:
Masterport是指一个域中跟桥的根端口。
该域通过该端口到达跟桥的路径最小。
VLAN映射表:
VLAN映射表是指将VLAN映射到某个具体的MSTI,在同一个域内所有桥设备的VLAN映射表必须保持一致,默认情况所有VLAN映射到实例0。
CST:
commonspanningtree,用于联通不同域或非MSTP桥设备的生成树。
MSTP的端口角色和端口状态
RSTP中共有四种种端口状态,六种端口角色。
端口状态Discarding,Learning,Forwarding状态。
端口角色Rootport,Backupport,designatedport,backupport,Disabledport,masterport。
关于端口状态和端口角色之间的关系如下表所示:
STPPortState
Administrativeportstate
RSTPPortState
MSTPPortState
ActiveTopology(PortRole)
DISABLED
Disabled
Discarding
Discarding
Excluded
BLOCKING
Enabled
Discarding
Discarding
Excluded(Alternate,backup)
LISTENING
Enabled
Discarding
Discarding
Included(Root,Designated,masterport)
LEARNING
Enabled
Learning
Learning
Included(Root,Designated,masterport)
Forwarding
Enabled
Forwarding
Forwarding
Included(Root,Designated,masterport)
MSTP报文格式
MSTBPDUparametersandformat
Protocolidentifier:
0000000000000000
Protocolversion:
00000011
BPDUType:
00000010
CISTFlag:
Topologychangeflag:
bit1ofoctet5
CISTProposalflag:
bit2ofoctet5
CISTPortRole:
bit3-4ofoctet5,00ismaster,01isthealternateorbackup,10istherote,11isthedesignatedport。
CISTLearningflag:
bit5ofoctet5
CISTForwardingflag:
bit6ofoctet5
CISTAgreementflag:
bit7ofoctet5
CISTRootIdentifier:
octet6-13
CISTExternalRootPathCost:
octet14-17
CISTRegionalRootIdentifier:
octet18-25
CISTPortIdentifi