Example for Configuring an ERPS Multi-ring Network
Networking Requirements
Generally, redundant links are used on an Ethernet switching network to provide link backup and enhance network reliability. The use of redundant links, however, may produce loops, causing broadcast storms and rendering the MAC address table unstable. As a result, communication quality deteriorates, and communication services may even be interrupted.
To prevent loops caused by redundant links, enable ERPS on the nodes of the ring network. ERPS is a Layer 2 loop-breaking protocol defined by the ITU-T, and provides fast convergence of carrier-class reliability standards.
On the ERPS multi-ring network shown in Figure 12-18, SwitchA, SwitchB, and SwitchD constitute a major ring, and SwitchA, SwitchC, and SwitchD constitute a sub-ring.
Configuration Roadmap
The configuration roadmap is as follows:
Configure the link type of all ports to be added to ERPS rings as trunk.
Create ERPS rings and configure control VLANs and Ethernet Ring Protection (ERP) instances in the ERPS rings.
Specify the ERPS version and configure a sub-ring.
Add Layer 2 ports to ERPS rings and specify port roles.
Configure the topology change notification and TC protection.
Configure the Guard timers and WTR timers in the ERPS rings.
Configure Layer 2 forwarding on SwitchA through SwitchD.
Procedure
- Configure the link type of all ports to be added to ERPS
rings as trunk.
# Configure SwitchA.
<HUAWEI> system-view [~HUAWEI] sysname SwitchA [*HUAWEI] commit [~SwitchA] interface 10ge 1/0/1 [~SwitchA-10GE1/0/1] port link-type trunk [*SwitchA-10GE1/0/1] commit [~SwitchA-10GE1/0/1] quit [~SwitchA] interface 10ge 1/0/2 [~SwitchA-10GE1/0/2] port link-type trunk [*SwitchA-10GE1/0/2] commit [~SwitchA-10GE1/0/2] quit [~SwitchA] interface 10ge 1/0/3 [~SwitchA-10GE1/0/3] port link-type trunk [*SwitchA-10GE1/0/3] commit [~SwitchA-10GE1/0/3] quit
# Configure SwitchB.
<HUAWEI> system-view [~HUAWEI] sysname SwitchB [*HUAWEI] commit [~SwitchB] interface 10ge 1/0/1 [~SwitchB-10GE1/0/1] port link-type trunk [*SwitchB-10GE1/0/1] commit [~SwitchB-10GE1/0/1] quit [~SwitchB] interface 10ge 1/0/2 [~SwitchB-10GE1/0/2] port link-type trunk [*SwitchB-10GE1/0/2] commit [~SwitchB-10GE1/0/2] quit
# Configure SwitchC.
<HUAWEI> system-view [~HUAWEI] sysname SwitchC [*HUAWEI] commit [~SwitchC] interface 10ge 1/0/1 [~SwitchC-10GE1/0/1] port link-type trunk [*SwitchC-10GE1/0/1] commit [~SwitchC-10GE1/0/1] quit [~SwitchC] interface 10ge 1/0/2 [~SwitchC-10GE1/0/2] port link-type trunk [*SwitchC-10GE1/0/2] commit [~SwitchC-10GE1/0/2] quit
# Configure SwitchD.
<HUAWEI> system-view [~HUAWEI] sysname SwitchD [*HUAWEI] commit [~SwitchD] interface 10ge 1/0/1 [~SwitchD-10GE1/0/1] port link-type trunk [*SwitchD-10GE1/0/1] commit [~SwitchD-10GE1/0/1] quit [~SwitchD] interface 10ge 1/0/2 [~SwitchD-10GE1/0/2] port link-type trunk [*SwitchD-10GE1/0/2] commit [~SwitchD-10GE1/0/2] quit [~SwitchD] interface 10ge 1/0/3 [~SwitchD-10GE1/0/3] port link-type trunk [*SwitchD-10GE1/0/3] commit [~SwitchD-10GE1/0/3] quit
- Create ERPS ring 1 and ERPS ring 2 and configure ERP instances
in the two rings. Set the control VLAN ID of ERPS ring 1 to 10 and
the control VLAN ID of ERPS ring 2 to 20. Enable ERPS ring 1 to transmit
data packets from VLANs 100 to 200 and enable ERPS ring 2 to transmit
data packets from VLANs 300 to 400.
A VLAN cannot be mapped to multiple MSTIs. If you map a VLAN that has already been mapped to an MSTI to another MSTI, the original mapping will be deleted.
# Configure SwitchA.
[~SwitchA] erps ring 1 [*SwitchA-erps-ring1] control-vlan 10 [*SwitchA-erps-ring1] protected-instance 1 [*SwitchA-erps-ring1] commit [~SwitchA-erps-ring1] quit [~SwitchA] stp region-configuration [~SwitchA-mst-region] instance 1 vlan 10 100 to 200 [*SwitchA-mst-region] commit [~SwitchA-mst-region] quit [~SwitchA] erps ring 2 [*SwitchA-erps-ring2] control-vlan 20 [*SwitchA-erps-ring2] protected-instance 2 [*SwitchA-erps-ring2] commit [~SwitchA-erps-ring2] quit [~SwitchA] stp region-configuration [~SwitchA-mst-region] instance 2 vlan 20 300 to 400 [*SwitchA-mst-region] commit [~SwitchA-mst-region] quit
# Configure SwitchB.
[~SwitchB] erps ring 1 [*SwitchB-erps-ring1] control-vlan 10 [*SwitchB-erps-ring1] protected-instance 1 [*SwitchB-erps-ring1] commit [~SwitchB-erps-ring1] quit [~SwitchB] stp region-configuration [~SwitchB-mst-region] instance 1 vlan 10 100 to 200 [*SwitchB-mst-region] commit [~SwitchB-mst-region] quit
# Configure SwitchC.
[~SwitchC] erps ring 2 [*SwitchC-erps-ring2] control-vlan 20 [*SwitchC-erps-ring2] protected-instance 2 [*SwitchC-erps-ring2] commit [~SwitchC-erps-ring2] quit [~SwitchC] stp region-configuration [~SwitchC-mst-region] instance 2 vlan 20 300 to 400 [*SwitchC-mst-region] commit [~SwitchC-mst-region] quit
# Configure SwitchD.
[~SwitchD] erps ring 1 [*SwitchD-erps-ring1] control-vlan 10 [*SwitchD-erps-ring1] protected-instance 1 [*SwitchD-erps-ring1] commit [~SwitchD-erps-ring1] quit [~SwitchD] stp region-configuration [~SwitchD-mst-region] instance 1 vlan 10 100 to 200 [*SwitchD-mst-region] commit [~SwitchD-mst-region] quit [~SwitchD] erps ring 2 [*SwitchD-erps-ring2] control-vlan 20 [*SwitchD-erps-ring2] protected-instance 2 [*SwitchD-erps-ring2] commit [~SwitchD-erps-ring2] quit [~SwitchD] stp region-configuration [~SwitchD-mst-region] instance 2 vlan 20 300 to 400 [*SwitchD-mst-region] commit [~SwitchD-mst-region] quit
- Specify ERPSv2 and configure ERPS ring 2 as a sub-ring.
# Configure SwitchA.
[~SwitchA] erps ring 1 [~SwitchA-erps-ring1] version v2 [*SwitchA-erps-ring1] commit [~SwitchA-erps-ring1] quit [~SwitchA] erps ring 2 [~SwitchA-erps-ring2] version v2 [*SwitchA-erps-ring2] sub-ring [*SwitchA-erps-ring2] commit [~SwitchA-erps-ring2] quit
# Configure SwitchB.
[~SwitchB] erps ring 1 [~SwitchB-erps-ring1] version v2 [*SwitchB-erps-ring1] commit [~SwitchB-erps-ring1] quit
# Configure SwitchC.
[~SwitchC] erps ring 2 [~SwitchC-erps-ring2] version v2 [*SwitchC-erps-ring2] sub-ring [*SwitchC-erps-ring2] commit [~SwitchC-erps-ring2] quit
# Configure SwitchD.
[~SwitchD] erps ring 1 [~SwitchD-erps-ring1] version v2 [*SwitchD-erps-ring1] commit [~SwitchD-erps-ring1] quit [~SwitchD] erps ring 2 [~SwitchD-erps-ring2] version v2 [*SwitchD-erps-ring2] sub-ring [*SwitchD-erps-ring2] commit [~SwitchD-erps-ring2] quit
- Add the ports to ERPS rings and specify port roles. Configure 10GE 1/0/1 on SwitchB and 10GE 1/0/1 on SwitchC as their respective RPL
owner ports.
# Configure SwitchA.
[~SwitchA] interface 10ge 1/0/1 [~SwitchA-10GE1/0/1] stp disable [*SwitchA-10GE1/0/1] erps ring 1 [*SwitchA-10GE1/0/1] commit [~SwitchA-10GE1/0/1] quit [~SwitchA] interface 10ge 1/0/2 [~SwitchA-10GE1/0/2] stp disable [*SwitchA-10GE1/0/2] erps ring 1 [*SwitchA-10GE1/0/2] erps ring 2 [*SwitchA-10GE1/0/2] commit [~SwitchA-10GE1/0/2] quit [~SwitchA] interface 10ge 1/0/3 [~SwitchA-10GE1/0/3] stp disable [*SwitchA-10GE1/0/3] erps ring 2 [*SwitchA-10GE1/0/3] commit [~SwitchA-10GE1/0/3] quit
# Configure SwitchB.
[~SwitchB] interface 10ge 1/0/1 [~SwitchB-10GE1/0/1] stp disable [*SwitchB-10GE1/0/1] erps ring 1 rpl owner [*SwitchB-10GE1/0/1] commit [~SwitchB-10GE1/0/1] quit [~SwitchB] interface 10ge 1/0/2 [~SwitchB-10GE1/0/2] stp disable [*SwitchB-10GE1/0/2] erps ring 1 [*SwitchB-10GE1/0/2] commit [~SwitchB-10GE1/0/2] quit
# Configure SwitchC.
[~SwitchC] interface 10ge 1/0/1 [~SwitchC-10GE1/0/1] stp disable [*SwitchC-10GE1/0/1] erps ring 2 rpl owner [*SwitchC-10GE1/0/1] commit [~SwitchC-10GE1/0/1] quit [~SwitchC] interface 10ge 1/0/2 [~SwitchC-10GE1/0/2] stp disable [*SwitchC-10GE1/0/2] erps ring 2 [*SwitchC-10GE1/0/2] commit [~SwitchC-10GE1/0/2] quit
# Configure SwitchD.
[~SwitchD] interface 10ge 1/0/1 [~SwitchD-10GE1/0/1] stp disable [*SwitchD-10GE1/0/1] erps ring 1 [*SwitchD-10GE1/0/1] commit [~SwitchD-10GE1/0/1] quit [~SwitchD] interface 10ge 1/0/2 [~SwitchD-10GE1/0/2] stp disable [*SwitchD-10GE1/0/2] erps ring 1 [*SwitchD-10GE1/0/2] erps ring 2 [*SwitchD-10GE1/0/2] commit [~SwitchD-10GE1/0/2] quit [~SwitchD] interface 10ge 1/0/3 [~SwitchD-10GE1/0/3] stp disable [*SwitchD-10GE1/0/3] erps ring 2 [*SwitchD-10GE1/0/3] commit [~SwitchD-10GE1/0/3] quit
- Configure the topology change notification function and
TC protection on SwitchA and SwitchD (interconnecting
nodes).
# Configure SwitchA.
[~SwitchA] erps ring 1 [~SwitchA-erps-ring1] tc-protection interval 200 [*SwitchA-erps-ring1] tc-protection threshold 60 [*SwitchA-erps-ring1] commit [~SwitchA-erps-ring1] quit [~SwitchA] erps ring 2 [~SwitchA-erps-ring2] tc-notify erps ring 1 [*SwitchA-erps-ring2] commit [~SwitchA-erps-ring2] quit
# Configure SwitchD.
[~SwitchD] erps ring 1 [~SwitchD-erps-ring1] tc-protection interval 200 [*SwitchD-erps-ring1] tc-protection threshold 60 [*SwitchD-erps-ring1] commit [~SwitchD-erps-ring1] quit [~SwitchD] erps ring 2 [~SwitchD-erps-ring2] tc-notify erps ring 1 [*SwitchD-erps-ring2] commit [~SwitchD-erps-ring2] quit
- Configure the Guard timers and WTR timers in the ERPS rings.
# Configure SwitchA.
[~SwitchA] erps ring 1 [~SwitchA-erps-ring1] wtr-timer 6 [*SwitchA-erps-ring1] guard-timer 100 [*SwitchA-erps-ring1] commit [~SwitchA-erps-ring1] quit [~SwitchA] erps ring 2 [~SwitchA-erps-ring2] wtr-timer 6 [*SwitchA-erps-ring2] guard-timer 100 [*SwitchA-erps-ring2] commit [~SwitchA-erps-ring2] quit
# Configure SwitchB.
[~SwitchB] erps ring 1 [~SwitchB-erps-ring1] wtr-timer 6 [*SwitchB-erps-ring1] guard-timer 100 [*SwitchB-erps-ring1] commit [~SwitchB-erps-ring1] quit
# Configure SwitchC.
[~SwitchC] erps ring 2 [~SwitchC-erps-ring2] wtr-timer 6 [*SwitchC-erps-ring2] guard-timer 100 [*SwitchC-erps-ring2] commit [~SwitchC-erps-ring2] quit
# Configure SwitchD.
[~SwitchD] erps ring 1 [~SwitchD-erps-ring1] wtr-timer 6 [*SwitchD-erps-ring1] guard-timer 100 [*SwitchD-erps-ring1] commit [~SwitchD-erps-ring1] quit [~SwitchD] erps ring 2 [~SwitchD-erps-ring2] wtr-timer 6 [*SwitchD-erps-ring2] guard-timer 100 [*SwitchD-erps-ring2] commit [~SwitchD-erps-ring2] quit
- Configure Layer 2 forwarding on SwitchA through SwitchD.
# Configure SwitchA.
[~SwitchA] vlan batch 100 to 200 300 to 400 [*SwitchA] commit [~SwitchA] interface 10ge 1/0/1 [~SwitchA-10GE1/0/1] port trunk allow-pass vlan 100 to 200 [*SwitchA-10GE1/0/1] commit [~SwitchA-10GE1/0/1] quit [~SwitchA] interface 10ge 1/0/2 [~SwitchA-10GE1/0/2] port trunk allow-pass vlan 100 to 200 300 to 400 [*SwitchA-10GE1/0/2] commit [~SwitchA-10GE1/0/2] quit [~SwitchA] interface 10ge 1/0/3 [~SwitchA-10GE1/0/3] port trunk allow-pass vlan 300 to 400 [*SwitchA-10GE1/0/3] commit [~SwitchA-10GE1/0/3] quit
# Configure SwitchB.
[~SwitchB] vlan batch 100 to 200 [*SwitchB] commit [~SwitchB] interface 10ge 1/0/1 [~SwitchB-10GE1/0/1] port trunk allow-pass vlan 100 to 200 [*SwitchB-10GE1/0/1] commit [~SwitchB-10GE1/0/1] quit [~SwitchB] interface 10ge 1/0/2 [~SwitchB-10GE1/0/2] port trunk allow-pass vlan 100 to 200 [*SwitchB-10GE1/0/2] commit [~SwitchB-10GE1/0/2] quit
# Configure SwitchC.
[~SwitchC] vlan batch 300 to 400 [*SwitchC] commit [~SwitchC] interface 10ge 1/0/1 [~SwitchC-10GE1/0/1] port trunk allow-pass vlan 300 to 400 [*SwitchC-10GE1/0/1] commit [~SwitchC-10GE1/0/1] quit [~SwitchC] interface 10ge 1/0/2 [~SwitchC-10GE1/0/2] port trunk allow-pass vlan 300 to 400 [*SwitchC-10GE1/0/2] commit [~SwitchC-10GE1/0/2] quit
# Configure SwitchD.
[~SwitchD] vlan batch 100 to 200 300 to 400 [*SwitchD] commit [~SwitchD] interface 10ge 1/0/1 [~SwitchD-10GE1/0/1] port trunk allow-pass vlan 100 to 200 [*SwitchD-10GE1/0/1] commit [~SwitchD-10GE1/0/1] quit [~SwitchD] interface 10ge 1/0/2 [~SwitchD-10GE1/0/2] port trunk allow-pass vlan 100 to 200 300 to 400 [*SwitchD-10GE1/0/2] commit [~SwitchD-10GE1/0/2] quit [~SwitchD] interface 10ge 1/0/3 [~SwitchD-10GE1/0/3] port trunk allow-pass vlan 300 to 400 [*SwitchD-10GE1/0/3] commit [~SwitchD-10GE1/0/3] quit
- Verify the configuration.
# After the network becomes stable, run the display erps command to check brief information about the ERPS ring and ports added to the ERPS ring. SwitchB is used as an example.
[~SwitchB] display erps D : Discarding F : Forwarding R : RPL Owner N : RPL Neighbour FS : Forced Switch MS : Manual Switch Total number of rings configured = 1 Ring Control WTR Timer Guard Timer Port 1 Port 2 ID VLAN (min) (csec) -------------------------------------------------------------------------------- 1 10 6 100 (D,R)10GE1/0/1 (F)10GE1/0/2 --------------------------------------------------------------------------------
# Run the display erps verbose command to check detailed information about the ERPS ring and ports added to the ERPS ring. SwitchB is used as an example.
[~SwitchB] display erps verbose Ring ID : 1 Description : Ring 1 Control Vlan : 10 Protected Instance : 1 Service Vlan : 100 to 200 WTR Timer Setting (min) : 6 Running (s) : 0 Guard Timer Setting (csec) : 100 Running (csec) : 0 Holdoff Timer Setting (deciseconds) : 0 Running (deciseconds) : 0 WTB Timer Running (csec) : 0 Ring State : Idle RAPS_MEL : 7 Revertive Mode : Revertive R-APS Channel Mode : - Version : 2 Sub-ring : No Forced Switch Port : - Manual Switch Port : - TC-Notify : - Time since last topology change : 0 days 4h:12m:20s -------------------------------------------------------------------------------- Port Port Role Port Status Signal Status -------------------------------------------------------------------------------- 10GE1/0/1 RPL Owner Discarding Non-failed 10GE1/0/2 Common Forwarding Non-failed
Configuration Files
SwitchA configuration file
# sysname SwitchA # vlan batch 10 20 100 to 200 300 to 400 # stp region-configuration instance 1 vlan 10 100 to 200 instance 2 vlan 20 300 to 400 # erps ring 1 control-vlan 10 protected-instance 1 wtr-timer 6 guard-timer 100 version v2 tc-protection interval 200 tc-protection threshold 60 # erps ring 2 control-vlan 20 protected-instance 2 wtr-timer 6 guard-timer 100 version v2 sub-ring tc-notify erps ring 1 # interface 10GE1/0/1 port link-type trunk port trunk allow-pass vlan 10 100 to 200 stp disable erps ring 1 # interface 10GE1/0/2 port link-type trunk port trunk allow-pass vlan 10 20 100 to 200 300 to 400 stp disable erps ring 1 erps ring 2 # interface 10GE1/0/3 port link-type trunk port trunk allow-pass vlan 20 300 to 400 stp disable erps ring 2 # return
SwitchB configuration file
# sysname SwitchB # vlan batch 10 100 to 200 # stp region-configuration instance 1 vlan 10 100 to 200 # erps ring 1 control-vlan 10 protected-instance 1 wtr-timer 6 guard-timer 100 version v2 # interface 10GE1/0/1 port link-type trunk port trunk allow-pass vlan 10 100 to 200 stp disable erps ring 1 rpl owner # interface 10GE1/0/2 port link-type trunk port trunk allow-pass vlan 10 100 to 200 stp disable erps ring 1 # return
SwitchC configuration file
# sysname SwitchC # vlan batch 20 300 to 400 # stp region-configuration instance 2 vlan 20 300 to 400 # erps ring 2 control-vlan 20 protected-instance 2 wtr-timer 6 guard-timer 100 version v2 sub-ring # interface 10GE1/0/1 port link-type trunk port trunk allow-pass vlan 20 300 to 400 stp disable erps ring 2 rpl owner # interface 10GE1/0/2 port link-type trunk port trunk allow-pass vlan 20 300 to 400 stp disable erps ring 2 # return
SwitchD configuration file
# sysname SwitchD # vlan batch 10 20 100 to 200 300 to 400 # stp region-configuration instance 1 vlan 10 100 to 200 instance 2 vlan 20 300 to 400 # erps ring 1 control-vlan 10 protected-instance 1 wtr-timer 6 guard-timer 100 version v2 tc-protection interval 200 tc-protection threshold 60 # erps ring 2 control-vlan 20 protected-instance 2 wtr-timer 6 guard-timer 100 version v2 sub-ring tc-notify erps ring 1 # interface 10GE1/0/1 port link-type trunk port trunk allow-pass vlan 10 100 to 200 stp disable erps ring 1 # interface 10GE1/0/2 port link-type trunk port trunk allow-pass vlan 10 20 100 to 200 300 to 400 stp disable erps ring 1 erps ring 2 # interface 10GE1/0/3 port link-type trunk port trunk allow-pass vlan 20 300 to 400 stp disable erps ring 2 # return