EVPN-VPWS Multihomed IOS-XR (Port-Active)
Last updated
Last updated
Load multi.service.init.cfg
The CEs now have two subinterfaces: BE1.10 and BE1.20.
Configure the PEs so that only one port in the bundle is active at a time.
For PE1-PE2, force PE1 to be standby.
For PE3-PE4, allow the natural DF election to happen.
The standby PE for PE3-PE4 should bring the bundle down instead of using an LACP OoS (out of service) signal.
Configure two separate VPWS services, one per VLAN.
There are three types of EVPN multi-homing redundancy modes:
All-Active
The links in the bundle are all active. The DF election is used to prevent duplication of BUM traffic for a bridged EVPN service.
Single-Active
Only one link in the bundle is active but on a per-service basis. This gives some load balancing to the bundle, as service X uses link 1 and service Y uses link 2. There is still redundancy, as if link 1 is lost, service X and Y use link 2.
Port-Active
Only one link in the bundle is used for the ESI in general. All services only use one link.
Port-Active is useful is situations in which you need to do accounting for billing on one PE. You can know that all traffic will always use one single interface. Additionally, port-active can be useful when you specifically want one link to always be standby, because it might have higher latency or some other less desirable trait.
To configure the ESI as port-active, all PEs participating in the ESI define the load-balancing-method as port-active:
The process of electing a PE as primary and all other PEs as standby is called “service carving.” For port-active, this election is not on a per-service basis, it is instead on a per-ESI basis. Left at the defaults, the PEs use a formula to determine which PE is active. We can see that PE3 and PE4 elected PE3 as the primary forwarder for the ESI.
From PE3 (using show evpn ethernet-segment detail):
From PE4:
This election is essentially random, because the modulo result of the formula means that a PE is determined to be primary simply based on whether the RID is higher or lower than the other PEs.
Also notice that the access signal mode has been changed to bundle down instead of OoS. On CE2, we see that the link to PE4 is defaulted:
Let’s now look at the service carving configuration for PE1 and PE2 which allows us to control which link is placed in active and which links are standby.
There are two ways to configure service carving for an ESI. First, we can specify whether the PE should be active or standby for a list of EVIs. Each EVI represents a service.
The above configuration is not applicable to port-active mode though, because with port-active we need to bring the interface down in the bundle. It wouldn’t be possible to bring the interface down on a per-service basis. So instead we use the following configuration:
The higher weight is better. Only the PE with the highest weight will place its link in active. All other PEs (more than two PEs can belong to an ESI) will place their link in standby.
The weight is signaled in the type 4 route for the DF election. We see that PE1’s weight is 50:
PE2’s weight is 100:
Note above that the 2 after DF Election indicates the load-balancing-method.
0 = All-Active
1 = Single-Active
2 = Port-Active
PE1 sees that PE2’s weight is higher, so it places its link in LACP OoS:
Notice above that the preference weight is present under the Peering Details section. (0x32 is 50 and 0x64 is 100).
If we change PE1 to have a higher weight than PE2, PE1 will become active and PE2 will place its interface in standby. Currently, we see on the CE that 0/0/0/2 is active:
Now 0/0/0/1 is active:
In summary, port-active allows for a simple way to only use one link in the bundle at a given time. The standby links are ready to take over in case the primary link goes down. This provides for a deterministic way to know which link the traffic is taking. Currently, all traffic is deterministically flowing through CE1-PE1-PE3-CE2.
The standby PE still advertises a type 1 route for the VPWS. I’ve changed PE1’s weight back to 50, so now PE2 is active. On PE3, we see that it only uses PE1 as a backup path. (Indicated by the exclamation point).
In the EVPN L2 extcommunity, the active PE uses 0x02, and the standby PE uses 0x01.
If I change back to all-active on PE1 and PE2, both PEs use value 0x02:
So, value 0x02 means “active” and value 0x01 means “standby.”