Tracert簡介
Tracert是測試報文從發送端到目的地所經過的路由的方法。它能夠直觀展現報文在轉發的時候所經過的路徑。
Tracert基于ICMP協議來實現的。當網絡出現故障時,用戶可以使用Tracert確定出現故障的網絡節點。
Tracert實現過程
Tracert的實現如上圖1所示,Tracert的工作流程為:
(1)源端(SwitchA)向目的端(日志主機)發送一個UDP報文,TTL值為1,目的UDP端口號是大于30000的一個數,因為在大多數情況下,大于30000的UDP端口號是任何一個應用程序都不可能使用的端口號。
(2)第一跳(SwitchB)收到源端發出的UDP報文后,判斷出報文的目的IP地址不是本機IP地址,將TTL值減1后,判斷出TTL值等于0,則丟棄報文并向源端發送一個ICMP超時(TimeExceeded)報文(該報文中含有第一跳的IP地址10.1.1.2),這樣源端就得到了SwitchB的地址。
(3)源端收到SwitchB的ICMP超時報文后,再次向目的端發送一個UDP報文,TTL值為2。
(4)第二跳(SwitchC)收到源端發出的UDP報文后,回應一個ICMP超時報文,這樣源端就得到了SwitchC的地址(10.1.2.2)。
(5)以上過程不斷進行,直到目的端收到源端發送的UDP報文后,判斷出目的IP地址是本機IP地址,則處理此報文。根據報文中的目的UDP端口號尋找占用此端口號的上層協議,因目的端沒有應用程序使用該UDP端口號,則向源端返回一個ICMP端口不可達(DestinationUnreachable)報文(該報文含有目的端的IP地址10.1.3.2)。
(6)源端收到ICMP端口不可達報文后,判斷出UDP報文已經到達目的端,則停止Tracert程序,從而得到數據報文從源端到目的端所經歷的路徑(10.1.1.2;10.1.2.2;10.1.3.2)。
華為設備支持的Tracert命令
華為設備《命令參考》手冊提供了詳細的命令參數和使用方法。這里只列舉了常用的參數,并對參數進行解釋說明。
tracert[ -a source-ip-address | -f first-ttl | -m max-ttl | -p port | -qnqueries | -vpn-instance vpn-instance-name | -w timeout ] *host
-a:
指定報文的源地址。如果不指定源地址,將采用出接口的IP地址作為Tracert報文發送的源地址。
-f:
指定初始TTL。當經過的跳數小于此參數值,由于TTL字段的值大于0,經過的這幾個節點不會返回ICMP超時報文給源主機。如果已經設置了max-ttl參數值,first-ttl的取值必須小于max-ttl。
-m:
指定最大TTL。通常情況下,max-ttl的值被設置為經過站點的跳數。如果已經設置了first-ttl參數值,max-ttl的取值必須大于first-ttl。缺省情況下,最大TTL為30。
-p:
指定目的主機的UDP端口號。如果不指定目的主機的UDP端口號,Tracert命令使用大于32768的隨機的端口作為目標設備的接收報文端口。如果指定目的UDP端口號,需要避免采用對端已經開啟的端口號,否則會導致Tracert失敗。
-q:
指定每次發送的UDP探測數據報文的個數。當網絡質量不高時,可以增加發送探測數據報文的數目,保證探測報文能夠到達目的節點。缺省情況下,每次發送三個UDP探測數據報文。
-w:
等待響應報文的超時時間。當發送數據報文到達某網關超時,則輸出“* ”。如果網絡質量不高且速度很慢,建議增加發送數據報文的超時時間。缺省超時時間為5000毫秒。
host:
可以是IP地址或域名,如果是域名會首先進行DNS解析,并顯示解析后的IP地址。
電腦支持的Tracert命令
電腦上的Tracert功能與操作系統相關,這里以windows操作系統為例。這里只列舉了常用的參數,并對參數進行解釋說明。tracert[ -d | -h maximum_hops | -j host-list | -w timeout ] *host
-d:不解析主機名。
-h:指定最大TTL的數值。
-j:設定松散源地址路由列表。
-w:用于設置UDP報文的超時時間,單位為毫秒。
host:指定目的主機的域名或IP地址。
Tracert示例
<SwitchA>tracert 10.26.0.115
traceroute to10.26.0.115(10.26.0.115), max hops: 30 ,packet length: 40,pressCTRL_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.32.136.2319 ms 39 ms 39 ms
5 * * *
6 * * *
7 * * *
8 10.26.0.115 69 ms 79 ms 79 ms