所选语种没有对应资源,请选择:

本站点使用Cookies,继续浏览表示您同意我们使用Cookies。Cookies和隐私政策>

提示

尊敬的用户,您的IE浏览器版本过低,为获取更好的浏览体验,请升级您的IE浏览器。

升级

CloudEngine 8800, 7800, 6800, 5800 V200R005C10 配置指南-网络管理与监控

本文档介绍了网络管理与监控的配置,具体包括SNMP配置、RMON配置、NETCONF配置、OpenFlow Agent配置、LLDP配置、NQA配置、镜像配置、报文捕获配置、Packet trace、路径/连通性探测配置、NetStream配置、sFlow配置和iPCA配置。

评分并提供意见反馈 :
华为采用机器翻译与人工审校相结合的方式将此文档翻译成不同语言,希望能帮助您更容易理解此文档的内容。 请注意:即使是最好的机器翻译,其准确度也不及专业翻译人员的水平。 华为对于翻译的准确性不承担任何责任,并建议您参考英文文档(已提供链接)。
Telemetry关键技术

Telemetry关键技术

对于Telemetry设备侧:Telemetry=原始数据+数据模型+编码格式+传输协议;对于Telemetry网管侧:Telemetry=收集系统+存储系统+应用分析系统。

本文档仅描述Telemetry设备侧相关的关键技术。

原始数据

Telemetry采样的原始数据可来自网络设备的转发面、控制面和管理面,目前支持采集设备的接口流量统计、CPU或内存数据等信息。

数据模型

Telemetry基于YANG模型组织采集数据。

YANG是一种数据建模语言,用于设计可以作为各种传输协议操作的配置数据模型、状态数据模型、远程调用模型和通知机制等。

更多信息请参见YANG模型介绍

编码格式

支持GPB(Google Protocol Buffer)编码格式

GPB编码格式,是一种与语言无关、平台无关、扩展性好的用于通信协议、数据存储的序列化结构数据格式。

Telemetry利用GPB编码格式(GPB编码格式的文件名后缀为.proto),提供一种灵活、高效、自动序列化结构数据的机制,GPB属于二进制编码,性能好、效率高。

GPB通过“.proto”文件描述编码使用的字典,即数据结构描述。用户可以利用Protoc等工具软件(例如protoc-3.0.2-windows-x86_64.exe文件)根据“.proto”文件自动生成代码(例如java代码),然后用户基于自动生成的代码进行二次开发,对GPB进行编码和解码,从而实现与设备的对接。GPB编码解析前后的对比如表18-2所示。

表18-2 GPB编码解析前后的对比

GPB编码解析前

GPB编码解析后

{
 1:"HUAWEI"
 2:"s4"
 3:"huawei-ifm:ifm/interfaces/interface"
 4:46
 5:1515727243419
 6:1515727243514
 7{
  1[{
   1: 1515727243419
   2 {
    5{
     1[{
      5:1
      16:2
      25:"Eth-Trunk1"
     }]
    }
   }
  }]
 }
 8:1515727243419
 9:10000
 10:"OK"
 11:"CE6850HI"
 12:0
}
{
 "node_id_str":"HUAWEI",
 "subscription_id_str":"s4",
 "sensor_path":"huawei-ifm:ifm/interfaces/interface",
 "collection_id":46,
 "collection_start_time":"2018/1/12 11:20:43.419",
 "msg_timestamp":"2018/1/12 11:20:43.514",
 "data_gpb":{
  "row":[{
   "timestamp":"2018/1/12 11:20:43.419",
   "content":{
    "interfaces":{
     "interface":[{
      "ifAdminStatus":1,
      "ifIndex":2,
      "ifName":"Eth-Trunk1"
     }]
    }
   }
  }]
 },
 "collection_end_time":"2018/1/12 11:20:43.419",
 "current_period":10000,
 "except_desc":"OK",
 "product_name":"CE6850HI",
 "encoding":Encoding_GPB
}

支持JSON(JavaScript Object Notation)编码格式

