Day05-STP生成树协议

STP 产生的背景(解决什么问题?)

单点故障

当一个数据发往目标地址时,有且只有一个节点/链路的时候,一旦该节点/链路故障,就会导致大面积的主机网络终端,称之为单点故障

怎么去解决单点故障

增加冗余/备份的链路和设备

增加冗余/备份设备后,产生了新的问题:

交换机与交换机之间增加备份链路后:极有可能形成环形网络,从而形成二层环路,而二层的环路又极有可能引发广播风暴(交换机的工作原理)。

如何去解决二层环路引发的广播风暴呢?

STP 生成树协议

广播风暴是因为有环路,将环路断开,即可解决。

STP(Spanning Tree Protocol)生成树协议,STP 通过阻塞某个接口,从而在逻辑上断开环路,防止广播风暴,破坏二层环路。当主线路真正发生故障时,逻辑上阻塞的接口会被重新激活,备份链路开始转发数据。当主线路恢复的时候,接口再次会被阻塞。

STP 的工作原理(如何决定出哪个接口被阻塞呢?)

第一步:确定交换机角色

在设备刚开始运行时,所有的交换机都认为自己是根交换机,这个时候他们就会互相发送 BPDU 报文,BPDU 报文里包含了 BID(Bridge ID),Bridge ID 由两部分组成:优先级(默认32768)+自己的MAC 地址,优先级数值最小的成为根交换机,如若优先级都是默认的 32768,则比较自身的 MAC 地址,越小越优先。

第二步:确定端口角色

STP协议共定义了三种端口角色

根端口(ROOT) 每一个非根交换机上,有且只有1个,距离根交换机最近的端口
指定端口(DESI) 每一个链路上,有且只有1个,距离根交换机最近的端口
非指定端口 除了根端口和指定端口,剩余所有端口都叫做非指定端口

1)选举根端口

定律:

根交换机中,没有根端口

非根交换机中,有且只有一个根端口

选举原则:

1.非跟交换机到达根交换机的路径开销成本cost最小的端口,就是根端口(离根交换机最近的端口称之为根端口)

路径COST值:跟端口带宽有关系,带宽越高,COST 值越小
默认情况下,华为交换机的千兆端口 COST值为20000,百兆端口 cost 值为 200000
display stp    

2.当cost 值一样时,则比较对端设备的 BID 值,BID 越小越优先

3.当 BID 相同时,则比较对端设备的 PID(port id),越小越优先

2)选举指定端口

定律:

根交换机中的每一个接口都是,指定端口。

一条链路,有且只有一个指定端口

通常情况下,如果一条链路的一端是根端口,另外一端则就是指定端口
选举原则:

1.比较 cost 值

2.比较对端设备的 BID

3.比较对端设备的 PID

第三步:确定端口状态(决定哪个接口要被阻塞)

最终什么都没被选上的端口,则成为阻塞端口。形成无环的数据转发路线。

浓缩版:

1.选举根交换机

2.选举根端口

3.选举指定端口

4.确定出阻塞端口

命令

stp mode stp  //把 stp 模式修改为 STP

stp priority 4096  //将该交换机的stp 优先级调整为 4096(默认是 32768)

display stp   //查看当前交换机的 STP 角色

display stp  brief //查看当前交换机的端口状态


STP 补充

BPDU 报文

Bridge Protocol Data Unit -桥协议数据单元,即STP协议的报文,通过这种类型的报文,STP协议实现了自己的所有功能

COST 值(路径开销)

COST:路径成本,默认情况下,千兆链路的成本为 20000,百兆链路为 200000。可以在端口上手动修改

[Huawei-gi0/0/11]stp cost {value}    //手动修改 cost 值

PID (Port Identifier)端口标识

端口标识越小越优先,由端口优先级和端口号两部分组成,端口优先级可配置,默认值128。

STP的五种端口状态

从开启 STP 到最终选举完成,运行 STP 协议的交换机总共存在五种状态

禁用(disabled) 强制关闭,没有启动 STP 协议
阻塞(blocking) 只接受 BPDU 报文,不发送 BPDU 报文
侦听(listening) 比较 BPDU 报文,确定交换机角色和端口角色
学习(learning) 基于端口上收到的数据帧,学习 MAC 地址表
转发(forwarding) 端口的最终状态,能够发送和接收用户数据

