1 MSTP的引入
启用STP/RSTP协议的网桥上所有的VLAN共享一棵生成树,无法实现VLAN的负载分担,造成链路带宽的浪费。
MSTP(多生成树)的提出,很好的解决了网络中VLAN负载分担的问题。
MSTP在IEEE的803.1S标准中定义。
MSTP的基本思想是基于实例计算出多颗生成树,每个实例可以包含一个或多个VLAN,每个VLAN只能映射到一个实例,从而实现不同VLAN组之间的负载分担。
2 MSTP 的基本概念
2.1 MST 域
多生成树的前提是:把不同的VLAN映射到不同的实例中去,为了确保多生成树计算的准确性,这些网桥的VLAN和实例映射关系必须完全相同。然而在大型网络中不能保证所有网桥配置相同的VLAN映射关系,MSTP就提出了MST域来解决此问题。
MST域是把拥有相同VLAN映射关系以及其他属性的网桥放在同一个域中,域之间运行标准的RSTP。可以将大型网络划分成多个MST域 。
MST域的组成因素
1. 域名( Configuration Name ):本域的域名 。
2. 修订级别( Vevision level ):目前保留,默认为 0
3. 配置摘要( Configuration Digest ):由网桥的 VLAN 和实例映射关系生成的长度为 16 字节的 HMAC-MD5 签名。如果配置摘要不同,表示 VLAN 和实例映射关系不同,属于不同的 MST 域。
2.2 CSI、IST、CIST、总根和域根
CIST:公共和内部生成树,是整个网络所有设备经过生成树计算得到的一棵树 。
总根:是整个网络中优先级最高的桥,也是CIST中的根桥 。
CST:公共生成树,是连接网络内MST域的单生成树,总根所处的域为CST的根桥 。
IST:内部生成树,是MST域内的一棵生成树
MST域内的每一颗生成树都会对应一个实例,IST的实例号为0,没有映射到其他实例的VLAN都会默认映射到实例0上,即IST上 。
IST的根桥即CIST的域根,是在MST域内距离总根最近的网桥,也称Master桥。
2.3 MSTI 和 MSTI 域根
一个MST域内都可以通过MSTP协议生成多颗生成树,每颗生成树之间是独立的,每颗生成树都称为一个MSTI(多生成实例) 。
每个MSTI映射一个或多个VLAN,并计算出一颗独立的生成树 。
MSTI域根就是每一个MSTI上优先级最高的网桥。可以根据MSTI来配置该MSTI中域根的优先级。
2.4 MSTP 端口角色
MSTP端口角色比RSTP多出了Master端口和域边界端口。
Master端口:是指Master桥与总根相连的端口。
域边界端口:MST域内网桥和其他MST域或STP/RSTP网桥相连的端口,Master端口也可以是域边界端口。
网桥上的根端口、指定端口、Alternate端口、Backup端口的定义与RSTP中相同。
3 MSTP 工作原理
3.1 MSTP 的 BPDU 格式
1. Protocol ID :固定为 0x00 ,表示 STP
2. Protocol Version ID :协议号为 0x03 ,表示 MSTP
3. BPDU Type : BPDU 类型为 0x02 ,表示 RST/MST BPDU
4. CIST Flags : CIST 的标志位
5. CIST Root ID :表示 CIST 总根 ID
6. CIST EPC :表示 CIST 外部路径开销
7. CIST Region Root ID :表示 CIST 域根 ID
8. CIST port ID :表示 CIST 指定端口 ID
9. Message Age :表示该 BPDU 到当前时间的存活时间
10. Max Age ;表示该 BPDU 最大存活时间
11. Hello Time : BPDU 的发送周期
12. Forward Delay : BPDU 传播到全网的最大延迟
13. Versionl Length=0 :表示该 BPDU 不包含 Versionl 信息
MST 专有字段
1. Version3 Length :表示 MST 专有字段的长度,该字段用户接收到 BPDU 后进行校验。
2. MST Configuration ID : MST 配置标识,包含四个字段,如下:
Ø Format Selector :格式选择,固定为 0x00
Ø Name : configuration Name , MST 域名
Ø Revision Level :修订版本
Ø Config Digest :配置摘要
3. CIST IRPC : CIST 内部路径开销,表示发送此 BPDU 的网桥到 CIST 域根的路径开销。
4. CIST Bridge ID :表示发送此 PBDU 的网桥 ID
5. CIST Remainig Hops : CIST 剩余跳数,用来限制 MST 的规模,默认值为 20 。
6. MSTI Configuration Message :包含了 0 个或最多 64 个 MSTI 信息, MSTI 配置信息数量由域内 MST 实例数决定,每一个 MSTI 配置信息长度为 16 字节。
MSTI 配置信息
1. MSTI Flags :第 1 位到第 7 位跟 RSTP 定义相同,第 8 位为 Master 标志位,取代了 RSTP 中的 TCA 标志位。
2. MSTI Region Root ID :表示 MST 实例的域根的 ID
3. MSTI IRPC :表示发送此 BPDU 的网桥到达 MSTI 域根的路径开销
4. MSTI Bridge Priority :表示发送此 BPDU 的网桥(指定桥)的优先级
5. MSTI Port Priority :表示发送此 BPDU 的端口(指定端口)的优先级
6. MSTI Remainig Hops :表示 BPDU 在该 MST 实例中的剩余跳数
3.2 CIST/MSTI 优先级向量
MSTP计算包括CIST计算和MSTI计算,CIST优先级向量包括Root ID、EPRC、RRoot ID、IRPC、DesignateBridgeID、DesignatePortID、RcvPortID 。优先级向量比较原则为“最小最优”,具体原则比较如下:
1. 先比较 CIST 的总根 ID ,小者优先
2. 若总根 ID 相同,则比较 CIST 的外部路径开销,小者优先
3. 若 EPRC 相同,则比较 CIST 域根 ID ,小者优先
4. 若 RRoot ID 相同,则比较 CIST 内部路径开销,小者优先
5. 若 ERPC 相同,则比较 CIST 指定桥 ID ,小者优先
6. 若 DesignateBridgeID 相同,则比较指定端口 ID ,小者优先
7. 若 DesignatePortID 相同,则比较接受端口 ID ,小者优先
经过CIST的计算,最后可以生成一棵贯穿整个网络的生成树 。
MSTI 优先级向量
MSTI优先级向量包括RRootID、IRPC、DesignateBridgeID、DesignatePortID、RcvPortID 。优先级向量比较原则为“最小最优先”。具体原则比较参考CIST比较原则。
每一个MSTI都进行独立的比较计算,最后在域内生成多颗独立的生成树。
3.3 MSTP 计算方法
每个BPDU报文中既包括了计算CIST的信息,也包含了计算MSTI的信息,因此在计算MSTI的时候不需要单独发送BPDU报文,当网桥在域内进行IST计算时,域内的每颗MSTI树也同时计算生成。
在进行CST计算时,会把每个MST域做为一个逻辑的网桥,其中网桥ID为IST域根ID 。
当网桥收BPDU并判断来自不同域时,它不会解析MST专有字段的信息,因此,MSTI的计算仅限于区域内。
由于网桥端口在不同的实例中担任不同的角色,所以可能会出现网桥端口既发送BPDU也接收BPDU的情况。
3.4 CST 计算过程
MST域内:在初始状态,每个网桥都会认为自己是总根,从而向外发送自身为总根、域根、指定桥的BPDU报文。各网桥收到BPDU之后开始进行优先级向量的比较并确定总根、域根、指定桥以及端口的角色。
CST的计算时将不同的MST域看作成逻辑的网桥,网桥ID为IST的域根ID,通过比较优先级向量(总根、EPC、域根、指定端口ID、接受端口ID)。
CST 计算过程:
1. 初始时,每个域“网桥”由域内优先级最高的的网桥表示,此时优先级最高的网桥为初始 CIST 域根,该域“网桥”向其他域发送以该域根为总根的 BPDU , EPC 为 0 。
2. 经过 RSTP 计算可以确定域“根网桥”,该域总包括了整个网络中优先级最高的网桥,即 CIST 总根。
3. 经过 EPC 可以确定每个域“网桥”的端口角色,域“网桥”的“根端口”即为域的 Master 端口,该 Master 端口所在的网桥即为新的 CIST 域根。
4. 一个域可能有多个域边界端口,在确定 Master 端口后,通过比较 BPDU 的优先级,可以确定域边界端口角色为指定端口、 Alternate 端口和 Backup 端口 。
5. 阻塞域之间的 Alternate 端口和 Backup 端口 。
3.5 IST 计算过程
CIST计算完成之后,确认了CIST域根。域内以CIST域根为根桥,结合IRPC确认各网桥端口角色,最终得到IST。
IST计算所需要的优先级向量包含:域根、IPRC、指定桥ID、指定端口ID、接受端口ID。
每个域都进行IST计算,得到每一个域的IST,结合之前域间计算的CST,最终得到整个网络的CIST。
3.6 MSTI 的计算
在IST计算过程中,网桥通过交互BPDU中的MST配置信息可以同时确定MST实例的根桥以及端口角色。
可以通过为网桥指定不同实例中的优先级。
3.7 MSTP 和 RSTP 的互操作
当运行MSTP的网桥和运行RSTP/STP的网桥一起工作时,RSTP/STP网桥会将MSTP域看作一个桥ID为域根ID的RSTP桥。
当RSTP/STP网桥收到MST BPDU后,会提取BPDU中的(RootID、EPRC、RRootID、DesignatePortID)作为RSTP/STP计算所需的优先级向量(RootID、RPC、DesignateBrigeID、DesignatePortID)。
当MSTP网桥收到RSTP/STP BPDU后,会将BPDU中的信息(RootID、RPC、DesignateBrigeID、DesignatePortID)对应到MSTP计算所需要的优先级向量中,其中DesignateBrigeID既可以做MSTP优先级向量中的PRoot ID,也可作为DesignateBrigeID,IRPC设置为0 。
3.8 MSTP 的 P/A 机制
在MSTP中,在上游网桥发送的Proposal BPDU中,Proposal和Agreement均置位,下游网桥收到Proposal和Agreement均置位的BPDU后,执行同步操作然后回应agreement置位的BPDU,使得上游指定端口快速进入转发状态。
4 MSTP 兼容性配置
H3C设备端口可以识别/发送的MSTP BPDU格式如下两种:
1. 符合 802.1S 协议的标准格式
2. 与非标准格式兼容的格式
默认情况下,端口配置为自动识别方式。
在网络中,由于一些厂商的设备再对MSTP协议的实现上存在差异,即用加密算法计算配置摘要时采用私有的密钥,从而导致即使MST域配置相同,不同厂商的设备之间也不能实现在MSTP域内互通,此时需要在设备上开启摘要侦听特性,从而实现不同厂商设备再MST域内的完全互通。
由于RSPT与MSTP的P/A机制的差别(RSPT只要Proposal置位就会回应,MSTP需要Proposal和Agreement同时置位才会回应),当运行MSTP与RSTP两设备需要快速收敛时,需要在运行MSTP设备的特定端口开启No Agreement Check特性。
转载于:https://blog.51cto.com/2785903/1104903