Support for IPI Native Data Models and OpenConfig Data Models
Streaming Telemetry Data Models: OcNOS supports IPI native data models and OpenConfig data models, providing standardized representations of network configurations and telemetry data. This support enhances interoperability and facilitates consistent management across heterogeneous network environments.
Wildcard Support in Sensor Paths
OcNOS supports wildcard characters in sensor paths (XPaths) to simplify subscription requests and minimize the number of XPaths needed to monitor multiple instances. The following wildcard types are supported:
Explicit Wildcard for Key Names
Allows selecting all instances of a keyed list.
Example
The XPath below explicitly uses asterisk (*
) for the name key in the interface list, which means it retrieves counters for all interfaces regardless of their names. This is useful when user do not need to specify individual interface names and want to subscribe to all available interfaces.
ipi:/interfaces/interface[name=*]/state/counters
Implicit Wildcard (Omission of Key Name)
Automatically selects all instances when a key is not explicitly mentioned.
Example
Here, the name key is completely omitted, which implies that the query applies to all interfaces. This method functions similarly to using an explicit wildcard (*
), but it assumes that the key name is optional, applying to all list instances automatically.
ipi:/interfaces/interface/state/counters
Partial Wildcard for Key Name
Matches instances with a key name that starts with a given prefix.
Example
The wildcard *
is applied at the end of the key name, meaning this XPath matches all interfaces whose names start with xe
. For instance, it will match xe0, xe1, xe100
, etc. However, it will not match eth0, ge1
, etc. This is useful for filtering a subset of interfaces with a common prefix, reducing the number of specific XPaths required.
ipi:/interfaces/interface[name=xe*]/state
Partial Wildcard for Multiple Keys
Partial wildcard applies to the first key when multiple keys exist.
Valid Example
This example allows retrieving information from all CMIS components while still applying filters for specific lanes and flags.
ipi:/components/component[name=CMIS*]/transceiver/cmis-module/media-monitors/lanes/lane[number=2]/flags/flag[id=*]/state
• | component[name=CMIS*]: Matches all components where the name starts with "CMIS" (e.g., CMIS-1, CMIS-module-10, etc).
|
• | lane[number=2]: Applies only to lane number 2. |
• | flag[id=*]: Retrieves all flags within lane number 2. |
Invalid Example
The wildcard is at the beginning of the key (*CMIS
), which is not supported. Only suffix-based (CMIS*
) wildcarding is allowed.
ipi:/components/component[name=*CMIS]/transceiver/cmis-module/media-monitors/lanes/lane[number=2]/flags/flag[id=*]/state
Use case 1: Wildcard Support in Dial-In Mode
In this example, the explicit wildcard name=*
in ipi:/components/component[name=*]/state/memory
XPath allows real-time monitoring of memory usage for all components without needing to specify individual component names. The gnmic
command subscribes to this data stream to retrieve available and utilized memory for components like HARD-DISK and RAM from the target at 10.12.162.22:9339
. With a 90-seconds
sampling interval, the system collects data efficiently while minimizing the complexity of manual configuration. This approach simplifies network monitoring by dynamically including all relevant components, making it easier to track system performance in real time.
OcNOS# ./gnmic -a 10.12.162.22:9339 -u admin -p admin --insecure --mode STREAM --stream-mode sample --sample-interval 90s sub --path '/components/component[name=*]/state/memory' --encoding json_ietf
{
"source": "10.12.162.22:9339",
"subscription-name": "default-1729755066",
"timestamp": 1729774623040087176,
"time": "2024-10-24T12:57:03.040087176Z",
"updates": [
{
"Path": "components/component[name=\"HARD-DISK\"]/state/memory",
"values": {
"components/component/state/memory": {
"available": 118183952384,
"utilized": 5681184768
}
}
}
]
}
{
"source": "10.12.162.22:9339",
"subscription-name": "default-1729755066",
"timestamp": 1729774623040734590,
"time": "2024-10-24T12:57:03.04073459Z",
"updates": [
{
"Path": "components/component[name=\"RAM\"]/state/memory",
"values": {
"components/component/state/memory": {
"available": 33637269504,
"utilized": 1130364928
}
}
}
]
}
Use case 2: Wildcard Support in Dial-Out Mode
This example uses a partial wildcard for key names in Dial-Out mode to subscribe to telemetry data for all components whose names start with PORT
, eliminating the need to list them individually. The XPath ipi:/components/component[name=PORT*]/state
ensures the system automatically monitors all port-related components, such as PORT-SFP-5, PORT-SFP-7, and PORT-SFP-11
. The system sends telemetry data to the target at 10.12.66.160:11161
every 90 seconds
, dynamically retrieving information on memory, board FRU, and temperature for matching components.
OcNOS#show running-config streaming-telemetry
!
feature streaming-telemetry vrf management
!
sensor-group interface vrf management
sensor-path ipi:/components/component[name=PORT*]/state
!
destination-group tunnel-1 vrf management
tunnel-server ip 10.12.66.160 port 11161
!
subscription-name sub-1 vrf management
destination-group tunnel-1
sensor-group interface sample-interval 90
!
!
OcNOS#show streaming-telemetry
Number of telemetry instances : 1 (management)
Platform type : High range
Maximum sensor-paths : 100
Minimum sample-interval : 10
Number of active sensor-paths : 30 (Dial-In : 0, Dial-out : 30)
SI : Sampling Interval in seconds
Enc-Type : Encoding type
Origin:Path : Sensor Path
1. Subscription Details (VRF-Name: default):
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Port : 9339
TLS : Disabled
insecure-tls : False
Dial-Out Subscription Details:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Subscription-name : sub-1
Status : ACTIVE
Enc-Type : JSON
Tunnel-server details:
~~~~~~~~~~~~~~~~~~~~~~
Tunnel-server Retry-interval : Default-60 (seconds)
Destination-group Status Tunnel-IP:Port
----------------- ------ --------------
tunnel-1 ACTIVE 10.12.66.160:11161
Sensor-group details:
~~~~~~~~~~~~~~~~~~~~~
Sensor-group SI Origin:Path
------------ ---- -----------
interface 90 ipi:/components/component[name=PORT*]/state
[*]ipi:/components/component[name=PORT*]/state/memory
[*]ipi:/components/component[name=PORT*]/state/board-fru
[*]ipi:/components/component[name=PORT*]/state/temperature
[*]-> Indicates child path learnt from parent config, not configured by user
gnmic Output
The gnmic
output confirms that telemetry updates include firmware, hardware version, location, operational status, and parent chassis details for each matching port component.
By using a partial wildcard, the system improves scalability by automatically incorporating new port components without modifying the sensor path configuration, reducing manual effort and ensuring real-time network monitoring.
#./gnmic --config abc.yaml --use-tunnel-server publish --insecure
{
"source": "e8:c5:7a:8f:98:26",
"subscription-name": "sub-1",
"timestamp": 1725361959730514173,
"time": "2024-09-03T11:12:39.730514173Z",
"updates": [
{
"Path": "ipi:components/component[name=\"PORT-SFP-5\"]/state",
"values": {
"components/component/state": {
"description": "NA",
"empty": false,
"firmware-version": "NA",
"hardware-version": "NA",
"location": "17",
"mfg-name": "NA",
"name": "PORT-SFP-17",
"oper-status": "NA",
"parent": "CHASSIS",
"part-no": "NA",
"product-name": "NA",
"removable": false,
"serial-no": "NA",
"software-version": "NA",
"type": "port"
}
}
}
]
}
{
"source": "e8:c5:7a:8f:98:26",
"subscription-name": "sub-1",
"timestamp": 1725361959731082952,
"time": "2024-09-03T11:12:39.731082952Z",
"updates": [
{
"Path": "ipi:components/component[name=\"PORT-SFP-7\"]/state",
"values": {
"components/component/state": {
"description": "NA",
"empty": false,
"firmware-version": "NA",
"hardware-version": "NA",
"location": "5",
"mfg-name": "NA",
"name": "PORT-SFP-5",
"oper-status": "NA",
"parent": "CHASSIS",
"part-no": "NA",
"product-name": "NA",
"removable": false,
"serial-no": "NA",
"software-version": "NA",
"type": "port"
}
}
}
]
}
{
"source": "e8:c5:7a:8f:98:26",
"subscription-name": "sub-1",
"timestamp": 1725361959731795490,
"time": "2024-09-03T11:12:39.73179549Z",
"updates": [
{
"Path": "ipi:components/component[name=\"PORT-SFP-11\"]/state",
"values": {
"components/component/state": {
"description": "NA",
"empty": false,
"firmware-version": "NA",
"hardware-version": "NA",
"location": "7",
"mfg-name": "NA",
"name": "PORT-SFP-7",
"oper-status": "NA",
"parent": "CHASSIS",
"part-no": "NA",
"product-name": "NA",
"removable": false,
"serial-no": "NA",
"software-version": "NA",
"type": "port"
}
}
}
]
}
{
"source": "e8:c5:7a:8f:98:26",
"subscription-name": "sub-1",
"timestamp": 1725361959732153620,
"time": "2024-09-03T11:12:39.73215362Z",
"updates": [
{
"Path": "ipi:components/component[name=\"PORT-SFP-13\"]/state",
"values": {
"components/component/state": {
"description": "NA",
"empty": false,
"firmware-version": "NA",
"hardware-version": "NA",
"location": "11",
"mfg-name": "NA",
"name": "PORT-SFP-11",
"oper-status": "NA",
"parent": "CHASSIS",
"part-no": "NA",
"product-name": "NA",
"removable": false,
"serial-no": "NA",
"software-version": "NA",
"type": "port"
}
}
}
]
}
{
"source": "e8:c5:7a:8f:98:26",
"subscription-name": "sub-1",
"timestamp": 1725361959731446131,
"time": "2024-09-03T11:12:39.731446131Z",
"updates": [
{
"Path": "ipi:components/component[name=\"PORT-SFP-9\"]/state",
"values": {
"components/component/state": {
"description": "NA",
"empty": false,
"firmware-version": "NA",
"hardware-version": "NA",
"location": "13",
"mfg-name": "NA",
"name": "PORT-SFP-13",
"oper-status": "NA",
"parent": "CHASSIS",
"part-no": "NA",
"product-name": "NA",
"removable": false,
"serial-no": "NA",
"software-version": "NA",
"type": "port"
}
}
}
]
}
{
"source": "e8:c5:7a:8f:98:26",
"subscription-name": "sub-1",
"timestamp": 1725361959731621187,
"time": "2024-09-03T11:12:39.731621187Z",
"updates": [
{
"Path": "ipi:components/component[name=\"PORT-SFP-10\"]/state",
"values": {
"components/component/state": {
"description": "NA",
"empty": false,
"firmware-version": "NA",
"hardware-version": "NA",
"location": "14",
"mfg-name": "NA",
"name": "PORT-SFP-14",
"oper-status": "NA",
"parent": "CHASSIS",
"part-no": "NA",
"product-name": "NA",
"removable": false,
"serial-no": "NA",
"software-version": "NA",
"type": "port"
}
}
}
]
}