Background

NTP (Network Time Protocol )

Network Time Protocol

Network Time Protocol atau lebih sering disebut dengan istilah NTP merupakan sebuah mekanisme atau protokol yang digunakan untuk melakukan sinkronisasi terhadap penunjuk waktu dalam sebuah sistem komputer dan jaringan. Proses sinkronisasi ini dilakukan di dalam jalur komunikasi data yang biasanya menggunakan protokol komunikasi TCP/IP. Sehingga proses ini sendiri dapat dilihat sebagai proses komunikasi data biasa yang hanya melakukan pertukaran paket-paket data saja.
NTP menggunakan port komunikasi UDP nomor 123. Protokol ini memang didesain untuk dapat bekerja dengan baik meskipun media komunikasinya bervariasi, mulai dari yang waktu latensinya tinggi hingga yang rendah, mulai dari media kabel sampai dengan media udara. Protokol ini memungkinkan perangkat-perangkat komputer untuk tetap dapat melakukan sinkronisasi waktu dengan sangat tepat dalam berbagai media tersebut. Biasanya dalam sebuah jaringan, beberapa node dilengkapi dengan fasilitas NTP dengan tujuan untuk membentuk sebuah subnet sinkronisasi. Node-node tersebut kemudian akan saling berkomunikasi dan ber sinkronisasi menyamakan waktu yang direkam mereka. Meskipun ada beberapa node yang akan menjadi master (primary server), protokol NTP tidak membutuhkan mekanisme pemilihan tersebut.
Prinsip Kerja
NTP bekerja dengan menggunakan algoritma Marzullo dengan menggunakan referensi skala waktu UTC. Sebuah jaringan NTP biasanya mendapatkan perhitungan waktunya dari sumber waktu yang terpercaya seperti misalnya radio clock atau atomic clock yang terhubung dengan sebuah time server. Komputer ini disebut juga stratum 1. Kemudian jaringan NTP ini akan mendistribusikan perhitungan waktu akurat ini ke dalam jaringan lain dengan protokol NTP yang disebut stratum 2. Komputer dalam jaringan tersebut dapat menyinkronkan jaringan lain yang disebut stratum 3, dan seterusnya sampai stratum 16.
Description: gambar11
Sebuah NTP client akan melakukan sinkronisasi dengan NTP server dalam sebuah interval pooling yang biasanya berkisar antara 64 sampai 1024 detik. Namun, waktu sinkronisasi ini bisa berubah secara dramatis bergantung kepada kondisi dan keadaan jaringan yang akan digunakannya. NTP menggunakan sistem hirarki dalam bekerja dan melakukan sinkronisasinya. Sistem hirarki ini menggunakan istilah Clock stratum atau strata untuk menggambarkan tingkatan-tingkatannya seperti yang sudah dijelaskan di atas. Sebuah perangkat NTP akan secara otomatis memilih perangkat dengan nilai stratum yang paling kecil untuk mendapatkan update pencatatan waktunya. Dengan demikian, maka tidak perlu melakukan mekanisme pemilihan rumit untuk mendapatkan tree dari NTP yang teratur dalam sebuah jaringan besar. Protokol NTP tetap bekerja dengan baik dalam melakukan sinkronisasi antara client dengan server-nya, meskipun melewati berbagai media. Tampaknya NTP tidak membeda-bedakan media cepat, media lambat, media padat, media kosong, dan sebagainya.
Kehebatan NTP ini didapat dari sistem estimasinya yang hebat yang mengandalkan tiga buah variabel kunci yang didapat dari hubungan antara client dan servernya. Ketiga variabel tersebut adalah:
  1. Network delay. Sebagai variabel yang didapat dari lamanya delay yang terjadi dalam media penghubungnya. Variabel ini merupakan kunci terpenting dalam mendapatkan sinkronisasi yang akurat.
  2. Time packets exchange dispersion. Dispersi atau penyebaran terhadap paket-paket sinkronisasi waktu digunakan untuk mengukur kesalahan maksimum dari perhitungan waktu antara kedua node yang berkomunikasi.
  3. Clock offset: Kerugian waktu ini merupakan variabel yang digunakan untuk melakukan koreksi terhadap pencatatan waktu yang ada di client. Koreksi inilah yang akan dibawa dalam sinkronisasi antarkedua perangkat.
