目录
Telemetry基本概念
Telemetry是一种网络设备监控技术,提供周期采样网络设备内的统计数据和状态数据的能力
设备监测数据的数据类型
设备的监控数据包含三大数据
管理平面数据、控制平面数据、数据平面数据
为么要提出Telemetry
传统的网络设备监控数据的方式
SNMP、CLI、Syslog、NetStream、sFlow(其中SNMP为主流的监控数据方式)
NetStream、sFlow、Snmp Trap
NetStream、sFlow监测范围有限,主要针对数据平面数据的监测
sFlow为文本方式进行监测数据的采集,没有数据结构
SNMP Trap推送的数据类型仅是告警信息
CLI
CLI为文本方式进行监测数据的采集,没有数据结构
SNMP Get
SNMP采样周期的时间过长,反应不了现网的真实情况(无法检测网络微突发造成的网络问题)
SNMP监测数据是通过一问一答的方式进行数据采集的(拉的方式)
如果SNMP采样周期太短,设备会一直回复,增加设备的负担
为此提出了Telemetry
Telemetry也叫Network Telemetry网络遥感技术,其特点主要有
- Telemetry采集数据的类型丰富,可以充分反映网络状况
- 设备采用推的方式周期性的主动向采集器上送监测数据(精度可以达到亚秒级别,快速定位)
- 一次订阅,设备N次回复,可以一直监控设备
Telemetry网络模型
Telemetry网络模型主要分为广义和狭义两种
广义Telemetry
是一个闭环的自动化运维系统,由网络设备、采集器、分析器、控制器等部件组成
分为网管侧和设备侧
如何形成闭环
设备实时将监测的信息发送到采集器,采集器将收集到的数据发送给分析器进行分析,分析器将分析结果发送给控制器,控制器将相关操作下发到设备上
例子
分析器通过采集器发来的信息分析得到某条链路出现拥塞,需要通过设置PBR让部分流量走其它链路的动作(将分析结果发给控制器),控制器就将PBR的配置下发到设备上(下发配置通过Netconf,收集通过Telemetry)
注意事项
分析器和控制器可以是一台设备
狭义Telemetry
是一个设备特性,指设备将采样数据上送给采集器的功能
狭义Telemetry框架
对于设备而言(狭义Telemetry),Telemetry框架可以分为四个模块
数据源、数据生成、数据订阅、数据推送
即:设备实现Telemetry功能所需要的模块,通过这些模块完成对数据的采集上传
数据源(Yang)
什么是数据源
数据源定义了可以被获取的数据,可以来自网络设备的转发面、控制面和管理面
目前支持采集设备的接口流量统计、CPU或内存数据等信息
Telemetry如何获取数据源
Telemetry基于Yang模型来采集数据源
支持的Yang模型有Huawei-Yang、IETF-Yang、OpenConfig-Yang等
注意事项
网络设备和Telemetry端所使用的模型要是一致的
数据生成(GPB)
Telemetry将采集的数据源进行编码,此过程就为数据生成
设备将编码后的数据传送到采集器,采集器再进行解码(这就要求采集器和设备使用相同的编码格式)
Telemetry如何进行数据编码解码
Telemetry主要采用GPB(Google Protocol Buffers)数据编码、解码
除了GPB之外还支持JSON(JavaScript Object Notation)编码格式
GPB编码
GPB是一种二进制编码,性能好,效率高(而采集效率是Telemetry考虑的重点之一,所以Telemetry主要使用GPB编码)
GPB编码通过.proto文件描述编码、解码使用的字典(采集器和设备.proto文件要一致
数据订阅(gRPC、UDP)
Telemetry数据订阅定义了数据发送端和数据获取端的交互关系,主要有两种订阅方式
静态订阅(控制器通过命令行配置支持Telemetry的设备,订阅数据源,完成数据采集)
采集器作为服务器,设备作为客户端
设备主动发起采集器的连接,采集器不需要发送订阅信息就可以收到设备的数据信息
需要手工告诉设备需要上报哪些信息(支持CLI、Netconf下发配置),一般用于短期的巡检
支持UDP推送和gRPC推送
静态订阅支持自定义事件上报
动态订阅(支持Telemetry的设备在完成gRPC服务的相关配置后,由采集器下发动态配置到设备,完成数据采集)
设备作为服务器,采集器作为客户端
需要采集器向设备发送订阅信息之后,设备才会发送相关的数据信息(只会发送一次)
采集器作为客户端,一般用于长期的巡检
仅支持gRPC方式的数据推送
数据推送(gRPC、UDP)
Telemetry通过数据推送将经过编码格式封装的数据上报给采集器进行接收和存储
Telemetry可以基于gRPC和UDP的方式进行数据推送
基于gPRC的推送(可以用于静态订阅和动态订阅)
什么是gRPC
gRPC(Goole Remote Procedure Call)协议是谷歌发布的一个基于HTTP2协议的高性能、通用的PRC开源软件架构
gRPC协议层次
不同.proto文件含义
huawei-grpc-dialout.proto文件(静态订阅)
是RPC头文件。设备作为客户端对外推送数据时,该文件定义了RPC接口
huawei-grpc-dialin.proto文件(动态订阅)
是RPC头文件。设备作为服务端对外推送数据时,该文件定义了RPC接口
huawei-telemetry.proto文件
是Telemetry头文件,定义了Telemetry采样数据上送时的数据头(包括采样路径,采样时间戳等重要信息)
基于gRPC的推送流程
采集器之和主控板建立UDP隧道,一对一建立隧道
所有的应答信息都要通过主控板发送给采集器,可能会导致主控板CPU利用率过高
基于UDP的推送(UDP可以用于静态订阅)
UDP适合可靠性要求低、传输经济的网络应用
UDP协议层次
UDP层 基于UDP连接的通信协议。 数据模型层 消息头层 描述Telemetry上送数据的消息头格式 Telemetry层 当配置上送数据的编码格式为GPB时,在huawei-telemetry.proto文件中定义。
当配置上送数据的编码格式为JSON时,不需要Telemetry层的proto文件进行解码。业务数据层 当配置上送数据的编码格式为GPB时,huawei-telemetry.proto文件中的encoding字段为Encoding_GPB(值为0),data_gpb字段承载GPB编码格式的采样数据,data_str字段为空。
当配置上送数据的编码格式为JSON时,huawei-telemetry.proto文件中的encoding字段为Encoding_JSON(值为1),data_str字段承载JSON编码格式的采样数据,data_gpb字段为空。基于UDP的推送流程
采集器可以和线卡、主控板之间建立UDP隧道,多对一建立隧道
缓解了主控板CPU的压力,提升了效率
总结整个设备如何实现Telemetry功能
以gRPC订阅推送为例子
设备通过Yang模型捕获可获取的数据信息(数据源)
然后将这些数据通过GPB结合.proto文件进行编码(数据生成)
采集器通过gRPC进行数据订阅(数据订阅)
设备通过gRPC将编码数据推送到订阅的采集器中(数据推送)
采集器再根据通过GPB结合.proto文件进行解码(此文件要和GPB的.proto文件一致)
举个订外卖的例子便于理解:
YANG是个快餐店的菜谱,顾客想吃汉堡和炸鸡便照着YANG菜单写了一份A4纸采购清单(如一份汉堡,两份炸鸡)
将清单折成邮票大小的小纸条装到了GPB信封里,找到门口的信使gRPC
信使gRPC骑上HTTP2电动车到了快餐店。
信使gRPC将GPB信封给老板,老板解开GPB信封核对顾客采购清单是否在销售范围内。
Telemetry和Netconf区别
- Netconf主要是做配置(设备只要支持Yang模型,就可以下发配置),Telemetry主要是收集信息
- Telemetry主要是读,Netconf主要是写