Setting the time zone, date and time requires root privileges; use
Setting the Time Zone
To see the current time zone, list the contents of
Edit the file to add your desired time zone. A list of valid time zones can be found at the following link.
Use the following command to apply the new time zone immediately.
Alternative: Use the Guided Wizard to Find and Apply a Time Zone
To set the time zone, run
dpkg-reconfigure tzdata as root:
Then navigate the menus to enable the time zone you want. The following example selects the US/Pacific time zone:
For more info see the Debian System Administrator’s Manual – Time.
Setting the Date and Time
The switch contains a battery backed hardware clock that maintains the time while the switch is powered off and in between reboots. When the switch is running, the Cumulus Linux operating system maintains its own software clock.
During boot up, the time from the hardware clock is copied into the operating system’s software clock. The software clock is then used for all timekeeping responsibilities. During system shutdown, the software clock is copied back to the battery backed hardware clock.
You can set the date and time on the software clock using the
date command. First, determine your current time zone:
If you need to reconfigure the current time zone, refer to the instructions above.
Then, to set the system clock according to the time zone configured:
man date(1) for more information.
You can write the current value of the system (software) clock to the hardware clock using the
man hwclock(8) for more information.
Setting Time Using NTP and NCLU
ntpd daemon running on the switch implements the NTP protocol. It synchronizes the system time with time servers listed in
ntpd daemon is started at boot by default. See
man ntpd(8) for
ntpd details. You can check this site for an explanation of the output.
/etc/ntp.conf contains some default time servers. You can specify the NTP server or servers you want to use with NCLU; include the
iburst option to increase the sync speed.
These commands add the NTP server to the list of servers in
To set the initial date and time via NTP before starting the
ntpd daemon, use
ntpd -q. This is the same as
ntpdate, which is to be retired and no longer available. See
man ntp.conf(5) for details on configuring
ntpd -qcan hang if the time servers are not reachable.
To verify that
ntpd is running on the system:
To check the NTP peer status:
To remove one or more NTP servers:
Specifying the NTP Source Interface
You can change the source interface that NTP uses if you want to use an interface other than eth0, which is the default.
These commands create the following configuration snippet in the
NTP Default Configuration
The default NTP configuration comprises the following servers, which are listed in the
- server 0.cumulusnetworks.pool.ntp.org iburst
- server 1.cumulusnetworks.pool.ntp.org iburst
- server 2.cumulusnetworks.pool.ntp.org iburst
- server 3.cumulusnetworks.pool.ntp.org iburst
The contents of the
/etc/ntpd.conf file are listed below.
Precision Time Protocol (PTP) Boundary Clock
With the growth of low latency and high performance applications, precision timing has become increasingly important. Precision Time Protocol (PTP) is used to synchronize clocks in a network and is capable of sub-microsecond accuracy. The clocks are organized in a master-slave hierarchy. The slaves are synchronized to their masters, which can be slaves to their own masters. The hierarchy is created and updated automatically by the best master clock (BMC) algorithm, which runs on every clock. The grandmaster clock is the top-level master and is typically synchronized by using a Global Positioning System (GPS) time source to provide a high-degree of accuracy.
A boundary clock has multiple ports; one or more master ports and one or more slave ports. The master ports provide time (the time can originate from other masters further up the hierarchy) and the slave ports receive time. The boundary clock absorbs sync messages in the slave port, uses that port to set its clock, then generates new sync messages from this clock out of all of its master ports.
Cumulus Linux includes the
ptp4l package for PTP, which uses the
phc2sys daemon to synchronize the PTP clock with the system clock.
- Cumulus Linux currently supports PTP on the Mellanox Spectrum ASIC only.
- If you do not perform a binary (full image) install of Cumulus Linux 3.6, you need to install the
ptp4lpackage with the
apt-get install ptp4lcommand.
- PTP is supported in boundary clock mode only (the switch provides timing to downstream servers; it is a slave to a higher-level clock and a master to downstream clocks).
- The switch uses hardware time stamping to capture timestamps from an Ethernet frame at the physical layer. This allows PTP to account for delays in message transfer and greatly improves the accuracy of time synchronization.
- Only IPv4/UDP PTP packets are supported.
- Only a single PTP domain per network is supported. A PTP domain is a network or a portion of a network within which all the clocks are synchronized.
In the following example, boundary clock 2 receives time from Master 1 (the grandmaster) on a PTP slave port, sets its clock and passes the time down from the PTP master port to boundary clock 1. Boundary clock 1 receives the time on a PTP slave port, sets its clock and passes the time down the hierarchy through the PTP master ports to the hosts that receive the time.
Configuring the PTP Boundary Clock
To configure a boundary clock:
Configure the interfaces on the switch that you want to use for PTP. Each interface must be configured as a layer 3 routed interface with an IP address.
PTP is supported on BGP unnumbered interfaces.
PTP is not supported on switched virtual interfaces (SVIs).
Configure PTP options on the switch:
noto configure the switch to be a boundary clock.
Set the priority, which selects the best master clock. You can set priority 1 or 2. For each priority, you can use a number between 0 and 255. The default priority is 255. For the boundary clock, use a number above 128. The lower priority is applied first.
time-stampingparameter. The switch automatically enables hardware time-stamping to capture timestamps from an Ethernet frame at the physical layer. If you are testing PTP in a virtual environment, hardware time-stamping is not available; however the
time-stampingparameter is still required.
Add the PTP master and slave interfaces. You do not specify which is a master interface and which is a slave interface; this is determined by the PTP packet received.
The following commands provide an example configuration:
ptp4lman page describes all the configuration parameters.
The configuration is saved in the
Enable the services to start at boot time:
In the following example, the boundary clock on the switch receives time from Master 1 (the grandmaster) on PTP slave port swp3s0, sets its clock and passes the time down through PTP master ports swp3s1, swp3s2, and swp3s3 to the hosts that receive the time.
The configuration for the above example is shown below. The example assumes that you have already configured the layer 3 routed interfaces (
swp3s3) you want to use for PTP.
Verifying PTP Boundary Clock Configuration
To view a summary of the PTP configuration on the switch, run the
net show configuration ptp command:
Viewing PTP Status Information
To view PTP status information, run the
net show ptp parent_data_set command:
To view the additional PTP status information, including the delta in nanoseconds from the master clock, run the
sudo pmc -u -b 0 'GET TIME_STATUS_NP' command:
Deleting PTP Boundary Clock Configuration
To delete PTP configuration, delete the PTP master and slave interfaces. The following example commands delete the PTP interfaces