Example: Configure Event-driven Telemetry for LLDP

Telemetry supports NETCONF event notifications where the NETCONF client is configured to receive event notifications from a NETCONF server through a subscription. The NETCONF client must subscribe using a create-subscription request. Currently, only the events from Link Layer Discovery Protocol (LLDP) is supported. These event notifications are sent until either the NETCONF session or the subscription is terminated.


Note


Configuring a sensor group and a subscription is not required for receiving NETCONF notifications. While sensor path and subscription configurations are required for receiving telemetry events, NETCONF create-subscription is required for receiving NETCONF notifications.


To generate NETCONF notifications:
  1. Enable NETCONF agent and SSH sub system.
    
    ssh server netconf
    netconf-yang agent ssh
    
  2. Enable model-driven telemetry.
    
    telemetry model-driven
    
  3. Enable LLDP.
    lldp
    

This example shows event-driven telemetry fo LLDP configuration data.

  1. Create a destination group.
    
    grpc
    port 56782
    address-family ipv4
    !
    telemetry model-driven
    destination-group <destination-udp>
      address-family ipv4 <client-ip>1 port <udp port num>
       encoding self-describing-gpb
       protocol udp
      !
    !
    destination-group <destination-tcp>
      address-family ipv4 <client-ip> port <tcp port num>
       encoding gpb
       protocol tcp
      !
    destination-group <destination-grpc>
      address-family ipv4 <grpc client ip>port <grpc port num>
       encoding self-describing-gpb
       protocol grpc no-tls
    
  2. Create a sensor group.
    
    sensor-group <sensor-group-name>
      sensor-path Cisco-IOS-XR-ethernet-lldp-oper:lldp/global-lldp/lldp-info 
      sensor-path Cisco-IOS-XR-ethernet-lldp-oper:lldp/nodes/node/interfaces/interface  
      sensor-path Cisco-IOS-XR-ethernet-lldp-oper:lldp/nodes/node/neighbors/details/detail    
     !
    
  3. Create a subscription.
    subscription udp-out
      sensor-group-id <sensor-group-name> sample-interval 0
      destination-id <destination-udp>
    !
    
    subscription <subscription-name>
      sensor-group-id <sensor-group-name> sample-interval 0
      destination-id <destination-tcp>
    
    subscription <subscription-name>
      sensor-group-id <sensor-group-name> sample-interval 0
    !
    netconf-yang agent
    ssh
    !
    
  4. Set the notification to stream data when an event occurs.
    
    Router(config-lldp)#timer 12
    Router(config-lldp)#commit
    
    Router(config-lldp)#holdtime 150
    Router (config-lldp)#commit
    
    Router (config-lldp)#exit
    #506
    <?xml version="1.0"?>
    <notification xmlns="urn:ietf:params:xml:ns:netconf:notification:1.0">
     <eventTime>Date-and-Time</eventTime>
     <lldp xmlns="http://cisco.com/ns/yang/Cisco-IOS-XR-ethernet-lldp-oper">
      <global-lldp>
       <lldp-info>
        <chassis-id>000b.1bc9.e700</chassis-id>
        <chassis-id-sub-type>4</chassis-id-sub-type>
        <system-name>ios</system-name>
        <timer>12</timer>
        <hold-time>120</hold-time>
        <re-init>2</re-init>
       </lldp-info>
      </global-lldp>
     </lldp>
    </notification>
    Ready to send a request.
    Paste your request or enter 'get', 'get-config', 'create-sub', or 'bye' to quit):
    
  5. Validate response received from NETCONF agent.
    #506
    <?xml version="1.0"?>
    <notification xmlns="urn:ietf:params:xml:ns:netconf:notification:1.0">
     <eventTime>Date-and-Time</eventTime>
     <lldp xmlns="http://cisco.com/ns/yang/Cisco-IOS-XR-ethernet-lldp-oper">
      <global-lldp>
       <lldp-info>
        <chassis-id>000b.1bc9.e700</chassis-id>
        <chassis-id-sub-type>4</chassis-id-sub-type>
        <system-name>ios</system-name>
        <timer>12</timer>
        <hold-time>150</hold-time>
        <re-init>2</re-init>
       </lldp-info>
      </global-lldp>
     </lldp>
    </notification>