JSON是一种轻量级的数据交换格式。它是基于ECMAScript(欧洲计算机协会制订的JS规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据,层次结构简洁清晰,既易于人阅读和编写,同时也易于机器解析和生成。JSON编码解析前后的对比如表18-3所示。

表18-3 JSON编码解析前后的对比

JSON编码解析前

JSON编码解析后

{
 1:"HUAWEI"
 2:"s4"
 3:"huawei-ifm:ifm/interfaces/interface"
 4:46
 5:1515727243419
 6:1515727243514
 8:1515727243419
 9:10000
 10:"OK"
 11:"CE6850HI"
 12:1
 14:{
  "row":[{
   "timestamp":"2018/1/12 11:20:43.419",
   "content":{
    "interfaces":{
     "interface":[{
      "ifAdminStatus":1,
      "ifIndex":2,
      "ifName":"Eth-Trunk1"
     }]
    }
   }
  }]
 }
}
{
 "node_id_str":"HUAWEI",
 "subscription_id_str":"s4",
 "sensor_path":"huawei-ifm:ifm/interfaces/interface",
 "collection_id":46,
 "collection_start_time":"2018/1/12 11:20:43.419",
 "msg_timestamp":"2018/1/12 11:20:43.514",
 "collection_end_time":"2018/1/12 11:20:43.419",
 "current_period":10000,
 "except_desc":"OK",
 "product_name":"CE6850HI",
 "encoding":Encoding_JSON,
 "data_str":{
  "row":[{
   "timestamp":"2018/1/12 11:20:43.419",
   "content":{
    "interfaces":{
     "interface":[{
      "ifAdminStatus":1,
      "ifIndex":2,
      "ifName":"Eth-Trunk1"
     }]
    }
   }
  }]
 }
}

在设备和采集器之间传输数据时,采用GPB编码格式传输的数据比其他编码格式(JSON或XML)的数据具有更高的信息负载能力,保证了Telemetry业务的数据吞吐能力,同时降低了CPU占用率和带宽。

Telemetry采用JSON编码格式时,实际上送的数据报文中不包括回车或空格等排版字符,以便减少JSON编码的规模。

传输协议

支持GRPC协议(Google Remote Procedure Call Protocol)

GRPC协议是谷歌发布的一个基于HTTP2协议承载的高性能、通用的RPC开源软件框架。通信双方都基于该框架进行二次开发,从而使得通信双方聚焦在业务,无需关注由GRPC软件框架实现的底层通信。

Telemetry通过GRPC协议将经过编码格式封装的数据上报给采集器进行接收和存储。

GRPC协议可以用于Telemetry静态订阅或动态订阅。

GRPC协议栈分层如图18-3所示。

图18-3 GRPC协议栈分层

各层详细说明如表18-4所示。

表18-4 各层详细说明

层次

说明

TCP层

底层通信协议,基于TCP连接。

TLS层

该层是可选的,基于TLS 1.2加密通道和双向证书认证等。

HTTP2层

GRPC承载在HTTP2协议上,利用了HTTP2的双向流、流控、头部压缩、单连接上的多路复用请求等特性。

GRPC层

远程过程调用,定义了远程过程调用的协议交互格式。

数据模型层

说明:

数据模型层分为三层,分别在不同的“.proto”文件中定义。采集器和网络设备之间通过GRPC协议建立连接时,需要使用这几类“.proto”文件进行对接,且两边的“.proto”文件要保持一致,便于解码。

RPC层

  • Telemetry静态订阅:在huawei-grpc-dialout.proto文件中定义。

  • Telemetry动态订阅:在huawei-grpc-dialin.proto文件中定义。

Telemetry层

在huawei-telemetry.proto文件中定义。

业务数据层

  • 当配置上送数据的编码格式为GPB时,huawei-telemetry.proto文件中的encoding字段为Encoding_GPB(值为0),data_gpb字段承载GPB编码格式的采样数据,data_str字段为空。

    说明:

    data_gpb字段内容需要相应的业务proto文件进行解码,由huawei-telemetry.proto文件中的sensor_path字段标识对应哪个具体的业务proto文件,例如,当sensor_path取值为huawei-ifm:ifm/interfaces/interface时,其数据结构定义在huawei-ifm.proto文件中。

  • 当配置上送数据的编码格式为JSON时,huawei-telemetry.proto文件中的encoding字段为Encoding_JSON(值为1),data_str字段承载JSON编码格式的采样数据,data_gpb字段为空。

    说明:

    当采用JSON编码格式时,用户只需要RPC层和Telemetry层的proto文件进行解码,不需要相应的业务proto文件。

几类“.proto”文件的介绍:
  • huawei-grpc-dialout.proto文件是RPC头文件。设备作为客户端对外推送数据时,该文件定义了RPC接口,其内容及含义如下表所示。

    huawei-grpc-dialout.proto

    syntax = "proto3";                          //proto版本定义为v3版本。
    package huawei_dialout;                     //本包名称为huawei_dialout。
    service gRPCDataservice {                   //服务名称为gRPCDataservice。
        rpc dataPublish(stream serviceArgs) returns(stream serviceArgs) {};                 //方法为dataPublish,双向流,提供数据推送方法。入参是serviceArgs数据流。
    }
    message serviceArgs {                       //消息格式描述。
        int64 ReqId = 1;                        //请求ID,GPB编码时编号为1。
        bytes data = 2;                         //承载的数据,GPB编码时编号为2,由huawei-telemetry.proto解释。
        string errors = 3;                      //产生错误时的描述信息,GPB编码时编号为3。
    }
  • huawei-grpc-dialin.proto文件是RPC头文件。设备作为服务端对外推送数据时,该文件定义了RPC接口,其内容及含义如下表所示。

    huawei-grpc-dialin.proto

    syntax = "proto3";                   //proto版本定义为v3版本。
    package huawei_dialin;               //本包名称为huawei_dialin。
    service gRPCConfigOper {             //服务名称为gRPCConfigOper。
        rpc Subscribe(SubsArgs) returns(stream SubsReply) {};  //方法为Subscribe,服务端流模式,提供动态订阅方法。入参SubsArgs包含订阅的参数。
        rpc Cancel(CancelArgs) returns(CancelReply) {};  //方法为Cancel,一问一答模式,提供取消动态订阅方法。入参CancelArgs包含取消订阅的参数。
    }
    message Path {                //Path消息结构。
        string path = 1;          //订阅的sensor-path。
    }
    message SubsArgs {            //订阅请求参数。
        uint64 request_id = 1;    //请求ID,由调用者传入。
        uint32 encoding = 2;      //编码类型。0:GPB编码;1:JSON编码。
        repeated Path path = 5;   //订阅的path结构。
        uint64 sample_interval = 6;  //采样周期。
        uint64 heartbeat_interval = 7;  //冗余抑制的抑制周期,当suppress_redundant为1时才生效。
        bool suppress_redundant = 8;  //冗余抑制,当数据内容不变时,抑制采样数据上报。0:不启用;1:启用。
    }
    message SubsReply {               //订阅响应参数。
        uint32 subscription_id = 1;   //成功返回订阅ID,失败返回0。
        uint64 request_id = 2;        //带回对应订阅请求的request_id。
        string response_code = 3;     //返回码,成功为200。
        bytes message = 4;            //错误描述。成功时后续的rpc中此字段将流式返回上送的数据。
    }
    message CancelArgs {              //取消订阅请求参数。
        uint64 request_id = 1;        //请求ID,由调用者传入。
        uint32 subscription_id = 2;   //需要取消的订阅ID。
    }
    message CancelReply {             //取消订阅响应参数。
        uint64 request_id = 1;        //请求ID,由调用者传入。
        string response_code = 2;     //返回码,成功为200。
        string message = 3;           //错误描述。
    }
  • huawei-telemetry.proto文件是Telemetry头文件,定义了Telemetry采样数据上送时的数据头,包括采样路径,采样时间戳等重要信息。该文件的内容及含义如下表所示。

    huawei-telemetry.proto

    syntax = "proto3";         //proto版本定义为v3版本。
    package telemetry;         //本包名称为telemetry。
    message Telemetry {        //Telemetry消息结构定义。
       string node_id_str = 1;    //设备名称。
       string subscription_id_str = 2;   //订阅名称,静态配置订阅时的订阅名称,GPB编码时编码为2。
       string sensor_path = 3;           //订阅路径,GPB编码时编码为3。
       string proto_path = 13;           //采样路径path对应在proto文件中的message路径。
       uint64 collection_id = 4;         //标识采样轮次,GPB编码时编码为4。
       uint64 collection_start_time = 5;//标识采样轮次开始时间,GPB编码时编码为5。
       uint64 msg_timestamp = 6;        //生成本消息的时间戳,GPB编码时编码为6。
       TelemetryGPBTable data_gpb = 7; //承载的数据由TelemetryGPBTable定义,GPB编码时编码为7。
       uint64 collection_end_time = 8;  //标识采样轮次结束时间,GPB编码时编码为8。
       uint32 current_period = 9;       //采样精度,单位是毫秒,GPB编码时编码为9。
       string except_desc = 10;        //异常描述信息,采样异常时用于上报异常信息,GPB编码时编码为10。
       string product_name = 11;       //产品名称。
       enum Encoding {
        Encoding_GPB = 0;        //表示GPB数据编码格式。
        Encoding_JSON = 1;       //表示JSON数据编码格式。
      };
      Encoding encoding =12;    //数据编码格式。为GPB时,data_gpb字段有效,否则data_str字段有效。
      string data_str = 14;   //数据编码非GPB时有效,否则为空。
    }
    message TelemetryGPBTable {           //TelemetryGPBTable消息结构定义。
      repeated TelemetryRowGPB row = 1;     //数组定义,标识数据是TelemetryRowGPB结构的重复,GPB编码时编码为1。
    }
    message TelemetryRowGPB {
    uint64 timestamp = 1;            //采样当前实例的时间戳,GPB编码时编码为1。
    bytes content = 11;              //承载的采样实例数据,GPB编码时编码为11,需要结合sensor_path字段,才可以判断此处会以哪个proto文件编码。
    }
  • 业务数据的文件:描述具体的业务数据格式。具体请参见Telemetry支持的采样路径

推模式

Telemetry通过推模式,让网络设备周期性自动推送数据给网管侧,避免重复查询,提升监控性能,推送过程如图18-4所示。

图18-4 Telemetry推模式采样过程

翻译
下载文档
更新时间:2020-01-09

文档编号:EDOC1100075464

浏览量:13102

下载量:225

平均得分:
本文档适用于这些产品

相关版本

相关文档

Share
上一页 下一页