近期有多位读者问到Cisco交换机中利用STP配置负载均衡的方法,其实这在我的新书《Cisco/H3C交换机配置与管理完全手册》(第二版)(该书目前在当当网、卓越网和京东网等书店中全面热销中:http://product.dangdang.com/product.aspx?product_id=22581826,http://book.360buy.com/10902722.html)中都有详细的配置步骤和实例。下面把这部分内容分享如下。
12.2 Cisco IOS交换机生成树负载均衡配置示例
【说明】IEEE 802.1s MSTP生成树模式中同样可以实现VLAN通信负载均衡,而且同样有两种方案:一种是基于端口优先级的,另一种是基于端口路径开销值的。但要注意的是,在MSTP的负载均衡配置中均只需在中继链路的一端配置即可,与本节介绍的SST下的负载均衡配置中的端口优先级方案有些区别,但与端口开销值方案一样。具体在本章最后介绍的PVST+到MSTP迁移配置示例中有体现。
在如图12-1所示的示例中,互联的Switch A与Switch B之间有两个中继连接(Trunk 1和Trunk 2)。现在实现Switch A与Switch B之间的Trunk 1中继链路上只允许VLAN 8~VLAN 10的通信通过,而在Trunk 2中继链路上只允许VLAN 3~VLAN 6的通信通过。
图12-1 使用STP端口优先级进行负载均衡的拓扑示例
l 在VLAN 8~VLAN 10中分配Trunk 1上的端口优先值为16,优先级更高。
l 在VLAN 3~VLAN 6的Trunk 1上保持默认的端口优先值128,优先级较低。
l 在VLAN 3~VLAN 6中分配Trunk 2上的端口优先值为16,优先级更高。
l 在VLAN 8~VLAN 10的Trunk 2上保持默认的端口优先值128,优先级较低。
这样一来,Trunk 1只承载VLAN 8~10的通信,而Trunk 2只承载VLAN 3~VLAN 6的通信(优先值数越低,优先级别越高)。通过生成树协议可以实现在当前活动的中继链路失效,则具有更低优先级的中继链路会接替原来正常的中继链路的工作,承载以上所有VLAN的通信流。继续保持在所有中继端口都没有重复的通信流发生。
【说明】如果交换机是交换机堆叠成员,则必须使用spanning-tree [vlan vlan-id] cost cost接口配置命令替代表12-12所示的spanning-tree [vlan vlan-id] port-priority priority接口配置命令来选择置于转发状态的接口,为要首先选择的接口分配较低花费值,为后面选择的接口分配更高的花费值,具体将在下节介绍。
步骤
|
命令
|
用途说明
|
1
|
Switch#
configure terminal
|
在Switch A
上进入全局配置模式
|
2
| Switch(config)#vtp domain domain-name | 配置一个VTP管理域,域名可以有1~32个字符 |
3
|
Switch(config)#
vtp mode server
|
配置Switch A
作为VTP
服务器
|
4
|
Switch(config)#
end
|
返回到特权模式
|
5
|
Switch#
show vtp status
| 在Switch A 和Switch B上校验VTP配置,主要在输出信息中检查VTP Operating Mode(VTP操作模式)和VTP Domain Name(VTP域名)字段 |
6
|
Switch#
show vlan
|
在Switch A
的VLAN
数据库中查看现有的VLAN
|
7
|
Switch#
configure terminal
|
进入全局配置模式
|
8
| Switch(config)#interface gigabitethernet 0/1 |
指定要配置为中继的接口,进入接口配置模式
|
9
| Switch(config-if)#switchport trunk encapsulation |
配置端口支持ISL
或IEEE 802.1Q
封装,或者与邻接接口协商封装类型。必须在每一个链路的两端配置相同的封装类型
|
10
|
Switch(config-if)#
switchport mode trunk
|
配置以上端口为中继端口
|
11
|
Switch(config-if)#
end
|
返回到特权模式
|
12
| Switch#show interfaces gigabitethernet 0/1 switchport |
校验以上接口的VLAN
配置
|
13
| 在Switch A上为第二个端口gigabitethernet 0/2重复以上第7~11步 | |
14
| 在Switch B上为与Switch A连接的两个端口重复以上第7~11步 | |
15
|
Switch#
show vlan
|
当中继链路建立后,VTP
传递VTP
和VLAN
信息到Switch B
。此时通过这个命令可以校验Switch B
已学习到这些VLAN
配置
|
16
|
Switch#
configure terminal
|
在Switch A
上进入全局配置模式
|
17
| Switch(config)#interface gigabitethernet 0/1 |
指定要设置STP
端口优先级的接口,并进入接口配置模式
|
18
| Switch(config-if)#spanning-tree vlan 8-10 port- |
在VLAN 8
~VLAN 10
上为以上端口设置优先值为16
,以达到在gigabitethernet0/1
中继端口上允许VLAN 8~ VALN 10
中通信的目的
|
19
|
Switch#
exit
|
返回到全局配置模式
|
20
| Switch(config)#interfacegigabitethernet0/2 |
指定第二个要设置STP
端口优先级的接口,并进入接口配置模式
|
21
| Switch(config-if)#spanning-tree vlan 3-6port- |
在VLAN 3
~VLAN 6
上为以上端口设置优先值为16
,以达到在gigabitethernet0/2
中继端口上允许VLAN 3~ VALN 6
中通信的目的
|
22
|
Switch(config-if)#
end
|
返回到全局配置模式
|
23
|
Switch#
show running-config
|
校验以上条目设置
|
24
|
Switch#
copy running-config startup-config
|
(可选)在对应交换机的启动配置文件中保存以上设置
|
在如图12-2所示的示例中,互联的Switch A与Switch B之间有两个中继连接(Trunk 1和Trunk 2,均为100BASE-T端口)。现在实现Switch A与Switch B之间的Trunk 1中继链路上只允许VLAN 8~VLAN 10的通信通过,而在Trunk 2中继链路上只允许VLAN 2~VLAN 4的通信通过。为了达到这个目的,需要进行如下配置(端口开销值越大,优先级越低):
l 在VLAN 2~VLAN 4分配Trunk 1上的端口路径开销值为30,具有较低优先级,以达到不转变该中继端口为转发状态,阻塞相应VLAN通信的目的。
l 在VLAN 8~VLAN 10中的Trunk 1上保持默认的100BASE-T路径开销值19,优先级较高,以达到转变该中继端口为转发状态,允许相应VLAN通信的目的。
l 在VLAN 8~VLAN 10中分配Trunk 2上的端口路径开销值为30,具有较低优先级,以达到不转变该中继端口为转发状态,阻塞相应VLAN通信的目的。
l 在VLAN 2~VLAN 4中的Trunk 2上保持默认的100BASE-T路径开销值19,优先级较高,以达到转变该中继端口为转发状态,允许相应VLAN通信的目的。
图12-2 使用STP路径开销进行负载均衡的拓扑示例
步骤
|
命令
|
用途说明
|
1
|
Switch#
configure terminal
|
在Switch A
上进入全局配置模式
|
2
| Switch(config)#interfacegigabitethernet0/1 |
指定要配置为中继的接口,进入接口配置模式
|
3
| Switch(config-if)#switchport trunk encapsulation
{
isl |
dot1q |
negotiate}
|
配置端口支持ISL
或IEEE 802.1Q
封装类型。必须在每一个链路的两端配置相同的封装类型
|
4
|
Switch(config-if)#
switchport mode trunk
|
配置以上端口为中继端口,并采用默认的ISL
中继方式
|
Switch(config-if)#
exit
|
返回到全局配置模式
| |
6
| 在Switch A上为第二个接口重复以上第2~5步 | |
7
|
Switch(config)#
end
|
返回到特权模式
|
8
|
Switch#
show running-config
|
校验以上设置。在输出信息中,确保接口已被配置为中继端口
|
9
|
Switch#
show vlan
| 当中继链路建立后,Switch A可以接收来自其他交换机的VTP信息。通过此命令可以校验Switch A已接收到其他交换机的VLAN信息 |
10
|
Switch#
configure terminal
|
进入到全局配置模式
|
11
| Switch(config)#interfacegigabitethernet0/1 |
指定要设置路径开销的接口,进入接口配置模式
|
Switch(config-if)#spanning-tree vlan 2-4 cost 30 |
为VLAN 2
~VLAN 4
设置生成权路径开销为30
,以达到在gigabitethernet0/1
中继端口上阻塞VLAN 2~ VALN 4
中通信的目的
| |
13
|
Switch(config-if)#
exit
|
返回到全局配置模式
|
14
| 在Switch A的gigabitethernet0/2中继接口上重复以上第9~13步,并为VLAN 8~VLAN 10设置路径开销为30,以达到在gigabitethernet0/2中继端口上阻塞VLAN 8~ VALN 10中通信的目的 | |
17
|
Switch#
copy running-config startup-config
| (可选)在Switch A的启动配置文件中保存以上配置 |