Comprehensive documentation of validated gNMI YANG paths for: - Interfaces, Loopbacks, VLANs (OpenConfig) - BGP with EVPN AFI (OpenConfig) - VXLAN VNI mappings (Arista experimental) - MLAG and EVPN config (Arista experimental) Includes examples, limitations, and key learnings. Closes partial requirement for #3
8.6 KiB
YANG Paths Reference for Arista EOS 4.35.0F
This document provides the complete reference of validated gNMI YANG paths for managing Arista EVPN-VXLAN fabrics.
Tested with: Arista cEOS 4.35.0F via gNMI (port 6030)
Quick Reference
| Feature | Model Type | Config | State | Subscribe ON_CHANGE |
|---|---|---|---|---|
| Interfaces | OpenConfig | ✅ | ✅ | ✅ |
| Loopbacks | OpenConfig | ✅ | ✅ | ✅ |
| VLANs | OpenConfig | ✅ | ✅ | ✅ |
| BGP | OpenConfig | ✅ | ✅ | ✅ |
| VXLAN | Arista Exp | ✅ | ✅ | ✅ |
| MLAG | Arista Exp | ✅ | ❌ | N/A |
| EVPN | Arista Exp | ✅ | ❌ | N/A |
Interfaces
Model: openconfig-interfaces
| Operation | Path |
|---|---|
| All interfaces | /interfaces/interface |
| Specific interface | /interfaces/interface[name=Ethernet1] |
| Interface config | /interfaces/interface[name=Ethernet1]/config |
| Interface state | /interfaces/interface[name=Ethernet1]/state |
| Oper status only | /interfaces/interface[name=Ethernet1]/state/oper-status |
| Admin status only | /interfaces/interface[name=Ethernet1]/state/admin-status |
| Interface counters | /interfaces/interface[name=Ethernet1]/state/counters |
Example: Get Interface State
gnmic -a 172.16.0.50:6030 -u admin -p admin --insecure \
get --path "/interfaces/interface[name=Ethernet1]/state"
Example: Subscribe to Interface Changes
gnmic -a 172.16.0.50:6030 -u admin -p admin --insecure \
subscribe --path "/interfaces/interface[name=Ethernet1]/state" \
--mode stream --stream-mode on-change
Loopbacks
Model: openconfig-interfaces
| Operation | Path |
|---|---|
| Loopback0 | /interfaces/interface[name=Loopback0] |
| Loopback1 (VTEP) | /interfaces/interface[name=Loopback1] |
| Loopback config | /interfaces/interface[name=Loopback0]/config |
VLANs
Model: openconfig-network-instance, openconfig-vlan
| Operation | Path |
|---|---|
| All VLANs | /network-instances/network-instance[name=default]/vlans/vlan |
| Specific VLAN | /network-instances/network-instance[name=default]/vlans/vlan[vlan-id=40] |
| VLAN config | /network-instances/network-instance[name=default]/vlans/vlan[vlan-id=40]/config |
| SVI interface | /interfaces/interface[name=Vlan40] |
BGP
Model: openconfig-bgp, openconfig-network-instance
Base Path
/network-instances/network-instance[name=default]/protocols/protocol[identifier=BGP][name=BGP]/bgp
Paths
| Operation | Path (relative to base) |
|---|---|
| BGP global config | /global/config |
| BGP global state | /global/state |
| Router ID | /global/config/router-id |
| AS number | /global/config/as |
| All neighbors | /neighbors/neighbor |
| Specific neighbor | /neighbors/neighbor[neighbor-address=10.0.1.0] |
| Neighbor state | /neighbors/neighbor[neighbor-address=10.0.1.0]/state |
| Neighbor session state | /neighbors/neighbor[neighbor-address=10.0.1.0]/state/session-state |
| IPv4 Unicast AFI | /neighbors/neighbor[neighbor-address=10.0.1.0]/afi-safis/afi-safi[afi-safi-name=IPV4_UNICAST] |
| EVPN AFI | /neighbors/neighbor[neighbor-address=10.0.1.0]/afi-safis/afi-safi[afi-safi-name=L2VPN_EVPN] |
Example: Get All BGP Neighbors State
gnmic -a 172.16.0.50:6030 -u admin -p admin --insecure \
get --path "/network-instances/network-instance[name=default]/protocols/protocol[identifier=BGP][name=BGP]/bgp/neighbors/neighbor/state"
Example: Subscribe to BGP Session Changes
gnmic -a 172.16.0.50:6030 -u admin -p admin --insecure \
subscribe \
--path "/network-instances/network-instance[name=default]/protocols/protocol[identifier=BGP][name=BGP]/bgp/neighbors/neighbor/state/session-state" \
--mode stream --stream-mode on-change
VXLAN
Model: arista-exp-eos-vxlan (augments openconfig-interfaces)
| Operation | Path |
|---|---|
| VXLAN interface | /interfaces/interface[name=Vxlan1] |
| VXLAN augment | /interfaces/interface[name=Vxlan1]/arista-vxlan |
| VXLAN config | /interfaces/interface[name=Vxlan1]/arista-vxlan/config |
| VXLAN state | /interfaces/interface[name=Vxlan1]/arista-vxlan/state |
| Source interface | /interfaces/interface[name=Vxlan1]/arista-vxlan/config/src-ip-intf |
| UDP port | /interfaces/interface[name=Vxlan1]/arista-vxlan/config/udp-port |
| All VLAN-to-VNI mappings | /interfaces/interface[name=Vxlan1]/arista-vxlan/vlan-to-vnis |
| Specific VNI mapping | /interfaces/interface[name=Vxlan1]/arista-vxlan/vlan-to-vnis/vlan-to-vni[vlan=40] |
| VRF-to-VNI (L3 VNI) | /interfaces/interface[name=Vxlan1]/arista-vxlan/vrf-to-vnis |
Example: Get VXLAN VNI Mappings
gnmic -a 172.16.0.50:6030 -u admin -p admin --insecure \
get --path "/interfaces/interface[name=Vxlan1]/arista-vxlan/vlan-to-vnis"
Example: Subscribe to VNI Changes
gnmic -a 172.16.0.50:6030 -u admin -p admin --insecure \
subscribe \
--path "/interfaces/interface[name=Vxlan1]/arista-vxlan/vlan-to-vnis" \
--mode stream --stream-mode on-change
MLAG
Model: arista-exp-eos-mlag
⚠️ Limitation: Only configuration is exposed via gNMI. Operational state (peer status, role, negotiation) requires eAPI.
| Operation | Path |
|---|---|
| Full MLAG | /arista/eos/mlag |
| MLAG config | /arista/eos/mlag/config |
Config Fields
| Field | Description |
|---|---|
domain-id |
MLAG domain identifier |
local-intf |
Local VLAN interface (e.g., Vlan4090) |
peer-address |
MLAG peer IP address |
peer-link-intf |
Peer-link port-channel |
dual-primary-action |
Action on dual-primary detection |
dual-primary-detection-delay |
Detection delay in seconds |
heartbeat-peer-address |
Heartbeat peer IP and VRF |
Example: Get MLAG Config
gnmic -a 172.16.0.50:6030 -u admin -p admin --insecure \
get --path "/arista/eos/mlag/config"
For MLAG State: Use eAPI
# MLAG state is NOT available via gNMI
# Use eAPI instead:
curl -X POST https://switch/command-api \
-d '{"jsonrpc":"2.0","method":"runCmds","params":{"cmds":["show mlag"]},"id":1}'
EVPN
Model: arista-exp-eos-evpn
⚠️ Limitation: Only configuration is exposed via gNMI. Learned routes and MACs require eAPI.
| Operation | Path |
|---|---|
| All EVPN | /arista/eos/evpn |
| EVPN instances | /arista/eos/evpn/evpn-instances |
| Specific instance | /arista/eos/evpn/evpn-instances/evpn-instance[name=40] |
Config Fields
| Field | Path |
|---|---|
| Name | .../evpn-instance[name=X]/config/name |
| Route Distinguisher | .../evpn-instance[name=X]/config/route-distinguisher |
| Redistribute | .../evpn-instance[name=X]/config/redistribute |
| Route Target Import | .../evpn-instance[name=X]/route-target/config/import |
| Route Target Export | .../evpn-instance[name=X]/route-target/config/export |
| VLANs | .../evpn-instance[name=X]/vlans/vlan |
Example: Get EVPN Config
gnmic -a 172.16.0.50:6030 -u admin -p admin --insecure \
get --path "/arista/eos/evpn"
Port-Channel / LAG
Model: openconfig-interfaces, openconfig-if-aggregate
| Operation | Path |
|---|---|
| Port-Channel interface | /interfaces/interface[name=Port-Channel999] |
| LAG config | /interfaces/interface[name=Port-Channel999]/aggregation/config |
| LAG state | /interfaces/interface[name=Port-Channel999]/aggregation/state |
| Member interfaces | /interfaces/interface[name=Ethernet1]/ethernet/config/aggregate-id |
Key Learnings
1. Path Prefix for Subscriptions
Use native paths without module prefix for ON_CHANGE subscriptions:
# ✅ Works
--path "/interfaces/interface[name=Ethernet1]/state"
# ❌ Does NOT work for ON_CHANGE
--path "/openconfig-interfaces:interfaces/interface[name=Ethernet1]/state"
2. Query Types
# Config only
gnmic get --path "/path" --type config
# State only
gnmic get --path "/path" --type state
# Both (default)
gnmic get --path "/path"
3. Depth Control
# Limit depth for exploration
gnmic get --path "/" --depth 1
gnmic get --path "/interfaces" --depth 2
4. Discovering Paths
# Start broad
gnmic get --path "/" --depth 1
# Explore branches
gnmic get --path "/arista/eos" --depth 1
# Use prompt mode with YANG models
gnmic --file EOS-4.35.0F/openconfig/public/release/models prompt