بِسْمِ اللَّهِ الرَّحْمَنِ الرَّحِيْم
Introduction
Ping adalah salah satu network utility yang wajib dikuasai oleh setiap orang yang bekerja di bidang jaringan. Tulisan ini bertujuan untuk membahas informasi apa saja yang bisa didapat melalui hasil dari Ping. Dan contoh yang akan diberikan adalah hasil simulasi menggunakan GNS3.
PING
Ping adalah tool yang menggunakan ICMP (Internet Control Message Protocol) untuk mengecek apakah suatu IP bisa dicapai atau tidak. Ketika kita menggunakan command Ping, maka perangkat kita akan mengirimkan ICMP Echo Request ke IP target, dan idealnya target akan membalas dengan ICMP Echo Reply. Permisalannya seperti kita memanggil seseorang dengan “Hi!”, lalu orang tersebut juga membalas dengan “Hi!”.
Perhatikan contoh Ping di bawah ini:

Pada contoh di atas, kita menjalankan command ping 172.16.1.12 dari Linux Ubuntu yang disimulasikan di dalam GNS3.
PING 172.16.1.12 (172.16.1.12) 56(84) bytes of data.
Artinya perangkat kita mengirimkan ICMP Packet (ICMP Echo Request) yang memuat 56 Bytes data, yang dienkapsulasi oleh 20 Bytes IP Header dan 8 Bytes ICMP Header. Sehingga ukuran total dari ICMP Packet tersebut menjadi 84 Bytes.
64 bytes from 172.16.1.12: icmp_seq=1 ttl=59 time=3.34 ms.
Ketika packet ICMP Echo Request kita sampai ke IP target dan target membalas dengan ICMP Echo Reply, maka informasi yang akan kita dapatkan adalah seperti di atas. Poin pentingnya adalah “ttl” dan “time”.
TTL (Time to Live) adalah field pada IP Header yang berfungsi untuk mencegah terjadinya loop pada Layer 3. Angka pada TTL ini akan terus berkurang satu setiap kali packet melewati sebuah Router. Dan default TTL ketika menggunakan Ping dari OS Linux adalah 64. Contoh di atas menunjukkan TTL=59. Artinya packet dari perangkat kita melewati 5 Router sebelum sampai ke perangkat target (64-5=59).
Selanjutnya adalah “time”, inilah RTT (Round-trip Time). RTT artinya waktu yang ditempuh mulai dari ICMP Echo Request meninggalkan perangkat sumber -> sampai ke perangkat tujuan -> perangkat tujuan mengirimkan ICMP Echo Reply -> sampai ke perangkat sumber.
Menggunakan Ping, kita bisa menentukan ukuran data ICMP packet yang ingin kita kirim (default 56 Bytes), interval (default per detik), dan jumlah ping yang ingin dikirim.

Pada contoh di atas, kita mengirimkan ping dengan ukuran 1024 Bytes, interval per 0.2 detik, dan jumlah ping 7 kali.
Request Timed Out dan Packet Loss
Idealnya ketika kita mengirimkan Ping, maka kita akan menerima balasan seperti contoh sebelumnya. Lalu apa yang terjadi ketika yang kita terima adalah Request Timed Out, atau Packet Loss yang tinggi?
Firewall
Di antara penyebab Request Timed Out adalah firewall. Bisa jadi target yang kita Ping ada di belakang firewall yang dikonfigurasi untuk meng-drop packet ICMP ke arah target. Atau bisa jadi target itu sendiri menerapkan konfigurasi “silent-drop” untuk packet ICMP yang dia terima. Selain itu, firewall juga bisa dikonfigurasi untuk me-rate limit packet ICMP. Perhatikan topologi di bawah ini:

Pada topologi ini, PC2 dengan IP 172.16.1.12 berada di belakang Router R5. Firewall di dalam R5 dikonfigurasi untuk men-drop packet ICMP yang ditujukan ke IP PC2.
Mari kita coba ping dari PC1 ke PC2.

