网络诊断
更新时间: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;