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