NTP memiliki kemampuan untuk menghindari proses sinkronisasi dengan sebuah mesin yang dianggapnya tidak akan bisa akurat. Kemampuan tersebut didasari oleh dua parameter penentu:
    Perangkat NTP tidak akan melakukan sinkronisasi dengan sebuah mesin yang tidak melakukan sinkronisasi waktu dirinya sendiri dengan perangkat manapun. Karena dengan fakta tersebut, ada kemungkinan waktu yang dimilikinya tidak akurat.
    NTP akan melakukan proses komparasi terhadap beberapa perhitungan waktu dari beberapa server. Sebuah perangkat NTP yang memiliki pencatatan waktu yang paling berbeda dengan yang lainnya pasti akan dihindari oleh perangkat-perangkat lainnya, meskipun nilai stratumnya paling rendah daripada mesin yang lain.

3. Mengukur Ketelitian NTP dengan Menghitung Estimasi Network Delay
3.1. Metode Mendeteksi State pada NTP
Description: gambar2
Untuk mendeteksi perbedaan waktu antara satu sisi dengan sisi lainnya, NTP mengasumsikan bahwa incoming delay sama dengan outgoing delay. Tapi sebenarnya, ketika congestion terjadi, kedua hal tersebut tidaklah sama. Maka akan digunakan beberapa clocks untuk mengurangi kesalahan.
Paket-paket NTP akan saling bertukan antara server dan client dengan interval waktu berkisar dari 1 sampai 12 menit untuk mengukur perbedaan waktu. Paket-paket ini akan memberi tahu tentang incoming dan outgoing delay jika clock-clock ini telah tersinkronisasi secara sempurna. Tapi ketika hanya satu sisi dari NTP server dan client yang tersedia dan sisi tersebut tidak dapat dibuktikan telah tersinkronisasi waktu (time synchronized), kita tidak dapat mengukur incoming dan outgoing delay secara tepat. Untuk menjaga kepresisian clock, dibutuhkan mempersiapkan sisi (pair) sebanyak mungkin.
Dalam kasus ini, rute antara X dan Y telah dioverlap oleh rute dari X ke A dan X ke C (gambar 7). Delay yang terjadi dari X ke A adalah jumlah dari delay yang terjadi dari X ke Y dan delay yang terjadi dari Y ke A. Kita juga dapat memisahkan langkah dari X ke B menjadi langkah dari X ke Y dan langkah dari Y ke B. Ketika delay dari X ke Y berubah karena beberapa sebab, akan mempengaruhi delay dari X ke A dan dari X ke B. Di sisi lain ketika delay dari Y ke A berubah, delay dari X ke A berubah, sementara delay dari X ke B tidak berubah. Maka kita dapat memisahkan delay dari X ke Y dari delay dari Y ke A.
Ketika pergerakan delay dari X ke A mirip dari pergerakan delay dari X ke B, kita dapat menganggap pergerakan delay datang dari delay yang berasal dari X ke Y. Ketika tidak mirip, kita dapat menganggap pergerakan delay datang dari pergerakan delay yang sebenarnya dari masing-masing Y ke A dan dari Y ke B.
3.2. Metode Pengukuran Delay
Dengan memasang clock server dengan antena GPS di sisi client dan clock client di sisi server, kita mendapatkan statistik jaringan yang menggunakan server NTP ini. Server NTP akan menemukan server NTP lainnya. Maka kita sudah membuat sebuah collector untuk delay satu-arah. Dan kita dapat menggunakan hal tersebut untuk menemukan delay per bagian dari jaringan dari informasi delay pada server-server NTP.
Kita akan mencoba mendeteksi collision menggunakan informasi delay berdasarkan NTP server ke Y dan dari Y ke client.

