Configuring MSTP and VRRP to Implement Load Balancing
Applicable Products and Versions
This example applies to the CE12800/CE6800 (excluding CE6810LI)/CE5800 V100R001C00 or later, the CE7800 V100R003C00 or later, the CE8800 V100R006C00 or later, the CE9800 V200R020C00 or later, the CloudEngine 16800 V200R005C20 or later, and CE12800E V200R002C50 or later.
For details about the mapping between software versions and switch models, see the Hardware Query Tool.
Networking Requirements
Access switches are dual-homed to core devices on a data center network. The requirements are as follows:
To ensure service reliability, deploy link redundancy. When one uplink is disconnected, traffic can be switched to another uplink. In addition, network bandwidth can be fully used.
Loops caused by link redundancy on the ring network are eliminated.
Device |
Interface |
VLANIF Interface |
IP Address |
---|---|---|---|
SwitchA |
10GE1/0/1 and 10GE1/0/2 |
VLANIF2 |
10.1.2.102/24 |
10GE1/0/1 and 10GE1/0/2 |
VLANIF3 |
10.1.3.102/24 |
|
10GE1/0/3 |
VLANIF4 |
10.1.4.102/24 |
|
SwitchB |
10GE1/0/1 and 10GE1/0/2 |
VLANIF2 |
10.1.2.103/24 |
10GE1/0/1 and 10GE1/0/2 |
VLANIF3 |
10.1.3.103/24 |
|
10GE1/0/3 |
VLANIF5 |
10.1.5.103/24 |
Requirement Analysis
Deploy VRRP between SwitchA and SwitchB to implement link redundancy. VRRP load balancing improves link use efficiency.
Deploy MSTP between SwitchA, SwitchB, and SwitchC to eliminate loops.
Procedure
- Configure basic MSTP functions.
Configure SwitchA, SwitchB, and SwitchC in the MST region RG1 and create MSTI 1 and MSTI 2.
# Configure an MST region on SwitchA.
<HUAWEI> system-view [~HUAWEI] sysname SwitchA [*HUAWEI] commit [~SwitchA] stp region-configuration [~SwitchA-mst-region] region-name RG1 [*SwitchA-mst-region] instance 1 vlan 2 [*SwitchA-mst-region] instance 2 vlan 3 [*SwitchA-mst-region] commit [~SwitchA-mst-region] quit
# Configure an MST region on SwitchB.
<HUAWEI> system-view [~HUAWEI] sysname SwitchB [*HUAWEI] commit [~SwitchB] stp region-configuration [~SwitchB-mst-region] region-name RG1 [*SwitchB-mst-region] instance 1 vlan 2 [*SwitchB-mst-region] instance 2 vlan 3 [*SwitchB-mst-region] commit [~SwitchB-mst-region] quit
# Configure an MST region on SwitchC.
<HUAWEI> system-view [~HUAWEI] sysname SwitchC [*HUAWEI] commit [~SwitchC] stp region-configuration [~SwitchC-mst-region] region-name RG1 [*SwitchC-mst-region] instance 1 vlan 2 [*SwitchC-mst-region] instance 2 vlan 3 [*SwitchC-mst-region] commit [~SwitchC-mst-region] quit
Configure root bridges and secondary root bridges of MSTI 1 and MSTI 2 in the MST region RG1.
Configure the root bridge and secondary root bridge of MSTI 1.
# Configure SwitchA as the root bridge in MSTI 1.
[~SwitchA] stp instance 1 root primary [*SwitchA] commit
# Configure SwitchB as the secondary root bridge in MSTI 1.
[~SwitchB] stp instance 1 root secondary [*SwitchB] commit
Configure the root bridge and secondary root bridge of MSTI 2.
# Configure SwitchB as the root bridge in MSTI 2.
[~SwitchB] stp instance 2 root primary [*SwitchB] commit
# Configure SwitchA as the secondary root bridge in MSTI 2.
[~SwitchA] stp instance 2 root secondary [*SwitchA] commit
Set the path costs of the interfaces to be blocked in MSTI 1 and MSTI 2 to be greater than the default value.
The path cost range depends on the algorithm. Huawei proprietary algorithm is used as an example. Set the path costs of the interfaces to be blocked in MSTI 1 and MSTI 2 to 20000.
Switching devices on the same network must use the same algorithm to calculate the path cost of interfaces.
# Configure SwitchA to use Huawei proprietary algorithm to calculate the path cost.
[~SwitchA] stp pathcost-standard legacy [*SwitchA] commit
# Configure SwitchB to use Huawei proprietary algorithm to calculate the path cost.
[~SwitchB] stp pathcost-standard legacy [*SwitchB] commit
# Configure SwitchC to use Huawei proprietary algorithm to calculate the default path cost, and set the path cost of 10GE1/0/1 in MSTI 2 to 20000 and path cost of 10GE1/0/4 in MSTI 1 to 20000.
[~SwitchC] stp pathcost-standard legacy [*SwitchC] interface 10ge 1/0/1 [*SwitchC-10GE1/0/1] stp instance 2 cost 20000 [*SwitchC-10GE1/0/1] commit [~SwitchC-10GE1/0/1] quit [~SwitchC] interface 10ge 1/0/4 [~SwitchC-10GE1/0/4] stp instance 1 cost 20000 [*SwitchC-10GE1/0/4] commit [~SwitchC-10GE1/0/4] quit
Enable MSTP to eliminate loops.
MSTP is enabled by default.
Enable MSTP globally.
# Enable MSTP on SwitchA.
[~SwitchA] stp enable [*SwitchA] commit
# Enable MSTP on SwitchB.
[~SwitchB] stp enable [*SwitchB] commit
# Enable MSTP on SwitchC.
[~SwitchC] stp enable [*SwitchC] commit
Configure ports connected to hosts as edge ports.
# Configure 10GE1/0/2 and 10GE1/0/3 on SwitchC as edge ports.
[~SwitchC] interface 10ge 1/0/2 [~SwitchC-10GE1/0/2] stp edged-port enable [*SwitchC-10GE1/0/2] commit [~SwitchC-10GE1/0/2] quit [~SwitchC] interface 10ge 1/0/3 [~SwitchC-10GE1/0/3] stp edged-port enable [*SwitchC-10GE1/0/3] commit [~SwitchC-10GE1/0/3] quit
- Enable protection functions on the designated port of each root bridge in each MSTI. Here, root protection is used.
# Enable root protection on 10GE1/0/1 of SwitchA.
[~SwitchA] interface 10ge 1/0/1 [~SwitchA-10GE1/0/1] stp root-protection [*SwitchA-10GE1/0/1] commit [~SwitchA-10GE1/0/1] quit
# Enable root protection on 10GE1/0/1 of SwitchB.
[~SwitchB] interface 10ge 1/0/1 [~SwitchB-10GE1/0/1] stp root-protection [*SwitchB-10GE1/0/1] commit [~SwitchB-10GE1/0/1] quit
- Configure Layer 2 forwarding on switches on the ring network.
Create VLAN 2 and VLAN 3 on SwitchA, SwitchB, and SwitchC.
# Create VLAN 2 and VLAN 3 on SwitchA.
[~SwitchA] vlan batch 2 to 3
# Create VLAN 2 and VLAN 3 on SwitchB.
[~SwitchB] vlan batch 2 to 3
# Create VLAN 2 and VLAN 3 on SwitchC.
[~SwitchC] vlan batch 2 to 3
Add interfaces connecting to the ring to VLANs.
# Add 10GE1/0/1 on SwitchA to VLAN 2 and VLAN 3.
[~SwitchA] interface 10ge 1/0/1 [~SwitchA-10GE1/0/1] port link-type trunk [*SwitchA-10GE1/0/1] port trunk allow-pass vlan 2 to 3 [*SwitchA-10GE1/0/1] undo port trunk allow-pass vlan 1 [*SwitchA-10GE1/0/1] commit [~SwitchA-10GE1/0/1] quit
# Add 10GE1/0/2 on SwitchA to VLAN 2 and VLAN 3.
[~SwitchA] interface 10ge 1/0/2 [~SwitchA-10GE1/0/2] port link-type trunk [*SwitchA-10GE1/0/2] port trunk allow-pass vlan 2 to 3 [*SwitchA-10GE1/0/2] undo port trunk allow-pass vlan 1 [*SwitchA-10GE1/0/2] commit [~SwitchA-10GE1/0/2] quit
# Add 10GE1/0/1 on SwitchB to VLAN 2 and VLAN 3.
[~SwitchB] interface 10ge 1/0/1 [~SwitchB-10GE1/0/1] port link-type trunk [*SwitchB-10GE1/0/1] port trunk allow-pass vlan 2 to 3 [*SwitchB-10GE1/0/1] undo port trunk allow-pass vlan 1 [*SwitchB-10GE1/0/1] commit [~SwitchB-10GE1/0/1] quit
# Add 10GE1/0/2 on SwitchB to VLAN 2 and VLAN 3.
[~SwitchB] interface 10ge 1/0/2 [~SwitchB-10GE1/0/2] port link-type trunk [*SwitchB-10GE1/0/2] port trunk allow-pass vlan 2 to 3 [*SwitchB-10GE1/0/2] undo port trunk allow-pass vlan 1 [*SwitchB-10GE1/0/2] commit [~SwitchB-10GE1/0/2] quit
# Add 10GE1/0/1 on SwitchC to VLAN 2 and VLAN 3.
[~SwitchC] interface 10ge 1/0/1 [~SwitchC-10GE1/0/1] port link-type trunk [*SwitchC-10GE1/0/1] port trunk allow-pass vlan 2 to 3 [*SwitchC-10GE1/0/1] undo port trunk allow-pass vlan 1 [*SwitchC-10GE1/0/1] commit [~SwitchC-10GE1/0/1] quit
# Add 10GE1/0/2 on SwitchC to VLAN 2 and VLAN 3.
[~SwitchC] interface 10ge 1/0/2 [~SwitchC-10GE1/0/2] port link-type access [*SwitchC-10GE1/0/2] port default vlan 2 [*SwitchC-10GE1/0/2] commit [~SwitchC-10GE1/0/2] quit
# Add 10GE1/0/3 on SwitchC to VLAN 2 and VLAN 3.
[~SwitchC] interface 10ge 1/0/3 [~SwitchC-10GE1/0/3] port link-type access [*SwitchC-10GE1/0/3] port default vlan 3 [*SwitchC-10GE1/0/3] commit [~SwitchC-10GE1/0/3] quit
# Add 10GE1/0/4 on SwitchC to VLAN 2 and VLAN 3.
[~SwitchC] interface 10ge 1/0/4 [~SwitchC-10GE1/0/4] port link-type trunk [*SwitchC-10GE1/0/4] port trunk allow-pass vlan 2 to 3 [*SwitchC-10GE1/0/4] undo port trunk allow-pass vlan 1 [*SwitchC-10GE1/0/4] commit [~SwitchC-10GE1/0/4] quit
- Configure devices to ensure network connectivity.
# Assign an IP address to each interface. SwitchA is used as an example. The configuration of SwitchB is similar to that of SwitchA.
[~SwitchA] vlan batch 4 [*SwitchA] interface 10ge 1/0/3 [*SwitchA-10GE1/0/3] port link-type trunk [*SwitchA-10GE1/0/3] port trunk allow-pass vlan 4 [*SwitchA-10GE1/0/3] undo port trunk allow-pass vlan 1 [*SwitchA-10GE1/0/3] quit [*SwitchA] interface vlanif 2 [*SwitchA-Vlanif2] ip address 10.1.2.102 24 [*SwitchA-Vlanif2] quit [*SwitchA] interface vlanif 3 [*SwitchA-Vlanif3] ip address 10.1.3.102 24 [*SwitchA-Vlanif3] quit [*SwitchA] interface vlanif 4 [*SwitchA-Vlanif4] ip address 10.1.4.102 24 [*SwitchA-Vlanif4] quit [*SwitchA] commit
# Configure OSPF between SwitchA, SwitchB, and router. SwitchA is used as an example. The configuration of SwitchB is similar to that of SwitchA.
[~SwitchA] ospf 1 [*SwitchA-ospf-1] area 0 [*SwitchA-ospf-1-area-0.0.0.0] network 10.1.2.0 0.0.0.255 [*SwitchA-ospf-1-area-0.0.0.0] network 10.1.3.0 0.0.0.255 [*SwitchA-ospf-1-area-0.0.0.0] network 10.1.4.0 0.0.0.255 [*SwitchA-ospf-1-area-0.0.0.0] quit [*SwitchA-ospf-1] quit [*SwitchA] commit
- Configure VRRP groups.
# Configure VRRP group 1 on SwitchA and SwitchB, set the priority of SwitchA to 120 and the preemption delay to 20s, and set the default priority for SwitchB.
[~SwitchA] interface vlanif 2 [~SwitchA-Vlanif2] vrrp vrid 1 virtual-ip 10.1.2.100 [*SwitchA-Vlanif2] vrrp vrid 1 priority 120 [*SwitchA-Vlanif2] vrrp vrid 1 preempt-mode timer delay 20 [*SwitchA-Vlanif2] commit [~SwitchA-Vlanif2] quit [~SwitchB] interface vlanif 2 [~SwitchB-Vlanif2] vrrp vrid 1 virtual-ip 10.1.2.100 [*SwitchB-Vlanif2] commit [~SwitchB-Vlanif2] quit
# Configure VRRP group 2 on SwitchA and SwitchB, set the priority of SwitchB to 120 and the preemption delay to 20s, and set the default priority for SwitchA.
[~SwitchB] interface vlanif 3 [~SwitchB-Vlanif3] vrrp vrid 2 virtual-ip 10.1.3.100 [*SwitchB-Vlanif3] vrrp vrid 2 priority 120 [*SwitchB-Vlanif3] vrrp vrid 2 preempt-mode timer delay 20 [*SwitchB-Vlanif3] commit [~SwitchB-Vlanif3] quit [~SwitchA] interface vlanif 3 [~SwitchA-Vlanif3] vrrp vrid 2 virtual-ip 10.1.3.100 [*SwitchA-Vlanif3] commit [~SwitchA-Vlanif3] quit
# Set virtual IP address 10.1.2.100 of VRRP group 1 as the default gateway of HostA, and virtual IP address 10.1.3.100 of VRRP group 2 as the default gateway of HostB.
Verifying the Configuration
# After the configuration is complete, run the display vrrp command on SwitchA. You can see that SwitchA is the master in VRRP group 1 and the backup in VRRP group 2.
<SwitchA> display vrrp verbose Vlanif2 | Virtual Router 1 State : Master Virtual IP : 10.1.2.100 Master IP : 10.1.2.102 PriorityRun : 120 PriorityConfig : 120 MasterPriority : 120 Preempt : YES Delay Time : 20 s Remain : -- TimerRun : 1 s TimerConfig : 1 s Auth type : NONE Virtual MAC : 0000-5e00-0101 Check TTL : YES Config type : normal-vrrp Create time : 2013-05-11 11:39:18 Last change time : 2013-05-26 11:38:58 Vlanif3 | Virtual Router 2 State : Backup Virtual IP : 10.1.3.100 Master IP : 10.1.3.103 PriorityRun : 100 PriorityConfig : 100 MasterPriority : 120 Preempt : YES Delay Time : 0 s Remain : -- TimerRun : 1 s TimerConfig : 1 s Auth type : NONE Virtual MAC : 0000-5e00-0102 Check TTL : YES Config type : normal-vrrp Create time : 2013-05-11 11:40:18 Last change time : 2013-05-26 11:48:58
Run the display vrrp command on SwitchB. You can see that SwitchB is the backup in VRRP group 1 and the master in VRRP group 2.
<SwitchB> display vrrp verbose Vlanif2 | Virtual Router 1 State : Backup Virtual IP : 10.1.2.100 Master IP : 10.1.2.102 PriorityRun : 100 PriorityConfig : 100 MasterPriority : 120 Preempt : YES Delay Time : 0 s Remain : -- TimerRun : 1 s TimerConfig : 1 s Auth type : NONE Virtual MAC : 0000-5e00-0101 Check TTL : YES Config type : normal-vrrp Create time : 2012-05-11 11:39:18 Last change time : 2012-05-26 11:38:58 Vlanif3 | Virtual Router 2 State : Master Virtual IP : 10.1.3.100 Master IP : 10.1.3.103 PriorityRun : 120 PriorityConfig : 120 MasterPriority : 120 Preempt : YES Delay Time : 20 s Remain : -- TimerRun : 1 s TimerConfig : 1 s Auth type : NONE Virtual MAC : 0000-5e00-0102 Check TTL : YES Config type : normal-vrrp Create time : 2012-05-11 11:40:18 Last change time : 2012-05-26 11:48:58
Configuration Files
Configuration file of SwitchA
# sysname SwitchA # vlan batch 2 to 4 # stp instance 1 root primary stp instance 2 root secondary stp pathcost-standard legacy # stp region-configuration region-name RG1 instance 1 vlan 2 instance 2 vlan 3 # interface Vlanif2 ip address 10.1.2.102 255.255.255.0 vrrp vrid 1 virtual-ip 10.1.2.100 vrrp vrid 1 priority 120 vrrp vrid 1 preempt-mode timer delay 20 # interface Vlanif3 ip address 10.1.3.102 255.255.255.0 vrrp vrid 2 virtual-ip 10.1.3.100 # interface Vlanif4 ip address 10.1.4.102 255.255.255.0 # interface 10GE1/0/1 port link-type trunk undo port trunk allow-pass vlan 1 port trunk allow-pass vlan 2 to 3 stp root-protection # interface 10GE1/0/2 port link-type trunk undo port trunk allow-pass vlan 1 port trunk allow-pass vlan 2 to 3 # interface 10GE1/0/3 port link-type trunk undo port trunk allow-pass vlan 1 port trunk allow-pass vlan 4 # ospf 1 area 0.0.0.0 network 10.1.2.0 0.0.0.255 network 10.1.3.0 0.0.0.255 network 10.1.4.0 0.0.0.255 # return
Configuration file of SwitchB
# sysname SwitchB # vlan batch 2 to 3 5 # stp instance 1 root secondary stp instance 2 root primary stp pathcost-standard legacy # stp region-configuration region-name RG1 instance 1 vlan 2 instance 2 vlan 3 # interface Vlanif2 ip address 10.1.2.103 255.255.255.0 vrrp vrid 1 virtual-ip 10.1.2.100 # interface Vlanif3 ip address 10.1.3.103 255.255.255.0 vrrp vrid 2 virtual-ip 10.1.3.100 vrrp vrid 2 priority 120 vrrp vrid 2 preempt-mode timer delay 20 # interface Vlanif5 ip address 10.1.5.103 255.255.255.0 # interface 10GE1/0/1 port link-type trunk undo port trunk allow-pass vlan 1 port trunk allow-pass vlan 2 to 3 stp root-protection # interface 10GE1/0/2 port link-type trunk undo port trunk allow-pass vlan 1 port trunk allow-pass vlan 2 to 3 # interface 10GE1/0/3 port link-type trunk undo port trunk allow-pass vlan 1 port trunk allow-pass vlan 5 # ospf 1 area 0.0.0.0 network 10.1.2.0 0.0.0.255 network 10.1.3.0 0.0.0.255 network 10.1.5.0 0.0.0.255 # return
Configuration file of SwitchC
# sysname SwitchC # vlan batch 2 to 3 # stp pathcost-standard legacy # stp region-configuration region-name RG1 instance 1 vlan 2 instance 2 vlan 3 # interface 10GE1/0/1 port link-type trunk undo port trunk allow-pass vlan 1 port trunk allow-pass vlan 2 to 3 stp instance 2 cost 20000 # interface 10GE1/0/2 port link-type access port default vlan 2 stp edged-port enable # interface 10GE1/0/3 port link-type access port default vlan 3 stp edged-port enable # interface 10GE1/0/4 port link-type trunk undo port trunk allow-pass vlan 1 port trunk allow-pass vlan 2 to 3 stp instance 1 cost 20000 # return