EVPN lab – EVPN-VXLAN to EVPN-MPLS stitching
Last big topic that I need to practice – Data Center Interconnect (DCI).
Fortunately I pretty confident in my skills in the MPLS L3VPN area, so I think I shouldn’t spend much time for this topic.
The most complex DCI option remains – EVPN stitching. In this topic I will show you my example of EVPN-VXLAN to EVPN-MPLS stitching (there is also option of EVPN-VXLAN to EVPN-VXLAN stitching, but configuration should be similar to my example).
EVPN stitching concept is pretty simple – you just need to configure two EVPN instances on each of DC Gateway devices (MX routers) and connect them to each other using Logical Tunnel (lt-) interfaces.
Scheme of my EVPN stitching lab:
Due to time constraints I’ll show you only the upper part of topology – stitching on vMX1 and vMX3 routers. Configurations of vMX2 and vMX4 should be exactly the same as this ones.
So lets see vMX1 routing-instances configuration:
evpn {
vtep-source-interface lo0.0;
instance-type virtual-switch;
interface lt-0/0/10.1;
route-distinguisher 1.1.1.1:1;
vrf-import import;
vrf-target {
target:65000:1;
auto;
}
protocols {
evpn {
encapsulation vxlan;
extended-vni-list [ 100 200 ];
vni-options {
vni 100 {
vrf-target target:65000:100;
}
}
multicast-mode ingress-replication;
default-gateway no-gateway-community;
}
}
bridge-domains {
v100 {
vlan-id 100;
routing-interface irb.100;
vxlan {
vni 100;
ingress-node-replication;
}
}
v200 {
vlan-id 200;
routing-interface irb.200;
vxlan {
vni 200;
ingress-node-replication;
}
}
}
switch-options {
mac-table-aging-time 30;
}
}
mpls-evpn {
instance-type virtual-switch;
interface lt-0/0/10.2;
route-distinguisher 1.1.1.1:111;
vrf-target target:65000:666;
protocols {
evpn {
extended-vlan-list [ 100 200 ];
}
}
bridge-domains {
bd100 {
vlan-id 100;
}
bd200 {
vlan-id 200;
}
}
}
vrf {
instance-type vrf;
interface irb.100;
interface irb.200;
route-distinguisher 1.1.1.1:777;
vrf-target target:65000:777;
vrf-table-label;
routing-options {
auto-export;
}
}
alex@vMX1# show interfaces irb
unit 100 {
proxy-macip-advertisement;
virtual-gateway-esi {
00:77:77:77:77:77:77:77:77:77;
all-active;
}
family inet {
address 172.16.0.251/24 {
virtual-gateway-address 172.16.0.254;
}
}
family inet6 {
address 2001:dead:beef:100::1/64 {
virtual-gateway-address 2001:dead:beef:100::a;
}
}
}
unit 200 {
proxy-macip-advertisement;
virtual-gateway-esi {
00:88:88:77:77:77:77:77:77:77;
all-active;
}
family inet {
address 172.16.1.251/24 {
virtual-gateway-address 172.16.1.254;
}
}
family inet6 {
address 2001:dead:beef:200::1/64 {
virtual-gateway-address 2001:dead:beef:200::a;
}
}
}
Note that vMX1 doesn’t have real interfaces in routing-instances – only logical tunnel ones. Pay attention to differencies between EVPN-VXLAN and EVPN-MPLS config. Also note VRF configuration with IRB interfaces in it – this will be used to check connectivity of EVPN devices to outside world (CE connected to VRF on vMX_old-1).
vMX1 lt- interfaces config:
lt-0/0/10 {
esi {
00:36:36:36:36:36:36:36:36:36;
all-active;
}
unit 1 {
encapsulation ethernet-bridge;
peer-unit 2;
family bridge {
interface-mode trunk;
vlan-id-list [ 100 200 ];
}
}
unit 2 {
encapsulation ethernet-bridge;
peer-unit 1;
family bridge {
interface-mode trunk;
vlan-id-list [ 100 200 ];
}
}
}
You can configure as much stitching points between two EVPN domains as you like – just ensure that all of them use the same ESI ID (lt- interfaces for EVPN domain is just another CE-facing ethernet segment, nothing special).
vMX1 BGP config:
group underlay {
type external;
export direct;
local-as 65001;
multipath multiple-as;
neighbor 192.168.0.1 {
peer-as 65011;
}
neighbor 192.168.0.3 {
peer-as 65022;
}
}
group overlay {
type internal;
local-address 1.1.1.1;
family evpn {
signaling;
}
multipath;
neighbor 11.11.11.11;
neighbor 22.22.22.22;
}
group core {
type internal;
local-address 1.1.1.1;
family inet-vpn {
unicast;
}
family inet6-vpn {
unicast;
}
family evpn {
signaling;
}
multipath;
neighbor 3.3.3.3;
neighbor 111.111.111.111;
neighbor 2.2.2.2;
}
Note new BGP group – core – for EVPN-MPLS and VRF sessions.
There is vMX3 config for your reference:
evpn {
vtep-source-interface lo0.0;
instance-type virtual-switch;
interface lt-0/0/10.1;
route-distinguisher 3.3.3.3:3;
vrf-target target:65000:333;
protocols {
evpn {
encapsulation vxlan;
extended-vni-list [ 1000 2000 ];
multicast-mode ingress-replication;
default-gateway no-gateway-community;
}
}
bridge-domains {
bd100 {
vlan-id 100;
routing-interface irb.100;
vxlan {
vni 1000;
ingress-node-replication;
}
}
bd200 {
vlan-id 200;
routing-interface irb.200;
vxlan {
vni 2000;
ingress-node-replication;
}
}
}
}
mpls-evpn {
instance-type virtual-switch;
interface lt-0/0/10.2;
route-distinguisher 3.3.3.3:33;
vrf-target target:65000:666;
protocols {
evpn {
extended-vlan-list [ 100 200 ];
}
}
bridge-domains {
bd100 {
vlan-id 100;
}
bd200 {
vlan-id 200;
}
}
}
vrf {
instance-type vrf;
interface irb.100;
interface irb.200;
route-distinguisher 3.3.3.3:777;
vrf-target target:65000:777;
vrf-table-label;
routing-options {
auto-export;
}
}
alex@vMX3# show interfaces irb
unit 100 {
proxy-macip-advertisement;
virtual-gateway-esi {
00:33:77:77:77:77:77:77:77:77;
all-active;
}
family inet {
address 172.16.0.253/24 {
virtual-gateway-address 172.16.0.254;
}
}
family inet6 {
address 2001:dead:beef:100::3/64 {
virtual-gateway-address 2001:dead:beef:100::a;
}
}
}
unit 200 {
proxy-macip-advertisement;
virtual-gateway-esi {
00:33:88:77:77:77:77:77:77:77;
all-active;
}
family inet {
address 172.16.1.253/24 {
virtual-gateway-address 172.16.1.254;
}
}
family inet6 {
address 2001:dead:beef:200::3/64 {
virtual-gateway-address 2001:dead:beef:200::a;
}
}
}
[edit]
alex@vMX3# show interfaces lt-0/0/10
esi {
00:99:88:99:88:99:88:99:88:00;
all-active;
}
unit 1 {
encapsulation ethernet-bridge;
peer-unit 2;
family bridge {
interface-mode trunk;
vlan-id-list [ 100 200 ];
}
}
unit 2 {
encapsulation ethernet-bridge;
peer-unit 1;
family bridge {
interface-mode trunk;
vlan-id-list [ 100 200 ];
}
}
[edit]
alex@vMX3# show protocols bgp
group core {
type internal;
local-address 3.3.3.3;
family inet-vpn {
unicast;
}
family inet6-vpn {
unicast;
}
family evpn {
signaling;
}
multipath;
neighbor 1.1.1.1;
neighbor 111.111.111.111;
}
group underlay {
type external;
export direct;
local-as 65003;
multipath multiple-as;
neighbor 192.168.1.1 {
peer-as 65033;
}
}
group overlay {
type internal;
local-address 3.3.3.3;
family evpn {
signaling;
}
multipath;
neighbor 33.33.33.33;
}
vMX3 EVPN-VXLAN configured in slightly different way – see my previous posts if you can’t understand details.
Due to space constraints I show you configuration only for vQFX-1, the rest are configured similarly – just basic EVPN-VXLAN config:
service-id 1;
vtep-source-interface lo0.0;
route-distinguisher 11.11.11.11:1;
vrf-import import;
vrf-target {
target:65000:1;
auto;
}
{master:0}[edit]
alex@vQFX1# show protocols evpn
encapsulation vxlan;
extended-vni-list [ 100 200 ];
multicast-mode ingress-replication;
vni-options {
vni 100 {
vrf-target export target:65000:100;
}
}
{master:0}[edit]
alex@vQFX1# show vlans
default {
vlan-id 1;
}
v100 {
vlan-id 100;
vxlan {
vni 100;
ingress-node-replication;
}
}
v200 {
vlan-id 200;
vxlan {
vni 200;
ingress-node-replication;
}
}
{master:0}[edit]
alex@vQFX1# show interfaces ae0
description evpn;
esi {
00:00:00:00:00:11:11:11:11:11;
all-active;
}
aggregated-ether-options {
lacp {
active;
periodic slow;
system-id 00:00:00:11:11:11;
}
}
unit 0 {
family ethernet-switching {
interface-mode trunk;
vlan {
members [ v200 v100 ];
}
}
}
And finally vMX_old-1 config:
ge-0/0/0 {
description vMX1;
mac 00:46:d3:04:fe:02;
unit 0 {
family inet {
address 10.0.0.1/31;
}
family mpls;
}
}
ge-0/0/1 {
description vMX2;
mac 00:46:d3:04:fe:03;
unit 0 {
family inet {
address 10.0.0.5/31;
}
family mpls;
}
}
ge-0/0/2 {
description vMX3;
mac 00:46:d3:04:fe:04;
unit 0 {
family inet {
address 10.0.0.2/31;
}
family mpls;
}
}
ge-0/0/3 {
description vMX4;
mac 00:46:d3:04:fe:05;
unit 0 {
family inet {
address 172.16.0.7/31;
}
family mpls;
}
}
lo0 {
unit 0 {
family inet {
address 111.111.111.111/32;
}
}
unit 1 {
family inet {
address 172.16.11.11/32;
}
family inet6 {
address 2001:dead:beef:111::11/128;
}
}
}
[edit]
alex@MX1# show protocols
mpls {
ipv6-tunneling;
interface ge-0/0/0.0;
interface ge-0/0/1.0;
interface ge-0/0/2.0;
}
bgp {
group core {
type internal;
local-address 111.111.111.111;
family inet-vpn {
unicast;
}
family inet6-vpn {
unicast;
}
family evpn {
signaling;
}
multipath;
neighbor 3.3.3.3;
neighbor 1.1.1.1;
neighbor 2.2.2.2;
}
}
ospf {
area 0.0.0.0 {
interface lo0.0;
interface ge-0/0/0.0;
interface ge-0/0/2.0;
interface ge-0/0/1.0;
}
}
ldp {
interface ge-0/0/0.0;
interface ge-0/0/1.0;
interface ge-0/0/2.0;
interface lo0.0;
}
[edit]
alex@MX1# show routing-instances
vrf {
instance-type vrf;
interface lo0.1;
route-distinguisher 111.111.111.111:1;
vrf-target target:65000:777;
vrf-table-label;
}
vMX_old-1 acts as MPLS PE device and doesn’t participate in EVPN at all. Note VRF configuration – this VRF will be used to check external reachability to EVPN domain.
So that’s all config that we need. Now let’s check Inter-DC connectivity between EVPN CE devices in the same VLAN:
PING 172.16.0.33 (172.16.0.33): 56 data bytes
64 bytes from 172.16.0.33: icmp_seq=0 ttl=64 time=190.813 ms
64 bytes from 172.16.0.33: icmp_seq=1 ttl=64 time=194.244 ms
64 bytes from 172.16.0.33: icmp_seq=2 ttl=64 time=218.758 ms
--- 172.16.0.33 ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max/stddev = 190.813/201.272/218.758/12.444 ms
alex@MX2# run ping 172.16.1.33 source 172.16.1.22 count 3 logical-system second
PING 172.16.1.33 (172.16.1.33): 56 data bytes
64 bytes from 172.16.1.33: icmp_seq=0 ttl=64 time=694.169 ms
64 bytes from 172.16.1.33: icmp_seq=1 ttl=64 time=380.988 ms
64 bytes from 172.16.1.33: icmp_seq=2 ttl=64 time=249.114 ms
--- 172.16.1.33 ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max/stddev = 249.114/441.424/694.169/186.651 ms
alex@MX2# run ping 2001:dead:beef:100::33 source 2001:dead:beef:100::22 count 3
PING6(56=40+8+8 bytes) 2001:dead:beef:100::22 --> 2001:dead:beef:100::33
16 bytes from 2001:dead:beef:100::33, icmp_seq=0 hlim=64 time=526.195 ms
16 bytes from 2001:dead:beef:100::33, icmp_seq=1 hlim=64 time=511.081 ms
16 bytes from 2001:dead:beef:100::33, icmp_seq=2 hlim=64 time=298.548 ms
--- 2001:dead:beef:100::33 ping6 statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max/std-dev = 298.548/445.275/526.195/103.935 ms
alex@MX2# run ping 2001:dead:beef:200::33 source 2001:dead:beef:200::22 count 3 logical-system second
PING6(56=40+8+8 bytes) 2001:dead:beef:200::22 --> 2001:dead:beef:200::33
16 bytes from 2001:dead:beef:200::33, icmp_seq=0 hlim=64 time=209.895 ms
16 bytes from 2001:dead:beef:200::33, icmp_seq=1 hlim=64 time=208.214 ms
16 bytes from 2001:dead:beef:200::33, icmp_seq=2 hlim=64 time=186.838 ms
--- 2001:dead:beef:200::33 ping6 statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max/std-dev = 186.838/201.649/209.895/10.495 ms
and Inter-VLAN connectivity:
PING 172.16.1.33 (172.16.1.33): 56 data bytes
64 bytes from 172.16.1.33: icmp_seq=0 ttl=63 time=661.497 ms
64 bytes from 172.16.1.33: icmp_seq=1 ttl=63 time=453.642 ms
64 bytes from 172.16.1.33: icmp_seq=2 ttl=63 time=580.631 ms
--- 172.16.1.33 ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max/stddev = 453.642/565.257/661.497/85.550 ms
[edit]
alex@MX2# run ping 172.16.0.33 source 172.16.1.22 count 3 logical-system second
PING 172.16.0.33 (172.16.0.33): 56 data bytes
64 bytes from 172.16.0.33: icmp_seq=0 ttl=63 time=499.511 ms
64 bytes from 172.16.0.33: icmp_seq=1 ttl=63 time=514.987 ms
64 bytes from 172.16.0.33: icmp_seq=2 ttl=63 time=180.618 ms
--- 172.16.0.33 ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max/stddev = 180.618/398.372/514.987/154.105 ms
alex@MX2# run ping 2001:dead:beef:200::33 source 2001:dead:beef:100::22 count 3
PING6(56=40+8+8 bytes) 2001:dead:beef:100::22 --> 2001:dead:beef:200::33
16 bytes from 2001:dead:beef:200::33, icmp_seq=0 hlim=63 time=454.131 ms
16 bytes from 2001:dead:beef:200::33, icmp_seq=1 hlim=63 time=436.396 ms
16 bytes from 2001:dead:beef:200::33, icmp_seq=2 hlim=63 time=245.994 ms
--- 2001:dead:beef:200::33 ping6 statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max/std-dev = 245.994/378.840/454.131/94.215 ms
[edit]
alex@MX2# run ping 2001:dead:beef:100::33 source 2001:dead:beef:200::22 count 3 logical-system second
PING6(56=40+8+8 bytes) 2001:dead:beef:200::22 --> 2001:dead:beef:100::33
16 bytes from 2001:dead:beef:100::33, icmp_seq=0 hlim=63 time=250.793 ms
16 bytes from 2001:dead:beef:100::33, icmp_seq=1 hlim=63 time=270.629 ms
16 bytes from 2001:dead:beef:100::33, icmp_seq=2 hlim=63 time=510.907 ms
--- 2001:dead:beef:100::33 ping6 statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max/std-dev = 250.793/344.110/510.907/118.221 ms
Now let’s check external connectivity to EVPN domain. VRF routing table on vMX_old-1:
vrf.inet.0: 9 destinations, 11 routes (9 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both
172.16.0.0/24 *[BGP/170] 00:58:28, localpref 100, from 1.1.1.1
AS path: I, validation-state: unverified
> to 10.0.0.0 via ge-0/0/0.0, Push 16
[BGP/170] 00:58:53, localpref 100, from 3.3.3.3
AS path: I, validation-state: unverified
> to 10.0.0.3 via ge-0/0/2.0, Push 20
172.16.0.22/32 *[BGP/170] 00:07:02, localpref 100, from 3.3.3.3
AS path: I, validation-state: unverified
> to 10.0.0.3 via ge-0/0/2.0, Push 20
172.16.0.33/32 *[BGP/170] 00:15:14, localpref 100, from 1.1.1.1
AS path: I, validation-state: unverified
> to 10.0.0.0 via ge-0/0/0.0, Push 16
172.16.0.253/32 *[BGP/170] 00:07:02, localpref 100, from 1.1.1.1
AS path: I, validation-state: unverified
> to 10.0.0.0 via ge-0/0/0.0, Push 16
172.16.1.0/24 *[BGP/170] 00:55:00, localpref 100, from 1.1.1.1
AS path: I, validation-state: unverified
> to 10.0.0.0 via ge-0/0/0.0, Push 16
[BGP/170] 00:58:53, localpref 100, from 3.3.3.3
AS path: I, validation-state: unverified
> to 10.0.0.3 via ge-0/0/2.0, Push 20
172.16.1.22/32 *[BGP/170] 00:06:39, localpref 100, from 3.3.3.3
AS path: I, validation-state: unverified
> to 10.0.0.3 via ge-0/0/2.0, Push 20
172.16.1.33/32 *[BGP/170] 00:15:12, localpref 100, from 1.1.1.1
AS path: I, validation-state: unverified
> to 10.0.0.0 via ge-0/0/0.0, Push 16
172.16.1.253/32 *[BGP/170] 00:06:39, localpref 100, from 1.1.1.1
AS path: I, validation-state: unverified
> to 10.0.0.0 via ge-0/0/0.0, Push 16
172.16.11.11/32 *[Direct/0] 01:00:32
> via lo0.1
alex@MX1# run show route table vrf.inet6.0
vrf.inet6.0: 8 destinations, 10 routes (8 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both
2001:dead:beef:100::/64
*[BGP/170] 00:58:39, localpref 100, from 1.1.1.1
AS path: I, validation-state: unverified
> to 10.0.0.0 via ge-0/0/0.0, Push 16
[BGP/170] 00:59:04, localpref 100, from 3.3.3.3
AS path: I, validation-state: unverified
> to 10.0.0.3 via ge-0/0/2.0, Push 20
2001:dead:beef:100::22/128
*[BGP/170] 00:05:46, localpref 100, from 3.3.3.3
AS path: I, validation-state: unverified
> to 10.0.0.3 via ge-0/0/2.0, Push 20
2001:dead:beef:100::33/128
*[BGP/170] 00:05:05, localpref 100, from 1.1.1.1
AS path: I, validation-state: unverified
> to 10.0.0.0 via ge-0/0/0.0, Push 16
2001:dead:beef:111::11/128
*[Direct/0] 01:00:43
> via lo0.1
2001:dead:beef:200::/64
*[BGP/170] 00:55:02, localpref 100, from 1.1.1.1
AS path: I, validation-state: unverified
> to 10.0.0.0 via ge-0/0/0.0, Push 16
[BGP/170] 00:59:04, localpref 100, from 3.3.3.3
AS path: I, validation-state: unverified
> to 10.0.0.3 via ge-0/0/2.0, Push 20
2001:dead:beef:200::22/128
*[BGP/170] 00:04:52, localpref 100, from 3.3.3.3
AS path: I, validation-state: unverified
> to 10.0.0.3 via ge-0/0/2.0, Push 20
2001:dead:beef:200::33/128
*[BGP/170] 00:05:50, localpref 100, from 1.1.1.1
AS path: I, validation-state: unverified
> to 10.0.0.0 via ge-0/0/0.0, Push 16
fe80::246:d30f:fc04:fe00/128
*[Direct/0] 01:00:43
> via lo0.1
Note host routes for all EVPN CE devices (.22 and .33)
And ping from vMX_old-1 loopback:
PING 172.16.0.22 (172.16.0.22): 56 data bytes
64 bytes from 172.16.0.22: icmp_seq=0 ttl=63 time=140.279 ms
64 bytes from 172.16.0.22: icmp_seq=1 ttl=63 time=142.965 ms
64 bytes from 172.16.0.22: icmp_seq=2 ttl=63 time=76.959 ms
--- 172.16.0.22 ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max/stddev = 76.959/120.068/142.965/30.502 ms
alex@MX1# run ping routing-instance vrf source 172.16.11.11 count 3 172.16.0.33
PING 172.16.0.33 (172.16.0.33): 56 data bytes
64 bytes from 172.16.0.33: icmp_seq=0 ttl=63 time=289.897 ms
64 bytes from 172.16.0.33: icmp_seq=1 ttl=63 time=467.979 ms
64 bytes from 172.16.0.33: icmp_seq=2 ttl=63 time=171.230 ms
--- 172.16.0.33 ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max/stddev = 171.230/309.702/467.979/121.954 ms
alex@MX1# run ping routing-instance vrf source 172.16.11.11 count 3 172.16.1.22
PING 172.16.1.22 (172.16.1.22): 56 data bytes
64 bytes from 172.16.1.22: icmp_seq=0 ttl=63 time=86.757 ms
64 bytes from 172.16.1.22: icmp_seq=1 ttl=63 time=93.002 ms
64 bytes from 172.16.1.22: icmp_seq=2 ttl=63 time=89.407 ms
--- 172.16.1.22 ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max/stddev = 86.757/89.722/93.002/2.559 ms
alex@MX1# run ping routing-instance vrf source 172.16.11.11 count 3 172.16.1.33
PING 172.16.1.33 (172.16.1.33): 56 data bytes
64 bytes from 172.16.1.33: icmp_seq=0 ttl=63 time=243.656 ms
64 bytes from 172.16.1.33: icmp_seq=1 ttl=63 time=200.455 ms
64 bytes from 172.16.1.33: icmp_seq=2 ttl=63 time=202.145 ms
--- 172.16.1.33 ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max/stddev = 200.455/215.419/243.656/19.979 ms
alex@MX1# run ping routing-instance vrf source 2001:dead:beef:111::11 count 3 2001:dead:beef:100::22
PING6(56=40+8+8 bytes) 2001:dead:beef:111::11 --> 2001:dead:beef:100::22
16 bytes from 2001:dead:beef:100::22, icmp_seq=0 hlim=63 time=508.633 ms
16 bytes from 2001:dead:beef:100::22, icmp_seq=1 hlim=63 time=546.258 ms
16 bytes from 2001:dead:beef:100::22, icmp_seq=2 hlim=63 time=81.615 ms
--- 2001:dead:beef:100::22 ping6 statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max/std-dev = 81.615/378.835/546.258/210.727 ms
alex@MX1# run ping routing-instance vrf source 2001:dead:beef:111::11 count 3 2001:dead:beef:100::33
PING6(56=40+8+8 bytes) 2001:dead:beef:111::11 --> 2001:dead:beef:100::33
16 bytes from 2001:dead:beef:100::33, icmp_seq=0 hlim=63 time=418.876 ms
16 bytes from 2001:dead:beef:100::33, icmp_seq=1 hlim=63 time=521.891 ms
16 bytes from 2001:dead:beef:100::33, icmp_seq=2 hlim=63 time=113.229 ms
--- 2001:dead:beef:100::33 ping6 statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max/std-dev = 113.229/351.332/521.891/173.537 ms
alex@MX1# run ping routing-instance vrf source 2001:dead:beef:111::11 count 3 2001:dead:beef:200::22
PING6(56=40+8+8 bytes) 2001:dead:beef:111::11 --> 2001:dead:beef:200::22
16 bytes from 2001:dead:beef:200::22, icmp_seq=0 hlim=63 time=301.706 ms
16 bytes from 2001:dead:beef:200::22, icmp_seq=1 hlim=63 time=59.502 ms
16 bytes from 2001:dead:beef:200::22, icmp_seq=2 hlim=63 time=354.713 ms
--- 2001:dead:beef:200::22 ping6 statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max/std-dev = 59.502/238.640/354.713/128.505 ms
alex@MX1# run ping routing-instance vrf source 2001:dead:beef:111::11 count 3 2001:dead:beef:200::33
PING6(56=40+8+8 bytes) 2001:dead:beef:111::11 --> 2001:dead:beef:200::33
16 bytes from 2001:dead:beef:200::33, icmp_seq=0 hlim=63 time=181.243 ms
16 bytes from 2001:dead:beef:200::33, icmp_seq=1 hlim=63 time=231.676 ms
16 bytes from 2001:dead:beef:200::33, icmp_seq=2 hlim=63 time=150.418 ms
--- 2001:dead:beef:200::33 ping6 statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max/std-dev = 150.418/187.779/231.676/33.494 ms
All types of connectivity exists.
Now let’s use some show commands on vMX. Firstly, show evpn instance extensive:
Instance: evpn
Route Distinguisher: 1.1.1.1:1
Encapsulation type: VXLAN
MAC database status Local Remote
MAC advertisements: 6 2
MAC+IP advertisements: 16 3
Default gateway MAC advertisements: 6 0
Number of local interfaces: 1 (1 up)
Interface name ESI Mode Status AC-Role
lt-0/0/10.1 00:36:36:36:36:36:36:36:36:36 all-active Up Root
Number of IRB interfaces: 2 (2 up)
Interface name VLAN VNI Status L3 context
irb.100 100 Up vrf
irb.200 200 Up vrf
Number of bridge domains: 2
VLAN Domain ID Intfs / up IRB intf Mode MAC sync IM route label SG sync IM core nexthop
100 100 1 1 irb.100 Extended Enabled 100 Disabled
200 200 1 1 irb.200 Extended Enabled 200 Disabled
Number of neighbors: 1
Address MAC MAC+IP AD IM ES Leaf-label
11.11.11.11 2 3 2 2 0
Number of ethernet segments: 4
ESI: 00:00:00:00:00:11:11:11:11:11
Status: Resolved
Number of remote PEs connected: 1
Remote PE MAC label Aliasing label Mode
11.11.11.11 200 0 all-active
ESI: 00:36:36:36:36:36:36:36:36:36
Status: Resolved by IFL lt-0/0/10.1
Local interface: lt-0/0/10.1, Status: Up/Forwarding
Designated forwarder: 1.1.1.1
Last designated forwarder update: Sep 15 10:28:41
ESI: 00:77:77:77:77:77:77:77:77:77
Local interface: irb.100, Status: Up/Forwarding
ESI: 00:88:88:77:77:77:77:77:77:77
Local interface: irb.200, Status: Up/Forwarding
Router-ID: 1.1.1.1
Source VTEP interface IP: 1.1.1.1
Instance: mpls-evpn
Route Distinguisher: 1.1.1.1:111
Per-instance MAC route label: 299808
MAC database status Local Remote
MAC advertisements: 4 4
MAC+IP advertisements: 0 0
Default gateway MAC advertisements: 0 0
Number of local interfaces: 1 (1 up)
Interface name ESI Mode Status AC-Role
lt-0/0/10.2 00:36:36:36:36:36:36:36:36:36 all-active Up Root
Number of IRB interfaces: 0 (0 up)
Number of bridge domains: 2
VLAN Domain ID Intfs / up IRB intf Mode MAC sync IM route label SG sync IM core nexthop
100 1 1 Extended Enabled 299872 Disabled
200 1 1 Extended Enabled 299888 Disabled
Number of neighbors: 1
Address MAC MAC+IP AD IM ES Leaf-label
3.3.3.3 4 0 2 2 0
Number of ethernet segments: 2
ESI: 00:36:36:36:36:36:36:36:36:36
Status: Resolved by IFL lt-0/0/10.2
Local interface: lt-0/0/10.2, Status: Up/Forwarding
Designated forwarder: 1.1.1.1
Last designated forwarder update: Sep 15 09:40:16
Advertised MAC label: 299856
Advertised aliasing label: 299856
Advertised split horizon label: 299968
ESI: 00:99:88:99:88:99:88:99:88:00
Status: Resolved by NH 1048576
Number of remote PEs connected: 1
Remote PE MAC label Aliasing label Mode
3.3.3.3 22 22 all-active
Instance: evpn
Route Distinguisher: 3.3.3.3:3
Encapsulation type: VXLAN
MAC database status Local Remote
MAC advertisements: 6 2
MAC+IP advertisements: 15 0
Default gateway MAC advertisements: 6 0
Number of local interfaces: 1 (1 up)
Interface name ESI Mode Status AC-Role
lt-0/0/10.1 00:99:88:99:88:99:88:99:88:00 all-active Up Root
Number of IRB interfaces: 2 (2 up)
Interface name VLAN VNI Status L3 context
irb.100 1000 Up vrf
irb.200 2000 Up vrf
Number of bridge domains: 2
VLAN Domain ID Intfs / up IRB intf Mode MAC sync IM route label SG sync IM core nexthop
100 1000 1 1 irb.100 Extended Enabled 1000 Disabled
200 2000 1 1 irb.200 Extended Enabled 2000 Disabled
Number of neighbors: 1
Address MAC MAC+IP AD IM ES Leaf-label
33.33.33.33 2 0 2 2 0
Number of ethernet segments: 4
ESI: 00:03:03:03:03:03:03:03:03:03
Status: Resolved
Number of remote PEs connected: 1
Remote PE MAC label Aliasing label Mode
33.33.33.33 1000 0 all-active
ESI: 00:33:77:77:77:77:77:77:77:77
Local interface: irb.100, Status: Up/Forwarding
ESI: 00:33:88:77:77:77:77:77:77:77
Local interface: irb.200, Status: Up/Forwarding
ESI: 00:99:88:99:88:99:88:99:88:00
Status: Resolved by IFL lt-0/0/10.1
Local interface: lt-0/0/10.1, Status: Up/Forwarding
Designated forwarder: 3.3.3.3
Last designated forwarder update: Sep 15 10:29:43
Router-ID: 3.3.3.3
Source VTEP interface IP: 3.3.3.3
Instance: mpls-evpn
Route Distinguisher: 3.3.3.3:33
Per-instance MAC route label: 16
MAC database status Local Remote
MAC advertisements: 4 4
MAC+IP advertisements: 0 0
Default gateway MAC advertisements: 0 0
Number of local interfaces: 1 (1 up)
Interface name ESI Mode Status AC-Role
lt-0/0/10.2 00:99:88:99:88:99:88:99:88:00 all-active Up Root
Number of IRB interfaces: 0 (0 up)
Number of bridge domains: 2
VLAN Domain ID Intfs / up IRB intf Mode MAC sync IM route label SG sync IM core nexthop
100 1 1 Extended Enabled 23 Disabled
200 1 1 Extended Enabled 24 Disabled
Number of neighbors: 1
Address MAC MAC+IP AD IM ES Leaf-label
1.1.1.1 4 0 2 2 0
Number of ethernet segments: 2
ESI: 00:36:36:36:36:36:36:36:36:36
Status: Resolved by NH 1048578
Number of remote PEs connected: 1
Remote PE MAC label Aliasing label Mode
1.1.1.1 299856 299856 all-active
ESI: 00:99:88:99:88:99:88:99:88:00
Status: Resolved by IFL lt-0/0/10.2
Local interface: lt-0/0/10.2, Status: Up/Forwarding
Designated forwarder: 3.3.3.3
Last designated forwarder update: Sep 15 09:40:18
Advertised MAC label: 22
Advertised aliasing label: 22
Advertised split horizon label: 30
Note ESI for lt- and IRB interfaces for EVPN-VXLAN instance, and ESI for lt- only for EVPN-MPLS instance.
EVPN database:
Instance: evpn
VLAN DomainId MAC address Active source Timestamp IP address
100 00:00:5e:00:01:01 00:77:77:77:77:77:77:77:77:77 Sep 15 09:38:06 172.16.0.254
100 00:00:5e:00:02:01 00:77:77:77:77:77:77:77:77:77 Sep 15 09:38:06 2001:dead:beef:100::a
100 00:05:86:71:55:c0 00:00:00:00:00:11:11:11:11:11 Sep 15 10:28:51 172.16.0.22
100 00:05:86:71:8c:c0 00:36:36:36:36:36:36:36:36:36 Sep 15 11:09:14 172.16.0.33
2001:dead:beef:100::33
100 00:05:86:ed:72:f0 00:36:36:36:36:36:36:36:36:36 Sep 15 11:02:16 172.16.0.253
100 00:05:86:f6:e2:f0 irb.100 Sep 15 09:38:07 172.16.0.251
2001:dead:beef:100::1
fe80::205:8600:64f6:e2f0
200 00:00:5e:00:01:01 00:88:88:77:77:77:77:77:77:77 Sep 15 09:38:06 172.16.1.254
200 00:00:5e:00:02:01 00:88:88:77:77:77:77:77:77:77 Sep 15 09:38:06 2001:dead:beef:200::a
200 00:05:86:71:55:c0 00:00:00:00:00:11:11:11:11:11 Sep 15 10:42:55 172.16.1.22
2001:dead:beef:200::22
200 00:05:86:71:8c:c0 00:36:36:36:36:36:36:36:36:36 Sep 15 11:13:05 172.16.1.33
2001:dead:beef:200::33
200 00:05:86:ed:72:f0 00:36:36:36:36:36:36:36:36:36 Sep 15 11:02:41 172.16.1.253
200 00:05:86:f6:e2:f0 irb.200 Sep 15 09:44:25 172.16.1.251
2001:dead:beef:200::1
fe80::205:8600:c8f6:e2f0
Instance: mpls-evpn
VLAN DomainId MAC address Active source Timestamp IP address
100 00:05:86:71:55:c0 00:36:36:36:36:36:36:36:36:36 Sep 15 11:11:11
100 00:05:86:71:8c:c0 00:99:88:99:88:99:88:99:88:00 Sep 15 11:09:18
100 00:05:86:ed:72:f0 00:99:88:99:88:99:88:99:88:00 Sep 15 11:02:21
100 00:05:86:f6:e2:f0 00:36:36:36:36:36:36:36:36:36 Sep 15 11:09:14
200 00:05:86:71:55:c0 00:36:36:36:36:36:36:36:36:36 Sep 15 11:07:30
200 00:05:86:71:8c:c0 00:99:88:99:88:99:88:99:88:00 Sep 15 10:59:23
200 00:05:86:ed:72:f0 00:99:88:99:88:99:88:99:88:00 Sep 15 11:02:41
200 00:05:86:f6:e2:f0 00:36:36:36:36:36:36:36:36:36 Sep 15 11:08:27
alex@vMX3# run show evpn database
Instance: evpn
VLAN DomainId MAC address Active source Timestamp IP address
1000 00:00:5e:00:01:01 00:33:77:77:77:77:77:77:77:77 Sep 15 08:43:51 172.16.0.254
1000 00:00:5e:00:02:01 00:33:77:77:77:77:77:77:77:77 Sep 15 08:43:51 2001:dead:beef:100::a
1000 00:05:86:71:55:c0 00:99:88:99:88:99:88:99:88:00 Sep 15 11:13:53 172.16.0.22
2001:dead:beef:100::22
1000 00:05:86:71:8c:c0 00:03:03:03:03:03:03:03:03:03 Sep 15 10:29:25
1000 00:05:86:ed:72:f0 irb.100 Sep 15 08:43:52 172.16.0.253
2001:dead:beef:100::3
fe80::205:8600:64ed:72f0
1000 00:05:86:f6:e2:f0 00:99:88:99:88:99:88:99:88:00 Sep 15 11:09:19 172.16.0.251
2000 00:00:5e:00:01:01 00:33:88:77:77:77:77:77:77:77 Sep 15 08:43:51 172.16.1.254
2000 00:00:5e:00:02:01 00:33:88:77:77:77:77:77:77:77 Sep 15 08:43:51 2001:dead:beef:200::a
2000 00:05:86:71:55:c0 00:99:88:99:88:99:88:99:88:00 Sep 15 11:07:34 172.16.1.22
2001:dead:beef:200::22
2000 00:05:86:71:8c:c0 00:03:03:03:03:03:03:03:03:03 Sep 15 10:29:25
2000 00:05:86:ed:72:f0 irb.200 Sep 15 08:43:52 172.16.1.253
2001:dead:beef:200::3
fe80::205:8600:c8ed:72f0
2000 00:05:86:f6:e2:f0 00:99:88:99:88:99:88:99:88:00 Sep 15 11:08:28 172.16.1.251
Instance: mpls-evpn
VLAN DomainId MAC address Active source Timestamp IP address
100 00:05:86:71:55:c0 00:36:36:36:36:36:36:36:36:36 Sep 15 11:11:16
100 00:05:86:71:8c:c0 00:99:88:99:88:99:88:99:88:00 Sep 15 11:09:19
100 00:05:86:ed:72:f0 00:99:88:99:88:99:88:99:88:00 Sep 15 11:02:22
100 00:05:86:f6:e2:f0 00:36:36:36:36:36:36:36:36:36 Sep 15 10:59:01
200 00:05:86:71:55:c0 00:36:36:36:36:36:36:36:36:36 Sep 15 11:07:35
200 00:05:86:71:8c:c0 00:99:88:99:88:99:88:99:88:00 Sep 15 11:08:28
200 00:05:86:ed:72:f0 00:99:88:99:88:99:88:99:88:00 Sep 15 11:02:41
200 00:05:86:f6:e2:f0 00:36:36:36:36:36:36:36:36:36 Sep 15 11:08:32
MAC table:
MAC flags (S -static MAC, D -dynamic MAC, L -locally learned, C -Control MAC
O -OVSDB MAC, SE -Statistics enabled, NM -Non configured MAC, R -Remote PE MAC)
Routing instance : evpn
Bridging domain : v100, VLAN : 100
MAC MAC Logical Active
address flags interface source
00:05:86:71:55:c0 DR esi.594 00:00:00:00:00:11:11:11:11:11
00:05:86:71:8c:c0 DL lt-0/0/10.1
00:05:86:ed:72:f0 DL lt-0/0/10.1
MAC flags (S -static MAC, D -dynamic MAC, L -locally learned, C -Control MAC
O -OVSDB MAC, SE -Statistics enabled, NM -Non configured MAC, R -Remote PE MAC)
Routing instance : evpn
Bridging domain : v200, VLAN : 200
MAC MAC Logical Active
address flags interface source
00:05:86:71:55:c0 DR esi.594 00:00:00:00:00:11:11:11:11:11
00:05:86:71:8c:c0 DL lt-0/0/10.1
00:05:86:ed:72:f0 DL lt-0/0/10.1
MAC flags (S -static MAC, D -dynamic MAC, L -locally learned, C -Control MAC
O -OVSDB MAC, SE -Statistics enabled, NM -Non configured MAC, R -Remote PE MAC, P -Pinned MAC)
Routing instance : mpls-evpn
Bridging domain : bd100, VLAN : 100
MAC MAC Logical NH MAC
address flags interface Index property
00:05:86:71:55:c0 D lt-0/0/10.2
00:05:86:71:8c:c0 DC 1048576
00:05:86:ed:72:f0 DC 1048576
00:05:86:f6:e2:f0 D lt-0/0/10.2
MAC flags (S -static MAC, D -dynamic MAC, L -locally learned, C -Control MAC
O -OVSDB MAC, SE -Statistics enabled, NM -Non configured MAC, R -Remote PE MAC, P -Pinned MAC)
Routing instance : mpls-evpn
Bridging domain : bd200, VLAN : 200
MAC MAC Logical NH MAC
address flags interface Index property
00:05:86:71:55:c0 D lt-0/0/10.2
00:05:86:71:8c:c0 DC 1048576
00:05:86:ed:72:f0 DC 1048576
00:05:86:f6:e2:f0 D lt-0/0/10.2
alex@vMX3# run show bridge mac-table
MAC flags (S -static MAC, D -dynamic MAC, L -locally learned, C -Control MAC
O -OVSDB MAC, SE -Statistics enabled, NM -Non configured MAC, R -Remote PE MAC)
Routing instance : evpn
Bridging domain : bd100, VLAN : 100
MAC MAC Logical Active
address flags interface source
00:05:86:71:55:c0 DL lt-0/0/10.1
00:05:86:71:8c:c0 DR esi.689 00:03:03:03:03:03:03:03:03:03
00:05:86:f6:e2:f0 DL lt-0/0/10.1
MAC flags (S -static MAC, D -dynamic MAC, L -locally learned, C -Control MAC
O -OVSDB MAC, SE -Statistics enabled, NM -Non configured MAC, R -Remote PE MAC)
Routing instance : evpn
Bridging domain : bd200, VLAN : 200
MAC MAC Logical Active
address flags interface source
00:05:86:71:55:c0 DL lt-0/0/10.1
00:05:86:71:8c:c0 DR esi.689 00:03:03:03:03:03:03:03:03:03
00:05:86:f6:e2:f0 DL lt-0/0/10.1
MAC flags (S -static MAC, D -dynamic MAC, L -locally learned, C -Control MAC
O -OVSDB MAC, SE -Statistics enabled, NM -Non configured MAC, R -Remote PE MAC, P -Pinned MAC)
Routing instance : mpls-evpn
Bridging domain : bd100, VLAN : 100
MAC MAC Logical NH MAC
address flags interface Index property
00:05:86:71:55:c0 DC 1048578
00:05:86:71:8c:c0 D lt-0/0/10.2
00:05:86:ed:72:f0 D lt-0/0/10.2
00:05:86:f6:e2:f0 DC 1048578
MAC flags (S -static MAC, D -dynamic MAC, L -locally learned, C -Control MAC
O -OVSDB MAC, SE -Statistics enabled, NM -Non configured MAC, R -Remote PE MAC, P -Pinned MAC)
Routing instance : mpls-evpn
Bridging domain : bd200, VLAN : 200
MAC MAC Logical NH MAC
address flags interface Index property
00:05:86:71:55:c0 DC 1048578
00:05:86:71:8c:c0 D lt-0/0/10.2
00:05:86:ed:72:f0 D lt-0/0/10.2
00:05:86:f6:e2:f0 DC 1048578
Misc show commands:
INET MAC Logical Routing Bridging
address address interface instance domain
172.16.0.22 00:05:86:71:55:c0 irb.100 evpn v100
172.16.0.33 00:05:86:71:8c:c0 irb.100 evpn v100
172.16.0.253 00:05:86:ed:72:f0 irb.100 evpn v100
172.16.1.22 00:05:86:71:55:c0 irb.200 evpn v200
172.16.1.33 00:05:86:71:8c:c0 irb.200 evpn v200
172.16.1.253 00:05:86:ed:72:f0 irb.200 evpn v200
[edit]
alex@vMX1# run show l2-learning vxlan-tunnel-end-point esi
ESI RTT VLNBH INH ESI-IFL LOC-IFL #RVTEPs
00:00:00:00:00:11:11:11:11:11 evpn 594 1048581 esi.594 1
RVTEP-IP RVTEP-IFL VENH MASK-ID FLAGS
11.11.11.11 vtep.32769 577 0 2
ESI RTT VLNBH INH ESI-IFL LOC-IFL #RVTEPs
00:11:22:33:44:55:66:77:88:99 evpn 0 0 0
00:36:36:36:36:36:36:36:36:36 evpn 0 0 lt-0/0/10.1, 0
[edit]
alex@vMX1# run show l2-learning vxlan-tunnel-end-point source
Logical System Name Id SVTEP-IP IFL L3-Idx
<default> 0 1.1.1.1 lo0.0 0
L2-RTT Bridge Domain VNID MC-Group-IP
evpn v100+100 100 0.0.0.0
evpn v200+200 200 0.0.0.0
[edit]
alex@vMX1# run show l2-learning vxlan-tunnel-end-point remote
Logical System Name Id SVTEP-IP IFL L3-Idx
<default> 0 1.1.1.1 lo0.0 0
RVTEP-IP IFL-Idx NH-Id
11.11.11.11 332 577
VNID MC-Group-IP
200 0.0.0.0
100 0.0.0.0
alex@vMX3# run show bridge evpn arp-table
INET MAC Logical Routing Bridging
address address interface instance domain
172.16.0.22 00:05:86:71:55:c0 irb.100 evpn bd100
172.16.0.33 00:05:86:71:8c:c0 irb.100 evpn bd100
172.16.0.251 00:05:86:f6:e2:f0 irb.100 evpn bd100
172.16.1.22 00:05:86:71:55:c0 irb.200 evpn bd200
172.16.1.33 00:05:86:71:8c:c0 irb.200 evpn bd200
172.16.1.251 00:05:86:f6:e2:f0 irb.200 evpn bd200
[edit]
alex@vMX3# run show l2-learning vxlan-tunnel-end-point esi
ESI RTT VLNBH INH ESI-IFL LOC-IFL #RVTEPs
00:03:03:03:03:03:03:03:03:03 evpn 689 1048580 esi.689 1
RVTEP-IP RVTEP-IFL VENH MASK-ID FLAGS
33.33.33.33 vtep.32769 680 0 2
ESI RTT VLNBH INH ESI-IFL LOC-IFL #RVTEPs
00:99:88:99:88:99:88:99:88:00 evpn 0 0 lt-0/0/10.1, 0
[edit]
alex@vMX3# run show l2-learning vxlan-tunnel-end-point source
Logical System Name Id SVTEP-IP IFL L3-Idx
<default> 0 3.3.3.3 lo0.0 0
L2-RTT Bridge Domain VNID MC-Group-IP
evpn bd100+100 1000 0.0.0.0
evpn bd200+200 2000 0.0.0.0
[edit]
alex@vMX3# run show l2-learning vxlan-tunnel-end-point remote
Logical System Name Id SVTEP-IP IFL L3-Idx
<default> 0 3.3.3.3 lo0.0 0
RVTEP-IP IFL-Idx NH-Id
33.33.33.33 344 680
VNID MC-Group-IP
2000 0.0.0.0
1000 0.0.0.0
EVPN BGP routes:
Peer AS InPkt OutPkt OutQ Flaps Last Up/Dwn State|#Active/Received/Accepted/Damped...
3.3.3.3 65000 387 395 0 0 1:41:31 Establ
bgp.evpn.0: 8/8/8/0
evpn.evpn.0: 0/0/0/0
__default_evpn__.evpn.0: 0/0/0/0
bgp.l3vpn.0: 6/6/6/0
bgp.l3vpn-inet6.0: 4/4/4/0
vrf.inet.0: 2/6/6/0
vrf.inet6.0: 2/4/4/0
mpls-evpn.evpn.0: 8/8/8/0
11.11.11.11 65000 62 219 0 0 53:06 Establ
bgp.evpn.0: 6/6/6/0
evpn.evpn.0: 6/6/6/0
__default_evpn__.evpn.0: 0/0/0/0
mpls-evpn.evpn.0: 0/0/0/0
111.111.111.111 65000 201 380 0 0 1:41:00 Establ
bgp.evpn.0: 0/0/0/0
evpn.evpn.0: 0/0/0/0
__default_evpn__.evpn.0: 0/0/0/0
bgp.l3vpn.0: 1/1/1/0
bgp.l3vpn-inet6.0: 1/1/1/0
vrf.inet.0: 1/1/1/0
vrf.inet6.0: 1/1/1/0
mpls-evpn.evpn.0: 0/0/0/0
alex@vMX3# run show bgp summary
Peer AS InPkt OutPkt OutQ Flaps Last Up/Dwn State|#Active/Received/Accepted/Damped...
1.1.1.1 65000 396 386 0 0 1:41:44 Establ
bgp.l3vpn.0: 6/6/6/0
bgp.l3vpn-inet6.0: 4/4/4/0
bgp.evpn.0: 8/8/8/0
vrf.inet.0: 2/6/6/0
vrf.inet6.0: 2/4/4/0
evpn.evpn.0: 0/0/0/0
mpls-evpn.evpn.0: 8/8/8/0
__default_evpn__.evpn.0: 0/0/0/0
33.33.33.33 65000 57 200 0 0 52:19 Establ
bgp.evpn.0: 6/6/6/0
evpn.evpn.0: 6/6/6/0
mpls-evpn.evpn.0: 0/0/0/0
__default_evpn__.evpn.0: 0/0/0/0
111.111.111.111 65000 204 367 0 0 1:41:43 Establ
bgp.l3vpn.0: 1/1/1/0
bgp.l3vpn-inet6.0: 1/1/1/0
bgp.evpn.0: 0/0/0/0
vrf.inet.0: 1/1/1/0
vrf.inet6.0: 1/1/1/0
evpn.evpn.0: 0/0/0/0
mpls-evpn.evpn.0: 0/0/0/0
__default_evpn__.evpn.0: 0/0/0/0
192.168.1.1 65033 53 119 0 0 53:58 Establ
inet.0: 1/1/1/0
alex@vMX1# run show route table bgp.evpn.0
bgp.evpn.0: 14 destinations, 14 routes (14 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both
1:3.3.3.3:0::998899889988998800::FFFF:FFFF/192 AD/ESI
*[BGP/170] 01:43:06, localpref 100, from 3.3.3.3
AS path: I, validation-state: unverified
> to 10.0.0.1 via ge-0/0/0.0, Push 299824
1:3.3.3.3:33::998899889988998800::0/192 AD/EVI
*[BGP/170] 01:43:08, localpref 100, from 3.3.3.3
AS path: I, validation-state: unverified
> to 10.0.0.1 via ge-0/0/0.0, Push 299824
1:11.11.11.11:0::1111111111::FFFF:FFFF/192 AD/ESI
*[BGP/170] 00:54:29, localpref 100, from 11.11.11.11
AS path: I, validation-state: unverified
> to 192.168.0.1 via ge-0/0/1.0
1:11.11.11.11:1::1111111111::0/192 AD/EVI
*[BGP/170] 00:54:31, localpref 100, from 11.11.11.11
AS path: I, validation-state: unverified
> to 192.168.0.1 via ge-0/0/1.0
2:3.3.3.3:33::100::00:05:86:71:8c:c0/304 MAC/IP
*[BGP/170] 00:04:27, localpref 100, from 3.3.3.3
AS path: I, validation-state: unverified
> to 10.0.0.1 via ge-0/0/0.0, Push 299824
2:3.3.3.3:33::100::00:05:86:ed:72:f0/304 MAC/IP
*[BGP/170] 00:04:13, localpref 100, from 3.3.3.3
AS path: I, validation-state: unverified
> to 10.0.0.1 via ge-0/0/0.0, Push 299824
2:3.3.3.3:33::200::00:05:86:71:8c:c0/304 MAC/IP
*[BGP/170] 00:23:54, localpref 100, from 3.3.3.3
AS path: I, validation-state: unverified
> to 10.0.0.1 via ge-0/0/0.0, Push 299824
2:3.3.3.3:33::200::00:05:86:ed:72:f0/304 MAC/IP
*[BGP/170] 00:20:37, localpref 100, from 3.3.3.3
AS path: I, validation-state: unverified
> to 10.0.0.1 via ge-0/0/0.0, Push 299824
2:11.11.11.11:1::100::00:05:86:71:55:c0/304 MAC/IP
*[BGP/170] 00:54:54, localpref 100, from 11.11.11.11
AS path: I, validation-state: unverified
> to 192.168.0.1 via ge-0/0/1.0
2:11.11.11.11:1::200::00:05:86:71:55:c0/304 MAC/IP
*[BGP/170] 00:54:54, localpref 100, from 11.11.11.11
AS path: I, validation-state: unverified
> to 192.168.0.1 via ge-0/0/1.0
3:3.3.3.3:33::100::3.3.3.3/248 IM
*[BGP/170] 01:43:17, localpref 100, from 3.3.3.3
AS path: I, validation-state: unverified
> to 10.0.0.1 via ge-0/0/0.0, Push 299824
3:3.3.3.3:33::200::3.3.3.3/248 IM
*[BGP/170] 01:43:17, localpref 100, from 3.3.3.3
AS path: I, validation-state: unverified
> to 10.0.0.1 via ge-0/0/0.0, Push 299824
3:11.11.11.11:1::100::11.11.11.11/248 IM
*[BGP/170] 00:54:54, localpref 100, from 11.11.11.11
AS path: I, validation-state: unverified
> to 192.168.0.1 via ge-0/0/1.0
3:11.11.11.11:1::200::11.11.11.11/248 IM
*[BGP/170] 00:54:54, localpref 100, from 11.11.11.11
AS path: I, validation-state: unverified
> to 192.168.0.1 via ge-0/0/1.0
alex@vMX3# run show route table bgp.evpn.0
bgp.evpn.0: 14 destinations, 14 routes (14 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both
1:1.1.1.1:0::363636363636363636::FFFF:FFFF/192 AD/ESI
*[BGP/170] 01:43:28, localpref 100, from 1.1.1.1
AS path: I, validation-state: unverified
> to 10.0.0.2 via ge-0/0/0.0, Push 299808
1:1.1.1.1:111::363636363636363636::0/192 AD/EVI
*[BGP/170] 01:43:29, localpref 100, from 1.1.1.1
AS path: I, validation-state: unverified
> to 10.0.0.2 via ge-0/0/0.0, Push 299808
1:33.33.33.33:0::030303030303030303::FFFF:FFFF/192 AD/ESI
*[BGP/170] 00:53:48, localpref 100, from 33.33.33.33
AS path: I, validation-state: unverified
> to 192.168.1.1 via ge-0/0/1.0
1:33.33.33.33:33::030303030303030303::0/192 AD/EVI
*[BGP/170] 00:53:50, localpref 100, from 33.33.33.33
AS path: I, validation-state: unverified
> to 192.168.1.1 via ge-0/0/1.0
2:1.1.1.1:111::100::00:05:86:71:55:c0/304 MAC/IP
*[BGP/170] 00:12:24, localpref 100, from 1.1.1.1
AS path: I, validation-state: unverified
> to 10.0.0.2 via ge-0/0/0.0, Push 299808
2:1.1.1.1:111::100::00:05:86:f6:e2:f0/304 MAC/IP
*[BGP/170] 00:24:39, localpref 100, from 1.1.1.1
AS path: I, validation-state: unverified
> to 10.0.0.2 via ge-0/0/0.0, Push 299808
2:1.1.1.1:111::200::00:05:86:71:55:c0/304 MAC/IP
*[BGP/170] 00:16:05, localpref 100, from 1.1.1.1
AS path: I, validation-state: unverified
> to 10.0.0.2 via ge-0/0/0.0, Push 299808
2:1.1.1.1:111::200::00:05:86:f6:e2:f0/304 MAC/IP
*[BGP/170] 00:04:06, localpref 100, from 1.1.1.1
AS path: I, validation-state: unverified
> to 10.0.0.2 via ge-0/0/0.0, Push 299808
2:33.33.33.33:33::1000::00:05:86:71:8c:c0/304 MAC/IP
*[BGP/170] 00:54:15, localpref 100, from 33.33.33.33
AS path: I, validation-state: unverified
> to 192.168.1.1 via ge-0/0/1.0
2:33.33.33.33:33::2000::00:05:86:71:8c:c0/304 MAC/IP
*[BGP/170] 00:54:15, localpref 100, from 33.33.33.33
AS path: I, validation-state: unverified
> to 192.168.1.1 via ge-0/0/1.0
3:1.1.1.1:111::100::1.1.1.1/248 IM
*[BGP/170] 01:43:38, localpref 100, from 1.1.1.1
AS path: I, validation-state: unverified
> to 10.0.0.2 via ge-0/0/0.0, Push 299808
3:1.1.1.1:111::200::1.1.1.1/248 IM
*[BGP/170] 01:43:39, localpref 100, from 1.1.1.1
AS path: I, validation-state: unverified
> to 10.0.0.2 via ge-0/0/0.0, Push 299808
3:33.33.33.33:33::1000::33.33.33.33/248 IM
*[BGP/170] 00:54:15, localpref 100, from 33.33.33.33
AS path: I, validation-state: unverified
> to 192.168.1.1 via ge-0/0/1.0
3:33.33.33.33:33::2000::33.33.33.33/248 IM
*[BGP/170] 00:54:15, localpref 100, from 33.33.33.33
AS path: I, validation-state: unverified
> to 192.168.1.1 via ge-0/0/1.0
So, I think this is the most complex topic of all that may shows up on the JNCIE-DC lab.
But this is not so complex to implement it step by step if you understand all moving parts of it.
5 thoughts on “EVPN lab – EVPN-VXLAN to EVPN-MPLS stitching”
I am trying build this lab with Juniper 14.1 devices in my eve-ng but got very confused with device name and shared configuration. What is vMX-1 and vMX-3 in the diagram?
Many thanks for the articles, they are really great. Question though:
How does this cover type 5 EVPN routes that so that we have routing inside an EVPN instance and across DC’s?
It would initially seem to me that the lack of EVPN BGP NLRIs being shared across the LT interfaces would cause problems.
At the moment the LT interface is only L2 and has no BGP routing over it. It would seem that the current setup simply acts as an intelligent tunnel between DC sites. Thus it would seem that the EVPN-MPLS part simply sends the basic EVPN L2 reach-ability parts and the EVPN L3 parts are not in this style of config.
What would changes would need to be done to cover this aspect? or please highlight where Im missing.
In this design there are three separate (and completely independent) EVPN domains – two EVPN-VXLAN and EVPN-MPLS one. They see each other as a simple multihomed ethernet segment. Think of it as a Inter-AS Opt A in MPLS terms.
So, from the point of view of EVPN-VXLAN domain, EVPN-MPLS domain in the middle doesn’t do anything EVPN-related – it simply provides L2 connectivity between two DCs.
As for IRB functionality: there are two types of EVPN routing – symmetric and asymmetric.
In this example asymmetric routing is configured – routing is performed only in ingress EVPN PE, and packets transmitted via DCI already in destination network VNI. This type of routing doesn’t requires Type-5 routes, but requires full VNI set to be configured on every PE.
In case of symmetric routing there will be two routing lookups – on the ingress EVPN PE (to EVPN Type-5 route) and on the egress EVPN PE (to Type-2 Destination MAC/IP) .
Hello, what images are you using for vMX? Do you have file names? I have tried setting up vMX 18.2r1.9 in GNS3, but it’s not clear to me how to. Connected eth1 on pfe to em1 on re did not work as expected… No communication between those two.
Thanks!
Have you found any success stitching from a an evpn-vxlan virtual switch to individual evpn-mpls instances?