STP 的 3 种计时器

hello 时间:端口发送的BPDU报文的时间间隔:默认是2秒,当根交换机产生后,根交换机会以 2s 一个的频率进行发送 BPDU 报文。向所有运行 STP 协议的端口通告目前网络中的STP 状态

转发延迟(forward delay):侦听—学习:15秒 、学习—转发:15秒。(交换机端口从运行 STP 到最终转发数据所用的时间)

最大老化时间(Max Age):一个端口最大的“没有接收BPDU”的时间间隔:20秒。如若根交换机超过了这个时间还没有发送新的 BPDU 报文,则其他非根交换机则会认为根交换机发生了故障,从而进行重新选举

STP 的最大收敛时间:30秒~50 秒

根交换机故障:重新选举根交换机到各端口状态稳定,需要大约 50S

链路故障:重新确定端口状态需要 30S~50S

MSTP

STP 的不足

STP收敛速度慢:30秒~50秒,导致网络中断时间过长

解决方案:RSTP快速生成树

1)RSTP-快速生成树,公有协议:IEEE802.1w,在STP的基础上优化而来

作用:实现网络的快速收敛,降低网络故障时间,提高数据转发的效率

2)RSTP对STP的改进

-增加了2种端口角色(AP和BP)

-减少了3种端口状态(禁用,阻塞,侦听三种状态合为一种)

-引入了P/A 机制(让指定端口尽快进入转发状态)

P表示提议 A表示:同意, 协议一致

RSTP 的不足

1)RSTP和STP有一个共同缺陷:局域网种所有的vlan共享一棵生成树

2)所有的vlan的数据转发路径是相同的、无法实现vlan数据流的负载分担

MSTP登场:多生成树协议

1)MSTP:多生成树协议,公有协议:IEEE802.1s,在RSTP的基础上优化而来,华为交换机默认开启 MSTP

2)在MSTP网络中,引入了域的概念,称为MST域

3)每一个MST域中包含一个或多个“生成树”称为“实例”

4)每个“实例生成树”都可以绑定vlan,实现vlan数据流的负载分担/负载均衡

5)默认情况下,所有的vlan都属于“实例树0:即:instance 0”

6)不同的“实例树”、就是不同的“生成树”,每个实例树种都可以选举根交换机

MSTP 的工作原理

MSTP工作过程

1)选举根交换机

2)选举根端口-RP

3)选举指定端口-DP

4)确定替代端口-AP

MSTP端口角色

根端口 非根交换机上距离根交换机最近的口
指定端口 网段上距离根交换机最近的口
替代端口 非交换机上的“根端口”的替代端口
备份端口 网段上的“指定端口”的备份端口

MSTP端口状态

丢弃 相当于STP中的禁用、侦听、阻塞,不转发用户数据
学习(learning) 基于端口上收到的数据帧,学习 MAC 地址表
转发(forwarding) 端口的最终状态,能够发送和接收用户数据

MSTP 通用命令

[SW1]stp mode mstp   //将交换机 stp 模式修改为 MSTP(其实默认就是 MSTP)
[SW1]stp region-configuration        //进入MST域 
[SW1-mst-region]region-name fesco     //配置MST域的域名为fesco, 注意,所有交换机的域名都要保持一致 
[SW1-mst-region]instance 1 vlan 10    //配置实例树1绑定vlan10    注意!所有交换机instance 的编号和后面的 vlan 也要保持一致 
[SW1-mst-region]instance 2 vlan 20    //配置实例树2绑定vlan20 
[SW1-mst-region]active region-configuration    //激活这个区域    不激活不生效 
[SW1-mst-region]quit

[SW1]stp instance 1 priority 4096    //配置SW1为 VLAN 10的根交换机 手动更改优先级,指定让进程 1 里的设备(属于 VLAN10 的设备)把该交换机做为根。

[SW1]display stp brief   //查看当前设备的 STP简要端口状态

MSTP 实验

实验(1)

需求

