BUM traffic to a multicast group without using PIM (shared VNI VXLAN interface)

Pieter Krul pkrul at tilaa.com
Sun Jul 7 16:19:56 UTC 2024


Greetings,

We have configured two VTEP endpoints, mux and stub, both in a pure L2 only
EVPN network, to send all BUM traffic to multicast group 239.0.0.1

These two configured VTEP endpoints are using shared VNI VXLAN interfaces.

There is no PIM involved. All traffic sent to 239.0.0.1 is then ingress-
replicated by an underlying network.

Both hosts are on AlmaLinux 8.10, kernel 4.18.0-553.8.1.el8_10.x86_64, with
FRR version 10.0.1

What we observed using tcpdump on the VXLAN interfaces of mux and stub, is
that the two VTEP endpoints advertise a type 3 EVPN route for VNI 2063, and
do not send traffic to the multicast group, but rather use ingress replication.

Since this is not what we expected;

Is it possible to send BUM traffic to a multicast group without using PIM,
while using shared VNI VXLAN interfaces?



Configuration:

#### FRR configuration (stub)

frr version 10.0
frr defaults traditional
hostname stub
log syslog
no ip forwarding
no ipv6 forwarding
!
router bgp 65101
 bgp router-id 10.11.0.20
 bgp log-neighbor-changes
 no bgp default ipv4-unicast
 bgp disable-ebgp-connected-route-check
 neighbor rrs peer-group
 neighbor rrs remote-as internal
 neighbor rrs update-source 10.11.0.20
 neighbor rrs capability extended-nexthop
 neighbor 10.11.0.19 peer-group rrs
 neighbor 10.11.0.19 disable-connected-check
 !
 address-family l2vpn evpn
  neighbor rrs activate
  neighbor rrs route-map dataplane out
  advertise-all-vni
 exit-address-family
exit
!
route-map dataplane permit 10
 set ipv4 vpn next-hop 10.111.111.2
exit
!


#### FRR configuration (mux)

frr version 10.0
frr defaults traditional
hostname mux
log syslog
no ip forwarding
no ipv6 forwarding
!
router bgp 65101
 bgp router-id 10.11.0.30
 bgp log-neighbor-changes
 no bgp default ipv4-unicast
 bgp disable-ebgp-connected-route-check
 neighbor rrs peer-group
 neighbor rrs remote-as internal
 neighbor rrs update-source 10.11.0.30
 neighbor rrs capability extended-nexthop
 neighbor 10.11.0.19 peer-group rrs
 neighbor 10.11.0.19 disable-connected-check
 !
 address-family l2vpn evpn
  neighbor rrs activate
  neighbor rrs route-map dataplane out
  advertise-all-vni
 exit-address-family
exit
!
route-map dataplane permit 10
 set ipv4 vpn next-hop 10.111.111.6
exit
!


####
Linux device configuration:

# ip link add dev br0 type bridge vlan_filtering 1 vlan_default_pvid 1 vlan_protocol 0x8100 vlan_stats_enabled 1 mcast_stats_enabled 1 vlan_stats_per_port 1

on stub:
# ip link add vxlan0 type vxlan external dstport 8472 dev vlan0 local 10.111.111.2 group 239.0.0.1 nolearning vnifilter

on mux:
# ip link add vxlan0 type vxlan external dstport 8472 dev vlan0 local 10.111.111.6 group 239.0.0.1 nolearning vnifilter

# ip link set dev vxlan0 master br0
# ip link set dev vxlan0 type bridge_slave vlan_tunnel on
# bridge vlan add dev vxlan0 vid 2063
# bridge vlan add dev vxlan0 vid 2063 tunnel_info id 2063


####
on stub: vtysh -c "show bgp l2vpn evpn route type 3 self-originate json" | jq .

 "10.11.0.20:17": {
    "rd": "10.11.0.20:17",
    "[3]:[0]:[32]:[10.111.111.2]": {
      "prefix": "[3]:[0]:[32]:[10.111.111.2]",
      "prefixLen": 352,
      "paths": [
        [
          {
            "valid": true,
            "bestpath": true,
            "selectionReason": "First path received",
            "pathFrom": "external",
            "routeType": 3,
            "ethTag": 0,
            "ipLen": 32,
            "ip": "10.111.111.2",
            "weight": 32768,
            "peerId": "(unspec)",
            "path": "",
            "origin": "IGP",
            "extendedCommunity": {
              "string": "ET:8 RT:65101:2063"
            },
            "nexthops": [
              {
                "ip": "10.111.111.2",
                "hostname": "stub",
                "afi": "ipv4",
                "used": true
              }
            ]
          }
        ]
      ]
    }
  }

####
on mux: # vtysh -c "show bgp l2vpn evpn route type 3 self-originate json" | jq .

  "10.11.0.30:19": {
    "rd": "10.11.0.30:19",
    "[3]:[0]:[32]:[10.111.111.6]": {
      "prefix": "[3]:[0]:[32]:[10.111.111.6]",
      "prefixLen": 352,
      "paths": [
        [
          {
            "valid": true,
            "bestpath": true,
            "selectionReason": "First path received",
            "pathFrom": "external",
            "routeType": 3,
            "ethTag": 0,
            "ipLen": 32,
            "ip": "10.111.111.6",
            "weight": 32768,
            "peerId": "(unspec)",
            "path": "",
            "origin": "IGP",
            "extendedCommunity": {
              "string": "ET:8 RT:65101:2063"
            },
            "nexthops": [
              {
                "ip": "10.111.111.6",
                "hostname": "mux",
                "afi": "ipv4",
                "used": true
              }
            ]
          }
        ]
      ]
    }
  }

####
on stub: # show evpn vni 2063

VNI: 2063
 Type: L2
 Vlan: 0
 Bridge: br0
 Tenant VRF: default
 VxLAN interface: vxlan0
 VxLAN ifIndex: 25
 SVI interface:
 SVI ifIndex: 0
 Local VTEP IP: 10.111.111.2
 Mcast group: 0.0.0.0   <-----------
 Remote VTEPs for this VNI:
  10.111.111.6 flood: HER
 Number of MACs (local and remote) known for this VNI: 2
 Number of ARPs (IPv4 and IPv6, local and remote) known for this VNI: 0
 Advertise-gw-macip: No
 Advertise-svi-macip: No


####
on mux: # vtysh -c "show evpn vni 2063"

VNI: 2063
 Type: L2
 Vlan: 0
 Bridge: br0
 Tenant VRF: default
 VxLAN interface: vxlan0
 VxLAN ifIndex: 8
 SVI interface:
 SVI ifIndex: 0
 Local VTEP IP: 10.111.111.6
 Mcast group: 0.0.0.0   <-----------
 Remote VTEPs for this VNI:
  10.111.111.2 flood: HER
 Number of MACs (local and remote) known for this VNI: 2
 Number of ARPs (IPv4 and IPv6, local and remote) known for this VNI: 0
 Advertise-gw-macip: No
 Advertise-svi-macip: No



With kind regards,

Pieter


More information about the frog mailing list