12-27-2023 03:59 PM
Hello,
I am working with NETCONF/RESTCONF and MDT (TIG Stack) on the IOS XE on Cat8kv reservable sandbox. I have not been able to figure out how to stream interface state via on-change. For reference, I am using the basic ietf-interfaces.yang model.
So far, the subscription only becomes valid if it's set to periodic.
Here is the YANG-modeled mdt subscription I am trying to make work:
{
"Cisco-IOS-XE-mdt-cfg:mdt-subscription": [
{
"subscription-id": "69",
"base": {
"stream": "yang-push",
"encoding": "encode-kvgpb",
"dampening period": "0",
"xpath": "/ietf-interfaces:interfaces-state/interface[name='Loopback69']/oper-status"
},
"mdt-receivers": {
"address": "10.10.20.50",
"port": "57500",
"protocol": "grpc-tcp"
}
}
]
}
I am aware that not all YANG models support on-change, and there doesn't seem to be any indicator of what models support it. Is this just a case of ietf-interfaces.yang not supporting on-change, or am I configuring this incorrectly?
Solved! Go to Solution.
12-28-2023 03:11 AM
From what i recall in the cisco-ios-xe-mdt-capabilities-oper.YANG model this can be queried to show information about the models that support `on-change` subscriptions and the transports ("NETCONF", "gRPC", "HTTP"). The response will contain a list of supported models and their capabilities, including, supported subscription modes:, whether a model supports "ON_CHANGE" subscriptions.
If you did a GET using NETCONF you should get a capabilities Information of this....
<rpc message-id="101" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<get>
<filter>
<mdt-capabilities-oper xmlns="http://cisco.com/ns/yang/Cisco-IOS-XE-mdt-capabilities-oper">
</mdt-capabilities-oper>
</filter>
</get>
</rpc>
There is a bit more on this here ---> https://www.cisco.com/c/en/us/td/docs/ios-xml/ios/prog/configuration/1711/b_1711_programmability_cg/m_1711_prog_ietf_telemetry.html#Cisco_Concept.dita_37229c82-8ddf-410d-a2ac-0d71b28ccf01
There is a also a good section here --> https://www.cisco.com/c/en/us/support/docs/ios-nx-os-software/ios-xe-17/217427-configure-model-driven-telemetry-on-cisc.html#anc37
This is a good example byJeremy Cohoe --> https://github.com/jeremycohoe/cisco-ios-xe-mdt/blob/master/c9300-grpc-onchange-examples.cfg
Now, the next question is if this will work in the devnet sandbox? I am guessing you are using the devbox/jump host as the listener and not a external resource?
Hope this helps in some way.
12-28-2023 03:11 AM
From what i recall in the cisco-ios-xe-mdt-capabilities-oper.YANG model this can be queried to show information about the models that support `on-change` subscriptions and the transports ("NETCONF", "gRPC", "HTTP"). The response will contain a list of supported models and their capabilities, including, supported subscription modes:, whether a model supports "ON_CHANGE" subscriptions.
If you did a GET using NETCONF you should get a capabilities Information of this....
<rpc message-id="101" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<get>
<filter>
<mdt-capabilities-oper xmlns="http://cisco.com/ns/yang/Cisco-IOS-XE-mdt-capabilities-oper">
</mdt-capabilities-oper>
</filter>
</get>
</rpc>
There is a bit more on this here ---> https://www.cisco.com/c/en/us/td/docs/ios-xml/ios/prog/configuration/1711/b_1711_programmability_cg/m_1711_prog_ietf_telemetry.html#Cisco_Concept.dita_37229c82-8ddf-410d-a2ac-0d71b28ccf01
There is a also a good section here --> https://www.cisco.com/c/en/us/support/docs/ios-nx-os-software/ios-xe-17/217427-configure-model-driven-telemetry-on-cisc.html#anc37
This is a good example byJeremy Cohoe --> https://github.com/jeremycohoe/cisco-ios-xe-mdt/blob/master/c9300-grpc-onchange-examples.cfg
Now, the next question is if this will work in the devnet sandbox? I am guessing you are using the devbox/jump host as the listener and not a external resource?
Hope this helps in some way.
01-09-2024 06:21 PM
Thank you for your help bigevilbeard,
I will be GETing the the MDT capabilities model from the router to see what models support on-change.
You are correct in assuming I am using the devnet sandbox environment. More specifically, I have been using the IOS XE reservable sandbox and running code from my personal computer.
01-13-2024 07:54 AM
Sure thing, does the data return back to you machine over the VPN, i was not sure if this was possible, i saw some hacks with this ages back?
01-13-2024 08:28 AM
Yes, you can directly interact with the sandbox nodes from your computer via VPN.
01-10-2024 02:49 PM
Below is a snippet of the router's reply after GETing
Cisco-IOS-XE-mdt-capabilities-oper:mdt-capabilities-oper-data
{
"index": 16,
"sub-caps": {
"on-change-is-valid": [null],
"on-change-supported": "mdt-cap-notif-config mdt-cap-notif-state"
},
"xpath": "/interfaces-ios-xe-oper:interfaces/interface"
},
I chose that snippet because the xpath pertaining to it is what I kinda want to set to make on-change updates. What would be the indicator that I can create an on-change subscription? Every single "on-change-is-valid" value is set to [null].
01-11-2024 01:59 AM
So if i understand this, while "mdt-cap-notif-config" and "mdt-cap-notif-state" indicate the router supports notifications, the individual data points within this xpath might not support on-change updates. So the on-change-is-valid" set to [null] for all data points, meaning the individual data points under /interfaces-ios-xe-oper:interfaces/interface might not individually support on-change updates. They might only support sample-based updates at pre-determined intervals.
Hope this helps.
01-13-2024 07:39 AM
I was under this impression too, but what has me skeptical is that not a single "on-change is valid" is not set to [null]. Perhaps this is a limitation on the sandbox environment. Thank you for your help.
Discover and save your favorite ideas. Come back to expert answers, step-by-step guides, recent topics, and more.
New here? Get started with these tips. How to use Community New member guide