Hi,

Are the route-targets that are generated on the FRR side (*:VNI) being imported on the Juniper mac-vrf's? How are you mapping routes to VLANS that come from the kvm hosts? Remember, the routes don't include the ethernet tag, so all the VNI's that you advertise on a RT are combined into a single broadcast domain on FRR. Also, BUM traffic is not replicated to the correct VNI's on the Juniper side, because the ethernet tag is 0 on Type-3 routes as well... Maybe you could match on the auto derived RT (*:VNI) from FRR and set the Eth tag on the juniper side accordingly, similar to the workaround on FRR but the reverse? Keep in mind that I'm guessing, because I haven't done this myself. I don't know if this is possible.

In my opinion, it would be best to set service-type vlan-based on juniper and create mac-vrf's like vlans on there and enjoy the automation on FRR side.

eBGP or iBGP, should both work, I think. I use iBGP.

On 6/2/26 12:24, Julian Sluimann wrote:
Hi Júlíus,

Thanks for sharing the configuration and your overall ideas. We tested this 
configuration and switched back to iBGP in our setup.

Now, we are able to send traffic per VNI from host1 (attached to switch1) to 
host2 (attached to switch2). We also integrated a workaround we found regarding 
FRR: https://github.com/FRRouting/frr/issues/10460

While the VNI-to-VLAN mapping works perfectly within the Juniper environment, 
it still fails when sending VXLAN traffic from a KVM host to an L2 
VLAN-connected device on the switch.

Do you have any further ideas on this?


Von: Júlíus Þór Bess <[email protected]>
Datum: Freitag, 29. Mai 2026 um 15:13
An: [email protected] <[email protected]>
Betreff: Re: AW: AW: AW: AW: Re: VXLAN with EVPN Problem

- is there any reason not to configure multiple VNI/VLANs in a single
routing instance?

Mainly I would say is automation on FRR side. If you keep to one mac-vrf
per VNI, then you don't need any configuration in FRR. You just create
the VNI using your Linux tool of choice and it will pick up the created
vxlan dev and it's configured VNI from the kernel, create the
route-target and start forwarding packets. No need to enter vtysh and
map the VNI to the shared route-target.

- Is one L3 interface per VLAN absolutely required?

If the VNI's should be isolated bridge domains or just not routed from
the junipers, then you don't need the IRB interfaces, no.

On 5/29/26 12:55 PM, Julian Sluimann wrote:
We followed this blog post by Wido: 
https://wido.blog/2023/05/evpnbgpvxlan-between-junos-and-frr-with-cumulus/

  From your perspective, is there any reason not to configure multiple 
VNI/VLANs in a single routing instance? Is one L3 interface per VLAN absolutely 
required? We don't want to route between VLANs.

We'll test your configuration and let you know. 😊

Von: Júlíus Þór Bess <[email protected]>
Datum: Freitag, 29. Mai 2026 um 13:34
An: [email protected] <[email protected]>
Betreff: Re: AW: AW: AW: Re: VXLAN with EVPN Problem

Hi,

Can you provide a link to the blogpost?

Regarding the mac-vrf's... The Juniper technician might be unfamiliar
with vlan-based service-type. The most commonly used is vlan-bundle and
vlan-aware service-types. You rarely see vlan-based setup instructions
for Juniper.

It's not a convenient setup in regards to configuration on the juniper
side but it's not much different from creating a new vlan. You create
the mac-vrf and the vlan in that mac-vrf.

The main downside is how you map those vlans to interfaces, if you have
many interfaces and the switch is the edge. You need to use
"flexable-vlan-tagging" and "encapsulation extended-vlan-bridge", create
sub interfaces (unit) with the vlan tag and map each sub-interface to
that mac-vrf.

Example config:

routing-instance mvrf-10100:

instance-type mac-vrf;
protocols {
       evpn {
           encapsulation vxlan;
           default-gateway do-not-advertise;
       }
}
vtep-source-interface lo0.0;
service-type vlan-based;
route-distinguisher 10.1.1.1:100;
vrf-target target:65001:10100;
vlans {
       v100 {
           vlan-id 100;
           interface ae10.100;
           interface ae11.100;
           l3-interface irb.100;
           vxlan {
               vni 10100;
           }
       }
}