Dari 26 packet Ping yang dikirimkan dari PC1 ke PC2, semuanya timed out atau 100% packet loss. Ini karena packet ICMP yang ditujukan ke PC1 di-filter oleh R5.
Trafik Padat
Selain firewal, request timed out dan packet loss juga bisa disebabkan karena trafik yang padat, sedangkan ICMP bukanlah jenis trafik yang diprioritaskan. Sebagian jaringan dikonfigurasi untuk memprioritaskan packet seperti TCP dan UDP, karena 2 protokol inilah yang memuat data-data penting. Jadi ketika trafik padat, maka ICMP yang fungsi umumnya hanya untuk probing akan mendapat prioritas paling bawah.
Masalah Pada Layer 1
Ketika ada kerusakan pada Layer 1 seperti NIC atau kabel, maka hal ini dapat menyebabkan jaringan pada perangkat tidak stabil sehingga menyebabkan timed out dan packet loss.
Destination Host Unreachable
Selanjutnya hasil yang mungkin kita dapati ketika melakukan Ping adalah “Destination Host Unreachable”. Dalam jaringan, packet akan melewati Router-router sampai tiba di Router yang di mana IP tujuan dari packet berada di network Router tersebut. Baru setelah itu Router meneruskan packet tersebut ke perangkat tujuan. Destination Host Unreachable artinya perangkat tujuan atau target tidak dapat dicapai oleh Router. Perhatikan kembali Gambar 3. PC2 dengan IP 172.16.1.12 berada di network 172.16.1.0/24. Network ini adalah milik interface ether3 R5. Apa yang terjadi jika PC2 dimatikan, lalu PC1 mengirimkan Ping ke PC2? R5 akan menerima packet Ping dengan dst-address 172.16.1.12 tersebut, yang ada di network-nya sendiri. Akan tetapi R5 tidak lagi melihat PC2 melalui interface ether3. Sehingga R5 tidak bisa meneruskan packet Ping tersebut ke PC2, alias unreachable.

Perhatikan From 10.0.5.1 icmp_seq=1 Destination Host Unreachable. IP 10.0.5.1 adalah milik R5. Jadi packet Ping yang dikirimkan oleh PC1 untuk PC2 sudah diterima oleh R5. Akan tetapi PC2 menghilang (mati) dari jangkauan R5. Sehingga R5 mengirimkan ICMP Message ke PC1 bahwa packet Ping darinya tidak dapat diteruskan ke PC2. Permisalannya seperti kurir paket yang mengantarkan barang ke suatu alamat akan tetapi Si Penerima ternyata sudah mati.
Time to live exceeded
Hasil terakhir yang mungkin kita dapatkan ketika melakukan Ping yang dibahas dalam tulisan ini adalah “Time to live exceeded”. Di atas sudah kita bahas bahwa TTL adalah field pada IP Header yang berfungsi untuk mencegah terjadinya loop permanen di Layer 3. Perhatikan kembali Gambar 3. Routing pada topologi tersebut dikonfigurasi menggunakan static route 0.0.0.0/0, 1 arah, R1->R2->R3->R4->R5->R6->R7->R8. Jadi packet dari PC1 yang ditujukan ke IP Address di luar network-nya, akan diteruskan ke Router-router ini sampai packet tersebut menemukan alamat IP tujuannya. Jadi ping dari PC1 ke PC2 yang kita lakukan di atas, rutenya adalah PC1->R1->R2->R3->R4->R5->PC2. Dan ICMP Echo Reply dari PC2 ke PC1 akan melewati PC2->R5->R6->R7->R8->R1->PC1. Topologi seperti ini kemungkinan besar tidak akan kita temukan di dunia nyata, akan tetapi bisa dipakai sebagai pembelajaran.
Time to live exceeded adalah indikasi terjadinya looping pada Layer 3. Ini terjadi apabila kita mengirimkan packet ke IP Address yang tidak ada di sistem jaringan kita. Misalnya pada topologi Gambar 3, kita akan melakukan Ping dari PC1 ke IP 11.11.11.11. IP tersebut tidak ada pada topologi sistem jaringan ini. Sehingga dengan konfigurasi static route 0.0.0.0/0 pada semua Router, maka setiap Router akan terus mengirimkan packet tersebut ke Router selanjutnya, sampai TTL pada packet menjadi 0, dan Router yang terakhir mendapatkannya akan mengirimkan ICMP Message “Time to live exceeded” ke alamat IP pengirim (source address).


Pada Gambar 6, kita melakukan Ping ke IP 11.11.11.11. IP tersebut tidak ada dalam topologi kita. Akan tetapi karena static route 0.0.0.0/0, maka setiap Router terus mentransmisikan packet Ping tersebut ke Router selanjutnya sampai TTL pada packet menjadi 0. Kemudian kita melakukan packet capture pada salah satu Router, yaitu pada Gambar 7. Pada kolom info kita bisa melihat TTL pada packet terus berkurang karena packet tersebut terus diputar dari Router ke Router sampai terjadi TTL Exceeded.