YateUCN as Network Time Server for Radio Equipment

LTE networks require accurate, secure, and reliable time services. We will use YateUCN linux server as a network time server with purpose to deliver exact hardware-based Network Time Protocol (NTP) timestamps to eNodeB equipment.

To enable hardware stamping, it needs to be supported by:

  • network interface card (NIC)
  • kernel
  • chrony (client/server for the Network Time Protocol)

To verify if NIC and kernel supports it, apply the command: ethtool -T interface_name

The value “PTP Hardware Clock” (which in this case is “0”) will be used in the /etc/chrony.conf configuration file.

[root@yatebts_core ~]# ethtool -T eth-ran
Time stamping parameters for eth-ran: Capabilities: hardware-transmit (SOF_TIMESTAMPING_TX_HARDWARE) software-transmit (SOF_TIMESTAMPING_TX_SOFTWARE) hardware-receive (SOF_TIMESTAMPING_RX_HARDWARE) software-receive (SOF_TIMESTAMPING_RX_SOFTWARE) software-system-clock (SOF_TIMESTAMPING_SOFTWARE) hardware-raw-clock (SOF_TIMESTAMPING_RAW_HARDWARE) PTP Hardware Clock: 0 Hardware Transmit Timestamp Modes: off (HWTSTAMP_TX_OFF) on (HWTSTAMP_TX_ON) Hardware Receive Filter Modes: none (HWTSTAMP_FILTER_NONE) all (HWTSTAMP_FILTER_ALL) [root@yatebts_core ~]#
Flag Meaning
SOF_TIMESTAMPING_TX_SOFTWARETransmit timestamp generated in kernel driver by NIC clock
SOF_TIMESTAMPING_RX_SOFTWAREReceive timestamp generated in kernel driver by NIC clock
SOF_TIMESTAMPING_TX_HARDWARETransmit timestamp generated in hardware by NIC clock
SOF_TIMESTAMPING_RX_HARDWAREReceive timestamp generated in hardware by NIC clock

chrony supports hardware stamping starting from Version 3.0 , chrony3.4-2 is build for Mageia 7.

  • We backported it to mga5 and mga6 and you can find it in CORE or RAN repo of your equipment.

[root@CORE ~]# urpmi.addmedia --update YateMageia https://repo.yate.ro/mageia/updates/mga5/x86_64

[root@RAN ~]# urpmi.addmedia --update YateRAN https://repo.yatebts.com/licensed/mga6/x86_64

You can install it with:

urpmi.update Yate;urpmi chrony

Verify the installed version of chrony with the following command:

[root@yatebts_core ~]# rpm -qa chrony
chrony-3.4-2.mga5
[root@yatebts_core ~]#

eNodeB equipment settings (SatSite or LTE LabKit)

  • The /etc/chrony.conf configuration file should look like this:
[root@ybts-SatSite ~]# cat /etc/chrony.conf
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
#pool pool.ntp.org iburst
# YateUCN server which acts as NTP server
server 10.0.4.1

# Record the rate at which the system clock gains/losses time.
driftfile /var/lib/chrony/drift

# Allow the system clock to be stepped in the first three updates
# if its offset is larger than 1 second.
makestep 1.0 3

# Enable kernel synchronization of the real-time clock (RTC).
rtcsync

# Enable hardware timestamping on all interfaces that support it.
hwtimestamp eth-ran
refclock PHC /dev/ptp0

# Specify directory for log files.
logdir /var/log/chrony

# Select which information is logged.
log measurements statistics tracking
[root@ybts-SatSite ~]#
  • Comment the line "pool pool.ntp.org iburst" and insert the following:
    * Add line: "server IP_of_UCN_server"
[root@ybts-SatSite ~]# head  -n 5 /etc/chrony.conf
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
#pool pool.ntp.org iburst
# YateUCN servers which act as NTP servers
server 10.0.4.1
[root@ybts-SatSite ~]#
  • Check the NTP sync:
[root@ybts-SatSite ~]# chronyc sourcestats
210 Number of sources = 3
Name/IP Address NP NR Span Frequency Freq Skew Offset Std Dev
==============================================================================
PHC0 6 3 80 -2.714 0.011 -253ms 84ns
time.cloudflare.com 17 13 1165 +0.107 2.978 +11us 917us
time-a-g.nist.gov 19 11 21m +0.209 1.069 -1857us 413us
[root@ybts-SatSite ~]#

The optimal value for “Freq Skew” is below 2.

Also, please note that 15 minutes need to pass in order for syncronization to be achieved.

References

Our solutions