Improve table readability by aligning columns with consistent spacing and proper markdown table formatting throughout the YANG paths reference documentation.
12 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