Pengertian Traceroute
Traceroute (Tracert) adalah perintah untuk
menunjukkan rute yang dilewati paket untuk mencapai tujuan. Ini
dilakukan dengan mengirim pesan Internet Control Message Protocol
(ICMP) Echo Request Ke tujuan dengan nilai Time to Live yang semakin
meningkat. Rute yang ditampilkan adalah daftar interface router (yang
paling dekat dengan host) yang terdapat pada jalur antara host dan
tujuan.
Proses Traceroute
Proses Traceroute
Untuk mengetahui jalur yang ditempuh untuk mencapai suatu node,
traceroute mengirimkan 3 buah paket probe tipe UDP dari port sumber
berbeda, dengan TTL bernilai 1. Saat paket tersebut mencapai router
next-hop, TTL paket akan dikurangi satu sehingga menjadi 0, dan router
next-hop akan menolak paket UDP tersebut sembari mengirimkan paket ICMP
Time-to-Live Exceeded ke node asal traceroute tersebut. Dengan cara
ini, pengirim traceroute tahu alamat IP pertama dari jalur yang
ditempuh.
Kemudian, sumber traceroute mengirimkan 3 buah paket UDP lagi
dengan nilai TTL yang dinaikkan 1 (TTL = 2), sehingga router pertama di
jalur menuju tujuan traceroute akan melewatkan paket UDP tersebut ke
router selanjutnya. Router hop kedua akan melihat bahwa paket tersebut
sudah expired (TTLnya jadi 1, setelah dikurangi oleh router pertama).
Maka, seperti halnya router pertama, router tersebut akan mengirimkan
paket ICMP Time-to-Live Exceeded ke sumber traceroute. Sekarang, sumber
traceroute telah mengetahui hop kedua dari jalur menuju tujuan
traceroute.
Sumber traceroute akan mengirimkan lagi paket UDP dengan TTL
ditambah 1 (TTL = 3). Router hop ketiga akan membalas dengan paket ICMP
Time-to-Live Exceeded ke sumber traceroute, sehingga sumber traceroute
mengetahui alamat IP router hop ketiga. Proses ini akan diulang terus
paket UDP yang dikirimkan mencapai alamat IP tujuan traceroute. Tiga
buah paket UDP traceroute adalah jumlah paket default dari aplikasi
traceroute. Inilah mengapa kita melihat tiga buah tampilan latensi saat
melihat hasil traceroute yang dijalankan.
Tidak semua aplikasi traceroute menggunakan UDP. Windows menggunakan
paket ICMP, sedangkan sejumlah aplikasi tertentu menggunakan paket
TCP.
Cara menghitung latensi tiap hop adalah dengan mengukur selisih
antara timestamp paket probe yang dikirimkan dengan timestamp dari
paket ICMP TTL exceeded yang diterima. Router yang berada sepanjang
jalur pengiriman tidak akan melakukan pemrosesan data timestamp. Dari
cara ini, yang kita ketahui hanyalah waktu total pulang-pergi dari
sumber ke router hop tertentu. Delay yang terjadi sepanjang perjalanan
kembali ke sumber juga akan berpengaruh.
Kemudian, alamat IP dari interface manakah yang kita lihat dari hasil traceroute?
traceroute ingress
Alamat IP yang kita lihat dari hasil traceroute adalah IP dari
interface ingress router. Sebenarnya, RFC 1812 menyebutkan bahwa sumber
ICMP haruslah dari interface egress. Namun, hal ini akan menyebabkan
hasil traceroute menjadi kacau.
Traceroute pada Windows
Cara Melakukan Traceroute :
- Klik Start –> Run
- Setelah muncul pop up lalu anda tinggal ketikkan –> CMD
- Lalu munculah gambar seperti di bawah ini , kemudian anda tinggal ketikkan –> tracert (spasi) namadomainanda
Interpretasi DNS dari Hasil Traceroute
Dengan traceroute, kita dapat menganalisis informasi mengenai lokasi
router, tipe dan kapasitas interface, tipe dan fungsi router, serta
batas-batas network yang dilalui, berdasarkan DNS interface yang
dilalui. IUntuk lebih memperjelas, berikut ini adalah contoh hasil
traceroute kewww.berkeley.edu:
$ traceroute www.berkeley.edu
traceroute to amber.Berkeley.EDU (128.32.25.12), 30 hops max, 40 byte packets
1 203.130.216.2 (203.130.216.2) 137 ms 151 ms 151 ms
2 203.130.216.1 (203.130.216.1) 151 ms 137 ms 138 ms
3 192.168.8.49 (192.168.8.49) 137 ms 151 ms 151 ms
4 S12-0-11.kbl.surabaya.telkom.net.id (202.134.3.45) 192 ms 151 ms 151 ms
5 FE0-0-gw3.cibinong.telkom.net.id (202.134.3.134) 165 ms 151 ms 151 ms
6 hssi-gw3.hk.telkom.net.id (202.134.3.1) 659 ms 659 ms 645 ms
7 202.130.129.61 (202.130.129.61) 645 ms 687 ms 659 ms
8 321.ATM5-0-0.XR1.HKG2.ALTER.NET (210.80.3.1) 645 ms 659 ms 645 ms
9 POS1-0-0.TR1.HKG2.Alter.Net (210.80.48.21) 672 ms 646 ms 645 ms
10 384.ATM4-0.IR1.LAX12.Alter.Net (210.80.50.189) 838 ms 796 ms 796 ms
11 137.39.31.222 (137.39.31.222) 810 ms 852 ms 810 ms
12 122.at-5-1-0.TR1.LAX9.ALTER.NET (152.63.10.237) 824 ms 810 ms 810 ms
13 297.at-1-0-0.XR1.LAX9.ALTER.NET (152.63.112.237) 824 ms 838 ms 824 ms
14 191.ATM6-0.BR1.LAX9.ALTER.NET (152.63.113.9) 837 ms 797 ms 810 ms
15 acr1-loopback.Anaheim.cw.net (208.172.34.61) 810 ms 1071 ms 782 ms
16 acr1-loopback.SanFranciscosfd.cw.net (206.24.210.61) 783 ms 810 ms 769 ms
17 BERK-7507--BERK.POS.calren2.net (198.32.249.69) 810 ms 1126 ms 796 ms
18 pos1-0.inr-000-eva.Berkeley.EDU (128.32.0.89) 796 ms 824 ms 796 ms
19 pos5-0-0.inr-001-eva.Berkeley.EDU (128.32.0.66) 796 ms 783 ms 783 ms
20 fast1-0-0.inr-007-eva.Berkeley.EDU (128.32.0.7) 810 ms 810 ms 797 ms
21 f8-0.inr-100-eva.Berkeley.EDU (128.32.235.100) 797 ms 782 ms 769 ms
22 amber.Berkeley.EDU (128.32.25.12) 796 ms 769 ms 810 msTraceroute akan menampilkan titik-titik perantara yang menjembatani anda dan titik tujuan anda, ‘jembatan’ inilah yang biasa disebut dengan router, data yang andakirimkan akan meloncat melewati jembatan-jembatan ini. Ada tiga buah waktu yang menunjukkan berapa waktu yang dibutuhkan oleh paket tersebut untuk berjalan dari komputer anda ke router.Untuk dapat memahami seluruh data yang dihasilkan oleh traceroute tersebut, kita harus memahami bagaimana cara traceroute bekerja.
Berikut ini adalah contoh yang lebih kompleks dengan melakukan traceroute ke finland:
% traceroute www.hut.fi
traceroute to info-e.hut.fi (130.233.224.28), 30 hops max, 40-byte packets
1 203.130.216.2 (203.130.216.2) 137 ms 124 ms 137 ms
2 203.130.216.1 (203.130.216.1) 137 ms 124 ms 124 ms
3 192.168.8.49 (192.168.8.49) 137 ms 151 ms 151 ms
4 S12-0-11.kbl.surabaya.telkom.net.id (202.134.3.45) 192 ms 151 ms 151 ms
5 FE0-0-gw3.cibinong.telkom.net.id (202.134.3.134) 164 ms 165 ms 151 ms
6 hssi-gw3.hk.telkom.net.id (202.134.3.1) 673 ms 645 ms 645 ms
7 202.130.129.61 (202.130.129.61) 659 ms 646 ms 659 ms
8 321.ATM5-0-0.XR1.HKG2.ALTER.NET (210.80.3.1) 659 ms 645 ms 659 ms
9 POS1-0-0.TR1.HKG2.Alter.Net (210.80.48.21) 659 ms 632 ms 659 ms
10 284.ATM6-0.IR1.SAC2.Alter.Net (210.80.50.1) 797 ms 823 ms 797 ms
11 POS2-0.IR1.SAC1.ALTER.NET (137.39.31.190) 796 ms 1566 ms 810 ms
12 122.at-6-1-0.TR1.LAX9.ALTER.NET (152.63.10.218) 838 ms 823 ms 824 ms
13 297.at-2-0-0.XR1.SAC1.ALTER.NET (152.63.50.133) 933 ms 824 ms 838 ms
14 185.ATM5-0.BR4.SAC1.ALTER.NET (152.63.52.201) 810 ms 824 ms 851 ms
15 137.39.52.86 (137.39.52.86) 810 ms 1071 ms 810 ms
16 sl-bb21-ana-15-0.sprintlink.net (144.232.1.173) 769 ms (ttl=246!) 796 ms (ttl=246!) 783 ms (ttl=246!)
17 sl-bb20-pen-8-0.sprintlink.net (144.232.18.45) 893 ms 851 ms (ttl=245!) 893 ms
18 sl-bb22-pen-11-0.sprintlink.net (144.232.18.78) 893 ms (ttl=244!) 879 ms (ttl=244!) 879 ms (ttl=244!)
19 sl-bb10-nyc-9-0.sprintlink.net (144.232.7.1) 865 ms 879 ms 879 ms
20 sl-bb10-nyc-10-0.sprintlink.net (144.232.13.158) 879 ms 892 ms 893 ms
21 gblon505-tc-p6-3.ebone.net (195.158.229.46) 865 ms 879 ms 920 ms
22 bebru204-tc-p5-0.ebone.net (195.158.232.42) 961 ms 948 ms 934 ms
23 nlams303-tc-p1-0.ebone.net (195.158.225.86) 962 ms 961 ms 934 ms
24 dedus205-tc-p8-0.ebone.net (213.174.70.133) 934 ms 961 ms 947 ms
25 dkcop204-tb-p3-0.ebone.net (213.174.71.50) 975 ms 975 ms *
26 * * *
27 ne-gw.nordu.net (195.158.226.86) 1002 ms 962 ms 1016 ms
28 hutnet-gw.csc.fi (128.214.248.65) 1027 ms (ttl=238!) 1040 ms (ttl=238!) 1026 ms (ttl=238!)
29 hutnet-gw.hut.fi (193.166.43.253) 1020 ms 1037 ms 1023 ms
30 info-e.hut.fi (130.233.224.28) 1091 ms (ttl=46!) 1027 ms (ttl=46!) 1067 ms (ttl=46!)
Baris pertama hanya menunjukkan apa yang akan dilakukan oleh traceroute yaitu melakukan
trace ke host yang bernama info-e.hut.fi dengan maksimum loncatan 30 dan besar paket
yang dikirimkan adalah 40 byte.
Hasilnya, paket tersebut melewati 30 router atau 30 kali loncatan.
Loncatan yang pertama sampai kelima hanya memakan waktu sekitar 100-200
mili detik adalah loncatan dari komputer penulis ke jaringan milik
Telkomnet di Indonesia. Pada loncatan ke enam, waktu yang diperlukan
meningkat banyak sekali menjadi sekitar 650 mili detik, ini dikarenakan
loncatan tersebut memang jauh, yaitu dari stasiun bumi Telkomnet yang
ada di Cibinong ke gateway milik Telkomnet yang ada di Hongkong. Kadang
waktu yang diperlukan meningkat banyak sekali karena jarak yang jauh
atau jaringan yang dilewati memang sedang padat. Anda harus mencurigai
titik-titik dimana waktu yang diperlukan menjadi besar sekali. Jika hal
ini terjadi, anda dapat mengeceknya dengan melakukan ping ke router
tersebut beberapa kali untuk melihat apakah paket yang kita kirimkan di
drop, atau apakah ada variasi waktu yang besar. Kemudian pada loncatan
ke 16 sampai 18 anda melihat (ttl=246!) di sebelah kolom waktu. Ini
adalah indikasi dari trceroute bahwa TTL yang kembali tidak sesuai
dengan sewaktu dikirimkan ini menunjukkan adanya asymmetric path, yaitu
router yang dilewati paketsewaktu berangkat tidak sesuai dengan router
yang dilewati sewaktu paket tersebutkembali. Tetapi hal itu adalah
normal.
Tanda asterik pada loncatan ke 25 dan 26 menandakan bahwa traceroute
tidak menerima respon dari komputer tersebut, pada loncatan ke 26
kemungkinan dikarenakan router tersebut tidak mengirimkan paket ICMP,
sedangkan pada loncatan ke 25 kemungkinan adalah hasil dari paket ICMP
yang dikirimkan oleh router tersebut hilang di perjalanan karena suatu
sebab.
Dikombinasikan dengan ping, traceroute menjadi alat analisa jaringan
yang baik dengan melihat loncatan mana yang memakan waktu yang besar
atau paket yang di drop, kita dapat menentukan dimana titik kritisnya.
Kemudian dengan melakukan ping pada titik tersebut dan satu titik
sebelumnya, kita dapat menemukan masalah yang ada dalam jaringan.
Impelementasi Traceroute menggunakan Delphi
Desain Form
Form Traceroute
001 | unit fmTraceRouteMainU; |
007 | QGraphics, QControls, QForms, QDialogs, QStdCtrls, QComCtrls, QExtCtrls, |
010 | Windows, Messages, Graphics, Controls, Forms, Dialogs, ComCtrls, ActnList, |
011 | StdCtrls, Spin, ExtCtrls, |
013 | SysUtils, Classes, IdBaseComponent, IdComponent, IdRawBase, IdRawClient, IdIcmpClient, |
014 | IdAntiFreezeBase, IdAntiFreeze; |
017 | TfmTracertMain = class (TForm) |
025 | ActionList1: TActionList; |
027 | seMaxHops: TSpinEdit; |
034 | IdIcmpClient: TIdIcmpClient; |
035 | IdAntiFreeze1: TIdAntiFreeze; |
036 | Splitter1: TSplitter; |
039 | procedure edTargetChange(Sender: TObject); |
040 | procedure acResolveExecute(Sender: TObject); |
041 | procedure acGoExecute(Sender: TObject); |
042 | procedure acPingExecute(Sender: TObject); |
043 | procedure acTraceExecute(Sender: TObject); |
044 | procedure lvTraceCompare(Sender: TObject; Item1, Item2: TListItem; |
045 | Data: Integer ; var Compare: Integer ); |
046 | procedure acStopExecute(Sender: TObject); |
050 | ResolvedHost: String ; |
052 | function PingHost(Host: string ; TTL: Integer ): boolean ; |
053 | function FindItem(TTL: Integer ; Add: boolean ): TListItem; |
059 | fmTracertMain: TfmTracertMain; |
063 | uses idStack, IdException; |
064 | {$IFDEF Linux}{$R *.xfm}{$ELSE}{$R *.DFM}{$ENDIF} |
066 | procedure TfmTracertMain . edTargetChange(Sender: TObject); |
071 | procedure TfmTracertMain . acResolveExecute(Sender: TObject); |
074 | lbLog . Items . Append(Format( 'resolving %s' ,[edTarget . text])); |
076 | Application . ProcessMessages; |
077 | ResolvedHost := gStack . WSGetHostByName(edTarget . text); |
079 | lbLog . Items . Append(format( '%s resolved to %s' ,[edTarget . text, ResolvedHost])); |
081 | on e: EIdSocketError do |
082 | lbLog . Items . text := lbLog . Items . text + e . message; |
086 | procedure TfmTracertMain . acGoExecute(Sender: TObject); |
090 | saveCursor := Screen . Cursor; |
091 | Screen . Cursor := crHourGlass; |
094 | acGo . Enabled := false ; |
095 | acStop . enabled := true ; |
097 | if bResolved and not stopped then |
103 | acGo . Enabled := true ; |
104 | acStop . enabled := false ; |
106 | Screen . Cursor := saveCursor; |
110 | function TfmTracertMain . PingHost(Host: string ; TTL: Integer ): Boolean ; |
113 | IdIcmpClient . Host := Host; |
114 | IdIcmpClient . TTL := TTL; |
115 | IdIcmpClient . ReceiveTimeout := 5000 ; |
117 | case IdIcmpClient . ReplyStatus . ReplyStatusType of |
120 | lbLog . Items . Append(format( 'response from host %s in %d millisec.' , |
122 | IdIcmpClient . ReplyStatus . FromIpAddress, |
123 | IdIcmpClient . ReplyStatus . MsRoundTripTime |
128 | lbLog . Items . Append( 'Unknown error.' ); |
130 | lbLog . Items . Append( 'Timed out.' ); |
132 | lbLog . Items . Append(format( 'Host %s reports destination network unreachable.' , |
134 | IdIcmpClient . ReplyStatus . FromIpAddress |
137 | lbLog . Items . Append(format( 'Hope %d %s: TTL expired.' , |
140 | IdIcmpClient . ReplyStatus . FromIpAddress |
145 | procedure TfmTracertMain . acPingExecute(Sender: TObject); |
147 | PingHost(ResolvedHost, seMaxHops . value); |
148 | Application . ProcessMessages; |
151 | function TfmTracertMain . FindItem(TTL: Integer ; Add: boolean ): TListItem; |
157 | if lvTrace . Items . Count < TTL Then |
159 | for i := 0 to lvTrace . Items . Count - 1 do |
161 | if StrToIntDef(lvTrace . Items[i].Caption, - 1 ) = TTL then |
163 | result := lvTrace . Items[i]; |
168 | if not assigned( result ) then |
171 | result := lvTrace . Items . Add; |
172 | result . Caption := IntToStr(TTL); |
176 | procedure TfmTracertMain . acTraceExecute(Sender: TObject); |
187 | IdIcmpClient . Host := ResolvedHost; |
188 | IdIcmpClient . TTL := TTL; |
189 | IdIcmpClient . ReceiveTimeout := 5000 ; |
191 | aItem := FindItem(TTL, True ); |
192 | aItem . SubItems . Clear; |
193 | case IdIcmpClient . ReplyStatus . ReplyStatusType of |
196 | aItem . SubItems . Append(IdIcmpClient . ReplyStatus . FromIpAddress); |
197 | aItem . SubItems . Append(format( 'Reached in : %d ms' , [IdIcmpClient . ReplyStatus . MsRoundTripTime])); |
202 | aItem . SubItems . Append(IdIcmpClient . ReplyStatus . FromIpAddress); |
203 | aItem . SubItems . Append( 'Unknown error.' ); |
207 | aItem . SubItems . Append( '?.?.?.?' ); |
208 | aItem . SubItems . Append( 'Timed out.' ); |
212 | aItem . SubItems . Append(IdIcmpClient . ReplyStatus . FromIpAddress); |
213 | aItem . SubItems . Append(format( 'Destination network unreachable' , [IdIcmpClient . ReplyStatus . MsRoundTripTime])); |
218 | aItem . SubItems . Append(IdIcmpClient . ReplyStatus . FromIpAddress); |
219 | aItem . SubItems . Append(format( 'TTL=%d' , [IdIcmpClient . ReplyStatus . TimeToLive])); |
222 | Application . ProcessMessages; |
223 | until reached or (TTL > seMaxHops . value) or Stopped; |
226 | procedure TfmTracertMain . lvTraceCompare(Sender: TObject; Item1, |
227 | Item2: TListItem; Data: Integer ; var Compare: Integer ); |
229 | Compare := StrToIntDef(Item1 . Caption, - 1 ) - StrToIntDef(Item2 . Caption, - 1 ); |
232 | procedure TfmTracertMain . acStopExecute(Sender: TObject); |
235 | acStop . enabled := false ; |