Bosh sahifa Wiki NTP

NTP

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;
  • T2server so‘rovni qabul qilgan vaqt;
  • T3server 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)

Clock offset:

((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.

  • Clientserver — mijoz serverdan vaqt so‘raydi;
  • Symmetric active/passive — teng darajadagi serverlar o‘zaro vaqt almashadi;
  • Broadcast yoki multicastserver vaqtni guruhga yuboradi;
  • Manycast — mijoz mos serverlarni topishga urinadi.

Oddiy server va ishchi kompyuterlar ko‘pincha clientserver 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:

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