routing-instance mvrf-10105:

instance-type mac-vrf;
protocols {
       evpn {
           encapsulation vxlan;
           default-gateway do-not-advertise;
       }
}
vtep-source-interface lo0.0;
service-type vlan-based;
route-distinguisher 10.1.1.1:105;
vrf-target target:65001:10105;
vlans {
       v105 {
           vlan-id 105;
           interface ae10.105;
           interface ae11.105;
           l3-interface irb.105;
           vxlan {
               vni 10105;
           }
       }
}


trimmed layer 3 routing-instance:

instance-type vrf;
route-distinguisher 10.1.1.1:300001;
interface irb.100
interface irb.105


ae10:

flexible-vlan-tagging;
encapsulation extended-vlan-bridge;
unit 100{
       vlan-id 100;
}
unit 105{
       vlan-id 105;
}

ae11:

flexible-vlan-tagging;
encapsulation extended-vlan-bridge;
unit 100{
       vlan-id 100;
}
unit 105{
       vlan-id 105;
}

There may be another more convenient way of configuring this, I don't
know, I did not find another way to map vlan tags between physical
interfaces and mac-vrf's. If you do, please share it. :)


On 5/29/26 7:00 AM, Julian Sluimann wrote:
Thanks for the heads-up! Just to clarify: we want a 1:1 mapping. One
VLAN should correspond to exactly one VXLAN VNI.

The hint regarding Tag 0 was actually given to us by Juniper Support.
According to Juniper, the correct mapping from VNI to VLAN cannot take
place this way.
So, are you saying that FRR is doing the correct export here? What
surprises us is that both the RT and the VNI label are applied
correctly. This seems to be an issue between JunOS and FRR.

Creating a routing instance for each VNI is not practicable for us. We
adopted the Route Targets from a blog post by Wido.

Thanks for your help!

*Von: *Júlíus Þór Bess <[email protected]>
*Datum: *Donnerstag, 28. Mai 2026 um 17:30
*An: *[email protected] <[email protected]>
*Betreff: *Re: AW: AW: Re: VXLAN with EVPN Problem

FRR supports vlan-based service-type. That's the reason that type-2
routes don't include the VNI. The part after the colon in the RT's
refers to the VNI.

I haven't used vlan-aware bundle service-type myself but you might be
able to setup vlan-based service-type routing instances for each VNI
and import/export from there into your vlan-aware bundled instance.
Not very nice, but might get the job done. In that case route-targets
are automatically created on FRR side, so maybe that's a little
consolation. ;)

