- Table of Contents
-
- 10-Segment Routing Configuration Guide
- 00-Preface
- 01-SR-MPLS configuration
- 02-SR-MPLS TE policy configuration
- 03-SRv6 configuration
- 04-SRv6 TE policy configuration
- 05-SRv6 VPN overview
- 06-IP L3VPN over SRv6 configuration
- 07-EVPN L3VPN over SRv6 configuration
- 08-Public network IP over SRv6 configuration
- 09-SRv6 OAM configuration
- 10-EVPN VPLS over SRv6 configuration
- 11-EVPN VPWS over SRv6 configuration
- Related Documents
-
Title | Size | Download |
---|---|---|
11-EVPN VPWS over SRv6 configuration | 395.82 KB |
Configuring EVPN VPWS over SRv6
EVPN VPWS over SRv6 multihoming
EVPN VPWS over SRv6 tasks at a glance
Configuring a cross-connect group and its EVPN instance
Applying a locator to a cross-connect
Configuring the route recursion mode
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 an AC to a cross-connect
Mapping an Ethernet service instance to a cross-connect
Configuring PEs to exchange BGP EVPN routes
Specifying a source address for the outer IPv6 header of SRv6-encapsulated EVPN VPWS packets
Configuring EVPN VPWS over SRv6 multihoming
Restrictions and guidelines for EVPN VPWS over SRv6 multihoming
Assigning an ESI to an interface
Setting the redundancy mode on an interface
Enabling cross-connects to ignore the state of ACs
Configuring FRR for EVPN VPWS over SRv6
Test 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
Verifying and maintaining EVPN VPWS over SRv6
Displaying BGP EVPN route information
Displaying EVPN VPWS over SRv6 running status
Displaying EVPN VPLS over SRv6 forwarding information
EVPN VPWS over SRv6 configuration examples
Example: Setting up an SRv6 tunnel between single-homed EVPN VPWS sites
Example: Configuring EVPN VPWS over SRv6 multihoming (static link aggregation dual-homed)
Example: Configuring EVPN VPWS over SRv6 multihoming (S-Trunk dual-homed)
Configuring EVPN VPWS over SRv6
About EVPN VPWS over SRv6
EVPN VPWS over SRv6 uses SRv6 tunnels to carry EVPN VPWS services. This technology establishes point-to-point connections between customer sites over the IPv6 backbone network and transparently forwards Layer 2 customer traffic over the IPv6 backbone network. For more information about EVPN VPWS configuration, see EVPN Configuration Guide.
Basic principle
As shown in Figure 1, PEs set up an SRv6 tunnel by advertising End.DX2 SIDs and End.DX2L 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 VPWS over SRv6 network diagram
BGP EVPN route advertisement
A pair of PEs use BGP EVPN routes to establish PWs as follows:
1. A PE adds the local service ID and End.DX2 SID of a local cross-connect to Ethernet auto-discovery routes and advertises the routes to the remote PE.
2. After receiving the routes, the remote PE checks the service ID carried in the routes. If the service ID is the same as the remote service ID configured locally for a cross-connect, the PE establishes an SRv6 tunnel to the other PE. The SID flag of the SRv6 tunnel is the End.DX2 SID in the routes.
The two PEs both advertise End.DX2 SIDs to each other and establish two SRv6 tunnels at two directions. The two SRv6 tunnels form a PW to carry Layer 2 customer traffic. The PW is called an SRv6 PW.
Traffic forwarding
EVPN VPWS 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.DX2 SID encapsulated in the packet. A layer 2 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 for the SRv6 PW (SRv6 tunnel) associated with the AC and finds the End.DX2 SID to reach PE 2.
3. PE 1 encapsulates the outer IPv6 header and SRH header for the packet. The 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 VPWS packets.
4. PE 1 searches the IPv6 routing table based on the 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.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.DX2 SID and performs the following operations:
a. Removes the outer IPv6 header.
b. Matches the packet to an AC based on the End.DX2 SID.
c. Forwards the packet to CE 2 through the AC.
SRv6 TE mode
This mode is also called SRv6 TE policy-based forwarding mode. In this mode, when a 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.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 packet. If no SRv6 TE policy is available for the packet, the PE forwards the packet in SRv6 BE mode.
EVPN VPWS over SRv6 multihoming
About EVPN VPWS over SRv6 multihoming
As shown in Figure 2, EVPN VPWS 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 VPWS over SRv6 supports only dualhoming.
Figure 2 EVPN VPWS over SRv6 multihoming
Redundancy mode
The device supports single-active redundancy mode and all-active redundancy mode of EVPN VPWS over SRv6 multihoming.
· All-active mode—This mode allows all redundant PWs to a multihomed site to load share traffic.
· Single-active mode—This mode allows one of the redundant PWs to forward traffic. When the main PW becomes unavailable because of device failure or link failure, traffic is switched to the secondary PW for forwarding. A designated forwarder (DF) is elected from the redundant PEs to determine the main PW. For more information about DF election, see EVPN VPWS configuration in EVPN Configuration Guide.
Route advertisement
The redundant PEs at a multihomed site both advertise End.DX2 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.
EVPN VPWS over SRv6 FRR
About FRR
EVPN VPWS over SRv6 Fast reroute (FRR) helps reduce the traffic loss caused by AC or PW failure on an EVPN VPWS over SRv6 network. FRR includes local FRR and remote FRR.
Local FRR
Local FRR enables two PEs at a multihomed EVPN VPWS over SRv6 network site to set up a bypass SRv6 PW between them.
As shown in Figure 3, CE 2 is dualhomed to PE 2 and PE 3. When the AC on PE 2 fails, PE 2 advertises the local unreachable event to PE 1 and PE 3 for PE 1 to switch traffic to the PW to PE 3. In this situation, PE 3 drops the packets that PE 1 sends before it is notified of the local unreachable event. To resolve this issue, enable local FRR on PE 2 and PE 3. When receiving packets from PE 1 after PE 2's AC fails, PE 2 forwards the packets to PE 3 over the bypass SRv6 PW to prevent traffic loss.
A loop might exist if PE 2 and PE 3 establish a bypass SRv6 PW between them through End.DX2 SIDs. When the AC on PE 2 or PE 3 fails, PE 2 or PE 3 forwards the packets received from its peer back to its peer through the bypass SRv6 PW. To resolve this issue, use End.DX2L SIDs to establish a bypass SRv6 PW between PE 2 and PE 3. The packets from a bypass SRv6 PW carry an End.DX2L SID. A PE does not forward the packets back to the bypass SRv6 PW.
PEs preferentially use End.DX2L SIDs to establish a bypass SRv6 PW. If no End.DX2L SIDs are available, the PEs use End.DX2 SIDs to establish a bypass SRv6 PW.
Remote FRR
Remote FRR enables two PEs on an EVPN VPWS over SRv6 network to set up a primary SRv6 PW and a backup SRv6 PW between them to ensure high availability. This feature is applicable to both multihoming and singlehoming scenarios.
As shown in Figure 4, PE 1 is connected to PE 2 and PE 3. For high availability, you can enable remote FRR on PE 1 for it to set up PWs to both PE 2 and PE 3. PE 1 uses the primary SRv6 PW to forward traffic as long as it is available. When the primary SRv6 PW fails, PE 1 switches traffic destined for CE 2 to the backup SRv6 PW. When PE 3 receives the traffic from the backup SRv6 PW, it forwards the traffic to CE 2. When CE 2 receives the traffic, it updates the MAC address table and switches the traffic destined for CE 1 to the link connected to PE 3. The switchover reduces packet loss.
EVPN VPWS over SRv6 tasks at a glance
To configure EVPN VPWS over SRv6, perform the following tasks:
2. Configuring a cross-connect group and its EVPN instance
4. Applying a locator to a cross-connect
5. 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.
6. Mapping an AC to a cross-connect
7. Configuring PEs to exchange BGP EVPN routes
8. Specifying a source address for the outer IPv6 header of SRv6-encapsulated EVPN VPWS packets
9. (Optional.) Configuring EVPN VPWS over SRv6 multihoming
10. (Optional.) Configuring FRR for EVPN VPWS over SRv6
11. (Optional.) Maintaining the EVPN VPWS over SRv6 network
¡ Test the connectivity of an SRv6 PW
Enabling L2VPN
1. Enter system view.
system-view
2. Enable L2VPN.
l2vpn enable
By default, L2VPN is disabled.
For more information about this command, see MPLS L2VPN commands in MPLS Command Reference.
Configuring a cross-connect group and its EVPN instance
1. Enter system view.
system-view
2. Create a cross-connect group and enter its view.
xconnect-group group-name
For more information about this command, see MPLS L2VPN commands in MPLS Command Reference.
3. (Optional.) Configure a description for the cross-connect group.
description text
By default, no description is configured for a cross-connect group.
For more information about this command, see MPLS L2VPN commands in MPLS Command Reference.
4. (Optional.) Bring p the cross-connect group.
undo shutdown
By default, a cross-connect group is not administratively down.
For more information about this command, see MPLS L2VPN commands in MPLS Command Reference.
5. Create an EVPN instance for the cross-connect group and enter its view.
evpn encapsulation srv6
6. Configure an RD for the EVPN instance.
route-distinguisher route-distinguisher
By default, no RD is configured for the EVPN instance of a cross-connect group.
For more information about this command, see EVPN commands in EVPN Command Reference.
7. Configure route targets for the EVPN instance.
vpn-target { vpn-target&<1-8> } [ both | export-extcommunity | import-extcommunity ]
By default, no route targets are configured for the EVPN instance of a cross-connect group.
For more information about this command, see EVPN commands in EVPN Command Reference.
Parameter |
Description |
export-extcommunity |
Do not specify the same export targets for the EVPN instances of different cross-connect groups. Do not specify the same export targets for the EVPN instances of a cross-connect group and a VSI. As a best practice, the export targets of the EVPN instance of a cross-connect group do not match the import targets configured in VPN instance view, VPN instance EVPN view, public instance view, public instance EVPN view, or VSI EVPN instance view. |
import-extcommunity |
As a best practice, the import targets of the EVPN instance of a cross-connect group do not match the export targets configured in VPN instance view, VPN instance EVPN view, public instance view, public instance EVPN view, or VSI EVPN instance view. |
8. Return to cross-connect group view.
quit
9. Create a cross-connect and enter its view.
connection connection-name
For more information about this command, see MPLS L2VPN commands in MPLS Command Reference.
Configuring SRv6 SIDs
Restrictions and guidelines
For more information about the commands in this task, see SRv6 commands in Segment Routing Command Reference.
Procedure
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 an opcode for End.DX2 SIDs.
opcode { opcode | hex hex-opcode } end-dx2 xconnect-group group-name connection connection-name
5. (Optional.) Configure an opcode for End.DX2L SIDs.
opcode { opcode | hex hex-opcode } end-dx2l xconnect-group group-name connection connection-name
This command applies only to bypass PW networks.
Applying a locator to a cross-connect
About this task
Perform this task to apply a locator to a cross-connect for the cross-connect to apply for End.DX2 and End.DX2L SIDs from the locator.
Procedure
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 encapsulation type is not configured.
c. Return to system view.
quit
3. Enter cross-connect group view.
xconnect-group group-name
4. Enter cross-connect view.
connection connection-name
5. Apply a locator to the cross-connect.
segment-routing ipv6 locator locator-name [ dx2l-locator dx2l-locator-name ] [ auto-sid-disable ]
By default, no locator is applied to a cross-connect.
6. Create an SRv6 PW and enter SRv6 PW view.
evpn local-service-id local-service-id remote-service-id remote-service-id [ tunnel-policy tunnel-policy-name ] [ pw-class class-name ]
For more information about this command, see EVPN commands in EVPN Command Reference.
Configuring the route recursion mode
About this task
After a PE receives a customer packet destined for an End.DX2 SID or End.DX2L SID, it forwards the packet according to the route recursion mode.
· SRv6 BE mode—This mode is also called SID-based forwarding mode. In this mode, the PE first encapsulates the End.DX2 SID or End.DX2L SID into the packet. Then, the PE searches the IPv6 routing table based on the End.DX2 SID or End.DX2L SID encapsulated in the packet to forward the packet.
· SRv6 TE mode—This mode is also called SRv6 TE policy-based forwarding mode. In this mode, the PE 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 End.DX2 SID 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
To use the SRv6 TE mode or the SRv6 TE and SRv6 BE hybrid mode, you must configure a tunnel policy and SRv6 TE policy. For more information, see tunnel policy configuration in MPLS Configuration Guide and "Configuring SRv6 TE policies."
Procedure
1. Enter system view.
system-view
2. Enter cross-connect group view.
xconnect-group group-name
3. Enter cross-connect group EVPN instance view.
evpn encapsulation srv6
4. Configure the route recursion mode.
segment-routing ipv6 { best-effort | traffic-engineering | traffic-engineering best-effort }
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.
Color-based traffic steering takes precedence over tunnel policy-based traffic steering.
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.
Prerequisites
To use routing policy-based traffic steering, add the color extended community to BGP EVPN routes by using routing policy or other methods. For information about the routing policy configuration, see Layer 3—IP Routing Configuration Guide.
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 cross-connect group view.
xconnect-group group-name
6. Enter EVPN instance view of the cross-connect group.
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 receives routes with the Route Target value identical to the local Import Target value.
For more information about this command, see EVPN commands in EVPN Command Reference.
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.
For more information about this command, see EVPN commands in EVPN Command Reference.
Configuring the default color for BGP EVPN routes
1. Enter system view.
system-view
2. Enter cross-connect group view.
xconnect-group group-name
3. Enter EVPN instance view of the cross-connect group.
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. In this way, the SRv6 TE policy will be used as the public tunnel to carry the SRv6 PW that forwards 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 }
By default, no preferred tunnel is specified for a tunnel policy.
¡ Configuring SRv6 TE policy load sharing for the tunnel policy.
select-seq srv6-policy 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 a PW
1. Enter system view.
system-view
2. Enter cross-connect group view.
xconnect-group group-name
3. Enter cross-connect view.
connection connection-name
4. Create an SRv6 PW and specify a tunnel policy for this PW.
evpn local-service-id local-service-id remote-service-id remote-service-id tunnel-policy tunnel-policy-name
Mapping an AC to a cross-connect
Mapping an Ethernet service instance to a cross-connect
1. Enter system view.
system-view
2. Enter cross-connect group view.
xconnect-group group-name
3. Enter cross-connect view.
connection connection-name
4. Map an Ethernet service instance to the cross-connect.
ac interface interface-type interface-number service-instance instance-id [ access-mode { ethernet | vlan } ] [ track track-entry-number&<1-3> ]
By default, no Ethernet service instance is mapped to a cross-connect.
For more information about this command, see MPLS L2VPN commands in MPLS Command Reference.
Configuring PEs to exchange BGP EVPN routes
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
For more information about this command, see BGP commands in Layer 3—IP Routing Command Reference.
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.
For more information about this command, see BGP commands in Layer 3—IP Routing Command Reference.
5. Enter BGP EVPN address family view.
address-family l2vpn evpn
For more information about this command, see EVPN commands in EVPN Command Reference.
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.
For more information about this command, see BGP commands in Layer 3—IP Routing Command Reference.
7. Enable BGP to advertise SRv6-encapsulated BGP 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 BGP EVPN routes to a peer or peer group.
Specifying a source address for the outer IPv6 header of SRv6-encapsulated EVPN VPWS packets
Restrictions and guidelines
To ensure correct traffic forwarding in an EVPN VPWS over SRv6 network, you must specify a source address for the outer IPv6 header of SRv6-encapsulated EVPN VPWS 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 VPWS packets.
encapsulation source-address ipv6-address [ ip-ttl ttl-value ]
By default, no source address is specified for the outer IPv6 header of SRv6-encapsulated EVPN VPWS packets.
Configuring EVPN VPWS over SRv6 multihoming
Restrictions and guidelines for EVPN VPWS over SRv6 multihoming
You must configure the same local and remote service IDs on the redundant PEs at a multihomed site.
As a best practice, set the same redundancy mode on the interfaces that act as ACs or are configured with ACs on the redundant PEs at a multihomed site.
You can assign ESIs to a main interface and its subinterfaces.
· If you assign an ESI to a subinterface, the subinterface-specific ESI and redundancy mode take precedence over those configured on the main interface.
· If you do not assign an ESI to a subinterface, it inherits the ESI and redundancy mode of the main interface. In this scenario, the redundancy mode on the subinterface does not take effect.
Assigning an ESI to an interface
About this task
An ESI uniquely identifies an ES. The links on interfaces with the same ESI belong to the same ES. Traffic of the ES can be distributed among the links for load sharing.
Procedure
1. Enter system view.
system-view
2. Enter interface view.
¡ Enter Layer 2 Ethernet interface view.
interface interface-type interface-number
¡ Enter Layer 2 aggregate interface view.
interface bridge-aggregation interface-number
¡ Enter Layer 3 Ethernet interface view.
interface interface-type interface-number
¡ Enter Layer 3 aggregate interface view.
interface route-aggregation 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 commands in EVPN Command Reference.
Setting the redundancy mode on an interface
About this task
EVPN VPWS over SRv6 multihoming provides the single-active redundancy mode and all-active redundancy mode.
The redundant PEs at a dualhomed site each establish a 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.
Procedure
1. Enter system view.
system-view
2. Enter interface view.
¡ Enter Layer 2 Ethernet interface view.
interface interface-type interface-number
¡ Enter Layer 2 aggregate interface view.
interface bridge-aggregation interface-number
¡ Enter Layer 3 Ethernet interface view.
interface interface-type interface-number
¡ Enter Layer 3 aggregate interface view.
interface route-aggregation 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 commands in EVPN Command Reference.
Enabling cross-connects to ignore the state of ACs
About this task
This task helps reduce the traffic loss caused by AC failure at a multihomed site that uses single-active redundancy mode in an EVPN VPWS over SRv6 network.
At a multihomed site that uses single-active redundancy mode in an EVPN VPWS over SRv6 network, 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 cross-connects 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 cross-connect, cross-connect-specific AC state ignore configuration takes precedence over global AC state ignore configuration.
Enabling cross-connects to ignore the state of ACs globally
1. Enter system view.
system-view
2. Enable cross-connects to ignore the state of ACs globally.
l2vpn ignore-ac-state [ evpn-vpws ]
By default, cross-connects does not ignore the state of ACs.
Configuring a cross-connect to ignore the state of ACs
1. Enter system view.
system-view
2. Enter cross-connect group view.
xconnect-group group-name
3. Enter cross-connect view.
connection connection-name
4. Enable the cross-connect to ignore the state of ACs or disable a cross-connect from ignoring the state of ACs.
ignore-ac-state { enable | disable }
By default, a cross-connect uses the global AC state ignore configuration.
Configuring FRR for EVPN VPWS over SRv6
Configuring local FRR
About this task
This task enables two PEs at a multihomed EVPN VPWS over SRv6 network site to set up a bypass SRv6 PW between them. Perform this task to help reduce the traffic loss caused by AC failure.
Restrictions and guidelines
On an EVPN instance, EVPN instance-specific bypass PW configuration takes precedence over global bypass PW configuration.
If you have executed the evpn frr local enable command on an EVPN instance, the undo evpn multihoming vpws-frr local command does not delete the bypass SRv6 PW of the EVPN instance.
Perform this task on the redundant PEs at a multihomed site.
Enabling bypass PW globally
1. Enter system view.
system-view
2. Enable bypass PW globally for EVPN VPWS over SRv6.
evpn multihoming vpws-frr local
By default, bypass PW is disabled globally for EVPN VPWS over SRv6.
For more information about this command, see EVPN Command Reference.
Configuring bypass PW on an EVPN instance
1. Enter system view.
system-view
2. Enter cross-connect group view.
xconnect-group group-name
3. Enter EVPN instance view.
evpn encapsulation srv6
4. Configure bypass PW for EVPN VPWS over SRv6.
evpn frr local { disable | enable }
By default, an EVPN instance uses the global bypass PW configuration of EVPN VPWS over SRv6.
For more information about this command, see EVPN Command Reference.
Configuring remote FRR
About this task
Remote FRR enables two PEs on an EVPN VPWS over SRv6 network to set up a primary PW and a backup PW between them to ensure high availability. The PEs use the primary PW to forward traffic as long as it is available. When the primary PW fails, the PEs switch traffic to the backup PW.
Restrictions and guidelines
On an EVPN instance, EVPN instance-specific remote FRR configuration takes precedence over global remote FRR configuration.
If you have executed the evpn frr remote enable command on an EVPN instance, the undo evpn vpws-frr remote command does not delete the backup SRv6 PWs of the EVPN instance.
Enabling remote FRR globally
1. Enter system view.
system-view
2. Enable remote FRR globally for EVPN VPWS over SRv6.
evpn vpws-frr remote
By default, remote FRR is disabled globally for EVPN VPWS over SRv6.
For more information about this command, see EVPN Command Reference.
Configuring remote FRR on an EVPN instance
1. Enter system view.
system-view
2. Enter cross-connect group view.
xconnect-group group-name
3. Enter EVPN instance view.
evpn encapsulation srv6
4. Configure remote FRR for EVPN VPWS over SRv6.
evpn frr remote { disable | enable }
By default, an EVPN instance uses the global remote FRR configuration of EVPN VPWS over SRv6.
For more information about this command, see EVPN Command Reference.
Test the connectivity of an SRv6 PW
Using ping to test the connectivity of an SRv6 PW
About this task
In an EVPN VPWS 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 cross-connect group name, local service ID, and remote service ID. After obtaining the End.DX2 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.
3. The local PE identifies the connectivity of the SRv6 PW based on whether it has received MPLS echo replies 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 VPWS over SRv6 network, execute the following command in any view:
ping evpn vpws srv6 xconnect-group group-name local-service-id remote-service-id [ end-op endop ] [ -a source-ipv6 | -c count | -h hop-limit | -m interval | -r reply-mode | -s packet-size | -t time-out | -tc tc ] *
Using tracert to test the connectivity of an SRv6 PW
About this task
In an EVPN VPWS 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 cross-connect group name, local service ID, and remote service ID. After obtaining the End.DX2 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 VPWS over SRv6 network, execute the following command in any view:
tracert evpn vpws srv6 xconnect-group group-name local-service-id remote-service-id [ end-op endop ] [ -a source-ip | -h hop-limit | -r reply-mode | -t time-out | -tc tc ] *
Verifying and maintaining EVPN VPWS over SRv6
Displaying BGP EVPN route information
Perform display tasks in any view.
· Display BGP peer group information.
display bgp [ instance instance-name ] group l2vpn evpn [ group-name group-name ]
For more information about this command, see basic BGP commands in Layer 3—IP Routing Command Reference.
· Display BGP peer or peer group information.
display bgp [ instance instance-name ] peer l2vpn evpn [ ipv4-address mask-length | { ipv4-address | group-name group-name } log-info | [ ipv4-address ] verbose ]
For more information about this command, see basic BGP commands in Layer 3—IP Routing Command Reference.
· Display information about BGP update groups.
display bgp [ instance instance-name ] update-group l2vpn evpn [ ipv4-address ]
For more information about this command, see basic BGP commands in Layer 3—IP Routing Command Reference.
· Display BGP EVPN routes.
display bgp [ instance instance-name ] l2vpn evpn [ peer { ipv4-address | ipv6-address } { advertised-routes | received-routes } [ statistics ] | [ route-distinguisher route-distinguisher | route-type { es | imet } ] * [ { evpn-route route-length | evpn-prefix } [ advertise-info ] | ipv4-address | ipv6-address | mac-address ] | statistics ]
For more information about this command, see EVPN Command Reference.
Displaying EVPN VPWS over SRv6 running status
Perform display tasks in any view.
· 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 ] }
For more information about this command, see EVPN Command Reference.
· 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 ]}
For more information about this command, see EVPN Command Reference.
· Display EVPN information about cross-connects.
display evpn route xconnect-group [ name group-name [ connection connection-name ] ] [ count ]
For more information about this command, see EVPN Command Reference.
· Display information about cross-connect groups.
display l2vpn xconnect-group [ evpn-srv6 | name group-name ] [ count | verbose ]
display l2vpn xconnect-group name group-name connection connection-name [ verbose ]
· Display L2VPN SRv6 information.
display l2vpn peer srv6 [ xconnect-group group-name ] [ state-machine | verbose ]
Displaying EVPN VPLS over SRv6 forwarding information
To display SRv6 forwarding information, execute the following command in any view:
display l2vpn forwarding srv6 [ xconnect-group group-name ] [ slot slot-number ] [ verbose ]
EVPN VPWS over SRv6 configuration examples
Example: Setting up an SRv6 tunnel between single-homed EVPN VPWS sites
Network configuration
As shown in Figure 5, set up an SRv6 tunnel between PE 1 and PE 2 for users in site 1 and site 2 to communicate through EVPN VPWS over the IPv6 backbone network.
Device |
Interface |
IP address |
Device |
Interface |
IP address |
CE 1 |
HGE1/0/1 |
10::1/64 |
P |
Loop0 |
3::3/128 |
PE 1 |
Loop0 |
1::1/128 |
|
HGE1/0/1 |
20::2/64 |
|
HGE1/0/1 |
- |
|
HGE1/0/2 |
30::1/64 |
|
HGE1/0/2 |
20::1/64 |
PE 2 |
Loop0 |
2::2/128 |
CE 2 |
HGE1/0/1 |
10::2/64 |
|
HGE1/0/1 |
- |
|
|
|
|
HGE1/0/2 |
30::2/64 |
Procedure
1. Configure CE 1.
<CE1> system-view
[CE1] interface hundredgige 1/0/1
[CE1-HundredGigE1/0/1] ipv6 address 10::1 64
[CE1-HundredGigE1/0/1] 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 HundredGigE 1/0/2, the interface connected to P.
[PE1] interface hundredgige 1/0/2
[PE1-HundredGigE1/0/2] ipv6 address 20::1 64
[PE1-HundredGigE1/0/2] ospfv3 1 area 0
[PE1-HundredGigE1/0/2] undo shutdown
[PE1-HundredGigE1/0/2] 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 a cross-connect group named vpna, create an EVPN instance for it, and enable SRv6 encapsulation. Configure an RD and route targets for the EVPN instance and enable SRv6 BE route recursion mode.
[PE1] xconnect-group vpna
[PE1-xcg-vpna] evpn encapsulation srv6
[PE1-xcg-vpna-evpn-srv6] route-distinguisher 1:1
[PE1-xcg-vpna-evpn-srv6] vpn-target 1:1 export-extcommunity
[PE1-xcg-vpna-evpn-srv6] vpn-target 1:1 import-extcommunity
[PE1-xcg-vpna-evpn-srv6] segment-routing ipv6 best-effort
[PE1-xcg-vpna-evpn-srv6] quit
# Create cross-connect pw1 and map HundredGigE 1/0/1 to it. Create an SRv6 tunnel on the cross-connect.
[PE1-xcg-vpna] connection pw1
[PE1-xcg-vpna-pw1] ac interface hundredgige 1/0/1
[PE1-xcg-vpna-pw1-HundredGigE1/0/1] quit
[PE1-xcg-vpna-pw1] evpn local-service-id 1 remote-service-id 2
[PE1-xcg-vpna-pw1-1-2] quit
[PE1-xcg-vpna-pw1] segment-routing ipv6 locator aaa
[PE1-xcg-vpna-pw1] quit
[PE1-xcg-vpna] quit
# Specify a source IP address for the outer IPv6 header of SRv6-encapsulated packets, and configure a locator to apply for End.DX2 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 HundredGigE 1/0/2, the interface connected to P.
[PE2] interface hundredgige 1/0/2
[PE2-HundredGigE1/0/2] ipv6 address 30::2 64
[PE2-HundredGigE1/0/2] ospfv3 1 area 0.0.0.0
[PE2-HundredGigE1/0/2] undo shutdown
[PE2-HundredGigE1/0/2] 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 a cross-connect group named vpna, create an EVPN instance for it, and enable SRv6 encapsulation. Configure an RD and route targets for the EVPN instance and enable SRv6 BE route recursion mode.
[PE2] xconnect-group vpna
[PE2-xcg-vpna] evpn encapsulation srv6
[PE2-xcg-vpna-evpn-srv6] route-distinguisher 1:1
[PE2-xcg-vpna-evpn-srv6] vpn-target 1:1 export-extcommunity
[PE2-xcg-vpna-evpn-srv6] vpn-target 1:1 import-extcommunity
[PE2-xcg-vpna-evpn-srv6] segment-routing ipv6 best-effort
[PE2-xcg-vpna-evpn-srv6] quit
# Create cross-connect pw1 and map HundredGigE 1/0/1 to it. Create an SRv6 tunnel on the cross-connect.
[PE2-xcg-vpna] connection pw1
[PE2-xcg-vpna-pw1] ac interface hundredgige 1/0/1
[PE2-xcg-vpna-pw1-HundredGigE1/0/1] quit
[PE2-xcg-vpna-pw1] evpn local-service-id 2 remote-service-id 1
[PE2-xcg-vpna-pw1-2-1] quit
[PE2-xcg-vpna-pw1] segment-routing ipv6 locator aaa
[PE2-xcg-vpna-pw1] quit
[PE2-xcg-vpna] quit
# Specify a source IP address for the outer IPv6 header of SRv6-encapsulated packets, and configure a locator to apply for End.DX2 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 hundredgige 1/0/1
[P-HundredGigE1/0/1] ipv6 address 20::2 64
[P-HundredGigE1/0/1] ospfv3 1 area 0
[P-HundredGigE1/0/1] quit
[P] interface hundredgige 1/0/2
[P-HundredGigE1/0/2] ipv6 address 30::1 64
[P-HundredGigE1/0/2] ospfv3 1 area 0
[P-HundredGigE1/0/2] quit
5. Configure CE 2.
<CE2> system-view
[CE2] interface hundredgige 1/0/1
[CE2-HundredGigE1/0/1] ipv6 address 10::2 64
[CE2-HundredGigE1/0/1] 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
Xconnect-group Name: vpna
Peer : 2::2
Flag : Main
State : Up
Remote SrvID : 2
# Verify that the SRv6 forwarding information on PE 1 is correct. You can see input and output SID information about the SRv6 tunnel.
[PE1] display l2vpn forwarding srv6
Total number of cross-connections: 1
Total number of SRv6 tunnels: 1, 1 up, 0 blocked, 0 down
Xconnect-group Name : vpna
Connection Name : pw1
Link ID : 0x8000000 Type: BE State: Up
In SID : 100::1:0:2
Out SID : 200::1:0:2
# Verify that CE 1 and CE 2 can ping each other. (Details not shown.)
Example: Configuring EVPN VPWS over SRv6 multihoming (static link aggregation dual-homed)
Network configuration
As shown in Figure 6, CE 1 is dual-homed to PE 1 and PE 2 through static link aggregation. Configure EVPN VPWS 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 |
|
HGE1/0/1 |
- |
CE 2 |
HGE1/0/1 |
100::2/64 |
|
HGE1/0/2 |
10::1/64 |
PE 3 |
Loop0 |
3::3/128 |
|
HGE1/0/3 |
20::1/64 |
|
HGE1/0/1 |
- |
PE 2 |
Loop0 |
2::2/128 |
|
HGE1/0/2 |
10::3/64 |
|
HGE1/0/1 |
- |
|
HGE1/0/3 |
30::3/64 |
|
HGE1/0/2 |
30::2/64 |
|
|
|
|
HGE1/0/3 |
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 HundredGigE 1/0/1 and HundredGigE 1/0/2 to aggregation group 1.
[CE1] interface hundredgige 1/0/1
[CE1-HundredGigE1/0/1] port link-aggregation group 1
[CE1-HundredGigE1/0/1] quit
[CE1] interface hundredgige 1/0/2
[CE1-HundredGigE1/0/2] port link-aggregation group 1
[CE1-HundredGigE1/0/2] 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 HundredGigE 1/0/2, the interface connected to PE 3.
[PE1] interface hundredgige 1/0/2
[PE1-HundredGigE1/0/2] ipv6 address 10::1/64
[PE1-HundredGigE1/0/2] ospfv3 1 area 0
[PE1-HundredGigE1/0/2] undo shutdown
[PE1-HundredGigE1/0/2] quit
# Configure HundredGigE 1/0/3, the interface connected to PE 2.
[PE1] interface hundredgige 1/0/3
[PE1-HundredGigE1/0/3] ipv6 address 20::1/64
[PE1-HundredGigE1/0/3] ospfv3 1 area 0
[PE1-HundredGigE1/0/3] undo shutdown
[PE1-HundredGigE1/0/3] 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
# Assign an ESI to site-facing interface HundredGigE 1/0/1 and set its redundancy mode to all-active.
[PE1] interface hundredgige 1/0/1
[PE1-HundredGigE1/0/1] esi 1.1.1.1.1
[PE1-HundredGigE1/0/1] evpn redundancy-mode all-active
[PE1-HundredGigE1/0/1] quit
# Create a cross-connect group named vpna, create an EVPN instance for it, and enable SRv6 encapsulation. Configure an RD and route targets for the EVPN instance and enable SRv6 BE route recursion mode.
[PE1] xconnect-group vpna
[PE1-xcg-vpna] evpn encapsulation srv6
[PE1-xcg-vpna-evpn-srv6] route-distinguisher 1:1
[PE1-xcg-vpna-evpn-srv6] vpn-target 1:1 export-extcommunity
[PE1-xcg-vpna-evpn-srv6] vpn-target 1:1 import-extcommunity
[PE1-xcg-vpna-evpn-srv6] segment-routing ipv6 best-effort
[PE1-xcg-vpna-evpn-srv6] quit
# Create cross-connect pw1 and map HundredGigE 1/0/1 to it. Create an SRv6 tunnel on the cross-connect.
[PE1-xcg-vpna] connection pw1
[PE1-xcg-vpna-pw1] ac interface hundredgige 1/0/1
[PE1-xcg-vpna-pw1-HundredGigE1/0/1] quit
[PE1-xcg-vpna-pw1] evpn local-service-id 1 remote-service-id 2
[PE1-xcg-vpna-pw1-1-2] quit
[PE1-xcg-vpna-pw1] segment-routing ipv6 locator aaa
[PE1-xcg-vpna-pw1] quit
[PE1-xcg-vpna] quit
# Specify a source IP address for the outer IPv6 header of SRv6-encapsulated packets, and configure a locator to apply for End.DX2 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 args 16
[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 HundredGigE 1/0/3, the interface connected to PE 1.
[PE2] interface hundredgige 1/0/3
[PE2-HundredGigE1/0/3] ipv6 address 20::2 64
[PE2-HundredGigE1/0/3] ospfv3 1 area 0
[PE2-HundredGigE1/0/3] undo shutdown
[PE2-HundredGigE1/0/3] quit
# Configure HundredGigE 1/0/2, the interface connected to PE 3.
[PE2] interface hundredgige 1/0/2
[PE2-HundredGigE1/0/2] ipv6 address 30::2 64
[PE2-HundredGigE1/0/2] ospfv3 1 area 0
[PE2-HundredGigE1/0/2] undo shutdown
[PE2-HundredGigE1/0/2] 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
# Assign an ESI to site-facing interface HundredGigE 1/0/1 and set its redundancy mode to all-active.
[PE2] interface hundredgige 1/0/1
[PE2-HundredGigE1/0/1] esi 1.1.1.1.1
[PE2-HundredGigE1/0/1] evpn redundancy-mode all-active
[PE2-HundredGigE1/0/1] quit
# Create a cross-connect group named vpna, create an EVPN instance for it, and enable SRv6 encapsulation. Configure an RD and route targets for the EVPN instance and enable SRv6 BE route recursion mode.
[PE2] xconnect-group vpna
[PE2-xcg-vpna] evpn encapsulation srv6
[PE2-xcg-vpna-evpn-srv6] route-distinguisher 1:1
[PE2-xcg-vpna-evpn-srv6] vpn-target 1:1 export-extcommunity
[PE2-xcg-vpna-evpn-srv6] vpn-target 1:1 import-extcommunity
[PE2-xcg-vpna-evpn-srv6] segment-routing ipv6 best-effort
[PE2-xcg-vpna-evpn-srv6] quit
# Create cross-connect pw1 and map HundredGigE 1/0/1 to it. Create an SRv6 tunnel on the cross-connect.
[PE2-xcg-vpna] connection pw1
[PE2-xcg-vpna-pw1] ac interface hundredgige 1/0/1
[PE2-xcg-vpna-pw1-HundredGigE1/0/1] quit
[PE2-xcg-vpna-pw1] evpn local-service-id 1 remote-service-id 2
[PE2-xcg-vpna-pw1-1-2] quit
[PE2-xcg-vpna-pw1] segment-routing ipv6 locator aaa
[PE2-xcg-vpna-pw1] quit
[PE2-xcg-vpna] quit
# Specify a source IP address for the outer IPv6 header of SRv6-encapsulated packets, and configure a locator to apply for End.DX2 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 HundredGigE 1/0/2, the interface connected to PE 1.
[PE3] interface hundredgige 1/0/2
[PE3-HundredGigE1/0/2] ipv6 address 10::3 64
[PE3-HundredGigE1/0/2] ospfv3 1 area 0
[PE3-HundredGigE1/0/2] undo shutdown
[PE3-HundredGigE1/0/2] quit
# Configure HundredGigE 1/0/3, the interface connected to PE 2.
[PE3] interface hundredgige 1/0/3
[PE3-HundredGigE1/0/3] ipv6 address 30::3 64
[PE3-HundredGigE1/0/3] ospfv3 1 area 0
[PE3-HundredGigE1/0/3] undo shutdown
[PE3-HundredGigE1/0/3] 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 a cross-connect group named vpna, create an EVPN instance for it, and enable SRv6 encapsulation. Configure an RD and route targets for the EVPN instance and enable SRv6 BE route recursion mode.
[PE3] xconnect-group vpna
[PE3-xcg-vpna] evpn encapsulation srv6
[PE3-xcg-vpna-evpn-srv6] route-distinguisher 1:1
[PE3-xcg-vpna-evpn-srv6] vpn-target 1:1 export-extcommunity
[PE3-xcg-vpna-evpn-srv6] vpn-target 1:1 import-extcommunity
[PE3-xcg-vpna-evpn-srv6] segment-routing ipv6 best-effort
[PE3-xcg-vpna-evpn-srv6] quit
# Create cross-connect pw1 and map HundredGigE 1/0/1 to it. Create an SRv6 tunnel on the cross-connect.
[PE3-xcg-vpna] connection pw1
[PE3-xcg-vpna-pw1] ac interface hundredgige 1/0/1
[PE3-xcg-vpna-pw1-HundredGigE1/0/1] quit
[PE3-xcg-vpna-pw1] evpn local-service-id 2 remote-service-id 1
[PE3-xcg-vpna-pw1-2-1] quit
[PE3-xcg-vpna-pw1] segment-routing ipv6 locator aaa
[PE3-xcg-vpna-pw1] quit
[PE3-xcg-vpna] quit
# Specify a source IP address for the outer IPv6 header of SRv6-encapsulated packets, and configure a locator to apply for End.DX2 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 hundredgige 1/0/1
[CE2-HundredGigE1/0/1] ipv6 address 100::2 64
[CE2-HundredGigE1/0/1] quit
Verifying the configuration
# Verify that PE 1 has established an SRv6 tunnel to PE 3.
[PE1] display l2vpn peer srv6
Total number of SRv6 Tunnels: 1
1 up, 0 blocked, 0 down
Xconnect-group Name: vpna
Peer : 3::3
Flag : Main
State : Up
Remote SrvID : 2
# Verify that PE 3 has established SRv6 tunnels to PE 1 and PE 2. The SRv6 tunnels are ECMP tunnels that load share traffic.
[PE3] display l2vpn peer srv6
Total number of SRv6 Tunnels: 2
2 up, 0 blocked, 0 down
Xconnect-group Name: vpna
Peer : 2::2
Flag : ECMP
State : Up
Remote SrvID : 1
Peer : 1::1
Flag : ECMP
State : Up
Remote SrvID : 1
# Verify that the SRv6 forwarding information on PE 1 and PE 3 is correct. You can see input and output SID information about the SRv6 tunnel.
[PE1] display l2vpn forwarding srv6
Total number of cross-connections: 1
Total number of SRv6 tunnels: 1, 1 up, 0 blocked, 0 down
Xconnect-group Name : vpna
Connection Name : pw1
Link ID : 0x8000000 Type: BE State: Up
In SID : 111::1:0:3
Out SID : 333::1:0:3
[PE3] display l2vpn forwarding srv6
Total number of cross-connections: 1
Total number of SRv6 tunnels: 2, 2 up, 0 blocked, 0 down
Xconnect-group Name : vpna
Connection Name : pw1
Link ID : 0x8000000 Type: BE State: Up
In SID : 333::1:0:3
Out SID : 111::1:0:3
Link ID : 0x8000001 Type: BE State: Up
In SID : 333::1:0:3
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 VPWS over SRv6 multihoming (S-Trunk dual-homed)
Network configuration
As shown in Figure 7, CE 1 is dual-homed to PE 1 and PE 2 through S-Trunk. Configure EVPN VPWS 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 |
|
HGE1/0/1 |
N/A |
|
HGE1/0/1 |
N/A |
|
HGE1/0/2 |
10::1/64 |
|
HGE1/0/2 |
30::2/64 |
|
HGE1/0/3 |
20::1/64 |
|
HGE1/0/3 |
20::2/64 |
|
HGE1/0/3 |
10.1.2.1/24 |
|
HGE1/0/3 |
10.1.2.2/24 |
PE 3 |
Loop0 |
3::3/128 |
CE 1 |
RAGG1 |
100::1/64 |
|
HGE1/0/1 |
N/A |
CE 2 |
HGE1/0/1 |
100::2/64 |
|
HGE1/0/2 |
10::3/64 |
|
|
|
|
HGE1/0/3 |
30::3/64 |
|
|
|
Procedure
1. Configure CE 1:
# Create dynamic Layer 3 aggregate interface 1 and assign it an IPv6 address and prefix.
<CE1> system-view
[CE1] interface route-aggregation 1
[CE1-Route-Aggregation1] link-aggregation mode dynamic
[CE1-Route-Aggregation1] ipv6 address 100::1 64
[CE1-Route-Aggregation1] quit
# Assign HundredGigE 1/0/1 and HundredGigE 1/0/2 to aggregation group 1.
[CE1] interface hundredgige 1/0/1
[CE1-HundredGigE1/0/1] port link-aggregation group 1
[CE1-HundredGigE1/0/1] quit
[CE1] interface hundredgige 1/0/2
[CE1-HundredGigE1/0/2] port link-aggregation group 1
[CE1-HundredGigE1/0/2] 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 HundredGigE 1/0/2, the interface connected to PE 3.
[PE1] interface hundredgige 1/0/2
[PE1-HundredGigE1/0/2] ipv6 address 10::1/64
[PE1-HundredGigE1/0/2] ospfv3 1 area 0
[PE1-HundredGigE1/0/2] undo shutdown
[PE1-HundredGigE1/0/2] quit
# Configure HundredGigE 1/0/3, the interface connected to PE 2.
[PE1] interface hundredgige 1/0/3
[PE1-HundredGigE1/0/3] ipv6 address 20::1/64
[PE1-HundredGigE1/0/3] ospfv3 1 area 0
[PE1-HundredGigE1/0/3] undo shutdown
[PE1-HundredGigE1/0/3] 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
# 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] link-aggregation mode dynamic
[PE1-Route-Aggregation1] s-trunk 1
[PE1-Route-Aggregation1] s-trunk port-role primary
[PE1-Route-Aggregation1] quit
[PE1] interface hundredgige 1/0/1
[PE1-HundredGigE1/0/1] port link-aggregation group 1
[PE1-HundredGigE1/0/1] quit
# Assign an ESI to site-facing interface Route-Aggregation 1 and set its redundancy mode to all-active.
[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] quit
# Create a cross-connect group named vpna, create an EVPN instance for it, and enable SRv6 encapsulation. Configure an RD and route targets for the EVPN instance and enable SRv6-BE route recursion mode.
[PE1] xconnect-group vpna
[PE1-xcg-vpna] evpn encapsulation srv6
[PE1-xcg-vpna-evpn-srv6] route-distinguisher 1:1
[PE1-xcg-vpna-evpn-srv6] vpn-target 1:1 export-extcommunity
[PE1-xcg-vpna-evpn-srv6] vpn-target 1:1 import-extcommunity
[PE1-xcg-vpna-evpn-srv6] segment-routing ipv6 best-effort
[PE1-xcg-vpna-evpn-srv6] quit
# Create cross-connect pw1 and map Route-Aggregation 1 to it. Create an SRv6 tunnel on the cross-connect.
[PE1-xcg-vpna] connection pw1
[PE1-xcg-vpna-pw1] ac interface route-aggregation 1
[PE1-xcg-vpna-pw1-Route-Aggregation1] quit
[PE1-xcg-vpna-pw1] evpn local-service-id 1 remote-service-id 2
[PE1-xcg-vpna-pw1] segment-routing ipv6 locator aaa
[PE1-xcg-vpna-pw1] quit
[PE1-xcg-vpna] quit
# Specify a source IP address for the outer IPv6 header of SRv6-encapsulated packets, and configure a locator to apply for End.DX2 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 args 16
[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 HundredGigE 1/0/3, the interface connected to PE 1.
[PE2] interface hundredgige 1/0/3
[PE2-HundredGigE1/0/3] ipv6 address 20::2 64
[PE2-HundredGigE1/0/3] ospfv3 1 area 0
[PE2-HundredGigE1/0/3] undo shutdown
[PE2-HundredGigE1/0/3] quit
# Configure HundredGigE 1/0/2, the interface connected to PE 3.
[PE2] interface hundredgige 1/0/2
[PE2-HundredGigE1/0/2] ipv6 address 30::2 64
[PE2-HundredGigE1/0/2] ospfv3 1 area 0
[PE2-HundredGigE1/0/2] undo shutdown
[PE2-HundredGigE1/0/2] 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
# 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] link-aggregation mode dynamic
[PE2-Route-Aggregation1] s-trunk 1
[PE2-Route-Aggregation1] s-trunk port-role primary
[PE2-Route-Aggregation1] quit
[PE2] interface hundredgige 1/0/1
[PE2-HundredGigE1/0/1] port link-aggregation group 1
[PE2-HundredGigE1/0/1] quit
# Assign an ESI to site-facing interface Route-Aggregation 1 and set its redundancy mode to all-active.
[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] quit
# Create a cross-connect group named vpna, create an EVPN instance for it, and enable SRv6 encapsulation. Configure an RD and route targets for the EVPN instance and enable SRv6-BE route recursion mode.
[PE2] xconnect-group vpna
[PE2-xcg-vpna] evpn encapsulation srv6
[PE2-xcg-vpna-evpn-srv6] route-distinguisher 1:1
[PE2-xcg-vpna-evpn-srv6] vpn-target 1:1 export-extcommunity
[PE2-xcg-vpna-evpn-srv6] vpn-target 1:1 import-extcommunity
[PE2-xcg-vpna-evpn-srv6] segment-routing ipv6 best-effort
[PE2-xcg-vpna-evpn-srv6] quit
# Create cross-connect pw1 and map Route-Aggregation 1 to it. Create an SRv6 tunnel on the cross-connect.
[PE2-xcg-vpna] connection pw1
[PE2-xcg-vpna-pw1] ac interface route-aggregation 1
[PE2-xcg-vpna-pw1-Route-Aggregation1] quit
[PE2-xcg-vpna-pw1] evpn local-service-id 1 remote-service-id 2
[PE2-xcg-vpna-pw1] segment-routing ipv6 locator aaa
[PE2-xcg-vpna-pw1] quit
[PE2-xcg-vpna] quit
# Specify a source IP address for the outer IPv6 header of SRv6-encapsulated packets, and configure a locator to apply for End.DX2 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 HundredGigE 1/0/2, the interface connected to PE 1.
[PE3] interface hundredgige 1/0/2
[PE3-HundredGigE1/0/2] ipv6 address 10::3 64
[PE3-HundredGigE1/0/2] ospfv3 1 area 0
[PE3-HundredGigE1/0/2] undo shutdown
[PE3-HundredGigE1/0/2] quit
# Configure HundredGigE 1/0/3, the interface connected to PE 2.
[PE3] interface hundredgige 1/0/3
[PE3-HundredGigE1/0/3] ipv6 address 30::3 64
[PE3-HundredGigE1/0/3] ospfv3 1 area 0
[PE3-HundredGigE1/0/3] undo shutdown
[PE3-HundredGigE1/0/3] 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 a cross-connect group named vpna, create an EVPN instance for it, and enable SRv6 encapsulation. Configure an RD and route targets for the EVPN instance and enable SRv6-BE route recursion mode.
[PE3] xconnect-group vpna
[PE3-xcg-vpna] evpn encapsulation srv6
[PE3-xcg-vpna-evpn-srv6] route-distinguisher 1:1
[PE3-xcg-vpna-evpn-srv6] vpn-target 1:1 export-extcommunity
[PE3-xcg-vpna-evpn-srv6] vpn-target 1:1 import-extcommunity
[PE3-xcg-vpna-evpn-srv6] segment-routing ipv6 best-effort
[PE3-xcg-vpna-evpn-srv6] quit
# Create cross-connect pw1 and map HundredGigE 1/0/1 to it. Create an SRv6 tunnel on the cross-connect.
[PE3-xcg-vpna] connection pw1
[PE3-xcg-vpna-pw1] ac interface hundredgige 1/0/1
[PE3-xcg-vpna-pw1-HundredGigE1/0/1] quit
[PE3-xcg-vpna-pw1] evpn local-service-id 2 remote-service-id 1
[PE3-xcg-vpna-pw1] segment-routing ipv6 locator aaa
[PE3-xcg-vpna-pw1] quit
[PE3-xcg-vpna] quit
# Specify a source IP address for the outer IPv6 header of SRv6-encapsulated packets, and configure a locator to apply for End.DX2 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 hundredgige 1/0/1
[CE2-HundredGigE1/0/1] ipv6 address 100::2 64
[CE2-HundredGigE1/0/1] quit
Verifying the configuration
# Verify that PE 1 has established an SRv6 tunnel to PE 3.
[PE1] display l2vpn peer srv6
Total number of SRv6 Tunnels: 1
1 up, 0 blocked, 0 down
Xconnect-group Name: vpna
Peer : 3::3
Flag : Main
State : Up
Remote SrvID : 2
# Verify that PE 3 has established SRv6 tunnels to PE 1 and PE 2. The SRv6 tunnels are ECMP tunnels that load share traffic.
[PE3] display l2vpn peer srv6
Total number of SRv6 Tunnels: 2
2 up, 0 blocked, 0 down
Xconnect-group Name: vpna
Peer : 2::2
Flag : ECMP
State : Up
Remote SrvID : 1
Peer : 1::1
Flag : ECMP
State : Up
Remote SrvID : 1
# Verify that the SRv6 forwarding information on PE 1 and PE 3 is correct. You can see input and output SID information about the SRv6 tunnel.
[PE1] display l2vpn forwarding srv6
Total number of cross-connections: 1
Total number of SRv6 tunnels: 1, 1 up, 0 blocked, 0 down
Xconnect-group Name : vpna
Connection Name : pw1
Link ID : 0x1 Type: BE State: Up
In SID : 111::1:0:3
Out SID : 333::1:0:3
[PE3] display l2vpn forwarding srv6
Total number of cross-connections: 1
Total number of SRv6 tunnels: 2, 2 up, 0 blocked, 0 down
Xconnect-group Name : vpna
Connection Name : pw1
Link ID : 0x1 Type: BE State: Up
In SID : 333::1:0:3
Out SID : 111::1:0:3
Link ID : 0x1 Type: BE State: Up
In SID : 333::1:0:3
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.)