NTP — tarmoqdagi kompyuter, server, router va boshqa qurilmalarning soatini ishonchli vaqt manbalari bilan sinxronlashtiradigan protokol. Uning to‘liq nomi Network Time Protocol hisoblanadi.
Tizim vaqti faqat ekranda soat ko‘rsatish uchun kerak emas. Log yozuvlari, autentifikatsiya, sertifikatlar, ma’lumotlar bazasi, fayl vaqt belgisi, taqsimlangan tizim va monitoring bir xil vaqt tushunchasiga tayanadi.
Bir serverning vaqti boshqalardan bir necha daqiqa farq qilsa, hodisalar ketma-ketligini aniqlash qiyinlashadi. Vaqtga bog‘langan token yoki sertifikat hali amal qilmagan yoki muddati tugagan deb ko‘rinishi mumkin.
Tizim soati
Kompyuterda bir nechta vaqt manbasi mavjud bo‘lishi mumkin.
Real-Time Clock
RTC qurilma elektrdan uzilganda ham sana va vaqtni saqlashga yordam beradigan apparat soati. Motherboard batareyasi RTCni quvvatlantiradi.
System clock
Operatsion tizim ishga tushgach, o‘zining system clockini yuritadi. Kernel timer va apparat hisoblagichlari orqali vaqtni hisoblaydi.
Boot paytida tizim RTCdan boshlang‘ich vaqtni olishi mumkin. Keyinchalik NTP system clockni aniq manba bilan solishtiradi va tuzatadi.
NTP arxitekturasi
NTP vaqt manbalarini ierarxik qatlamlarga ajratadi. Bu qatlamlar stratum deb ataladi.
| Stratum | Mazmuni |
|---|---|
| Stratum 0 | Atom soati, GPS yoki radio vaqt manbasi; oddiy tarmoq serveri emas |
| Stratum 1 | Stratum 0 qurilmaga bevosita ulangan NTP server |
| Stratum 2 | Vaqtni stratum 1 serverlardan oladi |
| Stratum 3 | Vaqtni stratum 2 serverlardan oladi |
| Stratum 16 | Sinxronlashmagan yoki yaroqsiz manba holatini bildiradi |
Stratum raqami kichik bo‘lishi avtomatik ravishda eng yaxshi server degani emas. Kechikish, jitter, manbaning barqarorligi va tarmoq yo‘li ham hisobga olinadi.
NTP xabar almashinuvi
NTP mijoz va server orasida bir nechta vaqt belgilaridan foydalanadi.
Asosiy timestamp qiymatlari:
- T1 — mijoz so‘rov yuborgan vaqt;
- T2 — server so‘rovni qabul qilgan vaqt;
- T3 — server javob yuborgan vaqt;
- T4 — mijoz javobni qabul qilgan vaqt.
Shu qiymatlar asosida tarmoq kechikishi va soat og‘ishi taxminan hisoblanadi.
Round-trip delay:
(T4 - T1) - (T3 - T2)
((T2 - T1) + (T3 - T4)) / 2
Hisoblash tarmoq yo‘lining ikki tomonda taxminan o‘xshash kechikishga ega ekanini faraz qiladi. Yo‘nalishlar keskin asimmetrik bo‘lsa, aniqlik pasayadi.
Bir nechta vaqt manbasi
NTP mijoz odatda faqat bitta serverga tayanmaydi. Bir nechta manba quyidagi sabablarga ko‘ra ishlatiladi:
- bitta server ishlamay qolishi;
- noto‘g‘ri vaqt yuboruvchi manbani aniqlash;
- tarmoq kechikishini solishtirish;
- barqaror va yaqin manbani tanlash;
- falsetickerlarni chiqarib tashlash.
NTP algoritmi manbalarni statistik jihatdan solishtiradi. Boshqalardan keskin farq qiladigan server ishonchsiz deb baholanishi mumkin.
Polling
NTP serverga har soniyada so‘rov yuborishi shart emas. Mijoz soatning barqarorligiga qarab polling intervalini o‘zgartiradi.
Qisqa interval:
- yangi ishga tushgan tizimda;
- vaqt farqi tez o‘zgarayotganida;
- manba barqaror bo‘lmaganida.
Uzoq interval:
- soat barqarorlashganida;
- tarmoq va server yukini kamaytirish uchun;
- uzoq muddatli drift yaxshi o‘rganilganda.
Polling intervali ko‘pincha ikki darajalari ko‘rinishida boshqariladi.
Clock offset va frequency drift
Mahalliy apparat soati ideal tezlikda ishlamaydi. Harorat, komponent sifati va quvvat sharoiti sabab u tezroq yoki sekinroq yurishi mumkin. Bu frequency drift deb ataladi.
NTP faqat joriy vaqt farqini emas, soatning qancha tezlikda og‘ishini ham o‘rganadi. Shu orqali keyingi tuzatishlar yumshoqroq va aniqroq bo‘ladi.
Ba’zi NTP dasturlari drift ma’lumotini faylda saqlaydi. Tizim qayta ishga tushganda oldingi kuzatuvdan foydalanishi mumkin.
Step va slew
Tizim vaqti noto‘g‘ri bo‘lsa, ikki asosiy tuzatish usuli mavjud.
Step
Soat birdan to‘g‘ri qiymatga o‘tkaziladi. Katta farqni tez tuzatadi, lekin vaqt orqaga sakrashi mumkin.
Vaqtning orqaga o‘tishi:
- log tartibini buzishi;
- timer va schedulerga ta’sir qilishi;
- ma’lumotlar bazasidagi vaqt belgilarini chalkashtirishi;
- ayrim dastur xatolariga sabab bo‘lishi mumkin.
Slew
Soat yurish tezligi vaqtincha ozgina o‘zgartiriladi. Farq asta-sekin yopiladi va vaqt keskin sakramaydi.
Slew kichik farqlar uchun qulay. Juda katta farqni shu usulda tuzatish uzoq vaqt olishi mumkin.
NTP dasturlari bootning dastlabki bosqichida katta farq uchun step, keyinchalik kichik farqlar uchun slew ishlatishi mumkin.
Leap second
Yer aylanishi atom vaqtiga to‘liq mos kelmaydi. Tarixan UTC vaqtiga ayrim paytlar leap second qo‘shilgan.
NTP server leap second yaqinlashayotganini maxsus indikator orqali bildirishi mumkin. Operatsion tizim va ilovalar bu hodisani turlicha boshqaradi.
Ayrim yirik tizimlar leap smear usulidan foydalanadi. Bunda bir soniya ma’lum vaqt oralig‘iga juda kichik bo‘laklar bilan yoyiladi. Smear ishlatadigan va oddiy leap second ishlatadigan manbalarni aralashtirish vaqt farqiga olib kelishi mumkin.
NTP rejimlari
NTP bir nechta ishlash rejimiga ega.
- Client–server — mijoz serverdan vaqt so‘raydi;
- Symmetric active/passive — teng darajadagi serverlar o‘zaro vaqt almashadi;
- Broadcast yoki multicast — server vaqtni guruhga yuboradi;
- Manycast — mijoz mos serverlarni topishga urinadi.
Oddiy server va ishchi kompyuterlar ko‘pincha client–server modelidan foydalanadi.
Port va transport
NTP odatda UDP 123-portdan foydalanadi. UDP kam overhead bilan qisqa so‘rov–javob almashinuviga mos keladi.
Firewall siyosatida:
- mijozdan tasdiqlangan NTP serverlarga chiqish;
- tashqi tarmoqdan server roliga ruxsat;
- amplification xavfini cheklash;
- monitoring va rate limit;
- ichki serverlar orasidagi trafik
alohida boshqariladi.
NTP xavfsizligi
Noto‘g‘ri vaqt tizim xavfsizligiga bevosita ta’sir qiladi. Hujumchi soxta NTP javobi yuborsa:
- sertifikat tekshiruvi buzilishi;
- Kerberos autentifikatsiyasi ishlamasligi;
- token muddati noto‘g‘ri hisoblanishi;
- log vaqtlarini chalkashtirish;
- scheduled tasklarni noto‘g‘ri vaqtda ishga tushirish
mumkin.
Himoya choralari:
- faqat ishonchli serverlardan foydalanish;
- bir nechta mustaqil manba;
- firewall va ACL;
- katta vaqt sakrashiga limit;
- server manzilini aniq belgilash;
- monitoring;
- autentifikatsiyalangan vaqt protokoli.
NTS
Network Time Security NTP uchun zamonaviy autentifikatsiya va kalit kelishuv mexanizmini beradi.
NTSda TLS asosidagi alohida key establishment jarayoni bajariladi. Keyinchalik NTP paketlari samarali autentifikatsiya ma’lumoti bilan himoyalanadi.
NTS quyidagilarni ta’minlashga qaratilgan:
- serverning haqiqiyligini tekshirish;
- xabar yaxlitligi;
- replayga qarshilik;
- katta miqyosda ishlash;
- NTPning UDP xususiyatini saqlash.
NTS ma’lumot mazmunini yashirishdan ko‘ra vaqt javobining ishonchliligiga e’tibor beradi.
NTP dasturlari
Linux va boshqa tizimlarda turli NTP implementatsiyalari mavjud.
- chrony — o‘zgaruvchan tarmoq, virtual mashina va tez sinxronlash uchun keng ishlatiladi;
- ntpd — klassik NTP daemon;
- systemd-timesyncd — sodda SNTP/NTP mijoz vazifasi;
- tarmoq qurilmalaridagi ichki NTP client yoki server;
- Windows Time Service.
Har dastur barcha NTP server funksiyalari yoki murakkab peer rejimlarini bir xil darajada qo‘llamasligi mumkin.
Taqsimlangan tizimlarda vaqt
NTP soatlarni yaqinlashtiradi, lekin barcha serverlarda vaqt mutlaqo bir xil bo‘lishini kafolatlamaydi.
Taqsimlangan dasturlar quyidagilarni hisobga oladi:
- kichik clock skew;
- tarmoq kechikishi;
- vaqtning orqaga sakrashi;
- monotonic clock va wall clock farqi;
- hodisalar tartibi uchun logical clock;
- ma’lumotlar bazasi transaction tartibi.
Timeout o‘lchashda ko‘pincha monotonic clock ishlatiladi. Kalendardagi sana va log uchun wall clock kerak bo‘ladi.
Diagnostika
Vaqt sinxronlash muammosida quyidagilar tekshiriladi:
- serverga UDP 123 orqali yetish;
- tanlangan source;
- stratum;
- offset;
- delay;
- jitter;
- reachability register;
- system clock va RTC;
- timezone;
- firewall;
- virtual mashina host time sync;
- katta step siyosati;
- DNS orqali server nomi yechilishi.
Timezone noto‘g‘ri bo‘lishi NTP xatosi emas. NTP odatda UTCga yaqin vaqtni boshqaradi, lokal timezone esa operatsion tizim yoki ilova tomonidan ko‘rsatishga qo‘llanadi.
Bog‘liq tushunchalar
System clock, RTC, UTC, Stratum, Clock offset, Delay, Jitter, Frequency drift, NTS, UDP, chrony, ntpd, Leap second