tracert中三个时间的含义
trace出来的时间数据是抖动信息,而不是延迟信息。
tracert
命令格式
tracert [ -a source-ip-address | -f initTtl | -m maxTtl | -p destPort | -q nqueries | -vpn-instance vpn-instance-name | -w timeout | -v | -name | -s size | { -tos tos-value | -dscp dscp } ] * host
参数说明
参数 | 参数说明 | 取值 |
---|---|---|
-a source-ip-address |
指定tracert报文的源地址。 如果不指定源地址,将采用出接口的IP地址作为tracert报文发送的源地址。 |
点分十进制形式。 |
-f first-ttl |
指定初始TTL。 TTL(time to live)是IP报文首部的生存时间字段,它指定了数据包的生存时间,设置了数据包可以经过的最多设备数。TTL字段由发送报文的源主机设置,每经过一个设备,TTL字段的值都会减1,当该字段的值为0时,数据包就被丢弃,并发送ICMP超时报文通知源主机。 设置first-ttl,当经过的跳数小于此参数值,由于TTL字段的值大于0,经过的这几个节点不会返回ICMP超时报文给源主机。 如果已经设置了max-ttl参数值,first-ttl的取值必须小于等于max-ttl。 |
整数形式,取值范围是1~255。缺省值是1。 |
-m max-ttl |
指定最大TTL。 通常情况下,max-ttl的值被设置为经过站点的跳数。当需要修改TTL的值时,使用此参数。 如果已经设置了first-ttl参数值,max-ttl的取值必须大于等于first-ttl。 |
整数形式,取值范围是1~255。缺省值是30。 |
-name |
使能显示每一跳的主机名。 |
- |
-p destport |
指定目的主机的UDP端口号。
|
整数形式,取值范围是0~65535。缺省值是33434。 |
-q nqueries |
指定每次发送的UDP探测数据包个数。 当网络质量不高时,可以增加发送探测数据包数目,保证探测报文能够到达目的节点。 |
整数形式,取值范围是1~65535。缺省值是3。 |
-v |
显示ICMP Time Exceeded报文带回的MPLS标签信息。 该参数在PE上发起tracert需要显示公网标签时使用。 |
缺省情况下不显示MPLS标签信息,只显示ICMP Time Exceeded报文和ICMP端口不可达报文带回的路径信息。 |
-vpn-instance vpn-instance-name |
指定tracert目的地址的VPN属性,即关联的VPN实例名称。 |
必须是已存在的VPN。 |
-w timeout |
指定等待响应报文的超时时间。 当发送数据包到达某网关超时,则输出“ * ”。 如果网络质量不高且速度很慢,建议增加发送数据包的超时时间。 |
整数形式,取值范围是0~3600000,单位是毫秒。缺省值是5000毫秒。 |
-s packetsize |
指定ICMP ECHO-REQUEST报文长度(不包括IP和ICMP报文头)。 |
整数形式,取值范围是12~9600。单位是字节,缺省报文长度是12字节。 |
host |
指定目的主机的域名或IPv4地址。 |
字符串形式主机名,不支持空格,区分大小写,长度范围是1~255,当输入的字符串两端使用双引号时,可在字符串中输入空格。或者合法的点分十进制IPv4地址。 |
-tos tos-value |
指定发送报文的ToS值。通过设置ToS值,配置报文的IP优先级别,也可以配置报文的DSCP值。 |
整数形式,取值范围是0~255。缺省值是0。 |
-dscp dscp |
指定发送ECHO-REQUEST报文的DSCP值。 |
整数形式,取值范围是0~63。缺省值是0。 |
使用指南
应用场景
在日常的系统维护中,首先可以执行ping命令查看网络连通的情况。当网络不通,然后进一步使用tracert命令查看网络中出现故障的位置,为故障诊断提供依据。
可以使用tracert命令参数组合,对特定场景进行检测:
- 执行tracert host命令,可以检测源端到目的主机间的节点信息。
- 执行tracert -vpn-instance vpn-instance-name host命令,可以检测在三层VPN网络中源端到目的主机间的节点信息。在三层VPN网络中,由于各设备间可能没有彼此的路由信息,无法直接使用tracert host命令进行检测,只能通过VPN到达对端。执行tracert -vpn-instance vpn-instance-name host命令,在指定VPN实例名的情况下,可以检测源端到目的主机间的节点信息。
- 网络环境较差时,执行tracert -q nqueries -w timeout host命令可以检测源端到目的主机间的节点信息。对于可靠性较差的网络,建议发包次数(-q)和超时时间(-w)取较大值,这样可以更加准确的得到检测信息。
- 执行tracert -f first-ttl -m max-ttl host命令,通过指定起始TTL(first-ttl)和最大TTL(max-ttl)实现对某一段路径节点的检测。
如果用户希望减少设备端口IP地址的暴露,从而防御外界构造端口不可达报文攻击或者超时报文攻击来探测设备接口的IP地址时,可以在Loopback接口视图下执行命令ip icmp source-address指定ICMP端口不可达或超时报文的源IP地址。当用户执行tracert命令检测远端地址时,设备会采用LoopBack接口的地址作为报文源地址发送ICMP超时报文或者端口不可达报文。
前置条件
- 节点设备UDP模块正常工作,否则tracert失败。
- 如果配置-vpn-instance参数,需要保证vpn模块工作正常。
- 节点设备ICMP模块工作正常,否则返回超时“ * * * ”。
执行过程
tracert命令的执行过程:
- 发送一个TTL为1的数据包,TTL超时,第一跳发送回一个ICMP错误消息以指明此数据包不能被发送。
- 发送一个TTL为2的数据包,TTL超时,第二跳发送回一个ICMP错误消息以指明此数据包不能被发送。
- 发送一个TTL为3的数据包,TTL超时,第三跳发送回一个ICMP错误消息以指明此数据包不能被发送。
- 上述过程不断进行,直到到达目的地。
在每一跳的目标设备接收到IPv4报文后,由于报文探测指定的端口是一个在目标设备没有应用的端口,目标设备就会响应ICMP port unreachable信息给源端,表示目标端口不可达,同时说明tracert执行完毕。从而可以从源端显示的结果中,看到目标设备所经过的路径。
配置影响
执行tracert命令发现网络出现故障可能输出以下信息符号,具体信息如下:
- !H:表示主机不可达
- !N:表示网络不可达
- !:表示端口不可达
- !P:表示协议类型错误
- !F:表示报文分片错误
- !S:表示源路由错误
注意事项
设备不支持基于策略路由的tracert。
tracert命令检测和ping命令指定-r参数检测都会返回从源端到目的主机间的节点信息。但是二者最主要区别在于:
- ping命令一旦在中间某一个节点超时,则整个ping测试返回超时,不显示任何路径信息。
- tracert命令如果在中间某一个节点超时,只会在显示信息中标识此节点信息超时“ * * * ”,不影响整个tracert命令操作。
,IPv4 tracert路径经过VXLAN分布式网关叠加下一跳仅指定VPN实例的路由,tracert显示结果不同。
- 对于VXLAN报文报文在本设备上分布式网关解封装查路由。如果下一跳是普通三层口,则显示出接口IP。如果下一跳是VPN,则显示两跳,第一跳显示NVE接口IP,第二跳则显示出接口IP。
- 对于非VXLAN报文在本设备上查路由,下一跳是VPN,则显示两跳。其中,第一跳显示接入侧网关的IP。第二跳是在VPN内查路由,如果下一跳是普通三层口,则第二跳显示出接口IP,如果路由下一跳是隧道口,则第二跳显示NVE接口IP。
使用实例
# 查看从本地主机到目的地址10.1.1.11所经过的网关。
<HUAWEI> tracert 10.1.1.11
traceroute to 10.1.1.11(10.1.1.11), max hops: 30 ,packet length: 40,press CTRL_C to break 1 10.3.112.1 10 ms 10 ms 10 ms 2 10.32.216.1 19 ms 19 ms 19 ms 4 10.128.32.136.23 19 ms 39 ms 39 ms 5 * * * 6 * * * 7 * * * 8 10.1.1.11 69 ms 79 ms 79 ms
项目 |
描述 |
---|---|
traceroute to |
到某个目的地址的tracert检测。 |
max hops |
最大TTL数。 |
packet length |
发送的报文长度。 |
1 10.3.112.1 10 ms 10 ms 10 ms |
“1”表示第一跳网关。每增加一跳,序号递增。缺省情况下,最大跳数是30跳。 “10.3.112.1”表示第一跳的网关地址。每一跳序号后的IPv4地址表示本跳的网关地址。 “10 ms 10 ms 10 ms”表示发送的三个UDP报文和相应接收的ICMP超时报文或者ICMP端口不可达报文的时间差。缺省情况下,检测每跳时,发送的UDP探测数据包个数是三个。 |
* * * |
经过第N跳时,在一定时间内没有收到ICMP超时报文或者ICMP端口不可达报文。缺省情况下,等待响应报文的超时时间是5000ms。 |
所以说trace出来的时间数据是抖动信息,而不是延迟信息。
通过抓包可以看到,trace命令每次发送三个UDP报文,依靠中间节点发送的ttl超时错误信息,在屏幕上打印出来中间节点的IP地址,起到显示中间节点的功能。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~