- Table of Contents
-
- 08-Segment Routing Configuration Guide
- 00-Preface
- 01-SR-MPLS configuration
- 02-SRv6 configuration
- 03-SRv6 TE policy configuration
- 04-SRv6 VPN overview
- 05-IP L3VPN over SRv6 configuration
- 06-EVPN L3VPN over SRv6 configuration
- 07-EVPN VPWS over SRv6 configuration
- 08-EVPN VPLS over SRv6 configuration
- 09-SRv6 OAM configuration
- 10-SRv6 network slicing configuration
- Related Documents
-
Title | Size | Download |
---|---|---|
08-EVPN VPLS over SRv6 configuration | 478.22 KB |
Configuring EVPN VPLS over SRv6
EVPN VPLS over SRv6 multihoming
EVPN VPLS over SRv6 tasks at a glance
About EVPN instance configuration
Configuring an EVPN instance created in VSI view
Applying a locator to an EVPN instance
Applying a locator to an EVPN instance created in VSI view
Configuring the route recursion mode
Prerequisites for route recursion mode configuration
Configuring the route recursion mode on an EVPN instance created in VSI view
Configuring SRv6 TE policy traffic steering
Restrictions and guidelines for SRv6 TE policy traffic steering
Configuring color-based traffic steering
Configuring tunnel policy-based traffic steering
Mapping a Layer 3 interface to a VSI
Configuring PEs to exchange BGP EVPN routes
Specifying a source address for the outer IPv6 header of SRv6-encapsulated EVPN VPLS packets
Configuring EVPN VPLS over SRv6 multihoming
Restrictions and guidelines for EVPN VPLS over SRv6 multihoming
Configuring local FRR for EVPN VPLS over SRv6
Enabling VSIs to ignore the state of ACs
Configuring the switchback delay timer
Testing the connectivity of an SRv6 PW
Using ping to test the connectivity of an SRv6 PW
Using tracert to test the connectivity of an SRv6 PW
Display and maintenance commands for EVPN VPLS over SRv6
EVPN VPLS over SRv6 configuration examples
Example: Setting up an SRv6 tunnel between single-homed EVPN VPLS sites
Example: Configuring EVPN VPLS over SRv6 multihoming (static link aggregation dual-homed)
Example: Configuring EVPN VPLS over SRv6 multihoming (S-Trunk dual-homed)
Configuring EVPN VPLS over SRv6
About EVPN VPLS over SRv6
EVPN VPLS over SRv6 uses SRv6 tunnels to carry EVPN VPLS services. This technology establishes point-to-multipoint connections for customer sites over the IPv6 backbone network and transparently forwards Layer 2 customer traffic over the IPv6 backbone network. For more information about EVPN VPLS configuration, see EVPN Configuration Guide.
Basic principle
As shown in Figure 1, PEs set up an SRv6 tunnel by advertising End.DT2M SIDs, End.DT2U SIDs, and End.DT2UL SIDs to each other through BGP EVPN routes. On a PE, this SRv6 tunnel is used as a PW to encapsulate and forward Layer 2 data packets received from the local site and destined for a remote site. The devices on the IPv6 backbone transport network forward the SRv6-encapsulated packets according to the optimal routes calculated by an IGP. As a result, Layer 2 data packets of one customer site can be transparently forwarded to another site over the IPv6 backbone transport network.
Figure 1 EVPN VPLS over SRv6 network diagram
BGP EVPN route advertisement
A PE adds the End.DT2M SID and End.DT2U SID of a local VSI or the End.DX2 SID of an AC to BGP EVPN routes and advertises the routes to remote PEs. The routes help the PE establish an SRv6 tunnel to each remote PE.
· The End.DT2M SID is carried in Ethernet auto-discovery routes or IMET routes and is used to deliver EVPN VPLS broadcast, unknown unicast, and multicast (BUM) traffic.
· The End.DT2U or End.DX2 SID is carried in MAC/IP advertisement routes and is used to deliver EVPN VPLS known unicast traffic.
A pair of PEs both advertise End.DT2M SIDs and End.DT2U or End.DX2 SIDs, and they establish two SRv6 tunnels at two directions. The two SRv6 tunnels form a PW to carry Layer 2 customer traffic.
Traffic forwarding
EVPN VPLS over SRv6 supports the following route recursion modes:
· SRv6 BE mode.
· SRv6 TE mode.
· SRv6 TE and SRv6 BE hybrid mode.
The packet forwarding process differs by the route recursion mode in use.
SRv6 BE mode
This mode is also called SID-based forwarding mode. In this mode, a PE forwards an SRv6 packet by searching the IPv6 routing table based on the End.DT2U, End.DX2, or End.DT2M SID encapsulated in the packet.
As shown in Figure 1, a Layer 2 known unicast packet is forwarded from CE 1 to CE 2 as follows:
1. CE 1 sends the Layer 2 packet to PE 1.
2. After PE 1 receives the packet on the AC connected to CE 1, it searches the MAC address table of the VSI associated with that AC for the destination MAC address. PE 1 finds that the output interface is an SRv6 tunnel and obtains the End.DT2U or End.DX2 SID of the SRv6 tunnel.
3. PE 1 encapsulates an outer IPv6 header for the packet. The End.DT2U or End.DX2 SID is encapsulated in the outer IPv6 header as the destination IPv6 address. The source IPv6 address is the source address specified for the outer IPv6 header of SRv6-encapsulated EVPN VPLS packets.
4. PE 1 searches the IPv6 routing table based on the End.DT2U or End.DX2 SID for the optimal IGP route and forwards the packet to P through the optimal IGP route.
5. P searches the IPv6 routing table based on the End.DT2U or End.DX2 SID for the optimal IGP route and forwards the packet to PE 2 through the optimal IGP route.
6. PE 2 searches the local SID forwarding table for the End.DT2U or End.DX2 SID. According to the SID type, PE 2 removes the outer IPv6 header from the packet and performs the following operations:
¡ If the SID is an End.DT2U SID, PE 2 matches the packet to a VSI and searches the MAC address table of the VSI for the destination MAC address. Then, PE 2 forwards the packet to CE 2.
¡ If the SID is an End.DX2 SID, PE 2 forwards the packet to the AC associated with the End.DX2 SID.
As shown in Figure 1, a Layer 2 broadcast, multicast, or unknown unicast packet is forwarded as follows:
Table 1 CE 1 sends the Layer 2 packet to PE 1.
7. After PE 1 receives the packet on the AC connected to CE 1, it searches all End.DT2M SIDs received from remote PEs on the VSI associated with the AC.
8. PE 1 encapsulates an outer IPv6 header for the packet. An End.DT2M SID is encapsulated in the outer IPv6 header as the destination IPv6 address. The source IPv6 address is the source address specified for the outer IPv6 header of SRv6-encapsulated EVPN VPLS packets.
If PE 1 has received End.DT2M SIDs from multiple remote PEs, it encapsulates each End.DT2M SID to the Layer 2 packet and floods the packet to all remote PEs.
9. PE 1 searches the IPv6 routing table based on the End.DT2M SID for the optimal IGP route and forwards the packet to P through the optimal IGP route.
10. P searches the IPv6 routing table based on the End.DT2M SID for the optimal IGP route and forwards the packet to PE 2 through the optimal IGP route.
11. PE 2 searches the local SID forwarding table for the End.DT2M SID and performs the following operations:
a. Removes the outer IPv6 header.
b. Matches the packet to a VSI based on the End.DT2M SID.
c. Floods the packet in the VSI.
SRv6 TE mode
This mode is also called SRv6 TE policy-based forwarding mode. In this mode, when the PE forwards a customer packet, it first searches for a matching SRv6 TE policy based on the packet attributes. Then, the PE adds an SRH to the packet. The SRH includes the destination End.DT2M SID or End.DT2U or End.DX2 SID and the SID list of the SRv6 TE policy. Finally, the PE forwards the encapsulated packet based on the SRv6 TE policy.
The following modes are available to steer traffic to an SRv6 TE policy:
· Color—The device searches for an SRv6 TE policy that has the same color and endpoint address as the color and nexthop address of a BGP EVPN route. If a matching SRv6 TE policy exists, the device recurses the BGP EVPN route to that SRv6 TE policy. When the device receives packets that match the BGP EVPN route, it forwards the packets through the SRv6 TE policy.
· Tunnel policy—The device searches the tunnel policies for a matching SRv6 TE policy based on the next hop of a matching route. Configure a preferred tunnel or load sharing tunnel policy that uses the SRv6 TE policy. In this way, the SRv6 TE policy will be used as the public tunnel to carry the SRv6 PW that forwards the packets of private network packets.
For more information about tunnel policies, see MPLS Configuration Guide. For more information about SRv6 TE policies, see "Configuring SRv6 TE policies."
SRv6 TE and SRv6 BE hybrid mode
In this mode, the PE preferentially uses the SRv6 TE mode to forward a customer packet. If no SRv6 TE policy is available for the packet, the PE forwards the packet in SRv6 BE mode.
EVPN VPLS over SRv6 multihoming
About EVPN VPLS over SRv6 multihoming
As shown in Figure 2, EVPN VPLS over SRv6 supports deploying multiple PEs at a site for redundancy and high availability. On the redundant PEs, Ethernet links connected to the site form an Ethernet segment (ES) that is uniquely identified by an ES identifier (ESI). EVPN VPLS over SRv6 supports only dualhoming.
Figure 2 EVPN VPLS over SRv6 multihoming
Redundancy mode
The device supports single-active redundancy mode and all-active redundancy mode of EVPN VPLS over SRv6 multihoming.
· All-active mode—This mode allows all redundant PEs to a multihomed site to load share unicast traffic.
· Single-active mode—This mode allows one of the redundant PEs to forward traffic. When the primary PE becomes unavailable because of device failure or link failure, traffic is switched to the backup PE for forwarding. A designated forwarder (DF) is elected from the redundant PEs as the primary PE. For more information about DF election, see EVPN VPLS configuration in EVPN Configuration Guide.
Route advertisement
The redundant PEs at a multihomed site both advertise End.DT2U or End.DX2 SIDs and End.DT2M SIDs to remote PEs. In addition, they advertise the redundancy mode of the multihomed site and their roles (primary or secondary) to remote PEs. A remote PE handles BGP EVPN routes advertised by the redundant PEs based on the redundancy mode.
· In all-active mode, the remote PE treats the routes advertised by the redundant PEs as ECMP routes that can load share traffic.
· In single-active mode, the remote PE treats the routes advertised by the primary PE as the optimal routes and only uses the optimal routes to forward traffic.
Local FRR for EVPN VPLS over SRv6
As shown in Figure 3, CE 1 is dualhomed to PE 1 and PE 2, and PE 1 is the DF. When the AC on PE 1 fails, PE 1 deletes the corresponding MAC address entries and advertises the local unreachable event to PE 2 and remote PEs (PE 3 in this example). Then, the remote PEs will switch traffic destined for CE 1 to the tunnels to PE 2. This process takes some time. PE 1 might receive packets destined for CE 1 before the remote PEs are notified of the unreachable event and perform link switchover. In this situation, PE 1 drops the packets, because the AC's MAC address entries have been deleted. To resolve this issue, enable local FRR on PE 1. If an AC fails, PE 1 changes the output interface of the AC's MAC address entries to the index of the bypass SRv6 PW between PE 1 and PE 2. When receiving packets from remote PEs after its AC fails, PE 1 forwards the packets to PE 2 over the bypass SRv6 PW to prevent traffic loss.
Figure 3 Local FRR network diagram
A loop might exist if PE 1 and PE 2 establish a bypass SRv6 PW between them through End.DT2U or End.DX2 SIDs. When the AC on PE 1 or PE 2 fails, PE 1 or PE 2 forwards the packets received from its peer back to its peer through the bypass SRv6 PW. To resolve this issue, use End.DT2UL or End.DX2L SIDs to establish a bypass SRv6 PW between PE 1 and PE 2. The packets from a bypass SRv6 PW carry an End.DT2UL or End.DX2L SID. A PE does not forward the packets back to the bypass SRv6 PW.
PEs preferentially use End.DT2UL or End.DX2L SIDs to establish a bypass SRv6 PW. If no End.DT2UL or End.DX2L SIDs are available, the PEs use End.DT2U or End.DX2 SIDs to establish a bypass SRv6 PW.
EVPN VPLS over SRv6 tasks at a glance
To configure EVPN VPLS over SRv6, perform the following tasks:
1. Creating and configuring an EVPN instance
b. Configuring an EVPN instance
2. Applying for SRv6 SIDs from a locator
b. Applying a locator to an EVPN instance
3. Configuring packet forwarding methods
¡ Configuring the route recursion mode
¡ Configuring SRv6 TE policy traffic steering
This task is required if the route recursion mode is SRv6 TE mode or SRv6 TE and SRv6 BE hybrid mode.
5. Configuring PEs to exchange BGP EVPN routes
6. Configure SRv6 packets
¡ Specifying a source address for the outer IPv6 header of SRv6-encapsulated EVPN VPLS packets
7. (Optional.) Configuring EVPN VPLS over SRv6 multihoming
8. (Optional.) Maintaining the EVPN VPLS over SRv6 network
¡ Testing the connectivity of an SRv6 PW
Creating a VSI
Restrictions and guidelines
For more information about the commands in this section, see VPLS commands in MPLS Command Reference.
Procedure
1. Enter system view.
system-view
2. Enable L2VPN.
l2vpn enable
By default, L2VPN is disabled.
3. Create a VSI and enter VSI view.
vsi vsi-name
4. Bring up the VSI.
undo shutdown
By default, a VSI is not administratively down.
Configuring an EVPN instance
About EVPN instance configuration
The BGP EVPN routes advertised by a PE carry the RD and route targets configured for the EVPN instance of the routes.
Configuring an EVPN instance created in VSI view
1. Enter system view.
system-view
2. (Optional.) Configure a PW class.
a. Create a PW class and enter its view.
pw-class class-name
For more information about this command, see MPLS Command Reference.
b. Configure the SRv6 PW data encapsulation type for the PW class.
srv6-pw-type { ethernet | vlan }
By default, the SRv6 PW data encapsulation type is VLAN.
c. Return to system view.
quit
3. Enter VSI view.
vsi vsi-name
For more information about this command, see EVPN Command Reference.
4. Create an EVPN instance and enter VSI EVPN instance view.
evpn encapsulation srv6
5. Configure an RD for the EVPN instance.
route-distinguisher route-distinguisher
By default, no RD is configured for an EVPN instance.
For more information about this command, see EVPN Command Reference.
6. Configure route targets for the EVPN instance.
vpn-target { vpn-target&<1-8> } [ both | export-extcommunity | import-extcommunity ]
By default, an EVPN instance does not have route targets.
For more information about this command, see EVPN Command Reference.
Parameter |
Description |
export-extcommunity |
Do not specify the same export targets for the EVPN instances of different VSIs. Do not specify the same export targets for the EVPN instances created in different views (system view, VSI view, VPN instance view, public instance view, and cross-connect group view). As a best practice, the export targets configured for the following objects do not match the import targets configured for the EVPN instances created in cross-connect group view: · VPN instances. · The public instance. · EVPN instances created in system view, VSI view, VPN instance view, and public instance view. |
import-extcommunity |
As a best practice, the import targets configured for the following objects do not match the export targets configured for the EVPN instances created in cross-connect group view: · VPN instances. · The public instance. · EVPN instances created in system view, VSI view, VPN instance view, and public instance view. |
7. (Optional.) Apply a PW class to the EVPN instance.
pw-class class-name
By default, no PW class is applied to an EVPN instance.
The PW class applies to all PWs in the EVPN instance.
For more information about this command, see EVPN Command Reference.
8. (Optional.) Apply a tunnel policy to the EVPN instance.
tunnel-policy tunnel-policy-name
By default, no tunnel policy is applied to an EVPN instance.
For more information about this command, see EVPN Command Reference.
Configuring SRv6 SIDs
1. Enter system view.
system-view
2. Enable SRv6 and enter SRv6 view.
segment-routing ipv6
3. Configure a locator and enter SRv6 locator view.
locator locator-name [ ipv6-prefix ipv6-address prefix-length [ args args-length | static static-length ] * ]
4. Configure the opcode portion.
¡ Configure End.DT2U SIDs.
opcode { opcode | hex hex-opcode } end-dt2u vsi vsi-name
¡ Configure End.DT2UL SIDs.
opcode { opcode | hex hex-opcode } end-dt2ul vsi vsi-name
¡ Configure End.DX2 SIDs.
opcode { opcode | hex hex-opcode } end-dx2 vsi vsi-name interface interface-type interface-number
¡ Configure End.DX2L SIDs.
opcode { opcode | hex hex-opcode } end-dx2l vsi vsi-name interface interface-type interface-number
¡ Configure End.DT2M SIDs.
opcode { opcode | hex hex-opcode } end-dt2m vsi vsi-name
Applying a locator to an EVPN instance
About this task
Perform this task to allocate SRv6 SIDs from a locator to the VSIs bound to an EVPN instance.
Applying a locator to an EVPN instance created in VSI view
1. Enter system view.
system-view
2. Enter VSI view.
vsi vsi-name
3. Enter VSI EVPN instance view.
evpn encapsulation srv6
4. Apply a locator to the EVPN instance.
segment-routing ipv6 locator locator-name [ dt2u-locator dt2u-locator-name ] [ dt2ul-locator dt2ul-locator-name ] [ dx2-locator dx2-locator-name ] [ dx2l-locator dx2l-locator-name ] [ auto-sid-disable ]
By default, no locator is applied to the EVPN instance on a VSI.
Configuring the route recursion mode
About route recursion modes
After a PE receives a customer packet destined for an End.DT2M, End.DT2U, End.DT2UL, End.DX2, or End.DX2L SID, it forwards the packet according to the route recursion mode.
· SRv6 BE mode—In this mode, the PE first encapsulates the SID into the packet. Then, the PE searches the IPv6 routing table based on the SID encapsulated in the packet to forward the packet.
· SRv6 TE mode—In this mode, the PE first searches for a matching SRv6 TE policy based on the color attribute or next hop address of a matching route. Then, the PE adds an SRH to the packet. The SRH includes the End.DT2M, End.DT2U, End.DT2UL, End.DX2, or End.DX2L SID and the SID list of the SRv6 TE policy. Finally, the PE forwards the encapsulated packet through the SRv6 TE policy. For more information, see "Configuring SRv6 TE policies."
· SRv6 TE and SRv6 BE hybrid mode—In this mode, the PE preferentially uses the SRv6 TE mode to forward the packet. If no SRv6 TE policy is available for the packet, the PE forwards the packet in SRv6 BE mode.
Prerequisites for route recursion mode configuration
To use the SRv6 TE mode or the SRv6 TE and SRv6 BE hybrid mode, you must configure SRv6 TE policy traffic steering. For more information, see "Configuring SRv6 TE policy traffic steering."
Configuring the route recursion mode on an EVPN instance created in VSI view
1. Enter system view.
system-view
2. Enter VSI view.
vsi vsi-name
3. Enter VSI EVPN instance view.
evpn encapsulation srv6
4. Configure the route recursion mode.
segment-routing ipv6 { best-effort | traffic-engineering [ track-bfd ] | traffic-engineering [ track-bfd ] best-effort [ local-preference ] }
By default, a PE searches the IPv6 routing table based on the next hop of a matching EVPN route to forward traffic.
Configuring SRv6 TE policy traffic steering
Restrictions and guidelines for SRv6 TE policy traffic steering
This task is required if the route recursion mode is SRv6 TE mode or SRv6 TE and SRv6 BE hybrid mode.
If both color-based traffic steering and tunnel policy-based traffic steering are configured, the device selects a traffic steering method in the following order for a tunnel:
1. The policy bound to the tunnel.
2. Color-based traffic steering. If the device fails to use this method, the load sharing policy for tunnels is used.
3. Preferred tunnel policy. This method does not take effect if color-based traffic steering is configured.
4. Load sharing policy for tunnels. If no load sharing policy is configured, the default tunnel policy is used.
Configuring color-based traffic steering
About this task
The device searches for an SRv6 TE policy that has the same color and endpoint address as the color and next hop address of a BGP EVPN route. If a matching SRv6 TE policy exists, the device recurses the route to that SRv6 TE policy. When the device receives packets that match the route, it forwards the packets through the SRv6 TE policy.
Use one of the following methods to configure colors for BGP EVPN routes:
· Routing policy-based coloring—Configure a routing policy to add the color extended community attribute to BGP EVPN routes or modify the existing color extended community attribute in BGP EVPN routes.
· Default color—Specify a color as the default color for BGP EVPN routes. A BGP EVPN route uses the default color for color-based traffic steering if the route does not have the color extended community attribute or match a routing policy to obtain a color.
Restrictions and guidelines
Traffic steering is based on the greatest value among the color extended community attributes when the following conditions exist:
· You specify the additive keyword for the apply extcommunity color clause in a routing policy, and specify the routing policy for the import route-policy command.
· The received BGP EVPN routes carry the color extended community attribute.
Configuring routing policy-based coloring
1. Enter system view.
system-view
2. Enter routing policy node view.
route-policy route-policy-name { deny | permit } node node-number
For more information about this command, see routing policy commands in Layer 3—IP Routing Command Reference.
3. Set the color extended community attribute for BGP routes.
apply extcommunity color color [ additive ]
By default, no color extended community attribute is set for BGP routes.
For more information about this command, see routing policy commands in Layer 3—IP Routing Command Reference.
4. Return to system view.
quit
5. Enter VSI view.
vsi vsi-name
6. Enter VSI EVPN instance view.
evpn encapsulation srv6
7. Apply the routing policy as an import policy to the EVPN instance.
import route-policy route-policy
By default, no import routing policy is applied to an EVPN instance. The EVPN instance does not filter received routes.
8. Apply the routing policy as an export policy to the EVPN instance.
export route-policy route-policy
By default, no export routing policy is applied to an EVPN instance. The EVPN instance does not filter advertised routes.
Configuring the default color for BGP EVPN routes
1. Enter system view.
system-view
2. Enter VSI view.
vsi vsi-name
3. Enter VSI EVPN instance view.
evpn encapsulation srv6
4. Configure the default color for BGP EVPN routes.
default color color-value
By default, no default color is configured for BGP EVPN routes.
Configuring tunnel policy-based traffic steering
About this task
The device searches the tunnel policies for a matching SRv6 TE policy based on the next hop of a matching route. Configure a preferred tunnel or load sharing tunnel policy that uses the SRv6 TE policy. In this way, the SRv6 TE policy will be used as the public tunnel to carry the SRv6 PW that forwards the packets of private network packets. For more information about tunnel policies, see MPLS Configuration Guide.
Configuring a tunnel policy
1. Enter system view.
system-view
2. Create a tunnel policy and enter tunnel policy view.
tunnel-policy tunnel-policy-name [ default ]
3. Configure the tunnel policy. Choose a minimum of one option:
¡ Bind tunnels to a destination IP address in a tunnel policy, so the tunnels can be used only for a specific VPN service.
binding-destination dest-ipv6-address { srv6-policy group srv6-policy-group-id | srv6-policy { name policy-name | end-point ipv6 ipv6-address color color-value } } [ ignore-destination-check ] [ down-switch ]
By default, a tunnel policy does not bind tunnels to a destination IP address.
¡ Specify an SRv6 TE policy as a preferred tunnel of the tunnel policy.
preferred-path srv6-policy { name srv6-policy-name | end-point ipv6 ipv6-address color color-value } [ preference value ]
By default, no preferred tunnel is specified for a tunnel policy.
¡ Configuring SRv6 TE policy load sharing for the tunnel policy.
select-seq [ strict ] { srv6-policy | srv6-policy-group } * load-balance-number number
By default, no load sharing tunnel policy is configured.
For more information about the tunnel policy commands, see MPLS Command Reference.
Specifying the tunnel policy for an EVPN instance
1. Enter system view.
system-view
2. Enter VSI view.
vsi vsi-name
3. Enter VSI EVPN instance view.
evpn encapsulation srv6
4. Specify a tunnel policy for the EVPN instance.
tunnel-policy tunnel-policy-name
By default, no tunnel policy is specified for an EVPN instance.
Mapping ACs to a VSI
Mapping a Layer 3 interface to a VSI
About this task
To assign the customer traffic on a Layer 3 interface to a VSI, map that interface to the VSI. The VSI uses its MAC address table to forward the customer traffic.
For more information about the command in this task, see VPLS commands in MPLS Command Reference.
Procedure
1. Enter system view.
system-view
2. Enter Layer 3 interface view.
interface interface-type interface-number
3. Map the Layer 3 interface to a VSI.
xconnect vsi vsi-name [ access-mode { ethernet | vlan } ] [ track track-entry-number&<1-3> ]
By default, a Layer 3 interface is not mapped to a VSI.
Configuring PEs to exchange BGP EVPN routes
Restrictions and guidelines
For more information about BGP commands, see Layer 3—IP Routing Command Reference.
Procedure
1. Enter system view.
system-view
2. Enter BGP instance view.
bgp as-number [ instance instance-name ]
3. Configure an IPv6 peer or peer group.
peer { group-name | ipv6-address [ prefix-length ] } as-number as-number
4. Specify the source interface of TCP connections to a peer or peer group.
peer { group-name | ipv6-address [ prefix-length ] } connect-interface interface-type interface-number
By default, BGP uses the IPv6 address of the output interface in the optimal route to the BGP peer or peer group as the source address of TCP connections to the peer or peer group.
5. Enter BGP EVPN address family view.
address-family l2vpn evpn
6. Enable BGP to exchange EVPN routes with an IPv6 peer or peer group.
peer { group-name | ipv6-address [ prefix-length ] } enable
By default, BGP cannot exchange EVPN routes with an IPv6 peer or peer group.
7. Enable BGP to advertise SRv6-encapsulated EVPN routes to a peer or peer group.
peer { group-name | ipv6-address [ prefix-length ] } advertise encap-type srv6
By default, BGP advertises VXLAN-encapsulated EVPN routes to a peer or peer group.
Specifying a source address for the outer IPv6 header of SRv6-encapsulated EVPN VPLS packets
Restrictions and guidelines
To ensure correct VPN traffic forwarding in an EVPN VPLS over SRv6 network, you must specify a source address for the outer IPv6 header of SRv6-encapsulated EVPN VPLS packets.
You cannot specify a loopback address, link-local address, multicast address, or unspecified address as the source IPv6 address. You must specify an IPv6 address of the local device as the source IPv6 address, and make sure the IPv6 address has been advertised by a routing protocol. As a best practice, specify a loopback interface address of the local device as the source IPv6 address.
Procedure
1. Enter system view.
system-view
2. Enter SRv6 view.
segment-routing ipv6
3. Specify a source address for the outer IPv6 header of SRv6-encapsulated EVPN VPLS packets.
encapsulation source-address ipv6-address
By default, no source address is specified for the outer IPv6 header of SRv6-encapsulated EVPN VPLS packets.
Configuring EVPN VPLS over SRv6 multihoming
Restrictions and guidelines for EVPN VPLS over SRv6 multihoming
You can assign an ESI to both a main interface and its subinterfaces.
· The ESI assigned to a subinterface takes precedence over the ESI assigned to the main interface. If you assign an ESI to a subinterface, the redundancy mode configured on the subinterface applies.
· If you assign an ESI only to the main interface, both the ESI and redundancy mode settings on the main interface apply to the associated subinterfaces. The redundancy mode configured on the subinterfaces will not take effect.
Configuring an ESI
About this task
An ESI uniquely identifies an ES. The interfaces (or VSIs) with the same ESI belong to the same ES. Traffic of the ES can be distributed among the interfaces (or VSIs) for load sharing.
Assigning an ESI to an interface
1. Enter system view.
system-view
2. Enter interface view.
¡ Enter Layer 3 Ethernet interface view.
interface interface-type interface-number
¡ Enter Layer 3 aggregate interface view.
interface route-aggregation interface-number
¡ Enter FlexE physical interface view.
interface interface-type interface-number
¡ Enter FlexE logical interface view.
interface flexe interface-number
3. Assign an ESI to the interface.
esi esi-id
By default, no ESI is assigned to an interface.
For more information about this command, see EVPN Command Reference.
Setting the redundancy mode
About this task
EVPN VPLS over SRv6 multihoming provides the single-active redundancy mode and all-active redundancy mode.
The redundant PEs at a dualhomed site each establish an EVPN PW to a remote PE. To use one PW as a backup of the other PW, use the single-active mode. To distribute traffic across the PWs for load sharing, use the all-active mode.
Setting the redundancy mode on an interface
1. Enter system view.
system-view
2. Enter interface view.
¡ Enter Layer 3 Ethernet interface view.
interface interface-type interface-number
¡ Enter Layer 3 aggregate interface view.
interface route-aggregation interface-number
¡ Enter FlexE physical interface view.
interface interface-type interface-number
¡ Enter FlexE logical interface view.
interface flexe interface-number
3. Set the redundancy mode.
evpn redundancy-mode { all-active | single-active }
By default, the all-active redundancy mode is used.
For more information about this command, see EVPN Command Reference.
Configuring local FRR for EVPN VPLS over SRv6
About local FRR for EVPN VPLS over SRv6
Local fast reroute (FRR) enables two PEs at a multihomed EVPN VPLS over SRv6 network site to set up a bypass SRv6 PW between them. This feature helps reduce the traffic loss caused by AC failure.
Restrictions and guidelines for local FRR configuration for EVPN VPLS over SRv6
On an EVPN instance, EVPN instance-specific local FRR configuration takes precedence over global local FRR configuration.
If you have executed the evpn frr local enable command on an EVPN instance, the undo evpn multihoming vpls-frr local command does not disable local FRR for the EVPN instance.
Perform this task on redundant PEs at a multihomed site.
Enabling local FRR globally
1. Enter system view.
system-view
2. Enable local FRR globally for EVPN VPLS over SRv6.
evpn multihoming vpls-frr local
By default, local FRR is disabled globally for EVPN VPLS over SRv6.
For more information about this command, see EVPN Command Reference.
Configuring local FRR on an EVPN instance created in VSI view
1. Enter system view.
system-view
2. Enter VSI view.
vsi vsi-name
3. Enter VSI EVPN instance view.
evpn encapsulation srv6
4. Configure local FRR on the EVPN instance.
evpn frr local { disable | enable }
By default, an EVPN instance uses the global local FRR configuration of EVPN VPLS over SRv6.
For more information about this command, see EVPN Command Reference.
Enabling VSIs to ignore the state of ACs
About this task
This task helps reduce the traffic loss caused by AC failure at a multihomed EVPN VPLS over SRv6 network site that uses single-active redundancy mode.
At a multihomed EVPN VPLS network site that uses single-active redundancy mode, CE 1 is dualhomed to PE 1 and PE 2 through a smart trunk. PE 1 is the primary PE, and PE 2 is the secondary PE. When the AC on PE 1 fails, PE 1 and PE 2 act as follows:
· PE 1 withdraws advertised Ethernet auto-discovery routes.
· PE 2 brings up its AC and advertises Ethernet auto-discovery routes to remote PEs.
The remote PEs switch traffic to the paths to PE 2 only after receiving the Ethernet auto-discovery routes advertised by PE 2, and traffic loss occurs during path switchover. To resolve this issue, enable VSIs to ignore the state of ACs on PE 2. This feature allows PE 2 to advertise Ethernet auto-discovery routes to remote PEs regardless of the state of ACs and speeds up path switchover when the AC on PE 1 fails.
Restrictions and guidelines for AC state ignore configuration
On a VSI, VSI-specific AC state ignore configuration takes precedence over global AC state ignore configuration.
Perform this task together with the feature of generating MAC address entries for received MAC/IP advertisement routes.
Enabling VSIs to ignore the state of ACs globally
1. Enter system view.
system-view
2. Enable VSIs to ignore the state of ACs globally.
l2vpn ignore-ac-state [ evpn-vpls ]
By default, VSIs does not ignore the state of ACs.
Configuring a VSI to ignore the state of ACs
1. Enter system view.
system-view
2. Enter VSI view.
vsi vsi-name
3. Enable a VSI to ignore the state of ACs or disable a VSI from ignoring the state of ACs.
ignore-ac-state { enable | disable }
By default, a VSI uses the global AC state ignore configuration.
Configuring the switchback delay timer
About this task
In a multihomed EVPN VPLS over SRv6 network, upon recovery of the primary PE or access link attached to the primary PE, the primary PE generates an AD Per EVI route. It then advertises the AD Per EVI route to the remote PE through the BGP EVPN peer relationship. Upon receiving the AD Per EVI route, the remote PE generates an associated forwarding entry , and switches traffic from the backup-PE-attached path over to the primary-PE-attached path. Packet loss might occur because the associated forwarding entries are not completely generated on the primary PE. To prevent this issue, you can configure an appropriate switchover delay timer on the remote PE. This configuration prevents the remote PE from immediately generating a forwarding entry upon receiving the EVI AD route. When the forwarding entries become stable on the primary PE, and the delay timer expires, the remote PE generates a new forwarding entry, and switches traffic to the primary PE, avoiding packet loss.
Configuring the switchback delay timer for a VSI EVPN instance
1. Enter system view.
system-view
2. Enter VSI view.
vsi vsi-name
3. Enter VSI EVPN instance view.
evpn encapsulation srv6
4. Configure switchback delay timer.
revertive wtr wtr-time
The default setting is 0, that is, switchback delay is not performed.
Testing the connectivity of an SRv6 PW
Using ping to test the connectivity of an SRv6 PW
About this task
In an EVPN VPLS over SRv6 network, a PE transmits data packets to a remote PE over an SRv6 PW. Perform this task to test the connectivity of the SRv6 PW from the local PE to the remote PE when packet loss or traffic interruption occurs between the PEs.
The test process is as follows:
1. The local PE constructs an MPLS echo request packet and searches for the SRv6 tunnel that matches the specified VSI. After obtaining the End.DT2U SID of the SRv6 tunnel, the PE adds a UDP header and an IPv6 header to the packet and forwards the packet to the remote PE.
2. Upon receiving the MPLS echo request packet, the remote PE replies to the request packet.
3. The local PE identifies the connectivity of the SRv6 PW based on whether it has received MPLS echo reply packets from the remote PE and the reply response time. In addition, the local PE outputs statistics about the ping operation.
Procedure
To test the connectivity of an SRv6 PW from the local PE to the remote PE in an EVPN VPLS over SRv6 network, execute the following commands in any view:
ping evpn vpls srv6 vsi vsi-name mac mac-address [ force-match-slice ] [ -a source-ipv6 | -c count | -h hop-limit | -m interval | -r reply-mode | -s packet-size | { -service-class class-value | -te-class te-class-value } | -t time-out | -tc tc ] *
ping evpn vsi vsi-name mac mac-address [-a source-ipv6 | -c count | -h ttl-value | -m wait-time | -r reply-mode | -s packet-size | -t time-out | -tc tc ] *
|
NOTE: The ping evpn vpls srv6 and ping evpn vsi commands have the same function. For more information about the ping evpn vsi command, see EVPN Command Reference. |
Using tracert to test the connectivity of an SRv6 PW
About this task
In an EVPN VPLS over SRv6 network, a PE transmits data packets to a remote PE over an SRv6 PW. Perform this task to trace the path of the SRv6 PW from the local PE to the remote PE when packet loss or traffic interruption occurs between the PEs. This task helps you locate the failed nodes on the path.
The test process is as follows:
1. The local PE constructs an MPLS echo request packet and searches for the SRv6 tunnel that matches the specified VSI. After obtaining the End.DT2U SID of the SRv6 tunnel, the PE adds a UDP header and an IPv6 header to the packet and forwards the packet to the remote PE. In the IPv6 header, the value of the Hop limit field is set to 1.
2. When the next node receives the packet, the value of the Hop limit field changes to 0. Then, the node sends an ICMPv6 timeout packet to the first node (the local PE).
3. When the local PE receives the ICMPv6 timeout packet, it increases the value of the Hop limit field by one in the MPLS echo request packet. Then, the local PE forwards the request packet to the remote PE. The value of the Hop limit field is 2.
4. The value of the Hop limit field decreases by one each time the request packet reaches a node. When the value of the Hop limit field decreases to 0, the node that receives the request packet responds to the first node with an ICMPv6 timeout packet. If the node that receives the request packet is the destination node, it sends an MPLS echo reply packet to the first node.
5. The local PE repeats the previous step until one of the following conditions exist:
¡ The local PE has not received any reply packets before the reply timeout time expires for all request packets.
¡ The local PE receives a reply packet from the remote PE.
6. The local PE identifies the connectivity of the SRv6 PW based on whether it has received MPLS echo reply packets from the remote PE and the reply response time. In addition, the local PE outputs statistics about the tracert operation.
Procedure
To trace the path of an SRv6 PW from the local PE to the remote PE in an EVPN VPLS over SRv6 network, execute the following command in any view:
tracert evpn vpls srv6 vsi vsi-name mac mac-address [ force-match-slice ] [ -a source-ip | -h hop-limit | -r reply-mode | { -service-class class-value | -te-class te-class-value } | -t time-out | -tc tc ] *
tracert evpn vsi vsi-name mac mac-address [ -a source-ipv6 | -h ttl-value | -r reply-mode | -t time-out | -tc tc ] *
|
NOTE: The tracert evpn vpls srv6 and tracert evpn vsi commands have the same function. For more information about the tracert evpn vsi command, see EVPN Command Reference. |
Display and maintenance commands for EVPN VPLS over SRv6
Execute display commands in any view and reset commands in user view.
For more information about the following BGP commands, see Layer 3—IP Routing Command Reference:
· display bgp group.
· display bgp peer.
· display bgp update-group.
Task |
Command |
Display information about EVPN VPLS forwarding. |
display l2vpn forwarding evpn [ vsi ] [ name vsi-name ] [ slot slot-number ] [ verbose ] |
Display BGP peer group information. |
display bgp [ instance instance-name ] group l2vpn evpn [ group-name group-name ] |
Display BGP EVPN routes. |
display bgp [ instance instance-name ] l2vpn evpn [ peer { ipv6-address } { advertised-routes | received-routes } [ statistics ] | [ route-distinguisher route-distinguisher ] [ route-type { auto-discovery | es | imet | mac-ip } ] [ { evpn-route route-length | evpn-prefix } [ advertise-info ] ] | [ ipv4-address | ipv6-address | mac-address ] ] | [ statistics ] ] |
Display BGP peer or peer group information. |
display bgp [ instance instance-name ] peer l2vpn evpn [ ipv6-address prefix-length | { ipv6-address | group-name group-name } log-info | [ ipv6-address ] verbose ] |
Display information about BGP update groups. |
display bgp [ instance instance-name ] update-group l2vpn evpn [ ipv6-address ] |
Display information about peers that are automatically discovered through BGP. |
display evpn auto-discovery { mac-ip [ srv6 ] [ peer ip-address] [ vsi vsi-name ] | macip-prefix [ nexthop next-hop ] [ count ] } |
Display EVPN ES information. |
display evpn es { local [ count | [ vsi vsi-name ] [ esi esi-id ] [ verbose ] ] | remote [ vsi vsi-name ] [ esi esi-id ] [ nexthop next-hop ] [ verbose ]} |
Display information about IPv6 peers that are automatically discovered through BGP. |
display evpn ipv6 auto-discovery { ethernet-ad srv6 [ peer ipv6-address ] [ vsi vsi-name ] | { imet | mac-ip } [ srv6 | vxlan ] [ peer ipv6-address ] [ vsi vsi-name ] | macip-prefix [ nexthop next-hop ] [ count ] } |
Display EVPN MAC address entries. |
display evpn route mac [ mac-address mac-address | umr [ verbose ] ] [ srv6 ] [ local | remote ] [ vsi vsi-name ] [ count ] |
Display EVPN VSI information. |
display evpn vsi [ name vsi-name ] [ verbose ] |
Display L2VPN SRv6 forwarding information. |
display l2vpn forwarding srv6 [ vsi vsi-name ] [ verbose ] |
Display information about L2VPN MAC address entries. |
display l2vpn mac-address [ interface interface-type inteface-number | mac-address | peer ip-address pw-id pw-id | s-vlan vlan-id | vsi vsi-name [ ac | pw ] ] [ dynamic ] [ count ] |
Display L2VPN SRv6 information. |
display l2vpn peer srv6 [ vsi vsi-name ] [ state-machine | verbose ] |
Display VSI information. |
display l2vpn vsi [ evpn-srv6 | name vsi-name ] [ verbose ] |
EVPN VPLS over SRv6 configuration examples
Example: Setting up an SRv6 tunnel between single-homed EVPN VPLS sites
Network configuration
As shown in Figure 4, set up an SRv6 tunnel between PE 1 and PE 2 for users in site 1 and site 2 to communicate through EVPN VPLS over the IPv6 backbone network.
Device |
Interface |
IP address |
Device |
Interface |
IP address |
CE 1 |
XGE2/0/0 |
10::1/64 |
P |
Loop0 |
3::3/128 |
PE 1 |
Loop0 |
1::1/128 |
|
XGE2/0/0 |
20::2/64 |
|
XGE2/0/0 |
- |
|
XGE2/0/1 |
30::1/64 |
|
XGE2/0/1 |
20::1/64 |
PE 2 |
Loop0 |
2::2/128 |
CE 2 |
XGE2/0/0 |
10::2/64 |
|
XGE2/0/0 |
- |
|
|
|
|
XGE2/0/1 |
30::2/64 |
Procedure
1. Configure CE 1.
<CE1> system-view
[CE1] interface ten-gigabitethernet 2/0/0
[CE1-Ten-GigabitEthernet2/0/0] ipv6 address 10::1 64
[CE1-Ten-GigabitEthernet2/0/0] quit
2. Configure PE 1:
# Run OSPFv3 on PE 1 and use OSPFv3 to advertise SIDs.
<PE1> system-view
[PE1] ospfv3
[PE1-ospfv3-1] router-id 1.1.1.1
[PE1-ospfv3-1] segment-routing ipv6 locator aaa
[PE1-ospfv3-1] area 0.0.0.0
[PE1-ospfv3-1-area-0.0.0.0] quit
[PE1-ospfv3-1] quit
# Configure interface Loopback 0.
[PE1] interface loopback 0
[PE1-LoopBack0] ipv6 address 1::1 128
[PE1-LoopBack0] ospfv3 1 area 0
[PE1-LoopBack0] quit
# Enable L2VPN.
[PE1] l2vpn enable
# Configure Ten-GigabitEthernet 2/0/1, the interface connected to P.
[PE1] interface ten-gigabitethernet 2/0/1
[PE1-Ten-GigabitEthernet2/0/1] ipv6 address 20::1 64
[PE1-Ten-GigabitEthernet2/0/1] ospfv3 1 area 0
[PE1-Ten-GigabitEthernet2/0/1] undo shutdown
[PE1-Ten-GigabitEthernet2/0/1] quit
# Configure PE 1 to establish IBGP neighbor relationship with PE 2 and enable BGP EVPN to advertise routes in SRv6 encapsulation to PE 2.
[PE1] bgp 100
[PE1-bgp-default] router-id 1.1.1.1
[PE1-bgp-default] peer 2::2 as-number 100
[PE1-bgp-default] peer 2::2 connect-interface loopback 0
[PE1-bgp-default] address-family l2vpn evpn
[PE1-bgp-default-evpn] peer 2::2 enable
[PE1-bgp-default-evpn] peer 2::2 advertise encap-type srv6
[PE1-bgp-default-evpn] quit
[PE1-bgp-default] quit
# Create VSI vpna, create an EVPN instance for it, and enable SRv6 encapsulation. Configure an RD and route targets for the EVPN instance, enable the SID-route-recursion feature, and apply a locator to the EVPN instance.
[PE1] vsi vpna
[PE1-vsi-vpna] evpn encapsulation srv6
[PE1-vsi-vpna-evpn-srv6] route-distinguisher 1:1
[PE1-vsi-vpna-evpn-srv6] vpn-target 1:1 export-extcommunity
[PE1-vsi-vpna-evpn-srv6] vpn-target 1:1 import-extcommunity
[PE1-vsi-vpna-evpn-srv6] segment-routing ipv6 best-effort
[PE1-vsi-vpna-evpn-srv6] segment-routing ipv6 locator aaa
[PE1-vsi-vpna-evpn-srv6] quit
# Map Ten-GigabitEthernet 2/0/0 to the VSI.
[PE1] interface ten-gigabitethernet 2/0/0
[PE1-Ten-GigabitEthernet2/0/0] xconnect vsi vpna
[PE1-Ten-GigabitEthernet2/0/0] quit
# Specify a source IP address for the outer IPv6 header of SRv6-encapsulated packets, and configure a locator to apply for End.DT2U SIDs and End.DT2M SIDs.
[PE1] segment-routing ipv6
[PE1-segment-routing-ipv6] encapsulation source-address 1::1
[PE1-segment-routing-ipv6] locator aaa ipv6-prefix 100:: 64 static 32
[PE1-segment-routing-ipv6-locator-aaa] quit
[PE1-segment-routing-ipv6] quit
3. Configure PE 2:
# Run OSPFv3 on PE 2 and use OSPFv3 to advertise SIDs.
<PE2> system-view
[PE2] ospfv3
[PE2-ospfv3-1] router-id 2.2.2.2
[PE2-ospfv3-1] segment-routing ipv6 locator aaa
[PE2-ospfv3-1] area 0.0.0.0
[PE2-ospfv3-1-area-0.0.0.0] quit
[PE2-ospfv3-1] quit
# Configure interface Loopback 0.
[PE2] interface loopback 0
[PE2-LoopBack0] ipv6 address 2::2 128
[PE2-LoopBack0] ospfv3 1 area 0
[PE2-LoopBack0] quit
# Enable L2VPN.
[PE2] l2vpn enable
# Configure Ten-GigabitEthernet 2/0/1, the interface connected to P.
[PE2] interface ten-gigabitethernet 2/0/1
[PE2-Ten-GigabitEthernet2/0/1] ipv6 address 30::2 64
[PE2-Ten-GigabitEthernet2/0/1] ospfv3 1 area 0.0.0.0
[PE2-Ten-GigabitEthernet2/0/1] undo shutdown
[PE2-Ten-GigabitEthernet2/0/1] quit
# Configure PE 2 to establish IBGP neighbor relationship with PE 1, and enable BGP EVPN to advertise routes in SRv6 encapsulation to PE 1.
[PE2] bgp 100
[PE2-bgp-default] router-id 2.2.2.2
[PE2-bgp-default] peer 1::1 as-number 100
[PE2-bgp-default] peer 1::1 connect-interface loopback 0
[PE2-bgp-default] address-family l2vpn evpn
[PE2-bgp-default-evpn] peer 1::1 enable
[PE2-bgp-default-evpn] peer 1::1 advertise encap-type srv6
[PE2-bgp-default-evpn] quit
[PE2-bgp-default] quit
# Create VSI vpna, create an EVPN instance for it, and enable SRv6 encapsulation. Configure an RD and route targets for the EVPN instance, enable the SID-route-recursion feature, and apply a locator to the EVPN instance.
[PE2] vsi vpna
[PE2-vsi-vpna] evpn encapsulation srv6
[PE2-vsi-vpna-evpn-srv6] route-distinguisher 1:1
[PE2-vsi-vpna-evpn-srv6] vpn-target 1:1 export-extcommunity
[PE2-vsi-vpna-evpn-srv6] vpn-target 1:1 import-extcommunity
[PE2-vsi-vpna-evpn-srv6] segment-routing ipv6 best-effort
[PE2-vsi-vpna-evpn-srv6] segment-routing ipv6 locator aaa
[PE2-vsi-vpna-evpn-srv6] quit
# Map Ten-GigabitEthernet 2/0/0 to the VSI.
[PE2] interface ten-gigabitethernet 2/0/0
[PE2-Ten-GigabitEthernet2/0/0] xconnect vsi vpna
[PE2-Ten-GigabitEthernet2/0/0] quit
# Specify a source IP address for the outer IPv6 header of SRv6-encapsulated packets, and configure a locator to apply for End.DT2U SIDs and End.DT2M SIDs.
[PE2] segment-routing ipv6
[PE2-segment-routing-ipv6] encapsulation source-address 2::2
[PE2-segment-routing-ipv6] locator aaa ipv6-prefix 200:: 64 static 32
[PE2-segment-routing-ipv6-locator-aaa] quit
[PE2-segment-routing-ipv6] quit
4. Configure P:
# Run OSPFv3 on P.
<P> system-view
[P] ospfv3
[P-ospfv3-1] router-id 3.3.3.3
[P-ospfv3-1] area 0.0.0.0
[P-ospfv3-1-area-0.0.0.0] quit
[P-ospfv3-1] quit
# Configure IPv6 addresses for interfaces and run OSPFv3 on the interfaces.
[P] interface loopback 0
[P-LoopBack0] ipv6 address 3::3 128
[P-LoopBack0] ospfv3 1 area 0
[P-LoopBack0] quit
[P] interface ten-gigabitethernet 2/0/0
[P-Ten-GigabitEthernet2/0/0] ipv6 address 20::2 64
[P-Ten-GigabitEthernet2/0/0] ospfv3 1 area 0
[P-Ten-GigabitEthernet2/0/0] quit
[P] interface ten-gigabitethernet 2/0/1
[P-Ten-GigabitEthernet2/0/1] ipv6 address 30::1 64
[P-Ten-GigabitEthernet2/0/1] ospfv3 1 area 0
[P-Ten-GigabitEthernet2/0/1] quit
5. Configure CE 2.
<CE2> system-view
[CE2] interface ten-gigabitethernet 2/0/0
[CE2-Ten-GigabitEthernet2/0/0] ipv6 address 10::2 64
[CE2-Ten-GigabitEthernet2/0/0] quit
Verifying the configuration
# Verify that an SRv6 tunnel has been established between PE 1 and PE 2.
[PE1] display l2vpn peer srv6
Total number of SRv6 Tunnels: 1
1 up, 0 blocked, 0 down
VSI Name: vpna
Peer : 2::2
Flag : Main
State : Up
# Verify that the SRv6 forwarding information on PE 1 is correct.
[PE1] display l2vpn forwarding srv6
Total number of VSIs: 1
Total number of SRv6 tunnels: 1, 1 up, 0 blocked, 0 down
VSI Name : vpna
Link ID : 0x9000000 Type: BE State: Up
In SID : 100::1:0:1
Out SID : 200::1:0:0
# Verify that CE 1 and CE 2 can ping each other. (Details not shown.)
Example: Configuring EVPN VPLS over SRv6 multihoming (static link aggregation dual-homed)
Network configuration
As shown in Figure 5, CE 1 is dual-homed to PE 1 and PE 2 through static link aggregation. Configure EVPN VPLS over SRv6 for dual-homed site 1 and single-homed site 2 to communicate over the IPv6 backbone network through an SRv6 tunnel.
Device |
Interface |
IP address |
Device |
Interface |
IP address |
PE 1 |
Loop0 |
1::1/128 |
CE 1 |
RAGG1 |
100::1/64 |
|
XGE2/0/0 |
- |
CE 2 |
XGE2/0/0 |
100::2/64 |
|
XGE2/0/1 |
10::1/64 |
PE 3 |
Loop0 |
3::3/128 |
|
XGE2/0/2 |
20::1/64 |
|
XGE2/0/0 |
- |
PE 2 |
Loop0 |
2::2/128 |
|
XGE2/0/1 |
10::3/64 |
|
XGE2/0/0 |
- |
|
XGE2/0/2 |
30::3/64 |
|
XGE2/0/1 |
30::2/64 |
|
|
|
|
XGE2/0/2 |
20::2/64 |
|
|
|
Procedure
1. Configure CE 1:
# Create static Layer 3 aggregate interface 1 and assign it an IPv6 address.
<CE1> system-view
[CE1] interface route-aggregation 1
[CE1-Route-Aggregation1] ipv6 address 100::1 64
[CE1-Route-Aggregation1] quit
# Assign Ten-GigabitEthernet 2/0/0 and Ten-GigabitEthernet 2/0/1 to aggregation group 1.
[CE1] interface ten-gigabitethernet 2/0/0
[CE1-Ten-GigabitEthernet2/0/0] port link-aggregation group 1
[CE1-Ten-GigabitEthernet2/0/0] quit
[CE1] interface ten-gigabitethernet 2/0/1
[CE1-Ten-GigabitEthernet2/0/1] port link-aggregation group 1
[CE1-Ten-GigabitEthernet2/0/1] quit
2. Configure PE 1:
# Run OSPFv3 on PE 1.
<PE1> system-view
[PE1] ospfv3
[PE1-ospfv3-1] router-id 1.1.1.1
[PE1-ospfv3-1] segment-routing ipv6 locator aaa
[PE1-ospfv3-1] area 0
[PE1-ospfv3-1-area-0.0.0.0] quit
[PE1-ospfv3-1] quit
# Configure interface Loopback 0.
[PE1] interface loopback 0
[PE1-LoopBack0] ipv6 address 1::1 128
[PE1-LoopBack0] ospfv3 1 area 0
[PE1-LoopBack0] quit
# Enable L2VPN.
[PE1] l2vpn enable
# Configure Ten-GigabitEthernet 2/0/1, the interface connected to PE 3.
[PE1] interface ten-gigabitethernet 2/0/1
[PE1-Ten-GigabitEthernet2/0/1] ipv6 address 10::1/64
[PE1-Ten-GigabitEthernet2/0/1] ospfv3 1 area 0
[PE1-Ten-GigabitEthernet2/0/1] undo shutdown
[PE1-Ten-GigabitEthernet2/0/1] quit
# Configure Ten-GigabitEthernet 2/0/2, the interface connected to PE 2.
[PE1] interface ten-gigabitethernet 2/0/2
[PE1-Ten-GigabitEthernet2/0/2] ipv6 address 20::1/64
[PE1-Ten-GigabitEthernet2/0/2] ospfv3 1 area 0
[PE1-Ten-GigabitEthernet2/0/2] undo shutdown
[PE1-Ten-GigabitEthernet2/0/2] quit
# Configure PE 1 to establish IBGP neighbor relationships with PE 2 and PE 3, and enable BGP EVPN to advertise routes in SRv6 encapsulation to PE 2 and PE 3.
[PE1] bgp 100
[PE1-bgp-default] router-id 1.1.1.1
[PE1-bgp-default] peer 2::2 as-number 100
[PE1-bgp-default] peer 2::2 connect-interface loopback 0
[PE1-bgp-default] peer 3::3 as-number 100
[PE1-bgp-default] peer 3::3 connect-interface loopback 0
[PE1-bgp-default] address-family l2vpn evpn
[PE1-bgp-default-evpn] peer 2::2 enable
[PE1-bgp-default-evpn] peer 3::3 enable
[PE1-bgp-default-evpn] peer 2::2 advertise encap-type srv6
[PE1-bgp-default-evpn] peer 3::3 advertise encap-type srv6
[PE1-bgp-default-evpn] quit
[PE1-bgp-default] quit
# Create VSI vpna, create an EVPN instance for it, and enable SRv6 encapsulation. Configure an RD and route targets for the EVPN instance, enable SRv6 BE route recursion mode, and apply a locator to the EVPN instance.
[PE1] vsi vpna
[PE1-vsi-vpna] evpn encapsulation srv6
[PE1-vsi-vpna-evpn-srv6] route-distinguisher 1:1
[PE1-vsi-vpna-evpn-srv6] vpn-target 1:1 export-extcommunity
[PE1-vsi-vpna-evpn-srv6] vpn-target 1:1 import-extcommunity
[PE1-vsi-vpna-evpn-srv6] segment-routing ipv6 best-effort
[PE1-vsi-vpna-evpn-srv6] segment-routing ipv6 locator aaa
[PE1-vsi-vpna-evpn-srv6] quit
# Assign an ESI to site-facing interface Route-Aggregation 1, set the redundancy mode of the interface to all-active, and map the interface to VSI vpna.
[PE1] interface route-aggregation 1
[PE1-Route-Aggregation1] esi 1.1.1.1.1
[PE1-Route-Aggregation1] evpn redundancy-mode all-active
[PE1-Route-Aggregation1] xconnect vsi vpna
[PE1-Route-Aggregation1] quit
[PE1] interface ten-gigabitethernet 2/0/0
[PE1-Ten-GigabitEthernet2/0/0] port link-aggregation group 1
[PE1-Ten-GigabitEthernet2/0/0] quit
# Specify a source IP address for the outer IPv6 header of SRv6-encapsulated packets, and configure a locator to apply for End.DT2U SIDs and End.DT2M SIDs.
[PE1] segment-routing ipv6
[PE1-segment-routing-ipv6] encapsulation source-address 1::1
[PE1-segment-routing-ipv6] locator aaa ipv6-prefix 111:: 64 static 32
[PE1-segment-routing-ipv6-locator-aaa] quit
[PE1-segment-routing-ipv6] quit
3. Configure PE 2:
# Run OSPFv3 on PE 2.
<PE2> system-view
[PE2] ospfv3
[PE2-ospfv3-1] router-id 2.2.2.2
[PE2-ospfv3-1] segment-routing ipv6 locator aaa
[PE2-ospfv3-1] area 0.0.0.0
[PE2-ospfv3-1-area-0.0.0.0] quit
[PE2-ospfv3-1] quit
# Configure interface Loopback 0.
[PE2] interface loopback 0
[PE2-LoopBack0] ipv6 address 2::2 128
[PE2-LoopBack0] ospfv3 1 area 0
[PE2-LoopBack0] quit
# Enable L2VPN.
[PE2] l2vpn enable
# Configure Ten-GigabitEthernet 2/0/2, the interface connected to PE 1.
[PE2] interface ten-gigabitethernet 2/0/2
[PE2-Ten-GigabitEthernet2/0/2] ipv6 address 20::2 64
[PE2-Ten-GigabitEthernet2/0/2] ospfv3 1 area 0
[PE2-Ten-GigabitEthernet2/0/2] undo shutdown
[PE2-Ten-GigabitEthernet2/0/2] quit
# Configure Ten-GigabitEthernet 2/0/1, the interface connected to PE 3.
[PE2] interface ten-gigabitethernet 2/0/1
[PE2-Ten-GigabitEthernet2/0/1] ipv6 address 30::2 64
[PE2-Ten-GigabitEthernet2/0/1] ospfv3 1 area 0
[PE2-Ten-GigabitEthernet2/0/1] undo shutdown
[PE2-Ten-GigabitEthernet2/0/1] quit
# Configure PE 2 to establish IBGP neighbor relationships with PE 1 and PE 3, and enable BGP EVPN to advertise routes in SRv6 encapsulation to PE 1 and PE 3.
[PE2] bgp 100
[PE2-bgp-default] router-id 2.2.2.2
[PE2-bgp-default] peer 1::1 as-number 100
[PE2-bgp-default] peer 1::1 connect-interface loopback 0
[PE2-bgp-default] peer 3::3 as-number 100
[PE2-bgp-default] peer 3::3 connect-interface loopback 0
[PE2-bgp-default] address-family l2vpn evpn
[PE2-bgp-default-evpn] peer 1::1 enable
[PE2-bgp-default-evpn] peer 3::3 enable
[PE2-bgp-default-evpn] peer 1::1 advertise encap-type srv6
[PE2-bgp-default-evpn] peer 3::3 advertise encap-type srv6
[PE2-bgp-default-evpn] quit
[PE2-bgp-default] quit
# Create VSI vpna, create an EVPN instance for it, and enable SRv6 encapsulation. Configure an RD and route targets for the EVPN instance, enable SRv6 BE route recursion mode, and apply a locator to the EVPN instance.
[PE2] vsi vpna
[PE2-vsi-vpna] evpn encapsulation srv6
[PE2-vsi-vpna-evpn-srv6] route-distinguisher 1:1
[PE2-vsi-vpna-evpn-srv6] vpn-target 1:1 export-extcommunity
[PE2-vsi-vpna-evpn-srv6] vpn-target 1:1 import-extcommunity
[PE2-vsi-vpna-evpn-srv6] segment-routing ipv6 best-effort
[PE2-vsi-vpna-evpn-srv6] segment-routing ipv6 locator aaa
[PE2-vsi-vpna-evpn-srv6] quit
# Assign an ESI to site-facing interface Route-Aggregation 1, set the redundancy mode of the interface to all-active, and map the interface to VSI vpna.
[PE2] interface route-aggregation 1
[PE2-Route-Aggregation1] esi 1.1.1.1.1
[PE2-Route-Aggregation1] evpn redundancy-mode all-active
[PE2-Route-Aggregation1] xconnect vsi vpna
[PE2-Route-Aggregation1] quit
[PE2] interface ten-gigabitethernet 2/0/0
[PE2-Ten-GigabitEthernet2/0/0] port link-aggregation group 1
[PE2-Ten-GigabitEthernet2/0/0] quit
# Specify a source IP address for the outer IPv6 header of SRv6-encapsulated packets, and configure a locator to apply for End.DT2U SIDs and End.DT2M SIDs.
[PE2] segment-routing ipv6
[PE2-segment-routing-ipv6] encapsulation source-address 2::2
[PE2-segment-routing-ipv6] locator aaa ipv6-prefix 222:: 64 static 32
[PE2-segment-routing-ipv6-locator-aaa] quit
[PE2-segment-routing-ipv6] quit
4. Configure PE 3:
# Run OSPFv3 on PE 3.
<PE3> system-view
[PE3] ospfv3
[PE3-ospfv3-1] router-id 3.3.3.3
[PE3-ospfv3-1] segment-routing ipv6 locator aaa
[PE3-ospfv3-1] area 0
[PE3-ospfv3-1-area-0.0.0.0] quit
[PE3-ospfv3-1] quit
# Configure interface Loopback 0.
[PE3] interface loopback 0
[PE3-LoopBack0] ipv6 address 3::3 128
[PE3-LoopBack0] ospfv3 1 area 0
[PE3-LoopBack0] quit
# Enable L2VPN.
[PE3] l2vpn enable
# Configure Ten-GigabitEthernet 2/0/1, the interface connected to PE 1.
[PE3] interface ten-gigabitethernet 2/0/1
[PE3-Ten-GigabitEthernet2/0/1] ipv6 address 10::3 64
[PE3-Ten-GigabitEthernet2/0/1] ospfv3 1 area 0
[PE3-Ten-GigabitEthernet2/0/1] undo shutdown
[PE3-Ten-GigabitEthernet2/0/1] quit
# Configure Ten-GigabitEthernet 2/0/2, the interface connected to PE 2.
[PE3] interface ten-gigabitethernet 2/0/2
[PE3-Ten-GigabitEthernet2/0/2] ipv6 address 30::3 64
[PE3-Ten-GigabitEthernet2/0/2] ospfv3 1 area 0
[PE3-Ten-GigabitEthernet2/0/2] undo shutdown
[PE3-Ten-GigabitEthernet2/0/2] quit
# Configure PE 3 to establish IBGP neighbor relationships with PE 1 and PE 2, and enable BGP EVPN to advertise routes in SRv6 encapsulation to PE 1 and PE 2.
[PE3] bgp 100
[PE3-bgp-default] router-id 3.3.3.3
[PE3-bgp-default] peer 1::1 as-number 100
[PE3-bgp-default] peer 1::1 connect-interface loopback 0
[PE3-bgp-default] peer 2::2 as-number 100
[PE3-bgp-default] peer 2::2 connect-interface loopback 0
[PE3-bgp-default] address-family l2vpn evpn
[PE3-bgp-default-evpn] peer 1::1 enable
[PE3-bgp-default-evpn] peer 2::2 enable
[PE3-bgp-default-evpn] peer 1::1 advertise encap-type srv6
[PE3-bgp-default-evpn] peer 2::2 advertise encap-type srv6
[PE3-bgp-default-evpn] quit
[PE3-bgp-default] quit
# Create VSI vpna, create an EVPN instance for it, and enable SRv6 encapsulation. Configure an RD and route targets for the EVPN instance, enable SRv6 BE route recursion mode, and apply a locator to the EVPN instance.
[PE3] vsi vpna
[PE3-vsi-vpna] evpn encapsulation srv6
[PE3-vsi-vpna-evpn-srv6] route-distinguisher 1:1
[PE3-vsi-vpna-evpn-srv6] vpn-target 1:1 export-extcommunity
[PE3-vsi-vpna-evpn-srv6] vpn-target 1:1 import-extcommunity
[PE3-vsi-vpna-evpn-srv6] segment-routing ipv6 best-effort
[PE3-vsi-vpna-evpn-srv6] segment-routing ipv6 locator aaa
[PE3-vsi-vpna-evpn-srv6] quit
# Map Ten-GigabitEthernet 2/0/0 to the VSI.
[PE3] interface ten-gigabitethernet 2/0/0
[PE3-Ten-GigabitEthernet2/0/0] xconnect vsi vpna
[PE3-Ten-GigabitEthernet2/0/0] quit
# Specify a source IP address for the outer IPv6 header of SRv6-encapsulated packets, and configure a locator to apply for End.DT2U SIDs and End.DT2M SIDs.
[PE3] segment-routing ipv6
[PE3-segment-routing-ipv6] encapsulation source-address 3::3
[PE3-segment-routing-ipv6] locator aaa ipv6-prefix 333:: 64 static 32
[PE3-segment-routing-ipv6-locator-aaa] quit
[PE3-segment-routing-ipv6] quit
5. Configure CE 2.
<CE2> system-view
[CE2] interface ten-gigabitethernet 2/0/0
[CE2-Ten-GigabitEthernet2/0/0] ipv6 address 100::2 64
[CE2-Ten-GigabitEthernet2/0/0] quit
Verifying the configuration
# Verify that PE 3 has established SRv6 tunnels to PE 1 and PE 2. The SRv6 tunnels are ECMP tunnels that can load share traffic.
[PE3] display l2vpn peer srv6
Total number of SRv6 Tunnels: 2
2 up, 0 blocked, 0 down
VSI Name: vpna
Peer : 1::1
Flag : Main
State : Up
Peer : 2::2
Flag : Main
State : Up
# Verify that the SRv6 forwarding information on PE 3 is correct.
[PE3] display l2vpn forwarding srv6
Total number of VSIs: 1
Total number of SRv6 tunnels: 2, 2 up, 0 blocked, 0 down
VSI Name : vpna
Link ID : 0x9000000 Type: BE State: Up
In SID : 333::1:0:4
Out SID : 111::1:0:4
Link ID : 0x9000001 Type: BE State: Up
In SID : 333::1:0:4
Out SID : 222::1:0:3
# Verify that CE 1 and CE 2 can ping each other. (Details not shown.)
# Verify that CE 1 and CE 2 can ping each other when the PW on PE 1 or PE 2 fails. (Details not shown.)
Example: Configuring EVPN VPLS over SRv6 multihoming (S-Trunk dual-homed)
Network configuration
As shown in Figure 6, CE 1 is dual-homed to PE 1 and PE 2 through S-Trunk. Configure EVPN VPLS over SRv6 for dual-homed site 1 and single-homed site 2 to communicate over the IPv6 backbone network through an SRv6 tunnel.
Device |
Interface |
IP address |
Device |
Interface |
IP address |
PE 1 |
Loop0 |
1::1/128 |
PE 2 |
Loop0 |
2::2/128 |
|
XGE2/0/0 |
N/A |
|
XGE2/0/0 |
N/A |
|
XGE2/0/1 |
10::1/64 |
|
XGE2/0/1 |
30::2/64 |
|
XGE2/0/2 |
20::1/64 |
|
XGE2/0/2 |
20::2/64 |
|
XGE2/0/2 |
10.1.2.1/24 |
|
XGE2/0/2 |
10.1.2.2/24 |
PE 3 |
Loop0 |
3::3/128 |
CE 1 |
RAGG1 |
100::1/64 |
|
XGE2/0/0 |
N/A |
CE 2 |
XGE2/0/0 |
100::2/64 |
|
XGE2/0/1 |
10::3/64 |
|
|
|
|
XGE2/0/2 |
30::3/64 |
|
|
|
Procedure
1. Configure CE 1:
# Create static Layer 3 aggregate interface 1 and assign it an IPv6 address and prefix.
<CE1> system-view
[CE1] interface route-aggregation 1
[CE1-Route-Aggregation1] ipv6 address 100::1 64
[CE1-Route-Aggregation1] quit
# Assign Ten-GigabitEthernet 2/0/0 and Ten-GigabitEthernet 2/0/1 to aggregation group 1.
[CE1] interface ten-gigabitethernet 2/0/0
[CE1-Ten-GigabitEthernet2/0/0] port link-aggregation group 1
[CE1-Ten-GigabitEthernet2/0/0] quit
[CE1] interface ten-gigabitethernet 2/0/1
[CE1-Ten-GigabitEthernet2/0/1] port link-aggregation group 1
[CE1-Ten-GigabitEthernet2/0/1] quit
2. Configure PE 1:
# Run OSPFv3 on PE 1.
<PE1> system-view
[PE1] ospfv3
[PE1-ospfv3-1] router-id 1.1.1.1
[PE1-ospfv3-1] segment-routing ipv6 locator aaa
[PE1-ospfv3-1] area 0
[PE1-ospfv3-1-area-0.0.0.0] quit
[PE1-ospfv3-1] quit
# Configure interface Loopback 0.
[PE1] interface loopback 0
[PE1-LoopBack0] ipv6 address 1::1 128
[PE1-LoopBack0] ospfv3 1 area 0
[PE1-LoopBack0] quit
# Enable L2VPN.
[PE1] l2vpn enable
# Configure Ten-GigabitEthernet 2/0/1, the interface connected to PE 3.
[PE1] interface ten-gigabitethernet 2/0/1
[PE1-Ten-GigabitEthernet2/0/1] ipv6 address 10::1/64
[PE1-Ten-GigabitEthernet2/0/1] ospfv3 1 area 0
[PE1-Ten-GigabitEthernet2/0/1] undo shutdown
[PE1-Ten-GigabitEthernet2/0/1] quit
# Configure Ten-GigabitEthernet 2/0/2, the interface connected to PE 2.
[PE1] interface ten-gigabitethernet 2/0/2
[PE1-Ten-GigabitEthernet2/0/2] ipv6 address 20::1/64
[PE1-Ten-GigabitEthernet2/0/2] ip address 10.1.2.1 24
[PE1-Ten-GigabitEthernet2/0/2] ospfv3 1 area 0
[PE1-Ten-GigabitEthernet2/0/2] undo shutdown
[PE1-Ten-GigabitEthernet2/0/2] quit
# Configure PE 1 to establish IBGP neighbor relationships with PE 2 and PE 3, and enable BGP EVPN to advertise routes in SRv6 encapsulation to PE 2 and PE 3.
[PE1] bgp 100
[PE1-bgp-default] router-id 1.1.1.1
[PE1-bgp-default] peer 2::2 as-number 100
[PE1-bgp-default] peer 2::2 connect-interface loopback 0
[PE1-bgp-default] peer 3::3 as-number 100
[PE1-bgp-default] peer 3::3 connect-interface loopback 0
[PE1-bgp-default] address-family l2vpn evpn
[PE1-bgp-default-evpn] peer 2::2 enable
[PE1-bgp-default-evpn] peer 3::3 enable
[PE1-bgp-default-evpn] peer 2::2 advertise encap-type srv6
[PE1-bgp-default-evpn] peer 3::3 advertise encap-type srv6
[PE1-bgp-default-evpn] quit
[PE1-bgp-default] quit
# Create VSI vpna, create an EVPN instance for it, and enable SRv6 encapsulation. Configure an RD and route targets for the EVPN instance, enable the SID-route-recursion feature, and apply a locator to the EVPN instance.
[PE1] vsi vpna
[PE1-vsi-vpna] evpn encapsulation srv6
[PE1-vsi-vpna-evpn-srv6] route-distinguisher 1:1
[PE1-vsi-vpna-evpn-srv6] vpn-target 1:1 export-extcommunity
[PE1-vsi-vpna-evpn-srv6] vpn-target 1:1 import-extcommunity
[PE1-vsi-vpna-evpn-srv6] segment-routing ipv6 best-effort
[PE1-vsi-vpna-evpn-srv6] segment-routing ipv6 locator aaa
[PE1-vsi-vpna-evpn-srv6] quit
# Configure S-Trunk for CE 1 to be dual-homed to PE 1 and PE 2.
[PE1] lacp system-priority 10
[PE1] lacp system-mac 1-1-1
[PE1] lacp system-number 1
[PE1] s-trunk id 1
[PE1-s-trunk1] s-trunk ip destination 10.1.2.2 source 10.1.2.1
[PE1-s-trunk1] quit
[PE1] interface route-aggregation 1
[PE1-Route-Aggregation1] s-trunk 1
[PE1-Route-Aggregation1] s-trunk port-role primary
[PE1-Route-Aggregation1] quit
[PE1] interface ten-gigabitethernet 2/0/0
[PE1-Ten-GigabitEthernet2/0/0] port link-aggregation group 1
[PE1-Ten-GigabitEthernet2/0/0] quit
# Assign an ESI to site-facing interface Route-Aggregation 1, set the redundancy mode of the interface to all-active, and map the interface to VSI vpna.
[PE1] interface route-aggregation 1
[PE1-Route-Aggregation1] esi 1.1.1.1.1
[PE1-Route-Aggregation1] evpn redundancy-mode all-active
[PE1-Route-Aggregation1] xconnect vsi vpna
[PE1-Route-Aggregation1] quit
# Specify a source IP address for the outer IPv6 header of SRv6-encapsulated packets, and configure a locator to apply for End.DT2U SIDs and End.DT2M SIDs.
[PE1] segment-routing ipv6
[PE1-segment-routing-ipv6] encapsulation source-address 1::1
[PE1-segment-routing-ipv6] locator aaa ipv6-prefix 111:: 64 static 32
[PE1-segment-routing-ipv6-locator-aaa] quit
[PE1-segment-routing-ipv6] quit
3. Configure PE 2:
# Run OSPFv3 on PE 2.
<PE2> system-view
[PE2] ospfv3
[PE2-ospfv3-1] router-id 2.2.2.2
[PE2-ospfv3-1] segment-routing ipv6 locator aaa
[PE2-ospfv3-1] area 0.0.0.0
[PE2-ospfv3-1-area-0.0.0.0] quit
[PE2-ospfv3-1] quit
# Configure interface Loopback 0.
[PE2] interface loopback 0
[PE2-LoopBack0] ipv6 address 2::2 128
[PE2-LoopBack0] ospfv3 1 area 0
[PE2-LoopBack0] quit
# Enable L2VPN.
[PE2] l2vpn enable
# Configure Ten-GigabitEthernet 2/0/2, the interface connected to PE 1.
[PE2] interface ten-gigabitethernet 2/0/2
[PE2-Ten-GigabitEthernet2/0/2] ipv6 address 20::2 64
[PE2-Ten-GigabitEthernet2/0/2] ip address 10.1.2.2 24
[PE2-Ten-GigabitEthernet2/0/2] ospfv3 1 area 0
[PE2-Ten-GigabitEthernet2/0/2] undo shutdown
[PE2-Ten-GigabitEthernet2/0/2] quit
# Configure Ten-GigabitEthernet 2/0/1, the interface connected to PE 3.
[PE2] interface ten-gigabitethernet 2/0/1
[PE2-Ten-GigabitEthernet2/0/1] ipv6 address 30::2 64
[PE2-Ten-GigabitEthernet2/0/1] ospfv3 1 area 0
[PE2-Ten-GigabitEthernet2/0/1] undo shutdown
[PE2-Ten-GigabitEthernet2/0/1] quit
# Configure PE 2 to establish IBGP neighbor relationships with PE 1 and PE 3, and enable BGP EVPN to advertise routes in SRv6 encapsulation to PE 1 and PE 3.
[PE2] bgp 100
[PE2-bgp-default] router-id 2.2.2.2
[PE2-bgp-default] peer 1::1 as-number 100
[PE2-bgp-default] peer 1::1 connect-interface loopback 0
[PE2-bgp-default] peer 3::3 as-number 100
[PE2-bgp-default] peer 3::3 connect-interface loopback 0
[PE2-bgp-default] address-family l2vpn evpn
[PE2-bgp-default-evpn] peer 1::1 enable
[PE2-bgp-default-evpn] peer 3::3 enable
[PE2-bgp-default-evpn] peer 1::1 advertise encap-type srv6
[PE2-bgp-default-evpn] peer 3::3 advertise encap-type srv6
[PE2-bgp-default-evpn] quit
[PE2-bgp-default] quit
# Create VSI vpna, create an EVPN instance for it, and enable SRv6 encapsulation. Configure an RD and route targets for the EVPN instance, enable the SID-route-recursion feature, and apply a locator to the EVPN instance.
[PE2] vsi vpna
[PE2-vsi-vpna] evpn encapsulation srv6
[PE2-vsi-vpna-evpn-srv6] route-distinguisher 1:1
[PE2-vsi-vpna-evpn-srv6] vpn-target 1:1 export-extcommunity
[PE2-vsi-vpna-evpn-srv6] vpn-target 1:1 import-extcommunity
[PE2-vsi-vpna-evpn-srv6] segment-routing ipv6 best-effort
[PE2-vsi-vpna-evpn-srv6] segment-routing ipv6 locator aaa
[PE2-vsi-vpna-evpn-srv6] quit
# Configure S-Trunk for CE 1 to be dual-homed to PE 1 and PE 2.
[PE2] lacp system-priority 10
[PE2] lacp system-mac 1-1-1
[PE2] lacp system-number 2
[PE2] s-trunk id 1
[PE2-s-trunk1] s-trunk ip destination 10.1.2.1 source 10.1.2.2
[PE2-s-trunk1] quit
[PE2] interface route-aggregation 1
[PE2-Route-Aggregation1] s-trunk 1
[PE2-Route-Aggregation1] s-trunk port-role primary
[PE2-Route-Aggregation1] quit
[PE2] interface ten-gigabitethernet 2/0/0
[PE2-Ten-GigabitEthernet2/0/0] port link-aggregation group 1
[PE2-Ten-GigabitEthernet2/0/0] quit
# Assign an ESI to site-facing interface Route-Aggregation 1, set the redundancy mode of the interface to all-active, and map the interface to VSI vpna.
[PE2] interface route-aggregation 1
[PE2-Route-Aggregation1] esi 1.1.1.1.1
[PE2-Route-Aggregation1] evpn redundancy-mode all-active
[PE2-Route-Aggregation1] xconnect vsi vpna
[PE2-Route-Aggregation1] quit
# Specify a source IP address for the outer IPv6 header of SRv6-encapsulated packets, and configure a locator to apply for End.DT2U SIDs and End.DT2M SIDs.
[PE2] segment-routing ipv6
[PE2-segment-routing-ipv6] encapsulation source-address 2::2
[PE2-segment-routing-ipv6] locator aaa ipv6-prefix 222:: 64 static 32
[PE2-segment-routing-ipv6-locator-aaa] quit
[PE2-segment-routing-ipv6] quit
4. Configure PE 3:
# Run OSPFv3 on PE 3.
<PE3> system-view
[PE3] ospfv3
[PE3-ospfv3-1] router-id 3.3.3.3
[PE3-ospfv3-1] segment-routing ipv6 locator aaa
[PE3-ospfv3-1] area 0
[PE3-ospfv3-1-area-0.0.0.0] quit
[PE3-ospfv3-1] quit
# Configure interface Loopback 0.
[PE3] interface loopback 0
[PE3-LoopBack0] ipv6 address 3::3 128
[PE3-LoopBack0] ospfv3 1 area 0
[PE3-LoopBack0] quit
# Enable L2VPN.
[PE3] l2vpn enable
# Configure Ten-GigabitEthernet 2/0/1, the interface connected to PE 1.
[PE3] interface ten-gigabitethernet 2/0/1
[PE3-Ten-GigabitEthernet2/0/1] ipv6 address 10::3 64
[PE3-Ten-GigabitEthernet2/0/1] ospfv3 1 area 0
[PE3-Ten-GigabitEthernet2/0/1] undo shutdown
[PE3-Ten-GigabitEthernet2/0/1] quit
# Configure Ten-GigabitEthernet 2/0/2, the interface connected to PE 2.
[PE3] interface ten-gigabitethernet 2/0/2
[PE3-Ten-GigabitEthernet2/0/2] ipv6 address 30::3 64
[PE3-Ten-GigabitEthernet2/0/2] ospfv3 1 area 0
[PE3-Ten-GigabitEthernet2/0/2] undo shutdown
[PE3-Ten-GigabitEthernet2/0/2] quit
# Configure PE 3 to establish IBGP neighbor relationships with PE 1 and PE 2, and enable BGP EVPN to advertise routes in SRv6 encapsulation to PE 1 and PE 2.
[PE3] bgp 100
[PE3-bgp-default] router-id 3.3.3.3
[PE3-bgp-default] peer 1::1 as-number 100
[PE3-bgp-default] peer 1::1 connect-interface loopback 0
[PE3-bgp-default] peer 2::2 as-number 100
[PE3-bgp-default] peer 2::2 connect-interface loopback 0
[PE3-bgp-default] address-family l2vpn evpn
[PE3-bgp-default-evpn] peer 1::1 enable
[PE3-bgp-default-evpn] peer 2::2 enable
[PE3-bgp-default-evpn] peer 1::1 advertise encap-type srv6
[PE3-bgp-default-evpn] peer 2::2 advertise encap-type srv6
[PE3-bgp-default-evpn] quit
[PE3-bgp-default] quit
# Create VSI vpna, create an EVPN instance for it, and enable SRv6 encapsulation. Configure an RD and route targets for the EVPN instance, enable the SID-route-recursion feature, and apply a locator to the EVPN instance.
[PE3] vsi vpna
[PE3-vsi-vpna] evpn encapsulation srv6
[PE3-vsi-vpna-evpn-srv6] route-distinguisher 1:1
[PE3-vsi-vpna-evpn-srv6] vpn-target 1:1 export-extcommunity
[PE3-vsi-vpna-evpn-srv6] vpn-target 1:1 import-extcommunity
[PE3-vsi-vpna-evpn-srv6] segment-routing ipv6 best-effort
[PE3-vsi-vpna-evpn-srv6] segment-routing ipv6 locator aaa
[PE3-vsi-vpna-evpn-srv6] quit
# Map Ten-GigabitEthernet 2/0/0 to the VSI.
[PE3] interface ten-gigabitethernet 2/0/0
[PE3-Ten-GigabitEthernet2/0/0] xconnect vsi vpna
[PE3-Ten-GigabitEthernet2/0/0] quit
# Specify a source IP address for the outer IPv6 header of SRv6-encapsulated packets, and configure a locator to apply for End.DT2U SIDs and End.DT2M SIDs.
[PE3] segment-routing ipv6
[PE3-segment-routing-ipv6] encapsulation source-address 3::3
[PE3-segment-routing-ipv6] locator aaa ipv6-prefix 333:: 64 static 32
[PE3-segment-routing-ipv6-locator-aaa] quit
[PE3-segment-routing-ipv6] quit
5. Configure CE 2.
<CE2> system-view
[CE2] interface ten-gigabitethernet 2/0/0
[CE2-Ten-GigabitEthernet2/0/0] ipv6 address 100::2 64
[CE2-Ten-GigabitEthernet2/0/0] quit
Verifying the configuration
# Verify that PE 3 has established SRv6 tunnels to PE 1 and PE 2. The SRv6 tunnels are ECMP tunnels that can load share traffic.
[PE3] display l2vpn peer srv6
Total number of SRv6 Tunnels: 2
2 up, 0 blocked, 0 down
VSI Name: vpna
Peer : 1::1
Flag : Main
State : Up
Peer : 2::2
Flag : Main
State : Up
# Verify that the SRv6 forwarding information on PE 3 is correct.
[PE3] display l2vpn forwarding srv6
Total number of VSIs: 1
Total number of SRv6 tunnels: 2, 2 up, 0 blocked, 0 down
VSI Name : vpna
Link ID : 0x9000000 Type: BE State: Up
In SID : 333::1:0:4
Out SID : 111::1:0:4
Link ID : 0x9000001 Type: BE State: Up
In SID : 333::1:0:4
Out SID : 222::1:0:3
# Verify that CE 1 and CE 2 can ping each other. (Details not shown.)
# Verify that CE 1 and CE 2 can ping each other when the PW on PE 1 or PE 2 fails. (Details not shown.)