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

IntroductionRFC 8641 · PROPOSED STANDARD · September 2019Solution OverviewRFC 8641 · PROPOSED STANDARD · September 2019IntroductionRFC 8639 · PROPOSED STANDARD · September 2019IntroductionRFC 6241 · PROPOSED STANDARD · June 2011

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.

Receiver / collectorPublisherSAMPLE period set
  • Link
  • Blocking
  • Packet in flight
  • Discarded
  • Emphasis
Select a device to read its state. Arrow keys walk the topology.
Text equivalent of this diagram
Devices and links at this step
ElementKindState
Receiver / collectorhost
Publisherrouter
Receiver / collectorPublisherlinkup
1 / 3

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.

A BGP session’s first segment: SYN set, ACK clear, data offset 5, destination port 179.

TCP
Options, if any, follow this header and are covered by the data offset. RFC 9293

Configure it

Dial-out MDT subscription with SAMPLE-like period toward a receiver.

Cisco IOS-XE 17.12 · Catalyst 9300, Catalyst 8000draft

  1. 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 COLLECTOR

    Periodic 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

  2. telemetry receiver protocol COLLECTOR
     host 198.51.100.20 57500 protocol grpc-tcp

    Dial-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.

  1. Publisher CPU spikes and updates delay or drop.

    Narrow it down

    1. List active subscriptions and periods.
    2. 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 2019
  2. Monitoring marks telemetry down during long ON_CHANGE silence.

    Narrow it down

    1. Confirm subscription state and transport session.
    2. 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 2019
  3. Collector cannot parse “telemetry” from a working device export.

    Narrow it down

    1. Identify whether the device speaks YANG-Push, gNMI, or vendor MDT.
    2. 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 Telemetry
  4. Subscription establishes but updates are empty.

    Narrow it down

    1. Validate xpath/subtree against the device’s YANG library.
    2. 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 2019
  5. Team expects telemetry to push configuration changes.

    Narrow it down

    1. Separate observe subscriptions from NETCONF/RESTCONF edit workflows.
    2. 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?.

ReceiverPublisher · ON_CHANGEEvent-driven pushSilence?
  • Link
  • Blocking
  • Packet in flight
  • Discarded
  • Emphasis
Select a device to read its state. Arrow keys walk the topology.
Text equivalent of this diagram
Devices and links at this step
ElementKindState
Receiverhost
Publisher · ON_CHANGErouter
Silence?zone
ReceiverPublisher · ON_CHANGElinkup
Publisher · ON_CHANGESilence?linkup
1 / 3

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.

YANG-Push · RFC 8641DevicePush, do not pollMDT / gNMI
  • Link
  • Blocking
  • Packet in flight
  • Discarded
  • Emphasis
Select a device to read its state. Arrow keys walk the topology.
Text equivalent of this diagram
Devices and links at this step
ElementKindState
YANG-Push · RFC 8641cloud
Devicerouter
MDT / gNMIcloud
DeviceYANG-Push · RFC 8641linkup
DeviceMDT / gNMIlinkup
1 / 3

Both approaches push modeled state to a collector instead of polling. Filters, cadence, and encoding still define correctness.

What changed

  • Push, do not poll

Check yourself

  • What does a SAMPLE subscription primarily control?
  • When does ON_CHANGE typically emit an update?
  • Why can an ON_CHANGE stream stay quiet while the device is healthy?
  • Are Cisco MDT / gNMI streams guaranteed to be RFC 8641 on the wire?
  • Which protocol family is for configuration writes, not just observation?
  • What usually causes empty telemetry updates after a “successful” subscribe?
  • How does streaming telemetry differ from classic SNMP polling?
  • Which RFC specializes datastore push subscriptions (YANG-Push)?