常用的生成树协议:STP(Spanning Tree Protocol)由IEEE802.1D定义,RSTP(Rapidly Spanning Tree Protocol)由IEEE802.1W定义,MSTP(Multiple Spanning Tree Protocol)由IEEE802.1S定义。
生成树严格意义上来讲属于应用层的东西,但是是为了解决二层的广播风暴问题,所以也可以看成是二层的东西。
STPSTP生成树计算原则:1.确定环路中的根桥。
根桥由BID(bridge ID)来确定(BID=2字节的网桥优先级+网桥的MAC地址构成,优先级默认为32768),具备最小的BID的交换机成为根桥。
2.确定根端口。
根端口选举原则是确定非根桥到根桥最小开销的端口。
(Root path cost).一般情况下,接口带宽越大则开销值越小。
选举原则:a.比较Root Path Cost(根路径开销),越小越优先,一样则b.端口上行交换机的Bridge ID(桥ID),越小越优先,一样则c.端口上行端口的Port Identifier,越小越优先(端口标识,端口标识号由1字节优先级+1字节端口号构成)3.确定指定端口。
为每个网段选出一个指定端口(Designated Port),指定端口为每个网段转发发往根交换机方向的数据,且转发由根交换机方向发往该网段的数据。
选举原则:a.比较Root Path Cost(根路径开销),越小越优先,相同则b.端口所属Bridge ID,越小越优先,相同则c.端口的Port ID。
4.确定阻塞端口。
环路中剩下的端口成为阻塞端口(Alternate Port),当指定端口有问题,就启用阻塞端口。
数据的转发路径:由下级非根交换机的指定端口到上级非根交换机的根端口,一直到根交换机的指定端口。
(这样就可以避免环路)STP端口状态描述状态数据帧MAC 生成树计算BPDU收发Disable No No No No NoBlocking No No No Yes No Listening No No Yes Yes YesSTP 有关的时间:Hello 2S,Max Age 20S,Forward Delay 15 S.从Listening 到Learning 要经过一个Forward Delay ,从Learning 到Forwarding 要经过一个Forward Delay 。
完全收敛(30~50s)STP BPDU 帧格式:BPDU 封装在802.3的LLC 格式以太帧中,BPDU 只在指定端口上发送。
DMACSMAC Length Data FCSDMAC :目的MAC 地址。
使用了保留的组播MAC 地址01-80-c2-00-00-00,此地址标识所有交换机,但不能被交换机转发,也就是说只在本地链路有效。
Data 包括:DSAP SSAP Control BPDU| LLC |DSAP :01000010 ,0x42SSAP: 01000010,0x42Control:3.BPDU 包括:2B Protocol Identifier 0x00001B Protocol Version Identifier 0x001B BPDU Type 0x001B Flags 0x008B Root Identifier4B Root Path Cost8B Bridge Identifier2B Port Identifier LearningNo Yes Yes Yes Yes ForwardingYes Yes Yes Yes Yes2B Message Age2B Max Age2B Hello Time2B Forward DelayRoot Identifier:发送些配置BPDU的交换机所认为的根交换机的交换机标识。
Root Path Cost:从发送此配置BPDU的交换机到达根交换机的最短路径总开销。
(含交换机根端口开销,不含发送此配置BPDU的端口的开销)因为STP中发数据是默认为无开销的,但接收数据有开销,这与OSPF正好相反。
Bridge Identifier:发送此配置BPDU的交换机标识。
(BID=2字节的网桥优先级+网桥的MAC地址构成,优先级默认为32768)Port Identifier:发送此配置BPDU的交换机端口的端口标识。
(端口标识,端口标识号由1字节优先级+1字节端口号构成)BPDU有两种。
一种为生成生成树时的CBPDU,configuration BPDU type:0x00一种为网络拓扑发生变化TCNBPDU(Topology Change Notification) type 0x80< 1 > TCN BPDU ---拓扑变化的BPDU非根桥始发。
当一台非根桥交换机,拓扑发生变化的时候,就会产生一个TCN BPDU,这个BPDU是告诉根桥的,也就是说只有根端口才会发送这类的BPDU,上行。
< 2 > Configuration BPDU ---配置BPDU根桥始发。
当根桥受到TCN BPDU 后,会产生一个配置BPDU,告诉所有它知道的非根桥交换机,拓扑发生了变化。
会发现这种的BPDU是通过指定端口始发和转发的,下行。
RSTP(收敛1~10s)RSTP生成树计算原则:1.选根交换机(与STP相同)2.选非根交换机的根端口(与STP相同)3.选举网段的指定端口(与STP相同)4.选举预备端口和备份端口。
(RSTP特有的)对于既不是根端口,也不是指定端口的交换机端口,如果该端口属于所连网段的指定交换机,则端口设为备份端口(Backup Port);如果该端口不属于所连网段的指定交换机,则端口状态设为预备端口(Alternate Port).备份端口主要是为了备份指定端口,而预备端口是为了预备根端口,它们都处于不转发状态。
RSTP端口状态描述:数据帧MAC 生成树计算BPDU收发Discarding No No No No No Learning No Yes Yes Yes Yes Forwarding Yes Yes Yes Yes Yes预备端口(Alternate Port)和备份端口(Backup Port)处于Discarding。
指定端口(Designated Port)和根端口(Root Port)稳定情况下处于Forwarding.RSTP端口迁移原则:1.将端口状态从Forwarding状态迁移到Discarding状态(从根端口或者指定端口变成预备端口或者备份端口)不会出现环路风险,可以不经过等待立即转换。
2.将端口状态从Forwarding状态迁移到Forwarding(从根端口变成指定端口或者从指定端口变成根端口)不会出现环路风险,可以不经过等待立即转换。
3.从Discarding状态迁移到Forwarding状态(从预备端口或者备份端口变成根端口或者指定端口),在STP中,从不转发状态迁移到Forwarding中要等待两次Forward Delay间隔才能迁移,保证网络中需要进入不转发状态的端口有足够的时间完成计算(这正是STP收敛慢的原因所在)。
RSTP对此点的改进:1.引入边缘端口(Edge Port)概念(边缘端口指不连接任何交换机的端口):一旦连续端口被启用,则端口立即成为指定端口(Designated Port),并进入转发状态。
2.引入“Proposal -Agreement”概念(使用时必须为点到点的链路)。
RSTP使用“Proposal-Agreement”协商机制加快非边缘端口成为新的指定端口的速度。
MSTP单实例生成树的缺点:1.部分VLAN路径不通2.无法使用流量分担3.次优二层路径MSTP的基本思想:基于实例(Instance)计算出多棵生成树,每个实例可以包含一个或多个VLAN,每一个VLAN只能映射到一个实例。
MSTP常见的概念:MSTI(Multiple Spanning Tree Instance,多生成树实例):一个MST域内可以通过MSTP生成多棵生成树,每棵生成树之间彼此独立,每棵生成树都称为一个MSTI。
每个MSTI映射一个或多个VLAN,每个MSTI都对应一个实例号。
每个MST Instance都有一个标识(MSTID),MSTID是一个两字节的整数。
MST域:是指网络中具有相同域名,修订级别,摘要信息的网络构成的一个集合。
同一个区域的交换机有着相同的VLAN到MST Instance的映射关系。
MST配置标识(MST Configuration Identifier):交换机通过MST配置标识来标识自己所在的区域。
1B Configuration Identifier Format Selector 0x0032B Configuration Name 区域名称2B Revision Level 修订级别16B Configuration Digest MST配置表摘要有很小的可能性会出现MST配置表不同,但摘要信息却相同的情况,这会导致本来不在同一区域的交换机被认为在同一区域中,所以用Revision Level这个额外的标识字段,不同的区域使用不同的内容。
MST配置表(MST Configuration Table):为了在交换机上标识VLAN和SMT Instance的映射关系,交换机维护一个MST配置表,其结构是4096个连续的两字节元素组,代表4096个VLAN,每一个和最后一个元素都为0;每二个元素表示VLAN 1映射到MST Instance 的MSTID,直到第4095个元素,表示VLAN4094映射到的SMT Instance的MSTID。
MSTP建立,管理两种生成树类型:1.IST(Internal Spanning Tree,内部生成树):是在MST区域中运行的生成树总称。
IST是MST区域中的一个特殊生成树实例,在一定程度上代表了一个MST区域,因为它在一个MST内部的所有链路上都是活跃的,专为其他MST实例提供拓扑信息服务。
(默认情况下,所有VLAN分配到IST实例中,一般为Instance 0,但在实际配置中,不把任何VLAN分配到这个实例中,因为IST只用于生成树BPDU的收发,不用于数据通信)2.CST(Common Spanning Tree,公共生成树):是用来互联不同MST区域的单生成树实例。
如果把每个MST区域看做一个设备,CST就是这些设备通过STP/RSTP协议计算生成的一棵生成树。
(在每个MST区域中计算的生成树都是作为包含整个交换域的CST的子树出现的)接收到来自其他MST区域BPDU的交换机被称为边界(Boundary)交换机,对应的链路称为边界链路,对应的端口称为边界端口。