3.3. Metode Estimasi
Dari ide di atas, diformalkan metode dibawah ini. Pertama, waktu ketika delay ditemukan ditunjukkan dengan t. Waktu awal ditunjukkan dengan S, waktu akhir dengan E. Maka S<t<E. Kita menunjukkan delay satu-arah dengan d(t), delay satu-arah dari P ke Q sebagai d P->Q(t).
Kita mengestimasikan delay satu-arah antara P dan Q sebagai perbedaan waktu yang tampak antara server NTP dan round-trip delay diantara mereka. Sebagai contoh delay satu-arah yang ditunjukkan dengan d(t) dapat didapatkan dari penjumlahan setengah dari round-trip delay dan perbedaan waktu yang tampak dari server NTP. Karena round-trip delay dan perbedaan dari waktu observasi adalah:
d P->Q + d Q->P, d P->Qd Q->P
Perhatikan delay satu-arah dari outgoing atau incoming paket. Pada lingkungan kerja kita, delay satu-arah dibagi menjadi dua komponen. da(t) yang berhubungan dengan waktu dan dd yang tidak berhubungan dengan waktu. Nilai-nilai ini memenuhi :
Description: gambar3Berdasarkan lingkungan kerja ini, diformulkan bagaimana menghitung delay dari X ke Y menggunakan delay data dari X ke A. Kita tunjukkan delay satu-arah dari X ke A, dan dari X ke B sebagai d X->A(t), d X->B(t), komponen variabel waktu mereka sebagai da X->A(t), db X->B(t) dan komponen time-constant masing-masing sebagai dd X->A, dd X->B . Lalu, jika perbedaan antara da X->A(t) dan da X->B(t) sedikit, kita tahu bahwa d X->A(t) mirip dengan d X->B(t). Kita mengasumsikan bahwa nilai minimum dari komponen time-constant dari d X->A(t), d X->B(t) telah diperkirakan secara baik dari komponen time-constant dari d X->Y(t). Selanjutnya kita mengasumsikan komponen variabel waktu d X->A(t) dan d X->B(t) memiliki karakteristik yang mirip ketika perbedaaan dari komponen variabel waktu bernilai kecil. Ini berarti da X->A(t) dan da X->B(t) memiliki nilai yang mirip dengan X->A dan X->B.
Kita mengasumsikan kemiripan nilai dapat memperkirakan dengan baik komponen variabel waktu dari elemen X->Y. Lalu kita menggunakan rata-rata elemen variabel waktu dari X->A dan X->B sebagai komponen variabel waktu delay dari X -> Y. Ketika perbedaan antara da X->A(t) dan da X->B(t) kecil, kita dapat menunjukkan persamaan berikut tentang perkiraan delay antara X dan Y dapat kita pegang.
Description: gambar4
Dalam kasus ini, kita tahu bahwa delay dari X ke Y menggunakan data delay dari X ke A, dan dari X ke B. Tapi jika terdapat perbedaan yang besar antara da X->A(t) dan da X->B(t), metode ini tidak dapat digunakan. Ketika terdapat perbedaan yang besar, kita dapat mengestimasikan nilai dari komponen Y->A dan Y->B jauh lebih besar dari elemen X->Y pada X->A dan X->B. Jadi, pada kasus ini, kita tidak dapat menghitung delay dari X->Y dengan presisi. Untuk kasus ini, kita perlu mempersiapkan C, D … daripada A, B dan untuk menghitung delay secara presisi dari X->A, X->C atau X->B dan X->C.
Ketika terdapat perbedaan yang besar da X->A(t) dan da X->B(t), kita mengasumsikan delay dari Y->A dapat diperkirakan sebagai d Y->A(t) = d X->A(t) – d X->Y(t).

Categories: Share

Leave a Reply