Linux: Date, time, timezone, ntp, ptp

  • NTP 123 UDP port by default
  • в NTP есть возможность broadcasting/multicasting time информации для клиентов пассивно ожидающих обновления времени после первоначального round trip calibrating exchange
  • NTP – грубо millisecond accuracy (по факту в lan может быть меньше)
  • PTP (IEEE 1588) – грубо microsecond accuracy (по факту может быть меньше)

(дублируется в видео-аудио и PTP 1588) Dante аудио синхросигналы по времени (ptp 1588) передаются мультикастом, поэтому мультикаст должен проходить (возможны проблемы с настройками igmp, прошивками, ACL, у каких то вендоров есть необходимость отключения *stp и проч), при этом передается немного – всего 4 пакета в секунду. Есть коммутаторы, которые генерируют Clock сигнал, но это достаточно нишевая история (объемы продаж глобально = тысячи).

How does Dante clocking work?
Dante devices each contain a very high quality VCXO clock, and are synchronized with one another over the network using the IEEE 1588 Precision Time Protocol (PTP). One device is elected as the Leader Clock to which other devices are synchronized. By default this selection takes place automatically, with no need to manually assign a Leader Clock.

NTP Servers
Network Time Protocol, or NTP, is one of the oldest Internet protocols still in use today. An NTP server is directly connected to a highly accurate timekeeping source, like the GPS satellite network that orbits the Earth. The server receives time information from the GPS satellites, uses algorithms to process the information, and then broadcasts it to all devices on the network that are requesting time information. NTP servers like our TM1000A can synchronize clocks and other local network devices with nearly millisecond accuracy, which suits most business and industrial needs for time serving accuracy. However, if greater than millisecond synchronization accuracy is required, a PTP server might be the best bet.
PTP Servers
Precision Time Protocol, or PTP, was originally defined and standardized by the IEEE in 2002. As with NTP, PTP may also utilize the GPS satellite network as its highly accurate time source, and also uses algorithms to process the time information it receives. However, PTP time servers have additional processors and use both hardware and software to broadcast the time and network status information to its clients on the network. With the addition of network latency information and hardware timestamping, PTP devices can achieve microsecond accuracy or better. If you need the highest possible degree of accuracy in your network time server, a PTP device like our TM2000Awill likely work best for you.
  • https://www.calculator.net/ – удобный сайт для расчета времени между двумя датами в разном виде (дней/часов/минут/секунд).
    https://www.calculator.net/time-calculator.html?tcday1=&tchour1=&tcminute1=51&tcsecond1=42&Op=-&tcday2=&tchour2=&tcminute2=37&tcsecond2=55&tcday3=&tchour3=&tcminute3=&tcsecond3=&ctype=1&x=80&y=29
Public NTP

pool.ntp.org  # глобальный кластер ntp серверов, в общем случае при каждом запросе выдает новый адрес

time.windows.com  # ntp microsoft, по факту находится в домене akamai CDN за time.microsoft.akadns.net

ntp.ix.ru  # ntp MSK-IX

ntp.corbina.net  # ntp corbina

~# ntpdate pool.ntp.org
30 Jan 15:52:50 ntpdate[15930]: adjust time server 95.216.136.148 offset 0.000537 sec
~# ntpdate pool.ntp.org
30 Jan 15:53:00 ntpdate[15931]: adjust time server 51.15.20.83 offset 0.003906 sec
~# ntpdate pool.ntp.org
30 Jan 15:53:09 ntpdate[15952]: adjust time server 195.91.239.8 offset -0.001487 sec
~# ntpdate pool.ntp.org
30 Jan 15:53:17 ntpdate[15956]: adjust time server 78.36.18.184 offset -0.007344 sec

STRATUM

stratum 0 examples: atomic clock, gps, cdma/gsm, radio waves

Причем atomic clock бывают размером с мелкий чип (Miniature Atomic Clock). Price порядка 2k $.

