EVPN lab – EVPN-VXLAN to EVPN-MPLS stitching

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:

alex@vMX1# show routing-instances
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:

alex@vMX1# show interfaces
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:

alex@vMX1# show protocols bgp
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:

alex@vMX3# show routing-instances
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:

alex@vQFX1# show switch-options    
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:

alex@MX1# show interfaces
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:

alex@MX2# run ping 172.16.0.33 source 172.16.0.22 count 3
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:

alex@MX2# run ping 172.16.1.33 source 172.16.0.22 count 3                  
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:

alex@MX1# run show route table vrf.inet.0    

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:

alex@MX1# run ping routing-instance vrf source 172.16.11.11 count 3 172.16.0.22                  
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:

alex@vMX1# run 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
alex@vMX3# run show evpn instance extensive
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:

alex@vMX1# run show 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:

alex@vMX1# 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 : 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:

alex@vMX1# 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         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:

alex@vMX1# run show bgp summary
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

  1. 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?

  2. 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.

  3. 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) .

  4. 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!

Leave a Reply

Your email address will not be published. Required fields are marked *