Accurate time in applications

The synchronisation of computer time is highly important in modern computer networks and many development standards. Time accuracy and time synchronization are critical in many applications, particularly time sensitive transactions, critical development and in many power stations. Just imagine buying an airline seat only to be told at the airport that the ticket was sold twice because it was purchased afterwards on a computer that had a slower clock!

Real time clock and its purpose

Modern computers do have internal clocks called RTC that provide time & date information. These battery backed up chips maintain time but personal computers are not designed to be perfect clocks. Their design has been optimized for mass production and low-cost rather than maintaining accurate time.

For many applications, this is can be quite adequate, although, quite often machines need time to be synchronised with other computers on a network and when computers are out of sync with each other problems can arise such as sharing network files or in some environments even fraud (example of duplicate airline ticket)

Windows 2000 comes to help

Microsoft Windows 2000 has a time synchronisation utility built into the operating system called Windows Time (w32time.exe) which can be configured to operate as a network TimeServer. Microsoft and others strongly recommend that you configure a TimeServer with a hardware source rather than from the internet where there is no authentication.

Windows 2000 NTP configuration

If you want to configure Windows NTP Time service to use the internal hardware clock, then first check that w32time is located in the system services list in the registry, to check:

Run registry application

Click Start, Run then type regedit then click ok. Locate and then click the following registry entry: HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesW32Time

It is highly recommended that you back up the registry as serious problems may occur if you modify the registry incorrectly, modifications to the registry are done at your own risk.

Navigating to network time settings

To begin configuration for an internal clock, click on the following subkey: HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesW32TimeParameters In the right pane, right-click ReliableTimeSource, then click modify. In Edit DWORD Value, type 1 in the Value Data box, then click OK Exit Registry Editor

Restart NTP Time Service

To restart the Windows NTP Time Service click Start, Run (or alternatively use the Command Prompt facility). Type: net stop w32time && net start w32time Then press enter.

To reset the local computers' time, type the following on all computers except for the TimeServer which must not be synchronised with itself: w32tm 's

To configure the Windows NTP Time service to use an external time source, click Start, Run and type regedit then click OK.

Parameters for W32 Time Service

Locate the following subkey: HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesW32TimeParameters In the right pane, right-click Type then click Modify, in edit Value type NTP in the Value data box then click OK.

Now in the right pane, right click ReliableTimeSource, then click Modify. In the Edit DWORD Value box, under Value Data, type 0, then click OK.

Right-click NtpServer in the right pane then click Modify. In Edit Value, type the DNS, each DNS must be unique. Now click Ok.

Correct windows time accuracy

For Windows 2000 NTP Service Pack 4 only, set the time correction settings to do this locate: HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesW32TimeParameters In the right pane, right-click MaxAllowedClockErrInSecs, then Modify in the Edit DWORD Value box, , type a time in seconds max number of seconds difference between the local clock and the time received from the NtpServer in order to be considered a valid new time. Click OK.

Poll intervals in windows 2000

To set the poll intervals locate: HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesW32TimeParameters In the right pane, right-click Period, then click Modify. In the Edit DWORD Value box, under Value Data, type 24 then OK Exit Registry Editor

Click Start, then Run then type the following and press Enter: Net stop w32time && net start w32time

To reset the local computers' time, type the following on all computers except for the TimeServer which must not be synchronised with itself:

Enabling NTP in Windows

Network Time Protocol (NTP) is an Internet protocol used for the transfer of accurate time, providing time information along so that a precise time can be obtained

To enable the Network Time Protocol; NtpServer, locate and click: HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesW32TimeTimeProvidersNtpServer In the right pane, right-click Enabled, then click Modify. In the Edit DWord Value box, type 1 under Value data, then click OK.

Now go back and click on HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesW32TimeParametersNtpServer In the right pane, right-click NtpServer, then Modify, in the Edit DWORD Value under Value Data type In the right pane, right-click NtpServer, then Modify, in the Edit DWORD Value under Value Data type the Domain Name System (DNS), each DNS must be unique and you must append 0x1 to the end of each DNS name otherwise changes will not take effect. Now click Ok.

Locate and click the following HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesW32TimeTimeProvidersNtpClientSpecialPollInterval In the right pane, right-click SpecialPollInterval, then click Modify. In the Edit DWORD Value box, under Value Data, type the number of seconds you want for each poll, ie 900 will poll every 15 minutes, then click OK.

Time configuration

To configure the time correction settings, locate: HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesW32Timeconfig In the right pane, right-click MaxPosPhaseCorrection, then Modify, in the Edit DWORD Value box, under Base, click Decimal, under Value Data, type a time in seconds such as 3600 (an hour) then click OK.

Polling the NtpServer

Now go back and click: HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesW32Timeconfig In the right pane, right-click MaxNegPhaseCorrection, then Modify. In the Edit DWORD box under base, click Decimal, under value data type the time in seconds you want to poll such as 3600 (polls in one hour)

Apply settings

Exit Registry Editor Now to restart windows 2000 ntp time service, click Start, Run (or alternatively use the command prompt facility) and type: net stop w32time && net start w32time

And on each computer, other than the TimeServer, type: W32tm/ -s That's it your NtpServer should be now up and running.