https://www.sparkfun.com/products/14830
A low-cost GPS receiver can get you accurate timing at ±10,000ps. The Miniature Atomic Clock SA.35m is four orders of magnitude more accurate at ±8ps. And considering atomic clocks used to be the size of a small car, the MAC is incredibly small at 51x51mm (2" square).

Applications:
- GPS Anti-Jamming and Jamming detection
- Cellular Base Station
- Precision frequency reference
- Aquatic mapping

show

date – показывает дату и время. Вывод для удобства можно редактировать. Делал так для скрипта, который кладет логи в папку, чтобы можно было опрашивать просто по нужной дате и сортировать тупо-по имени без даты.

[root@host1 ~]# date
Tue Aug 2 12:31:11 MSK 2016
[root@host1 ~]# date "+%Y-%m-%d"
2016-08-02

Работа с датой:

date -u - UTC time (без timezone)
date +%s - Unix date/time
date +"%Y-%m-%d %T.%N" - дата с наносекундами/nanoseconds
date +"%T.%N" - время с наносекундами/nanoseconds (9 знаков после секунд)
date +"%T.%6N" - время с микросекундами/microseconds (6 знаков)
date +"%T.%3N" - время с миллисекундами/milliseconds (3 знака)
date --date "-3 day" - дата 3 дня от текущей
date --date="255 days ago" - дата 255 дней от текущей
date -d "24 Oct 2017" "+%s" - получаем дату в секундах с 1970 года (epoch date). Дату можно вставить в разных форматах - 24 Oct 2017, 2017-10-24, 20171024. Далее можно оперировать этой датой в скриптах.

Добавление/вычитание секунд ко времени в bash.

date '+%T' --date="16:16:16 MSK - 17 seconds"
16:15:59

timedatectl – в отличии от date, timedatectl показывает timezones. Можно посмотреть все таймзоны timedatectl list-timezones.

[user1@host1 ~]$ timedatectl
 Local time: Чт 2016-07-28 10:45:31 MSK
 Universal time: Чт 2016-07-28 07:45:31 UTC
 RTC time: Чт 2016-07-28 07:45:31
 Time zone: Europe/Moscow (MSK, +0300)
 NTP enabled: yes
NTP synchronized: yes
 RTC in local TZ: no
 DST active: n/a

[root@host1 ~]# timedatectl list-timezones | grep Moscow
Europe/Moscow
change

sudo date |date-time| – устанавливаем вручную дату и время.

[root@host1 ~]# sudo date 07131821
Wed Jul 13 18:21:00 MSK 2016
[root@host1 ~]# date
Wed Jul 13 18:21:01 MSK 2016

sudo date -s |STRING| – устанавливаем вручную дату/время в произвольном формате.

The --date=STRING is a mostly free format human readable date string such as "Sun, 29 Feb 2004 16:21:42 -0800" or "2004-02-29 16:21:42" or even "next Thursday". A date string may contain items indicating calendar date, time of day, time zone, day of week, relative time, relative date, and numbers. An empty string indicates the beginning of the day. The date string format is more complex than is easily documented here but is fully described in the info documentation.
[root@host1 ~]# date -s 20:02
Wed Aug 17 20:02:00 MSK 2016

timedatectl set-time 2015-08-12 – меняем текущую дату на August 12, 2015

[root@host1 ~]# timedatectl set-time 2015-08-12
[root@host1 ~]# date
Ср. авг. 12 00:00:01 MSK 2015

timedatectl set-time 11:00 – Меняем время на 11:00

[root@host1 ~]# timedatectl set-time 11:00
[root@host1 ~]# date
Ср. авг. 12 11:00:00 MSK 2015
UNIX TIME

date +”%T.%3N” -d @1559287471 Конвертация из unix time.

Timezone

timedatectl set-timezone Europe/Moscow – меняем таймзону на Europe/Moscow

NTP

sntp -S |server-ip/fqdn| – синхронизируем время с NTP сервером разово. NTP может работать плохо в условиях нагруженной сети или серверов.

# sntp -S pool.ntp.org
sntp 4.2.8p12@1.3728-o (1)
2021-02-14 14:39:56.228308 (-0300) -0.008129 +/- 0.006040 pool.ntp.org 37.228.129.2 s2 no-leap

ntpdate |server-ip/fqdn| – deprecated in favour of sntp. Четвертая версия NTP позволяет синхронизировать время с точностью до 10 мс (миллисекунд). Четвертая версия – версия по умолчанию при работе с ntpdate.

# apt show ntpdate
ntpdate is deprecated. Please use sntp instead for manual or scripted NTP queries/syncs.

# ntpdate pool.ntp.org
# date
Wed Jul 13 18:23:08 MSK 2016

# ntpdate ntp.corbina.net
 2 Aug 12:48:28 ntpdate[29563]: step time server 195.14.40.141 offset 1707901.165532 sec
# date
Tue Aug 2 12:48:30 MSK 2016

 -o version
Specify the NTP version for outgoing packets as the integer version, which can be 1, 2, 3 or 4. The default is 4. This allows ntpdate to be used with older NTP versions.

timedatectl set-ntp yes/no – включаем/отключаем постоянную синхронизацию с NTP.

[root@host1 ~]# timedatectl set-time 2017-01-13
Failed to set time: Automatic time synchronization is enabled
[root@host1 ~]# timedatectl set-ntp no
[root@host1 ~]# timedatectl set-time 2017-01-13
[root@host1 ~]# date
Fri Jan 13 00:00:02 MSK 2017

 

SYNCETHERNET (SyncE)

Хорошее краткое summary.

 

 

 

 

Leave a Reply