MGMT · management · draft
Telemetry
Model-driven streaming telemetry (YANG-Push)
Subscribe to YANG-modeled state with periodic SAMPLE or ON_CHANGE updates instead of polling every leaf with SNMP.
Presenter modeEmbed this figure
Why it exists
Polling every interesting leaf with SNMP or NETCONF <get> does not scale for high-churn state. Streaming subscriptions push updates when configured triggers fire. IntroductionRFC 8641 · PROPOSED STANDARD · September 2019
Vendor MDT and gNMI are widespread. This module teaches IETF YANG-Push (RFC 8641) as the standards reference and calls out vendor dialects explicitly. Cisco IOS XE — Model-Driven Telemetry §Model-Driven Telemetry
Periodic SAMPLE subscription
A YANG-Push receiver establishes a subscription with period and encoding. The publisher pushes updates on that cadence for the selected datastore filters.
Using NETCONF (or another supporting session), the receiver establishes a subscription: datastore, filter (xpath/subtree), and update-trigger period for SAMPLE. Receiver / collector. Publisher.
- Link
- Blocking
- Packet in flight
- Discarded
- Emphasis
Text equivalent of this diagram
| Element | Kind | State |
|---|---|---|
| Receiver / collector | host | — |
| Publisher | router | — |
| Receiver / collector — Publisher | link | up |
Using NETCONF (or another supporting session), the receiver establishes a subscription: datastore, filter (xpath/subtree), and update-trigger period for SAMPLE.
What changed
- establish-subscription: Receiver / collector → Publisher
- SAMPLE period set
How it works
RFC 8639 defines subscription to YANG notifications; RFC 8641 specializes that for datastore push (YANG-Push) with SAMPLE and ON_CHANGE triggers. IntroductionRFC 8639 · PROPOSED STANDARD · September 2019
A receiver establishes a subscription with filters and an update trigger. The publisher sends push updates over the management session. Solution OverviewRFC 8641 · PROPOSED STANDARD · September 2019
NETCONF (RFC 6241) often provides the session used to manage subscriptions; telemetry does not replace <edit-config> for writing configuration. Protocol OperationsRFC 6241 · PROPOSED STANDARD · June 2011
On the wire
Constructed examples, encoded from the field table below them — not captured traffic.
- TCP
- Options, if any, follow this header and are covered by the data offset. RFC 9293
Configure it
telemetry ietf subscription 101 encoding encode-kvgpb filter xpath /interfaces-ios-xe-oper:interfaces/interface source-address 192.0.2.1 stream yang-push update-policy periodic 1000 receiver-type protocol receiver name COLLECTORPeriodic updates for a YANG filter. Period is in centiseconds on many IOS-XE trains — confirm units for the release. This teaches SAMPLE cadence; encoding may be vendor MDT rather than RFC 8641 XML.
Common mistake: Pointing a YANG-Push-only collector at gRPC/kvGPB dial-out without a matching decoder.
RFC 8641 §3.5
telemetry receiver protocol COLLECTOR host 198.51.100.20 57500 protocol grpc-tcpDial-out receiver definition. Match transport and port to the collector; ACL the source.
Cisco IOS XE — Model-Driven Telemetry §Model-Driven Telemetry
Verify
show telemetry ietf subscription 101 detail- Subscription valid; receiver connected or connecting.
show telemetry receiver name COLLECTOR- Receiver state and counters incrementing.
Caveats
- Marked draft: MDT CLI and encodings vary widely by IOS-XE release.
- Honest proprietary note: this may be vendor MDT/gRPC, not pure RFC 8641 YANG-Push on the wire.
When it breaks
Symptom first, because that is what you have when it happens.
Publisher CPU spikes and updates delay or drop.
Narrow it down
- List active subscriptions and periods.
- Narrow xpath/subtree filters and lengthen SAMPLE periods.
Cause
Too many leaves or too aggressive cadence for the platform.
Fix
Reduce filter scope and rate; split subscriptions across receivers if needed.
Data EncodingsRFC 8641 · PROPOSED STANDARD · September 2019Monitoring marks telemetry down during long ON_CHANGE silence.
Narrow it down
- Confirm subscription state and transport session.
- Check whether monitored objects actually changed.
Cause
Alerting treated absence of deltas as failure.
Fix
Add liveness checks; optionally pair ON_CHANGE with a slow SAMPLE heartbeat.
On-Change ConsiderationsRFC 8641 · PROPOSED STANDARD · September 2019Collector cannot parse “telemetry” from a working device export.
Narrow it down
- Identify whether the device speaks YANG-Push, gNMI, or vendor MDT.
- Match encoding (XML/JSON/protobuf) to the collector.
Cause
Assuming IETF YANG-Push wire format for a vendor MDT/gNMI stream.
Fix
Configure the collector for the actual dialect; do not rename protocols in docs.
Cisco IOS XE — Model-Driven Telemetry §Model-Driven TelemetrySubscription establishes but updates are empty.
Narrow it down
- Validate xpath/subtree against the device’s YANG library.
- Confirm datastore (operational vs running) selection.
Cause
Filter matches no nodes or the wrong datastore.
Fix
Correct the path and datastore; verify with a one-shot get of the same filter.
Defining the Selection with a DatastoreRFC 8641 · PROPOSED STANDARD · September 2019Team expects telemetry to push configuration changes.
Narrow it down
- Separate observe subscriptions from NETCONF/RESTCONF edit workflows.
- Confirm the related configuration and counters.
Cause
Streaming telemetry is not a configuration write protocol.
Fix
Use NETCONF/RESTCONF (or vendor config API) for writes; telemetry for state.
Protocol OperationsRFC 6241 · PROPOSED STANDARD · June 2011
Design notes
ON_CHANGE silence can be healthy. Instrument session and subscription liveness separately from “no deltas.”
Filter breadth and period (or change rate) determine CPU and bandwidth. Treat subscriptions as production load, not free observability. Defining the Selection with a DatastoreRFC 8641 · PROPOSED STANDARD · September 2019
Misconceptions
- “No ON_CHANGE updates means telemetry is broken.”
- ON_CHANGE emits on change. Stable state yields silence; verify session and subscription state separately. On-Change ConsiderationsRFC 8641 · PROPOSED STANDARD · September 2019
- “Vendor MDT is the same protocol as RFC 8641 YANG-Push.”
- They share the subscribe-to-YANG idea. Session, API, and encoding often differ — especially gNMI/gRPC dial-out. Cisco IOS XE — Model-Driven Telemetry §Model-Driven Telemetry
- “Telemetry replaces NETCONF entirely.”
- Telemetry observes. Configuration datastore writes remain NETCONF/RESTCONF (or equivalents). IntroductionRFC 6241 · PROPOSED STANDARD · June 2011
More walkthroughs
ON_CHANGE silence is not always failurefailure
ON_CHANGE subscriptions emit when values change (with dampening rules). A quiet stream can mean healthy stability — or a dead subscription. Operators must distinguish the two.
The subscription uses ON_CHANGE. Updates are event-driven for the selected objects, not wall-clock periodic samples of every leaf. Receiver. Publisher · ON_CHANGE. Silence?.
- Link
- Blocking
- Packet in flight
- Discarded
- Emphasis
Text equivalent of this diagram
| Element | Kind | State |
|---|---|---|
| Receiver | host | — |
| Publisher · ON_CHANGE | router | — |
| Silence? | zone | — |
| Receiver — Publisher · ON_CHANGE | link | up |
| Publisher · ON_CHANGE — Silence? | link | up |
The subscription uses ON_CHANGE. Updates are event-driven for the selected objects, not wall-clock periodic samples of every leaf.
What changed
- subscription · ON_CHANGE: Receiver → Publisher · ON_CHANGE
- Event-driven push
Vendor MDT / gNMI versus IETF YANG-Pushcomparison
Many platforms ship model-driven telemetry over gRPC/gNMI or proprietary dial-out. The teaching idea — subscribe to YANG paths — is shared; the session and encoding often are not RFC 8641 on the wire.
Both approaches push modeled state to a collector instead of polling. Filters, cadence, and encoding still define correctness. YANG-Push · RFC 8641. Device. MDT / gNMI.
- Link
- Blocking
- Packet in flight
- Discarded
- Emphasis
Text equivalent of this diagram
| Element | Kind | State |
|---|---|---|
| YANG-Push · RFC 8641 | cloud | — |
| Device | router | — |
| MDT / gNMI | cloud | — |
| Device — YANG-Push · RFC 8641 | link | up |
| Device — MDT / gNMI | link | up |
Both approaches push modeled state to a collector instead of polling. Filters, cadence, and encoding still define correctness.
What changed
- Push, do not poll