1)PC1和PC2属于vlan 10,IP地址段192.168.10.0/24
2)PC3和PC4属于 vlan 20,IP地址段 192.168.20.0/24
3)配置MSTP,实现VLAN10内的PC1和PC2的数据转发路径是:SW1-SW2
4)配置MSTP,实现VLAN20内的PC3和PC4的数据转发路径是:SW3-SW4

配置步骤

1)配置PC的IP地址

2)在所有的交换机中都创建vlan10和vlan20

3)交换机连接PC的接口设置为access模式,并加入指定的vlan

4)交换机和交换机互联的接口设置trunk模式,并允许vlan10和vlan20 通过

5)在所有的交换机中配置MSTP,所有交换机中的MSTP配置都要完全相同

6)指定SW1为vlan10的根交换机, 指定SW3为vlan20的根交换机

配置命令

SW1: 
[Huawei]sysname SW1  
[SW1]vlan batch 10 20
[SW1]interface gi0/0/1
[SW1-G0/0/1]port link-type access
[SW1-G0/0/1]port default vlan 10
[SW1-G0/0/1]quit

[SW1]port-group group-member g0/0/12 g0/0/13
[SW1-port-group]port link-type trunk
[SW1-port-group]port trunk  allow-pass  vlan  10 20  
[SW1-port-group]quit

[SW1]stp mode mstp
[SW1]stp region-configuration        //进入MST域 
[SW1-mst-region]region-name fesco     //配置MST域的域名为fesco
[SW1-mst-region]instance 1 vlan 10    //配置实例树1绑定vlan10 
[SW1-mst-region]instance 2 vlan 20    //配置实例树2绑定vlan20 
[SW1-mst-region]active region-configuration    //激活这个区域 
[SW1-mst-region]quit

[SW1]stp instance 1 priority 4096    //配置SW1为 VLAN 10的根交换机 

 SW1 交换机配置
SW2:
[Huawei]sysname SW2
[SW2]vlan batch 10 20
[SW2]interface gi0/0/1
[SW2-G0/0/1]port link-type access
[SW2-G0/0/1]port default vlan 10
[SW2-G0/0/1]quit

[SW2]port-group group-member g0/0/12 g0/0/13
[SW2-port-group]port link-type trunk
[SW2-port-group]port trunk  allow-pass  vlan  10 20  
[SW2-port-group]quit

[SW2]stp mode mstp
[SW2]stp region-configuration        //进入MST域
[SW2-mst-region]region-name fesco      //配置MST域的域名为fesco
[SW2-mst-region]instance 1 vlan 10   //配置实例树1绑定vlan10
[SW2-mst-region]instance 2 vlan 20   //配置实例树2绑定vlan20
[SW2-mst-region]active region-configuration   //激活这个区域

 SW2 交换机配置
SW3:
[Huawei]sysname SW3
[SW3]vlan batch 10 20
[SW3]interface gi0/0/1
[SW3-G0/0/1]port link-type access
[SW3-G0/0/1]port default vlan 20
[SW3-G0/0/1]quit

[SW3]port-group group-member g0/0/12 g0/0/13
[SW3-port-group]port link-type trunk
[SW3-port-group]port trunk  allow-pass  vlan  10 20  
[SW3-port-group]quit

[SW3]stp mode mstp
[SW3]stp region-configuration        //进入MST域
[SW3-mst-region]region-name fesco      //配置MST域的域名为fesco
[SW3-mst-region]instance 1 vlan 10   //配置实例树1绑定vlan10
[SW3-mst-region]instance 2 vlan 20   //配置实例树2绑定vlan20
[SW3-mst-region]active region-configuration   //激活这个区域
[SW3-mst-region]quit

[SW3]stp instance 2 priority 4096    //配置SW3为 VLAN 20的根交换机 


 SW3 交换机配置
SW4: 
[Huawei]sysname SW4
[SW4]vlan batch 10 20
[SW4]interface gi0/0/1
[SW4-G0/0/1]port link-type access
[SW4-G0/0/1]port default vlan 20
[SW4-G0/0/1]quit

[SW4]port-group group-member g0/0/12 g0/0/13
[SW4-port-group]port link-type trunk
[SW4-port-group]port trunk  allow-pass  vlan  10 20  
[SW4-port-group]quit

