目录
一、STP生成树协议理论
1.1、为什么要有生成树协议
1.2、STP选举
1.3、BPDU介绍
1.4、选举规则
1.5、端口角色
1.6、端口状态描述
二、STP实例
2.1拓扑图
2.2 L2-SW1配置
2.3 L2-SW3配置
2.4 查看端口状态
三、MSTP实例
3.1 拓扑图
3.2 LSW1配置
3.3 LSW2配置
3.4 LSW3配置
3.5 AR1配置
3.6 PC机配置
3.7 测试结果
因为当有环路存在时,广播的发送会引起全网风暴,因此需要打破环路生成的条件。而生成树协议就是解决二层广播的重要手段,另外我们会阻塞一些端口,打破环路生成条件。当链路出现问题时,这些被阻塞的端口可以过渡到转发状态,实现链路备份的作用。
STP的各种选举是通过交换BPDU报文来实现的,BPDU是直接封装在以太网帧中的,对于参加STP的所有sw,它们都通过数据消息交换来获取网络中其他sw的信息,这种消息就被称为BPDU, BPDU是直接封装在二层的协议。
最初的网络,每个sw都认为自己是根桥,都会发送BPDU,比较Lowest BID(最小网桥ID),选举出一个根桥,此时就只有根桥发送BPDU。非根桥只能转发,转发时只能修改bridge-id和cost字段。
BPDU:网桥协议数据单元
BPDU功能:1、选举根桥
2、确定冗余路径的位置
3、通过阻塞特定端口来避免环路
4、通告网络的拓扑变更
5、监视生成树状态
BPDU每2秒由根桥发送一次。(拥有最小bridge-id的交换机成为根网桥)
BPDU分两种类型:
1、配置BPDU--通常由根网桥以周期性发出,包括了STP参数,用于各种选举
2、TCN BPDU--这种BPDU是当交换机检测到拓扑发生变更时所产生的,可由非根网桥发出
选举根交换机规则
选择最小BID(网桥ID),网桥ID由网桥优先级和MAC地址组成(越小越优)。
交换机默认网桥优先级是32768
设置成根交换机的两种方法
1、修改网桥优先级命令
[sw] stp priority 0 (数值需设置为4096倍数)
2、设置此网桥为根网桥
[sw] stp root primary (优先级将为0)
查看谁是根网桥命令
display stp
选举根端口、指定端口规则
1、到达根的最小开销
2、最小的发送方BID(网桥ID)
3、最小的发送方PID=端口优先级(默认128)+发送方端口号(当两台交换机之间有两条线路直连时会用到这一项来选)
修改网桥接口优先级命令
[sw1-Ethernet0/0/1]stp port priority 0 (数据需设为16的倍数)
查看端口状态命令
display stp brief
开销值:根桥发出的COST值是0,在下一交换机的入口处才加上COST值,出口处COST值不变。
BW(带宽) cost
10Mbps: 100
100Mbps : 19
1Gbps: 4
10Gbps: 2
RP:根端口,每个非根网桥有且只有一个。选举到达根网桥上开销值最小的成为根端口。
DP:指定端口,根网桥上每个端口都是指定端口,非根网桥上需要转发数据的端口也是指定端口。
AP:预备端口,该接口状态为blocking状态,只收BPDU不发BPDU
Disabled(禁用状态):不转发数据帧,不学习MAC地址,不参与生成树计算
Blocking(阻塞状态):不转发数据帧,不学习MAC地址,接收并处理BPDU不发送BPDU
Listening(侦听状态):不转发数据帧,不学习MAC地址,参与生成树计算,接受并发送BPDU
Lerning(学习状态):不转发数据帧,学习MAC地址,参与生成树计算,接受并发送BPDU
Forwarding(转发状态):转发数据帧,学习MAC地址,参与生成树计算,接受并发送BPDU
端口由Blocking过渡到Forwarding有50s延迟,Blocking到Listening有20s老化时间,Listening到Lernibg有15s过渡时间,Lerning到Forwarding有15s过渡时间
案例需求:更改交换机网桥优先级,使LSW1成为根网桥,LSW2的e0/0/2接口阻塞
[Huawei]user-interface console 0 #永不超时
[Huawei-ui-console0]idle-timeout 0 0
[Huawei-ui-console0]q #退到上一级
[Huawei]sysname L2-SW1 #重命名
[L2-SW1]stp priority 0 #修改网桥优先级
[Huawei]user-interface console 0 #永不超时
[Huawei-ui-console0]idle-timeout 0 0
[Huawei-ui-console0]q #退到上一级
[Huawei]sysname L2-SW3 #重命名
[L2-SW3]stp priority 4096 #修改网桥优先级
L2-SW1
L2-SW2
L2-SW3
MSTP:多实例生成树,让指定一个vlan或多个vlan生成一棵树,实现链路的负载均衡。
案例需求:让LSW1成为vlan10的根网桥,LSW2成为vlan20的根网桥,实现链路的负载均衡。
[Huawei]user-interface console 0 #永不超时
[Huawei-ui-console0]idle-timeout 0 0
[Huawei-ui-console0]q #退到上一级
[Huawei]sysname LSW1 #重命名
[LSW1]vlan batch 10 20 #创建vlan
[LSW1]int g0/0/1 #进入接口
[LSW1-GigabitEthernet0/0/1]port link-type access #设置链路类型为 access
[LSW1-GigabitEthernet0/0/1]port default vlan 10 #将接口加入vlan 10
[LSW1-GigabitEthernet0/0/1]q #退到上一级
[LSW1]int g0/0/2 #进入接口
[LSW1-GigabitEthernet0/0/2]port link-type trunk #设置链路类型为 trunk
[LSW1-GigabitEthernet0/0/2]port trunk allow-pass vlan 10 20 #允许vlan 10 20通过
[LSW1-GigabitEthernet0/0/2]q #退到上一级
[LSW1]int e0/0/1 #进入接口
[LSW1-Ethernet0/0/1]port link-type trunk #设置链路类型为 trunk
[LSW1-Ethernet0/0/1]port trunk allow-pass vlan 10 20 #允许 vlan 10 20 通过
[LSW1-Ethernet0/0/1]q #退到上一级
[LSW1]stp mode mstp #设置stp模式为mstp
[LSW1]stp region-configuration #进入mstp设置模式
[LSW1-mst-region]region-name huawei #区域名称为huawei
[LSW1-mst-region]revision-level 1 #版本级别为1
[LSW1-mst-region]instance 1 vlan 10 #定义实例一为vlan10
[LSW1-mst-region]instance 2 vlan 20 #定义实例二为vlan20
[LSW1-mst-region]active region-configuration #对mstp配置保存
[LSW1-mst-region]q #退到上一级
[LSW1]stp instance 1 root primary #定义交换机为实例一的根
[LSW1]stp instance 2 root secondary #定义交换机为实例二的备选根
[Huawei]user-interface console 0 #永不超时
[Huawei-ui-console0]idle-timeout 0 0
[Huawei-ui-console0]q #退到上一级
[Huawei]sysname LSW2 #重命名
[LSW2]vlan batch 10 20 #创建vlan
[LSW2]int g0/0/1 #进入接口
[LSW2-GigabitEthernet0/0/1]port link-type access #设置链路类型access
[LSW2-GigabitEthernet0/0/1]port default vlan 20 #接口加入vlan20
[LSW2-GigabitEthernet0/0/1]q #退到上一级
[LSW2]int g0/0/2 #进入接口
[LSW2-GigabitEthernet0/0/2]port link-type trunk #设置链路类型trunk
[LSW2-GigabitEthernet0/0/2]port trunk allow-pass vlan 10 20 #允许vlan10 20通过
[LSW2-GigabitEthernet0/0/2]q #退到上一级
[LSW2]int e0/0/1 #进入接口
[LSW2-Ethernet0/0/1]port link-type trunk #设置链路类型trunk
[LSW2-Ethernet0/0/1]port trunk allow-pass vlan 10 20 #允许vlan10 20通过
[LSW2-Ethernet0/0/1]q #退到上一级
[LSW2]stp mode mstp #设置stp模式mstp
[LSW2]stp region-configuration #进入mstp设置模式
[LSW2-mst-region]region-name huawei #区域名称为huawei
[LSW2-mst-region]revision-level 1 #版本级别为1
[LSW2-mst-region]instance 1 vlan 10 #定义实例一为vlan10
[LSW2-mst-region]instance 2 vlan 20 #定义实例二为vlan20
[LSW2-mst-region]active region-configuration #保存mstp配置
[LSW2-mst-region]q #退到上一级
[LSW2]stp instance 1 root secondary #设置交换机为实例一备选根
[LSW2]stp instance 2 root primary #设置交换机为实例二备选根
[Huawei]user-interface console 0 #永不超时
[Huawei-ui-console0]idle-timeout 0 0
[Huawei-ui-console0]q #退到上一级
[Huawei]sysname LSW3 #重命名
[LSW3]vlan batch 10 20 #创建vlan
[LSW3]int e0/0/3 #进入接口
[LSW3-Ethernet0/0/3]port link-type trunk #设置链路类型trunk
[LSW3-Ethernet0/0/3]port trunk allow-pass vlan 10 20 #允许vlan10 20通过
[LSW3-Ethernet0/0/3]q #退到上一级
[LSW3]int e0/0/4 #进入接口
[LSW3-Ethernet0/0/4]port link-type trunk #设置链路类型trunk
[LSW3-Ethernet0/0/4]port trunk allow-pass vlan 10 20 #允许vlan10 20通过
[LSW3-Ethernet0/0/4]q #退到上一级
[LSW3]int e0/0/1 #进入接口
[LSW3-Ethernet0/0/1]port link-type access #设置链路类型access
[LSW3-Ethernet0/0/1]port default vlan 10 #将接口加入vlan10
[LSW3-Ethernet0/0/1]q 退到上一级
[LSW3]int e0/0/2 进入接口
[LSW3-Ethernet0/0/2]port link-type access #设置链路类型access
[LSW3-Ethernet0/0/2]port default vlan 20 #将接口加入vlan20
[LSW3-Ethernet0/0/2]q #退到上一级
[LSW3]stp mode mstp #设置stp模式mstp
[LSW3]stp region-configuration #进入mstp设置模式
[LSW3-mst-region]region-name huawei #区域名称为huawei
[LSW3-mst-region]revision-level 1 #版本级别为 1
[LSW3-mst-region]instance 1 vlan 10 #定义实例一为vlan10
[LSW3-mst-region]instance 2 vlan 20 #定义实例二为vlan20
[LSW3-mst-region]active region-configuration #保存mstp配置
[LSW3-mst-region]q 退到上一级
[Huawei]user-interface console 0 #永不超时
[Huawei-ui-console0]idle-timeout 0 0
[Huawei-ui-console0]q #退到上一级
[Huawei]sysname AR1 #重命名
[AR1]int g0/0/0 #进入接口
[AR1-GigabitEthernet0/0/0]ip add 10.1.10.254 24 #配置IP地址
[AR1-GigabitEthernet0/0/0]int g0/0/1 #进入接口
[AR1-GigabitEthernet0/0/1]ip add 10.1.20.254 24 #配置IP地址
[AR1-GigabitEthernet0/0/1]q 退到上一级
PC1
10.1.10.10 #IP 地址
255.255.255.0 #子网掩码
10.1.10.254 #网关地址
PC2
10.1.20.10 #IP地址
255.255.255.0 #子网掩码
10.1.20.254 #网关地址
PC1pingPC2成功
查看LSW1端口状态
LSW1是vlan10(实例一)的根网桥
查看LSW2端口状态
LSW2是vlan20(实例二) 的根网桥
查看LSW3端口状态
LSW3的e0/0/4在vlan10(实例一)阻塞
LSW3的e0/0/3在vlan20(实例二)阻塞
LSW1成为vlan10的根网桥,LSW2成为vlan20的根网桥,实现链路的负载均衡,不同网段,不同vlan的PC1与PC2互通