On 5/28/26 3:02 PM, Julian Sluimann wrote:

      Hi Júlíus,

      Yes, we intentionally use a single VLAN-aware bundle EVPN
      instance. We were advised to keep it simple in one shared setup.
      We do not need inter-VNI/VLAN routing, so splitting into multiple
      EVPN instances would just add unnecessary complexity for our use
      case. Our plan is to use VNIs as simple l2 domains - like VLAN. We
      don't have to split this into different routing instances, because
      they don't need to be isolated from one another.

      ip -d link show dev vxlan4004055
      19: vxlan4004055: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc
      noqueue master brvx-4004055 state UNKNOWN mode DEFAULT group
      default qlen 1000
          link/ether 36:d9:fe:f8:e0:6b brd ff:ff:ff:ff:ff:ff promiscuity
      1  allmulti 1 minmtu 68 maxmtu 65535
      info: Using default fan map value (33)
          vxlan id 4004055 local 10.66.200.2 srcport 0 0 dstport 4789
      nolearning ttl auto ageing 300 udpcsum noudp6zerocsumtx
      noudp6zerocsumrx
          bridge_slave state forwarding priority 32 cost 100 hairpin off
      guard off root_block off fastleave off learning on flood on
      port_id 0x8001 port_no 0x1 designated_port 32769 designated_cost 0
      designated_bridge 8000.92:49:a7:74:a0:f6 designated_root
      8000.92:49:a7:74:a0:f6 hold_timer    0.00 message_age_timer
       0.00 forward_delay_timer    0.00 topology_change_ack 0
      config_pending 0 proxy_arp off proxy_arp_wifi off mcast_router 1
      mcast_fast_leave off mcast_flood on bcast_flood on
      mcast_to_unicast off neigh_suppress off group_fwd_mask 0
      group_fwd_mask_str 0x0 vlan_tunnel off isolated off locked off
      addrgenmode eui64 numtxqueues 1 numrxqueues 1 gso_max_size 65536
      gso_max_segs 65535 tso_max_size 65536 tso_max_segs 65535
      gro_max_size 65536

      *Julian Sluimann*

      IT-Service

      Phone Icon
      0256498996-30
      Email Icon
      [email protected]


      epnox_logo.png
      Website Icon
      epnox.de
      Location Icon
      Stadtlohner Str. 6, 48691 Vreden

      epnox GmbH Stadtlohner Straße 6 48691 Vreden
      Geschäftsführer: Gerd Gevering | Christian Meiners | Nils Waning |
      Ust.-Nummer: DE351345026
      St.Nr.: 301/5813/2061 | HRB 20199 | zertifiziert nach: ISO 27001

      *Bitte prüfen Sie vorher, ob ein Ausdruck dieser E-Mail wirklich
      notwendig ist.*

      Diese E-Mail enthält vertrauliche und/oder rechtlich geschützte
      Informationen. Wenn Sie nicht der richtige Adressat sind oder
      diese E-Mail irrtümlich erhalten haben, informieren Sie bitte
      sofort den Absender und vernichten Sie diese Mail. Das unerlaubte
      Kopieren sowie die unbefugte Weitergabe dieser Mail ist nicht
      gestattet. This e-mail may contain confidential and/or privileged
      information. If you are not the intended recipient (or have
      received this e-mail in error) please notify the sender
      immediately and destroy this e-mail. Any unauthorised copying,
      disclosure or distribution of the material in this e-mail is
      strictly forbidden.

      *Von: *Júlíus Þór Bess <[email protected]>
      *Datum: *Donnerstag, 28. Mai 2026 um 16:30
      *An: *[email protected] <[email protected]>
      *Betreff: *Re: AW: Re: VXLAN with EVPN Problem

      Hi Julian,

      Why do you mix the VNI's into one RT? Are you trying to do vlan-bundle
      service type on the FRR side?

      Also, can you show ip -d link show dev <vxlan dev>

      On 5/28/26 11:53 AM, Julian Sluimann wrote:
      > Hey everyone,
      >
      > Yesterday we reviewed the whole situation together with Juniper
      support. According to them, the overall setup and configuration on
      the Juniper side looks correct. However, they suspect that the
      issue is related to how FRR advertises the EVPN routes.
      >
      > Specifically, the Type-2 routes received from FRR do not include
      the VNI in the route itself (see output below – EthTag/VNI is
      shown as "0"). The switch appears to recognize the VNI as a route
      label and learns the MAC addresses, but due to the missing VNI
      field it does not properly associate the MAC entries with the EVPN
      MAC-IP table. This would also explain why communication works
      locally on the same switch, but not across EVPN/VXLAN between the
      servers.
      >
      > The interesting part is that the VNI is shown correctly for the
      MAC address "48:a9:8a:ef:75:73". However, this device is not
      connected via VXLAN directly — it is a MikroTik board connected
      through a regular Layer-2 VLAN which is mapped into the VNI on the
      EX4650 side. Communication between the VMs and the MikroTik board
      is only partially working (75% packet loss). Only the two VM MAC
      addresses ("02:04:02:64:00:01" and "02:04:02:64:00:02") learned
      from FRR are missing the VNI information in the Type-2 routes:
      >
      > show bgp l2vpn evpn route type 2
      > BGP table version is 4, local router ID is 10.66.200.3
      > Network          Next Hop            Metric LocPrf Weight Path
      >                      Extended Community
      > Route Distinguisher: 10.65.200.240:100
      >   *>  [2]:[4004055]:[48]:[48:a9:8a:ef:75:73] RD 10.65.200.240:100
      > 10.65.200.240                          0 65400 i
      >                      RT:100:100 ET:8
      >
      > Route Distinguisher: 10.66.200.2:3
      >   *>  [2]:[0]:[48]:[02:04:02:64:00:01] RD 10.66.200.2:3
      > 10.66.200.2                            0 65400 65202 i
      >                      RT:100:100 ET:8
      >
      > Route Distinguisher: 10.66.200.3:3
      >   *>  [2]:[0]:[48]:[02:04:02:64:00:02] RD 10.66.200.3:3
      > 10.66.200.3                        32768 i
      >                      ET:8 RT:100:100
      >
      > Juniper’s statement was:
      >
      > “Based on our findings, it appears that the servers are not
      sending their Type-2 routes with the VNI included in the route,
      which may be preventing the creation of entries in the EVPN MAC-IP
      table. In addition, the next-hop entry seems to be missing from
      the PFE.”
      >
      > We also discussed this with another engineer who has extensive
      experience with Juniper and EVPN deployments. He also does not see
      a fundamental issue on the Juniper side, but unfortunately he has
      no practical experience with FRR in this specific scenario.
      >
      > Maybe some of you have experience with FRR? Do you use it in a
      similar way to us? Maybe we just missing a small detail in the config:
      >
      > !
      > frr version 10.6.0
      > frr defaults traditional
      > hostname cs-kvm-st-cl1-03
      > log syslog informational
      > log file /var/log/frr/debug.log debugging
      > service integrated-vtysh-config
      > !
      > ip prefix-list LOOPBACKS seq 10 permit 10.0.0.0/8 le 32
      > !
      > interface bond1
      >   ip ospf area 0.0.0.51
      >   ip ospf network point-to-point
      >   no ipv6 nd suppress-ra
      > exit
      > !
      > interface lo
      >   ip address 10.66.200.3/32
      > exit
      > !
      > router bgp 65203
      >   bgp router-id 10.66.200.3
      >   no bgp ebgp-requires-policy
      >   no bgp default ipv4-unicast
      >   no bgp network import-check
      >   neighbor uplinks peer-group
      >   neighbor uplinks remote-as external
      >   neighbor uplinks ebgp-multihop
      >   neighbor uplinks update-source lo
      >   neighbor 10.65.200.240 peer-group uplinks
      >   !
      >   address-family l2vpn evpn
      >    neighbor uplinks activate
      >    neighbor uplinks next-hop-self
      >    advertise-all-vni
      >    advertise ipv4 unicast
      >    vni 4004070
      >     route-target import 100:100
      >     route-target export 100:100
      >     proxy-arp
      >    exit-vni
      >    vni 4004055
      >     route-target import 100:100
      >     route-target export 100:100
      >     advertise-svi-ip
      >     proxy-arp
      >    exit-vni
      >    vni 10030864
      >     route-target import 100:100
      >     route-target export 100:100
      >     proxy-arp
      >    exit-vni
      >    advertise-svi-ip
      > exit-address-family
      > exit
      > !
      > router ospf
      >   ospf router-id 10.66.200.3
      >   redistribute connected route-map OSPF_EXPORT
      > exit
      > !
      > route-map OSPF_EXPORT permit 10
      >   match ip address prefix-list LOOPBACKS
      > exit
      > !
      > end
      >
      > Thanks for your help!
      >
      > Von: Julian Sluimann <[email protected]>
      > Datum: Dienstag, 19. Mai 2026 um 10:48
      > An: [email protected] <[email protected]>
      > Cc: Wido den Hollander <[email protected]>
      > Betreff: RE: Re: VXLAN with EVPN Problem
      >
      > Hey Wido!
      >
      > Thanks for reply!
      >
      >> I must say I have never tried with a JunOS VC, but why would
      you also?
      >> This is a full L3 setup, correct? Why add the VC of JunOS?
      > We are currently using two virtual chassis because it was an
      existing setup with running redundant L2 connections.
      > We still need these connections. Our plan was to migrate to a L3
      environment now. In a new setup we would use four single devices too.
      > Right now this is not possible because of production systems.
      >
      >> Which MACs, where? Who is your gateway?
      > We are seeing all mac-addresses on the right sides in evpn
      database. These are published to evpn fine.
      >
      >> Why not use this for the BGP session?
      > We are using a bond because of the virual chassis on the switch
      side. We wanted to use 2x25G connection. We are using OSPF to
      learn Loopback IPs of devices.
      > BGP connection via Loopback is the reason for one single bgp
      session between switch and kvm host.
      >
      >> Did you set a vtep-source under switch-options to lo0.0?
      > Yes, of course we set vtep Interface to loopback.
      >
      > set switch-options vtep-source-interface lo0.0
      >
      > Can you tell me something about your import/export rules or add
      a snippet too?
      > Right now we are not using any policies.
      >
      > Our next steps are: We will try to run bgp sessions via
      interface addresses without OSPF. We will try with a single spare
      device without VC.
      > We thought about using iBGP too but decided to use eBGP because
      of easier debugging.
      >
      > Thank you for your help!
      >
      > On 2026/05/19 04:14:35 Wido den Hollander via users wrote:
      >>
      >> Op 18-05-2026 om 11:25 schreef Julian Sluimann:
      >>> Hi everyone,
      >>>
      >>> We are currently trying to expand our L2 VLAN-based CloudStack
      environment to include EVPN VXLAN. We've run into a problem that
      we can't seem to solve…
      >>>
      >>> But right from the start: We are using two Juniper Virtual
      Chassis, each with two Juniper EX4650 switches. The KVM hosts
      (Ubuntu 24.04 with FRRouting 10.6.1) use an LACP bond (bond1) for
      guest traffic. We have included the script needed to create the
      bridges. The bridge is created correctly; we see traffic from the
      VM’s "vnet" interface passing through the bridge and then exiting
      the bond encapsulated in VXLAN. However, the traffic simply does
      not seem to arrive on the other side. It doesn't matter whether
      the KVM hosts are connected to the same switch chassis. If the KVM
      hosts communicate directly with each other via BGP, everything
      works without any problems.
      >>>
      >> I do see some problems with FRR <> JunOS communicating with
      BGP+EVPN,
      >> but it can work.
      >>
      >> I must say I have never tried with a JunOS VC, but why would
      you also?
      >> This is a full L3 setup, correct? Why add the VC of JunOS?
      >>
      >>> We noticed that the ARP table within the VM is not populated
      correctly. That's strange, because both the switches and the KVM
      hosts have filled their ARP tables with all the MAC addresses. But
      even if we add the missing MAC addresses of the VMs on both sides,
      they still cannot communicate with each other. That doesn't seem
      to be the problem, but perhaps it's a consequence of the actual
      problem?
      >> Which MACs, where? Who is your gateway?
      >>
      >> (see more below)
      >>
      >>> Our current FRR configuration looks like this:
      >>>
      >>> !
      >>> frr version 10.6.0
      >>> frr defaults traditional
      >>> hostname kvm-h1
      >>> log syslog informational
      >>> service integrated-vtysh-config
      >>> !
      >>> ip prefix-list LOOPBACKS seq 10 permit 10.0.0.0/8 le 32
      >>> !
      >>> interface bond1
      >>> ip ospf area 0.0.0.51
      >>> ip ospf network point-to-point
      >>> no ipv6 nd suppress-ra
      >>> exit
      >>> !
      >>> interface lo
      >>> ip address 10.66.200.3/32
      >>> exit
      >>> !
      >>> router bgp 65203
      >>> bgp router-id 10.66.200.3
      >>> no bgp ebgp-requires-policy
      >>> no bgp default ipv4-unicast
      >>> no bgp network import-check
      >>> neighbor uplinks peer-group
      >>> neighbor uplinks remote-as external
      >>> neighbor uplinks ebgp-multihop
      >>> neighbor uplinks update-source lo
      >> Correct? How does the EX learn this loopback address of the KVM
      host?
      >> Why not use the address of the interface for the uplink?
      >>
      >> And why a bond and not two seperate BGP sessions?
      >>
      >>> neighbor 10.65.200.250 peer-group uplinks
      >>> neighbor 10.65.200.250 description SWITCH1
      >>> !
      >>> address-family l2vpn evpn
      >>>     neighbor uplinks activate
      >>>     advertise-all-vni
      >>>     vni 10003168
      >>>       route-target import 100:100
      >>>       route-target export 100:100
      >>>       proxy-arp
      >>>     exit-vni
      >>>     advertise-svi-ip
      >>> exit-address-family
      >>> exit
      >>> !
      >>> router ospf
      >>> ospf router-id 10.66.200.3
      >>> redistribute connected route-map OSPF_EXPORT
      >>> exit
      >>> !
      >>> route-map OSPF_EXPORT permit 10
      >>> match ip address prefix-list LOOPBACKS
      >>> exit
      >>> !
      >>> end
      >>>
      >>> Our test VNI is 10003168. It contains two VMs, each on a
      different KVM host, which in turn are connected to two different
      virtual switches.
      >>>
      >>> The "bond1" interface is used, which is defined in the Netplan
      as follows:
      >>>
      >>>     bonds:
      >>>       bond1:
      >>>         mtu: "9000"
      >>>         interfaces:
      >>>         - ens2f1np1
      >>>         - eno3np1
      >>>         addresses:
      >>>         - "10.65.200.5/31"
      >> Why not use this for the BGP session?
      >>
      >>>         parameters:
      >>>           mode: "802.3ad"
      >>>           lacp-rate: "slow"
      >>>           transmit-hash-policy: "layer3+4"
      >>>
      >>> This is how our juniper configuration looks like:
      >>>
      >>> set protocols evpn no-core-isolation
      >>> set protocols evpn encapsulation vxlan
      >>> set protocols evpn default-gateway no-gateway-community
      >>> set protocols evpn duplicate-mac-detection detection-threshold 5
      >>> set protocols evpn duplicate-mac-detection detection-window 180
      >>> set protocols evpn duplicate-mac-detection auto-recovery-time 15
      >>> set protocols evpn multicast-mode ingress-replication
      >>> set protocols evpn extended-vni-list 4004070
      >>> set protocols evpn extended-vni-list 10003168
      >>>
      >>> set routing-options router-id 10.65.200.250
      >>> set switch-options vrf-target target:100:100
      >>> set switch-options route-distinguisher 10.65.200.250:100
      >> Did you set a vtep-source under switch-options to lo0.0?
      >>
      >>> Session to EX4650 VC2
      >>>
      >>> set protocols bgp group BGP-SW-to-SW multihop ttl 2
      >>> set protocols bgp group BGP-SW-to-SW multihop no-nexthop-change
      >>> set protocols bgp group BGP-SW-to-SW family inet unicast
      >>> set protocols bgp group BGP-SW-to-SW family evpn signaling
      >>> set protocols bgp group BGP-SW-to-SW neighbor 10.65.100.250
      description AS65100
      >>> set protocols bgp group BGP-SW-to-SW neighbor 10.65.100.250
      local-address 10.65.200.250
      >>> set protocols bgp group BGP-SW-to-SW neighbor 10.65.100.250
      peer-as 65100
      >>>
      >>> set protocols bgp group BGP-SW-to-KVM multihop ttl 2
      >>> set protocols bgp group BGP-SW-to-KVM multihop no-nexthop-change
      >>> set protocols bgp group BGP-SW-to-KVM family inet unicast
      >>> set protocols bgp group BGP-SW-to-KVM family evpn signaling
      >>> set protocols bgp group BGP-SW-to-KVM neighbor 10.66.200.3
      description "AS65203"
      >>> set protocols bgp group BGP-SW-to-KVM neighbor 10.66.200.3
      local-address 10.65.200.250
      >>> set protocols bgp group BGP-SW-to-KVM neighbor 10.66.200.3
      peer-as 65203
      >> A snippet of the config on a QFX5120
      >>
      >>
      >> group compute {
      >>       type external;
      >>       multihop {
      >>           no-nexthop-change;
      >>       }
      >>       accept-remote-nexthop;
      >>       import compute-in;
      >>       family inet {
      >>           unicast {
      >>               extended-nexthop;
      >>           }
      >>       }
      >>       family inet6 {
      >>           unicast;
      >>       }
      >>       family evpn {
      >>           signaling;
      >>       }
      >>       export compute-out;
      >>       neighbor 2a01:XXX:2:180::7 {
      >>           description compute0;
      >>           local-address 2a01:XXX:2:180::6;
      >>           peer-as 64650;
      >>       }
      >> }
      >>
      >> Here we peer over IPv6, so yes, slightly different.
      >>
      >>
      >>>> set protocols bgp local-as 65200
      >>> Does anyone have experience with EVPN-VXLAN and Juniper EX4650
      switches? It’s probably a really silly problem… but we just can’t
      figure it out.
      >> As said, the QFX5120 gave me some troubles as well, but it works!
      >>
      >> Wido
      >>
      >>> Thanks!
      >>>
      >>

Reply via email to