[SW4]stp mode mstp
[SW4]stp region-configuration        //进入MST域
[SW4-mst-region]region-name fesco      //配置MST域的域名为fesco
[SW4-mst-region]instance 1 vlan 10   //配置实例树1绑定vlan10
[SW4-mst-region]instance 2 vlan 20   //配置实例树2绑定vlan20
[SW4-mst-region]active region-configuration   //激活这个区域
[SW4-mst-region]quit SW4 交换机配置

实验 (2)-MSTP负载均衡

需求

1)PC1属于 vlan 10 ,IP地址为192.168.10.1/24,网关为 192.168.10.254
2)PC2属于 vlan 20 ,IP地址为192.168.20.1/24,网关为 192.168.20.254
3)确保PC1与PC2互通
4)合理配置 MSTP ,确保PC1与PC2之间的互通路径是最优的

配置思路

1)配置PC的IP地址

2)在所有的交换机中都创建vlan10和vlan20

3)交换机连接PC的接口设置为access模式,并加入指定的vlan

4)交换机和交换机互联的接口设置trunk模式,并允许vlan10和vlan20 通过

5)在所有的交换机中配置MSTP,所有交换机中的MSTP配置都要完全相同

6)指定SW1为vlan20的主根, vlan10的备根

7)指定SW2为vlan10的主根, vlan20的备根

8)配置路由器接口的IP地址

配置命令

SW1:
[SW1]vlan batch 10 20
[SW1]interface g0/0/1
[SW1-G0/0/1]port link-type access
[SW1-G0/0/1]port default vlan 20
[SW1-G0/0/1]quit

[SW1]port-group group-member g0/0/3 g0/0/10    //批量进入 G0/0/3 和 G0/0/10 接口(偷懒)
[SW1-port-group]port link-type trunk
[SW1-port-group]port trunk allow-pass vlan 10 20
[SW1-port-group]quit

[SW1]stp region-configuration    //创建 mstp 域
[SW1-mst-region]region-name fesco     //给域命名为 fesco(所有交换机名字保持一致)
[SW1-mst-region]instance 1 vlan 10    //创建进程,绑定 vlan
[SW1-mst-region]instance 2 vlan 20
[SW1-mst-region]active region-configuration   //激活该域

[SW1]stp instance 2 priority 4096
[SW1]stp instance 1 priority 8192

SW2:
[SW2]vlan batch 10 20
[SW2]interface g0/0/2
[SW2-G0/0/2]port link-type access
[SW2-G0/0/2]port default vlan 10
[SW2-G0/0/2]quit

[SW2]port-group group-member g0/0/4 g0/0/10
[SW2-port-group]port link-type trunk
[SW2-port-group]port trunk allow-pass vlan 10 20
[SW2-port-group]quit

[SW2]stp region-configuration 
[SW2-mst-region]region-name fesco
[SW2-mst-region]instance 1 vlan 10
[SW2-mst-region]instance 2 vlan 20
[SW2-mst-region]active region-configuration

[SW2]stp instance 1 priority 4096
[SW2]stp instance 2 priority 8192


SW3:
[SW3]vlan batch 10 20
[SW3]interface g0/0/1
[SW3-G0/0/1]port link-type  access
[SW3-G0/0/1]port default vlan 10

[SW3-G0/0/1]interface g0/0/2   //进入和路由器连接的接口
[SW3-G0/0/2]port link-type  access   //按照要求配置为 access 接口
[SW3-G0/0/2]port default vlan 20    //假如 vlan20
 
[SW3]port-group group-member g0/0/3 g0/0/4
[SW3-port-group]port link-type trunk
[SW3-port-group]port trunk allow-pass vlan 10 20
[SW3-port-group]quit

[SW3]stp region-configuration 
[SW3-mst-region]region-name fesco
[SW3-mst-region]instance 1 vlan 10
[SW3-mst-region]instance 2 vlan 20
[SW3-mst-region]active region-configuration


R1:
[R1]interface g0/0/1
[R1-GigabitEthernet0/0/1]ip address 192.168.20.254 24
[R1-GigabitEthernet0/0/1]int g0/0/2
[R1-GigabitEthernet0/0/2]ip address 192.168.10.254 24