This section provides an example for configuring BD-based EVPN VPLS over MPLS in ring network access mode, with MSTP used as the loop prevention protocol.
On the network shown in Figure 1, to implement EVPN in ring network access mode, configure ring network topology isolation and a loop prevention protocol (MSTP in this example). To enable PE2 to quickly update MAC route information, ensure that the Ethernet A-D routes carry MAC-Flush and Ring ID extended community attributes. In this manner, route convergence is achieved.
During the configuration process, note the following:
Using the local loopback address of each PE as the source address of the PE is recommended.
The configuration roadmap is as follows:
Configure an IGP for devices, including PEs and CEs, to communicate.
Configure basic MPLS functions and MPLS LDP, and set up MPLS LSPs.
Configure a BD EVPN instance on PEs.
Establish BGP EVPN peer relationships.
To complete the configuration, you need the following data:
EVPN instance evpna's RD (1:1) and RTs (1:1) on each PE
Configure interface IP addresses and masks. For configuration details, see Configuration Files in this section.
For configuration details, see Configuration Files in this section.
For configuration details, see Configuration Files in this section.
# Configure PE1.
[~PE1] evpn vpn-instance evpna bd-mode [*PE1-evpn-instance-evpna] route-distinguisher 1:1 [*PE1-evpn-instance-evpna] vpn-target 1:1 [*PE1-evpn-instance-evpna] quit [*PE1] bridge-domain 1 [*PE1-bd1] evpn binding vpn-instance evpna [*PE1-bd1] quit [*PE1] commit
# Configure PE2.
[~PE2] evpn vpn-instance evpna bd-mode [*PE2-evpn-instance-evpna] route-distinguisher 1:1 [*PE2-evpn-instance-evpna] vpn-target 1:1 [*PE2-evpn-instance-evpna] quit [*PE2] bridge-domain 1 [*PE2-bd1] evpn binding vpn-instance evpna [*PE2-bd1] quit [*PE2] commit
# Configure PE3.
[~PE3] evpn vpn-instance evpna bd-mode [*PE3-evpn-instance-evpna] route-distinguisher 1:1 [*PE3-evpn-instance-evpna] vpn-target 1:1 [*PE3-evpn-instance-evpna] quit [*PE3] bridge-domain 1 [*PE3-bd1] evpn binding vpn-instance evpna [*PE3-bd1] quit [*PE3] commit
# Configure PE1.
[~PE1] evpn source-address 10.1.1.1 [*PE1] commit
# Configure PE2.
[~PE2] evpn source-address 10.2.1.1 [*PE2] commit
# Configure PE3.
[~PE3] evpn source-address 10.3.1.1 [*PE3] commit
# Configure PE1.
[~PE1] bgp 100 [*PE1-bgp] router-id 10.1.1.1 [*PE1-bgp] group ipv4_i internal [*PE1-bgp] peer 10.2.1.1 as-number 100 [*PE1-bgp] peer 10.2.1.1 group ipv4_i [*PE1-bgp] peer 10.2.1.1 connect-interface loopback 1 [*PE1-bgp] peer 10.3.1.1 as-number 100 [*PE1-bgp] peer 10.3.1.1 group ipv4_i [*PE1-bgp] peer 10.3.1.1 connect-interface loopback 1 [*PE1-bgp] l2vpn-family evpn [*PE1-bgp-af-evpn] peer ipv4_i enable [*PE1-bgp-af-evpn] peer 10.2.1.1 enable [*PE1-bgp-af-evpn] peer 10.2.1.1 group ipv4_i [*PE1-bgp-af-evpn] peer 10.3.1.1 enable [*PE1-bgp-af-evpn] peer 10.3.1.1 group ipv4_i [*PE1-bgp-af-evpn] quit [*PE1-bgp] quit [*PE1] commit
# Configure PE2.
[~PE2] bgp 100 [*PE2-bgp] router-id 10.2.1.1 [*PE2-bgp] group ipv4_i internal [*PE2-bgp] peer 10.1.1.1 as-number 100 [*PE2-bgp] peer 10.1.1.1 group ipv4_i [*PE2-bgp] peer 10.3.1.1 as-number 100 [*PE2-bgp] peer 10.3.1.1 group ipv4_i [*PE2-bgp] peer ipv4_i connect-interface loopback 1 [*PE2-bgp] l2vpn-family evpn [*PE2-bgp-af-evpn] peer ipv4_i enable [*PE2-bgp-af-evpn] peer 10.1.1.1 enable [*PE2-bgp-af-evpn] peer 10.1.1.1 group ipv4_i [*PE2-bgp-af-evpn] peer 10.3.1.1 enable [*PE2-bgp-af-evpn] peer 10.3.1.1 group ipv4_i [*PE2-bgp-af-evpn] quit [*PE2-bgp] quit [*PE2] commit
# Configure PE3.
[~PE3] bgp 100 [*PE3-bgp] router-id 10.3.1.1 [*PE3-bgp] group ipv4_i internal [*PE3-bgp] peer 10.1.1.1 as-number 100 [*PE3-bgp] peer 10.1.1.1 group ipv4_i [*PE3-bgp] peer 10.2.1.1 as-number 100 [*PE3-bgp] peer 10.2.1.1 group ipv4_i [*PE3-bgp] peer ipv4_i connect-interface loopback 1 [*PE3-bgp] l2vpn-family evpn [*PE3-bgp-af-evpn] peer ipv4_i enable [*PE3-bgp-af-evpn] peer 10.1.1.1 enable [*PE3-bgp-af-evpn] peer 10.1.1.1 group ipv4_i [*PE3-bgp-af-evpn] peer 10.2.1.1 enable [*PE3-bgp-af-evpn] peer 10.2.1.1 group ipv4_i [*PE3-bgp-af-evpn] quit [*PE3-bgp] quit [*PE3] commit
After completing the configuration, run the display bgp evpn peer command on PE1. The command output shows that BGP peer relationships are in the Established state, indicating that BGP peer relationships have been successfully established between the PEs.
[~PE1] display bgp evpn peer
BGP local router ID : 10.1.1.1
Local AS number : 100
Total number of peers : 3 Peers in established state : 3
Peer V AS MsgRcvd MsgSent OutQ Up/Down State PrefRcv
10.2.1.1 4 100 10 18 0 00:00:11 Established 6
10.3.1.1 4 100 10 20 0 00:00:12 Established 6
# Configure CE1 and add it to an MSTP process with the specified ID.
[~CE1] interface gigabitethernet0/1/0 [*CE1-GigabitEthernet0/1/0] portswitch [*CE1-GigabitEthernet0/1/0] port link-type trunk [*CE1-GigabitEthernet0/1/0] port trunk allow-pass vlan 1 [*CE1-GigabitEthernet0/1/0] stp process 1 instance 0 cost 1 [*CE1-GigabitEthernet0/1/0] stp process 1 instance 1 cost 1 [*CE1-GigabitEthernet0/1/0] stp binding process 1 [*CE1-GigabitEthernet0/1/0] quit [*CE1] interface gigabitethernet0/1/8 [*CE1-GigabitEthernet0/1/8] portswitch [*CE1-GigabitEthernet0/1/8] port link-type trunk [*CE1-GigabitEthernet0/1/8] port trunk allow-pass vlan 2 [*CE1-GigabitEthernet0/1/8] stp process 2 instance 0 cost 1 [*CE1-GigabitEthernet0/1/8] stp process 2 instance 2 cost 1 [*CE1-GigabitEthernet0/1/8] stp binding process 2 [*CE1-GigabitEthernet0/1/8] quit [*CE1] commit
# Configure CE2.
[~CE2] interface gigabitethernet0/1/0 [*CE2-GigabitEthernet0/1/0] portswitch [*CE2-GigabitEthernet0/1/0] port link-type trunk [*CE2-GigabitEthernet0/1/0] port trunk allow-pass vlan 1 [*CE2-GigabitEthernet0/1/0] stp process 1 instance 0 cost 4000 [*CE2-GigabitEthernet0/1/0] stp process 1 instance 1 cost 4000 [*CE2-GigabitEthernet0/1/0] stp binding process 1 [*CE2-GigabitEthernet0/1/0] quit [*CE2] interface gigabitethernet0/1/8 [*CE2-GigabitEthernet0/1/8] portswitch [*CE2-GigabitEthernet0/1/8] port link-type trunk [*CE2-GigabitEthernet0/1/8] port trunk allow-pass vlan 2 [*CE2-GigabitEthernet0/1/8] stp process 2 instance 0 cost 4000 [*CE2-GigabitEthernet0/1/8] stp process 2 instance 2 cost 4000 [*CE2-GigabitEthernet0/1/8] stp binding process 2 [*CE2-GigabitEthernet0/1/8] quit [*CE2] commit
Run the display bgp evpn all routing-table ad-route command on PE1. The command output shows the Ethernet A-D route to CE1 sent by the remote PE.
[~PE1]display bgp evpn all routing-table ad-route 0000.1111.0000.0000.0001:0
BGP local router ID : 10.1.1.1
Local AS number : 100
Total routes of Route Distinguisher(1:1): 1
BGP routing table entry information of 0000.1111.0000.0000.0001:0:
From: 0.0.0.0 (0.0.0.0)
Route Duration: 0d00h30m53s
Direct Out-interface: NULL0
Original nexthop: 127.0.0.1
Qos information : 0x0
Ext-Community: RT <1 : 1>, Router ID <10.1.1.1>, MAC Flush <0 : 0 : 3>, Ring ID <0 : 0 : 1>
AS-path Nil, origin incomplete, pref-val 0, valid, local, best, select, pre 255
Route Type: 1 (Ethernet Auto-Discovery (A-D) route)
ESI: 0000.1111.0000.0000.0001, Ethernet Tag ID: 0
Advertised to such 2 peers:
10.2.1.1
10.3.1.1
EVPN-Instance e1:
Number of A-D Routes: 1
BGP routing table entry information of 0000.1111.0000.0000.0001:0:
Route Distinguisher: 1:1
Local-Generate route.
From: 0.0.0.0 (0.0.0.0)
Route Duration: 0d00h51m09s
Relay IP Nexthop: 0.0.0.0
Relay IP Out-Interface: NULL0
Original nexthop: 127.0.0.1
Qos information : 0x0
Ext-Community: Router ID <10.1.1.1>, Ring ID <0 : 0 : 1>
AS-path Nil, origin incomplete, pref-val 0, valid, local, best, select, pre 255
Route Type: 1 (Ethernet Auto-Discovery (A-D) route)
ESI: 0000.1111.0000.0000.0001, Ethernet Tag ID: 0
Not advertised to any peer yet
PE1 configuration file
# sysname PE1 # vlan batch 1 to 100 # l2protocol-tunnel stp group-mac 0100-5e00-0011 # evpn vpn-instance evpna bd-mode route-distinguisher 1:1 vpn-target 1:1 export-extcommunity vpn-target 1:1 import-extcommunity # evpn vpn-instance evpnb bd-mode route-distinguisher 1:2 vpn-target 1:2 export-extcommunity vpn-target 1:2 import-extcommunity # stp process 1 stp pathcost-standard legacy stp region-configuration region-name abc1 instance 1 vlan 1 # stp process 2 stp pathcost-standard legacy stp region-configuration region-name abc2 instance 2 vlan 2 # mpls lsr-id 10.1.1.1 # mpls mpls te # mpls l2vpn # mpls ldp # ipv4-family # bridge-domain 1 evpn binding vpn-instance evpna # isis 1 is-level level-2 cost-style wide network-entity 10.0000.0000.0027.00 traffic-eng level-2 # interface Eth-Trunk10 stp tc-snooping enable stp tc-snooping notify bridge-domain process 1 esi 0000.1111.0000.0000.0001 evpn stp-ring-id 1 # interface Eth-Trunk10.1 mode l2 encapsulation dot1q vid 1 bridge-domain 1 link-protocol transport bpdu untag-vlan-check # interface Eth-Trunk11 stp tc-snooping enable stp tc-snooping notify bridge-domain process 2 esi 0000.2222.0000.0000.0001 evpn stp-ring-id 2 # interface Eth-Trunk11.2 mode l2 encapsulation dot1q vid 2 bridge-domain 1 link-protocol transport bpdu untag-vlan-check # interface GigabitEthernet0/1/0 undo shutdown ip address 172.16.1.1 255.255.255.0 isis enable 1 mpls mpls ldp dcn # interface GigabitEthernet0/1/8 undo shutdown ip address 172.16.2.1 255.255.255.0 isis enable 1 mpls mpls ldp dcn # interface GigabitEthernet0/1/16 undo shutdown eth-trunk 10 dcn # interface GigabitEthernet0/1/24 undo shutdown eth-trunk 11 dcn # interface LoopBack1 ipv6 enable ip address 10.1.1.1 255.255.255.255 isis enable 1 # bgp 100 router-id 10.1.1.1 group ipv4_i internal peer 10.2.1.1 as-number 100 peer 10.2.1.1 group ipv4_i peer 10.2.1.1 connect-interface LoopBack1 peer 10.3.1.1 as-number 100 peer 10.3.1.1 group ipv4_i peer 10.3.1.1 connect-interface LoopBack1 # ipv4-family unicast undo synchronization peer ipv4_i enable peer 10.2.1.1 enable peer 10.2.1.1 group ipv4_i peer 10.3.1.1 enable peer 10.3.1.1 group ipv4_i # l2vpn-family evpn policy vpn-target peer ipv4_i enable peer 10.2.1.1 enable peer 10.2.1.1 group ipv4_i peer 10.3.1.1 enable peer 10.3.1.1 group ipv4_i # evpn source-address 10.1.1.1 # return
PE2 configuration file
# sysname PE2 # l2protocol-tunnel stp group-mac 0100-5e00-0011 # evpn vpn-instance evpna bd-mode route-distinguisher 1:1 vpn-target 1:1 export-extcommunity vpn-target 1:1 import-extcommunity # stp process 1 stp pathcost-standard legacy stp region-configuration region-name abc1 instance 1 vlan 1 # stp process 2 stp pathcost-standard legacy stp region-configuration region-name abc2 instance 2 vlan 2 # mpls lsr-id 10.2.1.1 # mpls # mpls l2vpn # bridge-domain 1 evpn binding vpn-instance evpna # mpls ldp # ipv4-family # isis 1 is-level level-2 cost-style wide network-entity 10.0000.0000.0029.00 traffic-eng level-2 # interface Eth-Trunk10 stp tc-snooping enable stp tc-snooping notify bridge-domain process 1 esi 0000.1111.0000.0000.0002 evpn stp-ring-id 1 # interface Eth-Trunk10.1 mode l2 encapsulation dot1q vid 1 bridge-domain 1 link-protocol transport bpdu untag-vlan-check # interface Eth-Trunk11 stp tc-snooping enable stp tc-snooping notify bridge-domain process 2 esi 0000.2222.0000.0000.0002 evpn stp-ring-id 2 # interface Eth-Trunk11.2 mode l2 encapsulation dot1q vid 2 bridge-domain 1 link-protocol transport bpdu untag-vlan-check # interface GigabitEthernet0/1/0 undo shutdown ip address 172.16.1.2 255.255.255.0 isis enable 1 mpls mpls ldp dcn # interface GigabitEthernet0/1/8 undo shutdown ip address 172.16.3.1 255.255.255.0 isis enable 1 mpls mpls ldp dcn # interface GigabitEthernet0/1/16 undo shutdown eth-trunk 10 dcn # interface GigabitEthernet0/1/24 undo shutdown eth-trunk 11 dcn # interface LoopBack1 ip address 10.2.1.1 255.255.255.255 isis enable 1 # bgp 100 router-id 10.2.1.1 group ipv4_i internal peer ipv4_i connect-interface LoopBack1 peer 10.1.1.1 as-number 100 peer 10.1.1.1 group ipv4_i peer 10.3.1.1 as-number 100 peer 10.3.1.1 group ipv4_i # ipv4-family unicast undo synchronization peer ipv4_i enable peer 10.1.1.1 enable peer 10.1.1.1 group ipv4_i peer 10.3.1.1 enable peer 10.3.1.1 group ipv4_i # l2vpn-family evpn policy vpn-target peer ipv4_i enable peer 10.1.1.1 enable peer 10.1.1.1 group ipv4_i peer 10.3.1.1 enable peer 10.3.1.1 group ipv4_i # evpn source-address 10.2.1.1 # return
PE3 configuration file
# sysname PE3 # vlan batch 1 to 100 # stp pathcost-standard legacy stp enable # evpn vpn-instance evpna bd-mode route-distinguisher 1:1 vpn-target 1:1 export-extcommunity vpn-target 1:1 import-extcommunity # stp region-configuration region-name RG1 instance 1 vlan 1 to 10 # mpls lsr-id 10.3.1.1 # mpls # mpls l2vpn # bridge-domain 1 evpn binding vpn-instance evpna # mpls ldp # ipv4-family # isis 1 is-level level-2 cost-style wide network-entity 10.0000.0000.0028.00 traffic-eng level-2 # interface Eth-Trunk10 # interface Eth-Trunk10.1 mode l2 encapsulation dot1q vid 1 bridge-domain 1 # interface Eth-Trunk10.2 mode l2 encapsulation dot1q vid 2 bridge-domain 1 # interface GigabitEthernet0/1/0 undo shutdown ip address 172.16.3.2 255.255.255.0 isis enable 1 mpls mpls ldp undo dcn # interface GigabitEthernet0/1/8 undo shutdown ip address 172.16.2.2 255.255.255.0 isis enable 1 mpls mpls ldp undo dcn # interface LoopBack1 ip address 10.3.1.1 255.255.255.255 isis enable 1 # bgp 100 router-id 10.3.1.1 group ipv4_i internal peer ipv4_i connect-interface LoopBack1 peer 10.1.1.1 as-number 100 peer 10.1.1.1 group ipv4_i peer 10.2.1.1 as-number 100 peer 10.2.1.1 group ipv4_i # ipv4-family unicast undo synchronization peer ipv4_i enable peer 10.1.1.1 enable peer 10.1.1.1 group ipv4_i peer 10.2.1.1 enable peer 10.2.1.1 group ipv4_i # l2vpn-family evpn policy vpn-target peer ipv4_i enable peer 10.1.1.1 enable peer 10.1.1.1 group ipv4_i peer 10.2.1.1 enable peer 10.2.1.1 group ipv4_i # evpn source-address 10.3.1.1 # return
CE1 configuration file
# sysname CE1 # vlan batch 1 to 4094 # evpn vpn-instance evpna bd-mode route-distinguisher 1:1 vpn-target 1:1 export-extcommunity vpn-target 1:1 import-extcommunity # stp process 1 stp instance 0 root primary stp instance 1 root primary stp pathcost-standard legacy stp enable stp region-configuration region-name abc1 instance 1 vlan 1 # stp process 2 stp instance 0 root primary stp instance 2 root primary stp pathcost-standard legacy stp enable stp region-configuration region-name abc2 instance 2 vlan 2 # mpls # mpls l2vpn # bridge-domain 1 vxlan vni 1 split-horizon-mode evpn binding vpn-instance evpna # isis 1 is-level level-2 cost-style wide network-entity 10.0000.0000.0030.00 traffic-eng level-2 # interface Eth-Trunk10 # interface Eth-Trunk10.1 mode l2 encapsulation dot1q vid 1 bridge-domain 1 link-protocol transport bpdu untag-vlan-check # interface GigabitEthernet0/1/0 portswitch undo shutdown port link-type trunk port trunk allow-pass vlan 1 stp process 1 instance 0 cost 1 stp process 1 instance 1 cost 1 stp binding process 1 undo dcn # interface GigabitEthernet0/1/8 portswitch undo shutdown port link-type trunk port trunk allow-pass vlan 2 stp process 2 instance 0 cost 1 stp process 2 instance 2 cost 1 stp binding process 2 undo dcn # interface GigabitEthernet0/1/16 portswitch undo shutdown port link-type trunk port trunk allow-pass vlan 1 stp process 1 instance 0 cost 1 stp process 1 instance 1 cost 1 stp binding process 1 undo dcn # interface GigabitEthernet0/1/24 portswitch undo shutdown port link-type trunk port trunk allow-pass vlan 2 stp process 2 instance 0 cost 1 stp process 2 instance 2 cost 1 stp binding process 2 undo dcn # interface LoopBack1 ip address 10.4.1.1 255.255.255.255 isis enable 1 # return
CE2 configuration file
# sysname CE2 # vlan batch 4094 # evpn vpn-instance evpna bd-mode route-distinguisher 1:1 vpn-target 1:1 export-extcommunity vpn-target 1:1 import-extcommunity # stp process 1 stp pathcost-standard legacy stp enable stp region-configuration region-name abc1 instance 1 vlan 1 # stp process 2 stp pathcost-standard legacy stp enable stp region-configuration region-name abc2 instance 2 vlan 2 # bridge-domain 1 vxlan vni 1 split-horizon-mode evpn binding vpn-instance evpna # isis 1 is-level level-2 cost-style wide network-entity 10.0000.0000.0031.00 traffic-eng level-2 # interface GigabitEthernet0/1/0 portswitch undo shutdown port link-type trunk port trunk allow-pass vlan 1 stp process 1 instance 0 cost 40000 stp process 1 instance 1 cost 40000 stp binding process 1 undo dcn # interface GigabitEthernet0/1/8 portswitch undo shutdown port link-type trunk port trunk allow-pass vlan 2 stp process 2 instance 0 cost 40000 stp process 2 instance 2 cost 40000 stp binding process 2 undo dcn # interface GigabitEthernet0/1/16 portswitch undo shutdown port link-type trunk port trunk allow-pass vlan 1 stp process 1 instance 0 cost 1 stp process 1 instance 1 cost 1 stp binding process 1 undo dcn # interface GigabitEthernet0/1/24 portswitch undo shutdown port link-type trunk port trunk allow-pass vlan 2 stp process 2 instance 0 cost 1 stp process 2 instance 2 cost 1 stp binding process 2 undo dcn # interface LoopBack1 ip address 10.5.1.1 255.255.255.255 isis enable 1 # return