mytrace 是一款执行 MTR(My Traceroute) 网络路径探测的插件。它通过向目标发送递增 TTL 的探测包,逐跳测量网络路径质量,支持 ICMP、TCP、UDP 三种探测模式。key=value 形式传入,大小写敏感,每对之间用 \r\n 分隔。| 参数名 | 类型 | 是否必填 | 默认值 | 说明与影响 |
|---|---|---|---|---|
host | string | 是 | — | 目标主机名或 IP 地址。若填写域名,插件会先进行 DNS 解析,解析时间会计入输出指标。 |
port | integer | 否 | 0 | 目标端口。若大于 0,则强制启用 TCP 模式,此时插件会发送 TCP SYN 包进行探测。为 0 时默认使用 ICMP 协议(除非 protocol 显式指定)。 |
protocol | string | 否 | 自动推断 | 显式指定探测协议:icmp、tcp、udp。若 port 已大于 0 且未指定 protocol,则自动使用 TCP。该参数决定底层发送的探测包类型以及结果统计方式。 |
| 参数名 | 类型 | 是否必填 | 默认值 | 说明与影响 |
|---|---|---|---|---|
hops | integer | 否 | 30 | 最大跳数(最大 TTL)。探测从 TTL=1 开始递增,到达此上限后停止。若目标在 hops 跳内未到达,则视目标不可达。值越大,探测耗时越长。 |
count | integer | 否 | 3 | 每个 TTL 发送的探测包数量。默认未配置时发送 3 个包。 |
interval | integer | 否 | 0(内部强制为 100) | 相邻探测包之间的发送间隔,单位 毫秒。若未配置或设为 0,插件内部会强制提升到 100 ms。值过小可能导致中间路由器限速丢包。 |
size | integer | 否 | 32 | 探测包的 payload 大小,单位 字节。ICMP 模式下为 Echo Request 的数据段长度;TCP / UDP 模式下为附加数据长度。部分网络设备对大包的处理时延不同, 可用于模拟特定业务流量。 |
data | string | 否 | Ping data from networkbench.com. | 自定义探测包 payload 内容。支持 hex: 前缀,后续内容按十六进制解码填入 payload。可用于发送特定标识内容,或在某些场景下绕过简单 DPI。 |
| 参数名 | 类型 | 是否必填 | 默认值 | 说明与影响 |
|---|---|---|---|---|
ipVersion | string | 否 | IPv4 | 指定 IP 协议版本。填写 ipv6 则强制使用 IPv6 栈进行探测;否则默认使用 IPv4。影响 DNS 解析类型、套接字创建及整个探测路径。 名字必须是 ipVersion |
dnsServer | string | 否 | 系统默认 | 自定义 DNS 服务器地址(如 114.114.114.114)。填写后,host 的域名解析将通过该服务器进行,解析耗时将单独作为指标输出。 |
nounreached | boolean | 否 | 0 | 目标不可达时的错误处理开关。填 1 时,即使目标在 hops 跳内未到达,也不会上报错误码(699002),仅输出已探测到的路径数据。适用于只需测量部分路径的场景。 |
| stage | 指标名 | 单位 | 说明 |
|---|---|---|---|
0 | 总耗时 | ms | 从任务开始到探测完全结束的整体耗时。反映单次完整 MTR 探测的总时长。 |
1 | DNS 解析时间 | ms | 将 host 解析为 IP 地址所花费的时间。若 host 直接填写 IP,则该值接近 0。 |
2 | 到达跳数 | 跳 | 目标被实际到达时的 TTL 值。若目标未到达(且 nounreached=1),可能输出 0 或不输出。 |
| 错误代码 | info 值 | 含义 |
|---|---|---|
612007 | DNS 无法解析 | 域名解析失败(WinInet 错误)。 |
699001 | 配置错误 | 通常是 host 为空或格式非法。 |
699002 | 目标不可达 | 在 hops 跳内未收到目标回复,且 nounreached ≠ 1 时触发。 |