Bog bos network time protocol
Призначення протоколу полягає в синхронізації клієнта або сервера з сервером або джерелом точного часу (радіо, атомний годинник або ще щось). Стандартизована (Draft Standard) версія 3 протоколи NTP (RFC-1305), але поточна реалізація підтримує як 3-ю, так і 4-ю версією. Синхронізується не тільки поточне значення часу, а й частота відліку таймера. Забезпечує точність до мілісекунди в межах LAN і десятків мілісекунд за допомогою WAN. Передбачена криптографічний захист (шифрування контрольної суми), одночасне підключення до декількох серверів на випадок аварії, алгоритми усереднення і т.д. Підтримує самоналагоджувальна ієрархічну архітектуру мережі синхронізації (симетричний механізм обміну пакетами). Головні сервера (безпосередньо приєднані до джерела точного часу) утворюють перший шар (stratum), приєднані безпосередньо до них - другий шар, і т.д. Для обміну інформацією між використовується протокол UDP (порт 123). Використовується досить складні алгоритми фільтрації, селекції та комбінації пакетів на принципах максимальної ймовірності. Протокол забезпечує підтримку безлічі резервних серверів і шляхів передачі (вибір кращого на основі алгоритму зваженого голосування). Досягається точність первинного сервера - мілісекунди. Типовий інтервал опитування - від 1 хвилини (на початку роботи) до 17 хвилин (якщо все добре). Сервер безперервно коригує хід локальних годин, використовуючи обчислену інформацію про відхилення їх частоти від істинної. Це дозволяє зменшити частоту опитування і утримувати відхилення показань годин від справжніх при тимчасових збоях мережі. Підстроювання частоти забезпечує пристойну точність годин навіть при модемному з'єднанні з Інтернет. При великих відхиленнях (більше 128 мс) за місцевим часом від часу обраного сервера корекція проводиться стрибком, інакше шляхом підстроювання частоти місцевих годин.
Як значення часу використовується беззнаковое 64-бітове число з фіксованою точкою, число секунд в UTC. Перші 32 біта - число секунд, другі 32 біта - дрібна частина. Точність 232 пікосекунди. Старший біт зведений десь в 1968 році, переповнення настане в 2036 році. 0 означає невизначений час.
Типова конфігурація в невеликій організації включає 3 місцевих сервера, кожен з яких підключений до трьох зовнішніх серверів (9 різних зовнішніх серверів!), Місцеві сервера з'єднані між собою. Не рекомендується поєднувати між собою більше 10 серверів. Клієнти підключені до кожного з трьох місцевих серверів.
При описі алгоритму використовуються наступні терміни стабільність здатність утримувати постійну частоту точність (акуратність?) Збіг з національним стандартом дозвіл точність вимірювання зміщення годин різниця в часі між ними skew (розбіжність?) Різниця в частоті між ними надійність частка часу, в яке годинник доступні синхронізація годин синхронізація частоти і часу первинний (primary) джерело синхронізований з національним стандартом (провід, радіо, атомний годинник)
Формат NTP-пакета:- LI (leap indicator) - в кінці доби повинна бути вставлена секунда для синхронізації атомного (TAI) і астрономічних годин (GMT)
- VN - номер версії (3 або 4)
- mode - режим роботи
- stratum - шар
- precision - дозвіл місцевих годин (log2)
- poll interval - інтервал запитів (використовується мінімальний зі свого і сусідського, log2)
- synchronization distance - повний цикл обміну повідомленнями (roundtrip delay) до первинного джерела
- synchronization dispersion - дисперсія цих затримок
- reference clock identifier - тип опорних годин
- reference timestamp - час останньої зміни опорних годин (використовується для управління)
- originate timestamp - час сусіда, коли останнім NTP-повідомлення було відправлено (копіювати після прибуття з transmit timestamp)
- receive timestamp - місцевий час його одержання NTP-повідомлення
- transmit timestamp - місцевий час відправки поточного повідомлення
- authenticator (96 bit) - опція - ключ і шифрована контрольна сума повідомлення
- Якщо протягом 8 послідовних інтервалів опитування від сусіда не було повідомлень, то він вважається недосяжним.
- Робиться перевірка часів: якщо час передачі збігається з попереднім повідомленням, то це безсумнівно дубль; якщо originate timestamp в повідомленні не збігається зі значенням передачі в змінних даної асоціації, то нас намагаються обдурити.
- Робляться додаткові захисту від дуже старих повідомлень і не повністю синхронізованих асоціацій.
- Аутентифікатор складається з ключа і шифрованого контрольної суми - виділяється за допомогою алгоритму DES і DES cipher block-chaning (CBC), забезпечує безперервний ланцюжок повідомлень між вузлами, в яку неможливо влізти (необхідна компенсація часу шифровки). Використовуються алгоритми, час роботи яких не залежить від ключа і шифрованого тексту.
Версія 4 (неприйнята, але вже реалізована) забезпечує більшу точність за рахунок обліку тремтіння (jitter) джерела і швидкості роботи мережі, поліпшених алгоритмів обробки і підстроювання локальних годин, більш швидкої "збіжності" при запуску (хвилини замість днів). Це дозволяє зменшити частоту опитування клієнтом серверів. Додані можливості наносекундного розв'язання локальних годин (Linux?), Управління за допомогою SNMP і автоматичної конфігурації клієнтів (multicast) із забезпеченням безпеки методами криптографії. На додаток до алгоритмів симетричного шифрування (до DES CBC доданий MD5) використовується алгоритм з відкритим ключем (autokey, роботи не завершені).
У будь-якому випадку для надійної роботи рекомендується організувати від 3 до 5 локальних серверів NTP, об'єднаних "сусідськими" зв'язками і кожен з яких Сінхронізуется не менше ніж з 3 зовнішніми серверами бажано з використанням різних маршрутів доступу. Вкрай небажано використовувати несиметричні маршрути (туди по модему, назад по супутниковому каналу).