загальні змінні
Наступні змінні є загальними для двох або більше систем, партнерів і класів пакетів. Коли необхідно відрізнити загальні змінні з ідентичними іменами, вводиться ідентифікатор змінної.
Індикатор збільшення (sys. Leap. Peer. Leap. Pkt. Leap) - це двухбітний код попередження про включення додаткових секунд у тимчасову шкау NTP. Ці біти встановлюються до 23:59 дня додавання і скидаються після 00:00 наступного дня. В результаті день, для якого проведена ця процедура, виявиться довший або коротший на одну секунду. Для вторинних серверів ці біти встановлюються протоколом NTP. Біти 0 і 1 (LI) приймають значення, перераховані в таблиці 7.1.
Таблиця 7.1. Значення кодів індикатора LI
У всіх випадках, за винятком аварійного сигналу (alarm = 112), протокол NTP ніяк не змінює ці біти, а тільки передає їх програмами перетворення часу, які не є частиною протоколу. Аварійна ситуація виникає, коли з якої-небудь причини локальні годинник виявляються не синхронізованими. Це може статися в ході ініціалізації системи або в разі, коли первинні годинник виявляються недоступні протягом тривалого часу.
Режим (peer.mode, pkt.mode) - це ціле 3-бітове число, що позначає код режиму асоціації, який може приймати значення, наведені в таблиці 7.2.
Таблиця 7.2. Значення кодів Режим
Для цілей порівняння значення нуль для коду шару вважається вище, ніж будь-яка інша величина. Зауважимо, що максимальне значення цілого, закодоване як пакетна змінна. обмежена параметром ntp .maxstratum.
Період обміну (sys.poll, peer.hostpoll, peer.peerpoll, pkt.poll). Це ціла змінна зі знаком, яка вказує мінімальний інтервал між переданими повідомленнями, виміряний в секундах і представлений як ступінь 2. Наприклад, значення 6 вказує на мінімальний інтервал в 64 секунди.
Точність (sys.precision, peer.precision, pkt.precision). Це ціла змінна зі знаком, що позначає точність годин в секундах і виражена як найближча ступінь числа 2. Значення має бути округлено в більшу сторону до найближчого значення ступеня 2, наприклад, мережевий частоті 50-Гц (20 мс) або 60-Гц (16.67 мс ) буде поставлена у відповідність величина -5 (31.25 мс), в той час як кварцовою частоті 1000-Гц (1 мс) буде поставлено у відповідність значення -9 (1.95 мс).
Базова затримка (sys.rootdelay, peer.rootdelay, pkt.rootdelay). Це число з фіксованою комою зі знаком, який вказує на величину повної циклічної затримки (RTT) до первинного еталона частоти, вираженої в секундах.
Базова дисперсія (sys.rootdispersion, peer.rootdispersion, pkt.rootdispersion). Це число з фіксованою комою більше нуля, яке вказує на максимальне значення тимчасової помилки по відношенню до первинного еталона в секундах.
Ідентифікатор еталонних годин (sys.refid, peer.refid, pkt.refid). Це 32-бітовий код, що ідентифікує конкретні еталонні годинник. У разі шару 0 (специфікований) або шару 1 (первинний еталонний джерело), це 4-октетное ASCII -строка, вирівняна по лівому краю і доповнена при необхідності нулями, наприклад:
Таблиця 7.4. Коди ідентифікаторів годин
Еталонна тимчасова мітка (sys.reftime, peer.reftime, pkt.reftime) - локальний час в форматі тимчасових міток, відповідне моменту останньої корекції показань годин. Якщо локальні годинник не були синхронізовані, змінна містить нуль.
Базова тимчасова мітка (peer.org, pkt.org) - локальний час в форматі тимчасових міток, відповідне моменту посилки останнього NTP-повідомлення. Якщо партнер недосяжний, змінна приймає нульове значення.
Тимчасова мітка отримання (peer.rec, pkt.rec) - локальний час в форматі тимчасових міток, яке соответствуюет моменту приходу останнього NTP-повідомлення, отриманого від партнера. Якщо партнер недосяжний, змінна приймає нульове значення.
Тимчасова мітка передачі (peer.xmt, pkt.xmt) - локальний час в форматі тимчасових міток, відповідне моменту відправки NTP-повідомлення.
Системні змінні
Наступні змінні використовуються операційною системою для синхронізації локальних годин.
Мінлива локальні годинник (sys.clock) містить показання локальних годин в форматі тимчасових міток. Локальний час виходить від апаратних годин конкретної ЕОМ і дискретно збільшується з конструктивно заданими приростами.
Мінлива Базові годинник (sys.peer) являє собою селектор, що ідентифікує використовуваний джерело синхронізації. Зазвичай це покажчик на структуру, яка містить змінні партнера. Значення нуль вказує, що в даний час джерело синхронізації відсутній.
змінні партнера
Нижче перераховані всі змінні партнера, які використовуються для управління і реалізації вимірювальних процедур.
Біт конфігурації (peer.config) - біт. індиціюється, що асоціація була сформована на основі конфігураційної інформації і не повинна бути розформована, коли партнер стає недоступний.
Тимчасова мітка актуалізації (peer.update) - локальний час в форматі тимчасової мітки, що відзначає момент, коли було отримано останнє NTP повідомлення. Мінлива використовується для обчислення дисперсії тимчасового зсуву.
Регістр досяжності (peer.reach) - зсувний регістр бітів ntp .window, використовуваних для визначення статусу досяжності партнера. Введення даних здійснюється з боку молодших біт (праворуч). Партнер вважається досяжним, якщо як мінімум один біт цього регістра дорівнює 1.
Таймер партнера (peer.timer) - цілочисельний лічильник. використовуваний для управління інтервалом між послідовно посилаються NTP-повідомленнями. Після установки значення лічильника його вміст зменшується на 1 (1 сек), поки не досягне нуля. При цьому викликається процедура передачі. Зауважимо, що робота цього таймера не повинна залежати від локальних годин.
пакетні змінні
Номер версії (pkt.version) - ціле число. индицируют номер версії відправника. NTP-повідомлення завжди посилаються з поточним значенням версії ntp .version і будуть сприйняті лише за умови збігу кодів версії (ntp .version). Винятки допускаються лише при зміні номера версії.
Змінні фільтра годин
Коли використовуються фільтри і алгоритми відбору, додатково залучаються наступні змінні стану.
Регістр фільтра (peer.filter) - зсувний регістр каскадів ntp. shift. де кожен каскад запам'ятовує значення виміряної затримки, зміщення і обчисленої дисперсії, відповідних одному спостереженню. Ці три параметри вводяться з боку старших розрядів і зсуваються в напрямку молодших розрядів (направо). При отриманні результатів нового спостереження старі результати губляться.
Лічильник коректних даних (peer.valid) - цілочисельний лічильник. вказує на коректні зразки, що залишаються в регістрі фільтра. Він використовується для визначення стану доступності та для управління збільшенням і зменшенням періоду розсилки повідомлень.
Зсув (peer.offset) - число з фіксованою комою зі знаком, индицируют значення зміщення годин партнера по відношенню до локальних годинах в секундах.
Затримка (peer.delay) - число з фіксованою комою зі знаком, индицируют повну циклічну затримку (RTT) годин партнера по відношенню до локальних годинах з урахуванням часу поширення повідомлення і відгуку в мережі в секундах. Зауважимо, що змінна може приймати як позитивне, так і негативне значення в залежності від точності годин і накопичилася помилки зсуву.
Дисперсія (peer. Dispersion) - число з фіксованою комою. индицируют максимальну помилку годин партнера по відношенню до локальних годинах з урахуванням мережевої затримки в секундах. Допускаються тільки значення більше нуля.
Нижче описані параметри для всіх реалізацій, що працюють в мережі Інтернет. Необхідно домовитися щодо значень цих параметрів для того, щоб виключити непотрібну надмірність і стабілізувати асоціації партнерів. Наведені параметри застосовні для всіх компаній.
Номер версії (ntp .version) - поточний номер версії NTP (3).
Порт NTP (ntp .port) - стандартний номер порту (123), присвоєний протоколу NTP.
Максимальний номер шару (ntp .maxstratum) - максимальний номер шару, який може бути використаний при кодуванні пакетної змінної. Цей параметр зазвичай інтерпретується як визначення нескінченності (недосяжність для протоколу маршрутизації в субсетей).
Максимальний вік годин (ntp .maxage) - максимальний інтервал в секундах, протягом якого еталонні годинник будуть розглядатися як коректні після останньої звірки.
Максимальний збій (ntp .maxskew) - максимальна помилка зміщення, пов'язана зі збоєм локальних годин за час ntp .maxage, в секундах. Ставлення ntp .maxskew до ntp .maxage інтерпретується як максимальний збій, викликаний всією сукупністю чинників.
Максимальна відстань (ntp .maxdistance) - максимально допустима відстань між партнерами при синхронізації з використанням алгоритму відбору.
Мінімальний період розсилки (ntp .minpoll) - мінімальний період розсилки, допустимий для будь-якого з партнерів в мережі Інтернет. Цей період виражається в секундах і являє собою ступінь 2.
Максимальний період розсилки (ntp .maxpoll) - максимальний період розсилки, допустимий для будь-якого з партнерів в мережі Інтернет. Цей період виражається в секундах і являє собою ступінь 2.
Мінімум обраних годин (ntp .minclock) - мінімальне число партнерів, необхідне для синхронізації (при використанні алгоритму відбору).
Максимум обраних годин> (ntp .maxclock) - максимальне число партнерів, необхідне для організації відбору (при використанні алгоритму селекції).
Мінімальна дисперсія (ntp .mindisperse) - мінімальне значення приросту дисперсії для кожного з шарів в секундах (при використанні алгоритму фільтрації).
Максимальна дисперсія (ntp .maxdisperse) - максимальна дисперсія в секундах з урахуванням втрачених даних (при використанні алгоритму фільтрації).
Розмір регістра доступності (ntp .window) - розмір регістра доступності (peer.reach) в бітах.
Розмір фільтра (ntp .shift) - розмір зсувного регістру фільтра годин (peer.filter) в каскадах.
Вага фільтра (ntp .filter) - вага. використовуваний при обчисленні дисперсії фільтра (застосовується при роботі з алгоритмом фільтрації).
Обраний вага (ntp .select) - вага. використовуваний при обчисленні обраної дисперсії (застосовується при роботі алгоритму селекції).
Режими роботи
За винятком широковещательного режиму, NTP - асоціація формується, коли два партнери обмінюються повідомленнями і один або обидва з них створює і підтримує протокольну машину, звану асоціацією. Асоціація може працювати в одному з 5 режимів, заданих змінною peer.mode. симетрично активний. симетрично пасивний. клієнт. сервер і широкомовний:
Симетрично активний (1). ЕОМ, що працює в цьому режимі, періодично посилає повідомлення незалежно від досяжності або шару свого партнера. При роботі в цьому режимі ЕОМ сповіщає про свій намір синхронізувати і бути синхронизованной партнером.
Симетрично пасивний (2). Цей тип асоціації спочатку створюється після прибуття повідомлення від партнера, що працює в симетрично активному режимі. Він зберігається, поки партнер досяжний і функціонує в шарі, нижче або дорівнює даної ЕОМ. В іншому випадку асоціація розпадається. Однак асоціація буде існувати до тих пір, поки, принаймні, повідомлення не буде послано в якості відгуку. При роботі в цьому режимі ЕОМ сповіщає про свій намір синхронізувати і бути синхронизованной партнером.
Клієнт (3). ЕОМ, що працює в цьому режимі, періодично посилає повідомлення незалежно від досяжності або шару свого партнера. При роботі в цьому режимі ЕОМ (зазвичай це мережева робоча станція) сповіщає про свій намір бути синхронизованной партнером.
Сервер (4). Цей тип асоціації спочатку створюється після прибуття запиту клієнта і існує тільки для відгуку на цей запит. Після відгуку асоціація ліквідовується. При роботі в цьому режимі ЕОМ (зазвичай робоча мережева станція) сповіщає про намір синхронізувати партнера.
Широкомовний (5). ЕОМ, що працює в цьому режимі, періодично посилає повідомлення незалежно від доступності або шару партнерів. При роботі в цьому режимі ЕОМ (зазвичай мережевий сервер часу, який працює в широкомовної середовищі) сповіщає про намір синхронізувати всіх партнерів.
У симетричних режимах відміну клієнта від сервера практично зникає. Симетрично пасивний режим призначений для використання тимчасовими серверами, які працюють поблизу базових вузлів (нижній шар) субсетей синхронізації і з порівняно великим числом партнерів. В цьому режимі ідентифікації партнера не потрібно заздалегідь, так як асоціація з її змінними стану створена, тільки коли отримано NTP -повідомлення. Більш того, запомненное стан може бути використано пізніше, коли партнер стане недосяжний або буде працювати на більш високому рівні і з цієї причини може стати непридатним для як джерело синхронізації.
Симетрично активний режим призначений для використання серверами часу, що працюють поблизу кінцевих вузлів (найвищий шар) синхронізації. Надійний тимчасової сервіс зазвичай може бути реалізований за допомогою двох партнерів на найближчому нижележащем шарі і одному партнері в тому ж шарі. З цієї причини потік повідомлень зазвичай невеликий, навіть коли зв'язок втрачена, і на кожен запит приходить відгук про помилку.
У нормальній ситуації один партнер працює в активному режимі (симетричний активний. Клієнт або широкомовна), як це налаштоване в стартовому файлі, в той час як інші працюють в пасивному режимі (симетричний пасивний або сервер), часто без попередньої конфігурації. Однак обидва партнери можуть бути налаштовані для роботи в симетричному режимі. Умова помилки виникає, коли обидва партнери працюють в одному і тому ж режимі, але не в симетричному активному. У таких випадках кожен партнер буде ігнорувати повідомлення, що надходять від іншого, і асоціація. якщо вона існувала, буде ліквідована через недосяжність партнера.
Широкомовний режим призначений для роботи в швидкісних локальних мережах з великим числом робочих станцій, де не потрібна висока точність. При типовому сценарії один або більше тимчасових серверів LAN періодично посилають широкомовні повідомлення робочих станцій, які потім визначають час на основі попередньо заданої затримки поширення порядку декількох мілісекунд.
Обробка подій
Істотні події з точки зору протоколу NTP відбуваються при закінченні часу таймерів партнера (peer. Timer), один з яких орієнтований спеціально на даного партнера в активній асоціації, а також при отриманні NTP-повідомлення від різних партнерів. Подія може відбутися як результат команди оператора або виявленої помилки, такий, як відмова первинного еталона.