网络诊断

更新时间:2020.04.20

概述

网络诊断服务,用于准确的收集设备端的网络状态数据,辅助设备端交互异常等场景的问题定位等。

网络指标

指标 说明
域名 诊断的目标域名或IP地址
端口 HTTP诊断的目标端口
RSSI 无线连接的信号强度
SNR 无线连接的信噪比
网络延迟 ICMP协议探测的网络延迟时间,毫秒
最大网络延迟 ICMP协议探测的最大网络延迟时间,毫秒
最小网络延迟 ICMP协议探测的最小网络延迟时间,毫秒
网络抖动 ICMP协议探测的最大网络延迟时间和最小网络时间的振幅,毫秒
基站延迟 ICMP探测的基站延迟(目前暂无)
路由延迟 ICMP探测的第一个路由的延迟
TTL 路由节点的数量
TraceRoute 路由节点的具体信息,同Linux中的TraceRoute命令
丢包率 ICMP协议中的消息丢包率
DNS服务器地址 机器配置的DNS解析服务器地址
DNS解析结果 域名解析的结果
DNS解析耗时 DNS解析耗时,毫秒
HTTP连接完成耗时 发起HTTP连接到连接完成的耗时,毫秒
HTTP首包耗时 发起HTTP到收到第一个数据包的耗时
SSL/SSH握手耗时 HTTPS握手耗时

诊断

远程诊断

远程诊断,主要用于控制台远程下发诊断当前网络的指令,设备端收到指令后,开启诊断,在诊断完成后,上报诊断结论到云端。

本地诊断

本地诊断,由开发者调用诊断接口,开启诊断,诊断结论通过设置的回调方法反馈给开发者,并上报诊断结论到云端。

接口说明

/**
 * 本地发起Ping诊断
 * @param host 域名
 * @param period 诊断周期,秒
 * @return
 */
int IotDiagnose_Ping(char *host, int period, IotDiagnoseCallback_t callback);

/**
 * 本地发起网络诊断
 * @param host 域名
 * @param port 端口
 * @param type 0:http诊断 1:https诊断
 * @param range 0:全部诊断 1:tcp诊断 2:http诊断
 * @param period 诊断周期,秒
 * @return
 */
int IotDiagnose_Process(char *host, int port, int type, int range, int period, IotDiagnoseCallback_t callback);

回调说明

/**
 * ICMP协议相关探测指标
 */
typedef struct IotDiagnoseLink {
    float delay; /** @brief 网络延迟 */
    float shake; /** @brief 网络抖动 */
    int loss; /** @brief 丢包率 */
    int ttl; /** @brief 路由节点数量 */
    float max; /** @brief 最大延迟 */
    float min; /** @brief 最小延迟 */
    float router; /** @brief 路由延迟 */
} IotDiagnoseLink_t;

/**
 * HTTP网络协议相关探测指标
 */
typedef struct IotDiagnosePro {
    float lookup; /** @brief DNS解析耗时 */
    float connect; /** @brief HTTP连接耗时 */
    float start; /** @brief HTTP首包耗时 */
    float ssl; /** @brief SSL/SSH握手耗时 */
    char *addr; /** @brief DNS服务器地址 */
    char *result; /** @brief DNS解析结果 */
} IotDiagnosePro_t;

typedef struct IotDiagnoseCallback {

    /**
     * Ping诊断实时回调诊断结果回调
     * @param delay 延迟
     * @param avg 平均延迟
     * @param loss 丢包率
     * @param ttl 路由节点数量
     */
    void (*diagnosePingProgress)(float delay, float avg, int loss, int ttl);

    /**
     * Ping诊断反馈诊断完成的结果回调
     * @param min 最小延迟
     * @param max 最大延迟
     * @param avg 平均延迟
     * @param loss 丢包率
     */
    void (*diagnosePingResult)(float min, float max, float avg, int loss);

    /**
     * 诊断结论回调
     */
    void (*diagnoseResult)(IotDiagnoseLink_t link, IotDiagnosePro_t pro);
} IotDiagnoseCallback_t;

results matching ""

    No results matching ""