狭义的Telemetry框架可以分为四个模块:数据源、数据生成、数据订阅、数据推送。
框架参考RFC草案,https://tools.ietf.org/html/draft-song-ntf-02%E3%80%82
gRPC是google开发的远程过程调用(RPC)系统。
UDP(User Datagram Protocol,用户数据报协议)为应用程序提供了一种无需建立连接就可以发送封装的 IP 数据包的方法。
Protobuf(Protocol Buffers,协议缓冲区)是一种序列化结构数据的机制。
数据源
Telemetry数据源定义了可被获取的数据。Telemetry采用YANG模型定义设备可获取数据源。支持各类YANG模型,包括Huawei-YANG、IETF-YANG和OpenConfig-YANG。
YANG 模型文件与采样路径:
数据订阅
Telemetry数据订阅定义了数据发送端和数据获取端交互关系。
华为Telemetry订阅方式分为两种:
1)静态订阅:设备作为客户端,采集器作为服务端。由设备主动发起到采集器的连接,然后设备进行数据采集上送。多用于长期巡检。
2)动态订阅:设备作为服务端,采集器作为客户端。由采集器发起到设备的连接。由设备进行数据采集上送。多用于短期监控。
静态订阅
1)网管对设备下发静态配置,包括采样路径,采样周期,上送目标、编码等信息:支持 CLI 下发;支持 Netconf 下发,Netconf 使用的模型是openconfig-telemetry.yang;
2)设备启动采样任务,主动向采集器发起连接并推送数据:支持gRPC上送,RPC方法为dataPublish;支持UDP上送;
自定义事件上报
动态订阅
1)采集器向设备发起gRPC连接。
2)采集器向设备发起动态订阅:RPC方法(Subscribe);指定采样路径、采样周期等信息
3)设备启动采样任务,将采样数据作为rpc方法的应答,源源不断的返回给采集器。
数据生成
Telemetry数据生成采用GPB(Google Protocol Buffers)编码。
数据推送
Telemetry的数据推送有两种方式,基于gRPC方式和基于UDP方式。
基于gRPC的推送流程
gRPC面向连接,只在采集器和主控板CPU之间建立gRPC隧道。
1)采集器充当 gRPC Client 的角色,设备充当 gRPC Server 角色。
2)采集器根据订阅的事件构建对应数据的格式(GPB/JSON),通过Protocol Buffers编写proto文件,采集器与设备建立gRPC通道,通过gRPC协议向设备发送请求消息。
3)设备收到请求消息后,通过Protocol Buffers解译proto文件,还原出最先定义好格式的数据结构,进行业务处理。
4)数据梳理完后,设备需要使用Protocol Buffers重编译应答数据,通过gRPC协议向采集器应答消息。
5)采集器收到应答消息后,结束本次的gRPC交互。
基于gRPC协议,其推送数据格式定义:gRPC封装层由gRPC开源软件提供,基于gRPC推送数据的协议栈如下:
基于UDP的推送流程
UDP推送相较于gRPC推送做了一定优化,采集器也可以和线路卡CPU之间建立UDP隧道,由一对一变为多对一建立隧道,缓解了主控板CPU的压力同时也提升了效率。
基于UDP协议,推送数据格式定义: