Files
arista-evpn-vxlan-clab/monitoring/VXLAN_DISCOVERY_SUCCESS.md

6.4 KiB

VXLAN Telemetry Discovery - SUCCESS! 🎉

What We Discovered

The path /interfaces/interface[name=Vxlan1] WORKS and returns rich VXLAN data including Arista's arista-exp-eos-vxlan augmentation!

Test Command

gnmic -a 172.16.0.25:6030 -u admin -p admin --insecure \
  get --path /interfaces/interface[name=Vxlan1]

Response Structure

{
  "interfaces/interface": {
    "arista-exp-eos-vxlan:arista-vxlan": {
      "config": {
        "src-ip-intf": "Loopback1",
        "udp-port": 4789,
        "mac-learn-mode": "LEARN_FROM_ANY",
        ...
      },
      "state": {
        "src-ip-intf": "Loopback1",
        "udp-port": 4789,
        ...
      },
      "vlan-to-vnis": {
        "vlan-to-vni": [
          {
            "vlan": 40,
            "vni": 110040,
            "state": {...},
            "config": {...}
          }
        ]
      }
    },
    "openconfig-interfaces:config": {...},
    "openconfig-interfaces:state": {...}
  }
}

VXLAN Metrics Available

1. VNI-to-VLAN Mappings

From arista-vxlan.vlan-to-vnis.vlan-to-vni[]:

# Metrics will be like:
gnmic_vxlan_interfaces_interface_arista_vxlan_vlan_to_vnis_vlan_to_vni_state_vlan{source="leaf1"}
gnmic_vxlan_interfaces_interface_arista_vxlan_vlan_to_vnis_vlan_to_vni_state_vni{source="leaf1"}

Use Case: Know which VLANs are mapped to which VNIs on each VTEP

2. VXLAN Source Interface

From arista-vxlan.state.src-ip-intf:

gnmic_vxlan_interfaces_interface_arista_vxlan_state_src_ip_intf{source="leaf1"} = "Loopback1"

Use Case: Verify correct loopback is used for VTEP source

3. VXLAN UDP Port

From arista-vxlan.state.udp-port:

gnmic_vxlan_interfaces_interface_arista_vxlan_state_udp_port{source="leaf1"} = 4789

Use Case: Verify standard VXLAN port configuration

4. MAC Learning Mode

From arista-vxlan.state.mac-learn-mode:

gnmic_vxlan_interfaces_interface_arista_vxlan_state_mac_learn_mode{source="leaf1"} = "LEARN_FROM_ANY"

Use Case: Verify MAC learning configuration

5. MLAG Configuration

From arista-vxlan.state.mlag-shared-router-mac-config:

gnmic_vxlan_interfaces_interface_arista_vxlan_state_mlag_shared_router_mac_config{source="leaf1"}

Use Case: MLAG-specific VXLAN settings

Updated gnmic Configuration

The updated gnmic.yaml now includes:

subscriptions:
  vxlan:
    paths:
      - /interfaces/interface[name=Vxlan1]
    mode: stream
    stream-mode: on_change  # Config changes are infrequent
    encoding: json_ietf

Key points:

  • Uses on_change streaming (VNI mappings don't change often)
  • Only subscribed on leaf switches (spines don't have VXLAN)
  • Captures full Arista VXLAN augmentation

Grafana Dashboard Queries

VNI Count per VTEP

# Count active VNIs per leaf
count by (source, vtep) (
  gnmic_vxlan_interfaces_interface_arista_vxlan_vlan_to_vnis_vlan_to_vni_state_vni
)

VNI-to-VLAN Mapping Table

Create a table visualization with:

# Show VNI -> VLAN mappings
gnmic_vxlan_interfaces_interface_arista_vxlan_vlan_to_vnis_vlan_to_vni_state_vni

Format columns:

  • source = Device name
  • vlan = VLAN ID
  • Value = VNI number

VXLAN Configuration Check

# Check if all leaves use Loopback1
gnmic_vxlan_interfaces_interface_arista_vxlan_state_src_ip_intf

# Check if all use standard UDP port 4789
gnmic_vxlan_interfaces_interface_arista_vxlan_state_udp_port

Combined VXLAN Health Dashboard

Combine with existing metrics:

# VXLAN tunnel bandwidth
rate(gnmic_interfaces_interface_state_counters_out_octets{interface_name="Vxlan1"}[1m]) * 8

# VXLAN tunnel errors
rate(gnmic_interfaces_interface_state_counters_in_errors{interface_name="Vxlan1"}[5m])

# VXLAN interface status
gnmic_interfaces_interface_state_oper_status{interface_name="Vxlan1"}

# VNI count
count by (source) (gnmic_vxlan_interfaces_interface_arista_vxlan_vlan_to_vnis_vlan_to_vni_state_vni)

# EVPN neighbor count (VTEP reachability)
count by (source) (gnmic_bgp_neighbors_neighbor_state_session_state{afi_safi_name="L2VPN_EVPN"} == 6)

Benefits Over Previous Approach

Before (Without VXLAN Subscription)

  • Vxlan1 interface traffic
  • BGP EVPN neighbors
  • No VNI-to-VLAN visibility
  • No VXLAN config verification

Now (With VXLAN Subscription)

  • Vxlan1 interface traffic
  • BGP EVPN neighbors
  • VNI-to-VLAN mappings
  • VXLAN source interface
  • UDP port configuration
  • MAC learning mode
  • MLAG VXLAN settings

Deployment

cd monitoring
docker-compose restart gnmic

# Verify VXLAN subscription is working
docker logs gnmic | grep vxlan

# Check metrics
curl http://localhost:9804/metrics | grep vxlan | head -20

# Expected metrics:
# gnmic_vxlan_interfaces_interface_arista_vxlan_state_src_ip_intf{...}
# gnmic_vxlan_interfaces_interface_arista_vxlan_state_udp_port{...}
# gnmic_vxlan_interfaces_interface_arista_vxlan_vlan_to_vnis_vlan_to_vni_state_vni{...}
# gnmic_vxlan_interfaces_interface_arista_vxlan_vlan_to_vnis_vlan_to_vni_state_vlan{...}

Why This Works

  1. Arista augments OpenConfig - arista-exp-eos-vxlan adds VXLAN-specific data to the standard interface model
  2. Vxlan1 is a real interface - It's in the standard /interfaces/interface tree
  3. OpenConfig + native data - We get both OpenConfig state AND Arista-specific VXLAN config

This is the best of both worlds - standard OpenConfig paths with vendor-specific augmentations!

What About Other Native Paths?

The paths we tested that didn't work:

  • /Sysdb/bridging/vxlan/status - Requires provider eos-native
  • /Smash/bridging/vxlan - Not exposed via gNMI

These require additional configuration on the switches:

management api gnmi
   transport grpc default
      provider eos-native

But we don't need them! The Vxlan1 interface path gives us everything we need.

Summary

🎉 Success! We discovered that:

  1. /interfaces/interface[name=Vxlan1] works perfectly
  2. Returns rich VXLAN data via Arista augmentations
  3. Includes VNI-to-VLAN mappings, source interface, and config
  4. No need for native eos-native provider paths

Your monitoring stack now has complete VXLAN visibility including:

  • VXLAN tunnel traffic (already had)
  • VTEP reachability via BGP EVPN (already had)
  • VNI-to-VLAN mappings (NEW!)
  • VXLAN configuration verification (NEW!)

Deploy with confidence! 🚀